Wed, 17 Jun 2020 17:14:12 +0200
Merged with default branch.
--- a/docs/changelog Sun May 03 13:42:52 2020 +0200 +++ b/docs/changelog Wed Jun 17 17:14:12 2020 +0200 @@ -1,10 +1,25 @@ Change Log ---------- +Version 20.7: +- bug fixes +- pip Interface + -- added menu action for pip cache management +- Code Style Checker + -- changed the dialog to allow the selection of checker categories + -- added several security related checks (ported from bandit) + -- updated pycodestyle to version 2.6.0 +- Syntax Checker + -- updated pyflakes to version 2.2.0 +- Third Party packages: + -- updated asttoken to version 2.0.4 + Version 20.6: - bug fixes - Web Browser: -- added a configurable URL entry color to indicate sites with certificate issues + -- added code to ask for the title of a new bookmark folder + Version 20.5: - bug fixes - MicroPython
--- a/eric6.e4p Sun May 03 13:42:52 2020 +0200 +++ b/eric6.e4p Wed Jun 17 17:14:12 2020 +0200 @@ -263,6 +263,7 @@ <Source>eric6/MicroPython/EspBackupRestoreFirmwareDialog.py</Source> <Source>eric6/MicroPython/EspDevices.py</Source> <Source>eric6/MicroPython/EspFirmwareSelectionDialog.py</Source> + <Source>eric6/MicroPython/IgnoredDevicesDialog.py</Source> <Source>eric6/MicroPython/MicroPythonCommandsInterface.py</Source> <Source>eric6/MicroPython/MicroPythonDevices.py</Source> <Source>eric6/MicroPython/MicroPythonFileManager.py</Source> @@ -323,6 +324,39 @@ <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py</Source> <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/MiscellaneousChecker.py</Source> <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/NamingStyleChecker.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/__init__.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/assert.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/awsHardcodedPassword.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/blackListCalls.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/blackListImports.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/certificateValidation.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/djangoSqlInjection.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/djangoXssVulnerability.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/exec.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/flaskDebug.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalBindAllInterfaces.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalFilePermissions.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalHardcodedPassword.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalHardcodedTmp.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/injectionParamiko.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/injectionShell.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/injectionSql.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/injectionWildcard.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/insecureHashlibNew.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/insecureSslTls.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/jinja2Templates.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/makoTemplates.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/sshNoHostKeyVerification.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/tryExcept.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/weakCryptographicKey.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/yamlLoad.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityChecker.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityContext.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityDefaults.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityNodeVisitor.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityUtils.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/__init__.py</Source> + <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py</Source> <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/__init__.py</Source> <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/eradicate.py</Source> <Source>eric6/Plugins/CheckerPlugins/CodeStyleChecker/mccabe.py</Source> @@ -1207,6 +1241,7 @@ <Source>eric6/ThirdParty/asttokens/asttokens/line_numbers.py</Source> <Source>eric6/ThirdParty/asttokens/asttokens/mark_tokens.py</Source> <Source>eric6/ThirdParty/asttokens/asttokens/util.py</Source> + <Source>eric6/ThirdParty/asttokens/asttokens/version.py</Source> <Source>eric6/ThirdParty/enum/__init__.py</Source> <Source>eric6/Toolbox/SingleApplication.py</Source> <Source>eric6/Toolbox/Startup.py</Source> @@ -1625,6 +1660,7 @@ <Form>eric6/MicroPython/CircuitPythonFirmwareSelectionDialog.ui</Form> <Form>eric6/MicroPython/EspBackupRestoreFirmwareDialog.ui</Form> <Form>eric6/MicroPython/EspFirmwareSelectionDialog.ui</Form> + <Form>eric6/MicroPython/IgnoredDevicesDialog.ui</Form> <Form>eric6/MicroPython/MicroPythonFileManagerWidget.ui</Form> <Form>eric6/MicroPython/MicroPythonProgressInfoDialog.ui</Form> <Form>eric6/MicroPython/MicroPythonWidget.ui</Form> @@ -2083,9 +2119,6 @@ <Other>eric6/APIs/MicroPython/circuitpython.api</Other> <Other>eric6/APIs/MicroPython/microbit.api</Other> <Other>eric6/APIs/MicroPython/micropython.api</Other> - <Other>eric6/APIs/Python/zope-2.10.7.api</Other> - <Other>eric6/APIs/Python/zope-2.11.2.api</Other> - <Other>eric6/APIs/Python/zope-3.3.1.api</Other> <Other>eric6/APIs/Python3/PyQt4.bas</Other> <Other>eric6/APIs/Python3/PyQt5.bas</Other> <Other>eric6/APIs/Python3/PyQtChart.bas</Other> @@ -2093,6 +2126,9 @@ <Other>eric6/APIs/Python3/QScintilla2.bas</Other> <Other>eric6/APIs/Python3/eric6.api</Other> <Other>eric6/APIs/Python3/eric6.bas</Other> + <Other>eric6/APIs/Python/zope-2.10.7.api</Other> + <Other>eric6/APIs/Python/zope-2.11.2.api</Other> + <Other>eric6/APIs/Python/zope-3.3.1.api</Other> <Other>eric6/APIs/QSS/qss.api</Other> <Other>eric6/APIs/Ruby/Ruby-1.8.7.api</Other> <Other>eric6/APIs/Ruby/Ruby-1.8.7.bas</Other> @@ -2749,6 +2785,12 @@ <string>eric</string> </value> <key> + <string>EnabledCheckerCategories</string> + </key> + <value> + <string>C, D, E, M, N, W</string> + </value> + <key> <string>ExcludeFiles</string> </key> <value> @@ -2758,7 +2800,7 @@ <string>ExcludeMessages</string> </key> <value> - <string>A, C101, E265, E266, E305, E402, M201, M301, M302, M303, M304, M305, M306, M307, M308, M311, M312, M313, M314, M315, M321, M701, M702, M811, M834, N802, N803, N807, N808, N821, W293, W504, A</string> + <string>C101,E265,E266,E305,E402,M201,M301,M302,M303,M304,M305,M306,M307,M308,M311,M312,M313,M314,M315,M321,M701,M702,M811,M834,N802,N803,N807,N808,N821,W293,W504</string> </value> <key> <string>FixCodes</string>
--- a/eric6/APIs/Python3/eric6.api Sun May 03 13:42:52 2020 +0200 +++ b/eric6/APIs/Python3/eric6.api Wed Jun 17 17:14:12 2020 +0200 @@ -1375,6 +1375,7 @@ eric6.E5Gui.E5SqueezeLabels.E5SqueezeLabelPath?1(parent=None) eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.getList?4() eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.on_addButton_clicked?4() +eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.setAddVisible?4(visible) eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.setDefaultVisible?4(visible) eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.setList?4(stringList) eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.setListWhatsThis?4(txt) @@ -2274,10 +2275,13 @@ eric6.MicroPython.EspDevices.EspDevice.runScript?4(script) eric6.MicroPython.EspDevices.EspDevice.setButtons?4() eric6.MicroPython.EspDevices.EspDevice?1(microPythonWidget, parent=None) +eric6.MicroPython.EspFirmwareSelectionDialog.EspFirmwareSelectionDialog.FlashModes?7 eric6.MicroPython.EspFirmwareSelectionDialog.EspFirmwareSelectionDialog.getData?4() eric6.MicroPython.EspFirmwareSelectionDialog.EspFirmwareSelectionDialog.on_espComboBox_currentTextChanged?4(chip) eric6.MicroPython.EspFirmwareSelectionDialog.EspFirmwareSelectionDialog.on_firmwarePicker_textChanged?4(firmware) eric6.MicroPython.EspFirmwareSelectionDialog.EspFirmwareSelectionDialog?1(addon=False, parent=None) +eric6.MicroPython.IgnoredDevicesDialog.IgnoredDevicesDialog.getDevices?4() +eric6.MicroPython.IgnoredDevicesDialog.IgnoredDevicesDialog?1(deviceList, parent=None) eric6.MicroPython.MicroPythonCommandsInterface.MicroPythonCommandsInterface.cd?4(dirname) eric6.MicroPython.MicroPythonCommandsInterface.MicroPythonCommandsInterface.connectToDevice?4(port) eric6.MicroPython.MicroPythonCommandsInterface.MicroPythonCommandsInterface.dataReceived?7 @@ -2737,6 +2741,9 @@ eric6.PipInterface.Pip.Pip.DefaultIndexUrlPip?7 eric6.PipInterface.Pip.Pip.DefaultIndexUrlXml?7 eric6.PipInterface.Pip.Pip.DefaultPyPiUrl?7 +eric6.PipInterface.Pip.Pip.cacheList?4(venvName) +eric6.PipInterface.Pip.Pip.cachePurge?4(venvName) +eric6.PipInterface.Pip.Pip.cacheRemove?4(venvName) eric6.PipInterface.Pip.Pip.getIndexUrl?4() eric6.PipInterface.Pip.Pip.getIndexUrlXml?4() eric6.PipInterface.Pip.Pip.getInstalledPackages?4(envName, localPackages=True, notRequired=False, usersite=False) @@ -2752,6 +2759,7 @@ eric6.PipInterface.Pip.Pip.installRequirements?4(venvName) eric6.PipInterface.Pip.Pip.repairPip?4(venvName) eric6.PipInterface.Pip.Pip.runProcess?4(args, interpreter) +eric6.PipInterface.Pip.Pip.showCacheInfo?4(venvName) eric6.PipInterface.Pip.Pip.uninstallPackages?4(packages, venvName) eric6.PipInterface.Pip.Pip.uninstallRequirements?4(venvName) eric6.PipInterface.Pip.Pip.upgradePackages?4(packages, venvName, userSite=False) @@ -2934,11 +2942,16 @@ eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.ignoreCode?4(code, lineFlags) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.initBatchService?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.initService?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.securityOk?4(code, lineFlags) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.worker?4(inputQueue, outputQueue) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.argsRole?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.availableFutures?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.check?4(codestring='') eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.checkBatch?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.checkCategories?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.codeRole?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.cryptoBitSelectionsDsaRsa?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.cryptoBitSelectionsEc?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.filenameRole?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.fixableRole?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.hasResults?7 @@ -2958,6 +2971,7 @@ eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_loadDefaultButton_clicked?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_noFixIssuesSelectButton_clicked?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_resetDefaultButton_clicked?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_restartButton_clicked?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_resultList_itemActivated?4(item, column) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_resultList_itemSelectionChanged?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_showButton_clicked?4() @@ -2969,9 +2983,9 @@ eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.start?4(fn, save=False, repeat=None) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog?1(styleCheckService, parent=None) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCodeSelectionDialog.CodeStyleCodeSelectionDialog.getSelectedCodes?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCodeSelectionDialog.CodeStyleCodeSelectionDialog?1(codes, showFixCodes, parent=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCodeSelectionDialog.CodeStyleCodeSelectionDialog?1(codes, categories, showFixCodes, parent=None) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.CodeStyleFixer.finalize?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.CodeStyleFixer.fixIssue?4(line, pos, message) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.CodeStyleFixer.fixIssue?4(line, pos, code) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.CodeStyleFixer.mutualStartswith?4(b) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.CodeStyleFixer.saveFile?4(encoding) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.CodeStyleFixer?1(filename, sourceLines, fixCodes, noFixCodes, maxLineLength, blankLines, inPlace, eol, backup=False) @@ -3069,6 +3083,149 @@ eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.NamingStyleChecker.run?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.NamingStyleChecker.unpackArgs?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.NamingStyleChecker?1(tree, filename, options) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert.checkAssertUsed?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.AWS_ACCESS_KEY_ID_MAX_ENTROPY?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.AWS_ACCESS_KEY_ID_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.AWS_ACCESS_KEY_ID_SYMBOLS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.AWS_SECRET_ACCESS_KEY_MAX_ENTROPY?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.AWS_SECRET_ACCESS_KEY_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.AWS_SECRET_ACCESS_KEY_SYMBOLS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.checkHardcodedAwsKey?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.shannonEntropy?4(data, symbols) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls._blacklists?8 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls.checkBlacklist?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports._blacklists?8 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports.checkBlacklist?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation.checkNoCertificateValidation?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.checkDjangoExtraUsed?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.checkDjangoRawSqlUsed?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.keywords2dict?4(keywords) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.DeepAssignation.isAssigned?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.DeepAssignation.isAssignedIn?4(items) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.DeepAssignation?1(varName, ignoreNodes=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.PY2?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.checkDjangoXssVulnerability?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.checkPotentialRisk?4(reportError, node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.evaluateCall?4(call, parent, ignoreNodes=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.evaluateVar?4(xssVar, parent, until, ignoreNodes=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.transform2call?4(var) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec.checkExecUsed?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug.checkFlaskDebug?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces.checkBindAllInterfaces?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions.checkFilePermissions?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.RE_CANDIDATES?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.RE_WORDS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.checkHardcodedPasswordAsDefault?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.checkHardcodedPasswordAsFunctionArg?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.checkHardcodedPasswordAsString?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp.checkHardcodedTmpDirectory?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generateCheckersDict?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko.checkParamikoCalls?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell._evaluateShellCall?5(context) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.checkOtherFunctionWithShell?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.checkStartProcessWithNoShell?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.checkStartProcessWithPartialPath?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.checkStartProcessWithShell?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.checkSubprocessPopenWithShell?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.checkSubprocessPopenWithoutShell?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.fullPathMatchRe?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.hasShell?4(context) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.SIMPLE_SQL_RE?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql._checkString?5(data) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql._evaluateAst?5(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.checkHardcodedSqlExpressions?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard.checkLinuxCommandsWildcardInjection?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew.checkHashlibNew?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.checkInsecureSslDefaults?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.checkInsecureSslProtocolVersion?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.checkSslWithoutVersion?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates.checkJinja2Autoescape?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates.checkMakoTemplateUsage?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification.checkSshNoHostKeyVerification?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.checkTryExceptContinue?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.checkTryExceptPass?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey._classifyKeySize?5(reportError, config, keyType, keySize, node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey._weakCryptoKeySizeCryptography?5(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey._weakCryptoKeySizePycrypto?5(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.checkWeakCryptographicKey?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad.checkYamlLoad?4(reportError, context, config) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad.getChecks?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.SecurityChecker.Codes?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.SecurityChecker.getConfig?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.SecurityChecker.reportError?4(lineNumber, offset, code, severity, confidence, *args) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.SecurityChecker.run?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.SecurityChecker?1(source, filename, select, ignore, expected, repeat, args) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.bytesVal?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.callArgs?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.callArgsCount?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.callFunctionName?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.callFunctionNameQual?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.callKeywords?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.checkCallArgValue?4(argumentName, argumentValues=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.functionDefDefaultsQual?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.getCallArgAtPosition?4(positionNum) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.getCallArgValue?4(argumentName) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.getLinenoForCallArg?4(argumentName) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.getOffsetForCallArg?4(argumentName) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.isModuleBeingImported?4(module) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.isModuleImportedExact?4(module) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.isModuleImportedLike?4(module) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.node?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.statement?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.stringVal?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext.stringValAsEscapedBytes?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.SecurityContext?1(contextObject=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityDefaults.SecurityDefaults?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.SecurityNodeVisitor.generic_visit?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.SecurityNodeVisitor.visit?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.SecurityNodeVisitor.visit_Bytes?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.SecurityNodeVisitor.visit_Call?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.SecurityNodeVisitor.visit_ClassDef?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.SecurityNodeVisitor.visit_Constant?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.SecurityNodeVisitor.visit_FunctionDef?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.SecurityNodeVisitor.visit_Import?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.SecurityNodeVisitor.visit_ImportFrom?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.SecurityNodeVisitor.visit_Str?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.SecurityNodeVisitor?1(checker, secCheckers, filename) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils._get?5(node, bits, stop=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.concatString?4(node, stop=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.deepgetattr?4(obj, attr) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.escapedBytesRepresentation?4(b) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.getAttrQualName?4(node, aliases) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.getCallName?4(node, aliases) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.getCalledName?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.getModuleQualnameFromPath?4(path) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.getQualAttr?4(node, aliases) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.linerange?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.linerange_fix?4(node) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.namespacePathJoin?4(namespace, name) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.namespacePathSplit?4(path) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.translations._securityMessages?8 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.translations._securityMessagesSampleArgs?8 eric6.Plugins.CheckerPlugins.CodeStyleChecker.eradicate.MULTILINE_ASSIGNMENT_REGEX?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.eradicate.PARTIAL_DICTIONARY_REGEX?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.eradicate.comment_contains_code?4(line, aggressive=True) @@ -3109,6 +3266,7 @@ eric6.Plugins.CheckerPlugins.CodeStyleChecker.mccabe.PathNode.to_dot?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.mccabe.PathNode?1(name, look="circle") eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.ARITHMETIC_OP?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.ASSIGNMENT_EXPRESSION_OP?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BENCHMARK_KEYS?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BLANK_LINES_CONFIG?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.error?4(line_number, offset, text, check) @@ -3188,12 +3346,14 @@ eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.WHITESPACE_AFTER_COMMA_REGEX?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.WS_NEEDED_OPERATORS?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.WS_OPTIONAL_OPERATORS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._SYMBOLIC_OPS?8 eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._add_check?5(check, kind, codes, args) eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._break_around_binary_operators?5(tokens) eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._checks?8 eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._get_parameters?5(function) eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._is_binary_operator?5(token_type, text) eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._is_eol_token?5(token) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._is_one_liner?5(logical_line, indent_level, lines, line_number) eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._main?5() eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._parse_multi_options?5(options, split_token=', ') eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.ambiguous_identifier?4(logical_line, tokens) @@ -3249,7 +3409,10 @@ eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.whitespace_before_parameters?4(logical_line, tokens) eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations._messages?8 eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations._messages_sample_args?8 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.getTranslatedMessage?4(message) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.getMessageCodes?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.getTranslatedMessage?4(messageCode, messageArgs, example=False) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.messageCatalogs?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.messageSampleArgsCatalog?7 eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.VcsConflictMarkerRegExpList?7 eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.extractLineFlags?4(line, startComment=") eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.initBatchService?4() @@ -9345,7 +9508,7 @@ eric6.Utilities.parseEnvironmentString?4(s) eric6.Utilities.parseOptionString?4(s) eric6.Utilities.parseString?4(s, rx) -eric6.Utilities.prepareQtMacBundle?4(toolname, version, args) +eric6.Utilities.prepareQtMacBundle?4(toolname, args) eric6.Utilities.readEncodedFile?4(filename) eric6.Utilities.readEncodedFileWithEncoding?4(filename, encoding) eric6.Utilities.readEncodedFileWithHash?4(filename) @@ -10570,6 +10733,7 @@ eric6.WebBrowser.Network.NetworkManager.NetworkManager.clearSslExceptions?4() eric6.WebBrowser.Network.NetworkManager.NetworkManager.createRequest?4(op, request, data) eric6.WebBrowser.Network.NetworkManager.NetworkManager.installUrlInterceptor?4(interceptor) +eric6.WebBrowser.Network.NetworkManager.NetworkManager.isInsecureHost?4(host) eric6.WebBrowser.Network.NetworkManager.NetworkManager.languagesChanged?4() eric6.WebBrowser.Network.NetworkManager.NetworkManager.preferencesChanged?4() eric6.WebBrowser.Network.NetworkManager.NetworkManager.proxyAuthentication?4(requestUrl, auth, proxyHost) @@ -10969,9 +11133,8 @@ eric6.WebBrowser.Session.SessionManagerDialog.SessionManagerDialog.resizeEvent?4(evt) eric6.WebBrowser.Session.SessionManagerDialog.SessionManagerDialog.showEvent?4(evt) eric6.WebBrowser.Session.SessionManagerDialog.SessionManagerDialog?1(parent=None) -eric6.WebBrowser.SiteInfo.SiteInfoDialog.SiteInfoDialog.nokStyle?7 -eric6.WebBrowser.SiteInfo.SiteInfoDialog.SiteInfoDialog.okStyle?7 eric6.WebBrowser.SiteInfo.SiteInfoDialog.SiteInfoDialog.on_imagesTree_currentItemChanged?4(current, previous) +eric6.WebBrowser.SiteInfo.SiteInfoDialog.SiteInfoDialog.securityStyleFormat?7 eric6.WebBrowser.SiteInfo.SiteInfoDialog.SiteInfoDialog?1(browser, parent=None) eric6.WebBrowser.SiteInfo.SiteInfoWidget.SiteInfoWidget.accept?4() eric6.WebBrowser.SiteInfo.SiteInfoWidget.SiteInfoWidget.showAt?4(pos)
--- a/eric6/APIs/Python3/eric6.bas Sun May 03 13:42:52 2020 +0200 +++ b/eric6/APIs/Python3/eric6.bas Wed Jun 17 17:14:12 2020 +0200 @@ -503,6 +503,7 @@ IconsPreviewDialog QDialog Ui_IconsPreviewDialog IdlCompilerDefineNameDialog QDialog Ui_IdlCompilerDefineNameDialog IdlCompilerOptionsDialog QDialog Ui_IdlCompilerOptionsDialog +IgnoredDevicesDialog QDialog Ui_IgnoredDevicesDialog ImageMarkupDialog QDialog Ui_ImageMarkupDialog ImageSearchEngine QObject ImagesIcon StatusBarIcon @@ -513,6 +514,7 @@ Interface ClbrBaseClasses.Class VisibilityMixin InterfacePage ConfigurationPageBase Ui_InterfacePage InvalidISO8859Error Exception +InvalidModulePath Exception InvalidPlistException Exception IrcChannelEditDialog QDialog Ui_IrcChannelEditDialog IrcChannelWidget QWidget Ui_IrcChannelWidget
--- a/eric6/DebugClients/Python/DebugClientBase.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/DebugClients/Python/DebugClientBase.py Wed Jun 17 17:14:12 2020 +0200 @@ -1898,7 +1898,7 @@ if ConfigVarTypeStrings.index(valtype) in filterList: continue except ValueError: - if valtype == "sip.enumtype": + if valtype in ("sip.enumtype", "sip.wrappertype"): if ConfigVarTypeStrings.index('class') in filterList: continue elif (valtype == "sip.methoddescriptor" or
--- a/eric6/DebugClients/Python/DebugVariables.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/DebugClients/Python/DebugVariables.py Wed Jun 17 17:14:12 2020 +0200 @@ -704,8 +704,10 @@ typeStr = str(typeObject).split(' ', 1)[-1] typeStr = typeStr[1:-2] - if (typeStr.startswith(ConfigQtNames) and - typeStr.endswith(ConfigKnownQtTypes)): + if ( + typeStr.startswith(ConfigQtNames) and + typeStr.endswith(ConfigKnownQtTypes) + ): resolver = None else: if _TypeMap is None:
--- a/eric6/Documentation/Help/source.qhp Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Help/source.qhp Wed Jun 17 17:14:12 2020 +0200 @@ -232,6 +232,7 @@ <section title="eric6.MicroPython.EspBackupRestoreFirmwareDialog" ref="eric6.MicroPython.EspBackupRestoreFirmwareDialog.html" /> <section title="eric6.MicroPython.EspDevices" ref="eric6.MicroPython.EspDevices.html" /> <section title="eric6.MicroPython.EspFirmwareSelectionDialog" ref="eric6.MicroPython.EspFirmwareSelectionDialog.html" /> + <section title="eric6.MicroPython.IgnoredDevicesDialog" ref="eric6.MicroPython.IgnoredDevicesDialog.html" /> <section title="eric6.MicroPython.MicroPythonCommandsInterface" ref="eric6.MicroPython.MicroPythonCommandsInterface.html" /> <section title="eric6.MicroPython.MicroPythonDevices" ref="eric6.MicroPython.MicroPythonDevices.html" /> <section title="eric6.MicroPython.MicroPythonFileManager" ref="eric6.MicroPython.MicroPythonFileManager.html" /> @@ -289,6 +290,42 @@ </section> <section title="eric6.Plugins.CheckerPlugins" ref="index-eric6.Plugins.CheckerPlugins.html"> <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker" ref="index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.html"> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security" ref="index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.html"> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks" ref="index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.html"> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.__init__" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.__init__.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad.html" /> + </section> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityDefaults" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityDefaults.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html" /> + <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.translations" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.translations.html" /> + </section> <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.AnnotationsChecker" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.AnnotationsChecker.html" /> <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.AstUtilities" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.AstUtilities.html" /> <section title="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleAddBuiltinIgnoreDialog" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleAddBuiltinIgnoreDialog.html" /> @@ -2335,6 +2372,7 @@ <keyword name="Checker.report_invalid_syntax" id="Checker.report_invalid_syntax" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#Checker.report_invalid_syntax" /> <keyword name="Checker.run_check" id="Checker.run_check" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#Checker.run_check" /> <keyword name="CheckerPlugins (Package)" id="CheckerPlugins (Package)" ref="index-eric6.Plugins.CheckerPlugins.html" /> + <keyword name="Checks (Package)" id="Checks (Package)" ref="index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.html" /> <keyword name="ChromeImporter" id="ChromeImporter" ref="eric6.WebBrowser.Bookmarks.BookmarksImporters.ChromeImporter.html#ChromeImporter" /> <keyword name="ChromeImporter (Constructor)" id="ChromeImporter (Constructor)" ref="eric6.WebBrowser.Bookmarks.BookmarksImporters.ChromeImporter.html#ChromeImporter.__init__" /> <keyword name="ChromeImporter (Module)" id="ChromeImporter (Module)" ref="eric6.WebBrowser.Bookmarks.BookmarksImporters.ChromeImporter.html" /> @@ -2493,16 +2531,21 @@ <keyword name="CodeStyleCheckerDialog" id="CodeStyleCheckerDialog" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog" /> <keyword name="CodeStyleCheckerDialog (Constructor)" id="CodeStyleCheckerDialog (Constructor)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__init__" /> <keyword name="CodeStyleCheckerDialog (Module)" id="CodeStyleCheckerDialog (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html" /> + <keyword name="CodeStyleCheckerDialog.__assembleExcludeMessages" id="CodeStyleCheckerDialog.__assembleExcludeMessages" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__assembleExcludeMessages" /> <keyword name="CodeStyleCheckerDialog.__batchFinished" id="CodeStyleCheckerDialog.__batchFinished" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__batchFinished" /> + <keyword name="CodeStyleCheckerDialog.__cleanupData" id="CodeStyleCheckerDialog.__cleanupData" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__cleanupData" /> <keyword name="CodeStyleCheckerDialog.__clearErrors" id="CodeStyleCheckerDialog.__clearErrors" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__clearErrors" /> <keyword name="CodeStyleCheckerDialog.__createErrorItem" id="CodeStyleCheckerDialog.__createErrorItem" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__createErrorItem" /> + <keyword name="CodeStyleCheckerDialog.__createFileErrorItem" id="CodeStyleCheckerDialog.__createFileErrorItem" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__createFileErrorItem" /> <keyword name="CodeStyleCheckerDialog.__createResultItem" id="CodeStyleCheckerDialog.__createResultItem" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__createResultItem" /> <keyword name="CodeStyleCheckerDialog.__finish" id="CodeStyleCheckerDialog.__finish" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__finish" /> <keyword name="CodeStyleCheckerDialog.__getBuiltinsIgnoreList" id="CodeStyleCheckerDialog.__getBuiltinsIgnoreList" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__getBuiltinsIgnoreList" /> + <keyword name="CodeStyleCheckerDialog.__getCategories" id="CodeStyleCheckerDialog.__getCategories" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__getCategories" /> <keyword name="CodeStyleCheckerDialog.__getEol" id="CodeStyleCheckerDialog.__getEol" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__getEol" /> <keyword name="CodeStyleCheckerDialog.__getSelectedFixableItems" id="CodeStyleCheckerDialog.__getSelectedFixableItems" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__getSelectedFixableItems" /> <keyword name="CodeStyleCheckerDialog.__getSelectedFutureImports" id="CodeStyleCheckerDialog.__getSelectedFutureImports" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__getSelectedFutureImports" /> <keyword name="CodeStyleCheckerDialog.__initBuiltinsIgnoreList" id="CodeStyleCheckerDialog.__initBuiltinsIgnoreList" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__initBuiltinsIgnoreList" /> + <keyword name="CodeStyleCheckerDialog.__initCategoriesList" id="CodeStyleCheckerDialog.__initCategoriesList" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__initCategoriesList" /> <keyword name="CodeStyleCheckerDialog.__initFuturesList" id="CodeStyleCheckerDialog.__initFuturesList" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__initFuturesList" /> <keyword name="CodeStyleCheckerDialog.__itemFixable" id="CodeStyleCheckerDialog.__itemFixable" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__itemFixable" /> <keyword name="CodeStyleCheckerDialog.__modifyFixedResultItem" id="CodeStyleCheckerDialog.__modifyFixedResultItem" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__modifyFixedResultItem" /> @@ -2527,6 +2570,7 @@ <keyword name="CodeStyleCheckerDialog.on_loadDefaultButton_clicked" id="CodeStyleCheckerDialog.on_loadDefaultButton_clicked" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_loadDefaultButton_clicked" /> <keyword name="CodeStyleCheckerDialog.on_noFixIssuesSelectButton_clicked" id="CodeStyleCheckerDialog.on_noFixIssuesSelectButton_clicked" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_noFixIssuesSelectButton_clicked" /> <keyword name="CodeStyleCheckerDialog.on_resetDefaultButton_clicked" id="CodeStyleCheckerDialog.on_resetDefaultButton_clicked" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_resetDefaultButton_clicked" /> + <keyword name="CodeStyleCheckerDialog.on_restartButton_clicked" id="CodeStyleCheckerDialog.on_restartButton_clicked" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_restartButton_clicked" /> <keyword name="CodeStyleCheckerDialog.on_resultList_itemActivated" id="CodeStyleCheckerDialog.on_resultList_itemActivated" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_resultList_itemActivated" /> <keyword name="CodeStyleCheckerDialog.on_resultList_itemSelectionChanged" id="CodeStyleCheckerDialog.on_resultList_itemSelectionChanged" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_resultList_itemSelectionChanged" /> <keyword name="CodeStyleCheckerDialog.on_showButton_clicked" id="CodeStyleCheckerDialog.on_showButton_clicked" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_showButton_clicked" /> @@ -3508,6 +3552,10 @@ <keyword name="DebuggerPython3Page.on_refreshButton_clicked" id="DebuggerPython3Page.on_refreshButton_clicked" ref="eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html#DebuggerPython3Page.on_refreshButton_clicked" /> <keyword name="DebuggerPython3Page.on_venvDlgButton_clicked" id="DebuggerPython3Page.on_venvDlgButton_clicked" ref="eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html#DebuggerPython3Page.on_venvDlgButton_clicked" /> <keyword name="DebuggerPython3Page.save" id="DebuggerPython3Page.save" ref="eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html#DebuggerPython3Page.save" /> + <keyword name="DeepAssignation" id="DeepAssignation" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#DeepAssignation" /> + <keyword name="DeepAssignation (Constructor)" id="DeepAssignation (Constructor)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#DeepAssignation.__init__" /> + <keyword name="DeepAssignation.isAssigned" id="DeepAssignation.isAssigned" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#DeepAssignation.isAssigned" /> + <keyword name="DeepAssignation.isAssignedIn" id="DeepAssignation.isAssignedIn" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#DeepAssignation.isAssignedIn" /> <keyword name="DeepLEngine" id="DeepLEngine" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.DeepLEngine.html#DeepLEngine" /> <keyword name="DeepLEngine (Constructor)" id="DeepLEngine (Constructor)" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.DeepLEngine.html#DeepLEngine.__init__" /> <keyword name="DeepLEngine (Module)" id="DeepLEngine (Module)" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.DeepLEngine.html" /> @@ -4385,6 +4433,7 @@ <keyword name="E5StringListEditWidget (Module)" id="E5StringListEditWidget (Module)" ref="eric6.E5Gui.E5StringListEditWidget.html" /> <keyword name="E5StringListEditWidget.getList" id="E5StringListEditWidget.getList" ref="eric6.E5Gui.E5StringListEditWidget.html#E5StringListEditWidget.getList" /> <keyword name="E5StringListEditWidget.on_addButton_clicked" id="E5StringListEditWidget.on_addButton_clicked" ref="eric6.E5Gui.E5StringListEditWidget.html#E5StringListEditWidget.on_addButton_clicked" /> + <keyword name="E5StringListEditWidget.setAddVisible" id="E5StringListEditWidget.setAddVisible" ref="eric6.E5Gui.E5StringListEditWidget.html#E5StringListEditWidget.setAddVisible" /> <keyword name="E5StringListEditWidget.setDefaultVisible" id="E5StringListEditWidget.setDefaultVisible" ref="eric6.E5Gui.E5StringListEditWidget.html#E5StringListEditWidget.setDefaultVisible" /> <keyword name="E5StringListEditWidget.setList" id="E5StringListEditWidget.setList" ref="eric6.E5Gui.E5StringListEditWidget.html#E5StringListEditWidget.setList" /> <keyword name="E5StringListEditWidget.setListWhatsThis" id="E5StringListEditWidget.setListWhatsThis" ref="eric6.E5Gui.E5StringListEditWidget.html#E5StringListEditWidget.setListWhatsThis" /> @@ -8536,6 +8585,10 @@ <keyword name="IdlCompilerOptionsDialog.on_unDeleteButton_clicked" id="IdlCompilerOptionsDialog.on_unDeleteButton_clicked" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_unDeleteButton_clicked" /> <keyword name="IdlCompilerOptionsDialog.on_unEditButton_clicked" id="IdlCompilerOptionsDialog.on_unEditButton_clicked" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_unEditButton_clicked" /> <keyword name="IdlCompilerOptionsDialog.on_unList_itemSelectionChanged" id="IdlCompilerOptionsDialog.on_unList_itemSelectionChanged" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_unList_itemSelectionChanged" /> + <keyword name="IgnoredDevicesDialog" id="IgnoredDevicesDialog" ref="eric6.MicroPython.IgnoredDevicesDialog.html#IgnoredDevicesDialog" /> + <keyword name="IgnoredDevicesDialog (Constructor)" id="IgnoredDevicesDialog (Constructor)" ref="eric6.MicroPython.IgnoredDevicesDialog.html#IgnoredDevicesDialog.__init__" /> + <keyword name="IgnoredDevicesDialog (Module)" id="IgnoredDevicesDialog (Module)" ref="eric6.MicroPython.IgnoredDevicesDialog.html" /> + <keyword name="IgnoredDevicesDialog.getDevices" id="IgnoredDevicesDialog.getDevices" ref="eric6.MicroPython.IgnoredDevicesDialog.html#IgnoredDevicesDialog.getDevices" /> <keyword name="ImageMarkupDialog" id="ImageMarkupDialog" ref="eric6.QScintilla.MarkupProviders.ImageMarkupDialog.html#ImageMarkupDialog" /> <keyword name="ImageMarkupDialog (Constructor)" id="ImageMarkupDialog (Constructor)" ref="eric6.QScintilla.MarkupProviders.ImageMarkupDialog.html#ImageMarkupDialog.__init__" /> <keyword name="ImageMarkupDialog (Module)" id="ImageMarkupDialog (Module)" ref="eric6.QScintilla.MarkupProviders.ImageMarkupDialog.html" /> @@ -8623,6 +8676,7 @@ <keyword name="InterfacePage.on_resetLayoutButton_clicked" id="InterfacePage.on_resetLayoutButton_clicked" ref="eric6.Preferences.ConfigurationPages.InterfacePage.html#InterfacePage.on_resetLayoutButton_clicked" /> <keyword name="InterfacePage.save" id="InterfacePage.save" ref="eric6.Preferences.ConfigurationPages.InterfacePage.html#InterfacePage.save" /> <keyword name="InvalidISO8859Error" id="InvalidISO8859Error" ref="eric6.E5Network.E5RFC6266.html#InvalidISO8859Error" /> + <keyword name="InvalidModulePath" id="InvalidModulePath" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#InvalidModulePath" /> <keyword name="InvalidPlistException" id="InvalidPlistException" ref="eric6.Utilities.binplistlib.html#InvalidPlistException" /> <keyword name="IrcChannel" id="IrcChannel" ref="eric6.Network.IRC.IrcNetworkManager.html#IrcChannel" /> <keyword name="IrcChannel (Constructor)" id="IrcChannel (Constructor)" ref="eric6.Network.IRC.IrcNetworkManager.html#IrcChannel.__init__" /> @@ -9725,6 +9779,7 @@ <keyword name="MicroPythonWidget.__downloadFirmware" id="MicroPythonWidget.__downloadFirmware" ref="eric6.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__downloadFirmware" /> <keyword name="MicroPythonWidget.__getDeviceTime" id="MicroPythonWidget.__getDeviceTime" ref="eric6.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__getDeviceTime" /> <keyword name="MicroPythonWidget.__handlePreferencesChanged" id="MicroPythonWidget.__handlePreferencesChanged" ref="eric6.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__handlePreferencesChanged" /> + <keyword name="MicroPythonWidget.__manageIgnored" id="MicroPythonWidget.__manageIgnored" ref="eric6.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__manageIgnored" /> <keyword name="MicroPythonWidget.__mpyCrossAvailable" id="MicroPythonWidget.__mpyCrossAvailable" ref="eric6.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__mpyCrossAvailable" /> <keyword name="MicroPythonWidget.__paste" id="MicroPythonWidget.__paste" ref="eric6.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__paste" /> <keyword name="MicroPythonWidget.__populateDeviceTypeComboBox" id="MicroPythonWidget.__populateDeviceTypeComboBox" ref="eric6.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__populateDeviceTypeComboBox" /> @@ -10156,11 +10211,13 @@ <keyword name="NetworkManager.__load" id="NetworkManager.__load" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.__load" /> <keyword name="NetworkManager.__save" id="NetworkManager.__save" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.__save" /> <keyword name="NetworkManager.__showAuthenticationErrorPage" id="NetworkManager.__showAuthenticationErrorPage" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.__showAuthenticationErrorPage" /> + <keyword name="NetworkManager.__sslErrorHandlingSlot" id="NetworkManager.__sslErrorHandlingSlot" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.__sslErrorHandlingSlot" /> <keyword name="NetworkManager.authentication" id="NetworkManager.authentication" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.authentication" /> <keyword name="NetworkManager.certificateError" id="NetworkManager.certificateError" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.certificateError" /> <keyword name="NetworkManager.clearSslExceptions" id="NetworkManager.clearSslExceptions" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.clearSslExceptions" /> <keyword name="NetworkManager.createRequest" id="NetworkManager.createRequest" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.createRequest" /> <keyword name="NetworkManager.installUrlInterceptor" id="NetworkManager.installUrlInterceptor" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.installUrlInterceptor" /> + <keyword name="NetworkManager.isInsecureHost" id="NetworkManager.isInsecureHost" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.isInsecureHost" /> <keyword name="NetworkManager.languagesChanged" id="NetworkManager.languagesChanged" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.languagesChanged" /> <keyword name="NetworkManager.preferencesChanged" id="NetworkManager.preferencesChanged" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.preferencesChanged" /> <keyword name="NetworkManager.proxyAuthentication" id="NetworkManager.proxyAuthentication" ref="eric6.WebBrowser.Network.NetworkManager.html#NetworkManager.proxyAuthentication" /> @@ -10551,6 +10608,9 @@ <keyword name="Pip (Constructor)" id="Pip (Constructor)" ref="eric6.PipInterface.Pip.html#Pip.__init__" /> <keyword name="Pip (Module)" id="Pip (Module)" ref="eric6.PipInterface.Pip.html" /> <keyword name="Pip.__checkUpgradePyQt" id="Pip.__checkUpgradePyQt" ref="eric6.PipInterface.Pip.html#Pip.__checkUpgradePyQt" /> + <keyword name="Pip.cacheList" id="Pip.cacheList" ref="eric6.PipInterface.Pip.html#Pip.cacheList" /> + <keyword name="Pip.cachePurge" id="Pip.cachePurge" ref="eric6.PipInterface.Pip.html#Pip.cachePurge" /> + <keyword name="Pip.cacheRemove" id="Pip.cacheRemove" ref="eric6.PipInterface.Pip.html#Pip.cacheRemove" /> <keyword name="Pip.getIndexUrl" id="Pip.getIndexUrl" ref="eric6.PipInterface.Pip.html#Pip.getIndexUrl" /> <keyword name="Pip.getIndexUrlXml" id="Pip.getIndexUrlXml" ref="eric6.PipInterface.Pip.html#Pip.getIndexUrlXml" /> <keyword name="Pip.getInstalledPackages" id="Pip.getInstalledPackages" ref="eric6.PipInterface.Pip.html#Pip.getInstalledPackages" /> @@ -10566,6 +10626,7 @@ <keyword name="Pip.installRequirements" id="Pip.installRequirements" ref="eric6.PipInterface.Pip.html#Pip.installRequirements" /> <keyword name="Pip.repairPip" id="Pip.repairPip" ref="eric6.PipInterface.Pip.html#Pip.repairPip" /> <keyword name="Pip.runProcess" id="Pip.runProcess" ref="eric6.PipInterface.Pip.html#Pip.runProcess" /> + <keyword name="Pip.showCacheInfo" id="Pip.showCacheInfo" ref="eric6.PipInterface.Pip.html#Pip.showCacheInfo" /> <keyword name="Pip.uninstallPackages" id="Pip.uninstallPackages" ref="eric6.PipInterface.Pip.html#Pip.uninstallPackages" /> <keyword name="Pip.uninstallRequirements" id="Pip.uninstallRequirements" ref="eric6.PipInterface.Pip.html#Pip.uninstallRequirements" /> <keyword name="Pip.upgradePackages" id="Pip.upgradePackages" ref="eric6.PipInterface.Pip.html#Pip.upgradePackages" /> @@ -10641,12 +10702,16 @@ <keyword name="PipPackagesWidget.__pipConfigure" id="PipPackagesWidget.__pipConfigure" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__pipConfigure" /> <keyword name="PipPackagesWidget.__populateEnvironments" id="PipPackagesWidget.__populateEnvironments" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__populateEnvironments" /> <keyword name="PipPackagesWidget.__processSearchResult" id="PipPackagesWidget.__processSearchResult" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__processSearchResult" /> + <keyword name="PipPackagesWidget.__purgeCache" id="PipPackagesWidget.__purgeCache" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__purgeCache" /> <keyword name="PipPackagesWidget.__refreshPackagesList" id="PipPackagesWidget.__refreshPackagesList" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__refreshPackagesList" /> + <keyword name="PipPackagesWidget.__removeCachedFiles" id="PipPackagesWidget.__removeCachedFiles" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__removeCachedFiles" /> <keyword name="PipPackagesWidget.__repairPip" id="PipPackagesWidget.__repairPip" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__repairPip" /> <keyword name="PipPackagesWidget.__score" id="PipPackagesWidget.__score" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__score" /> <keyword name="PipPackagesWidget.__search" id="PipPackagesWidget.__search" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__search" /> <keyword name="PipPackagesWidget.__searchError" id="PipPackagesWidget.__searchError" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__searchError" /> <keyword name="PipPackagesWidget.__selectedUpdateableItems" id="PipPackagesWidget.__selectedUpdateableItems" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__selectedUpdateableItems" /> + <keyword name="PipPackagesWidget.__showCacheInfo" id="PipPackagesWidget.__showCacheInfo" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__showCacheInfo" /> + <keyword name="PipPackagesWidget.__showCacheList" id="PipPackagesWidget.__showCacheList" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__showCacheList" /> <keyword name="PipPackagesWidget.__showPackageDetails" id="PipPackagesWidget.__showPackageDetails" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__showPackageDetails" /> <keyword name="PipPackagesWidget.__showSearchedDetails" id="PipPackagesWidget.__showSearchedDetails" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__showSearchedDetails" /> <keyword name="PipPackagesWidget.__transformHits" id="PipPackagesWidget.__transformHits" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__transformHits" /> @@ -12603,6 +12668,57 @@ <keyword name="SearchWidget.searchStringFound" id="SearchWidget.searchStringFound" ref="eric6.UI.SearchWidget.html#SearchWidget.searchStringFound" /> <keyword name="SearchWidget.showFind" id="SearchWidget.showFind" ref="eric6.UI.SearchWidget.html#SearchWidget.showFind" /> <keyword name="SearchWidget.showFind" id="SearchWidget.showFind" ref="eric6.WebBrowser.SearchWidget.html#SearchWidget.showFind" /> + <keyword name="Security (Package)" id="Security (Package)" ref="index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.html" /> + <keyword name="SecurityChecker" id="SecurityChecker" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html#SecurityChecker" /> + <keyword name="SecurityChecker (Constructor)" id="SecurityChecker (Constructor)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html#SecurityChecker.__init__" /> + <keyword name="SecurityChecker (Module)" id="SecurityChecker (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html" /> + <keyword name="SecurityChecker.__generateTree" id="SecurityChecker.__generateTree" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html#SecurityChecker.__generateTree" /> + <keyword name="SecurityChecker.__ignoreCode" id="SecurityChecker.__ignoreCode" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html#SecurityChecker.__ignoreCode" /> + <keyword name="SecurityChecker.__reportInvalidSyntax" id="SecurityChecker.__reportInvalidSyntax" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html#SecurityChecker.__reportInvalidSyntax" /> + <keyword name="SecurityChecker.getConfig" id="SecurityChecker.getConfig" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html#SecurityChecker.getConfig" /> + <keyword name="SecurityChecker.reportError" id="SecurityChecker.reportError" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html#SecurityChecker.reportError" /> + <keyword name="SecurityChecker.run" id="SecurityChecker.run" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html#SecurityChecker.run" /> + <keyword name="SecurityContext" id="SecurityContext" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext" /> + <keyword name="SecurityContext (Constructor)" id="SecurityContext (Constructor)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.__init__" /> + <keyword name="SecurityContext (Module)" id="SecurityContext (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html" /> + <keyword name="SecurityContext.__getLiteralValue" id="SecurityContext.__getLiteralValue" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.__getLiteralValue" /> + <keyword name="SecurityContext.__repr__" id="SecurityContext.__repr__" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.__repr__" /> + <keyword name="SecurityContext.bytesVal" id="SecurityContext.bytesVal" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.bytesVal" /> + <keyword name="SecurityContext.callArgs" id="SecurityContext.callArgs" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.callArgs" /> + <keyword name="SecurityContext.callArgsCount" id="SecurityContext.callArgsCount" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.callArgsCount" /> + <keyword name="SecurityContext.callFunctionName" id="SecurityContext.callFunctionName" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.callFunctionName" /> + <keyword name="SecurityContext.callFunctionNameQual" id="SecurityContext.callFunctionNameQual" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.callFunctionNameQual" /> + <keyword name="SecurityContext.callKeywords" id="SecurityContext.callKeywords" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.callKeywords" /> + <keyword name="SecurityContext.checkCallArgValue" id="SecurityContext.checkCallArgValue" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.checkCallArgValue" /> + <keyword name="SecurityContext.functionDefDefaultsQual" id="SecurityContext.functionDefDefaultsQual" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.functionDefDefaultsQual" /> + <keyword name="SecurityContext.getCallArgAtPosition" id="SecurityContext.getCallArgAtPosition" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.getCallArgAtPosition" /> + <keyword name="SecurityContext.getCallArgValue" id="SecurityContext.getCallArgValue" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.getCallArgValue" /> + <keyword name="SecurityContext.getLinenoForCallArg" id="SecurityContext.getLinenoForCallArg" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.getLinenoForCallArg" /> + <keyword name="SecurityContext.getOffsetForCallArg" id="SecurityContext.getOffsetForCallArg" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.getOffsetForCallArg" /> + <keyword name="SecurityContext.isModuleBeingImported" id="SecurityContext.isModuleBeingImported" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.isModuleBeingImported" /> + <keyword name="SecurityContext.isModuleImportedExact" id="SecurityContext.isModuleImportedExact" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.isModuleImportedExact" /> + <keyword name="SecurityContext.isModuleImportedLike" id="SecurityContext.isModuleImportedLike" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.isModuleImportedLike" /> + <keyword name="SecurityContext.node" id="SecurityContext.node" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.node" /> + <keyword name="SecurityContext.statement" id="SecurityContext.statement" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.statement" /> + <keyword name="SecurityContext.stringVal" id="SecurityContext.stringVal" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.stringVal" /> + <keyword name="SecurityContext.stringValAsEscapedBytes" id="SecurityContext.stringValAsEscapedBytes" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html#SecurityContext.stringValAsEscapedBytes" /> + <keyword name="SecurityDefaults (Module)" id="SecurityDefaults (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityDefaults.html" /> + <keyword name="SecurityNodeVisitor" id="SecurityNodeVisitor" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor" /> + <keyword name="SecurityNodeVisitor (Constructor)" id="SecurityNodeVisitor (Constructor)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.__init__" /> + <keyword name="SecurityNodeVisitor (Module)" id="SecurityNodeVisitor (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html" /> + <keyword name="SecurityNodeVisitor.__postVisit" id="SecurityNodeVisitor.__postVisit" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.__postVisit" /> + <keyword name="SecurityNodeVisitor.__preVisit" id="SecurityNodeVisitor.__preVisit" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.__preVisit" /> + <keyword name="SecurityNodeVisitor.__runChecks" id="SecurityNodeVisitor.__runChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.__runChecks" /> + <keyword name="SecurityNodeVisitor.generic_visit" id="SecurityNodeVisitor.generic_visit" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.generic_visit" /> + <keyword name="SecurityNodeVisitor.visit" id="SecurityNodeVisitor.visit" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.visit" /> + <keyword name="SecurityNodeVisitor.visit_Bytes" id="SecurityNodeVisitor.visit_Bytes" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.visit_Bytes" /> + <keyword name="SecurityNodeVisitor.visit_Call" id="SecurityNodeVisitor.visit_Call" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.visit_Call" /> + <keyword name="SecurityNodeVisitor.visit_ClassDef" id="SecurityNodeVisitor.visit_ClassDef" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.visit_ClassDef" /> + <keyword name="SecurityNodeVisitor.visit_Constant" id="SecurityNodeVisitor.visit_Constant" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.visit_Constant" /> + <keyword name="SecurityNodeVisitor.visit_FunctionDef" id="SecurityNodeVisitor.visit_FunctionDef" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.visit_FunctionDef" /> + <keyword name="SecurityNodeVisitor.visit_Import" id="SecurityNodeVisitor.visit_Import" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.visit_Import" /> + <keyword name="SecurityNodeVisitor.visit_ImportFrom" id="SecurityNodeVisitor.visit_ImportFrom" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.visit_ImportFrom" /> + <keyword name="SecurityNodeVisitor.visit_Str" id="SecurityNodeVisitor.visit_Str" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html#SecurityNodeVisitor.visit_Str" /> <keyword name="SecurityPage" id="SecurityPage" ref="eric6.Preferences.ConfigurationPages.SecurityPage.html#SecurityPage" /> <keyword name="SecurityPage (Constructor)" id="SecurityPage (Constructor)" ref="eric6.Preferences.ConfigurationPages.SecurityPage.html#SecurityPage.__init__" /> <keyword name="SecurityPage (Module)" id="SecurityPage (Module)" ref="eric6.Preferences.ConfigurationPages.SecurityPage.html" /> @@ -12610,6 +12726,7 @@ <keyword name="SecurityPage.on_masterPasswordCheckBox_clicked" id="SecurityPage.on_masterPasswordCheckBox_clicked" ref="eric6.Preferences.ConfigurationPages.SecurityPage.html#SecurityPage.on_masterPasswordCheckBox_clicked" /> <keyword name="SecurityPage.save" id="SecurityPage.save" ref="eric6.Preferences.ConfigurationPages.SecurityPage.html#SecurityPage.save" /> <keyword name="SecurityPage.setMode" id="SecurityPage.setMode" ref="eric6.Preferences.ConfigurationPages.SecurityPage.html#SecurityPage.setMode" /> + <keyword name="SecurityUtils (Module)" id="SecurityUtils (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html" /> <keyword name="SendRefererWhitelistDialog" id="SendRefererWhitelistDialog" ref="eric6.WebBrowser.Network.SendRefererWhitelistDialog.html#SendRefererWhitelistDialog" /> <keyword name="SendRefererWhitelistDialog (Constructor)" id="SendRefererWhitelistDialog (Constructor)" ref="eric6.WebBrowser.Network.SendRefererWhitelistDialog.html#SendRefererWhitelistDialog.__init__" /> <keyword name="SendRefererWhitelistDialog (Module)" id="SendRefererWhitelistDialog (Module)" ref="eric6.WebBrowser.Network.SendRefererWhitelistDialog.html" /> @@ -15222,7 +15339,6 @@ <keyword name="UserInterface.__activateViewProfile" id="UserInterface.__activateViewProfile" ref="eric6.UI.UserInterface.html#UserInterface.__activateViewProfile" /> <keyword name="UserInterface.__activateViewmanager" id="UserInterface.__activateViewmanager" ref="eric6.UI.UserInterface.html#UserInterface.__activateViewmanager" /> <keyword name="UserInterface.__assistant" id="UserInterface.__assistant" ref="eric6.UI.UserInterface.html#UserInterface.__assistant" /> - <keyword name="UserInterface.__assistant4" id="UserInterface.__assistant4" ref="eric6.UI.UserInterface.html#UserInterface.__assistant4" /> <keyword name="UserInterface.__checkActions" id="UserInterface.__checkActions" ref="eric6.UI.UserInterface.html#UserInterface.__checkActions" /> <keyword name="UserInterface.__chmViewer" id="UserInterface.__chmViewer" ref="eric6.UI.UserInterface.html#UserInterface.__chmViewer" /> <keyword name="UserInterface.__clearPrivateData" id="UserInterface.__clearPrivateData" ref="eric6.UI.UserInterface.html#UserInterface.__clearPrivateData" /> @@ -15243,7 +15359,6 @@ <keyword name="UserInterface.__deinstallPlugin" id="UserInterface.__deinstallPlugin" ref="eric6.UI.UserInterface.html#UserInterface.__deinstallPlugin" /> <keyword name="UserInterface.__deleteCrashSession" id="UserInterface.__deleteCrashSession" ref="eric6.UI.UserInterface.html#UserInterface.__deleteCrashSession" /> <keyword name="UserInterface.__designer" id="UserInterface.__designer" ref="eric6.UI.UserInterface.html#UserInterface.__designer" /> - <keyword name="UserInterface.__designer4" id="UserInterface.__designer4" ref="eric6.UI.UserInterface.html#UserInterface.__designer4" /> <keyword name="UserInterface.__editPixmap" id="UserInterface.__editPixmap" ref="eric6.UI.UserInterface.html#UserInterface.__editPixmap" /> <keyword name="UserInterface.__editorOpened" id="UserInterface.__editorOpened" ref="eric6.UI.UserInterface.html#UserInterface.__editorOpened" /> <keyword name="UserInterface.__exportPreferences" id="UserInterface.__exportPreferences" ref="eric6.UI.UserInterface.html#UserInterface.__exportPreferences" /> @@ -15269,7 +15384,6 @@ <keyword name="UserInterface.__lastEditorClosed" id="UserInterface.__lastEditorClosed" ref="eric6.UI.UserInterface.html#UserInterface.__lastEditorClosed" /> <keyword name="UserInterface.__launchExternalWebBrowser" id="UserInterface.__launchExternalWebBrowser" ref="eric6.UI.UserInterface.html#UserInterface.__launchExternalWebBrowser" /> <keyword name="UserInterface.__linguist" id="UserInterface.__linguist" ref="eric6.UI.UserInterface.html#UserInterface.__linguist" /> - <keyword name="UserInterface.__linguist4" id="UserInterface.__linguist4" ref="eric6.UI.UserInterface.html#UserInterface.__linguist4" /> <keyword name="UserInterface.__loadSessionFromFile" id="UserInterface.__loadSessionFromFile" ref="eric6.UI.UserInterface.html#UserInterface.__loadSessionFromFile" /> <keyword name="UserInterface.__masterPasswordChanged" id="UserInterface.__masterPasswordChanged" ref="eric6.UI.UserInterface.html#UserInterface.__masterPasswordChanged" /> <keyword name="UserInterface.__newProject" id="UserInterface.__newProject" ref="eric6.UI.UserInterface.html#UserInterface.__newProject" /> @@ -16299,7 +16413,7 @@ <keyword name="WebBrowserTabWidget.__initTabContextMenu" id="WebBrowserTabWidget.__initTabContextMenu" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__initTabContextMenu" /> <keyword name="WebBrowserTabWidget.__lineEditReturnPressed" id="WebBrowserTabWidget.__lineEditReturnPressed" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__lineEditReturnPressed" /> <keyword name="WebBrowserTabWidget.__loadFinished" id="WebBrowserTabWidget.__loadFinished" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__loadFinished" /> - <keyword name="WebBrowserTabWidget.__loadStarted" id="WebBrowserTabWidget.__loadStarted" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__loadStarted" /> + <keyword name="WebBrowserTabWidget.__loadProgress" id="WebBrowserTabWidget.__loadProgress" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__loadProgress" /> <keyword name="WebBrowserTabWidget.__navigationMenuTriggered" id="WebBrowserTabWidget.__navigationMenuTriggered" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__navigationMenuTriggered" /> <keyword name="WebBrowserTabWidget.__newBrowser" id="WebBrowserTabWidget.__newBrowser" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__newBrowser" /> <keyword name="WebBrowserTabWidget.__pathSelected" id="WebBrowserTabWidget.__pathSelected" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__pathSelected" /> @@ -16900,6 +17014,7 @@ <keyword name="_ClbrBase.setEndLine" id="_ClbrBase.setEndLine" ref="eric6.Utilities.ClassBrowsers.ClbrBaseClasses.html#_ClbrBase.setEndLine" /> <keyword name="__check" id="__check" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#__check" /> <keyword name="__checkCodeStyle" id="__checkCodeStyle" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#__checkCodeStyle" /> + <keyword name="__checkSyntax" id="__checkSyntax" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#__checkSyntax" /> <keyword name="__getMasterPassword" id="__getMasterPassword" ref="eric6.Utilities.crypto.__init__.html#__getMasterPassword" /> <keyword name="__getPygmentsLexer" id="__getPygmentsLexer" ref="eric6.QScintilla.Lexers.__init__.html#__getPygmentsLexer" /> <keyword name="__initChannelModesDict" id="__initChannelModesDict" ref="eric6.Network.IRC.IrcUtilities.html#__initChannelModesDict" /> @@ -16923,6 +17038,11 @@ <keyword name="_add_check" id="_add_check" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_add_check" /> <keyword name="_break_around_binary_operators" id="_break_around_binary_operators" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_break_around_binary_operators" /> <keyword name="_buildChildrenLists" id="_buildChildrenLists" ref="eric6.Graphics.GraphicsUtilities.html#_buildChildrenLists" /> + <keyword name="_checkString" id="_checkString" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.html#_checkString" /> + <keyword name="_classifyKeySize" id="_classifyKeySize" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html#_classifyKeySize" /> + <keyword name="_evaluateAst" id="_evaluateAst" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.html#_evaluateAst" /> + <keyword name="_evaluateShellCall" id="_evaluateShellCall" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html#_evaluateShellCall" /> + <keyword name="_get" id="_get" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#_get" /> <keyword name="_get_parameters" id="_get_parameters" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_get_parameters" /> <keyword name="_getfullargs" id="_getfullargs" ref="eric6.DebugClients.Python.DebugUtilities.html#_getfullargs" /> <keyword name="_indent" id="_indent" ref="eric6.Utilities.ClassBrowsers.pyclbr.html#_indent" /> @@ -16930,9 +17050,12 @@ <keyword name="_initTypeMap" id="_initTypeMap" ref="eric6.DebugClients.Python.DebugVariables.html#_initTypeMap" /> <keyword name="_is_binary_operator" id="_is_binary_operator" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_is_binary_operator" /> <keyword name="_is_eol_token" id="_is_eol_token" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_is_eol_token" /> + <keyword name="_is_one_liner" id="_is_one_liner" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_is_one_liner" /> <keyword name="_main" id="_main" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_main" /> <keyword name="_parse_multi_options" id="_parse_multi_options" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_parse_multi_options" /> <keyword name="_percentReplacementFunc" id="_percentReplacementFunc" ref="eric6.Utilities.__init__.html#_percentReplacementFunc" /> + <keyword name="_weakCryptoKeySizeCryptography" id="_weakCryptoKeySizeCryptography" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html#_weakCryptoKeySizeCryptography" /> + <keyword name="_weakCryptoKeySizePycrypto" id="_weakCryptoKeySizePycrypto" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html#_weakCryptoKeySizePycrypto" /> <keyword name="absolutePath" id="absolutePath" ref="eric6.Utilities.__init__.html#absolutePath" /> <keyword name="absoluteUniversalPath" id="absoluteUniversalPath" ref="eric6.Utilities.__init__.html#absoluteUniversalPath" /> <keyword name="addActions" id="addActions" ref="eric6.E5Gui.E5Action.html#addActions" /> @@ -16942,15 +17065,57 @@ <keyword name="amendConfig" id="amendConfig" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnUtilities.html#amendConfig" /> <keyword name="analyze" id="analyze" ref="eric6.DataViews.CodeMetrics.html#analyze" /> <keyword name="append_PKCS7_padding" id="append_PKCS7_padding" ref="eric6.Utilities.crypto.py3AES.html#append_PKCS7_padding" /> + <keyword name="assert (Module)" id="assert (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert.html" /> + <keyword name="awsHardcodedPassword (Module)" id="awsHardcodedPassword (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.html" /> <keyword name="bare_except" id="bare_except" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#bare_except" /> <keyword name="batchCheck" id="batchCheck" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#batchCheck" /> <keyword name="binplistlib (Module)" id="binplistlib (Module)" ref="eric6.Utilities.binplistlib.html" /> + <keyword name="blackListCalls (Module)" id="blackListCalls (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls.html" /> + <keyword name="blackListImports (Module)" id="blackListImports (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports.html" /> <keyword name="blank_lines" id="blank_lines" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#blank_lines" /> <keyword name="break_after_binary_operator" id="break_after_binary_operator" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#break_after_binary_operator" /> <keyword name="break_before_binary_operator" id="break_before_binary_operator" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#break_before_binary_operator" /> + <keyword name="certificateValidation (Module)" id="certificateValidation (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation.html" /> <keyword name="changeRememberedMaster" id="changeRememberedMaster" ref="eric6.Utilities.crypto.__init__.html#changeRememberedMaster" /> <keyword name="check" id="check" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#check" /> + <keyword name="checkAssertUsed" id="checkAssertUsed" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert.html#checkAssertUsed" /> + <keyword name="checkBindAllInterfaces" id="checkBindAllInterfaces" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces.html#checkBindAllInterfaces" /> + <keyword name="checkBlacklist" id="checkBlacklist" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls.html#checkBlacklist" /> + <keyword name="checkBlacklist" id="checkBlacklist" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports.html#checkBlacklist" /> + <keyword name="checkDjangoExtraUsed" id="checkDjangoExtraUsed" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.html#checkDjangoExtraUsed" /> + <keyword name="checkDjangoRawSqlUsed" id="checkDjangoRawSqlUsed" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.html#checkDjangoRawSqlUsed" /> + <keyword name="checkDjangoXssVulnerability" id="checkDjangoXssVulnerability" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#checkDjangoXssVulnerability" /> + <keyword name="checkExecUsed" id="checkExecUsed" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec.html#checkExecUsed" /> + <keyword name="checkFilePermissions" id="checkFilePermissions" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions.html#checkFilePermissions" /> + <keyword name="checkFlaskDebug" id="checkFlaskDebug" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug.html#checkFlaskDebug" /> + <keyword name="checkHardcodedAwsKey" id="checkHardcodedAwsKey" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.html#checkHardcodedAwsKey" /> + <keyword name="checkHardcodedPasswordAsDefault" id="checkHardcodedPasswordAsDefault" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.html#checkHardcodedPasswordAsDefault" /> + <keyword name="checkHardcodedPasswordAsFunctionArg" id="checkHardcodedPasswordAsFunctionArg" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.html#checkHardcodedPasswordAsFunctionArg" /> + <keyword name="checkHardcodedPasswordAsString" id="checkHardcodedPasswordAsString" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.html#checkHardcodedPasswordAsString" /> + <keyword name="checkHardcodedSqlExpressions" id="checkHardcodedSqlExpressions" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.html#checkHardcodedSqlExpressions" /> + <keyword name="checkHardcodedTmpDirectory" id="checkHardcodedTmpDirectory" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp.html#checkHardcodedTmpDirectory" /> + <keyword name="checkHashlibNew" id="checkHashlibNew" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew.html#checkHashlibNew" /> + <keyword name="checkInsecureSslDefaults" id="checkInsecureSslDefaults" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.html#checkInsecureSslDefaults" /> + <keyword name="checkInsecureSslProtocolVersion" id="checkInsecureSslProtocolVersion" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.html#checkInsecureSslProtocolVersion" /> + <keyword name="checkJinja2Autoescape" id="checkJinja2Autoescape" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates.html#checkJinja2Autoescape" /> + <keyword name="checkLinuxCommandsWildcardInjection" id="checkLinuxCommandsWildcardInjection" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard.html#checkLinuxCommandsWildcardInjection" /> + <keyword name="checkMakoTemplateUsage" id="checkMakoTemplateUsage" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates.html#checkMakoTemplateUsage" /> + <keyword name="checkNoCertificateValidation" id="checkNoCertificateValidation" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation.html#checkNoCertificateValidation" /> + <keyword name="checkOtherFunctionWithShell" id="checkOtherFunctionWithShell" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html#checkOtherFunctionWithShell" /> + <keyword name="checkParamikoCalls" id="checkParamikoCalls" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko.html#checkParamikoCalls" /> + <keyword name="checkPotentialRisk" id="checkPotentialRisk" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#checkPotentialRisk" /> <keyword name="checkPyside" id="checkPyside" ref="eric6.Utilities.__init__.html#checkPyside" /> + <keyword name="checkSshNoHostKeyVerification" id="checkSshNoHostKeyVerification" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification.html#checkSshNoHostKeyVerification" /> + <keyword name="checkSslWithoutVersion" id="checkSslWithoutVersion" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.html#checkSslWithoutVersion" /> + <keyword name="checkStartProcessWithNoShell" id="checkStartProcessWithNoShell" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html#checkStartProcessWithNoShell" /> + <keyword name="checkStartProcessWithPartialPath" id="checkStartProcessWithPartialPath" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html#checkStartProcessWithPartialPath" /> + <keyword name="checkStartProcessWithShell" id="checkStartProcessWithShell" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html#checkStartProcessWithShell" /> + <keyword name="checkSubprocessPopenWithShell" id="checkSubprocessPopenWithShell" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html#checkSubprocessPopenWithShell" /> + <keyword name="checkSubprocessPopenWithoutShell" id="checkSubprocessPopenWithoutShell" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html#checkSubprocessPopenWithoutShell" /> + <keyword name="checkTryExceptContinue" id="checkTryExceptContinue" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.html#checkTryExceptContinue" /> + <keyword name="checkTryExceptPass" id="checkTryExceptPass" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.html#checkTryExceptPass" /> + <keyword name="checkWeakCryptographicKey" id="checkWeakCryptographicKey" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html#checkWeakCryptographicKey" /> + <keyword name="checkYamlLoad" id="checkYamlLoad" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad.html#checkYamlLoad" /> <keyword name="className" id="className" ref="eric6.Project.UicLoadUi.html#className" /> <keyword name="cleanUp" id="cleanUp" ref="install-debugclients.html#cleanUp" /> <keyword name="cleanUp" id="cleanUp" ref="install.html#cleanUp" /> @@ -16981,6 +17146,7 @@ <keyword name="completeFormData" id="completeFormData" ref="eric6.WebBrowser.Tools.Scripts.html#completeFormData" /> <keyword name="composeCallPath" id="composeCallPath" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.MiscellaneousChecker.html#composeCallPath" /> <keyword name="compound_statements" id="compound_statements" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#compound_statements" /> + <keyword name="concatString" id="concatString" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#concatString" /> <keyword name="condaVersion" id="condaVersion" ref="eric6.CondaInterface.__init__.html#condaVersion" /> <keyword name="condaVersionStr" id="condaVersionStr" ref="eric6.CondaInterface.__init__.html#condaVersionStr" /> <keyword name="confirmOverwrite" id="confirmOverwrite" ref="eric6.E5Gui.E5FileSaveConfirmDialog.html#confirmOverwrite" /> @@ -17119,6 +17285,7 @@ <keyword name="decodeString" id="decodeString" ref="eric6.Utilities.__init__.html#decodeString" /> <keyword name="decoratedName" id="decoratedName" ref="eric6.MicroPython.MicroPythonFileSystemUtilities.html#decoratedName" /> <keyword name="decryptData" id="decryptData" ref="eric6.Utilities.crypto.py3AES.html#decryptData" /> + <keyword name="deepgetattr" id="deepgetattr" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#deepgetattr" /> <keyword name="desktopName" id="desktopName" ref="eric6.Globals.__init__.html#desktopName" /> <keyword name="detect_encoding" id="detect_encoding" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.eradicate.html#detect_encoding" /> <keyword name="determinePythonVersion" id="determinePythonVersion" ref="eric6.Utilities.__init__.html#determinePythonVersion" /> @@ -17127,6 +17294,8 @@ <keyword name="displayString" id="displayString" ref="eric6.Plugins.PluginVcsMercurial.html#displayString" /> <keyword name="displayString" id="displayString" ref="eric6.Plugins.PluginVcsPySvn.html#displayString" /> <keyword name="displayString" id="displayString" ref="eric6.Plugins.PluginVcsSubversion.html#displayString" /> + <keyword name="djangoSqlInjection (Module)" id="djangoSqlInjection (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.html" /> + <keyword name="djangoXssVulnerability (Module)" id="djangoXssVulnerability (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html" /> <keyword name="doDependancyChecks" id="doDependancyChecks" ref="install.html#doDependancyChecks" /> <keyword name="drawPolygon" id="drawPolygon" ref="eric6.Snapshot.SnapshotFreehandGrabber.html#drawPolygon" /> <keyword name="drawRect" id="drawRect" ref="eric6.Snapshot.SnapshotRegionGrabber.html#drawRect" /> @@ -17165,6 +17334,9 @@ <keyword name="eric6dbgstub (Module)" id="eric6dbgstub (Module)" ref="eric6.DebugClients.Python.eric6dbgstub.html" /> <keyword name="escape_entities" id="escape_entities" ref="eric6.Utilities.__init__.html#escape_entities" /> <keyword name="escape_uentities" id="escape_uentities" ref="eric6.Utilities.__init__.html#escape_uentities" /> + <keyword name="escapedBytesRepresentation" id="escapedBytesRepresentation" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#escapedBytesRepresentation" /> + <keyword name="evaluateCall" id="evaluateCall" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#evaluateCall" /> + <keyword name="evaluateVar" id="evaluateVar" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#evaluateVar" /> <keyword name="excepthook" id="excepthook" ref="eric6.eric6.html#excepthook" /> <keyword name="exeDisplayData" id="exeDisplayData" ref="eric6.Plugins.PluginEricapi.html#exeDisplayData" /> <keyword name="exeDisplayData" id="exeDisplayData" ref="eric6.Plugins.PluginVcsGit.html#exeDisplayData" /> @@ -17172,6 +17344,7 @@ <keyword name="exeDisplayData" id="exeDisplayData" ref="eric6.Plugins.PluginVcsPySvn.html#exeDisplayData" /> <keyword name="exeDisplayData" id="exeDisplayData" ref="eric6.Plugins.PluginVcsSubversion.html#exeDisplayData" /> <keyword name="exeDisplayDataList" id="exeDisplayDataList" ref="eric6.Plugins.PluginEricdoc.html#exeDisplayDataList" /> + <keyword name="exec (Module)" id="exec (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec.html" /> <keyword name="exit" id="exit" ref="install-debugclients.html#exit" /> <keyword name="exit" id="exit" ref="install.html#exit" /> <keyword name="exit" id="exit" ref="uninstall-debugclients.html#exit" /> @@ -17199,11 +17372,17 @@ <keyword name="find_module" id="find_module" ref="eric6.Utilities.ModuleParser.html#find_module" /> <keyword name="fix_file" id="fix_file" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.eradicate.html#fix_file" /> <keyword name="flashDataPathForOS" id="flashDataPathForOS" ref="eric6.WebBrowser.FlashCookieManager.FlashCookieUtilities.html#flashDataPathForOS" /> + <keyword name="flaskDebug (Module)" id="flaskDebug (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug.html" /> <keyword name="formatTime" id="formatTime" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#formatTime" /> <keyword name="format_witnesses" id="format_witnesses" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#format_witnesses" /> <keyword name="formatargvalues" id="formatargvalues" ref="eric6.DebugClients.Python.DebugUtilities.html#formatargvalues" /> <keyword name="fromNativeSeparators" id="fromNativeSeparators" ref="eric6.Utilities.__init__.html#fromNativeSeparators" /> <keyword name="fstat" id="fstat" ref="eric6.MicroPython.MicroPythonFileSystemUtilities.html#fstat" /> + <keyword name="generalBindAllInterfaces (Module)" id="generalBindAllInterfaces (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces.html" /> + <keyword name="generalFilePermissions (Module)" id="generalFilePermissions (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions.html" /> + <keyword name="generalHardcodedPassword (Module)" id="generalHardcodedPassword (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.html" /> + <keyword name="generalHardcodedTmp (Module)" id="generalHardcodedTmp (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp.html" /> + <keyword name="generateCheckersDict" id="generateCheckersDict" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.__init__.html#generateCheckersDict" /> <keyword name="generateDistroInfo" id="generateDistroInfo" ref="eric6.Utilities.__init__.html#generateDistroInfo" /> <keyword name="generatePluginsVersionInfo" id="generatePluginsVersionInfo" ref="eric6.Utilities.__init__.html#generatePluginsVersionInfo" /> <keyword name="generatePyQtToolPath" id="generatePyQtToolPath" ref="eric6.Utilities.__init__.html#generatePyQtToolPath" /> @@ -17213,8 +17392,36 @@ <keyword name="getAllImages" id="getAllImages" ref="eric6.WebBrowser.Tools.Scripts.html#getAllImages" /> <keyword name="getAllMetaAttributes" id="getAllMetaAttributes" ref="eric6.WebBrowser.Tools.Scripts.html#getAllMetaAttributes" /> <keyword name="getAnnotationComplexity" id="getAnnotationComplexity" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.AnnotationsChecker.html#getAnnotationComplexity" /> + <keyword name="getAttrQualName" id="getAttrQualName" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#getAttrQualName" /> <keyword name="getBasicHelper" id="getBasicHelper" ref="eric6.VCS.__init__.html#getBasicHelper" /> + <keyword name="getCallName" id="getCallName" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#getCallName" /> + <keyword name="getCalledName" id="getCalledName" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#getCalledName" /> <keyword name="getChannelModesDict" id="getChannelModesDict" ref="eric6.Network.IRC.IrcUtilities.html#getChannelModesDict" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html#getChecks" /> + <keyword name="getChecks" id="getChecks" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad.html#getChecks" /> <keyword name="getCombinedIcon" id="getCombinedIcon" ref="eric6.UI.PixmapCache.html#getCombinedIcon" /> <keyword name="getCompleter" id="getCompleter" ref="eric6.QScintilla.TypingCompleters.__init__.html#getCompleter" /> <keyword name="getConda" id="getConda" ref="eric6.Preferences.__init__.html#getConda" /> @@ -17288,7 +17495,9 @@ <keyword name="getLexer" id="getLexer" ref="eric6.QScintilla.Lexers.__init__.html#getLexer" /> <keyword name="getLongDescription" id="getLongDescription" ref="setup.html#getLongDescription" /> <keyword name="getMarkupProvider" id="getMarkupProvider" ref="eric6.QScintilla.MarkupProviders.__init__.html#getMarkupProvider" /> + <keyword name="getMessageCodes" id="getMessageCodes" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.html#getMessageCodes" /> <keyword name="getMicroPython" id="getMicroPython" ref="eric6.Preferences.__init__.html#getMicroPython" /> + <keyword name="getModuleQualnameFromPath" id="getModuleQualnameFromPath" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#getModuleQualnameFromPath" /> <keyword name="getMultiProject" id="getMultiProject" ref="eric6.Preferences.__init__.html#getMultiProject" /> <keyword name="getOpenFileFiltersList" id="getOpenFileFiltersList" ref="eric6.QScintilla.Lexers.__init__.html#getOpenFileFiltersList" /> <keyword name="getOpenFileName" id="getOpenFileName" ref="eric6.E5Gui.E5FileDialog.html#getOpenFileName" /> @@ -17320,6 +17529,7 @@ <keyword name="getQtBinariesPath" id="getQtBinariesPath" ref="eric6.Globals.__init__.html#getQtBinariesPath" /> <keyword name="getQtMacBundle" id="getQtMacBundle" ref="eric6.Utilities.__init__.html#getQtMacBundle" /> <keyword name="getQtTranslationsDir" id="getQtTranslationsDir" ref="eric6.Preferences.__init__.html#getQtTranslationsDir" /> + <keyword name="getQualAttr" id="getQualAttr" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#getQualAttr" /> <keyword name="getRealName" id="getRealName" ref="eric6.Utilities.__init__.html#getRealName" /> <keyword name="getRegistryData" id="getRegistryData" ref="eric6.Debugger.DebuggerInterfaceNone.html#getRegistryData" /> <keyword name="getRegistryData" id="getRegistryData" ref="eric6.Debugger.DebuggerInterfacePython.html#getRegistryData" /> @@ -17381,6 +17591,7 @@ <keyword name="handleArgs" id="handleArgs" ref="eric6.Toolbox.Startup.html#handleArgs" /> <keyword name="handleSingleApplication" id="handleSingleApplication" ref="eric6.eric6.html#handleSingleApplication" /> <keyword name="hasEnvironmentEntry" id="hasEnvironmentEntry" ref="eric6.Utilities.__init__.html#hasEnvironmentEntry" /> + <keyword name="hasShell" id="hasShell" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html#hasShell" /> <keyword name="hasTypeAnnotations" id="hasTypeAnnotations" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.AnnotationsChecker.html#hasTypeAnnotations" /> <keyword name="hashPassword" id="hashPassword" ref="eric6.Utilities.crypto.py3PBKDF2.html#hashPassword" /> <keyword name="hashPasswordTuple" id="hashPasswordTuple" ref="eric6.Utilities.crypto.py3PBKDF2.html#hashPasswordTuple" /> @@ -17419,6 +17630,12 @@ <keyword name="initService" id="initService" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.yamlCheckSyntax.html#initService" /> <keyword name="initService" id="initService" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#initService" /> <keyword name="initializeResourceSearchPath" id="initializeResourceSearchPath" ref="eric6.Toolbox.Startup.html#initializeResourceSearchPath" /> + <keyword name="injectionParamiko (Module)" id="injectionParamiko (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko.html" /> + <keyword name="injectionShell (Module)" id="injectionShell (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html" /> + <keyword name="injectionSql (Module)" id="injectionSql (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.html" /> + <keyword name="injectionWildcard (Module)" id="injectionWildcard (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard.html" /> + <keyword name="insecureHashlibNew (Module)" id="insecureHashlibNew (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew.html" /> + <keyword name="insecureSslTls (Module)" id="insecureSslTls (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.html" /> <keyword name="install (Module)" id="install (Module)" ref="install.html" /> <keyword name="install-debugclients (Module)" id="install-debugclients (Module)" ref="install-debugclients.html" /> <keyword name="install-i18n (Module)" id="install-i18n (Module)" ref="install-i18n.html" /> @@ -17461,6 +17678,7 @@ <keyword name="is_stream_binary_plist" id="is_stream_binary_plist" ref="eric6.Utilities.binplistlib.html#is_stream_binary_plist" /> <keyword name="is_string_literal" id="is_string_literal" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#is_string_literal" /> <keyword name="isinpath" id="isinpath" ref="eric6.Utilities.__init__.html#isinpath" /> + <keyword name="jinja2Templates (Module)" id="jinja2Templates (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates.html" /> <keyword name="joinext" id="joinext" ref="eric6.Utilities.__init__.html#joinext" /> <keyword name="jsCheckSyntax (Module)" id="jsCheckSyntax (Module)" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.html" /> <keyword name="jsSyntaxBatchCheck" id="jsSyntaxBatchCheck" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.html#jsSyntaxBatchCheck" /> @@ -17469,7 +17687,10 @@ <keyword name="jsonCheckSyntax (Module)" id="jsonCheckSyntax (Module)" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.jsonCheckSyntax.html" /> <keyword name="jsonSyntaxBatchCheck" id="jsonSyntaxBatchCheck" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.jsonCheckSyntax.html#jsonSyntaxBatchCheck" /> <keyword name="jsonSyntaxCheck" id="jsonSyntaxCheck" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.jsonCheckSyntax.html#jsonSyntaxCheck" /> + <keyword name="keywords2dict" id="keywords2dict" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.html#keywords2dict" /> <keyword name="largefiles (Module)" id="largefiles (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.LargefilesExtension.largefiles.html" /> + <keyword name="linerange" id="linerange" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#linerange" /> + <keyword name="linerange_fix" id="linerange_fix" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#linerange_fix" /> <keyword name="linesep" id="linesep" ref="eric6.Utilities.__init__.html#linesep" /> <keyword name="listdirStat" id="listdirStat" ref="eric6.MicroPython.MicroPythonFileSystemUtilities.html#listdirStat" /> <keyword name="loadTranslatorForLocale" id="loadTranslatorForLocale" ref="eric6.Toolbox.Startup.html#loadTranslatorForLocale" /> @@ -17512,6 +17733,7 @@ <keyword name="main" id="main" ref="uninstall-debugclients.html#main" /> <keyword name="main" id="main" ref="uninstall.html#main" /> <keyword name="makeAppInfo" id="makeAppInfo" ref="eric6.Globals.AppInfo.html#makeAppInfo" /> + <keyword name="makoTemplates (Module)" id="makoTemplates (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates.html" /> <keyword name="maximum_doc_length" id="maximum_doc_length" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#maximum_doc_length" /> <keyword name="maximum_line_length" id="maximum_line_length" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#maximum_line_length" /> <keyword name="mccabe (Module)" id="mccabe (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.mccabe.html" /> @@ -17526,6 +17748,8 @@ <keyword name="mtime2string" id="mtime2string" ref="eric6.MicroPython.MicroPythonFileSystemUtilities.html#mtime2string" /> <keyword name="multiline_case" id="multiline_case" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.eradicate.html#multiline_case" /> <keyword name="mute_string" id="mute_string" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#mute_string" /> + <keyword name="namespacePathJoin" id="namespacePathJoin" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#namespacePathJoin" /> + <keyword name="namespacePathSplit" id="namespacePathSplit" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#namespacePathSplit" /> <keyword name="normabsjoinpath" id="normabsjoinpath" ref="eric6.Utilities.__init__.html#normabsjoinpath" /> <keyword name="normabspath" id="normabspath" ref="eric6.Utilities.__init__.html#normabspath" /> <keyword name="normalizeCode" id="normalizeCode" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html#normalizeCode" /> @@ -17653,6 +17877,7 @@ <keyword name="sbsdiff" id="sbsdiff" ref="eric6.UI.CompareDialog.html#sbsdiff" /> <keyword name="schemeFromProxyType" id="schemeFromProxyType" ref="eric6.E5Network.E5NetworkProxyFactory.html#schemeFromProxyType" /> <keyword name="scrollToAnchor" id="scrollToAnchor" ref="eric6.WebBrowser.Tools.Scripts.html#scrollToAnchor" /> + <keyword name="securityOk" id="securityOk" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#securityOk" /> <keyword name="sendPostData" id="sendPostData" ref="eric6.WebBrowser.Tools.Scripts.html#sendPostData" /> <keyword name="sessionType" id="sessionType" ref="eric6.Globals.__init__.html#sessionType" /> <keyword name="setActions" id="setActions" ref="eric6.Preferences.Shortcuts.html#setActions" /> @@ -17712,6 +17937,7 @@ <keyword name="setupFormObserver" id="setupFormObserver" ref="eric6.WebBrowser.Tools.Scripts.html#setupFormObserver" /> <keyword name="setupWebChannel" id="setupWebChannel" ref="eric6.WebBrowser.Tools.Scripts.html#setupWebChannel" /> <keyword name="setupWindowObject" id="setupWindowObject" ref="eric6.WebBrowser.Tools.Scripts.html#setupWindowObject" /> + <keyword name="shannonEntropy" id="shannonEntropy" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.html#shannonEntropy" /> <keyword name="shelve (Module)" id="shelve (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html" /> <keyword name="shouldResetLayout" id="shouldResetLayout" ref="eric6.Preferences.__init__.html#shouldResetLayout" /> <keyword name="shutilCopy" id="shutilCopy" ref="install-debugclients.html#shutilCopy" /> @@ -17721,6 +17947,7 @@ <keyword name="sort" id="sort" ref="eric6.Graphics.GraphicsUtilities.html#sort" /> <keyword name="speedString" id="speedString" ref="eric6.WebBrowser.Download.DownloadUtilities.html#speedString" /> <keyword name="splitPath" id="splitPath" ref="eric6.Utilities.__init__.html#splitPath" /> + <keyword name="sshNoHostKeyVerification (Module)" id="sshNoHostKeyVerification (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification.html" /> <keyword name="startDebugger" id="startDebugger" ref="eric6.DebugClients.Python.eric6dbgstub.html#startDebugger" /> <keyword name="startswithPath" id="startswithPath" ref="eric6.Utilities.__init__.html#startswithPath" /> <keyword name="stdin_get_value" id="stdin_get_value" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#stdin_get_value" /> @@ -17751,8 +17978,11 @@ <keyword name="toSecondLevelDomain" id="toSecondLevelDomain" ref="eric6.WebBrowser.AdBlock.AdBlockRule.html#toSecondLevelDomain" /> <keyword name="trailing_blank_lines" id="trailing_blank_lines" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#trailing_blank_lines" /> <keyword name="trailing_whitespace" id="trailing_whitespace" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#trailing_whitespace" /> + <keyword name="transform2call" id="transform2call" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#transform2call" /> <keyword name="translate" id="translate" ref="eric6.Globals.__init__.html#translate" /> + <keyword name="translations (Module)" id="translations (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.translations.html" /> <keyword name="translations (Module)" id="translations (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.html" /> + <keyword name="tryExcept (Module)" id="tryExcept (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.html" /> <keyword name="uiStartUp" id="uiStartUp" ref="eric6.eric6.html#uiStartUp" /> <keyword name="uic (Module)" id="uic (Module)" ref="eric6.Utilities.uic.html" /> <keyword name="unescape_uentities" id="unescape_uentities" ref="eric6.Utilities.__init__.html#unescape_uentities" /> @@ -17788,6 +18018,7 @@ <keyword name="version" id="version" ref="eric6.eric6_doc.html#version" /> <keyword name="versionToTuple" id="versionToTuple" ref="eric6.Globals.__init__.html#versionToTuple" /> <keyword name="warning" id="warning" ref="eric6.E5Gui.E5MessageBox.html#warning" /> + <keyword name="weakCryptographicKey (Module)" id="weakCryptographicKey (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html" /> <keyword name="webBrowserSupport (Module)" id="webBrowserSupport (Module)" ref="eric6.Tools.webBrowserSupport.html" /> <keyword name="whitespace_around_comma" id="whitespace_around_comma" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#whitespace_around_comma" /> <keyword name="whitespace_around_keywords" id="whitespace_around_keywords" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#whitespace_around_keywords" /> @@ -17820,6 +18051,7 @@ <keyword name="writePlist" id="writePlist" ref="eric6.Utilities.binplistlib.html#writePlist" /> <keyword name="writePlistToBytes" id="writePlistToBytes" ref="eric6.Utilities.binplistlib.html#writePlistToBytes" /> <keyword name="yamlCheckSyntax (Module)" id="yamlCheckSyntax (Module)" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.yamlCheckSyntax.html" /> + <keyword name="yamlLoad (Module)" id="yamlLoad (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad.html" /> <keyword name="yamlSyntaxBatchCheck" id="yamlSyntaxBatchCheck" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.yamlCheckSyntax.html#yamlSyntaxBatchCheck" /> <keyword name="yamlSyntaxCheck" id="yamlSyntaxCheck" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.yamlCheckSyntax.html#yamlSyntaxCheck" /> <keyword name="yesNo" id="yesNo" ref="eric6.E5Gui.E5MessageBox.html#yesNo" /> @@ -18011,6 +18243,7 @@ <file>eric6.MicroPython.EspBackupRestoreFirmwareDialog.html</file> <file>eric6.MicroPython.EspDevices.html</file> <file>eric6.MicroPython.EspFirmwareSelectionDialog.html</file> + <file>eric6.MicroPython.IgnoredDevicesDialog.html</file> <file>eric6.MicroPython.MicroPythonCommandsInterface.html</file> <file>eric6.MicroPython.MicroPythonDevices.html</file> <file>eric6.MicroPython.MicroPythonFileManager.html</file> @@ -18064,6 +18297,38 @@ <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html</file> <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.MiscellaneousChecker.html</file> <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.__init__.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityDefaults.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html</file> + <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.translations.html</file> <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.eradicate.html</file> <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.mccabe.html</file> <file>eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html</file> @@ -18895,6 +19160,8 @@ <file>index-eric6.PipInterface.html</file> <file>index-eric6.PluginManager.html</file> <file>index-eric6.Plugins.AboutPlugin.html</file> + <file>index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.html</file> + <file>index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.html</file> <file>index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.html</file> <file>index-eric6.Plugins.CheckerPlugins.SyntaxChecker.html</file> <file>index-eric6.Plugins.CheckerPlugins.Tabnanny.html</file>
--- a/eric6/Documentation/Source/eric6.E5Gui.E5StringListEditWidget.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.E5Gui.E5StringListEditWidget.html Wed Jun 17 17:14:12 2020 +0200 @@ -89,6 +89,10 @@ <td>Private slot to add an entry to the list.</td> </tr> <tr> +<td><a href="#E5StringListEditWidget.setAddVisible">setAddVisible</a></td> +<td>Public method to show or hide the add button.</td> +</tr> +<tr> <td><a href="#E5StringListEditWidget.setDefaultVisible">setDefaultVisible</a></td> <td>Public method to show or hide the default button.</td> </tr> @@ -141,6 +145,20 @@ <p> Private slot to add an entry to the list. </p> +<a NAME="E5StringListEditWidget.setAddVisible" ID="E5StringListEditWidget.setAddVisible"></a> +<h4>E5StringListEditWidget.setAddVisible</h4> +<b>setAddVisible</b>(<i>visible</i>) + +<p> + Public method to show or hide the add button. +</p> +<dl> + +<dt><i>visible</i> (bool)</dt> +<dd> +flag indicating the visibility of the add button +</dd> +</dl> <a NAME="E5StringListEditWidget.setDefaultVisible" ID="E5StringListEditWidget.setDefaultVisible"></a> <h4>E5StringListEditWidget.setDefaultVisible</h4> <b>setDefaultVisible</b>(<i>visible</i>)
--- a/eric6/Documentation/Source/eric6.MicroPython.EspFirmwareSelectionDialog.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.MicroPython.EspFirmwareSelectionDialog.html Wed Jun 17 17:14:12 2020 +0200 @@ -59,7 +59,7 @@ <h3>Class Attributes</h3> <table> -<tr><td>None</td></tr> +<tr><td>FlashModes</td></tr> </table> <h3>Class Methods</h3> @@ -133,13 +133,13 @@ <dt>Returns:</dt> <dd> tuple containing the selected chip type, the path of the - firmware file and the flash address + firmware file, the flash mode and the flash address </dd> </dl> <dl> <dt>Return Type:</dt> <dd> -tuple of (str, str, str) +tuple of (str, str, str, str) </dd> </dl> <a NAME="EspFirmwareSelectionDialog.on_espComboBox_currentTextChanged" ID="EspFirmwareSelectionDialog.on_espComboBox_currentTextChanged"></a>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Documentation/Source/eric6.MicroPython.IgnoredDevicesDialog.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,126 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.MicroPython.IgnoredDevicesDialog</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.MicroPython.IgnoredDevicesDialog</h1> + +<p> +Module implementing a dialog to manage the list of ignored serial devices. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#IgnoredDevicesDialog">IgnoredDevicesDialog</a></td> +<td>Class implementing a dialog to manage the list of ignored serial devices.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="IgnoredDevicesDialog" ID="IgnoredDevicesDialog"></a> +<h2>IgnoredDevicesDialog</h2> + +<p> + Class implementing a dialog to manage the list of ignored serial devices. +</p> +<h3>Derived from</h3> +QDialog, Ui_IgnoredDevicesDialog +<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="#IgnoredDevicesDialog.__init__">IgnoredDevicesDialog</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#IgnoredDevicesDialog.getDevices">getDevices</a></td> +<td>Public method to get the list of ignored serial devices.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="IgnoredDevicesDialog.__init__" ID="IgnoredDevicesDialog.__init__"></a> +<h4>IgnoredDevicesDialog (Constructor)</h4> +<b>IgnoredDevicesDialog</b>(<i>deviceList, parent=None</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>deviceList</i> (list of tuple of (int, int))</dt> +<dd> +list of ignored serial devices given by VID and PID +</dd> +<dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget +</dd> +</dl> +<a NAME="IgnoredDevicesDialog.getDevices" ID="IgnoredDevicesDialog.getDevices"></a> +<h4>IgnoredDevicesDialog.getDevices</h4> +<b>getDevices</b>(<i></i>) + +<p> + Public method to get the list of ignored serial devices. +</p> +<dl> +<dt>Returns:</dt> +<dd> +list of tuples containing the VID, PID and a description + of each ignored device +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +list of tuple of (int, int, str) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/eric6/Documentation/Source/eric6.MicroPython.MicroPythonDevices.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.MicroPython.MicroPythonDevices.html Wed Jun 17 17:14:12 2020 +0200 @@ -633,14 +633,17 @@ <dl> <dt>Returns:</dt> <dd> -set of tuples with the board type, a description and the serial - port it is connected at +tuple containing a list of tuples with the board type, a + description and the serial port it is connected at for known device + types and a list of tuples with VID, PID and description for unknown + devices </dd> </dl> <dl> <dt>Return Type:</dt> <dd> -set of tuples of (str, str, str) +tuple of (list of tuples of (str, str, str), list of tuples of + (int, int, str) </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.MicroPython.MicroPythonWidget.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.MicroPython.MicroPythonWidget.html Wed Jun 17 17:14:12 2020 +0200 @@ -130,6 +130,10 @@ <td>Private slot to handle a change in preferences.</td> </tr> <tr> +<td><a href="#MicroPythonWidget.__manageIgnored">__manageIgnored</a></td> +<td>Private slot to manage the list of ignored serial devices.</td> +</tr> +<tr> <td><a href="#MicroPythonWidget.__mpyCrossAvailable">__mpyCrossAvailable</a></td> <td>Private method to check the availability of mpy-cross.</td> </tr> @@ -397,6 +401,13 @@ <p> Private slot to handle a change in preferences. </p> +<a NAME="MicroPythonWidget.__manageIgnored" ID="MicroPythonWidget.__manageIgnored"></a> +<h4>MicroPythonWidget.__manageIgnored</h4> +<b>__manageIgnored</b>(<i></i>) + +<p> + Private slot to manage the list of ignored serial devices. +</p> <a NAME="MicroPythonWidget.__mpyCrossAvailable" ID="MicroPythonWidget.__mpyCrossAvailable"></a> <h4>MicroPythonWidget.__mpyCrossAvailable</h4> <b>__mpyCrossAvailable</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.PipInterface.Pip.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.PipInterface.Pip.html Wed Jun 17 17:14:12 2020 +0200 @@ -77,6 +77,18 @@ <td>Private method to check, if an upgrade of PyQt packages is attempted.</td> </tr> <tr> +<td><a href="#Pip.cacheList">cacheList</a></td> +<td>Public method to list files contained in the pip cache.</td> +</tr> +<tr> +<td><a href="#Pip.cachePurge">cachePurge</a></td> +<td>Public method to remove all files from the pip cache.</td> +</tr> +<tr> +<td><a href="#Pip.cacheRemove">cacheRemove</a></td> +<td>Public method to remove files from the pip cache.</td> +</tr> +<tr> <td><a href="#Pip.getIndexUrl">getIndexUrl</a></td> <td>Public method to get the index URL for PyPI.</td> </tr> @@ -137,6 +149,10 @@ <td>Public method to execute the current pip with the given arguments.</td> </tr> <tr> +<td><a href="#Pip.showCacheInfo">showCacheInfo</a></td> +<td>Public method to show some information about the pip cache.</td> +</tr> +<tr> <td><a href="#Pip.uninstallPackages">uninstallPackages</a></td> <td>Public method to uninstall the given list of packages.</td> </tr> @@ -195,6 +211,48 @@ bool </dd> </dl> +<a NAME="Pip.cacheList" ID="Pip.cacheList"></a> +<h4>Pip.cacheList</h4> +<b>cacheList</b>(<i>venvName</i>) + +<p> + Public method to list files contained in the pip cache. +</p> +<dl> + +<dt><i>venvName</i> (str)</dt> +<dd> +name of the virtual environment to be used +</dd> +</dl> +<a NAME="Pip.cachePurge" ID="Pip.cachePurge"></a> +<h4>Pip.cachePurge</h4> +<b>cachePurge</b>(<i>venvName</i>) + +<p> + Public method to remove all files from the pip cache. +</p> +<dl> + +<dt><i>venvName</i> (str)</dt> +<dd> +name of the virtual environment to be used +</dd> +</dl> +<a NAME="Pip.cacheRemove" ID="Pip.cacheRemove"></a> +<h4>Pip.cacheRemove</h4> +<b>cacheRemove</b>(<i>venvName</i>) + +<p> + Public method to remove files from the pip cache. +</p> +<dl> + +<dt><i>venvName</i> (str)</dt> +<dd> +name of the virtual environment to be used +</dd> +</dl> <a NAME="Pip.getIndexUrl" ID="Pip.getIndexUrl"></a> <h4>Pip.getIndexUrl</h4> <b>getIndexUrl</b>(<i></i>) @@ -570,6 +628,20 @@ tuple of (bool, str) </dd> </dl> +<a NAME="Pip.showCacheInfo" ID="Pip.showCacheInfo"></a> +<h4>Pip.showCacheInfo</h4> +<b>showCacheInfo</b>(<i>venvName</i>) + +<p> + Public method to show some information about the pip cache. +</p> +<dl> + +<dt><i>venvName</i> (str)</dt> +<dd> +name of the virtual environment to be used +</dd> +</dl> <a NAME="Pip.uninstallPackages" ID="Pip.uninstallPackages"></a> <h4>Pip.uninstallPackages</h4> <b>uninstallPackages</b>(<i>packages, venvName</i>)
--- a/eric6/Documentation/Source/eric6.PipInterface.PipPackagesWidget.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.PipInterface.PipPackagesWidget.html Wed Jun 17 17:14:12 2020 +0200 @@ -149,10 +149,18 @@ <td>Private method to process the search result data from PyPI.</td> </tr> <tr> +<td><a href="#PipPackagesWidget.__purgeCache">__purgeCache</a></td> +<td>Private slot to empty the pip cache.</td> +</tr> +<tr> <td><a href="#PipPackagesWidget.__refreshPackagesList">__refreshPackagesList</a></td> <td>Private method to referesh the packages list.</td> </tr> <tr> +<td><a href="#PipPackagesWidget.__removeCachedFiles">__removeCachedFiles</a></td> +<td>Private slot to remove files from the pip cache.</td> +</tr> +<tr> <td><a href="#PipPackagesWidget.__repairPip">__repairPip</a></td> <td>Private slot to repair the pip installation of the selected environment.</td> </tr> @@ -173,6 +181,14 @@ <td>Private method to get a list of selected items that can be updated.</td> </tr> <tr> +<td><a href="#PipPackagesWidget.__showCacheInfo">__showCacheInfo</a></td> +<td>Private slot to show information about the cache.</td> +</tr> +<tr> +<td><a href="#PipPackagesWidget.__showCacheList">__showCacheList</a></td> +<td>Private slot to show a list of cached files.</td> +</tr> +<tr> <td><a href="#PipPackagesWidget.__showPackageDetails">__showPackageDetails</a></td> <td>Private method to populate the package details dialog.</td> </tr> @@ -521,6 +537,13 @@ result data with hits in the first element </dd> </dl> +<a NAME="PipPackagesWidget.__purgeCache" ID="PipPackagesWidget.__purgeCache"></a> +<h4>PipPackagesWidget.__purgeCache</h4> +<b>__purgeCache</b>(<i></i>) + +<p> + Private slot to empty the pip cache. +</p> <a NAME="PipPackagesWidget.__refreshPackagesList" ID="PipPackagesWidget.__refreshPackagesList"></a> <h4>PipPackagesWidget.__refreshPackagesList</h4> <b>__refreshPackagesList</b>(<i></i>) @@ -528,6 +551,13 @@ <p> Private method to referesh the packages list. </p> +<a NAME="PipPackagesWidget.__removeCachedFiles" ID="PipPackagesWidget.__removeCachedFiles"></a> +<h4>PipPackagesWidget.__removeCachedFiles</h4> +<b>__removeCachedFiles</b>(<i></i>) + +<p> + Private slot to remove files from the pip cache. +</p> <a NAME="PipPackagesWidget.__repairPip" ID="PipPackagesWidget.__repairPip"></a> <h4>PipPackagesWidget.__repairPip</h4> <b>__repairPip</b>(<i></i>) @@ -610,6 +640,20 @@ list of QTreeWidgetItem </dd> </dl> +<a NAME="PipPackagesWidget.__showCacheInfo" ID="PipPackagesWidget.__showCacheInfo"></a> +<h4>PipPackagesWidget.__showCacheInfo</h4> +<b>__showCacheInfo</b>(<i></i>) + +<p> + Private slot to show information about the cache. +</p> +<a NAME="PipPackagesWidget.__showCacheList" ID="PipPackagesWidget.__showCacheList"></a> +<h4>PipPackagesWidget.__showCacheList</h4> +<b>__showCacheList</b>(<i></i>) + +<p> + Private slot to show a list of cached files. +</p> <a NAME="PipPackagesWidget.__showPackageDetails" ID="PipPackagesWidget.__showPackageDetails"></a> <h4>PipPackagesWidget.__showPackageDetails</h4> <b>__showPackageDetails</b>(<i>packageName, packageVersion</i>)
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html Wed Jun 17 17:14:12 2020 +0200 @@ -48,6 +48,10 @@ <td>Private module function to perform the code style check and/or fix found errors.</td> </tr> <tr> +<td><a href="#__checkSyntax">__checkSyntax</a></td> +<td>Private module function to perform a syntax check.</td> +</tr> +<tr> <td><a href="#codeStyleBatchCheck">codeStyleBatchCheck</a></td> <td>Module function to check code style for a batch of files.</td> </tr> @@ -72,6 +76,10 @@ <td>Initialize the service and return the entry point.</td> </tr> <tr> +<td><a href="#securityOk">securityOk</a></td> +<td>Function to check, if the given code is an acknowledged security report.</td> +</tr> +<tr> <td><a href="#worker">worker</a></td> <td>Module function acting as the parallel worker for the style check.</td> </tr> @@ -192,23 +200,67 @@ excludeMessages, includeMessages, repeatMessages, fixCodes, noFixCodes, fixIssues, maxLineLength, maxDocLineLength, blankLines, hangClosing, docType, codeComplexityArgs, miscellaneousArgs, - annotationArgs, errors, eol, encoding, backup) - bool, str, dict, dict, list of str, str, str, bool) + annotationArgs, securityArgs, errors, eol, encoding, backup) + bool, str, dict, dict, dict, list of str, str, str, bool) </dd> </dl> <dl> <dt>Returns:</dt> <dd> -tuple of statistics (dict) and list of results (tuple for each - found violation of style (lineno, position, text, ignored, fixed, - autofixing, fixedMsg)) +tuple of statistics data and list of result dictionaries with + keys: + <ul> + <li>file: file name</li> + <li>line: line_number</li> + <li>offset: offset within line</li> + <li>code: message code</li> + <li>args: list of arguments to format the message</li> + <li>ignored: flag indicating this issue was ignored</li> + <li>fixed: flag indicating this issue was fixed</li> + <li>autofixing: flag indicating that a fix can be done</li> + <li>fixcode: message code for the fix</li> + <li>fixargs: list of arguments to format the fix message</li> + </ul> </dd> </dl> <dl> <dt>Return Type:</dt> <dd> -tuple of (dict, list of tuples of (int, int, str, bool, bool, bool, - str)) +tuple of (dict, list of dict) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="__checkSyntax" ID="__checkSyntax"></a> +<h2>__checkSyntax</h2> +<b>__checkSyntax</b>(<i>filename, source</i>) + +<p> + Private module function to perform a syntax check. +</p> +<dl> + +<dt><i>filename</i> (str)</dt> +<dd> +source filename +</dd> +<dt><i>source</i> (str)</dt> +<dd> +string containing the code to check +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +tuple containing the error dictionary with syntax error details + and a statistics dictionary or a tuple containing two None +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (dict, dict) or tuple of (None, None) </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -393,6 +445,39 @@ <div align="right"><a href="#top">Up</a></div> <hr /> <hr /> +<a NAME="securityOk" ID="securityOk"></a> +<h2>securityOk</h2> +<b>securityOk</b>(<i>code, lineFlags</i>) + +<p> + Function to check, if the given code is an acknowledged security report. +</p> +<dl> + +<dt><i>code</i> (str)</dt> +<dd> +error code to be checked +</dd> +<dt><i>lineFlags</i> (list of str)</dt> +<dd> +list of line flags to check against +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating an acknowledged security report +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> <a NAME="worker" ID="worker"></a> <h2>worker</h2> <b>worker</b>(<i>inputQueue, outputQueue</i>)
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html Wed Jun 17 17:14:12 2020 +0200 @@ -57,7 +57,7 @@ <h3>Class Attributes</h3> <table> -<tr><td>availableFutures</td></tr><tr><td>codeRole</td></tr><tr><td>filenameRole</td></tr><tr><td>fixableRole</td></tr><tr><td>hasResults</td></tr><tr><td>ignoredRole</td></tr><tr><td>lineRole</td></tr><tr><td>messageRole</td></tr><tr><td>noFiles</td></tr><tr><td>noResults</td></tr><tr><td>positionRole</td></tr> +<tr><td>argsRole</td></tr><tr><td>availableFutures</td></tr><tr><td>checkCategories</td></tr><tr><td>codeRole</td></tr><tr><td>cryptoBitSelectionsDsaRsa</td></tr><tr><td>cryptoBitSelectionsEc</td></tr><tr><td>filenameRole</td></tr><tr><td>fixableRole</td></tr><tr><td>hasResults</td></tr><tr><td>ignoredRole</td></tr><tr><td>lineRole</td></tr><tr><td>messageRole</td></tr><tr><td>noFiles</td></tr><tr><td>noResults</td></tr><tr><td>positionRole</td></tr> </table> <h3>Class Methods</h3> @@ -73,10 +73,18 @@ <td>Constructor</td> </tr> <tr> +<td><a href="#CodeStyleCheckerDialog.__assembleExcludeMessages">__assembleExcludeMessages</a></td> +<td>Private method to assemble the list of excluded checks.</td> +</tr> +<tr> <td><a href="#CodeStyleCheckerDialog.__batchFinished">__batchFinished</a></td> <td>Private slot handling the completion of a batch job.</td> </tr> <tr> +<td><a href="#CodeStyleCheckerDialog.__cleanupData">__cleanupData</a></td> +<td>Private method to clean the loaded/entered data of redundant entries.</td> +</tr> +<tr> <td><a href="#CodeStyleCheckerDialog.__clearErrors">__clearErrors</a></td> <td>Private method to clear all warning markers of open editors to be checked.</td> </tr> @@ -85,6 +93,10 @@ <td>Private slot to create a new error item in the result list.</td> </tr> <tr> +<td><a href="#CodeStyleCheckerDialog.__createFileErrorItem">__createFileErrorItem</a></td> +<td>Private method to create an error entry for a given file.</td> +</tr> +<tr> <td><a href="#CodeStyleCheckerDialog.__createResultItem">__createResultItem</a></td> <td>Private method to create an entry in the result list.</td> </tr> @@ -97,6 +109,10 @@ <td>Private method to get a dictionary containing the builtins assignments to be ignored.</td> </tr> <tr> +<td><a href="#CodeStyleCheckerDialog.__getCategories">__getCategories</a></td> +<td>Private method to get the enabled or disabled checker categories.</td> +</tr> +<tr> <td><a href="#CodeStyleCheckerDialog.__getEol">__getEol</a></td> <td>Private method to get the applicable eol string.</td> </tr> @@ -113,6 +129,10 @@ <td>Private method to populate the list of shadowed builtins to be ignored.</td> </tr> <tr> +<td><a href="#CodeStyleCheckerDialog.__initCategoriesList">__initCategoriesList</a></td> +<td>Private method to set the enabled status of the checker categories.</td> +</tr> +<tr> <td><a href="#CodeStyleCheckerDialog.__initFuturesList">__initFuturesList</a></td> <td>Private method to set the selected status of the future imports.</td> </tr> @@ -209,6 +229,10 @@ <td>Private slot to reset the configuration values to their default values.</td> </tr> <tr> +<td><a href="#CodeStyleCheckerDialog.on_restartButton_clicked">on_restartButton_clicked</a></td> +<td>Private slot to restart a code style check run.</td> +</tr> +<tr> <td><a href="#CodeStyleCheckerDialog.on_resultList_itemActivated">on_resultList_itemActivated</a></td> <td>Private slot to handle the activation of an item.</td> </tr> @@ -256,14 +280,32 @@ </p> <dl> -<dt><i>styleCheckService</i></dt> +<dt><i>styleCheckService</i> (CodeStyleCheckService)</dt> <dd> reference to the service - (CodeStyleCheckService) +</dd> +<dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget </dd> -<dt><i>parent</i></dt> +</dl> +<a NAME="CodeStyleCheckerDialog.__assembleExcludeMessages" ID="CodeStyleCheckerDialog.__assembleExcludeMessages"></a> +<h4>CodeStyleCheckerDialog.__assembleExcludeMessages</h4> +<b>__assembleExcludeMessages</b>(<i></i>) + +<p> + Private method to assemble the list of excluded checks. +</p> +<dl> +<dt>Returns:</dt> <dd> -reference to the parent widget (QWidget) +list of excluded checks as a comma separated string. +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str </dd> </dl> <a NAME="CodeStyleCheckerDialog.__batchFinished" ID="CodeStyleCheckerDialog.__batchFinished"></a> @@ -273,6 +315,13 @@ <p> Private slot handling the completion of a batch job. </p> +<a NAME="CodeStyleCheckerDialog.__cleanupData" ID="CodeStyleCheckerDialog.__cleanupData"></a> +<h4>CodeStyleCheckerDialog.__cleanupData</h4> +<b>__cleanupData</b>(<i></i>) + +<p> + Private method to clean the loaded/entered data of redundant entries. +</p> <a NAME="CodeStyleCheckerDialog.__clearErrors" ID="CodeStyleCheckerDialog.__clearErrors"></a> <h4>CodeStyleCheckerDialog.__clearErrors</h4> <b>__clearErrors</b>(<i>files</i>) @@ -283,9 +332,9 @@ </p> <dl> -<dt><i>files</i></dt> +<dt><i>files</i> (list of str)</dt> <dd> -list of files to be checked (list of string) +list of files to be checked </dd> </dl> <a NAME="CodeStyleCheckerDialog.__createErrorItem" ID="CodeStyleCheckerDialog.__createErrorItem"></a> @@ -306,49 +355,52 @@ error message </dd> </dl> +<a NAME="CodeStyleCheckerDialog.__createFileErrorItem" ID="CodeStyleCheckerDialog.__createFileErrorItem"></a> +<h4>CodeStyleCheckerDialog.__createFileErrorItem</h4> +<b>__createFileErrorItem</b>(<i>filename, message</i>) + +<p> + Private method to create an error entry for a given file. +</p> +<dl> + +<dt><i>filename</i> (str)</dt> +<dd> +file name of the file +</dd> +<dt><i>message</i> (str)</dt> +<dd> +error message text +</dd> +</dl> <a NAME="CodeStyleCheckerDialog.__createResultItem" ID="CodeStyleCheckerDialog.__createResultItem"></a> <h4>CodeStyleCheckerDialog.__createResultItem</h4> -<b>__createResultItem</b>(<i>filename, line, pos, message, fixed, autofixing, ignored</i>) +<b>__createResultItem</b>(<i>filename, result</i>) <p> Private method to create an entry in the result list. </p> <dl> -<dt><i>filename</i></dt> -<dd> -file name of the file (string) -</dd> -<dt><i>line</i></dt> -<dd> -line number of issue (integer or string) -</dd> -<dt><i>pos</i></dt> -<dd> -character position of issue (integer or string) -</dd> -<dt><i>message</i></dt> +<dt><i>filename</i> (str)</dt> <dd> -message text (string) -</dd> -<dt><i>fixed</i></dt> -<dd> -flag indicating a fixed issue (boolean) +file name of the file </dd> -<dt><i>autofixing</i></dt> +<dt><i>result</i> (dict)</dt> <dd> -flag indicating, that we are fixing issues - automatically (boolean) -</dd> -<dt><i>ignored</i></dt> -<dd> -flag indicating an ignored issue (boolean) +dictionary containing check result data </dd> </dl> <dl> <dt>Returns:</dt> <dd> -reference to the created item (QTreeWidgetItem) +reference to the created item +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +QTreeWidgetItem </dd> </dl> <a NAME="CodeStyleCheckerDialog.__finish" ID="CodeStyleCheckerDialog.__finish"></a> @@ -379,6 +431,37 @@ dict of list of str </dd> </dl> +<a NAME="CodeStyleCheckerDialog.__getCategories" ID="CodeStyleCheckerDialog.__getCategories"></a> +<h4>CodeStyleCheckerDialog.__getCategories</h4> +<b>__getCategories</b>(<i>enabled, asList=False</i>) + +<p> + Private method to get the enabled or disabled checker categories. +</p> +<dl> + +<dt><i>enabled</i> (bool)</dt> +<dd> +flag indicating to return enabled categories +</dd> +<dt><i>asList</i> (bool)</dt> +<dd> +flag indicating to return the checker categories as a + Python list +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +checker categories as a list or comma separated string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str or list of str +</dd> +</dl> <a NAME="CodeStyleCheckerDialog.__getEol" ID="CodeStyleCheckerDialog.__getEol"></a> <h4>CodeStyleCheckerDialog.__getEol</h4> <b>__getEol</b>(<i>fn</i>) @@ -388,15 +471,21 @@ </p> <dl> -<dt><i>fn</i></dt> +<dt><i>fn</i> (str)</dt> <dd> -filename where to determine the line ending (str) +filename where to determine the line ending </dd> </dl> <dl> <dt>Returns:</dt> <dd> -eol string (string) +eol string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str </dd> </dl> <a NAME="CodeStyleCheckerDialog.__getSelectedFixableItems" ID="CodeStyleCheckerDialog.__getSelectedFixableItems"></a> @@ -409,7 +498,13 @@ <dl> <dt>Returns:</dt> <dd> -selected items for fixable issues (list of QTreeWidgetItem) +selected items for fixable issues +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +list of QTreeWidgetItem </dd> </dl> <a NAME="CodeStyleCheckerDialog.__getSelectedFutureImports" ID="CodeStyleCheckerDialog.__getSelectedFutureImports"></a> @@ -446,6 +541,21 @@ assignments to be ignored </dd> </dl> +<a NAME="CodeStyleCheckerDialog.__initCategoriesList" ID="CodeStyleCheckerDialog.__initCategoriesList"></a> +<h4>CodeStyleCheckerDialog.__initCategoriesList</h4> +<b>__initCategoriesList</b>(<i>enabledCategories</i>) + +<p> + Private method to set the enabled status of the checker categories. +</p> +<dl> + +<dt><i>enabledCategories</i> (str)</dt> +<dd> +comma separated list of enabled checker + categories +</dd> +</dl> <a NAME="CodeStyleCheckerDialog.__initFuturesList" ID="CodeStyleCheckerDialog.__initFuturesList"></a> <h4>CodeStyleCheckerDialog.__initFuturesList</h4> <b>__initFuturesList</b>(<i>selectedFutures</i>) @@ -469,20 +579,26 @@ </p> <dl> -<dt><i>itm</i></dt> +<dt><i>itm</i> (QTreeWidgetItem)</dt> <dd> -item to be checked (QTreeWidgetItem) +item to be checked </dd> </dl> <dl> <dt>Returns:</dt> <dd> -flag indicating a fixable issue (boolean) +flag indicating a fixable issue +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool </dd> </dl> <a NAME="CodeStyleCheckerDialog.__modifyFixedResultItem" ID="CodeStyleCheckerDialog.__modifyFixedResultItem"></a> <h4>CodeStyleCheckerDialog.__modifyFixedResultItem</h4> -<b>__modifyFixedResultItem</b>(<i>itm, text, fixed</i>) +<b>__modifyFixedResultItem</b>(<i>itm, result</i>) <p> Private method to modify a result list entry to show its @@ -490,17 +606,13 @@ </p> <dl> -<dt><i>itm</i></dt> -<dd> -reference to the item to modify (QTreeWidgetItem) -</dd> -<dt><i>text</i></dt> +<dt><i>itm</i> (QTreeWidgetItem)</dt> <dd> -text to be appended (string) +reference to the item to modify </dd> -<dt><i>fixed</i></dt> +<dt><i>result</i> (dict)</dt> <dd> -flag indicating a fixed issue (boolean) +dictionary containing check result data </dd> </dl> <a NAME="CodeStyleCheckerDialog.__modifyOptions" ID="CodeStyleCheckerDialog.__modifyOptions"></a> @@ -517,9 +629,9 @@ </p> <dl> -<dt><i>source</i></dt> +<dt><i>source</i> (list of str or str)</dt> <dd> -source text (list of str or str) +source text </dd> </dl> <dl> @@ -528,6 +640,12 @@ list of checker options </dd> </dl> +<dl> +<dt>Return Type:</dt> +<dd> +list +</dd> +</dl> <a NAME="CodeStyleCheckerDialog.__processError" ID="CodeStyleCheckerDialog.__processError"></a> <h4>CodeStyleCheckerDialog.__processError</h4> <b>__processError</b>(<i>fn, msg</i>) @@ -555,23 +673,21 @@ </p> <dl> -<dt><i>fn</i></dt> +<dt><i>fn</i> (str)</dt> <dd> -filename of the just checked file (str) +filename of the just checked file </dd> -<dt><i>codeStyleCheckerStats</i></dt> +<dt><i>codeStyleCheckerStats</i> (dict)</dt> <dd> -stats of style and name check (dict) +stats of style and name check </dd> -<dt><i>fixes</i></dt> +<dt><i>fixes</i> (int)</dt> <dd> -number of applied fixes (int) +number of applied fixes </dd> -<dt><i>results</i></dt> +<dt><i>results</i> (dict)</dt> <dd> -tuple for each found violation of style (tuple of - lineno (int), position (int), text (str), ignored (bool), - fixed (bool), autofixing (bool)) +dictionary containing check result data </dd> </dl> <a NAME="CodeStyleCheckerDialog.__resetStatistics" ID="CodeStyleCheckerDialog.__resetStatistics"></a> @@ -590,21 +706,25 @@ </p> <a NAME="CodeStyleCheckerDialog.__selectCodes" ID="CodeStyleCheckerDialog.__selectCodes"></a> <h4>CodeStyleCheckerDialog.__selectCodes</h4> -<b>__selectCodes</b>(<i>edit, showFixCodes</i>) +<b>__selectCodes</b>(<i>edit, categories, showFixCodes</i>) <p> Private method to select message codes via a selection dialog. </p> <dl> -<dt><i>edit</i></dt> +<dt><i>edit</i> (QLineEdit)</dt> <dd> -reference of the line edit to be populated (QLineEdit) +reference of the line edit to be populated </dd> -<dt><i>showFixCodes</i></dt> +<dt><i>categories</i> (list of str)</dt> +<dd> +list of message categories to omit +</dd> +<dt><i>showFixCodes</i> (bool)</dt> <dd> flag indicating to show a list of fixable - issues (boolean) + issues </dd> </dl> <a NAME="CodeStyleCheckerDialog.__updateFixerStatistics" ID="CodeStyleCheckerDialog.__updateFixerStatistics"></a> @@ -616,32 +736,36 @@ </p> <dl> -<dt><i>fixer</i></dt> +<dt><i>fixer</i> (CodeStyleFixer)</dt> <dd> -reference to the code style fixer (CodeStyleFixer) +reference to the code style fixer </dd> </dl> <a NAME="CodeStyleCheckerDialog.__updateStatistics" ID="CodeStyleCheckerDialog.__updateStatistics"></a> <h4>CodeStyleCheckerDialog.__updateStatistics</h4> -<b>__updateStatistics</b>(<i>statistics, fixer, ignoredErrors</i>) +<b>__updateStatistics</b>(<i>statistics, fixer, ignoredErrors, securityOk</i>) <p> Private method to update the collected statistics. </p> <dl> -<dt><i>statistics</i></dt> +<dt><i>statistics</i> (dict)</dt> <dd> dictionary of statistical data with message code as key and message count as value </dd> -<dt><i>fixer</i></dt> +<dt><i>fixer</i> (CodeStyleFixer)</dt> <dd> -reference to the code style fixer (CodeStyleFixer) +reference to the code style fixer </dd> -<dt><i>ignoredErrors</i></dt> +<dt><i>ignoredErrors</i> (int)</dt> <dd> -number of ignored errors (integer) +number of ignored errors +</dd> +<dt><i>securityOk</i> (int)</dt> +<dd> +number of acknowledged security reports </dd> </dl> <a NAME="CodeStyleCheckerDialog.check" ID="CodeStyleCheckerDialog.check"></a> @@ -656,9 +780,9 @@ </p> <dl> -<dt><i>codestring=</i></dt> +<dt><i>codestring</i> (str)</dt> <dd> -optional sourcestring (str) +optional sourcestring </dd> </dl> <a NAME="CodeStyleCheckerDialog.checkBatch" ID="CodeStyleCheckerDialog.checkBatch"></a> @@ -694,9 +818,9 @@ </p> <dl> -<dt><i>button</i></dt> +<dt><i>button</i> (QAbstractButton)</dt> <dd> -button that was clicked (QAbstractButton) +button that was clicked </dd> </dl> <a NAME="CodeStyleCheckerDialog.on_deleteBuiltinButton_clicked" ID="CodeStyleCheckerDialog.on_deleteBuiltinButton_clicked"></a> @@ -723,7 +847,7 @@ </p> <p> Build a dictionary of issues to fix. Update the initialized __options. - Then call check with the dict as keyparam to fix selected issues. + Then call check with the dict as keyparam to fix selected issues. </p> <a NAME="CodeStyleCheckerDialog.on_fixIssuesSelectButton_clicked" ID="CodeStyleCheckerDialog.on_fixIssuesSelectButton_clicked"></a> <h4>CodeStyleCheckerDialog.on_fixIssuesSelectButton_clicked</h4> @@ -763,6 +887,13 @@ <p> Private slot to reset the configuration values to their default values. </p> +<a NAME="CodeStyleCheckerDialog.on_restartButton_clicked" ID="CodeStyleCheckerDialog.on_restartButton_clicked"></a> +<h4>CodeStyleCheckerDialog.on_restartButton_clicked</h4> +<b>on_restartButton_clicked</b>(<i></i>) + +<p> + Private slot to restart a code style check run. +</p> <a NAME="CodeStyleCheckerDialog.on_resultList_itemActivated" ID="CodeStyleCheckerDialog.on_resultList_itemActivated"></a> <h4>CodeStyleCheckerDialog.on_resultList_itemActivated</h4> <b>on_resultList_itemActivated</b>(<i>item, column</i>) @@ -772,13 +903,13 @@ </p> <dl> -<dt><i>item</i></dt> +<dt><i>item</i> (QTreeWidgetItem)</dt> <dd> -reference to the activated item (QTreeWidgetItem) +reference to the activated item </dd> -<dt><i>column</i></dt> +<dt><i>column</i> (int)</dt> <dd> -column the item was activated in (integer) +column the item was activated in </dd> </dl> <a NAME="CodeStyleCheckerDialog.on_resultList_itemSelectionChanged" ID="CodeStyleCheckerDialog.on_resultList_itemSelectionChanged"></a> @@ -826,13 +957,13 @@ </p> <dl> -<dt><i>fileList</i></dt> +<dt><i>fileList</i> (list of str)</dt> <dd> -list of filenames (list of strings) +list of filenames </dd> -<dt><i>project</i></dt> +<dt><i>project</i> (Project)</dt> <dd> -reference to the project object (Project) +reference to the project object </dd> </dl> <a NAME="CodeStyleCheckerDialog.start" ID="CodeStyleCheckerDialog.start"></a> @@ -844,20 +975,17 @@ </p> <dl> -<dt><i>fn</i></dt> +<dt><i>fn</i> (str or list of str)</dt> <dd> file or list of files or directory to be checked - (string or list of strings) </dd> -<dt><i>save=</i></dt> +<dt><i>save</i> (bool)</dt> <dd> -flag indicating to save the given - file/file list/directory (boolean) +flag indicating to save the given file/file list/directory </dd> -<dt><i>repeat=</i></dt> +<dt><i>repeat</i> (None or bool)</dt> <dd> state of the repeat check box if it is not None - (None or boolean) </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCodeSelectionDialog.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCodeSelectionDialog.html Wed Jun 17 17:14:12 2020 +0200 @@ -85,25 +85,29 @@ <a NAME="CodeStyleCodeSelectionDialog.__init__" ID="CodeStyleCodeSelectionDialog.__init__"></a> <h4>CodeStyleCodeSelectionDialog (Constructor)</h4> -<b>CodeStyleCodeSelectionDialog</b>(<i>codes, showFixCodes, parent=None</i>) +<b>CodeStyleCodeSelectionDialog</b>(<i>codes, categories, showFixCodes, parent=None</i>) <p> Constructor </p> <dl> -<dt><i>codes</i></dt> +<dt><i>codes</i> (str)</dt> <dd> -comma separated list of selected codes (string) +comma separated list of selected codes </dd> -<dt><i>showFixCodes</i></dt> +<dt><i>categories</i> (list of str)</dt> +<dd> +list of message categories to omit +</dd> +<dt><i>showFixCodes</i> (bool)</dt> <dd> flag indicating to show a list of fixable - issues (boolean) + issues </dd> -<dt><i>parent</i></dt> +<dt><i>parent</i> (QWidget)</dt> <dd> -reference to the parent widget (QWidget) +reference to the parent widget </dd> </dl> <a NAME="CodeStyleCodeSelectionDialog.getSelectedCodes" ID="CodeStyleCodeSelectionDialog.getSelectedCodes"></a> @@ -116,7 +120,13 @@ <dl> <dt>Returns:</dt> <dd> -comma separated list of selected codes (string) +comma separated list of selected codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.html Wed Jun 17 17:14:12 2020 +0200 @@ -402,30 +402,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD111" ID="CodeStyleFixer.__fixD111"></a> @@ -440,25 +445,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD112" ID="CodeStyleFixer.__fixD112"></a> @@ -473,25 +484,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD121" ID="CodeStyleFixer.__fixD121"></a> @@ -506,30 +523,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD131" ID="CodeStyleFixer.__fixD131"></a> @@ -545,25 +567,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD141" ID="CodeStyleFixer.__fixD141"></a> @@ -579,30 +607,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD142" ID="CodeStyleFixer.__fixD142"></a> @@ -618,30 +651,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD143" ID="CodeStyleFixer.__fixD143"></a> @@ -657,30 +695,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD144" ID="CodeStyleFixer.__fixD144"></a> @@ -696,30 +739,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD145" ID="CodeStyleFixer.__fixD145"></a> @@ -735,30 +783,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD221" ID="CodeStyleFixer.__fixD221"></a> @@ -774,30 +827,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD242" ID="CodeStyleFixer.__fixD242"></a> @@ -813,30 +871,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD243" ID="CodeStyleFixer.__fixD243"></a> @@ -852,30 +915,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixD247" ID="CodeStyleFixer.__fixD247"></a> @@ -891,30 +959,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE101" ID="CodeStyleFixer.__fixE101"></a> @@ -929,25 +1002,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE121" ID="CodeStyleFixer.__fixE121"></a> @@ -963,30 +1042,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE122" ID="CodeStyleFixer.__fixE122"></a> @@ -1001,30 +1085,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE123" ID="CodeStyleFixer.__fixE123"></a> @@ -1039,30 +1128,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE125" ID="CodeStyleFixer.__fixE125"></a> @@ -1078,30 +1172,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE126" ID="CodeStyleFixer.__fixE126"></a> @@ -1117,30 +1216,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE127" ID="CodeStyleFixer.__fixE127"></a> @@ -1155,30 +1259,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE201" ID="CodeStyleFixer.__fixE201"></a> @@ -1193,25 +1302,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE221" ID="CodeStyleFixer.__fixE221"></a> @@ -1227,25 +1342,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE225" ID="CodeStyleFixer.__fixE225"></a> @@ -1260,25 +1381,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE231" ID="CodeStyleFixer.__fixE231"></a> @@ -1293,25 +1420,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE251" ID="CodeStyleFixer.__fixE251"></a> @@ -1327,25 +1460,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE261" ID="CodeStyleFixer.__fixE261"></a> @@ -1360,25 +1499,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE304" ID="CodeStyleFixer.__fixE304"></a> @@ -1394,30 +1539,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE401" ID="CodeStyleFixer.__fixE401"></a> @@ -1432,30 +1582,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE501" ID="CodeStyleFixer.__fixE501"></a> @@ -1470,30 +1625,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE502" ID="CodeStyleFixer.__fixE502"></a> @@ -1508,25 +1668,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE701" ID="CodeStyleFixer.__fixE701"></a> @@ -1541,30 +1707,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE702" ID="CodeStyleFixer.__fixE702"></a> @@ -1579,30 +1750,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixE711" ID="CodeStyleFixer.__fixE711"></a> @@ -1617,25 +1793,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixN804" ID="CodeStyleFixer.__fixN804"></a> @@ -1651,30 +1833,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixN806" ID="CodeStyleFixer.__fixN806"></a> @@ -1689,30 +1876,35 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> -<dt><i>apply=</i></dt> +<dt><i>apply</i> (bool)</dt> <dd> flag indicating, that the fix should be applied - (boolean) </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixReindent" ID="CodeStyleFixer.__fixReindent"></a> @@ -1758,25 +1950,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixW292" ID="CodeStyleFixer.__fixW292"></a> @@ -1791,25 +1989,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixW391" ID="CodeStyleFixer.__fixW391"></a> @@ -1824,25 +2028,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixW603" ID="CodeStyleFixer.__fixW603"></a> @@ -1857,25 +2067,31 @@ </p> <dl> -<dt><i>code</i></dt> +<dt><i>code</i> (str)</dt> <dd> -code of the issue (string) +code of the issue </dd> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of the issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -position inside line (integer) +position inside line </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list or int, int) </dd> </dl> <a NAME="CodeStyleFixer.__fixWhitespace" ID="CodeStyleFixer.__fixWhitespace"></a> @@ -2011,32 +2227,38 @@ </dl> <a NAME="CodeStyleFixer.fixIssue" ID="CodeStyleFixer.fixIssue"></a> <h4>CodeStyleFixer.fixIssue</h4> -<b>fixIssue</b>(<i>line, pos, message</i>) +<b>fixIssue</b>(<i>line, pos, code</i>) <p> Public method to fix the fixable issues. </p> <dl> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> -line number of issue (integer) +line number of the issue </dd> -<dt><i>pos</i></dt> +<dt><i>pos</i> (int)</dt> <dd> -character position of issue (integer) +position inside line </dd> -<dt><i>message</i></dt> +<dt><i>code</i> (str)</dt> <dd> -message text (string) +code of the issue </dd> </dl> <dl> <dt>Returns:</dt> <dd> value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, arguments list for the message + and an ID for a deferred fix +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (int, str, list, int) </dd> </dl> <a NAME="CodeStyleFixer.mutualStartswith" ID="CodeStyleFixer.mutualStartswith"></a>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.__init__.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,76 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.__init__</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.__init__</h1> + +<p> +Package containing the various security checker modules. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#generateCheckersDict">generateCheckersDict</a></td> +<td>Function to generate the dictionary with checkers.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="generateCheckersDict" ID="generateCheckersDict"></a> +<h2>generateCheckersDict</h2> +<b>generateCheckersDict</b>(<i></i>) + +<p> + Function to generate the dictionary with checkers. +</p> +<p> + Checker modules are searched for inside this package. Each module + defining some checks must contain a function 'getChecks()' returning + a dictionary containing the check type as key and a list of tuples + with the check function and associated message codes. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing list of tuples with checker data +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert</h1> + +<p> +Module implementing a check for the use of 'assert'. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkAssertUsed">checkAssertUsed</a></td> +<td>Function to check for the use of 'assert'.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkAssertUsed" ID="checkAssertUsed"></a> +<h2>checkAssertUsed</h2> +<b>checkAssertUsed</b>(<i>reportError, context, config</i>) + +<p> + Function to check for the use of 'assert'. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,141 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword</h1> + +<p> +Module implementing checks for potentially hardcoded AWS passwords. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>AWS_ACCESS_KEY_ID_MAX_ENTROPY</td></tr><tr><td>AWS_ACCESS_KEY_ID_REGEX</td></tr><tr><td>AWS_ACCESS_KEY_ID_SYMBOLS</td></tr><tr><td>AWS_SECRET_ACCESS_KEY_MAX_ENTROPY</td></tr><tr><td>AWS_SECRET_ACCESS_KEY_REGEX</td></tr><tr><td>AWS_SECRET_ACCESS_KEY_SYMBOLS</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkHardcodedAwsKey">checkHardcodedAwsKey</a></td> +<td>Function to check for potentially hardcoded AWS passwords.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +<tr> +<td><a href="#shannonEntropy">shannonEntropy</a></td> +<td>Function to caclculate the Shannon entropy of some given data.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkHardcodedAwsKey" ID="checkHardcodedAwsKey"></a> +<h2>checkHardcodedAwsKey</h2> +<b>checkHardcodedAwsKey</b>(<i>reportError, context, config</i>) + +<p> + Function to check for potentially hardcoded AWS passwords. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="shannonEntropy" ID="shannonEntropy"></a> +<h2>shannonEntropy</h2> +<b>shannonEntropy</b>(<i>data, symbols</i>) + +<p> + Function to caclculate the Shannon entropy of some given data. +</p> +<p> + Source: + http://blog.dkbza.org/2007/05/scanning-data-for-entropy-anomalies.html +</p> +<dl> + +<dt><i>data</i> (str)</dt> +<dd> +data to calculate the entropy for +</dd> +<dt><i>symbols</i> (str)</dt> +<dd> +allowed symbols +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +Shannon entropy of the given data +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +float +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls</h1> + +<p> +Module implementing checks for blacklisted methods and functions. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>_blacklists</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkBlacklist">checkBlacklist</a></td> +<td>Function to check for blacklisted method calls.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkBlacklist" ID="checkBlacklist"></a> +<h2>checkBlacklist</h2> +<b>checkBlacklist</b>(<i>reportError, context, config</i>) + +<p> + Function to check for blacklisted method calls. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports</h1> + +<p> +Module implementing checks for blacklisted imports. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>_blacklists</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkBlacklist">checkBlacklist</a></td> +<td>Function to check for blacklisted method calls.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkBlacklist" ID="checkBlacklist"></a> +<h2>checkBlacklist</h2> +<b>checkBlacklist</b>(<i>reportError, context, config</i>) + +<p> + Function to check for blacklisted method calls. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation</h1> + +<p> +Module implementing checks for switched off certificate validation. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkNoCertificateValidation">checkNoCertificateValidation</a></td> +<td>Function to check for switched off certificate validation.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkNoCertificateValidation" ID="checkNoCertificateValidation"></a> +<h2>checkNoCertificateValidation</h2> +<b>checkNoCertificateValidation</b>(<i>reportError, context, config</i>) + +<p> + Function to check for switched off certificate validation. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,162 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection</h1> + +<p> +Module implementing checks for potential SQL injections risks. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkDjangoExtraUsed">checkDjangoExtraUsed</a></td> +<td>Function to check for potential SQL injection on extra function.</td> +</tr> +<tr> +<td><a href="#checkDjangoRawSqlUsed">checkDjangoRawSqlUsed</a></td> +<td>Function to check for potential SQL injection on RawSQL function.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +<tr> +<td><a href="#keywords2dict">keywords2dict</a></td> +<td>Function to extract keywords arguments into a dictionary.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkDjangoExtraUsed" ID="checkDjangoExtraUsed"></a> +<h2>checkDjangoExtraUsed</h2> +<b>checkDjangoExtraUsed</b>(<i>reportError, context, config</i>) + +<p> + Function to check for potential SQL injection on extra function. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkDjangoRawSqlUsed" ID="checkDjangoRawSqlUsed"></a> +<h2>checkDjangoRawSqlUsed</h2> +<b>checkDjangoRawSqlUsed</b>(<i>reportError, context, config</i>) + +<p> + Function to check for potential SQL injection on RawSQL function. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="keywords2dict" ID="keywords2dict"></a> +<h2>keywords2dict</h2> +<b>keywords2dict</b>(<i>keywords</i>) + +<p> + Function to extract keywords arguments into a dictionary. +</p> +<dl> + +<dt><i>keywords</i> (list of ast.keyword)</dt> +<dd> +list of keyword nodes +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +dictionary with keyword name and value +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,362 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability</h1> + +<p> +Module implementing checks for potential XSS vulnerability. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>PY2</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#DeepAssignation">DeepAssignation</a></td> +<td>Class to perform a deep analysis of an assign.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkDjangoXssVulnerability">checkDjangoXssVulnerability</a></td> +<td>Function to check for potential XSS vulnerability.</td> +</tr> +<tr> +<td><a href="#checkPotentialRisk">checkPotentialRisk</a></td> +<td>Function to check a given node for a potential XSS vulnerability.</td> +</tr> +<tr> +<td><a href="#evaluateCall">evaluateCall</a></td> +<td>Function to evaluate a call node for potential XSS vulnerability.</td> +</tr> +<tr> +<td><a href="#evaluateVar">evaluateVar</a></td> +<td>Function to evaluate a variable node for potential XSS vulnerability.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +<tr> +<td><a href="#transform2call">transform2call</a></td> +<td>Function to transform a variable node to a call node.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="DeepAssignation" ID="DeepAssignation"></a> +<h2>DeepAssignation</h2> + +<p> + Class to perform a deep analysis of an assign. +</p> +<h3>Derived from</h3> +object +<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="#DeepAssignation.__init__">DeepAssignation</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#DeepAssignation.isAssigned">isAssigned</a></td> +<td>Public method to check assignment against a given node.</td> +</tr> +<tr> +<td><a href="#DeepAssignation.isAssignedIn">isAssignedIn</a></td> +<td>Public method to check, if the variable is assigned to.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="DeepAssignation.__init__" ID="DeepAssignation.__init__"></a> +<h4>DeepAssignation (Constructor)</h4> +<b>DeepAssignation</b>(<i>varName, ignoreNodes=None</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>varName</i> (str)</dt> +<dd> +name of the variable +</dd> +<dt><i>ignoreNodes</i> (list of ast.AST)</dt> +<dd> +list of nodes to ignore +</dd> +</dl> +<a NAME="DeepAssignation.isAssigned" ID="DeepAssignation.isAssigned"></a> +<h4>DeepAssignation.isAssigned</h4> +<b>isAssigned</b>(<i>node</i>) + +<p> + Public method to check assignment against a given node. +</p> +<dl> + +<dt><i>node</i> (ast.AST)</dt> +<dd> +node to check against +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating an assignement +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="DeepAssignation.isAssignedIn" ID="DeepAssignation.isAssignedIn"></a> +<h4>DeepAssignation.isAssignedIn</h4> +<b>isAssignedIn</b>(<i>items</i>) + +<p> + Public method to check, if the variable is assigned to. +</p> +<dl> + +<dt><i>items</i> (list of ast.AST)</dt> +<dd> +list of nodes to check against +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +list of nodes assigned +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +list of ast.AST +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkDjangoXssVulnerability" ID="checkDjangoXssVulnerability"></a> +<h2>checkDjangoXssVulnerability</h2> +<b>checkDjangoXssVulnerability</b>(<i>reportError, context, config</i>) + +<p> + Function to check for potential XSS vulnerability. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkPotentialRisk" ID="checkPotentialRisk"></a> +<h2>checkPotentialRisk</h2> +<b>checkPotentialRisk</b>(<i>reportError, node</i>) + +<p> + Function to check a given node for a potential XSS vulnerability. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>node</i> (ast.Call)</dt> +<dd> +node to be checked +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="evaluateCall" ID="evaluateCall"></a> +<h2>evaluateCall</h2> +<b>evaluateCall</b>(<i>call, parent, ignoreNodes=None</i>) + +<p> + Function to evaluate a call node for potential XSS vulnerability. +</p> +<dl> + +<dt><i>call</i> (ast.Call)</dt> +<dd> +call node to be checked +</dd> +<dt><i>parent</i> (ast.AST)</dt> +<dd> +parent node +</dd> +<dt><i>ignoreNodes</i> (list of ast.AST)</dt> +<dd> +list of nodes to ignore +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating a secure evaluation +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="evaluateVar" ID="evaluateVar"></a> +<h2>evaluateVar</h2> +<b>evaluateVar</b>(<i>xssVar, parent, until, ignoreNodes=None</i>) + +<p> + Function to evaluate a variable node for potential XSS vulnerability. +</p> +<dl> + +<dt><i>xssVar</i> (ast.Name)</dt> +<dd> +variable node to be checked +</dd> +<dt><i>parent</i> (ast.AST)</dt> +<dd> +parent node +</dd> +<dt><i>until</i> (int)</dt> +<dd> +end line number to evaluate variable against +</dd> +<dt><i>ignoreNodes</i> (list of ast.AST)</dt> +<dd> +list of nodes to ignore +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating a secure evaluation +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="transform2call" ID="transform2call"></a> +<h2>transform2call</h2> +<b>transform2call</b>(<i>var</i>) + +<p> + Function to transform a variable node to a call node. +</p> +<dl> + +<dt><i>var</i> (ast.BinOp)</dt> +<dd> +variable node +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +call node +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +ast.Call +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec</h1> + +<p> +Module implementing a check for the use of 'exec'. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkExecUsed">checkExecUsed</a></td> +<td>Function to check for the use of 'exec'.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkExecUsed" ID="checkExecUsed"></a> +<h2>checkExecUsed</h2> +<b>checkExecUsed</b>(<i>reportError, context, config</i>) + +<p> + Function to check for the use of 'exec'. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug</h1> + +<p> +Module implementing checks for running a flask application with enabled debug. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkFlaskDebug">checkFlaskDebug</a></td> +<td>Function to check for a flask app being run with debug.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkFlaskDebug" ID="checkFlaskDebug"></a> +<h2>checkFlaskDebug</h2> +<b>checkFlaskDebug</b>(<i>reportError, context, config</i>) + +<p> + Function to check for a flask app being run with debug. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces</h1> + +<p> +Module implementing a check for binding to all interfaces. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkBindAllInterfaces">checkBindAllInterfaces</a></td> +<td>Function to check for binding to all interfaces.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkBindAllInterfaces" ID="checkBindAllInterfaces"></a> +<h2>checkBindAllInterfaces</h2> +<b>checkBindAllInterfaces</b>(<i>reportError, context, config</i>) + +<p> + Function to check for binding to all interfaces. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions</h1> + +<p> +Module implementing a check for setting too permissive file permissions. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkFilePermissions">checkFilePermissions</a></td> +<td>Function to check for setting too permissive file permissions.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkFilePermissions" ID="checkFilePermissions"></a> +<h2>checkFilePermissions</h2> +<b>checkFilePermissions</b>(<i>reportError, context, config</i>) + +<p> + Function to check for setting too permissive file permissions. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,158 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword</h1> + +<p> +Module implementing checks for potentially hardcoded passwords. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>RE_CANDIDATES</td></tr><tr><td>RE_WORDS</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkHardcodedPasswordAsDefault">checkHardcodedPasswordAsDefault</a></td> +<td>Function to check for use of hard-coded password argument defaults.</td> +</tr> +<tr> +<td><a href="#checkHardcodedPasswordAsFunctionArg">checkHardcodedPasswordAsFunctionArg</a></td> +<td>Function to check for use of hard-coded password function arguments.</td> +</tr> +<tr> +<td><a href="#checkHardcodedPasswordAsString">checkHardcodedPasswordAsString</a></td> +<td>Function to check for use of hardcoded password strings.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkHardcodedPasswordAsDefault" ID="checkHardcodedPasswordAsDefault"></a> +<h2>checkHardcodedPasswordAsDefault</h2> +<b>checkHardcodedPasswordAsDefault</b>(<i>reportError, context, config</i>) + +<p> + Function to check for use of hard-coded password argument defaults. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkHardcodedPasswordAsFunctionArg" ID="checkHardcodedPasswordAsFunctionArg"></a> +<h2>checkHardcodedPasswordAsFunctionArg</h2> +<b>checkHardcodedPasswordAsFunctionArg</b>(<i>reportError, context, config</i>) + +<p> + Function to check for use of hard-coded password function arguments. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkHardcodedPasswordAsString" ID="checkHardcodedPasswordAsString"></a> +<h2>checkHardcodedPasswordAsString</h2> +<b>checkHardcodedPasswordAsString</b>(<i>reportError, context, config</i>) + +<p> + Function to check for use of hardcoded password strings. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp</h1> + +<p> +Module implementing a check for insecure usage of tmp file/directory. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkHardcodedTmpDirectory">checkHardcodedTmpDirectory</a></td> +<td>Function to check for insecure usage of tmp file/directory.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkHardcodedTmpDirectory" ID="checkHardcodedTmpDirectory"></a> +<h2>checkHardcodedTmpDirectory</h2> +<b>checkHardcodedTmpDirectory</b>(<i>reportError, context, config</i>) + +<p> + Function to check for insecure usage of tmp file/directory. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko</h1> + +<p> +Module implementing a check for shell injection within Paramiko. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkParamikoCalls">checkParamikoCalls</a></td> +<td>Function to check for shell injection within Paramiko.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkParamikoCalls" ID="checkParamikoCalls"></a> +<h2>checkParamikoCalls</h2> +<b>checkParamikoCalls</b>(<i>reportError, context, config</i>) + +<p> + Function to check for shell injection within Paramiko. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,312 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell</h1> + +<p> +Module implementing a check for shell injection. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>fullPathMatchRe</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#_evaluateShellCall">_evaluateShellCall</a></td> +<td>Function to determine the severity of a shell call.</td> +</tr> +<tr> +<td><a href="#checkOtherFunctionWithShell">checkOtherFunctionWithShell</a></td> +<td>Function to check for any function with shell equals true.</td> +</tr> +<tr> +<td><a href="#checkStartProcessWithNoShell">checkStartProcessWithNoShell</a></td> +<td>Function to check for starting a process with no shell.</td> +</tr> +<tr> +<td><a href="#checkStartProcessWithPartialPath">checkStartProcessWithPartialPath</a></td> +<td>Function to check for starting a process with no shell.</td> +</tr> +<tr> +<td><a href="#checkStartProcessWithShell">checkStartProcessWithShell</a></td> +<td>Function to check for starting a process with a shell.</td> +</tr> +<tr> +<td><a href="#checkSubprocessPopenWithShell">checkSubprocessPopenWithShell</a></td> +<td>Function to check for use of popen with shell equals true.</td> +</tr> +<tr> +<td><a href="#checkSubprocessPopenWithoutShell">checkSubprocessPopenWithoutShell</a></td> +<td>Function to check for use of popen without shell equals true.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +<tr> +<td><a href="#hasShell">hasShell</a></td> +<td>Function to check, if the node of the context contains the shell keyword.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="_evaluateShellCall" ID="_evaluateShellCall"></a> +<h2>_evaluateShellCall</h2> +<b>_evaluateShellCall</b>(<i>context</i>) + +<p> + Function to determine the severity of a shell call. +</p> +<dl> + +<dt><i>context</i> (SecurityContext)</dt> +<dd> +context to be inspected +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +severity level (L, M or H) +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkOtherFunctionWithShell" ID="checkOtherFunctionWithShell"></a> +<h2>checkOtherFunctionWithShell</h2> +<b>checkOtherFunctionWithShell</b>(<i>reportError, context, config</i>) + +<p> + Function to check for any function with shell equals true. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkStartProcessWithNoShell" ID="checkStartProcessWithNoShell"></a> +<h2>checkStartProcessWithNoShell</h2> +<b>checkStartProcessWithNoShell</b>(<i>reportError, context, config</i>) + +<p> + Function to check for starting a process with no shell. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkStartProcessWithPartialPath" ID="checkStartProcessWithPartialPath"></a> +<h2>checkStartProcessWithPartialPath</h2> +<b>checkStartProcessWithPartialPath</b>(<i>reportError, context, config</i>) + +<p> + Function to check for starting a process with no shell. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkStartProcessWithShell" ID="checkStartProcessWithShell"></a> +<h2>checkStartProcessWithShell</h2> +<b>checkStartProcessWithShell</b>(<i>reportError, context, config</i>) + +<p> + Function to check for starting a process with a shell. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkSubprocessPopenWithShell" ID="checkSubprocessPopenWithShell"></a> +<h2>checkSubprocessPopenWithShell</h2> +<b>checkSubprocessPopenWithShell</b>(<i>reportError, context, config</i>) + +<p> + Function to check for use of popen with shell equals true. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkSubprocessPopenWithoutShell" ID="checkSubprocessPopenWithoutShell"></a> +<h2>checkSubprocessPopenWithoutShell</h2> +<b>checkSubprocessPopenWithoutShell</b>(<i>reportError, context, config</i>) + +<p> + Function to check for use of popen without shell equals true. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="hasShell" ID="hasShell"></a> +<h2>hasShell</h2> +<b>hasShell</b>(<i>context</i>) + +<p> + Function to check, if the node of the context contains the shell keyword. +</p> +<dl> + +<dt><i>context</i> (SecurityContext)</dt> +<dd> +context to be inspected +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +tuple containing a flag indicating the presence of the 'shell' + argument and flag indicating the value of the 'shell' argument +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, bool) +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,167 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql</h1> + +<p> +Module implementing a check for SQL injection. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>SIMPLE_SQL_RE</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#_checkString">_checkString</a></td> +<td>Function to check a given string against the list of search patterns.</td> +</tr> +<tr> +<td><a href="#_evaluateAst">_evaluateAst</a></td> +<td>Function to analyze the given ast node.</td> +</tr> +<tr> +<td><a href="#checkHardcodedSqlExpressions">checkHardcodedSqlExpressions</a></td> +<td>Function to check for SQL injection.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="_checkString" ID="_checkString"></a> +<h2>_checkString</h2> +<b>_checkString</b>(<i>data</i>) + +<p> + Function to check a given string against the list of search patterns. +</p> +<dl> + +<dt><i>data</i> (str)</dt> +<dd> +string data to be checked +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating a match +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="_evaluateAst" ID="_evaluateAst"></a> +<h2>_evaluateAst</h2> +<b>_evaluateAst</b>(<i>node</i>) + +<p> + Function to analyze the given ast node. +</p> +<dl> + +<dt><i>node</i> (ast.Str)</dt> +<dd> +ast node to be analyzed +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +tuple containing a flag indicating an execute call and + the resulting statement +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkHardcodedSqlExpressions" ID="checkHardcodedSqlExpressions"></a> +<h2>checkHardcodedSqlExpressions</h2> +<b>checkHardcodedSqlExpressions</b>(<i>reportError, context, config</i>) + +<p> + Function to check for SQL injection. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard</h1> + +<p> +Module implementing a check for use of wildcard injection. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkLinuxCommandsWildcardInjection">checkLinuxCommandsWildcardInjection</a></td> +<td>Function to check for use of wildcard injection.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkLinuxCommandsWildcardInjection" ID="checkLinuxCommandsWildcardInjection"></a> +<h2>checkLinuxCommandsWildcardInjection</h2> +<b>checkLinuxCommandsWildcardInjection</b>(<i>reportError, context, config</i>) + +<p> + Function to check for use of wildcard injection. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,102 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew</h1> + +<p> +Module implementing a check for use of insecure md4, md5, or sha1 hash +functions in hashlib.new(). +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkHashlibNew">checkHashlibNew</a></td> +<td>Function to check for use of insecure md4, md5, or sha1 hash functions in hashlib.new().</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkHashlibNew" ID="checkHashlibNew"></a> +<h2>checkHashlibNew</h2> +<b>checkHashlibNew</b>(<i>reportError, context, config</i>) + +<p> + Function to check for use of insecure md4, md5, or sha1 hash functions + in hashlib.new(). +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,158 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls</h1> + +<p> +Module implementing a check for use of SSL/TLS with insecure protocols. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkInsecureSslDefaults">checkInsecureSslDefaults</a></td> +<td>Function to check for SSL use with insecure defaults specified.</td> +</tr> +<tr> +<td><a href="#checkInsecureSslProtocolVersion">checkInsecureSslProtocolVersion</a></td> +<td>Function to check for use of insecure SSL protocol version.</td> +</tr> +<tr> +<td><a href="#checkSslWithoutVersion">checkSslWithoutVersion</a></td> +<td>Function to check for SSL use with no version specified.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkInsecureSslDefaults" ID="checkInsecureSslDefaults"></a> +<h2>checkInsecureSslDefaults</h2> +<b>checkInsecureSslDefaults</b>(<i>reportError, context, config</i>) + +<p> + Function to check for SSL use with insecure defaults specified. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkInsecureSslProtocolVersion" ID="checkInsecureSslProtocolVersion"></a> +<h2>checkInsecureSslProtocolVersion</h2> +<b>checkInsecureSslProtocolVersion</b>(<i>reportError, context, config</i>) + +<p> + Function to check for use of insecure SSL protocol version. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkSslWithoutVersion" ID="checkSslWithoutVersion"></a> +<h2>checkSslWithoutVersion</h2> +<b>checkSslWithoutVersion</b>(<i>reportError, context, config</i>) + +<p> + Function to check for SSL use with no version specified. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates</h1> + +<p> +Module implementing a check for not auto escaping in jinja2. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkJinja2Autoescape">checkJinja2Autoescape</a></td> +<td>Function to check for not auto escaping in jinja2.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkJinja2Autoescape" ID="checkJinja2Autoescape"></a> +<h2>checkJinja2Autoescape</h2> +<b>checkJinja2Autoescape</b>(<i>reportError, context, config</i>) + +<p> + Function to check for not auto escaping in jinja2. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates</h1> + +<p> +Module implementing a check for use of mako templates. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkMakoTemplateUsage">checkMakoTemplateUsage</a></td> +<td>Function to check for use of mako templates.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkMakoTemplateUsage" ID="checkMakoTemplateUsage"></a> +<h2>checkMakoTemplateUsage</h2> +<b>checkMakoTemplateUsage</b>(<i>reportError, context, config</i>) + +<p> + Function to check for use of mako templates. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification</h1> + +<p> +Module implementing a check for use of mako templates. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkSshNoHostKeyVerification">checkSshNoHostKeyVerification</a></td> +<td>Function to check for use of mako templates.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkSshNoHostKeyVerification" ID="checkSshNoHostKeyVerification"></a> +<h2>checkSshNoHostKeyVerification</h2> +<b>checkSshNoHostKeyVerification</b>(<i>reportError, context, config</i>) + +<p> + Function to check for use of mako templates. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,129 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept</h1> + +<p> +Module implementing checks for insecure except blocks. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkTryExceptContinue">checkTryExceptContinue</a></td> +<td>Function to check for a continue in the except block.</td> +</tr> +<tr> +<td><a href="#checkTryExceptPass">checkTryExceptPass</a></td> +<td>Function to check for a pass in the except block.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkTryExceptContinue" ID="checkTryExceptContinue"></a> +<h2>checkTryExceptContinue</h2> +<b>checkTryExceptContinue</b>(<i>reportError, context, config</i>) + +<p> + Function to check for a continue in the except block. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkTryExceptPass" ID="checkTryExceptPass"></a> +<h2>checkTryExceptPass</h2> +<b>checkTryExceptPass</b>(<i>reportError, context, config</i>) + +<p> + Function to check for a pass in the except block. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,231 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey</h1> + +<p> +Module implementing checks for weak cryptographic key use. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#_classifyKeySize">_classifyKeySize</a></td> +<td>Function to classify a key and report an error if insufficient.</td> +</tr> +<tr> +<td><a href="#_weakCryptoKeySizeCryptography">_weakCryptoKeySizeCryptography</a></td> +<td>Function to check 'cryptography.hazmat' for weak key use.</td> +</tr> +<tr> +<td><a href="#_weakCryptoKeySizePycrypto">_weakCryptoKeySizePycrypto</a></td> +<td>Function to check 'pycrypto' for weak key use.</td> +</tr> +<tr> +<td><a href="#checkWeakCryptographicKey">checkWeakCryptographicKey</a></td> +<td>Function to check for weak cryptographic key use.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="_classifyKeySize" ID="_classifyKeySize"></a> +<h2>_classifyKeySize</h2> +<b>_classifyKeySize</b>(<i>reportError, config, keyType, keySize, node</i>) + +<p> + Function to classify a key and report an error if insufficient. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +<dt><i>keyType</i> (str)</dt> +<dd> +type of key to be classified ('DSA', 'RSA', 'EC') +</dd> +<dt><i>keySize</i> (int)</dt> +<dd> +size of the key to be classified +</dd> +<dt><i>node</i> (ast.Call)</dt> +<dd> +node the key was extracted from (needed for reporting) +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating an error was reported +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="_weakCryptoKeySizeCryptography" ID="_weakCryptoKeySizeCryptography"></a> +<h2>_weakCryptoKeySizeCryptography</h2> +<b>_weakCryptoKeySizeCryptography</b>(<i>reportError, context, config</i>) + +<p> + Function to check 'cryptography.hazmat' for weak key use. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating an error was reported +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="_weakCryptoKeySizePycrypto" ID="_weakCryptoKeySizePycrypto"></a> +<h2>_weakCryptoKeySizePycrypto</h2> +<b>_weakCryptoKeySizePycrypto</b>(<i>reportError, context, config</i>) + +<p> + Function to check 'pycrypto' for weak key use. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating an error was reported +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="checkWeakCryptographicKey" ID="checkWeakCryptographicKey"></a> +<h2>checkWeakCryptographicKey</h2> +<b>checkWeakCryptographicKey</b>(<i>reportError, context, config</i>) + +<p> + Function to check for weak cryptographic key use. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad</h1> + +<p> +Module implementing checks for the use of yaml load functions. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#checkYamlLoad">checkYamlLoad</a></td> +<td>Function to check for the use of of yaml load functions.</td> +</tr> +<tr> +<td><a href="#getChecks">getChecks</a></td> +<td>Public method to get a dictionary with checks handled by this module.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="checkYamlLoad" ID="checkYamlLoad"></a> +<h2>checkYamlLoad</h2> +<b>checkYamlLoad</b>(<i>reportError, context, config</i>) + +<p> + Function to check for the use of of yaml load functions. +</p> +<dl> + +<dt><i>reportError</i> (func)</dt> +<dd> +function to be used to report errors +</dd> +<dt><i>context</i> (SecurityContext)</dt> +<dd> +security context object +</dd> +<dt><i>config</i> (dict)</dt> +<dd> +dictionary with configuration data +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getChecks" ID="getChecks"></a> +<h2>getChecks</h2> +<b>getChecks</b>(<i></i>) + +<p> + Public method to get a dictionary with checks handled by this module. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing checker lists containing checker function and + list of codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,261 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker</h1> + +<p> +Module implementing the security checker. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#SecurityChecker">SecurityChecker</a></td> +<td>Class implementing a checker for security issues.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="SecurityChecker" ID="SecurityChecker"></a> +<h2>SecurityChecker</h2> + +<p> + Class implementing a checker for security issues. +</p> +<h3>Derived from</h3> +object +<h3>Class Attributes</h3> + +<table> +<tr><td>Codes</td></tr> +</table> +<h3>Class Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> + +<table> + +<tr> +<td><a href="#SecurityChecker.__init__">SecurityChecker</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#SecurityChecker.__generateTree">__generateTree</a></td> +<td>Private method to generate an AST for our source.</td> +</tr> +<tr> +<td><a href="#SecurityChecker.__ignoreCode">__ignoreCode</a></td> +<td>Private method to check if the message code should be ignored.</td> +</tr> +<tr> +<td><a href="#SecurityChecker.__reportInvalidSyntax">__reportInvalidSyntax</a></td> +<td>Private method to report a syntax error.</td> +</tr> +<tr> +<td><a href="#SecurityChecker.getConfig">getConfig</a></td> +<td>Public method to get the configuration dictionary.</td> +</tr> +<tr> +<td><a href="#SecurityChecker.reportError">reportError</a></td> +<td>Public method to record an issue.</td> +</tr> +<tr> +<td><a href="#SecurityChecker.run">run</a></td> +<td>Public method to check the given source against security related conditions.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="SecurityChecker.__init__" ID="SecurityChecker.__init__"></a> +<h4>SecurityChecker (Constructor)</h4> +<b>SecurityChecker</b>(<i>source, filename, select, ignore, expected, repeat, args</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>source</i> (list of str)</dt> +<dd> +source code to be checked +</dd> +<dt><i>filename</i> (str)</dt> +<dd> +name of the source file +</dd> +<dt><i>select</i> (list of str)</dt> +<dd> +list of selected codes +</dd> +<dt><i>ignore</i> (list of str)</dt> +<dd> +list of codes to be ignored +</dd> +<dt><i>expected</i> (list of str)</dt> +<dd> +list of expected codes +</dd> +<dt><i>repeat</i> (bool)</dt> +<dd> +flag indicating to report each occurrence of a code +</dd> +<dt><i>args</i> (dict)</dt> +<dd> +dictionary of arguments for the security checks +</dd> +</dl> +<a NAME="SecurityChecker.__generateTree" ID="SecurityChecker.__generateTree"></a> +<h4>SecurityChecker.__generateTree</h4> +<b>__generateTree</b>(<i></i>) + +<p> + Private method to generate an AST for our source. +</p> +<dl> +<dt>Returns:</dt> +<dd> +generated AST +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +ast.AST +</dd> +</dl> +<a NAME="SecurityChecker.__ignoreCode" ID="SecurityChecker.__ignoreCode"></a> +<h4>SecurityChecker.__ignoreCode</h4> +<b>__ignoreCode</b>(<i>code</i>) + +<p> + Private method to check if the message code should be ignored. +</p> +<dl> + +<dt><i>code</i> (str)</dt> +<dd> +message code to check for +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating to ignore the given code +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="SecurityChecker.__reportInvalidSyntax" ID="SecurityChecker.__reportInvalidSyntax"></a> +<h4>SecurityChecker.__reportInvalidSyntax</h4> +<b>__reportInvalidSyntax</b>(<i></i>) + +<p> + Private method to report a syntax error. +</p> +<a NAME="SecurityChecker.getConfig" ID="SecurityChecker.getConfig"></a> +<h4>SecurityChecker.getConfig</h4> +<b>getConfig</b>(<i></i>) + +<p> + Public method to get the configuration dictionary. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary containing the configuration +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl> +<a NAME="SecurityChecker.reportError" ID="SecurityChecker.reportError"></a> +<h4>SecurityChecker.reportError</h4> +<b>reportError</b>(<i>lineNumber, offset, code, severity, confidence, *args</i>) + +<p> + Public method to record an issue. +</p> +<dl> + +<dt><i>lineNumber</i> (int)</dt> +<dd> +line number of the issue +</dd> +<dt><i>offset</i> (int)</dt> +<dd> +position within line of the issue +</dd> +<dt><i>code</i> (str)</dt> +<dd> +message code +</dd> +<dt><i>severity</i> (str)</dt> +<dd> +severity code (H = high, M = medium, L = low, + U = undefined) +</dd> +<dt><i>confidence</i> (str)</dt> +<dd> +confidence code (H = high, M = medium, L = low, + U = undefined) +</dd> +<dt><i>args</i> (list)</dt> +<dd> +arguments for the message +</dd> +</dl> +<a NAME="SecurityChecker.run" ID="SecurityChecker.run"></a> +<h4>SecurityChecker.run</h4> +<b>run</b>(<i></i>) + +<p> + Public method to check the given source against security related + conditions. +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,670 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext</h1> + +<p> +Module implementing a context class for security related checks. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#SecurityContext">SecurityContext</a></td> +<td>Class implementing a context class for security related checks.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="SecurityContext" ID="SecurityContext"></a> +<h2>SecurityContext</h2> + +<p> + Class implementing a context class for security related checks. +</p> +<h3>Derived from</h3> +object +<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="#SecurityContext.__init__">SecurityContext</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#SecurityContext.__getLiteralValue">__getLiteralValue</a></td> +<td>Private method to turn AST literals into native Python types.</td> +</tr> +<tr> +<td><a href="#SecurityContext.__repr__">__repr__</a></td> +<td>Special method to generate representation of object for printing or interactive use.</td> +</tr> +<tr> +<td><a href="#SecurityContext.bytesVal">bytesVal</a></td> +<td>Public method to get the value of a standalone bytes object.</td> +</tr> +<tr> +<td><a href="#SecurityContext.callArgs">callArgs</a></td> +<td>Public method to get a list of function args.</td> +</tr> +<tr> +<td><a href="#SecurityContext.callArgsCount">callArgsCount</a></td> +<td>Public method to get the number of args a function call has.</td> +</tr> +<tr> +<td><a href="#SecurityContext.callFunctionName">callFunctionName</a></td> +<td>Public method to get the name (not FQ) of a function call.</td> +</tr> +<tr> +<td><a href="#SecurityContext.callFunctionNameQual">callFunctionNameQual</a></td> +<td>Public method to get the FQ name of a function call.</td> +</tr> +<tr> +<td><a href="#SecurityContext.callKeywords">callKeywords</a></td> +<td>Public method to get a dictionary of keyword parameters.</td> +</tr> +<tr> +<td><a href="#SecurityContext.checkCallArgValue">checkCallArgValue</a></td> +<td>Public method to check for a value of a named argument in a function call.</td> +</tr> +<tr> +<td><a href="#SecurityContext.functionDefDefaultsQual">functionDefDefaultsQual</a></td> +<td>Public method to get a list of fully qualified default values in a function def.</td> +</tr> +<tr> +<td><a href="#SecurityContext.getCallArgAtPosition">getCallArgAtPosition</a></td> +<td>Public method to get a positional argument at the specified position (if it exists).</td> +</tr> +<tr> +<td><a href="#SecurityContext.getCallArgValue">getCallArgValue</a></td> +<td>Public method to get the value of a named argument in a function call.</td> +</tr> +<tr> +<td><a href="#SecurityContext.getLinenoForCallArg">getLinenoForCallArg</a></td> +<td>Public method to get the line number for a specific named argument.</td> +</tr> +<tr> +<td><a href="#SecurityContext.getOffsetForCallArg">getOffsetForCallArg</a></td> +<td>Public method to get the offset for a specific named argument.</td> +</tr> +<tr> +<td><a href="#SecurityContext.isModuleBeingImported">isModuleBeingImported</a></td> +<td>Public method to check for the given module is currently being imported.</td> +</tr> +<tr> +<td><a href="#SecurityContext.isModuleImportedExact">isModuleImportedExact</a></td> +<td>Public method to check if a given module has been imported; only exact matches.</td> +</tr> +<tr> +<td><a href="#SecurityContext.isModuleImportedLike">isModuleImportedLike</a></td> +<td>Public method to check if a given module has been imported; given module exists.</td> +</tr> +<tr> +<td><a href="#SecurityContext.node">node</a></td> +<td>Public method to get the raw AST node associated with the context.</td> +</tr> +<tr> +<td><a href="#SecurityContext.statement">statement</a></td> +<td>Public method to get the raw AST for the current statement.</td> +</tr> +<tr> +<td><a href="#SecurityContext.stringVal">stringVal</a></td> +<td>Public method to get the value of a standalone unicode or string object.</td> +</tr> +<tr> +<td><a href="#SecurityContext.stringValAsEscapedBytes">stringValAsEscapedBytes</a></td> +<td>Public method to get the escaped value of the object.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="SecurityContext.__init__" ID="SecurityContext.__init__"></a> +<h4>SecurityContext (Constructor)</h4> +<b>SecurityContext</b>(<i>contextObject=None</i>) + +<p> + Constructor +</p> +<p> + Initialize the class with a context dictionary or an empty + dictionary. +</p> +<dl> + +<dt><i>contextObject</i> (dict)</dt> +<dd> +context dictionary to be used to populate the + class +</dd> +</dl> +<a NAME="SecurityContext.__getLiteralValue" ID="SecurityContext.__getLiteralValue"></a> +<h4>SecurityContext.__getLiteralValue</h4> +<b>__getLiteralValue</b>(<i>literal</i>) + +<p> + Private method to turn AST literals into native Python types. +</p> +<dl> + +<dt><i>literal</i> (ast.AST)</dt> +<dd> +AST literal to be converted +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +converted Python object +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +Any +</dd> +</dl> +<a NAME="SecurityContext.__repr__" ID="SecurityContext.__repr__"></a> +<h4>SecurityContext.__repr__</h4> +<b>__repr__</b>(<i></i>) + +<p> + Special method to generate representation of object for printing or + interactive use. +</p> +<dl> +<dt>Returns:</dt> +<dd> +string representation of the object +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<a NAME="SecurityContext.bytesVal" ID="SecurityContext.bytesVal"></a> +<h4>SecurityContext.bytesVal</h4> +<b>bytesVal</b>(<i></i>) + +<p> + Public method to get the value of a standalone bytes object. +</p> +<dl> +<dt>Returns:</dt> +<dd> +value of a standalone bytes object +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bytes +</dd> +</dl> +<a NAME="SecurityContext.callArgs" ID="SecurityContext.callArgs"></a> +<h4>SecurityContext.callArgs</h4> +<b>callArgs</b>(<i></i>) + +<p> + Public method to get a list of function args. +</p> +<dl> +<dt>Returns:</dt> +<dd> +list of function args +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +list +</dd> +</dl> +<a NAME="SecurityContext.callArgsCount" ID="SecurityContext.callArgsCount"></a> +<h4>SecurityContext.callArgsCount</h4> +<b>callArgsCount</b>(<i></i>) + +<p> + Public method to get the number of args a function call has. +</p> +<dl> +<dt>Returns:</dt> +<dd> +number of args a function call has +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +int +</dd> +</dl> +<a NAME="SecurityContext.callFunctionName" ID="SecurityContext.callFunctionName"></a> +<h4>SecurityContext.callFunctionName</h4> +<b>callFunctionName</b>(<i></i>) + +<p> + Public method to get the name (not FQ) of a function call. +</p> +<dl> +<dt>Returns:</dt> +<dd> +name (not FQ) of a function call +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<a NAME="SecurityContext.callFunctionNameQual" ID="SecurityContext.callFunctionNameQual"></a> +<h4>SecurityContext.callFunctionNameQual</h4> +<b>callFunctionNameQual</b>(<i></i>) + +<p> + Public method to get the FQ name of a function call. +</p> +<dl> +<dt>Returns:</dt> +<dd> +FQ name of a function call +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<a NAME="SecurityContext.callKeywords" ID="SecurityContext.callKeywords"></a> +<h4>SecurityContext.callKeywords</h4> +<b>callKeywords</b>(<i></i>) + +<p> + Public method to get a dictionary of keyword parameters. +</p> +<dl> +<dt>Returns:</dt> +<dd> +dictionary of keyword parameters +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl> +<a NAME="SecurityContext.checkCallArgValue" ID="SecurityContext.checkCallArgValue"></a> +<h4>SecurityContext.checkCallArgValue</h4> +<b>checkCallArgValue</b>(<i>argumentName, argumentValues=None</i>) + +<p> + Public method to check for a value of a named argument in a function + call. +</p> +<dl> + +<dt><i>argumentName</i> (str)</dt> +<dd> +name of the argument to be checked +</dd> +<dt><i>argumentValues</i> (Any or list of Any)</dt> +<dd> +value or list of values to test against +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +True if argument found and matched, False if found and not + matched, None if argument not found at all +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool or None +</dd> +</dl> +<a NAME="SecurityContext.functionDefDefaultsQual" ID="SecurityContext.functionDefDefaultsQual"></a> +<h4>SecurityContext.functionDefDefaultsQual</h4> +<b>functionDefDefaultsQual</b>(<i></i>) + +<p> + Public method to get a list of fully qualified default values in a + function def. +</p> +<dl> +<dt>Returns:</dt> +<dd> +list of fully qualified default values in a function def +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +list +</dd> +</dl> +<a NAME="SecurityContext.getCallArgAtPosition" ID="SecurityContext.getCallArgAtPosition"></a> +<h4>SecurityContext.getCallArgAtPosition</h4> +<b>getCallArgAtPosition</b>(<i>positionNum</i>) + +<p> + Public method to get a positional argument at the specified position + (if it exists). +</p> +<dl> + +<dt><i>positionNum</i> (int)</dt> +<dd> +index of the argument to get the value for +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +value of the argument at the specified position if it exists +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +Any or None +</dd> +</dl> +<a NAME="SecurityContext.getCallArgValue" ID="SecurityContext.getCallArgValue"></a> +<h4>SecurityContext.getCallArgValue</h4> +<b>getCallArgValue</b>(<i>argumentName</i>) + +<p> + Public method to get the value of a named argument in a function call. +</p> +<dl> + +<dt><i>argumentName</i> (str)</dt> +<dd> +name of the argument to get the value for +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +value of the named argument +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +Any +</dd> +</dl> +<a NAME="SecurityContext.getLinenoForCallArg" ID="SecurityContext.getLinenoForCallArg"></a> +<h4>SecurityContext.getLinenoForCallArg</h4> +<b>getLinenoForCallArg</b>(<i>argumentName</i>) + +<p> + Public method to get the line number for a specific named argument. +</p> +<dl> + +<dt><i>argumentName</i> (str)</dt> +<dd> +name of the argument to get the line number for +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +line number of the found argument or -1 +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +int +</dd> +</dl> +<a NAME="SecurityContext.getOffsetForCallArg" ID="SecurityContext.getOffsetForCallArg"></a> +<h4>SecurityContext.getOffsetForCallArg</h4> +<b>getOffsetForCallArg</b>(<i>argumentName</i>) + +<p> + Public method to get the offset for a specific named argument. +</p> +<dl> + +<dt><i>argumentName</i> (str)</dt> +<dd> +name of the argument to get the line number for +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +offset of the found argument or -1 +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +int +</dd> +</dl> +<a NAME="SecurityContext.isModuleBeingImported" ID="SecurityContext.isModuleBeingImported"></a> +<h4>SecurityContext.isModuleBeingImported</h4> +<b>isModuleBeingImported</b>(<i>module</i>) + +<p> + Public method to check for the given module is currently being + imported. +</p> +<dl> + +<dt><i>module</i> (str)</dt> +<dd> +module name to look for +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating the given module was found +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="SecurityContext.isModuleImportedExact" ID="SecurityContext.isModuleImportedExact"></a> +<h4>SecurityContext.isModuleImportedExact</h4> +<b>isModuleImportedExact</b>(<i>module</i>) + +<p> + Public method to check if a given module has been imported; only exact + matches. +</p> +<dl> + +<dt><i>module</i> (str)</dt> +<dd> +module name to look for +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating the given module was found +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="SecurityContext.isModuleImportedLike" ID="SecurityContext.isModuleImportedLike"></a> +<h4>SecurityContext.isModuleImportedLike</h4> +<b>isModuleImportedLike</b>(<i>module</i>) + +<p> + Public method to check if a given module has been imported; given + module exists. +</p> +<dl> + +<dt><i>module</i> (str)</dt> +<dd> +module name to look for +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating the given module was found +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="SecurityContext.node" ID="SecurityContext.node"></a> +<h4>SecurityContext.node</h4> +<b>node</b>(<i></i>) + +<p> + Public method to get the raw AST node associated with the context. +</p> +<dl> +<dt>Returns:</dt> +<dd> +raw AST node associated with the context +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +ast.AST +</dd> +</dl> +<a NAME="SecurityContext.statement" ID="SecurityContext.statement"></a> +<h4>SecurityContext.statement</h4> +<b>statement</b>(<i></i>) + +<p> + Public method to get the raw AST for the current statement. +</p> +<dl> +<dt>Returns:</dt> +<dd> +raw AST for the current statement +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +ast.AST +</dd> +</dl> +<a NAME="SecurityContext.stringVal" ID="SecurityContext.stringVal"></a> +<h4>SecurityContext.stringVal</h4> +<b>stringVal</b>(<i></i>) + +<p> + Public method to get the value of a standalone unicode or string + object. +</p> +<dl> +<dt>Returns:</dt> +<dd> +value of a standalone unicode or string object +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<a NAME="SecurityContext.stringValAsEscapedBytes" ID="SecurityContext.stringValAsEscapedBytes"></a> +<h4>SecurityContext.stringValAsEscapedBytes</h4> +<b>stringValAsEscapedBytes</b>(<i></i>) + +<p> + Public method to get the escaped value of the object. +</p> +<p> + Turn the value of a string or bytes object into a byte sequence with + unknown, control, and \\ characters escaped. +</p> +<p> + This function should be used when looking for a known sequence in a + potentially badly encoded string in the code. +</p> +<dl> +<dt>Returns:</dt> +<dd> +sequence of printable ascii bytes representing original string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityDefaults.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,44 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityDefaults</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityDefaults</h1> + +<p> +Module implementing the default values for some check modules. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>SecurityDefaults</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,380 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor</h1> + +<p> +Module implementing an AST node visitor for security checks. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#SecurityNodeVisitor">SecurityNodeVisitor</a></td> +<td>Class implementing an AST node visitor for security checks.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="SecurityNodeVisitor" ID="SecurityNodeVisitor"></a> +<h2>SecurityNodeVisitor</h2> + +<p> + Class implementing an AST node visitor for security checks. +</p> +<h3>Derived from</h3> +object +<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="#SecurityNodeVisitor.__init__">SecurityNodeVisitor</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.__postVisit">__postVisit</a></td> +<td>Private method to clean up after a node was visited.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.__preVisit">__preVisit</a></td> +<td>Private method to set up a context for the visit method.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.__runChecks">__runChecks</a></td> +<td>Private method to run all enabled checks for a given check type.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.generic_visit">generic_visit</a></td> +<td>Public method to drive the node visitor.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.visit">visit</a></td> +<td>Public method to inspected an AST node.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.visit_Bytes">visit_Bytes</a></td> +<td>Public method defining a visitor for Bytes nodes.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.visit_Call">visit_Call</a></td> +<td>Public method defining a visitor for AST Call nodes.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.visit_ClassDef">visit_ClassDef</a></td> +<td>Public method defining a visitor for AST ClassDef nodes.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.visit_Constant">visit_Constant</a></td> +<td>Public method defining a visitor for Constant nodes.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.visit_FunctionDef">visit_FunctionDef</a></td> +<td>Public method defining a visitor for AST FunctionDef nodes.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.visit_Import">visit_Import</a></td> +<td>Public method defining a visitor for AST Import nodes.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.visit_ImportFrom">visit_ImportFrom</a></td> +<td>Public method defining a visitor for AST Import nodes.</td> +</tr> +<tr> +<td><a href="#SecurityNodeVisitor.visit_Str">visit_Str</a></td> +<td>Public method defining a visitor for String nodes.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="SecurityNodeVisitor.__init__" ID="SecurityNodeVisitor.__init__"></a> +<h4>SecurityNodeVisitor (Constructor)</h4> +<b>SecurityNodeVisitor</b>(<i>checker, secCheckers, filename</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>checker</i> (SecurityChecker)</dt> +<dd> +reference to the main security checker object +</dd> +<dt><i>secCheckers</i> (dict)</dt> +<dd> +dictionary containing the available checker routines +</dd> +<dt><i>filename</i> (str)</dt> +<dd> +name of the checked file +</dd> +</dl> +<a NAME="SecurityNodeVisitor.__postVisit" ID="SecurityNodeVisitor.__postVisit"></a> +<h4>SecurityNodeVisitor.__postVisit</h4> +<b>__postVisit</b>(<i>node</i>) + +<p> + Private method to clean up after a node was visited. +</p> +<dl> + +<dt><i>node</i> (ast.AST)</dt> +<dd> +AST node that was visited +</dd> +</dl> +<a NAME="SecurityNodeVisitor.__preVisit" ID="SecurityNodeVisitor.__preVisit"></a> +<h4>SecurityNodeVisitor.__preVisit</h4> +<b>__preVisit</b>(<i>node</i>) + +<p> + Private method to set up a context for the visit method. +</p> +<dl> + +<dt><i>node</i> (ast.AST)</dt> +<dd> +node to base the context on +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating to visit the node +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="SecurityNodeVisitor.__runChecks" ID="SecurityNodeVisitor.__runChecks"></a> +<h4>SecurityNodeVisitor.__runChecks</h4> +<b>__runChecks</b>(<i>checkType</i>) + +<p> + Private method to run all enabled checks for a given check type. +</p> +<dl> + +<dt><i>checkType</i> (str)</dt> +<dd> +type of checks to be run +</dd> +</dl> +<a NAME="SecurityNodeVisitor.generic_visit" ID="SecurityNodeVisitor.generic_visit"></a> +<h4>SecurityNodeVisitor.generic_visit</h4> +<b>generic_visit</b>(<i>node</i>) + +<p> + Public method to drive the node visitor. +</p> +<dl> + +<dt><i>node</i> (ast.AST)</dt> +<dd> +node to be inspected +</dd> +</dl> +<a NAME="SecurityNodeVisitor.visit" ID="SecurityNodeVisitor.visit"></a> +<h4>SecurityNodeVisitor.visit</h4> +<b>visit</b>(<i>node</i>) + +<p> + Public method to inspected an AST node. +</p> +<dl> + +<dt><i>node</i> (ast.AST)</dt> +<dd> +AST node to be inspected +</dd> +</dl> +<a NAME="SecurityNodeVisitor.visit_Bytes" ID="SecurityNodeVisitor.visit_Bytes"></a> +<h4>SecurityNodeVisitor.visit_Bytes</h4> +<b>visit_Bytes</b>(<i>node</i>) + +<p> + Public method defining a visitor for Bytes nodes. +</p> +<p> + This adds relevant information about node to + the context for use in tests which inspect strings. +</p> +<dl> + +<dt><i>node</i> (ast.Bytes)</dt> +<dd> +reference to the node being inspected +</dd> +</dl> +<a NAME="SecurityNodeVisitor.visit_Call" ID="SecurityNodeVisitor.visit_Call"></a> +<h4>SecurityNodeVisitor.visit_Call</h4> +<b>visit_Call</b>(<i>node</i>) + +<p> + Public method defining a visitor for AST Call nodes. +</p> +<p> + Add relevant information about the node to the context for use in tests + which inspect function calls. +</p> +<dl> + +<dt><i>node</i> (ast.Call)</dt> +<dd> +reference to the node being inspected +</dd> +</dl> +<a NAME="SecurityNodeVisitor.visit_ClassDef" ID="SecurityNodeVisitor.visit_ClassDef"></a> +<h4>SecurityNodeVisitor.visit_ClassDef</h4> +<b>visit_ClassDef</b>(<i>node</i>) + +<p> + Public method defining a visitor for AST ClassDef nodes. +</p> +<p> + Add class name to current namespace for all descendants. +</p> +<dl> + +<dt><i>node</i> (ast.ClassDef)</dt> +<dd> +reference to the node being inspected +</dd> +</dl> +<a NAME="SecurityNodeVisitor.visit_Constant" ID="SecurityNodeVisitor.visit_Constant"></a> +<h4>SecurityNodeVisitor.visit_Constant</h4> +<b>visit_Constant</b>(<i>node</i>) + +<p> + Public method defining a visitor for Constant nodes. +</p> +<p> + This calls the appropriate method for the node type. + It maintains compatibility with <3.6 and 3.8+ +</p> +<dl> + +<dt><i>node</i> (ast.Constant)</dt> +<dd> +reference to the node being inspected +</dd> +</dl> +<a NAME="SecurityNodeVisitor.visit_FunctionDef" ID="SecurityNodeVisitor.visit_FunctionDef"></a> +<h4>SecurityNodeVisitor.visit_FunctionDef</h4> +<b>visit_FunctionDef</b>(<i>node</i>) + +<p> + Public method defining a visitor for AST FunctionDef nodes. +</p> +<p> + Add relevant information about the node to the context for use in tests + which inspect function definitions. Add the function name to the + current namespace for all descendants. +</p> +<dl> + +<dt><i>node</i> (ast.FunctionDef)</dt> +<dd> +reference to the node being inspected +</dd> +</dl> +<a NAME="SecurityNodeVisitor.visit_Import" ID="SecurityNodeVisitor.visit_Import"></a> +<h4>SecurityNodeVisitor.visit_Import</h4> +<b>visit_Import</b>(<i>node</i>) + +<p> + Public method defining a visitor for AST Import nodes. +</p> +<dl> + +<dt><i>node</i> (ast.Import)</dt> +<dd> +reference to the node being inspected +</dd> +</dl> +<a NAME="SecurityNodeVisitor.visit_ImportFrom" ID="SecurityNodeVisitor.visit_ImportFrom"></a> +<h4>SecurityNodeVisitor.visit_ImportFrom</h4> +<b>visit_ImportFrom</b>(<i>node</i>) + +<p> + Public method defining a visitor for AST Import nodes. +</p> +<p> + This adds relevant information about the node to + the context for use in tests which inspect imports. +</p> +<dl> + +<dt><i>node</i> (ast.ImportFrom)</dt> +<dd> +reference to the node being inspected +</dd> +</dl> +<a NAME="SecurityNodeVisitor.visit_Str" ID="SecurityNodeVisitor.visit_Str"></a> +<h4>SecurityNodeVisitor.visit_Str</h4> +<b>visit_Str</b>(<i>node</i>) + +<p> + Public method defining a visitor for String nodes. +</p> +<p> + This adds relevant information about node to + the context for use in tests which inspect strings. +</p> +<dl> + +<dt><i>node</i> (ast.Str)</dt> +<dd> +reference to the node being inspected +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,565 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils</h1> + +<p> +Module implementing utility functions used by the security checks. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#InvalidModulePath">InvalidModulePath</a></td> +<td>Class defining an exception for invalid module paths.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#_get">_get</a></td> +<td></td> +</tr> +<tr> +<td><a href="#concatString">concatString</a></td> +<td>Function to build a string from an ast.BinOp chain.</td> +</tr> +<tr> +<td><a href="#deepgetattr">deepgetattr</a></td> +<td>Function to recurs through an attribute chain to get the ultimate value.</td> +</tr> +<tr> +<td><a href="#escapedBytesRepresentation">escapedBytesRepresentation</a></td> +<td>Function to escape bytes for comparison with other strings.</td> +</tr> +<tr> +<td><a href="#getAttrQualName">getAttrQualName</a></td> +<td>Function to get a the full name for the attribute node.</td> +</tr> +<tr> +<td><a href="#getCallName">getCallName</a></td> +<td>Function to extract the call name from an ast.Call node.</td> +</tr> +<tr> +<td><a href="#getCalledName">getCalledName</a></td> +<td>Function to get the function name from an ast.Call node.</td> +</tr> +<tr> +<td><a href="#getModuleQualnameFromPath">getModuleQualnameFromPath</a></td> +<td>Function to get the module's qualified name by analysis of the path.</td> +</tr> +<tr> +<td><a href="#getQualAttr">getQualAttr</a></td> +<td>Function to extract the qualified name from an ast.Attribute node.</td> +</tr> +<tr> +<td><a href="#linerange">linerange</a></td> +<td>Function to get line number range from a node.</td> +</tr> +<tr> +<td><a href="#linerange_fix">linerange_fix</a></td> +<td>Function to get a line number range working around a known Python bug with multi-line strings.</td> +</tr> +<tr> +<td><a href="#namespacePathJoin">namespacePathJoin</a></td> +<td>Function to extend a given namespace path.</td> +</tr> +<tr> +<td><a href="#namespacePathSplit">namespacePathSplit</a></td> +<td>Function to split a namespace path into a head and tail.</td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="InvalidModulePath" ID="InvalidModulePath"></a> +<h2>InvalidModulePath</h2> + +<p> + Class defining an exception for invalid module paths. +</p> +<h3>Derived from</h3> +Exception +<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>None</td></tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="_get" ID="_get"></a> +<h2>_get</h2> +<b>_get</b>(<i>node, bits, stop=None</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="concatString" ID="concatString"></a> +<h2>concatString</h2> +<b>concatString</b>(<i>node, stop=None</i>) + +<p> + Function to build a string from an ast.BinOp chain. +</p> +<p> + This will build a string from a series of ast.Str/ast.Constant nodes + wrapped in ast.BinOp nodes. Something like "a" + "b" + "c" or "a %s" % val + etc. The provided node can be any participant in the BinOp chain. +</p> +<dl> + +<dt><i>node</i> (ast.BinOp or ast.Str/ast.Constant)</dt> +<dd> +node to be processed +</dd> +<dt><i>stop</i> (ast.BinOp or ast.Str/ast.Constant)</dt> +<dd> +base node to stop at +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +tuple containing the root node of the expression and the string + value +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (ast.AST, str) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="deepgetattr" ID="deepgetattr"></a> +<h2>deepgetattr</h2> +<b>deepgetattr</b>(<i>obj, attr</i>) + +<p> + Function to recurs through an attribute chain to get the ultimate value. +</p> +<dl> + +<dt><i>obj</i> (ast.Name or ast.Attribute)</dt> +<dd> +reference to the object to be recursed +</dd> +<dt><i>attr</i> (ast.Attribute)</dt> +<dd> +attribute chain to be parsed +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +ultimate value +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +ast.AST +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="escapedBytesRepresentation" ID="escapedBytesRepresentation"></a> +<h2>escapedBytesRepresentation</h2> +<b>escapedBytesRepresentation</b>(<i>b</i>) + +<p> + Function to escape bytes for comparison with other strings. +</p> +<p> + In practice it turns control characters into acceptable codepoints then + encodes them into bytes again to turn unprintable bytes into printable + escape sequences. +</p> +<p> + This is safe to do for the whole range 0..255 and result matches + unicode_escape on a unicode string. +</p> +<dl> + +<dt><i>b</i> (bytes)</dt> +<dd> +bytes object to be escaped +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +escaped bytes object +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bytes +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getAttrQualName" ID="getAttrQualName"></a> +<h2>getAttrQualName</h2> +<b>getAttrQualName</b>(<i>node, aliases</i>) + +<p> + Function to get a the full name for the attribute node. +</p> +<p> + This will resolve a pseudo-qualified name for the attribute + rooted at node as long as all the deeper nodes are Names or + Attributes. This will give you how the code referenced the name but + will not tell you what the name actually refers to. If we + encounter a node without a static name we punt with an + empty string. If this encounters something more complex, such as + foo.mylist[0](a,b) we just return empty string. +</p> +<dl> + +<dt><i>node</i> (ast.Attribute)</dt> +<dd> +attribute node to be treated +</dd> +<dt><i>aliases</i> (dict)</dt> +<dd> +dictionary of import aliases +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +qualified name of the attribute +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getCallName" ID="getCallName"></a> +<h2>getCallName</h2> +<b>getCallName</b>(<i>node, aliases</i>) + +<p> + Function to extract the call name from an ast.Call node. +</p> +<dl> + +<dt><i>node</i> (ast.Call)</dt> +<dd> +node to extract information from +</dd> +<dt><i>aliases</i> (dict)</dt> +<dd> +dictionary of import aliases +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +name of the ast.Call node +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getCalledName" ID="getCalledName"></a> +<h2>getCalledName</h2> +<b>getCalledName</b>(<i>node</i>) + +<p> + Function to get the function name from an ast.Call node. +</p> +<p> + An ast.Call node representing a method call will present differently to one + wrapping a function call: thing.call() vs call(). This helper will grab the + unqualified call name correctly in either case. +</p> +<dl> + +<dt><i>node</i> (ast.Call)</dt> +<dd> +reference to the call node +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +function name of the node +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getModuleQualnameFromPath" ID="getModuleQualnameFromPath"></a> +<h2>getModuleQualnameFromPath</h2> +<b>getModuleQualnameFromPath</b>(<i>path</i>) + +<p> + Function to get the module's qualified name by analysis of the + path. +</p> +<p> + Resolve the absolute pathname and eliminate symlinks. This could result + in an incorrect name if symlinks are used to restructure the python lib + directory. +</p> +<p> + Starting from the right-most directory component look for __init__.py + in the directory component. If it exists then the directory name is + part of the module name. Move left to the subsequent directory + components until a directory is found without __init__.py. +</p> +<dl> + +<dt><i>path</i> (str)</dt> +<dd> +path of the module to be analyzed +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +qualified name of the module +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<dl> + +<dt>Raises <b>InvalidModulePath</b>:</dt> +<dd> +raised to indicate an invalid module path +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="getQualAttr" ID="getQualAttr"></a> +<h2>getQualAttr</h2> +<b>getQualAttr</b>(<i>node, aliases</i>) + +<p> + Function to extract the qualified name from an ast.Attribute node. +</p> +<dl> + +<dt><i>node</i> (ast.Attribute)</dt> +<dd> +node to extract information from +</dd> +<dt><i>aliases</i> (dict)</dt> +<dd> +dictionary of import aliases +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +qualified attribute name +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="linerange" ID="linerange"></a> +<h2>linerange</h2> +<b>linerange</b>(<i>node</i>) + +<p> + Function to get line number range from a node. +</p> +<dl> + +<dt><i>node</i> (ast.AST)</dt> +<dd> +node to extract a line range from +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +list containing the line number range +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +list of int +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="linerange_fix" ID="linerange_fix"></a> +<h2>linerange_fix</h2> +<b>linerange_fix</b>(<i>node</i>) + +<p> + Function to get a line number range working around a known Python bug + with multi-line strings. +</p> +<dl> + +<dt><i>node</i> (ast.AST)</dt> +<dd> +node to extract a line range from +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +list containing the line number range +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +list of int +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="namespacePathJoin" ID="namespacePathJoin"></a> +<h2>namespacePathJoin</h2> +<b>namespacePathJoin</b>(<i>namespace, name</i>) + +<p> + Function to extend a given namespace path. +</p> +<dl> + +<dt><i>namespace</i> (str)</dt> +<dd> +namespace to be extended +</dd> +<dt><i>name</i> (str)</dt> +<dd> +node name to be appended +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +extended namespace +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="namespacePathSplit" ID="namespacePathSplit"></a> +<h2>namespacePathSplit</h2> +<b>namespacePathSplit</b>(<i>path</i>) + +<p> + Function to split a namespace path into a head and tail. +</p> +<p> + Tail will be the last namespace path component and head will + be everything leading up to that in the path. This is similar to + os.path.split. +</p> +<dl> + +<dt><i>path</i> (str)</dt> +<dd> +namespace path to be split +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +tuple containing the namespace path head and tail +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (str, str) +</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/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.translations.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,45 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.translations</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.translations</h1> + +<p> +Module implementing message translations for the code style plugin messages +(security part). +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>_securityMessages</td></tr><tr><td>_securityMessagesSampleArgs</td></tr> +</table> +<h3>Classes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +</body></html> \ No newline at end of file
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html Wed Jun 17 17:14:12 2020 +0200 @@ -25,7 +25,7 @@ <h3>Global Attributes</h3> <table> -<tr><td>ARITHMETIC_OP</td></tr><tr><td>BENCHMARK_KEYS</td></tr><tr><td>BLANK_LINES_CONFIG</td></tr><tr><td>COMPARE_NEGATIVE_REGEX</td></tr><tr><td>COMPARE_SINGLETON_REGEX</td></tr><tr><td>COMPARE_TYPE_REGEX</td></tr><tr><td>DEFAULT_EXCLUDE</td></tr><tr><td>DEFAULT_IGNORE</td></tr><tr><td>DOCSTRING_REGEX</td></tr><tr><td>DUNDER_REGEX</td></tr><tr><td>ERRORCODE_REGEX</td></tr><tr><td>EXTRANEOUS_WHITESPACE_REGEX</td></tr><tr><td>FUNCTION_RETURN_ANNOTATION_OP</td></tr><tr><td>HUNK_REGEX</td></tr><tr><td>INDENT_REGEX</td></tr><tr><td>KEYWORDS</td></tr><tr><td>KEYWORD_REGEX</td></tr><tr><td>LAMBDA_REGEX</td></tr><tr><td>MAX_DOC_LENGTH</td></tr><tr><td>MAX_LINE_LENGTH</td></tr><tr><td>NEWLINE</td></tr><tr><td>OPERATOR_REGEX</td></tr><tr><td>PROJECT_CONFIG</td></tr><tr><td>PyCF_ONLY_AST</td></tr><tr><td>RAISE_COMMA_REGEX</td></tr><tr><td>REPORT_FORMAT</td></tr><tr><td>RERAISE_COMMA_REGEX</td></tr><tr><td>SINGLETONS</td></tr><tr><td>SKIP_COMMENTS</td></tr><tr><td>SKIP_TOKENS</td></tr><tr><td>STARTSWITH_DEF_REGEX</td></tr><tr><td>STARTSWITH_INDENT_STATEMENT_REGEX</td></tr><tr><td>STARTSWITH_TOP_LEVEL_REGEX</td></tr><tr><td>TESTSUITE_PATH</td></tr><tr><td>UNARY_OPERATORS</td></tr><tr><td>WHITESPACE</td></tr><tr><td>WHITESPACE_AFTER_COMMA_REGEX</td></tr><tr><td>WS_NEEDED_OPERATORS</td></tr><tr><td>WS_OPTIONAL_OPERATORS</td></tr><tr><td>__version__</td></tr><tr><td>_checks</td></tr><tr><td>noqa</td></tr> +<tr><td>ARITHMETIC_OP</td></tr><tr><td>ASSIGNMENT_EXPRESSION_OP</td></tr><tr><td>BENCHMARK_KEYS</td></tr><tr><td>BLANK_LINES_CONFIG</td></tr><tr><td>COMPARE_NEGATIVE_REGEX</td></tr><tr><td>COMPARE_SINGLETON_REGEX</td></tr><tr><td>COMPARE_TYPE_REGEX</td></tr><tr><td>DEFAULT_EXCLUDE</td></tr><tr><td>DEFAULT_IGNORE</td></tr><tr><td>DOCSTRING_REGEX</td></tr><tr><td>DUNDER_REGEX</td></tr><tr><td>ERRORCODE_REGEX</td></tr><tr><td>EXTRANEOUS_WHITESPACE_REGEX</td></tr><tr><td>FUNCTION_RETURN_ANNOTATION_OP</td></tr><tr><td>HUNK_REGEX</td></tr><tr><td>INDENT_REGEX</td></tr><tr><td>KEYWORDS</td></tr><tr><td>KEYWORD_REGEX</td></tr><tr><td>LAMBDA_REGEX</td></tr><tr><td>MAX_DOC_LENGTH</td></tr><tr><td>MAX_LINE_LENGTH</td></tr><tr><td>NEWLINE</td></tr><tr><td>OPERATOR_REGEX</td></tr><tr><td>PROJECT_CONFIG</td></tr><tr><td>PyCF_ONLY_AST</td></tr><tr><td>RAISE_COMMA_REGEX</td></tr><tr><td>REPORT_FORMAT</td></tr><tr><td>RERAISE_COMMA_REGEX</td></tr><tr><td>SINGLETONS</td></tr><tr><td>SKIP_COMMENTS</td></tr><tr><td>SKIP_TOKENS</td></tr><tr><td>STARTSWITH_DEF_REGEX</td></tr><tr><td>STARTSWITH_INDENT_STATEMENT_REGEX</td></tr><tr><td>STARTSWITH_TOP_LEVEL_REGEX</td></tr><tr><td>TESTSUITE_PATH</td></tr><tr><td>UNARY_OPERATORS</td></tr><tr><td>WHITESPACE</td></tr><tr><td>WHITESPACE_AFTER_COMMA_REGEX</td></tr><tr><td>WS_NEEDED_OPERATORS</td></tr><tr><td>WS_OPTIONAL_OPERATORS</td></tr><tr><td>_SYMBOLIC_OPS</td></tr><tr><td>__version__</td></tr><tr><td>_checks</td></tr><tr><td>noqa</td></tr> </table> <h3>Classes</h3> @@ -81,6 +81,10 @@ <td></td> </tr> <tr> +<td><a href="#_is_one_liner">_is_one_liner</a></td> +<td></td> +</tr> +<tr> <td><a href="#_main">_main</a></td> <td>Parse options and run checks on Python source.</td> </tr> @@ -959,6 +963,13 @@ <div align="right"><a href="#top">Up</a></div> <hr /> <hr /> +<a NAME="_is_one_liner" ID="_is_one_liner"></a> +<h2>_is_one_liner</h2> +<b>_is_one_liner</b>(<i>logical_line, indent_level, lines, line_number</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> <a NAME="_main" ID="_main"></a> <h2>_main</h2> <b>_main</b>(<i></i>) @@ -1011,15 +1022,22 @@ <p> Variables can be bound in several other contexts, including class and function definitions, 'global' and 'nonlocal' statements, - exception handlers, and 'with' statements. + exception handlers, and 'with' and 'for' statements. + In addition, we have a special handling for function parameters. </p> <p> Okay: except AttributeError as o: Okay: with lock as L: + Okay: foo(l=12) + Okay: for a in foo(l=12): E741: except AttributeError as O: E741: with lock as l: E741: global I E741: nonlocal l + E741: def foo(l): + E741: def foo(l=12): + E741: l = foo(l=12) + E741: for l in range(10): E742: class I(object): E743: def l(x): </p> @@ -1075,6 +1093,7 @@ E302: def a():\n pass\n\ndef b(n):\n pass E302: def a():\n pass\n\nasync def b(n):\n pass E303: def a():\n pass\n\n\n\ndef b(n):\n pass + E303: def a():\n\n\n\n pass E304: @decorator\n\ndef a():\n pass E305: def a():\n pass\na() E306: def a():\n def b():\n pass\n def c():\n pass @@ -1568,6 +1587,7 @@ E225: submitted +=1 E225: x = x /2 - 1 E225: z = x **y + E225: z = 1and 1 E226: c = (a+b) * (a-b) E226: hypot2 = x*x + y*y E227: c = a|b @@ -1592,12 +1612,10 @@ Okay: # this is a comment\nimport os Okay: '''this is a module docstring'''\nimport os Okay: r'''this is a module docstring'''\nimport os - Okay: + Okay: try:\n\timport x\nexcept ImportError:\n\tpass\nelse:\n\tpass\nimport y - Okay: + Okay: try:\n\timport x\nexcept ImportError:\n\tpass\nfinally:\n\tpass\nimport y -</p> -<p> E402: a=1\nimport os E402: 'One string'\n"Two string"\nimport os E402: a=1\nfrom sys import x
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.html Wed Jun 17 17:14:12 2020 +0200 @@ -28,7 +28,7 @@ <h3>Global Attributes</h3> <table> -<tr><td>__all__</td></tr><tr><td>_messages</td></tr><tr><td>_messages_sample_args</td></tr> +<tr><td>_messages</td></tr><tr><td>_messages_sample_args</td></tr><tr><td>messageCatalogs</td></tr><tr><td>messageSampleArgsCatalog</td></tr> </table> <h3>Classes</h3> @@ -40,31 +40,73 @@ <table> <tr> +<td><a href="#getMessageCodes">getMessageCodes</a></td> +<td>Module function to get a list of known message codes.</td> +</tr> +<tr> <td><a href="#getTranslatedMessage">getTranslatedMessage</a></td> -<td>Module function to get a translated and formatted message for a given pyflakes message ID.</td> +<td>Module function to get a translated and formatted message for a given message ID.</td> </tr> </table> <hr /> <hr /> +<a NAME="getMessageCodes" ID="getMessageCodes"></a> +<h2>getMessageCodes</h2> +<b>getMessageCodes</b>(<i></i>) + +<p> + Module function to get a list of known message codes. +</p> +<dl> +<dt>Returns:</dt> +<dd> +list of known message codes +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +set of str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> <a NAME="getTranslatedMessage" ID="getTranslatedMessage"></a> <h2>getTranslatedMessage</h2> -<b>getTranslatedMessage</b>(<i>message</i>) +<b>getTranslatedMessage</b>(<i>messageCode, messageArgs, example=False</i>) <p> Module function to get a translated and formatted message for a - given pyflakes message ID. + given message ID. </p> <dl> -<dt><i>message</i></dt> +<dt><i>messageCode</i> (str)</dt> +<dd> +the message code +</dd> +<dt><i>messageArgs</i> (list or int)</dt> <dd> -the message ID (string) +list of arguments or a single integer value to format + the message +</dd> +<dt><i>example</i> (bool)</dt> +<dd> +flag indicating a translated message filled with example + data is requested (messageArgs is ignored if given) </dd> </dl> <dl> <dt>Returns:</dt> <dd> -translated and formatted message (string) +translated and formatted message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.Plugins.PluginCodeStyleChecker.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.PluginCodeStyleChecker.html Wed Jun 17 17:14:12 2020 +0200 @@ -332,19 +332,18 @@ </p> <dl> -<dt><i>fn</i></dt> +<dt><i>fn</i> (str)</dt> <dd> -filename of the just checked file (str) +filename of the just checked file </dd> -<dt><i>codeStyleCheckerStats</i></dt> +<dt><i>codeStyleCheckerStats</i> (dict)</dt> <dd> -stats of style and name check (dict) +stats of style and name check </dd> -<dt><i>results</i></dt> +<dt><i>results</i> (dict)</dt> <dd> -tuple for each found violation of style (tuple of - lineno (int), position (int), text (str), fixed (bool), - autofixing (bool), fixedMsg (str)) +dictionary containing the check result data + (see CodesStyleChecker.__checkCodeStyle for details) </dd> </dl> <a NAME="CodeStyleCheckerPlugin.activate" ID="CodeStyleCheckerPlugin.activate"></a>
--- a/eric6/Documentation/Source/eric6.UI.UserInterface.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.UI.UserInterface.html Wed Jun 17 17:14:12 2020 +0200 @@ -323,10 +323,6 @@ <td>Private slot to start the Qt-Assistant executable.</td> </tr> <tr> -<td><a href="#UserInterface.__assistant4">__assistant4</a></td> -<td>Private slot to start the Qt-Assistant 4/5 executable.</td> -</tr> -<tr> <td><a href="#UserInterface.__checkActions">__checkActions</a></td> <td>Private slot to check some actions for their enable/disable status.</td> </tr> @@ -407,10 +403,6 @@ <td>Private slot to start the Qt-Designer executable.</td> </tr> <tr> -<td><a href="#UserInterface.__designer4">__designer4</a></td> -<td>Private slot to start the Qt-Designer 4/5 executable.</td> -</tr> -<tr> <td><a href="#UserInterface.__editPixmap">__editPixmap</a></td> <td>Private slot to show a pixmap in a dialog.</td> </tr> @@ -511,10 +503,6 @@ <td>Private slot to start the Qt-Linguist executable.</td> </tr> <tr> -<td><a href="#UserInterface.__linguist4">__linguist4</a></td> -<td>Private slot to start the Qt-Linguist 4/5 executable.</td> -</tr> -<tr> <td><a href="#UserInterface.__loadSessionFromFile">__loadSessionFromFile</a></td> <td>Private slot to load a session from disk.</td> </tr> @@ -1372,7 +1360,7 @@ </p> <a NAME="UserInterface.__assistant" ID="UserInterface.__assistant"></a> <h4>UserInterface.__assistant</h4> -<b>__assistant</b>(<i>home=None, version=0</i>) +<b>__assistant</b>(<i>home=None</i>) <p> Private slot to start the Qt-Assistant executable. @@ -1383,18 +1371,7 @@ <dd> full pathname of a file to display </dd> -<dt><i>version</i> (int)</dt> -<dd> -indication for the requested version (4 = Qt 4/5) -</dd> </dl> -<a NAME="UserInterface.__assistant4" ID="UserInterface.__assistant4"></a> -<h4>UserInterface.__assistant4</h4> -<b>__assistant4</b>(<i></i>) - -<p> - Private slot to start the Qt-Assistant 4/5 executable. -</p> <a NAME="UserInterface.__checkActions" ID="UserInterface.__checkActions"></a> <h4>UserInterface.__checkActions</h4> <b>__checkActions</b>(<i>editor</i>) @@ -1612,7 +1589,7 @@ </p> <a NAME="UserInterface.__designer" ID="UserInterface.__designer"></a> <h4>UserInterface.__designer</h4> -<b>__designer</b>(<i>fn=None, version=0</i>) +<b>__designer</b>(<i>fn=None</i>) <p> Private slot to start the Qt-Designer executable. @@ -1623,18 +1600,7 @@ <dd> filename of the form to be opened </dd> -<dt><i>version</i> (int)</dt> -<dd> -indication for the requested version (4 = Qt 4/5) -</dd> </dl> -<a NAME="UserInterface.__designer4" ID="UserInterface.__designer4"></a> -<h4>UserInterface.__designer4</h4> -<b>__designer4</b>(<i></i>) - -<p> - Private slot to start the Qt-Designer 4/5 executable. -</p> <a NAME="UserInterface.__editPixmap" ID="UserInterface.__editPixmap"></a> <h4>UserInterface.__editPixmap</h4> <b>__editPixmap</b>(<i>fn=""</i>) @@ -1879,7 +1845,7 @@ </dl> <a NAME="UserInterface.__linguist" ID="UserInterface.__linguist"></a> <h4>UserInterface.__linguist</h4> -<b>__linguist</b>(<i>fn=None, version=0</i>) +<b>__linguist</b>(<i>fn=None</i>) <p> Private slot to start the Qt-Linguist executable. @@ -1890,24 +1856,6 @@ <dd> filename of the translation file to be opened </dd> -<dt><i>version</i> (int)</dt> -<dd> -indication for the requested version (4 = Qt 4/5) -</dd> -</dl> -<a NAME="UserInterface.__linguist4" ID="UserInterface.__linguist4"></a> -<h4>UserInterface.__linguist4</h4> -<b>__linguist4</b>(<i>fn=None</i>) - -<p> - Private slot to start the Qt-Linguist 4/5 executable. -</p> -<dl> - -<dt><i>fn</i></dt> -<dd> -filename of the translation file to be opened -</dd> </dl> <a NAME="UserInterface.__loadSessionFromFile" ID="UserInterface.__loadSessionFromFile"></a> <h4>UserInterface.__loadSessionFromFile</h4>
--- a/eric6/Documentation/Source/eric6.Utilities.__init__.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Utilities.__init__.html Wed Jun 17 17:14:12 2020 +0200 @@ -491,9 +491,9 @@ </dl> <dl> -<dt>Raises <b>SyntaxError</b>:</dt> +<dt>Raises <b>err</b>:</dt> <dd> - +exception of type SyntaxError </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -2065,30 +2065,32 @@ <hr /> <a NAME="prepareQtMacBundle" ID="prepareQtMacBundle"></a> <h2>prepareQtMacBundle</h2> -<b>prepareQtMacBundle</b>(<i>toolname, version, args</i>) +<b>prepareQtMacBundle</b>(<i>toolname, args</i>) <p> Module function for starting Qt tools that are Mac OS X bundles. </p> <dl> -<dt><i>toolname</i></dt> -<dd> -plain name of the tool (e.g. "designer") (string) -</dd> -<dt><i>version</i></dt> +<dt><i>toolname</i> (str)</dt> <dd> -indication for the requested version (Qt 4) (integer) +plain name of the tool (e.g. "designer") </dd> -<dt><i>args</i></dt> +<dt><i>args</i> (list of str)</dt> <dd> -name of input file for tool, if any (list of strings) +name of input file for tool, if any </dd> </dl> <dl> <dt>Returns:</dt> <dd> -command-name and args for QProcess (tuple) +command-name and args for QProcess +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (str, list of str) </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.WebBrowser.Network.NetworkManager.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.WebBrowser.Network.NetworkManager.html Wed Jun 17 17:14:12 2020 +0200 @@ -93,6 +93,10 @@ <td>Private method to show an authentication error page.</td> </tr> <tr> +<td><a href="#NetworkManager.__sslErrorHandlingSlot">__sslErrorHandlingSlot</a></td> +<td>Private slot to handle SSL errors for a network reply.</td> +</tr> +<tr> <td><a href="#NetworkManager.authentication">authentication</a></td> <td>Public slot to handle an authentication request.</td> </tr> @@ -113,6 +117,10 @@ <td>Public method to install an URL interceptor.</td> </tr> <tr> +<td><a href="#NetworkManager.isInsecureHost">isInsecureHost</a></td> +<td>Public method to check a host against the list of insecure hosts.</td> +</tr> +<tr> <td><a href="#NetworkManager.languagesChanged">languagesChanged</a></td> <td>Public slot to (re-)load the list of accepted languages.</td> </tr> @@ -193,6 +201,24 @@ reference to the URL requesting authentication </dd> </dl> +<a NAME="NetworkManager.__sslErrorHandlingSlot" ID="NetworkManager.__sslErrorHandlingSlot"></a> +<h4>NetworkManager.__sslErrorHandlingSlot</h4> +<b>__sslErrorHandlingSlot</b>(<i>reply, errors</i>) + +<p> + Private slot to handle SSL errors for a network reply. +</p> +<dl> + +<dt><i>reply</i> (QNetworkReply)</dt> +<dd> +reference to the reply object +</dd> +<dt><i>errors</i> (list of QSslError)</dt> +<dd> +list of SSL errors +</dd> +</dl> <a NAME="NetworkManager.authentication" ID="NetworkManager.authentication"></a> <h4>NetworkManager.authentication</h4> <b>authentication</b>(<i>url, auth, page=None</i>) @@ -300,6 +326,32 @@ URL interceptor to be installed </dd> </dl> +<a NAME="NetworkManager.isInsecureHost" ID="NetworkManager.isInsecureHost"></a> +<h4>NetworkManager.isInsecureHost</h4> +<b>isInsecureHost</b>(<i>host</i>) + +<p> + Public method to check a host against the list of insecure hosts. +</p> +<dl> + +<dt><i>host</i> (str)</dt> +<dd> +name of the host to be checked +</dd> +</dl> +<dl> +<dt>Returns:</dt> +<dd> +flag indicating an insecure host +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> <a NAME="NetworkManager.languagesChanged" ID="NetworkManager.languagesChanged"></a> <h4>NetworkManager.languagesChanged</h4> <b>languagesChanged</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.WebBrowser.SiteInfo.SiteInfoDialog.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.WebBrowser.SiteInfo.SiteInfoDialog.html Wed Jun 17 17:14:12 2020 +0200 @@ -57,7 +57,7 @@ <h3>Class Attributes</h3> <table> -<tr><td>nokStyle</td></tr><tr><td>okStyle</td></tr> +<tr><td>securityStyleFormat</td></tr> </table> <h3>Class Methods</h3>
--- a/eric6/Documentation/Source/eric6.WebBrowser.Tools.WebIconLoader.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.WebBrowser.Tools.WebIconLoader.html Wed Jun 17 17:14:12 2020 +0200 @@ -57,7 +57,7 @@ <dt>iconLoaded(icon)</dt> <dd> -emitted when the con has been loaded +emitted when the icon has been loaded </dd> </dl> <h3>Derived from</h3>
--- a/eric6/Documentation/Source/eric6.WebBrowser.Tools.WebIconProvider.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.WebBrowser.Tools.WebIconProvider.html Wed Jun 17 17:14:12 2020 +0200 @@ -106,11 +106,11 @@ </tr> <tr> <td><a href="#WebIconProvider.load">load</a></td> -<td>Public method to load the bookmarks.</td> +<td>Public method to load the web site icons.</td> </tr> <tr> <td><a href="#WebIconProvider.save">save</a></td> -<td>Public method to save the zoom values.</td> +<td>Public method to save the web site icons.</td> </tr> <tr> <td><a href="#WebIconProvider.saveIcon">saveIcon</a></td> @@ -235,14 +235,14 @@ <b>load</b>(<i></i>) <p> - Public method to load the bookmarks. + Public method to load the web site icons. </p> <a NAME="WebIconProvider.save" ID="WebIconProvider.save"></a> <h4>WebIconProvider.save</h4> <b>save</b>(<i></i>) <p> - Public method to save the zoom values. + Public method to save the web site icons. </p> <a NAME="WebIconProvider.saveIcon" ID="WebIconProvider.saveIcon"></a> <h4>WebIconProvider.saveIcon</h4>
--- a/eric6/Documentation/Source/eric6.WebBrowser.WebBrowserTabWidget.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/eric6.WebBrowser.WebBrowserTabWidget.html Wed Jun 17 17:14:12 2020 +0200 @@ -150,8 +150,8 @@ <td>Private method to handle the loadFinished signal.</td> </tr> <tr> -<td><a href="#WebBrowserTabWidget.__loadStarted">__loadStarted</a></td> -<td>Private method to handle the loadStarted signal.</td> +<td><a href="#WebBrowserTabWidget.__loadProgress">__loadProgress</a></td> +<td>Private method to handle the loadProgress signal.</td> </tr> <tr> <td><a href="#WebBrowserTabWidget.__navigationMenuTriggered">__navigationMenuTriggered</a></td> @@ -494,15 +494,23 @@ reference to the web browser </dd> </dl> -<a NAME="WebBrowserTabWidget.__loadStarted" ID="WebBrowserTabWidget.__loadStarted"></a> -<h4>WebBrowserTabWidget.__loadStarted</h4> -<b>__loadStarted</b>(<i>browser</i>) +<a NAME="WebBrowserTabWidget.__loadProgress" ID="WebBrowserTabWidget.__loadProgress"></a> +<h4>WebBrowserTabWidget.__loadProgress</h4> +<b>__loadProgress</b>(<i>progress, browser</i>) <p> - Private method to handle the loadStarted signal. + Private method to handle the loadProgress signal. +</p> +<p> + Note: This works around wegengine not sending a loadFinished + signal for navigation on the same page. </p> <dl> +<dt><i>progress</i> (int)</dt> +<dd> +load progress in percent +</dd> <dt><i>browser</i> (WebBrowserView)</dt> <dd> reference to the web browser
--- a/eric6/Documentation/Source/index-eric6.MicroPython.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/index-eric6.MicroPython.html Wed Jun 17 17:14:12 2020 +0200 @@ -50,6 +50,10 @@ <td>Module implementing a dialog to select the ESP chip type and the firmware to be flashed.</td> </tr> <tr> +<td><a href="eric6.MicroPython.IgnoredDevicesDialog.html">IgnoredDevicesDialog</a></td> +<td>Module implementing a dialog to manage the list of ignored serial devices.</td> +</tr> +<tr> <td><a href="eric6.MicroPython.MicroPythonCommandsInterface.html">MicroPythonCommandsInterface</a></td> <td>Module implementing some file system commands for MicroPython.</td> </tr>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Documentation/Source/index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,137 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks</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.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks</h1> + +<p> +Package containing the various security checker modules. +</p> + + +<h3>Modules</h3> +<table> + +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.__init__.html">Checks</a></td> +<td>Package containing the various security checker modules.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert.html">assert</a></td> +<td>Module implementing a check for the use of 'assert'.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.awsHardcodedPassword.html">awsHardcodedPassword</a></td> +<td>Module implementing checks for potentially hardcoded AWS passwords.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls.html">blackListCalls</a></td> +<td>Module implementing checks for blacklisted methods and functions.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports.html">blackListImports</a></td> +<td>Module implementing checks for blacklisted imports.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.certificateValidation.html">certificateValidation</a></td> +<td>Module implementing checks for switched off certificate validation.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoSqlInjection.html">djangoSqlInjection</a></td> +<td>Module implementing checks for potential SQL injections risks.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html">djangoXssVulnerability</a></td> +<td>Module implementing checks for potential XSS vulnerability.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.exec.html">exec</a></td> +<td>Module implementing a check for the use of 'exec'.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.flaskDebug.html">flaskDebug</a></td> +<td>Module implementing checks for running a flask application with enabled debug.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalBindAllInterfaces.html">generalBindAllInterfaces</a></td> +<td>Module implementing a check for binding to all interfaces.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalFilePermissions.html">generalFilePermissions</a></td> +<td>Module implementing a check for setting too permissive file permissions.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedPassword.html">generalHardcodedPassword</a></td> +<td>Module implementing checks for potentially hardcoded passwords.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.generalHardcodedTmp.html">generalHardcodedTmp</a></td> +<td>Module implementing a check for insecure usage of tmp file/directory.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionParamiko.html">injectionParamiko</a></td> +<td>Module implementing a check for shell injection within Paramiko.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html">injectionShell</a></td> +<td>Module implementing a check for shell injection.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionSql.html">injectionSql</a></td> +<td>Module implementing a check for SQL injection.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionWildcard.html">injectionWildcard</a></td> +<td>Module implementing a check for use of wildcard injection.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureHashlibNew.html">insecureHashlibNew</a></td> +<td>Module implementing a check for use of insecure md4, md5, or sha1 hash functions in hashlib.new().</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.insecureSslTls.html">insecureSslTls</a></td> +<td>Module implementing a check for use of SSL/TLS with insecure protocols.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates.html">jinja2Templates</a></td> +<td>Module implementing a check for not auto escaping in jinja2.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.makoTemplates.html">makoTemplates</a></td> +<td>Module implementing a check for use of mako templates.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.sshNoHostKeyVerification.html">sshNoHostKeyVerification</a></td> +<td>Module implementing a check for use of mako templates.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.html">tryExcept</a></td> +<td>Module implementing checks for insecure except blocks.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.weakCryptographicKey.html">weakCryptographicKey</a></td> +<td>Module implementing checks for weak cryptographic key use.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad.html">yamlLoad</a></td> +<td>Module implementing checks for the use of yaml load functions.</td> +</tr> +</table> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Documentation/Source/index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.html Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,65 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security</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.Plugins.CheckerPlugins.CodeStyleChecker.Security</h1> + +<p> +Package implementing the security checker. +</p> + +<h3>Packages</h3> +<table> + +<tr> +<td><a href="index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.html">Checks</a></td> +<td>Package containing the various security checker modules.</td> +</tr> +</table> + +<h3>Modules</h3> +<table> + +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityChecker.html">SecurityChecker</a></td> +<td>Module implementing the security checker.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityContext.html">SecurityContext</a></td> +<td>Module implementing a context class for security related checks.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityDefaults.html">SecurityDefaults</a></td> +<td>Module implementing the default values for some check modules.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityNodeVisitor.html">SecurityNodeVisitor</a></td> +<td>Module implementing an AST node visitor for security checks.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html">SecurityUtils</a></td> +<td>Module implementing utility functions used by the security checks.</td> +</tr> +<tr> +<td><a href="eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.translations.html">translations</a></td> +<td>Module implementing message translations for the code style plugin messages (security part).</td> +</tr> +</table> +</body></html> \ No newline at end of file
--- a/eric6/Documentation/Source/index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.html Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Documentation/Source/index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.html Wed Jun 17 17:14:12 2020 +0200 @@ -25,6 +25,14 @@ Package containing the code style checker and fixer plug-in. </p> +<h3>Packages</h3> +<table> + +<tr> +<td><a href="index-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.html">Security</a></td> +<td>Package implementing the security checker.</td> +</tr> +</table> <h3>Modules</h3> <table>
--- a/eric6/E5Gui/E5Application.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/E5Gui/E5Application.py Wed Jun 17 17:14:12 2020 +0200 @@ -12,6 +12,17 @@ from PyQt5.QtGui import QPalette from PyQt5.QtWidgets import QApplication +try: + QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling) + # __IGNORE_EXCEPTION__ +except AttributeError: + pass +try: + QCoreApplication.setAttribute(Qt.AA_ShareOpenGLContexts) + # __IGNORE_EXCEPTION__ +except AttributeError: + pass + class E5Application(QApplication): """ @@ -24,17 +35,6 @@ @param argv command line arguments @type list """ - try: - QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling) - # __IGNORE_EXCEPTION__ - except AttributeError: - pass - try: - QCoreApplication.setAttribute(Qt.AA_ShareOpenGLContexts) - # __IGNORE_EXCEPTION__ - except AttributeError: - pass - super(E5Application, self).__init__(argv) QCoreApplication.setAttribute(Qt.AA_DontCreateNativeWidgetSiblings)
--- a/eric6/E5Gui/E5StringListEditWidget.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/E5Gui/E5StringListEditWidget.py Wed Jun 17 17:14:12 2020 +0200 @@ -82,6 +82,16 @@ """ self.defaultButton.setVisible(visible) + def setAddVisible(self, visible): + """ + Public method to show or hide the add button. + + @param visible flag indicating the visibility of the add button + @type bool + """ + self.addButton.setVisible(visible) + self.addLine.setVisible(visible) + @pyqtSlot() def on_addButton_clicked(self): """
--- a/eric6/E5Gui/E5StringListEditWidget.ui Sun May 03 13:42:52 2020 +0200 +++ b/eric6/E5Gui/E5StringListEditWidget.ui Wed Jun 17 17:14:12 2020 +0200 @@ -91,7 +91,7 @@ </widget> </item> <item row="1" column="1"> - <widget class="Line" name="line_3"> + <widget class="Line" name="addLine"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property>
--- a/eric6/IconEditor/cursors/cursors_rc.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/IconEditor/cursors/cursors_rc.py Wed Jun 17 17:14:12 2020 +0200 @@ -2,81 +2,13 @@ # Resource object code # -# Created by: The Resource Compiler for PyQt5 (Qt v5.12.1) +# Created by: The Resource Compiler for PyQt5 (Qt v5.14.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ -\x00\x00\x01\x07\ -\x3c\ -\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x52\x43\x43\x3e\x0a\x3c\x52\ -\x43\x43\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x30\x22\ -\x3e\x0a\x3c\x71\x72\x65\x73\x6f\x75\x72\x63\x65\x3e\x0a\x20\x20\ -\x3c\x66\x69\x6c\x65\x3e\x61\x69\x6d\x2d\x63\x75\x72\x73\x6f\x72\ -\x2e\x78\x70\x6d\x3c\x2f\x66\x69\x6c\x65\x3e\x0a\x20\x20\x3c\x66\ -\x69\x6c\x65\x3e\x63\x6f\x6c\x6f\x72\x70\x69\x63\x6b\x65\x72\x2d\ -\x63\x75\x72\x73\x6f\x72\x2e\x78\x70\x6d\x3c\x2f\x66\x69\x6c\x65\ -\x3e\x0a\x20\x20\x3c\x66\x69\x6c\x65\x3e\x63\x75\x72\x73\x6f\x72\ -\x73\x2e\x71\x72\x63\x3c\x2f\x66\x69\x6c\x65\x3e\x0a\x20\x20\x3c\ -\x66\x69\x6c\x65\x3e\x65\x72\x61\x73\x65\x72\x2d\x63\x75\x72\x73\ -\x6f\x72\x2e\x78\x70\x6d\x3c\x2f\x66\x69\x6c\x65\x3e\x0a\x20\x20\ -\x3c\x66\x69\x6c\x65\x3e\x66\x69\x6c\x6c\x2d\x63\x75\x72\x73\x6f\ -\x72\x2e\x78\x70\x6d\x3c\x2f\x66\x69\x6c\x65\x3e\x0a\x20\x20\x3c\ -\x66\x69\x6c\x65\x3e\x70\x61\x69\x6e\x74\x62\x72\x75\x73\x68\x2d\ -\x63\x75\x72\x73\x6f\x72\x2e\x78\x70\x6d\x3c\x2f\x66\x69\x6c\x65\ -\x3e\x0a\x3c\x2f\x71\x72\x65\x73\x6f\x75\x72\x63\x65\x3e\x0a\x3c\ -\x2f\x52\x43\x43\x3e\x0a\ -\x00\x00\x02\xe1\ -\x2f\ -\x2a\x20\x58\x50\x4d\x20\x2a\x2f\x0a\x73\x74\x61\x74\x69\x63\x20\ -\x63\x68\x61\x72\x20\x2a\x65\x72\x61\x73\x65\x72\x5b\x5d\x3d\x7b\ -\x0a\x22\x32\x32\x20\x32\x32\x20\x38\x20\x31\x22\x2c\x0a\x22\x2e\ -\x20\x63\x20\x4e\x6f\x6e\x65\x22\x2c\x0a\x22\x63\x20\x63\x20\x23\ -\x31\x34\x31\x34\x31\x34\x22\x2c\x0a\x22\x66\x20\x63\x20\x23\x32\ -\x63\x32\x63\x32\x63\x22\x2c\x0a\x22\x65\x20\x63\x20\x23\x34\x32\ -\x34\x32\x34\x32\x22\x2c\x0a\x22\x62\x20\x63\x20\x23\x39\x33\x39\ -\x33\x39\x33\x22\x2c\x0a\x22\x61\x20\x63\x20\x23\x63\x39\x63\x39\ -\x63\x39\x22\x2c\x0a\x22\x64\x20\x63\x20\x23\x64\x35\x64\x35\x64\ -\x35\x22\x2c\x0a\x22\x23\x20\x63\x20\x23\x66\x66\x66\x66\x66\x66\ -\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ -\x2e\x2e\x2e\x23\x23\x23\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\ -\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x23\x61\x62\x62\ -\x23\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ -\x2e\x2e\x2e\x2e\x2e\x23\x61\x62\x62\x62\x62\x23\x2e\x2e\x22\x2c\ -\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x23\x61\ -\x62\x62\x62\x62\x62\x62\x23\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\ -\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x23\x61\x62\x62\x62\x62\x62\x62\x62\ -\x62\x23\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ -\x23\x61\x62\x62\x62\x62\x62\x62\x62\x62\x62\x23\x22\x2c\x0a\x22\ -\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x23\x61\x62\x62\x62\x62\x62\ -\x62\x62\x62\x62\x63\x23\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\ -\x2e\x2e\x23\x61\x62\x62\x62\x62\x62\x62\x62\x62\x62\x63\x23\x2e\ -\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x23\x61\x62\x62\x62\ -\x62\x62\x62\x62\x62\x62\x63\x23\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\ -\x2e\x2e\x2e\x2e\x23\x64\x61\x61\x62\x62\x62\x62\x62\x62\x62\x63\ -\x23\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x23\x64\x65\ -\x65\x61\x61\x62\x62\x62\x62\x62\x63\x23\x2e\x2e\x2e\x2e\x22\x2c\ -\x0a\x22\x2e\x2e\x2e\x2e\x23\x64\x65\x65\x65\x65\x61\x61\x62\x62\ -\x62\x63\x23\x2e\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x23\ -\x64\x65\x65\x65\x65\x65\x65\x61\x61\x62\x63\x23\x2e\x2e\x2e\x2e\ -\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x23\x64\x65\x65\x65\x65\x65\x65\ -\x65\x65\x61\x63\x23\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\ -\x2e\x23\x64\x65\x65\x65\x65\x65\x65\x65\x65\x65\x66\x23\x2e\x2e\ -\x2e\x2e\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x23\x64\x65\x65\x65\x65\ -\x65\x65\x65\x65\x65\x66\x23\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ -\x22\x2c\x0a\x22\x23\x64\x64\x65\x65\x65\x65\x65\x65\x65\x66\x23\ -\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x23\x64\ -\x64\x64\x65\x65\x65\x65\x65\x66\x23\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ -\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x23\x64\x64\x64\x65\x65\x65\ -\x66\x23\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\x2c\ -\x0a\x22\x2e\x2e\x23\x64\x64\x64\x65\x66\x23\x2e\x2e\x2e\x2e\x2e\ -\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x23\ -\x64\x64\x66\x23\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ -\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x23\x23\x23\x2e\x2e\x2e\ -\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\x7d\x3b\x0a\ -\ \x00\x00\x03\x14\ \x2f\ \x2a\x20\x58\x50\x4d\x20\x2a\x2f\x0a\x73\x74\x61\x74\x69\x63\x20\ @@ -129,16 +61,25 @@ \x2e\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x23\x69\x23\x2e\x2e\x2e\x2e\ \x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\ \x7d\x3b\x0a\ -\x00\x00\x00\x7d\ -\x00\ -\x00\x02\x93\x78\x9c\xd3\xd7\x52\x88\x08\xf0\x55\xd0\xd2\xe7\x2a\ -\x2e\x49\x2c\xc9\x4c\x56\x48\xce\x48\x2c\x52\xd0\x4a\xcc\xcc\x8d\ -\x8e\xb5\xad\xe6\x52\x32\x32\x52\x00\x22\x63\x05\x43\x25\x1d\x2e\ -\x25\x3d\x85\x64\x05\xbf\xfc\xbc\x54\x10\x3b\x11\xc8\x56\x36\x00\ -\x03\x10\x57\x19\xc4\x4d\x03\x03\xb0\x4a\xac\x00\x55\x46\x19\x97\ -\x8c\x72\xa2\xf2\x50\x92\x51\x86\x00\x3d\x64\x16\x58\x46\x39\x11\ -\x02\x80\x7c\x28\x4b\x99\xa0\x1e\x38\x48\x1c\x8a\xa1\x83\x3b\x4e\ -\x51\x00\x1e\x99\x5a\x6b\x2e\x00\x12\x9a\x79\xb2\ +\x00\x00\x01\x07\ +\x3c\ +\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x52\x43\x43\x3e\x0a\x3c\x52\ +\x43\x43\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x30\x22\ +\x3e\x0a\x3c\x71\x72\x65\x73\x6f\x75\x72\x63\x65\x3e\x0a\x20\x20\ +\x3c\x66\x69\x6c\x65\x3e\x61\x69\x6d\x2d\x63\x75\x72\x73\x6f\x72\ +\x2e\x78\x70\x6d\x3c\x2f\x66\x69\x6c\x65\x3e\x0a\x20\x20\x3c\x66\ +\x69\x6c\x65\x3e\x63\x6f\x6c\x6f\x72\x70\x69\x63\x6b\x65\x72\x2d\ +\x63\x75\x72\x73\x6f\x72\x2e\x78\x70\x6d\x3c\x2f\x66\x69\x6c\x65\ +\x3e\x0a\x20\x20\x3c\x66\x69\x6c\x65\x3e\x63\x75\x72\x73\x6f\x72\ +\x73\x2e\x71\x72\x63\x3c\x2f\x66\x69\x6c\x65\x3e\x0a\x20\x20\x3c\ +\x66\x69\x6c\x65\x3e\x65\x72\x61\x73\x65\x72\x2d\x63\x75\x72\x73\ +\x6f\x72\x2e\x78\x70\x6d\x3c\x2f\x66\x69\x6c\x65\x3e\x0a\x20\x20\ +\x3c\x66\x69\x6c\x65\x3e\x66\x69\x6c\x6c\x2d\x63\x75\x72\x73\x6f\ +\x72\x2e\x78\x70\x6d\x3c\x2f\x66\x69\x6c\x65\x3e\x0a\x20\x20\x3c\ +\x66\x69\x6c\x65\x3e\x70\x61\x69\x6e\x74\x62\x72\x75\x73\x68\x2d\ +\x63\x75\x72\x73\x6f\x72\x2e\x78\x70\x6d\x3c\x2f\x66\x69\x6c\x65\ +\x3e\x0a\x3c\x2f\x71\x72\x65\x73\x6f\x75\x72\x63\x65\x3e\x0a\x3c\ +\x2f\x52\x43\x43\x3e\x0a\ \x00\x00\x03\x0d\ \x2f\ \x2a\x20\x58\x50\x4d\x20\x2a\x2f\x0a\x73\x74\x61\x74\x69\x63\x20\ @@ -242,27 +183,77 @@ \x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ \x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\x7d\ \x3b\x0a\ +\x00\x00\x00\x7d\ +\x00\ +\x00\x02\x93\x78\x9c\xd3\xd7\x52\x88\x08\xf0\x55\xd0\xd2\xe7\x2a\ +\x2e\x49\x2c\xc9\x4c\x56\x48\xce\x48\x2c\x52\xd0\x4a\xcc\xcc\x8d\ +\x8e\xb5\xad\xe6\x52\x32\x32\x52\x00\x22\x63\x05\x43\x25\x1d\x2e\ +\x25\x3d\x85\x64\x05\xbf\xfc\xbc\x54\x10\x3b\x11\xc8\x56\x36\x00\ +\x03\x10\x57\x19\xc4\x4d\x03\x03\xb0\x4a\xac\x00\x55\x46\x19\x97\ +\x8c\x72\xa2\xf2\x50\x92\x51\x86\x00\x3d\x64\x16\x58\x46\x39\x11\ +\x02\x80\x7c\x28\x4b\x99\xa0\x1e\x38\x48\x1c\x8a\xa1\x83\x3b\x4e\ +\x51\x00\x1e\x99\x5a\x6b\x2e\x00\x12\x9a\x79\xb2\ +\x00\x00\x02\xe1\ +\x2f\ +\x2a\x20\x58\x50\x4d\x20\x2a\x2f\x0a\x73\x74\x61\x74\x69\x63\x20\ +\x63\x68\x61\x72\x20\x2a\x65\x72\x61\x73\x65\x72\x5b\x5d\x3d\x7b\ +\x0a\x22\x32\x32\x20\x32\x32\x20\x38\x20\x31\x22\x2c\x0a\x22\x2e\ +\x20\x63\x20\x4e\x6f\x6e\x65\x22\x2c\x0a\x22\x63\x20\x63\x20\x23\ +\x31\x34\x31\x34\x31\x34\x22\x2c\x0a\x22\x66\x20\x63\x20\x23\x32\ +\x63\x32\x63\x32\x63\x22\x2c\x0a\x22\x65\x20\x63\x20\x23\x34\x32\ +\x34\x32\x34\x32\x22\x2c\x0a\x22\x62\x20\x63\x20\x23\x39\x33\x39\ +\x33\x39\x33\x22\x2c\x0a\x22\x61\x20\x63\x20\x23\x63\x39\x63\x39\ +\x63\x39\x22\x2c\x0a\x22\x64\x20\x63\x20\x23\x64\x35\x64\x35\x64\ +\x35\x22\x2c\x0a\x22\x23\x20\x63\x20\x23\x66\x66\x66\x66\x66\x66\ +\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ +\x2e\x2e\x2e\x23\x23\x23\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\ +\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x23\x61\x62\x62\ +\x23\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ +\x2e\x2e\x2e\x2e\x2e\x23\x61\x62\x62\x62\x62\x23\x2e\x2e\x22\x2c\ +\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x23\x61\ +\x62\x62\x62\x62\x62\x62\x23\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\ +\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x23\x61\x62\x62\x62\x62\x62\x62\x62\ +\x62\x23\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ +\x23\x61\x62\x62\x62\x62\x62\x62\x62\x62\x62\x23\x22\x2c\x0a\x22\ +\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x23\x61\x62\x62\x62\x62\x62\ +\x62\x62\x62\x62\x63\x23\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\ +\x2e\x2e\x23\x61\x62\x62\x62\x62\x62\x62\x62\x62\x62\x63\x23\x2e\ +\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x23\x61\x62\x62\x62\ +\x62\x62\x62\x62\x62\x62\x63\x23\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\ +\x2e\x2e\x2e\x2e\x23\x64\x61\x61\x62\x62\x62\x62\x62\x62\x62\x63\ +\x23\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x2e\x23\x64\x65\ +\x65\x61\x61\x62\x62\x62\x62\x62\x63\x23\x2e\x2e\x2e\x2e\x22\x2c\ +\x0a\x22\x2e\x2e\x2e\x2e\x23\x64\x65\x65\x65\x65\x61\x61\x62\x62\ +\x62\x63\x23\x2e\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x23\ +\x64\x65\x65\x65\x65\x65\x65\x61\x61\x62\x63\x23\x2e\x2e\x2e\x2e\ +\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x23\x64\x65\x65\x65\x65\x65\x65\ +\x65\x65\x61\x63\x23\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\ +\x2e\x23\x64\x65\x65\x65\x65\x65\x65\x65\x65\x65\x66\x23\x2e\x2e\ +\x2e\x2e\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x23\x64\x65\x65\x65\x65\ +\x65\x65\x65\x65\x65\x66\x23\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ +\x22\x2c\x0a\x22\x23\x64\x64\x65\x65\x65\x65\x65\x65\x65\x66\x23\ +\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x23\x64\ +\x64\x64\x65\x65\x65\x65\x65\x66\x23\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ +\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x23\x64\x64\x64\x65\x65\x65\ +\x66\x23\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\x2c\ +\x0a\x22\x2e\x2e\x23\x64\x64\x64\x65\x66\x23\x2e\x2e\x2e\x2e\x2e\ +\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x23\ +\x64\x64\x66\x23\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\ +\x2e\x2e\x22\x2c\x0a\x22\x2e\x2e\x2e\x2e\x23\x23\x23\x2e\x2e\x2e\ +\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x22\x7d\x3b\x0a\ +\ " qt_resource_name = b"\ -\x00\x0b\ -\x06\x43\xcb\xc3\ -\x00\x63\ -\x00\x75\x00\x72\x00\x73\x00\x6f\x00\x72\x00\x73\x00\x2e\x00\x71\x00\x72\x00\x63\ -\x00\x11\ -\x03\x70\x24\x2d\ -\x00\x65\ -\x00\x72\x00\x61\x00\x73\x00\x65\x00\x72\x00\x2d\x00\x63\x00\x75\x00\x72\x00\x73\x00\x6f\x00\x72\x00\x2e\x00\x78\x00\x70\x00\x6d\ -\ \x00\x16\ \x0c\xac\xdf\x8d\ \x00\x63\ \x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x70\x00\x69\x00\x63\x00\x6b\x00\x65\x00\x72\x00\x2d\x00\x63\x00\x75\x00\x72\x00\x73\x00\x6f\ \x00\x72\x00\x2e\x00\x78\x00\x70\x00\x6d\ -\x00\x0e\ -\x0a\x62\x1c\x4d\ -\x00\x61\ -\x00\x69\x00\x6d\x00\x2d\x00\x63\x00\x75\x00\x72\x00\x73\x00\x6f\x00\x72\x00\x2e\x00\x78\x00\x70\x00\x6d\ +\x00\x0b\ +\x06\x43\xcb\xc3\ +\x00\x63\ +\x00\x75\x00\x72\x00\x73\x00\x6f\x00\x72\x00\x73\x00\x2e\x00\x71\x00\x72\x00\x63\ \x00\x0f\ \x0f\x83\xb2\x4d\ \x00\x66\ @@ -272,33 +263,42 @@ \x00\x70\ \x00\x61\x00\x69\x00\x6e\x00\x74\x00\x62\x00\x72\x00\x75\x00\x73\x00\x68\x00\x2d\x00\x63\x00\x75\x00\x72\x00\x73\x00\x6f\x00\x72\ \x00\x2e\x00\x78\x00\x70\x00\x6d\ +\x00\x0e\ +\x0a\x62\x1c\x4d\ +\x00\x61\ +\x00\x69\x00\x6d\x00\x2d\x00\x63\x00\x75\x00\x72\x00\x73\x00\x6f\x00\x72\x00\x2e\x00\x78\x00\x70\x00\x6d\ +\x00\x11\ +\x03\x70\x24\x2d\ +\x00\x65\ +\x00\x72\x00\x61\x00\x73\x00\x65\x00\x72\x00\x2d\x00\x63\x00\x75\x00\x72\x00\x73\x00\x6f\x00\x72\x00\x2e\x00\x78\x00\x70\x00\x6d\ +\ " qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\ -\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x01\x0b\ +\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xcc\ +\x00\x00\x00\x32\x00\x00\x00\x00\x00\x01\x00\x00\x03\x18\ +\x00\x00\x00\xa2\x00\x01\x00\x00\x00\x01\x00\x00\x0a\x4b\ +\x00\x00\x00\x72\x00\x00\x00\x00\x00\x01\x00\x00\x07\x34\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x00\x76\x00\x01\x00\x00\x00\x01\x00\x00\x07\x08\ -\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x9a\ -\x00\x00\x00\x44\x00\x00\x00\x00\x00\x01\x00\x00\x03\xf0\ -\x00\x00\x00\x98\x00\x00\x00\x00\x00\x01\x00\x00\x07\x89\ +\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x04\x23\ " qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x01\x0b\ -\x00\x00\x01\x6a\x36\x3b\x50\x01\ +\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xcc\ +\x00\x00\x01\x71\xda\xe0\x03\x7f\ +\x00\x00\x00\x32\x00\x00\x00\x00\x00\x01\x00\x00\x03\x18\ +\x00\x00\x01\x71\xda\xe0\x03\x83\ +\x00\x00\x00\xa2\x00\x01\x00\x00\x00\x01\x00\x00\x0a\x4b\ +\x00\x00\x01\x71\xda\xe0\x03\xc7\ +\x00\x00\x00\x72\x00\x00\x00\x00\x00\x01\x00\x00\x07\x34\ +\x00\x00\x01\x71\xda\xe0\x03\x7b\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x6a\x36\x3b\x50\x36\ -\x00\x00\x00\x76\x00\x01\x00\x00\x00\x01\x00\x00\x07\x08\ -\x00\x00\x01\x6a\x36\x3b\x4f\xf9\ -\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x9a\ -\x00\x00\x01\x6a\x36\x3b\x4f\xf4\ -\x00\x00\x00\x44\x00\x00\x00\x00\x00\x01\x00\x00\x03\xf0\ -\x00\x00\x01\x6a\x36\x3b\x50\xb1\ -\x00\x00\x00\x98\x00\x00\x00\x00\x00\x01\x00\x00\x07\x89\ -\x00\x00\x01\x6a\x36\x3b\x4f\xa4\ +\x00\x00\x01\x71\xda\xe0\x03\x93\ +\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x04\x23\ +\x00\x00\x01\x71\xda\xe0\x03\x7b\ " qt_version = [int(v) for v in QtCore.qVersion().split('.')]
--- a/eric6/MicroPython/CircuitPythonDevices.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/MicroPython/CircuitPythonDevices.py Wed Jun 17 17:14:12 2020 +0200 @@ -190,7 +190,7 @@ """ Private slot to flash a CircuitPython firmware to the device. """ - ok = E5MessageBox.information( + button = E5MessageBox.information( self.microPython, self.tr("Flash CircuitPython Firmware"), self.tr("Please reset the device to bootloader mode and confirm" @@ -198,7 +198,7 @@ E5MessageBox.StandardButtons( E5MessageBox.Abort | E5MessageBox.Ok)) - if ok: + if button == E5MessageBox.Ok: from .CircuitPythonFirmwareSelectionDialog import ( CircuitPythonFirmwareSelectionDialog) dlg = CircuitPythonFirmwareSelectionDialog()
--- a/eric6/MicroPython/CircuitPythonFirmwareSelectionDialog.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/MicroPython/CircuitPythonFirmwareSelectionDialog.py Wed Jun 17 17:14:12 2020 +0200 @@ -48,22 +48,49 @@ self.bootPicker.setMode(E5PathPickerModes.DirectoryShowFilesMode) + self.__manualMarker = "<manual>" boards = ( ("", ""), # indicator for no selection + # Adafruit boards + ("--- Adafruit ---", ""), + ("CLUE nRF52840 Express", "CLUEBOOT"), + ("Circuit Playground Bluefruit", "CPLAYBTBOOT"), ("Circuit Playground Express", "CPLAYBOOT"), + ("Feather Bluefruit Sense", "FTHR840BOOT"), + ("Feather M0 Adalogger", "FEATHERBOOT"), + ("Feather M0 Basic", "FEATHERBOOT"), ("Feather M0 Express", "FEATHERBOOT"), + ("Feather M0 RFM69", "FEATHERBOOT"), + ("Feather M0 RFM9x", "FEATHERBOOT"), ("Feather M4 Express", "FEATHERBOOT"), + ("Feather nRF52840 Express", "FTHR840BOOT"), ("Gemma M0", "GEMMABOOT"), ("Grand Central M4 Express", "GCM4BOOT"), + ("Hallowing M4 Express", "HALLOM4BOOT"), ("ItsyBitsy M0 Express", "ITSYBOOT"), ("ItsyBitsy M4 Express", "ITSYM4BOOT"), + ("ItsyBitsy nRF52840 Express", " ITSY840BOOT"), ("Metro M0 Express", "METROBOOT"), ("Metro M4 Express", "METROM4BOOT"), + ("Metro M4 Express AirLift", "METROM4BOOT"), ("NeoTrelis M4 Express", "TRELM4BOOT"), + ("PyBadge", "BADGEBOOT"), + ("PyGamer", "PYGAMERBOOT"), + ("PyPortal", "PORTALBOOT"), + ("PyPortal Pynt", "PORTALBOOT"), + ("PyPortal Titano", "PORTALBOOT"), + ("PyRuler", "TRINKETBOOT"), ("Trinket M0", "TRINKETBOOT"), - ("Manual Select", "<manual>"), + # SparkFun boards + ("--- SparkFun ---", ""), + ("Qwiic Micro", "QwiicMicro"), + ("SAMD51 Thing Plus", "51THINGBOOT"), + ("RedBoard Turbo", "TURBOBOOT"), + ("Pro nRF52840 Mini", "NRF52BOOT"), + + (self.tr("Manual Select"), self.__manualMarker), ) for boardName, bootVolume in boards: self.boardComboBox.addItem(boardName, bootVolume) @@ -84,7 +111,7 @@ enable = False else: volumeName = self.boardComboBox.currentData() - if volumeName and volumeName != "<manual>": + if volumeName and volumeName != self.__manualMarker: # check if the user selected a board and the board is in # bootloader mode deviceDirectory = Utilities.findVolume(volumeName) @@ -104,7 +131,7 @@ .format(volumeName) ) - elif volumeName == "<manual>": + elif volumeName == self.__manualMarker: # select the device path manually deviceDirectory = self.bootPicker.text() enable = (bool(deviceDirectory) and @@ -134,7 +161,7 @@ @param index index of the selected board type @type int """ - if self.boardComboBox.itemData(index) == "<manual>": + if self.boardComboBox.itemData(index) == self.__manualMarker: self.bootPicker.clear() self.bootPicker.setEnabled(True) else:
--- a/eric6/MicroPython/EspBackupRestoreFirmwareDialog.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/MicroPython/EspBackupRestoreFirmwareDialog.py Wed Jun 17 17:14:12 2020 +0200 @@ -26,7 +26,12 @@ Class implementing a dialog to select the ESP chip type and the backup and restore parameters. """ - FlashModes = ["qio", "qout", "dio", "dout"] + FlashModes = [ + ("Quad I/O", "qio"), + ("Quad Output", "qout"), + ("Dual I/O", "dio"), + ("Dual Output", "dout"), + ] FlashSizes = { "ESP32": [ (" 1 MB", "0x100000"), @@ -72,7 +77,8 @@ self.setWindowTitle(self.tr("Backup Firmware")) else: self.firmwarePicker.setMode(E5PathPickerModes.OpenFileMode) - self.modeComboBox.addItems(self.FlashModes) + for text, mode in self.FlashModes: + self.modeComboBox.addItem(text, mode) self.setWindowTitle(self.tr("Restore Firmware")) msh = self.minimumSizeHint() @@ -131,6 +137,6 @@ return ( self.espComboBox.currentText().lower(), self.sizeComboBox.currentData(), - self.modeComboBox.currentText(), + self.modeComboBox.currentData(), self.firmwarePicker.text(), )
--- a/eric6/MicroPython/EspDevices.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/MicroPython/EspDevices.py Wed Jun 17 17:14:12 2020 +0200 @@ -191,7 +191,7 @@ from .EspFirmwareSelectionDialog import EspFirmwareSelectionDialog dlg = EspFirmwareSelectionDialog() if dlg.exec_() == QDialog.Accepted: - chip, firmware, _ = dlg.getData() + chip, firmware, flashMode, _ = dlg.getData() if chip == "esp8266": flashAddress = "0x0000" elif chip == "esp32": @@ -205,9 +205,15 @@ "--chip", chip, "--port", self.microPython.getCurrentPort(), "write_flash", + ] + if flashMode: + flashArgs.extend([ + "--flash_mode", flashMode + ]) + flashArgs.extend([ flashAddress, firmware, - ] + ]) dlg = E5ProcessDialog(self.tr("'esptool write_flash' Output"), self.tr("Flash MicroPython Firmware"), showProgress=True) @@ -223,16 +229,22 @@ from .EspFirmwareSelectionDialog import EspFirmwareSelectionDialog dlg = EspFirmwareSelectionDialog(addon=True) if dlg.exec_() == QDialog.Accepted: - chip, firmware, flashAddress = dlg.getData() + chip, firmware, flashMode, flashAddress = dlg.getData() flashArgs = [ "-u", "-m", "esptool", "--chip", chip, "--port", self.microPython.getCurrentPort(), "write_flash", + ] + if flashMode: + flashArgs.extend([ + "--flash_mode", flashMode + ]) + flashArgs.extend([ flashAddress.lower(), firmware, - ] + ]) dlg = E5ProcessDialog(self.tr("'esptool write_flash' Output"), self.tr("Flash Additional Firmware"), showProgress=True)
--- a/eric6/MicroPython/EspFirmwareSelectionDialog.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/MicroPython/EspFirmwareSelectionDialog.py Wed Jun 17 17:14:12 2020 +0200 @@ -25,6 +25,14 @@ Class implementing a dialog to select the ESP chip type and the firmware to be flashed. """ + FlashModes = ( + ("", ""), + ("Quad I/O", "qio"), + ("Quad Output", "qout"), + ("Dual I/O", "dio"), + ("Dual Output", "dout"), + ) + def __init__(self, addon=False, parent=None): """ Constructor @@ -45,6 +53,9 @@ self.espComboBox.addItems(["", "ESP32", "ESP8266"]) + for text, mode in self.FlashModes: + self.modeComboBox.addItem(text, mode) + if addon: self.__validator = QRegularExpressionValidator( QRegularExpression(r"[0-9a-fA-F]{0,4}") @@ -93,8 +104,8 @@ Public method to get the entered data. @return tuple containing the selected chip type, the path of the - firmware file and the flash address - @rtype tuple of (str, str, str) + firmware file, the flash mode and the flash address + @rtype tuple of (str, str, str, str) """ if self.__addon: address = self.addressEdit.text() @@ -104,5 +115,6 @@ return ( self.espComboBox.currentText().lower(), self.firmwarePicker.text(), + self.modeComboBox.currentData(), address, )
--- a/eric6/MicroPython/EspFirmwareSelectionDialog.ui Sun May 03 13:42:52 2020 +0200 +++ b/eric6/MicroPython/EspFirmwareSelectionDialog.ui Wed Jun 17 17:14:12 2020 +0200 @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>500</width> - <height>114</height> + <height>140</height> </rect> </property> <property name="windowTitle"> @@ -43,7 +43,7 @@ </property> <property name="sizeHint" stdset="0"> <size> - <width>40</width> + <width>318</width> <height>20</height> </size> </property> @@ -67,13 +67,37 @@ </widget> </item> <item row="2" column="0"> + <widget class="QLabel" name="label_3"> + <property name="toolTip"> + <string/> + </property> + <property name="text"> + <string>Flash Mode:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QComboBox" name="modeComboBox"> + <property name="toolTip"> + <string>Select the flash mode</string> + </property> + </widget> + </item> + <item row="2" column="2"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Leave empty to use the default mode.</string> + </property> + </widget> + </item> + <item row="3" column="0"> <widget class="QLabel" name="addressLabel"> <property name="text"> <string>Address:</string> </property> </widget> </item> - <item row="2" column="1" colspan="2"> + <item row="3" column="1" colspan="2"> <widget class="E5ClearableLineEdit" name="addressEdit"> <property name="toolTip"> <string>Enter the flash addres in the hexadecimal form</string> @@ -113,6 +137,7 @@ <tabstops> <tabstop>espComboBox</tabstop> <tabstop>firmwarePicker</tabstop> + <tabstop>modeComboBox</tabstop> <tabstop>addressEdit</tabstop> </tabstops> <resources/>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/MicroPython/IgnoredDevicesDialog.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to manage the list of ignored serial devices. +""" + +from PyQt5.QtWidgets import QDialog + +from .Ui_IgnoredDevicesDialog import Ui_IgnoredDevicesDialog + + +class IgnoredDevicesDialog(QDialog, Ui_IgnoredDevicesDialog): + """ + Class implementing a dialog to manage the list of ignored serial devices. + """ + def __init__(self, deviceList, parent=None): + """ + Constructor + + @param deviceList list of ignored serial devices given by VID and PID + @type list of tuple of (int, int) + @param parent reference to the parent widget + @type QWidget + """ + super(IgnoredDevicesDialog, self).__init__(parent) + self.setupUi(self) + + self.devicesEditWidget.setList([ + "{0} ({1:04x}/{2:04x})".format(description, vid, pid) + for vid, pid, description in deviceList + ]) + + self.devicesEditWidget.setDefaultVisible(False) + self.devicesEditWidget.setAddVisible(False) + + def getDevices(self): + """ + Public method to get the list of ignored serial devices. + + @return list of tuples containing the VID, PID and a description + of each ignored device + @rtype list of tuple of (int, int, str) + """ + deviceList = [] + textList = self.devicesEditWidget.getList() + for entry in textList: + description, vid_pid = entry.rsplit(None, 1) + vid, pid = vid_pid[1:-1].split("/", 1) + deviceList.append((int(vid, 16), int(pid, 16), description)) + + return deviceList
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/MicroPython/IgnoredDevicesDialog.ui Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>IgnoredDevicesDialog</class> + <widget class="QDialog" name="IgnoredDevicesDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>500</width> + <height>350</height> + </rect> + </property> + <property name="windowTitle"> + <string>Ignored Serial Devices</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="E5StringListEditWidget" name="devicesEditWidget" native="true"/> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>E5StringListEditWidget</class> + <extends>QWidget</extends> + <header>E5Gui/E5StringListEditWidget.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>buttonBox</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>IgnoredDevicesDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>227</x> + <y>329</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>IgnoredDevicesDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>295</x> + <y>335</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- a/eric6/MicroPython/MicroPythonDevices.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/MicroPython/MicroPythonDevices.py Wed Jun 17 17:14:12 2020 +0200 @@ -43,7 +43,7 @@ (0x1209, 0x2017), # Mini SAM M4 (0x1209, 0x7102), # Mini SAM M0 ], - "description": "CircuitPython Boards", + "description": "CircuitPython Board", "icon": "circuitPythonDevice", }, @@ -93,16 +93,21 @@ """ Function to check the serial ports for supported MicroPython devices. - @return set of tuples with the board type, a description and the serial - port it is connected at - @rtype set of tuples of (str, str, str) + @return tuple containing a list of tuples with the board type, a + description and the serial port it is connected at for known device + types and a list of tuples with VID, PID and description for unknown + devices + @rtype tuple of (list of tuples of (str, str, str), list of tuples of + (int, int, str) """ from PyQt5.QtSerialPort import QSerialPortInfo foundDevices = [] + unknownDevices = [] availablePorts = QSerialPortInfo.availablePorts() for port in availablePorts: + supported = False vid = port.vendorIdentifier() pid = port.productIdentifier() for board in SupportedBoards: @@ -111,10 +116,14 @@ foundDevices.append( (board, SupportedBoards[board]["description"], port.portName())) - else: - logging.debug("Unknown device: (0x%04x:0x%04x)", vid, pid) + supported = True + if not supported: + if vid and pid: + unknownDevices.append((vid, pid, port.description())) + logging.debug("Unknown device: (0x%04x:0x%04x %s)", + vid, pid, port.description()) - return foundDevices + return foundDevices, unknownDevices def getDeviceIcon(boardName, iconFormat=True):
--- a/eric6/MicroPython/MicroPythonWidget.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/MicroPython/MicroPythonWidget.py Wed Jun 17 17:14:12 2020 +0200 @@ -16,7 +16,7 @@ from PyQt5.QtGui import QColor, QKeySequence, QTextCursor, QBrush from PyQt5.QtWidgets import ( QWidget, QMenu, QApplication, QHBoxLayout, QSpacerItem, QSizePolicy, - QTextEdit, QToolButton + QTextEdit, QToolButton, QDialog ) from E5Gui.E5ZoomWidget import E5ZoomWidget @@ -295,7 +295,7 @@ self.deviceInfoLabel.clear() self.deviceTypeComboBox.addItem("", "") - devices = MicroPythonDevices.getFoundDevices() + devices, unknownDevices = MicroPythonDevices.getFoundDevices() if devices: self.deviceInfoLabel.setText( self.tr("%n supported device(s) detected.", "", len(devices))) @@ -325,6 +325,39 @@ self.on_deviceTypeComboBox_activated(index) self.deviceTypeComboBox.setCurrentIndex(index) + + if unknownDevices: + ignoredUnknown = { + tuple(d) + for d in Preferences.getMicroPython("IgnoredUnknownDevices") + } + newUnknownDevices = set(unknownDevices) - ignoredUnknown + if newUnknownDevices: + button = E5MessageBox.information( + self, + self.tr("Unknown MicroPython Device"), + self.tr( + '<p>Detected these unknown serial devices</p>' + '<ul>' + '<li>{0}</li>' + '</ul>' + '<p>Please report them together with the board name' + ' and a short description to <a href="mailto:' + 'eric-bugs@eric-ide.python-projects.org"> the eric' + ' bug reporting address</a> if it is a MicroPython' + ' board.</p>' + ).format("</li><li>".join([ + self.tr("{0} ({1:04x}/{2:04x})").format(desc, vid, pid) + for vid, pid, desc in newUnknownDevices])), + E5MessageBox.StandardButtons( + E5MessageBox.Ignore | + E5MessageBox.Ok + ) + ) + if button == E5MessageBox.Ignore: + ignoredUnknown = list(ignoredUnknown | newUnknownDevices) + Preferences.setMicroPython("IgnoredUnknownDevices", + ignoredUnknown) def __handlePreferencesChanged(self): """ @@ -1175,6 +1208,9 @@ self.tr("Show Documentation"), self.__showDocumentation) act.setEnabled(self.__device.hasDocumentationUrl()) self.__superMenu.addSeparator() + self.__superMenu.addAction(self.tr("Ignored Serial Devices"), + self.__manageIgnored) + self.__superMenu.addSeparator() self.__superMenu.addAction(self.tr("Configure"), self.__configure) @pyqtSlot() @@ -1508,6 +1544,21 @@ e5App().getObject("UserInterface").launchHelpViewer(url) @pyqtSlot() + def __manageIgnored(self): + """ + Private slot to manage the list of ignored serial devices. + """ + from .IgnoredDevicesDialog import IgnoredDevicesDialog + + dlg = IgnoredDevicesDialog( + Preferences.getMicroPython("IgnoredUnknownDevices"), + self) + if dlg.exec_() == QDialog.Accepted: + ignoredDevices = dlg.getDevices() + Preferences.setMicroPython("IgnoredUnknownDevices", + ignoredDevices) + + @pyqtSlot() def __configure(self): """ Private slot to open the MicroPython configuration page.
--- a/eric6/PipInterface/Pip.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/PipInterface/Pip.py Wed Jun 17 17:14:12 2020 +0200 @@ -13,7 +13,7 @@ import json from PyQt5.QtCore import pyqtSlot, QObject, QProcess, QUrl, QCoreApplication -from PyQt5.QtWidgets import QDialog +from PyQt5.QtWidgets import QDialog, QInputDialog, QLineEdit from PyQt5.QtNetwork import ( QNetworkAccessManager, QNetworkRequest, QNetworkReply ) @@ -660,3 +660,96 @@ pass return result + + ####################################################################### + ## Cache handling methods below + ####################################################################### + + def showCacheInfo(self, venvName): + """ + Public method to show some information about the pip cache. + + @param venvName name of the virtual environment to be used + @type str + """ + if venvName: + interpreter = self.getVirtualenvInterpreter(venvName) + if interpreter: + args = ["-m", "pip", "cache", "info"] + dia = PipDialog(self.tr("Cache Info")) + res = dia.startProcess(interpreter, args, showArgs=False) + if res: + dia.exec_() + + def cacheList(self, venvName): + """ + Public method to list files contained in the pip cache. + + @param venvName name of the virtual environment to be used + @type str + """ + if venvName: + interpreter = self.getVirtualenvInterpreter(venvName) + if interpreter: + pattern, ok = QInputDialog.getText( + None, + self.tr("List Cached Files"), + self.tr("Enter a file pattern (empty for all):"), + QLineEdit.Normal) + + if ok: + args = ["-m", "pip", "cache", "list"] + if pattern.strip(): + args.append(pattern.strip()) + dia = PipDialog(self.tr("List Cached Files")) + res = dia.startProcess(interpreter, args, + showArgs=False) + if res: + dia.exec_() + + def cacheRemove(self, venvName): + """ + Public method to remove files from the pip cache. + + @param venvName name of the virtual environment to be used + @type str + """ + if venvName: + interpreter = self.getVirtualenvInterpreter(venvName) + if interpreter: + pattern, ok = QInputDialog.getText( + None, + self.tr("Remove Cached Files"), + self.tr("Enter a file pattern:"), + QLineEdit.Normal) + + if ok and pattern.strip(): + args = ["-m", "pip", "cache", "remove", pattern.strip()] + dia = PipDialog(self.tr("Remove Cached Files")) + res = dia.startProcess(interpreter, args, + showArgs=False) + if res: + dia.exec_() + + def cachePurge(self, venvName): + """ + Public method to remove all files from the pip cache. + + @param venvName name of the virtual environment to be used + @type str + """ + if venvName: + interpreter = self.getVirtualenvInterpreter(venvName) + if interpreter: + ok = E5MessageBox.yesNo( + None, + self.tr("Purge Cache"), + self.tr("Do you really want to purge the pip cache? All" + " files need to be downloaded again.")) + if ok: + args = ["-m", "pip", "cache", "purge"] + dia = PipDialog(self.tr("Purge Cache")) + res = dia.startProcess(interpreter, args, + showArgs=False) + if res: + dia.exec_()
--- a/eric6/PipInterface/PipPackagesWidget.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/PipInterface/PipPackagesWidget.py Wed Jun 17 17:14:12 2020 +0200 @@ -938,6 +938,19 @@ self.tr("Generate Requirements..."), self.__generateRequirements) self.__pipMenu.addSeparator() + self.__cacheInfoAct = self.__pipMenu.addAction( + self.tr("Show Cache Info..."), + self.__showCacheInfo) + self.__cacheShowListAct = self.__pipMenu.addAction( + self.tr("Show Cached Files..."), + self.__showCacheList) + self.__cacheRemoveAct = self.__pipMenu.addAction( + self.tr("Remove Cached Files..."), + self.__removeCachedFiles) + self.__cachePurgeAct = self.__pipMenu.addAction( + self.tr("Purge Cache..."), + self.__purgeCache) + self.__pipMenu.addSeparator() # editUserConfigAct self.__pipMenu.addAction( self.tr("Edit User Configuration..."), @@ -973,6 +986,11 @@ self.__uninstallRequirementsAct.setEnabled(enablePip) self.__generateRequirementsAct.setEnabled(enablePip) + self.__cacheInfoAct.setEnabled(enablePip) + self.__cacheShowListAct.setEnabled(enablePip) + self.__cacheRemoveAct.setEnabled(enablePip) + self.__cachePurgeAct.setEnabled(enablePip) + self.__editVirtualenvConfigAct.setEnabled(enable) @pyqtSlot() @@ -1140,3 +1158,39 @@ Private slot to open the configuration page. """ e5App().getObject("UserInterface").showPreferences("pipPage") + + @pyqtSlot() + def __showCacheInfo(self): + """ + Private slot to show information about the cache. + """ + venvName = self.environmentsComboBox.currentText() + if venvName: + self.__pip.showCacheInfo(venvName) + + @pyqtSlot() + def __showCacheList(self): + """ + Private slot to show a list of cached files. + """ + venvName = self.environmentsComboBox.currentText() + if venvName: + self.__pip.cacheList(venvName) + + @pyqtSlot() + def __removeCachedFiles(self): + """ + Private slot to remove files from the pip cache. + """ + venvName = self.environmentsComboBox.currentText() + if venvName: + self.__pip.cacheRemove(venvName) + + @pyqtSlot() + def __purgeCache(self): + """ + Private slot to empty the pip cache. + """ + venvName = self.environmentsComboBox.currentText() + if venvName: + self.__pip.cachePurge(venvName)
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/AnnotationsChecker.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/AnnotationsChecker.py Wed Jun 17 17:14:12 2020 +0200 @@ -10,6 +10,8 @@ import sys import ast +import AstUtilities + class AnnotationsChecker(object): """ @@ -130,7 +132,14 @@ if code and (self.counters[code] == 1 or self.__repeat): # record the issue with one based line number self.errors.append( - (self.__filename, lineNumber + 1, offset, (code, args))) + { + "file": self.__filename, + "line": lineNumber + 1, + "offset": offset, + "code": code, + "args": args, + } + ) def __reportInvalidSyntax(self): """ @@ -454,7 +463,7 @@ @return annotation complexity @rtype = int """ - if isinstance(annotationNode, ast.Str): + if AstUtilities.isString(annotationNode): annotationNode = ast.parse(annotationNode.s).body[0].value if isinstance(annotationNode, ast.Subscript): return 1 + getAnnotationComplexity(annotationNode.slice.value)
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleChecker.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleChecker.py Wed Jun 17 17:14:12 2020 +0200 @@ -12,6 +12,7 @@ except ImportError: import queue +import ast import sys import multiprocessing @@ -24,6 +25,7 @@ from DocStyleChecker import DocStyleChecker from MiscellaneousChecker import MiscellaneousChecker from ComplexityChecker import ComplexityChecker +from Security.SecurityChecker import SecurityChecker def initService(): @@ -74,7 +76,13 @@ line_number, offset, code, check, *args) if code and (self.counters[code] == 1 or self.__repeat): self.errors.append( - (self.filename, line_number, offset, (code, args)) + { + "file": self.filename, + "line": line_number, + "offset": offset, + "code": code, + "args": args, + } ) return code @@ -104,7 +112,9 @@ flags = [f.strip() for f in comment.split() if (f.startswith("__") and f.endswith("__"))] flags += [f.strip().lower() for f in comment.split() - if f in ("noqa", "NOQA")] + if f in ("noqa", "NOQA", + "nosec", "NOSEC", + "secok", "SECOK")] return flags @@ -123,7 +133,8 @@ if ( "__IGNORE_WARNING__" in lineFlags or - "noqa" in lineFlags + "noqa" in lineFlags or + "nosec" in lineFlags ): # ignore all warning codes return True @@ -138,6 +149,23 @@ return False +def securityOk(code, lineFlags): + """ + Function to check, if the given code is an acknowledged security report. + + @param code error code to be checked + @type str + @param lineFlags list of line flags to check against + @type list of str + @return flag indicating an acknowledged security report + @rtype bool + """ + if lineFlags: + return "secok" in lineFlags + + return False + + def codeStyleCheck(filename, source, args): """ Do the code style check and/or fix found errors. @@ -245,6 +273,48 @@ outputQueue.put((filename, result)) +def __checkSyntax(filename, source): + """ + Private module function to perform a syntax check. + + @param filename source filename + @type str + @param source string containing the code to check + @type str + @return tuple containing the error dictionary with syntax error details + and a statistics dictionary or a tuple containing two None + @rtype tuple of (dict, dict) or tuple of (None, None) + """ + src = "".join(source) + # Check type for py2: if not str it's unicode + if sys.version_info[0] == 2: + try: + src = src.encode('utf-8') + except UnicodeError: + pass + + try: + ast.parse(src, filename, 'exec') + return None, None + except (SyntaxError, TypeError): + exc_type, exc = sys.exc_info()[:2] + if len(exc.args) > 1: + offset = exc.args[1] + if len(offset) > 2: + offset = offset[1:3] + else: + offset = (1, 0) + return ({ + "file": filename, + "line": offset[0], + "offset": offset[1], + "code": "E901", + "args": [exc_type.__name__, exc.args[0]], + }, { + "E901": 1, + }) + + def __checkCodeStyle(filename, source, args): """ Private module function to perform the code style check and/or fix @@ -258,19 +328,29 @@ excludeMessages, includeMessages, repeatMessages, fixCodes, noFixCodes, fixIssues, maxLineLength, maxDocLineLength, blankLines, hangClosing, docType, codeComplexityArgs, miscellaneousArgs, - annotationArgs, errors, eol, encoding, backup) + annotationArgs, securityArgs, errors, eol, encoding, backup) @type list of (str, str, bool, str, str, bool, int, list of (int, int), - bool, str, dict, dict, list of str, str, str, bool) - @return tuple of statistics (dict) and list of results (tuple for each - found violation of style (lineno, position, text, ignored, fixed, - autofixing, fixedMsg)) - @rtype tuple of (dict, list of tuples of (int, int, str, bool, bool, bool, - str)) + bool, str, dict, dict, dict, list of str, str, str, bool) + @return tuple of statistics data and list of result dictionaries with + keys: + <ul> + <li>file: file name</li> + <li>line: line_number</li> + <li>offset: offset within line</li> + <li>code: message code</li> + <li>args: list of arguments to format the message</li> + <li>ignored: flag indicating this issue was ignored</li> + <li>fixed: flag indicating this issue was fixed</li> + <li>autofixing: flag indicating that a fix can be done</li> + <li>fixcode: message code for the fix</li> + <li>fixargs: list of arguments to format the fix message</li> + </ul> + @rtype tuple of (dict, list of dict) """ (excludeMessages, includeMessages, repeatMessages, fixCodes, noFixCodes, fixIssues, maxLineLength, maxDocLineLength, blankLines, hangClosing, - docType, codeComplexityArgs, miscellaneousArgs, annotationArgs, errors, - eol, encoding, backup) = args + docType, codeComplexityArgs, miscellaneousArgs, annotationArgs, + securityArgs, errors, eol, encoding, backup) = args stats = {} @@ -303,111 +383,145 @@ else: ignore = [] - # check coding style - pycodestyle.BLANK_LINES_CONFIG = { - # Top level class and function. - 'top_level': blankLines[0], - # Methods and nested class and function. - 'method': blankLines[1], - } - styleGuide = pycodestyle.StyleGuide( - reporter=CodeStyleCheckerReport, - repeat=repeatMessages, - select=select, - ignore=ignore, - max_line_length=maxLineLength, - max_doc_length=maxDocLineLength, - hang_closing=hangClosing, - ) - report = styleGuide.check_files([filename]) - stats.update(report.counters) - errors = report.errors - - # check documentation style - docStyleChecker = DocStyleChecker( - source, filename, select, ignore, [], repeatMessages, - maxLineLength=maxDocLineLength, docType=docType) - docStyleChecker.run() - stats.update(docStyleChecker.counters) - errors += docStyleChecker.errors + syntaxError, syntaxStats = __checkSyntax(filename, source) + if syntaxError: + errors = [syntaxError] + stats.update(syntaxStats) - # miscellaneous additional checks - miscellaneousChecker = MiscellaneousChecker( - source, filename, select, ignore, [], repeatMessages, - miscellaneousArgs) - miscellaneousChecker.run() - stats.update(miscellaneousChecker.counters) - errors += miscellaneousChecker.errors - - # check code complexity - complexityChecker = ComplexityChecker( - source, filename, select, ignore, codeComplexityArgs) - complexityChecker.run() - stats.update(complexityChecker.counters) - errors += complexityChecker.errors - - # check function annotations - if sys.version_info >= (3, 5, 0): - # annotations are supported from Python 3.5 on - from AnnotationsChecker import AnnotationsChecker - annotationsChecker = AnnotationsChecker( + # perform the checks only, if syntax is ok + else: + # check coding style + pycodestyle.BLANK_LINES_CONFIG = { + # Top level class and function. + 'top_level': blankLines[0], + # Methods and nested class and function. + 'method': blankLines[1], + } + styleGuide = pycodestyle.StyleGuide( + reporter=CodeStyleCheckerReport, + repeat=repeatMessages, + select=select, + ignore=ignore, + max_line_length=maxLineLength, + max_doc_length=maxDocLineLength, + hang_closing=hangClosing, + ) + report = styleGuide.check_files([filename]) + stats.update(report.counters) + errors = report.errors + + # check documentation style + docStyleChecker = DocStyleChecker( source, filename, select, ignore, [], repeatMessages, - annotationArgs) - annotationsChecker.run() - stats.update(annotationsChecker.counters) - errors += annotationsChecker.errors + maxLineLength=maxDocLineLength, docType=docType) + docStyleChecker.run() + stats.update(docStyleChecker.counters) + errors += docStyleChecker.errors + + # miscellaneous additional checks + miscellaneousChecker = MiscellaneousChecker( + source, filename, select, ignore, [], repeatMessages, + miscellaneousArgs) + miscellaneousChecker.run() + stats.update(miscellaneousChecker.counters) + errors += miscellaneousChecker.errors + + # check code complexity + complexityChecker = ComplexityChecker( + source, filename, select, ignore, codeComplexityArgs) + complexityChecker.run() + stats.update(complexityChecker.counters) + errors += complexityChecker.errors + + # check function annotations + if sys.version_info >= (3, 5, 0): + # annotations are supported from Python 3.5 on + from AnnotationsChecker import AnnotationsChecker + annotationsChecker = AnnotationsChecker( + source, filename, select, ignore, [], repeatMessages, + annotationArgs) + annotationsChecker.run() + stats.update(annotationsChecker.counters) + errors += annotationsChecker.errors + + securityChecker = SecurityChecker( + source, filename, select, ignore, [], repeatMessages, + securityArgs) + securityChecker.run() + stats.update(securityChecker.counters) + errors += securityChecker.errors errorsDict = {} - for _fname, lineno, position, text in errors: - if lineno > len(source): - lineno = len(source) + for error in errors: + if error["line"] > len(source): + error["line"] = len(source) # inverse processing of messages and fixes - errorLine = errorsDict.setdefault(lineno, []) - errorLine.append([position, text]) + errorLine = errorsDict.setdefault(error["line"], []) + errorLine.append((error["offset"], error)) deferredFixes = {} results = [] - for lineno, errors in errorsDict.items(): - errors.sort(key=lambda x: x[0], reverse=True) - for position, text in errors: + for lineno, errorsList in errorsDict.items(): + errorsList.sort(key=lambda x: x[0], reverse=True) + for _, error in errorsList: + error.update({ + "ignored": False, + "fixed": False, + "autofixing": False, + "fixcode": "", + "fixargs": [], + "securityOk": False, + }) + if source: - code = text[0] + code = error["code"] lineFlags = extractLineFlags(source[lineno - 1].strip()) try: lineFlags += extractLineFlags(source[lineno].strip(), flagsLine=True) except IndexError: pass - if not ignoreCode(code, lineFlags): + + if securityOk(code, lineFlags): + error["securityOk"] = True + + if ignoreCode(code, lineFlags): + error["ignored"] = True + else: if fixer: - res, msg, id_ = fixer.fixIssue(lineno, position, text) + res, fixcode, fixargs, id_ = fixer.fixIssue( + lineno, error["offset"], code) if res == -1: - itm = [lineno, position, text] - deferredFixes[id_] = itm + deferredFixes[id_] = error else: - itm = [lineno, position, text, False, - res == 1, True, msg] - else: - itm = [lineno, position, text, False, - False, False, ''] - results.append(itm) - else: - results.append([lineno, position, text, True, - False, False, '']) - else: - results.append([lineno, position, text, False, - False, False, '']) + error.update({ + "fixed": res == 1, + "autofixing": True, + "fixcode": fixcode, + "fixargs": fixargs, + }) + + results.append(error) if fixer: deferredResults = fixer.finalize() for id_ in deferredResults: - fixed, msg = deferredResults[id_] - itm = deferredFixes[id_] - itm.extend([False, fixed == 1, True, msg]) + fixed, fixcode, fixargs = deferredResults[id_] + error = deferredFixes[id_] + error.update({ + "ignored": False, + "fixed": fixed == 1, + "autofixing": True, + "fixcode": fixcode, + "fixargs": fixargs, + }) - errMsg = fixer.saveFile(encoding) - if errMsg: - for result in results: - result[-1] = errMsg + saveError = fixer.saveFile(encoding) + if saveError: + for error in results: + error.update({ + "fixcode": saveError[0], + "fixargs": saveError[1], + }) return stats, results
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py Wed Jun 17 17:14:12 2020 +0200 @@ -11,7 +11,7 @@ import os import fnmatch -from PyQt5.QtCore import pyqtSlot, Qt, QTimer +from PyQt5.QtCore import pyqtSlot, Qt, QTimer, QCoreApplication from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import ( QDialog, QTreeWidgetItem, QAbstractButton, QDialogButtonBox, QApplication, @@ -45,10 +45,46 @@ fixableRole = Qt.UserRole + 5 codeRole = Qt.UserRole + 6 ignoredRole = Qt.UserRole + 7 + argsRole = Qt.UserRole + 8 availableFutures = [ 'division', 'absolute_import', 'with_statement', - 'print_function', 'unicode_literals', 'generator_stop'] + 'print_function', 'unicode_literals', 'generator_stop', + 'annotations'] + + cryptoBitSelectionsDsaRsa = [ + "512", "1024", "2048", "4096", "8192", "16384", "32786", + ] + cryptoBitSelectionsEc = [ + "160", "224", "256", "384", "512", + ] + + checkCategories = { + "A": QCoreApplication.translate( + "CheckerCategories", + "Annotations"), + "C": QCoreApplication.translate( + "CheckerCategories", + "Code Complexity"), + "D": QCoreApplication.translate( + "CheckerCategories", + "Documentation"), + "E": QCoreApplication.translate( + "CheckerCategories", + "Errors"), + "M": QCoreApplication.translate( + "CheckerCategories", + "Miscellaneous"), + "N": QCoreApplication.translate( + "CheckerCategories", + "Naming"), + "S": QCoreApplication.translate( + "CheckerCategories", + "Security"), + "W": QCoreApplication.translate( + "CheckerCategories", + "Warnings"), + } noResults = 0 noFiles = 1 @@ -59,8 +95,9 @@ Constructor @param styleCheckService reference to the service - (CodeStyleCheckService) - @param parent reference to the parent widget (QWidget) + @type CodeStyleCheckService + @param parent reference to the parent widget + @type QWidget """ super(CodeStyleCheckerDialog, self).__init__(parent) self.setupUi(self) @@ -80,11 +117,30 @@ self.docTypeComboBox.addItem(self.tr("PEP-257"), "pep257") self.docTypeComboBox.addItem(self.tr("Eric"), "eric") + for category, text in CodeStyleCheckerDialog.checkCategories.items(): + itm = QListWidgetItem(text, self.categoriesList) + itm.setData(Qt.UserRole, category) + itm.setFlags(itm.flags() | Qt.ItemIsUserCheckable) + itm.setCheckState(Qt.Unchecked) + for future in CodeStyleCheckerDialog.availableFutures: itm = QListWidgetItem(future, self.futuresList) itm.setFlags(itm.flags() | Qt.ItemIsUserCheckable) itm.setCheckState(Qt.Unchecked) + self.dsaHighRiskCombo.addItems( + CodeStyleCheckerDialog.cryptoBitSelectionsDsaRsa) + self.dsaMediumRiskCombo.addItems( + CodeStyleCheckerDialog.cryptoBitSelectionsDsaRsa) + self.rsaHighRiskCombo.addItems( + CodeStyleCheckerDialog.cryptoBitSelectionsDsaRsa) + self.rsaMediumRiskCombo.addItems( + CodeStyleCheckerDialog.cryptoBitSelectionsDsaRsa) + self.ecHighRiskCombo.addItems( + CodeStyleCheckerDialog.cryptoBitSelectionsEc) + self.ecMediumRiskCombo.addItems( + CodeStyleCheckerDialog.cryptoBitSelectionsEc) + self.statisticsButton = self.buttonBox.addButton( self.tr("Statistics..."), QDialogButtonBox.ActionRole) self.statisticsButton.setToolTip( @@ -104,6 +160,9 @@ self.addBuiltinButton.setIcon(UI.PixmapCache.getIcon("plus")) self.deleteBuiltinButton.setIcon(UI.PixmapCache.getIcon("minus")) + self.restartButton.setEnabled(False) + self.fixButton.setEnabled(False) + self.checkProgress.setVisible(False) self.checkProgressLabel.setVisible(False) self.checkProgressLabel.setMaximumWidth(600) @@ -130,6 +189,9 @@ self.__noFixCodesList = [] self.on_loadDefaultButton_clicked() + + self.mainWidget.setCurrentWidget(self.configureTab) + self.optionsTabWidget.setCurrentWidget(self.globalOptionsTab) def __resort(self): """ @@ -161,20 +223,38 @@ itm.setForeground(0, Qt.red) itm.setFirstColumnSpanned(True) - def __createResultItem(self, filename, line, pos, message, fixed, - autofixing, ignored): + def __createFileErrorItem(self, filename, message): + """ + Private method to create an error entry for a given file. + + @param filename file name of the file + @type str + @param message error message text + @type str + """ + result = { + "file": filename, + "line": 1, + "offset": 1, + "code": "", + "args": [], + "display": self.tr("Error: {0}").format(message).rstrip(), + "fixed": False, + "autofixing": False, + "ignored": False, + } + self.__createResultItem(filename, result) + + def __createResultItem(self, filename, result): """ Private method to create an entry in the result list. - @param filename file name of the file (string) - @param line line number of issue (integer or string) - @param pos character position of issue (integer or string) - @param message message text (string) - @param fixed flag indicating a fixed issue (boolean) - @param autofixing flag indicating, that we are fixing issues - automatically (boolean) - @param ignored flag indicating an ignored issue (boolean) - @return reference to the created item (QTreeWidgetItem) + @param filename file name of the file + @type str + @param result dictionary containing check result data + @type dict + @return reference to the created item + @rtype QTreeWidgetItem """ from .CodeStyleFixer import FixableCodeStyleIssues @@ -186,24 +266,42 @@ self.__lastFileItem.setExpanded(True) self.__lastFileItem.setData(0, self.filenameRole, filename) + msgCode = result["code"].split(".", 1)[0] + fixable = False - code, message = message.split(None, 1) itm = QTreeWidgetItem( - self.__lastFileItem, - ["{0:6}".format(line), code, message]) - if code.startswith(("W", "-", "C", "M")): + self.__lastFileItem, [ + "{0:6}".format(result["line"]), + msgCode, + result["display"] + ] + ) + if msgCode.startswith(("W", "-", "C", "M")): itm.setIcon(1, UI.PixmapCache.getIcon("warning")) - elif code.startswith("N"): + elif msgCode.startswith(("A", "N")): itm.setIcon(1, UI.PixmapCache.getIcon("namingError")) - elif code.startswith("D"): + elif msgCode.startswith("D"): itm.setIcon(1, UI.PixmapCache.getIcon("docstringError")) + elif msgCode.startswith("S"): + if "severity" in result: + if result["severity"] == "H": + itm.setIcon(1, UI.PixmapCache.getIcon("securityLow")) + elif result["severity"] == "M": + itm.setIcon(1, UI.PixmapCache.getIcon("securityMedium")) + elif result["severity"] == "L": + itm.setIcon(1, UI.PixmapCache.getIcon("securityHigh")) + else: + itm.setIcon(1, UI.PixmapCache.getIcon("securityLow")) + else: + itm.setIcon(1, UI.PixmapCache.getIcon("securityLow")) else: itm.setIcon(1, UI.PixmapCache.getIcon("syntaxError")) - if fixed: + if result["fixed"]: itm.setIcon(0, UI.PixmapCache.getIcon("issueFixed")) elif ( - code in FixableCodeStyleIssues and not autofixing and - code not in self.__noFixCodesList + msgCode in FixableCodeStyleIssues and + not result["autofixing"] and + msgCode not in self.__noFixCodesList ): itm.setIcon(0, UI.PixmapCache.getIcon("issueFixable")) fixable = True @@ -216,14 +314,15 @@ itm.setTextAlignment(2, Qt.AlignVCenter) itm.setData(0, self.filenameRole, filename) - itm.setData(0, self.lineRole, int(line)) - itm.setData(0, self.positionRole, int(pos)) - itm.setData(0, self.messageRole, message) + itm.setData(0, self.lineRole, int(result["line"])) + itm.setData(0, self.positionRole, int(result["offset"])) + itm.setData(0, self.messageRole, result["display"]) itm.setData(0, self.fixableRole, fixable) - itm.setData(0, self.codeRole, code) - itm.setData(0, self.ignoredRole, ignored) + itm.setData(0, self.codeRole, msgCode) + itm.setData(0, self.ignoredRole, result["ignored"]) + itm.setData(0, self.argsRole, result["args"]) - if ignored: + if result["ignored"]: font = itm.font(0) font.setItalic(True) for col in range(itm.columnCount()): @@ -231,33 +330,38 @@ return itm - def __modifyFixedResultItem(self, itm, text, fixed): + def __modifyFixedResultItem(self, itm, result): """ Private method to modify a result list entry to show its positive fixed state. - @param itm reference to the item to modify (QTreeWidgetItem) - @param text text to be appended (string) - @param fixed flag indicating a fixed issue (boolean) + @param itm reference to the item to modify + @type QTreeWidgetItem + @param result dictionary containing check result data + @type dict """ - if fixed: - code, message = text.split(None, 1) - itm.setText(2, message) + if result["fixed"]: + itm.setText(2, result["display"]) itm.setIcon(0, UI.PixmapCache.getIcon("issueFixed")) - itm.setData(0, self.messageRole, message) + itm.setData(0, self.messageRole, result["display"]) else: itm.setIcon(0, QIcon()) itm.setData(0, self.fixableRole, False) - def __updateStatistics(self, statistics, fixer, ignoredErrors): + def __updateStatistics(self, statistics, fixer, ignoredErrors, securityOk): """ Private method to update the collected statistics. @param statistics dictionary of statistical data with message code as key and message count as value - @param fixer reference to the code style fixer (CodeStyleFixer) - @param ignoredErrors number of ignored errors (integer) + @type dict + @param fixer reference to the code style fixer + @type CodeStyleFixer + @param ignoredErrors number of ignored errors + @type int + @param securityOk number of acknowledged security reports + @type int """ self.__statistics["_FilesCount"] += 1 stats = [k for k in statistics.keys() if k[0].isupper()] @@ -270,12 +374,14 @@ self.__statistics[key] = statistics[key] self.__statistics["_IssuesFixed"] += fixer self.__statistics["_IgnoredErrors"] += ignoredErrors + self.__statistics["_SecurityOK"] += securityOk def __updateFixerStatistics(self, fixer): """ Private method to update the collected fixer related statistics. - @param fixer reference to the code style fixer (CodeStyleFixer) + @param fixer reference to the code style fixer + @type CodeStyleFixer """ self.__statistics["_IssuesFixed"] += fixer @@ -288,13 +394,16 @@ self.__statistics["_FilesIssues"] = 0 self.__statistics["_IssuesFixed"] = 0 self.__statistics["_IgnoredErrors"] = 0 + self.__statistics["_SecurityOK"] = 0 def prepare(self, fileList, project): """ Public method to prepare the dialog with a list of filenames. - @param fileList list of filenames (list of strings) - @param project reference to the project object (Project) + @param fileList list of filenames + @type list of str + @param project reference to the project object + @type Project """ self.__fileOrFileList = fileList[:] self.__project = project @@ -318,6 +427,9 @@ "FixCodes": "", "FixIssues": False, } + if "EnabledCheckerCategories" not in self.__data: + self.__data["EnabledCheckerCategories"] = ",".join( + CodeStyleCheckerDialog.checkCategories.keys()) if "MaxLineLength" not in self.__data: self.__data["MaxLineLength"] = pycodestyle.MAX_LINE_LENGTH if "MaxDocLineLength" not in self.__data: @@ -365,6 +477,32 @@ "MaximumComplexity": 3, } + if "SecurityChecker" not in self.__data: + from .Security.SecurityDefaults import SecurityDefaults + self.__data["SecurityChecker"] = { + "HardcodedTmpDirectories": + SecurityDefaults["hardcoded_tmp_directories"], + "InsecureHashes": + SecurityDefaults["insecure_hashes"], + "InsecureSslProtocolVersions": + SecurityDefaults["insecure_ssl_protocol_versions"], + "WeakKeySizeDsaHigh": + str(SecurityDefaults["weak_key_size_dsa_high"]), + "WeakKeySizeDsaMedium": + str(SecurityDefaults["weak_key_size_dsa_medium"]), + "WeakKeySizeRsaHigh": + str(SecurityDefaults["weak_key_size_rsa_high"]), + "WeakKeySizeRsaMedium": + str(SecurityDefaults["weak_key_size_rsa_medium"]), + "WeakKeySizeEcHigh": + str(SecurityDefaults["weak_key_size_ec_high"]), + "WeakKeySizeEcMedium": + str(SecurityDefaults["weak_key_size_ec_medium"]), + "CheckTypedException": + SecurityDefaults["check_typed_exception"], + } + + self.__initCategoriesList(self.__data["EnabledCheckerCategories"]) self.excludeFilesEdit.setText(self.__data["ExcludeFiles"]) self.excludeMessagesEdit.setText(self.__data["ExcludeMessages"]) self.includeMessagesEdit.setText(self.__data["IncludeMessages"]) @@ -396,21 +534,47 @@ self.__data["AnnotationsChecker"]["MinimumCoverage"]) self.maxAnnotationsComplexitySpinBox.setValue( self.__data["AnnotationsChecker"]["MaximumComplexity"]) + + # security + self.tmpDirectoriesEdit.setPlainText("\n".join( + self.__data["SecurityChecker"]["HardcodedTmpDirectories"])) + self.hashesEdit.setText(", ".join( + self.__data["SecurityChecker"]["InsecureHashes"])) + self.insecureSslProtocolsEdit.setPlainText("\n".join( + self.__data["SecurityChecker"]["InsecureSslProtocolVersions"])) + self.dsaHighRiskCombo.setCurrentText( + self.__data["SecurityChecker"]["WeakKeySizeDsaHigh"]) + self.dsaMediumRiskCombo.setCurrentText( + self.__data["SecurityChecker"]["WeakKeySizeDsaMedium"]) + self.rsaHighRiskCombo.setCurrentText( + self.__data["SecurityChecker"]["WeakKeySizeRsaHigh"]) + self.rsaMediumRiskCombo.setCurrentText( + self.__data["SecurityChecker"]["WeakKeySizeRsaMedium"]) + self.ecHighRiskCombo.setCurrentText( + self.__data["SecurityChecker"]["WeakKeySizeEcHigh"]) + self.ecMediumRiskCombo.setCurrentText( + self.__data["SecurityChecker"]["WeakKeySizeEcMedium"]) + self.typedExceptionsCheckBox.setChecked( + self.__data["SecurityChecker"]["CheckTypedException"]) + + self.__cleanupData() def start(self, fn, save=False, repeat=None): """ Public slot to start the code style check. @param fn file or list of files or directory to be checked - (string or list of strings) - @keyparam save flag indicating to save the given - file/file list/directory (boolean) - @keyparam repeat state of the repeat check box if it is not None - (None or boolean) + @type str or list of str + @param save flag indicating to save the given file/file list/directory + @type bool + @param repeat state of the repeat check box if it is not None + @type None or bool """ if self.__project is None: self.__project = e5App().getObject("Project") + self.mainWidget.setCurrentWidget(self.runTab) + self.cancelled = False self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False) self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True) @@ -419,6 +583,7 @@ self.showButton.setEnabled(False) self.fixButton.setEnabled(False) self.startButton.setEnabled(False) + self.restartButton.setEnabled(False) if repeat is not None: self.repeatCheckBox.setChecked(repeat) self.checkProgress.setVisible(True) @@ -453,15 +618,18 @@ self.__errorItem = None self.__resetStatistics() self.__clearErrors(self.files) + self.__cleanupData() if len(self.files) > 0: + self.securityNoteLabel.setVisible( + "S" in self.__getCategories(True, asList=True)) self.checkProgress.setMaximum(len(self.files)) self.checkProgressLabel.setVisible(len(self.files) > 1) self.checkProgress.setVisible(len(self.files) > 1) QApplication.processEvents() # extract the configuration values - excludeMessages = self.excludeMessagesEdit.text() + excludeMessages = self.__assembleExcludeMessages() includeMessages = self.includeMessagesEdit.text() repeatMessages = self.repeatCheckBox.isChecked() fixCodes = self.fixIssuesEdit.text() @@ -506,11 +674,41 @@ self.maxAnnotationsComplexitySpinBox.value(), } + securityArgs = { + "hardcoded_tmp_directories": [ + t.strip() + for t in self.tmpDirectoriesEdit.toPlainText().splitlines() + ], + "insecure_hashes": [ + h.strip() + for h in self.hashesEdit.text().split(",") + ], + "insecure_ssl_protocol_versions": [ + p.strip() + for p in self.insecureSslProtocolsEdit.toPlainText() + .splitlines() + ], + "weak_key_size_dsa_high": + int(self.dsaHighRiskCombo.currentText()), + "weak_key_size_dsa_medium": + int(self.dsaMediumRiskCombo.currentText()), + "weak_key_size_rsa_high": + int(self.rsaHighRiskCombo.currentText()), + "weak_key_size_rsa_medium": + int(self.rsaMediumRiskCombo.currentText()), + "weak_key_size_ec_high": + int(self.ecHighRiskCombo.currentText()), + "weak_key_size_ec_medium": + int(self.ecMediumRiskCombo.currentText()), + "check_typed_exception": + self.typedExceptionsCheckBox.isChecked(), + } + self.__options = [excludeMessages, includeMessages, repeatMessages, fixCodes, noFixCodes, fixIssues, maxLineLength, maxDocLineLength, blankLines, hangClosing, docType, codeComplexityArgs, miscellaneousArgs, - annotationArgs] + annotationArgs, securityArgs] # now go through all the files self.progress = 0 @@ -534,8 +732,10 @@ at the end of the source in order to extend the list of excluded messages for one file only. - @param source source text (list of str or str) + @param source source text + @type list of str or str @return list of checker options + @rtype list """ options = self.__options[:] flags = Utilities.extractFlags(source) @@ -553,7 +753,8 @@ The results are reported to the __processResult slot. - @keyparam codestring optional sourcestring (str) + @param codestring optional sourcestring + @type str """ if not self.files: self.checkProgressLabel.setPath("") @@ -583,10 +784,7 @@ source = source.splitlines(True) except (UnicodeError, IOError) as msg: self.results = CodeStyleCheckerDialog.hasResults - self.__createResultItem( - self.filename, 1, 1, - self.tr("Error: {0}").format(str(msg)) - .rstrip(), False, False, False) + self.__createFileErrorItem(self.filename, str(msg)) self.progress += 1 # Continue with next file self.check() @@ -634,10 +832,7 @@ source = source.splitlines(True) except (UnicodeError, IOError) as msg: self.results = CodeStyleCheckerDialog.hasResults - self.__createResultItem( - filename, 1, 1, - self.tr("Error: {0}").format(str(msg)) - .rstrip(), False, False, False) + self.__createFileErrorItem(filename, str(msg)) continue if encoding.endswith( @@ -694,12 +889,14 @@ """ Private slot called after perfoming a style check on one file. - @param fn filename of the just checked file (str) - @param codeStyleCheckerStats stats of style and name check (dict) - @param fixes number of applied fixes (int) - @param results tuple for each found violation of style (tuple of - lineno (int), position (int), text (str), ignored (bool), - fixed (bool), autofixing (bool)) + @param fn filename of the just checked file + @type str + @param codeStyleCheckerStats stats of style and name check + @type dict + @param fixes number of applied fixes + @type int + @param results dictionary containing check result data + @type dict """ if self.__finished: return @@ -715,27 +912,33 @@ fixed = None ignoredErrors = 0 + securityOk = 0 if self.__itms: - for itm, (_lineno, _position, text, _ignored, fixed, - _autofixing) in zip(self.__itms, results): - self.__modifyFixedResultItem(itm, text, fixed) + for itm, result in zip(self.__itms, results): + self.__modifyFixedResultItem(itm, result) self.__updateFixerStatistics(fixes) else: self.__lastFileItem = None - for lineno, position, text, ignored, fixed, autofixing in results: - if ignored: + for result in results: + if result["ignored"]: ignoredErrors += 1 if self.showIgnored: - text = self.tr("{0} (ignored)").format(text) + result["display"] = self.tr( + "{0} (ignored)" + ).format(result["display"]) else: continue + + elif result["securityOk"]: + securityOk += 1 + continue + self.results = CodeStyleCheckerDialog.hasResults - self.__createResultItem( - fn, lineno, position, text, fixed, autofixing, ignored) + self.__createResultItem(fn, result) self.__updateStatistics( - codeStyleCheckerStats, fixes, ignoredErrors) + codeStyleCheckerStats, fixes, ignoredErrors, securityOk) if fixed: vm = e5App().getObject("ViewManager") @@ -772,6 +975,7 @@ self.statisticsButton.setEnabled(True) self.showButton.setEnabled(True) self.startButton.setEnabled(True) + self.restartButton.setEnabled(True) if self.results != CodeStyleCheckerDialog.hasResults: if self.results == CodeStyleCheckerDialog.noResults: @@ -796,8 +1000,10 @@ """ Private method to get the applicable eol string. - @param fn filename where to determine the line ending (str) - @return eol string (string) + @param fn filename where to determine the line ending + @type str + @return eol string + @rtype str """ if self.__project.isOpen() and self.__project.isProjectFile(fn): eol = self.__project.getEolString() @@ -810,8 +1016,11 @@ """ Private slot to start a code style check run. """ + self.__cleanupData() + if self.__forProject: data = { + "EnabledCheckerCategories": self.__getCategories(True), "ExcludeFiles": self.excludeFilesEdit.text(), "ExcludeMessages": self.excludeMessagesEdit.text(), "IncludeMessages": self.includeMessagesEdit.text(), @@ -845,7 +1054,37 @@ self.minAnnotationsCoverageSpinBox.value(), "MaximumComplexity": self.maxAnnotationsComplexitySpinBox.value(), - } + }, + "SecurityChecker": { + "HardcodedTmpDirectories": [ + t.strip() + for t in self.tmpDirectoriesEdit.toPlainText() + .splitlines() + ], + "InsecureHashes": [ + h.strip() + for h in self.hashesEdit.text().split(",") + ], + "InsecureSslProtocolVersions": [ + p.strip() + for p in self.insecureSslProtocolsEdit.toPlainText() + .splitlines() + ], + "WeakKeySizeDsaHigh": + self.dsaHighRiskCombo.currentText(), + "WeakKeySizeDsaMedium": + self.dsaMediumRiskCombo.currentText(), + "WeakKeySizeRsaHigh": + self.rsaHighRiskCombo.currentText(), + "WeakKeySizeRsaMedium": + self.rsaMediumRiskCombo.currentText(), + "WeakKeySizeEcHigh": + self.ecHighRiskCombo.currentText(), + "WeakKeySizeEcMedium": + self.ecMediumRiskCombo.currentText(), + "CheckTypedException": + self.typedExceptionsCheckBox.isChecked(), + }, } if data != self.__data: self.__data = data @@ -855,18 +1094,31 @@ self.resultList.clear() self.results = CodeStyleCheckerDialog.noResults self.cancelled = False + self.start(self.__fileOrFileList) - def __selectCodes(self, edit, showFixCodes): + @pyqtSlot() + def on_restartButton_clicked(self): + """ + Private slot to restart a code style check run. + """ + self.on_startButton_clicked() + + def __selectCodes(self, edit, categories, showFixCodes): """ Private method to select message codes via a selection dialog. - @param edit reference of the line edit to be populated (QLineEdit) + @param edit reference of the line edit to be populated + @type QLineEdit + @param categories list of message categories to omit + @type list of str @param showFixCodes flag indicating to show a list of fixable - issues (boolean) + issues + @type bool """ from .CodeStyleCodeSelectionDialog import CodeStyleCodeSelectionDialog - dlg = CodeStyleCodeSelectionDialog(edit.text(), showFixCodes, self) + dlg = CodeStyleCodeSelectionDialog(edit.text(), categories, + showFixCodes, self) if dlg.exec_() == QDialog.Accepted: edit.setText(dlg.getSelectedCodes()) @@ -876,7 +1128,9 @@ Private slot to select the message codes to be excluded via a selection dialog. """ - self.__selectCodes(self.excludeMessagesEdit, False) + self.__selectCodes(self.excludeMessagesEdit, + self.__getCategories(False, asList=True), + False) @pyqtSlot() def on_includeMessagesSelectButton_clicked(self): @@ -884,7 +1138,9 @@ Private slot to select the message codes to be included via a selection dialog. """ - self.__selectCodes(self.includeMessagesEdit, False) + self.__selectCodes(self.includeMessagesEdit, + self.__getCategories(True, asList=True), + False) @pyqtSlot() def on_fixIssuesSelectButton_clicked(self): @@ -892,7 +1148,7 @@ Private slot to select the issue codes to be fixed via a selection dialog. """ - self.__selectCodes(self.fixIssuesEdit, True) + self.__selectCodes(self.fixIssuesEdit, [], True) @pyqtSlot() def on_noFixIssuesSelectButton_clicked(self): @@ -900,15 +1156,17 @@ Private slot to select the issue codes not to be fixed via a selection dialog. """ - self.__selectCodes(self.noFixIssuesEdit, True) + self.__selectCodes(self.noFixIssuesEdit, [], True) @pyqtSlot(QTreeWidgetItem, int) def on_resultList_itemActivated(self, item, column): """ Private slot to handle the activation of an item. - @param item reference to the activated item (QTreeWidgetItem) - @param column column the item was activated in (integer) + @param item reference to the activated item + @type QTreeWidgetItem + @param column column the item was activated in + @type int """ if self.results != CodeStyleCheckerDialog.hasResults: return @@ -995,6 +1253,9 @@ """ Private slot to load the default configuration values. """ + self.__initCategoriesList(Preferences.Prefs.settings.value( + "PEP8/EnabledCheckerCategories", + ",".join(CodeStyleCheckerDialog.checkCategories.keys()))) self.excludeFilesEdit.setText(Preferences.Prefs.settings.value( "PEP8/ExcludeFilePatterns", "")) self.excludeMessagesEdit.setText(Preferences.Prefs.settings.value( @@ -1056,6 +1317,51 @@ self.maxAnnotationsComplexitySpinBox.setValue(int( Preferences.Prefs.settings.value( "PEP8/MaximumAnnotationComplexity", 3))) + + # security + from .Security.SecurityDefaults import SecurityDefaults + self.tmpDirectoriesEdit.setPlainText("\n".join( + Preferences.toList(Preferences.Prefs.settings.value( + "PEP8/HardcodedTmpDirectories", + SecurityDefaults["hardcoded_tmp_directories"])))) + self.hashesEdit.setText(", ".join( + Preferences.toList(Preferences.Prefs.settings.value( + "PEP8/InsecureHashes", + SecurityDefaults["insecure_hashes"])))), + self.insecureSslProtocolsEdit.setPlainText("\n".join( + Preferences.toList(Preferences.Prefs.settings.value( + "PEP8/InsecureSslProtocolVersions", + SecurityDefaults["insecure_ssl_protocol_versions"])))), + self.dsaHighRiskCombo.setCurrentText( + Preferences.Prefs.settings.value( + "PEP8/WeakKeySizeDsaHigh", + str(SecurityDefaults["weak_key_size_dsa_high"]))) + self.dsaMediumRiskCombo.setCurrentText( + Preferences.Prefs.settings.value( + "PEP8/WeakKeySizeDsaMedium", + str(SecurityDefaults["weak_key_size_dsa_medium"]))), + self.rsaHighRiskCombo.setCurrentText( + Preferences.Prefs.settings.value( + "PEP8/WeakKeySizeRsaHigh", + str(SecurityDefaults["weak_key_size_rsa_high"]))), + self.rsaMediumRiskCombo.setCurrentText( + Preferences.Prefs.settings.value( + "PEP8/WeakKeySizeRsaMedium", + str(SecurityDefaults["weak_key_size_rsa_medium"]))), + self.ecHighRiskCombo.setCurrentText( + Preferences.Prefs.settings.value( + "PEP8/WeakKeySizeEcHigh", + str(SecurityDefaults["weak_key_size_ec_high"]))), + self.ecMediumRiskCombo.setCurrentText( + Preferences.Prefs.settings.value( + "PEP8/WeakKeySizeEcMedium", + str(SecurityDefaults["weak_key_size_ec_medium"]))), + self.typedExceptionsCheckBox.setChecked(Preferences.toBool( + Preferences.Prefs.settings.value( + "PEP8/CheckTypedException", + SecurityDefaults["check_typed_exception"]))), + + self.__cleanupData() @pyqtSlot() def on_storeDefaultButton_clicked(self): @@ -1064,6 +1370,8 @@ default values. """ Preferences.Prefs.settings.setValue( + "PEP8/EnabledCheckerCategories", self.__getCategories(True)) + Preferences.Prefs.settings.setValue( "PEP8/ExcludeFilePatterns", self.excludeFilesEdit.text()) Preferences.Prefs.settings.setValue( "PEP8/ExcludeMessages", self.excludeMessagesEdit.text()) @@ -1119,12 +1427,53 @@ Preferences.Prefs.settings.setValue( "PEP8/MaximumAnnotationComplexity", self.maxAnnotationsComplexitySpinBox.value()) + + # security + Preferences.Prefs.settings.setValue( + "PEP8/HardcodedTmpDirectories", + [t.strip() + for t in self.tmpDirectoriesEdit.toPlainText().splitlines() + ]), + Preferences.Prefs.settings.setValue( + "PEP8/InsecureHashes", + [h.strip() + for h in self.hashesEdit.text().split(",") + ]), + Preferences.Prefs.settings.setValue( + "PEP8/InsecureSslProtocolVersions", + [p.strip() + for p in self.insecureSslProtocolsEdit.toPlainText().splitlines() + ]), + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeDsaHigh", + self.dsaHighRiskCombo.currentText()), + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeDsaMedium", + self.dsaMediumRiskCombo.currentText()), + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeRsaHigh", + self.rsaHighRiskCombo.currentText()), + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeRsaMedium", + self.rsaMediumRiskCombo.currentText()), + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeEcHigh", + self.ecHighRiskCombo.currentText()), + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeEcMedium", + self.ecMediumRiskCombo.currentText()), + Preferences.Prefs.settings.setValue( + "PEP8/CheckTypedException", + self.typedExceptionsCheckBox.isChecked()), @pyqtSlot() def on_resetDefaultButton_clicked(self): """ Private slot to reset the configuration values to their default values. """ + Preferences.Prefs.settings.setValue( + "PEP8/EnabledCheckerCategories", + ",".join(CodeStyleCheckerDialog.checkCategories.keys())) Preferences.Prefs.settings.setValue("PEP8/ExcludeFilePatterns", "") Preferences.Prefs.settings.setValue( "PEP8/ExcludeMessages", pycodestyle.DEFAULT_IGNORE) @@ -1163,6 +1512,39 @@ Preferences.Prefs.settings.setValue( "PEP8/MaximumAnnotationComplexity", 3) + # security + from .Security.SecurityDefaults import SecurityDefaults + Preferences.Prefs.settings.setValue( + "PEP8/HardcodedTmpDirectories", + SecurityDefaults["hardcoded_tmp_directories"]) + Preferences.Prefs.settings.setValue( + "PEP8/InsecureHashes", + SecurityDefaults["insecure_hashes"]) + Preferences.Prefs.settings.setValue( + "PEP8/InsecureSslProtocolVersions", + SecurityDefaults["insecure_ssl_protocol_versions"]) + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeDsaHigh", + str(SecurityDefaults["weak_key_size_dsa_high"])) + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeDsaMedium", + str(SecurityDefaults["weak_key_size_dsa_medium"])) + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeRsaHigh", + str(SecurityDefaults["weak_key_size_rsa_high"])) + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeRsaMedium", + str(SecurityDefaults["weak_key_size_rsa_medium"])) + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeEcHigh", + str(SecurityDefaults["weak_key_size_ec_high"])) + Preferences.Prefs.settings.setValue( + "PEP8/WeakKeySizeEcMedium", + str(SecurityDefaults["weak_key_size_ec_medium"])) + Preferences.Prefs.settings.setValue( + "PEP8/CheckTypedException", + SecurityDefaults["check_typed_exception"]) + # Update UI with default values self.on_loadDefaultButton_clicked() @@ -1171,7 +1553,8 @@ """ Private slot called by a button of the button box clicked. - @param button button that was clicked (QAbstractButton) + @param button button that was clicked + @type QAbstractButton """ if button == self.buttonBox.button(QDialogButtonBox.Close): self.close() @@ -1191,7 +1574,8 @@ Private method to clear all warning markers of open editors to be checked. - @param files list of files to be checked (list of string) + @param files list of files to be checked + @type list of str """ vm = e5App().getObject("ViewManager") openFiles = vm.getOpenFilenames() @@ -1205,7 +1589,7 @@ Private slot to fix selected issues. Build a dictionary of issues to fix. Update the initialized __options. - Then call check with the dict as keyparam to fix selected issues. + Then call check with the dict as keyparam to fix selected issues. """ fixableItems = self.__getSelectedFixableItems() # dictionary of lists of tuples containing the issue and the item @@ -1215,10 +1599,14 @@ if filename not in fixesDict: fixesDict[filename] = [] fixesDict[filename].append(( - (filename, itm.data(0, self.lineRole), - itm.data(0, self.positionRole), - "{0} {1}".format(itm.data(0, self.codeRole), - itm.data(0, self.messageRole))), + { + "file": filename, + "line": itm.data(0, self.lineRole), + "offset": itm.data(0, self.positionRole), + "code": itm.data(0, self.codeRole), + "display": itm.data(0, self.messageRole), + "args": itm.data(0, self.argsRole), + }, itm )) @@ -1241,7 +1629,8 @@ """ Private method to extract all selected items for fixable issues. - @return selected items for fixable issues (list of QTreeWidgetItem) + @return selected items for fixable issues + @rtype list of QTreeWidgetItem """ fixableItems = [] for itm in self.resultList.selectedItems(): @@ -1259,8 +1648,10 @@ """ Private method to check, if an item has a fixable issue. - @param itm item to be checked (QTreeWidgetItem) - @return flag indicating a fixable issue (boolean) + @param itm item to be checked + @type QTreeWidgetItem + @return flag indicating a fixable issue + @rtype bool """ return (itm.data(0, self.fixableRole) and not itm.data(0, self.ignoredRole)) @@ -1362,3 +1753,97 @@ index = self.builtinsAssignmentList.indexOfTopLevelItem(itm) self.builtinsAssignmentList.takeTopLevelItem(index) del itm + + def __initCategoriesList(self, enabledCategories): + """ + Private method to set the enabled status of the checker categories. + + @param enabledCategories comma separated list of enabled checker + categories + @type str + """ + if enabledCategories: + enabledCategoriesList = [ + c.strip() for c in enabledCategories.split(",") + if bool(c.strip())] + else: + enabledCategoriesList = list( + CodeStyleCheckerDialog.checkCategories.keys()) + for row in range(self.categoriesList.count()): + itm = self.categoriesList.item(row) + if itm.data(Qt.UserRole) in enabledCategoriesList: + itm.setCheckState(Qt.Checked) + else: + itm.setCheckState(Qt.Unchecked) + + def __getCategories(self, enabled, asList=False): + """ + Private method to get the enabled or disabled checker categories. + + @param enabled flag indicating to return enabled categories + @type bool + @param asList flag indicating to return the checker categories as a + Python list + @type bool + @return checker categories as a list or comma separated string + @rtype str or list of str + """ + state = Qt.Checked if enabled else Qt.Unchecked + + checkerList = [] + for row in range(self.categoriesList.count()): + itm = self.categoriesList.item(row) + if itm.checkState() == state: + checkerList.append(itm.data(Qt.UserRole)) + if asList: + return checkerList + else: + return ", ".join(checkerList) + + def __assembleExcludeMessages(self): + """ + Private method to assemble the list of excluded checks. + + @return list of excluded checks as a comma separated string. + @rtype str + """ + excludeMessages = self.excludeMessagesEdit.text() + disabledCategories = self.__getCategories(False) + + if excludeMessages and disabledCategories: + return disabledCategories + "," + excludeMessages + elif disabledCategories: + return disabledCategories + elif excludeMessages: + return excludeMessages + else: + return "" + + def __cleanupData(self): + """ + Private method to clean the loaded/entered data of redundant entries. + """ + # Migrate single letter exclude messages to disabled checker categories + # and delete them from exlude messages + excludedMessages = [ + m.strip() + for m in self.excludeMessagesEdit.text().split(",") + if bool(m) + ] + excludedMessageCategories = [ + c for c in excludedMessages if len(c) == 1 + ] + enabledCheckers = self.__getCategories(True, asList=True) + for category in excludedMessageCategories: + if category in enabledCheckers: + enabledCheckers.remove(category) + excludedMessages.remove(category) + + # Remove excluded messages of an already excluded category + disabledCheckers = self.__getCategories(False, asList=True) + for message in excludedMessages[:]: + if message[0] in disabledCheckers: + excludedMessages.remove(message) + + self.excludeMessagesEdit.setText(",".join(excludedMessages)) + self.__initCategoriesList(",".join(enabledCheckers))
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui Wed Jun 17 17:14:12 2020 +0200 @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>700</width> + <width>800</width> <height>700</height> </rect> </property> @@ -21,485 +21,876 @@ <property name="sizeGripEnabled"> <bool>true</bool> </property> - <layout class="QVBoxLayout" name="verticalLayout_7"> + <layout class="QVBoxLayout" name="verticalLayout_9"> <item> - <widget class="QFrame" name="filterFrame"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>4</verstretch> - </sizepolicy> - </property> - <property name="frameShape"> - <enum>QFrame::NoFrame</enum> + <widget class="QTabWidget" name="mainWidget"> + <property name="currentIndex"> + <number>0</number> </property> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QTabWidget" name="optionsTabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="tab_1"> - <attribute name="title"> - <string>Global Options</string> - </attribute> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Exclude Files:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="E5ClearableLineEdit" name="excludeFilesEdit"> - <property name="toolTip"> - <string>Enter filename patterns of files to be excluded separated by a comma</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Exclude Messages:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="E5ClearableLineEdit" name="excludeMessagesEdit"> - <property name="toolTip"> - <string>Enter message codes or categories to be excluded separated by a comma</string> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QToolButton" name="excludeMessagesSelectButton"> - <property name="toolTip"> - <string>Press to select the message codes from a list</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Included Messages:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="E5ClearableLineEdit" name="includeMessagesEdit"> - <property name="toolTip"> - <string>Enter message codes or categories to be included separated by a comma</string> - </property> - </widget> - </item> - <item row="2" column="2"> - <widget class="QToolButton" name="includeMessagesSelectButton"> - <property name="toolTip"> - <string>Press to select the message codes from a list</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string>Fix Issues:</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="E5ClearableLineEdit" name="fixIssuesEdit"> - <property name="toolTip"> - <string>Enter message codes of issues to be fixed automatically (leave empty to fix all)</string> - </property> - </widget> - </item> - <item row="3" column="2"> - <widget class="QToolButton" name="fixIssuesSelectButton"> - <property name="toolTip"> - <string>Press to select the message codes from a list</string> - </property> - </widget> - </item> - <item row="4" column="0"> - <widget class="QLabel" name="label_6"> - <property name="text"> - <string>Don't Fix Issues:</string> - </property> - </widget> - </item> - <item row="4" column="1"> - <widget class="E5ClearableLineEdit" name="noFixIssuesEdit"> - <property name="toolTip"> - <string>Enter message codes of issues not to be fixed automatically</string> - </property> - </widget> - </item> - <item row="4" column="2"> - <widget class="QToolButton" name="noFixIssuesSelectButton"> - <property name="toolTip"> - <string>Press to select the message codes from a list</string> - </property> - </widget> - </item> - <item row="5" column="0" colspan="3"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QCheckBox" name="repeatCheckBox"> - <property name="toolTip"> - <string>Select to repeat each message type</string> - </property> - <property name="text"> - <string>Repeat messages</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="fixIssuesCheckBox"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="toolTip"> - <string>Select to fix some issues</string> - </property> - <property name="text"> - <string>Fix issues automatically</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="ignoredCheckBox"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="toolTip"> - <string>Select to show ignored issues</string> - </property> - <property name="text"> - <string>Show ignored</string> + <widget class="QWidget" name="configureTab"> + <attribute name="title"> + <string>Configure</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QTabWidget" name="optionsTabWidget"> + <property name="currentIndex"> + <number>0</number> + </property> + <widget class="QWidget" name="globalOptionsTab"> + <attribute name="title"> + <string>Global Options</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="0" column="0"> + <widget class="QLabel" name="label_20"> + <property name="text"> + <string>Categories:</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QListWidget" name="categoriesList"> + <property name="toolTip"> + <string>Select the categories of checks to be performed.</string> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Exclude Files:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="E5ClearableLineEdit" name="excludeFilesEdit"> + <property name="toolTip"> + <string>Enter filename patterns of files to be excluded separated by a comma</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Exclude Messages:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="E5ClearableLineEdit" name="excludeMessagesEdit"> + <property name="toolTip"> + <string>Enter message codes to be excluded separated by a comma</string> + </property> + </widget> + </item> + <item row="2" column="2"> + <widget class="QToolButton" name="excludeMessagesSelectButton"> + <property name="toolTip"> + <string>Press to select the message codes from a list</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Included Messages:</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="E5ClearableLineEdit" name="includeMessagesEdit"> + <property name="toolTip"> + <string>Enter message codes to be included separated by a comma</string> + </property> + </widget> + </item> + <item row="3" column="2"> + <widget class="QToolButton" name="includeMessagesSelectButton"> + <property name="toolTip"> + <string>Press to select the message codes from a list</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Fix Issues:</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="E5ClearableLineEdit" name="fixIssuesEdit"> + <property name="toolTip"> + <string>Enter message codes of issues to be fixed automatically (leave empty to fix all)</string> + </property> + </widget> + </item> + <item row="4" column="2"> + <widget class="QToolButton" name="fixIssuesSelectButton"> + <property name="toolTip"> + <string>Press to select the message codes from a list</string> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>Don't Fix Issues:</string> + </property> + </widget> + </item> + <item row="5" column="1"> + <widget class="E5ClearableLineEdit" name="noFixIssuesEdit"> + <property name="toolTip"> + <string>Enter message codes of issues not to be fixed automatically</string> + </property> + </widget> + </item> + <item row="5" column="2"> + <widget class="QToolButton" name="noFixIssuesSelectButton"> + <property name="toolTip"> + <string>Press to select the message codes from a list</string> + </property> + </widget> + </item> + <item row="6" column="0" colspan="3"> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QCheckBox" name="repeatCheckBox"> + <property name="toolTip"> + <string>Select to repeat each message type</string> + </property> + <property name="text"> + <string>Repeat messages</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="fixIssuesCheckBox"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="toolTip"> + <string>Select to fix some issues</string> + </property> + <property name="text"> + <string>Fix issues automatically</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="ignoredCheckBox"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="toolTip"> + <string>Select to show ignored issues</string> + </property> + <property name="text"> + <string>Show ignored</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="7" column="0"> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>68</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <widget class="QWidget" name="specificOptionsTab"> + <attribute name="title"> + <string>Specific Options</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <property name="leftMargin"> + <number>1</number> + </property> + <property name="topMargin"> + <number>1</number> + </property> + <property name="rightMargin"> + <number>1</number> + </property> + <property name="bottomMargin"> + <number>1</number> + </property> + <item> + <widget class="QScrollArea" name="scrollArea"> + <property name="frameShape"> + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Plain</enum> + </property> + <property name="verticalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOn</enum> + </property> + <property name="widgetResizable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="scrollAreaWidgetContents"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>637</width> + <height>884</height> + </rect> </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item row="6" column="0" colspan="2"> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>68</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab_2"> - <attribute name="title"> - <string>Specific Options</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <property name="leftMargin"> - <number>1</number> - </property> - <property name="topMargin"> - <number>1</number> - </property> - <property name="rightMargin"> - <number>1</number> - </property> - <property name="bottomMargin"> - <number>1</number> - </property> - <item> - <widget class="QScrollArea" name="scrollArea"> - <property name="frameShape"> - <enum>QFrame::NoFrame</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Plain</enum> - </property> - <property name="verticalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOn</enum> - </property> - <property name="widgetResizable"> - <bool>true</bool> - </property> - <widget class="QWidget" name="scrollAreaWidgetContents"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>543</width> - <height>887</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout_6"> - <item> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string>Source Style</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <layout class="QGridLayout" name="gridLayout_5"> - <item row="0" column="0"> - <widget class="QLabel" name="label_5"> - <property name="text"> - <string>Max. Line Length:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="lineLengthSpinBox"> - <property name="toolTip"> - <string>Enter the maximum allowed line length (PEP-8: 79 characters)</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="minimum"> - <number>60</number> - </property> - <property name="maximum"> - <number>119</number> - </property> - <property name="value"> - <number>79</number> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_17"> - <property name="text"> - <string>Max. Documentation Line Length:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QSpinBox" name="docLineLengthSpinBox"> - <property name="toolTip"> - <string>Enter the maximum allowed line length (PEP-8: 79 characters)</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="minimum"> - <number>60</number> - </property> - <property name="maximum"> - <number>119</number> - </property> - <property name="value"> - <number>79</number> - </property> - </widget> - </item> - <item row="0" column="2"> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <widget class="QGroupBox" name="groupBox_8"> - <property name="title"> - <string>Blank Lines Before</string> - </property> - <layout class="QGridLayout" name="gridLayout_3"> + <layout class="QVBoxLayout" name="verticalLayout_6"> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Source Style</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <layout class="QGridLayout" name="gridLayout_5"> <item row="0" column="0"> - <widget class="QLabel" name="label_15"> + <widget class="QLabel" name="label_5"> <property name="text"> - <string>Top Level Classes and Functions:</string> + <string>Max. Line Length:</string> </property> </widget> </item> <item row="0" column="1"> - <widget class="QSpinBox" name="blankBeforeTopLevelSpinBox"> + <widget class="QSpinBox" name="lineLengthSpinBox"> <property name="toolTip"> - <string>Enter the number of blank lines before top level classes and functions</string> + <string>Enter the maximum allowed line length (PEP-8: 79 characters)</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="minimum"> + <number>60</number> + </property> + <property name="maximum"> + <number>119</number> + </property> + <property name="value"> + <number>79</number> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_17"> + <property name="text"> + <string>Max. Documentation Line Length:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QSpinBox" name="docLineLengthSpinBox"> + <property name="toolTip"> + <string>Enter the maximum allowed line length (PEP-8: 79 characters)</string> </property> <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> <property name="minimum"> - <number>1</number> + <number>60</number> </property> <property name="maximum"> - <number>10</number> + <number>119</number> </property> <property name="value"> - <number>2</number> + <number>79</number> </property> </widget> </item> <item row="0" column="2"> - <spacer name="horizontalSpacer_6"> + <spacer name="horizontalSpacer_3"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> - <width>153</width> + <width>40</width> <height>20</height> </size> </property> </spacer> </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_16"> - <property name="text"> - <string>Methods and Nested Classes and Functions:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QSpinBox" name="blankBeforeMethodSpinBox"> + </layout> + </item> + <item> + <widget class="QGroupBox" name="groupBox_8"> + <property name="title"> + <string>Blank Lines Before</string> + </property> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="0" column="0"> + <widget class="QLabel" name="label_15"> + <property name="text"> + <string>Top Level Classes and Functions:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="blankBeforeTopLevelSpinBox"> + <property name="toolTip"> + <string>Enter the number of blank lines before top level classes and functions</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>10</number> + </property> + <property name="value"> + <number>2</number> + </property> + </widget> + </item> + <item row="0" column="2"> + <spacer name="horizontalSpacer_6"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>153</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_16"> + <property name="text"> + <string>Methods and Nested Classes and Functions:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QSpinBox" name="blankBeforeMethodSpinBox"> + <property name="toolTip"> + <string>Enter the number of blank lines before methods and nested classes or functions</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>10</number> + </property> + <property name="value"> + <number>1</number> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QCheckBox" name="hangClosingCheckBox"> + <property name="toolTip"> + <string>Select to allow hanging closing brackets</string> + </property> + <property name="text"> + <string>Allow hanging closing brackets</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>Documentation Style</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QLabel" name="label_7"> + <property name="text"> + <string>Docstring Type:</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="docTypeComboBox"> + <property name="toolTip"> + <string>Select the rule set for docstrings</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_4"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>297</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_4"> + <property name="title"> + <string>Coding Line</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_6"> + <item> + <widget class="QLabel" name="label_9"> + <property name="text"> + <string>Valid Encodings:</string> + </property> + </widget> + </item> + <item> + <widget class="E5ClearableLineEdit" name="encodingsEdit"> + <property name="toolTip"> + <string>Enter valid encodings separated by a comma (leave empty to use defaults)</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_5"> + <property name="title"> + <string>Copyright</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label_10"> + <property name="text"> + <string>Min. File Size:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="copyrightFileSizeSpinBox"> + <property name="toolTip"> + <string>Enter the minimum size a file must have to be checked (0 for all files)</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="maximum"> + <number>4096</number> + </property> + </widget> + </item> + <item row="0" column="2"> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>324</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_11"> + <property name="text"> + <string>Author:</string> + </property> + </widget> + </item> + <item row="1" column="1" colspan="2"> + <widget class="E5ClearableLineEdit" name="copyrightAuthorEdit"> + <property name="toolTip"> + <string>Enter a copyright author name to check for (leave empty to omit this check)</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_6"> + <property name="title"> + <string>Future Imports</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_7"> + <item> + <widget class="QLabel" name="label_12"> + <property name="text"> + <string>Expected Imports:</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> + </property> + </widget> + </item> + <item> + <widget class="QListWidget" name="futuresList"> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::ExtendedSelection</enum> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_7"> + <property name="title"> + <string>Ignore Built-ins Assignment</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_8"> + <item> + <widget class="QTreeWidget" name="builtinsAssignmentList"> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>Left</string> + </property> + </column> + <column> + <property name="text"> + <string>Right</string> + </property> + </column> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item alignment="Qt::AlignHCenter"> + <widget class="QToolButton" name="addBuiltinButton"> <property name="toolTip"> - <string>Enter the number of blank lines before methods and nested classes or functions</string> + <string>Press to add a built-in assignment to be ignored</string> </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>10</number> - </property> - <property name="value"> - <number>1</number> + <property name="text"> + <string notr="true">+</string> </property> </widget> </item> + <item alignment="Qt::AlignHCenter"> + <widget class="QToolButton" name="deleteBuiltinButton"> + <property name="toolTip"> + <string>Press to delete the selected entries</string> + </property> + <property name="text"> + <string notr="true">-</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_3"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> </layout> - </widget> - </item> - <item> - <widget class="QCheckBox" name="hangClosingCheckBox"> - <property name="toolTip"> - <string>Select to allow hanging closing brackets</string> - </property> - <property name="text"> - <string>Allow hanging closing brackets</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_9"> + <property name="title"> + <string>Commented Code</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QCheckBox" name="aggressiveCheckBox"> + <property name="toolTip"> + <string>Select to search for commented code more aggressively. This may increase the number of false positives.</string> + </property> + <property name="text"> + <string>Search aggressively</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_3"> + <property name="title"> + <string>Code Complexity</string> + </property> + <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="2" rowspan="2"> + <spacer name="horizontalSpacer_5"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>313</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label_8"> + <property name="text"> + <string>Max. McCabe Complexity:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="complexitySpinBox"> + <property name="toolTip"> + <string>Enter the maximum allowed code complexity (McCabe: 10)</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="maximum"> + <number>100</number> + </property> + <property name="value"> + <number>10</number> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_13"> + <property name="text"> + <string>Max. Line Complexity:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QSpinBox" name="lineComplexitySpinBox"> + <property name="toolTip"> + <string>Enter the maximum complexity (number of nodes) for a line of code</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="maximum"> + <number>100</number> + </property> + <property name="value"> + <number>15</number> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_14"> + <property name="text"> + <string>Max. Line Complexity Score:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QSpinBox" name="lineComplexityScoreSpinBox"> + <property name="toolTip"> + <string>Enter the maximum allowed median for line complexity</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="maximum"> + <number>100</number> + </property> + <property name="value"> + <number>10</number> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_10"> + <property name="title"> + <string>Type Annotations</string> + </property> + <layout class="QGridLayout" name="gridLayout_6"> + <item row="0" column="0"> + <widget class="QLabel" name="label_18"> + <property name="text"> + <string>Min. Coverage:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="minAnnotationsCoverageSpinBox"> + <property name="toolTip"> + <string>Enter the minimum percentage of type annotations</string> + </property> + <property name="specialValueText"> + <string>off</string> + </property> + <property name="suffix"> + <string>%</string> + </property> + <property name="maximum"> + <number>100</number> + </property> + </widget> + </item> + <item row="0" column="2"> + <spacer name="horizontalSpacer_7"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>352</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_19"> + <property name="text"> + <string>Max. Complexity:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QSpinBox" name="maxAnnotationsComplexitySpinBox"> + <property name="toolTip"> + <string>Enter the maximum type annotation complexity</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>9</number> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="securityOptionsTab"> + <attribute name="title"> + <string>Security Options</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_7"> + <item row="0" column="0"> + <widget class="QLabel" name="label_21"> + <property name="text"> + <string>Hardcoded 'tmp' Directories:</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> + </property> + </widget> + </item> + <item row="3" column="0" colspan="2"> + <widget class="QGroupBox" name="groupBox_11"> + <property name="title"> + <string>Weak Cryptographic Keys</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_10"> <item> - <widget class="QGroupBox" name="groupBox_2"> + <widget class="QGroupBox" name="groupBox_12"> <property name="title"> - <string>Documentation Style</string> + <string>DSA</string> </property> - <layout class="QHBoxLayout" name="horizontalLayout_3"> + <layout class="QHBoxLayout" name="horizontalLayout_5"> <item> - <widget class="QLabel" name="label_7"> + <widget class="QLabel" name="label_24"> <property name="text"> - <string>Docstring Type:</string> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="docTypeComboBox"> - <property name="toolTip"> - <string>Select the rule set for docstrings</string> + <string>High Risk:</string> </property> </widget> </item> <item> - <spacer name="horizontalSpacer_4"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>297</width> - <height>20</height> - </size> + <widget class="QComboBox" name="dsaHighRiskCombo"> + <property name="toolTip"> + <string>Select the bit length below which a DSA key is to be considered very weak</string> </property> - </spacer> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_4"> - <property name="title"> - <string>Coding Line</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_6"> - <item> - <widget class="QLabel" name="label_9"> - <property name="text"> - <string>Valid Encodings:</string> + <property name="editable"> + <bool>false</bool> </property> </widget> </item> <item> - <widget class="E5ClearableLineEdit" name="encodingsEdit"> - <property name="toolTip"> - <string>Enter valid encodings separated by a comma (leave empty to use defaults)</string> + <widget class="QLabel" name="label_25"> + <property name="text"> + <string>Medium Risk:</string> </property> </widget> </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_5"> - <property name="title"> - <string>Copyright</string> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="label_10"> - <property name="text"> - <string>Min. File Size:</string> + <item> + <widget class="QComboBox" name="dsaMediumRiskCombo"> + <property name="toolTip"> + <string>Select the bit length below which a DSA key is to be considered weak</string> + </property> + <property name="editable"> + <bool>false</bool> </property> </widget> </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="copyrightFileSizeSpinBox"> - <property name="toolTip"> - <string>Enter the minimum size a file must have to be checked (0 for all files)</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="maximum"> - <number>4096</number> - </property> - </widget> - </item> - <item row="0" column="2"> - <spacer name="horizontalSpacer_2"> + <item> + <spacer name="horizontalSpacer_8"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> @@ -511,454 +902,379 @@ </property> </spacer> </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_11"> - <property name="text"> - <string>Author:</string> - </property> - </widget> - </item> - <item row="1" column="1" colspan="2"> - <widget class="E5ClearableLineEdit" name="copyrightAuthorEdit"> - <property name="toolTip"> - <string>Enter a copyright author name to check for (leave empty to omit this check)</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_6"> - <property name="title"> - <string>Future Imports</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_7"> - <item> - <widget class="QLabel" name="label_12"> - <property name="text"> - <string>Expected Imports:</string> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> - </property> - </widget> - </item> - <item> - <widget class="QListWidget" name="futuresList"> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="selectionMode"> - <enum>QAbstractItemView::ExtendedSelection</enum> - </property> - <property name="sortingEnabled"> - <bool>true</bool> - </property> - </widget> - </item> </layout> </widget> </item> <item> - <widget class="QGroupBox" name="groupBox_7"> + <widget class="QGroupBox" name="groupBox_13"> <property name="title"> - <string>Ignore Built-ins Assignment</string> + <string>RSA</string> </property> - <layout class="QHBoxLayout" name="horizontalLayout_8"> + <layout class="QHBoxLayout" name="horizontalLayout_9"> <item> - <widget class="QTreeWidget" name="builtinsAssignmentList"> - <property name="alternatingRowColors"> - <bool>true</bool> + <widget class="QLabel" name="label_26"> + <property name="text"> + <string>High Risk:</string> </property> - <property name="rootIsDecorated"> + </widget> + </item> + <item> + <widget class="QComboBox" name="rsaHighRiskCombo"> + <property name="toolTip"> + <string>Select the bit length below which a RSA key is to be considered very weak</string> + </property> + <property name="editable"> <bool>false</bool> </property> - <property name="sortingEnabled"> - <bool>true</bool> - </property> - <column> - <property name="text"> - <string>Left</string> - </property> - </column> - <column> - <property name="text"> - <string>Right</string> - </property> - </column> </widget> </item> <item> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <item alignment="Qt::AlignHCenter"> - <widget class="QToolButton" name="addBuiltinButton"> - <property name="toolTip"> - <string>Press to add a built-in assignment to be ignored</string> - </property> - <property name="text"> - <string notr="true">+</string> - </property> - </widget> - </item> - <item alignment="Qt::AlignHCenter"> - <widget class="QToolButton" name="deleteBuiltinButton"> - <property name="toolTip"> - <string>Press to delete the selected entries</string> - </property> - <property name="text"> - <string notr="true">-</string> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer_3"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_9"> - <property name="title"> - <string>Commented Code</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QCheckBox" name="aggressiveCheckBox"> - <property name="toolTip"> - <string>Select to search for commented code more aggressively. This may increase the number of false positives.</string> - </property> + <widget class="QLabel" name="label_27"> <property name="text"> - <string>Search aggressively</string> + <string>Medium Risk:</string> </property> </widget> </item> + <item> + <widget class="QComboBox" name="rsaMediumRiskCombo"> + <property name="toolTip"> + <string>Select the bit length below which a RSA key is to be considered weak</string> + </property> + <property name="editable"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_9"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> </layout> </widget> </item> <item> - <widget class="QGroupBox" name="groupBox_3"> + <widget class="QGroupBox" name="groupBox_14"> <property name="title"> - <string>Code Complexity</string> + <string>Elliptic Curves</string> </property> - <layout class="QGridLayout" name="gridLayout_4"> - <item row="0" column="2" rowspan="2"> - <spacer name="horizontalSpacer_5"> + <layout class="QHBoxLayout" name="horizontalLayout_10"> + <item> + <widget class="QLabel" name="label_28"> + <property name="text"> + <string>High Risk:</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="ecHighRiskCombo"> + <property name="toolTip"> + <string>Select the bit length below which an Elliptic Curve is to be considered very weak</string> + </property> + <property name="editable"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_29"> + <property name="text"> + <string>Medium Risk:</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="ecMediumRiskCombo"> + <property name="toolTip"> + <string>Select the bit length below which an Elliptic Curve is to be considered weak</string> + </property> + <property name="editable"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_10"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> - <width>313</width> + <width>40</width> <height>20</height> </size> </property> </spacer> </item> - <item row="0" column="0"> - <widget class="QLabel" name="label_8"> - <property name="text"> - <string>Max. McCabe Complexity:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="complexitySpinBox"> - <property name="toolTip"> - <string>Enter the maximum allowed code complexity (McCabe: 10)</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="maximum"> - <number>100</number> - </property> - <property name="value"> - <number>10</number> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_13"> - <property name="text"> - <string>Max. Line Complexity:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QSpinBox" name="lineComplexitySpinBox"> - <property name="toolTip"> - <string>Enter the maximum complexity (number of nodes) for a line of code</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="maximum"> - <number>100</number> - </property> - <property name="value"> - <number>15</number> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_14"> - <property name="text"> - <string>Max. Line Complexity Score:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QSpinBox" name="lineComplexityScoreSpinBox"> - <property name="toolTip"> - <string>Enter the maximum allowed median for line complexity</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="maximum"> - <number>100</number> - </property> - <property name="value"> - <number>10</number> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_10"> - <property name="title"> - <string>Type Annotations</string> - </property> - <layout class="QGridLayout" name="gridLayout_6"> - <item row="0" column="0"> - <widget class="QLabel" name="label_18"> - <property name="text"> - <string>Min. Coverage:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="minAnnotationsCoverageSpinBox"> - <property name="toolTip"> - <string>Enter the minimum percentage of type annotations</string> - </property> - <property name="specialValueText"> - <string>off</string> - </property> - <property name="suffix"> - <string>%</string> - </property> - <property name="maximum"> - <number>100</number> - </property> - </widget> - </item> - <item row="0" column="2"> - <spacer name="horizontalSpacer_7"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>352</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_19"> - <property name="text"> - <string>Max. Complexity:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QSpinBox" name="maxAnnotationsComplexitySpinBox"> - <property name="toolTip"> - <string>Enter the maximum type annotation complexity</string> - </property> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>9</number> - </property> - </widget> - </item> </layout> </widget> </item> </layout> </widget> - </widget> - </item> - </layout> - </widget> - </widget> - </item> - <item> - <widget class="Line" name="line"> - <property name="lineWidth"> - <number>2</number> - </property> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - </widget> - </item> - <item> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QPushButton" name="startButton"> - <property name="toolTip"> - <string>Press to start the code style check run</string> - </property> - <property name="text"> - <string>&Start</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="fixButton"> - <property name="toolTip"> - <string>Press to fix the selected issues</string> - </property> - <property name="text"> - <string>&Fix Selected</string> - </property> + </item> + <item row="2" column="1"> + <widget class="QPlainTextEdit" name="insecureSslProtocolsEdit"> + <property name="toolTip"> + <string>Enter the names of insecure SSL protocols and methods (one per line)</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_23"> + <property name="text"> + <string>Insecure SSL Protocols:</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_22"> + <property name="text"> + <string>Insecure Hashes:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="E5ClearableLineEdit" name="hashesEdit"> + <property name="toolTip"> + <string>Enter a list of hash methods to be considered insecure separated by comma</string> + </property> + </widget> + </item> + <item row="4" column="0" colspan="2"> + <widget class="QCheckBox" name="typedExceptionsCheckBox"> + <property name="toolTip"> + <string>Select to also check for insecure exception handling for typed exceptions</string> + </property> + <property name="text"> + <string>Check Typed Exceptions</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QPlainTextEdit" name="tmpDirectoriesEdit"> + <property name="toolTip"> + <string>Enter directory names (one per line) to be checked for</string> + </property> + </widget> + </item> + </layout> </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>18</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="loadDefaultButton"> - <property name="toolTip"> - <string>Press to load the default values</string> - </property> - <property name="text"> - <string>&Load Defaults</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="storeDefaultButton"> - <property name="toolTip"> - <string>Press to store the current values as defaults</string> - </property> - <property name="text"> - <string>St&ore Defaults</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="resetDefaultButton"> - <property name="toolTip"> - <string>Press to reset the default values</string> - </property> - <property name="text"> - <string>&Reset Defaults</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QTreeWidget" name="resultList"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>6</verstretch> - </sizepolicy> - </property> - <property name="whatsThis"> - <string><b>Result List</b> + </widget> + </item> + <item> + <widget class="Line" name="line"> + <property name="lineWidth"> + <number>2</number> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QPushButton" name="startButton"> + <property name="toolTip"> + <string>Press to start the code style check run</string> + </property> + <property name="text"> + <string>&Start</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>18</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="loadDefaultButton"> + <property name="toolTip"> + <string>Press to load the default values</string> + </property> + <property name="text"> + <string>&Load Defaults</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="storeDefaultButton"> + <property name="toolTip"> + <string>Press to store the current values as defaults</string> + </property> + <property name="text"> + <string>St&ore Defaults</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="resetDefaultButton"> + <property name="toolTip"> + <string>Press to reset the default values</string> + </property> + <property name="text"> + <string>&Reset Defaults</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QWidget" name="runTab"> + <attribute name="title"> + <string>Run</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <item> + <widget class="QLabel" name="securityNoteLabel"> + <property name="text"> + <string><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</string> + </property> + </widget> + </item> + <item> + <widget class="QTreeWidget" name="resultList"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>6</verstretch> + </sizepolicy> + </property> + <property name="whatsThis"> + <string><b>Result List</b> <p>This list shows the results of the code style check. Double clicking an entry will open this entry in an editor window and position the cursor at the respective line and position.</p></string> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="selectionMode"> - <enum>QAbstractItemView::ExtendedSelection</enum> - </property> - <property name="sortingEnabled"> - <bool>true</bool> - </property> - <column> - <property name="text"> - <string>File/Line</string> - </property> - </column> - <column> - <property name="text"> - <string>Code</string> - </property> - </column> - <column> - <property name="text"> - <string>Message</string> - </property> - </column> - </widget> - </item> - <item> - <widget class="E5SqueezeLabelPath" name="checkProgressLabel"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item> - <widget class="QProgressBar" name="checkProgress"> - <property name="toolTip"> - <string>Shows the progress of the code style check</string> - </property> - <property name="value"> - <number>0</number> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="format"> - <string>%v/%m Files</string> - </property> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::ExtendedSelection</enum> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>File/Line</string> + </property> + </column> + <column> + <property name="text"> + <string>Code</string> + </property> + </column> + <column> + <property name="text"> + <string>Message</string> + </property> + </column> + </widget> + </item> + <item> + <widget class="E5SqueezeLabelPath" name="checkProgressLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="checkProgress"> + <property name="toolTip"> + <string>Shows the progress of the code style check</string> + </property> + <property name="value"> + <number>0</number> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="format"> + <string>%v/%m Files</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line_2"> + <property name="lineWidth"> + <number>2</number> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_8"> + <item> + <widget class="QPushButton" name="restartButton"> + <property name="toolTip"> + <string>Press to restart the code style check run</string> + </property> + <property name="text"> + <string>Restart</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="fixButton"> + <property name="toolTip"> + <string>Press to fix the selected issues</string> + </property> + <property name="text"> + <string>&Fix Selected</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_4"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>18</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> </widget> </item> <item> @@ -987,7 +1303,9 @@ </customwidget> </customwidgets> <tabstops> + <tabstop>mainWidget</tabstop> <tabstop>optionsTabWidget</tabstop> + <tabstop>categoriesList</tabstop> <tabstop>excludeFilesEdit</tabstop> <tabstop>excludeMessagesEdit</tabstop> <tabstop>excludeMessagesSelectButton</tabstop> @@ -1020,12 +1338,23 @@ <tabstop>lineComplexityScoreSpinBox</tabstop> <tabstop>minAnnotationsCoverageSpinBox</tabstop> <tabstop>maxAnnotationsComplexitySpinBox</tabstop> - <tabstop>startButton</tabstop> - <tabstop>fixButton</tabstop> + <tabstop>tmpDirectoriesEdit</tabstop> + <tabstop>hashesEdit</tabstop> + <tabstop>insecureSslProtocolsEdit</tabstop> + <tabstop>dsaHighRiskCombo</tabstop> + <tabstop>dsaMediumRiskCombo</tabstop> + <tabstop>rsaHighRiskCombo</tabstop> + <tabstop>rsaMediumRiskCombo</tabstop> + <tabstop>ecHighRiskCombo</tabstop> + <tabstop>ecMediumRiskCombo</tabstop> + <tabstop>typedExceptionsCheckBox</tabstop> + <tabstop>resetDefaultButton</tabstop> <tabstop>loadDefaultButton</tabstop> <tabstop>storeDefaultButton</tabstop> - <tabstop>resetDefaultButton</tabstop> + <tabstop>startButton</tabstop> <tabstop>resultList</tabstop> + <tabstop>fixButton</tabstop> + <tabstop>restartButton</tabstop> </tabstops> <resources/> <connections>
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCodeSelectionDialog.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCodeSelectionDialog.py Wed Jun 17 17:14:12 2020 +0200 @@ -7,12 +7,15 @@ Module implementing a dialog to select code style message codes. """ +import textwrap from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QDialog, QTreeWidgetItem from .Ui_CodeStyleCodeSelectionDialog import Ui_CodeStyleCodeSelectionDialog +from .translations import getMessageCodes, getTranslatedMessage + import UI.PixmapCache @@ -20,45 +23,64 @@ """ Class implementing a dialog to select code style message codes. """ - def __init__(self, codes, showFixCodes, parent=None): + def __init__(self, codes, categories, showFixCodes, parent=None): """ Constructor - @param codes comma separated list of selected codes (string) + @param codes comma separated list of selected codes + @type str + @param categories list of message categories to omit + @type list of str @param showFixCodes flag indicating to show a list of fixable - issues (boolean) - @param parent reference to the parent widget (QWidget) + issues + @type bool + @param parent reference to the parent widget + @type QWidget """ super(CodeStyleCodeSelectionDialog, self).__init__(parent) self.setupUi(self) + textWrapper = textwrap.TextWrapper(width=60) + self.codeTable.headerItem().setText(self.codeTable.columnCount(), "") codeList = [code.strip() for code in codes.split(",") if code.strip()] - - from .translations import _messages, _messages_sample_args + if categories: + codeList = [code for code in codeList if not code[0] in categories] if showFixCodes: from .CodeStyleFixer import FixableCodeStyleIssues selectableCodes = FixableCodeStyleIssues else: - selectableCodes = [x for x in list(_messages.keys()) - if not x.startswith('F')] + selectableCodes = ( + [x for x in getMessageCodes() if not x.startswith('FIX')] + ) + if categories: + # filter by category + selectableCodes = [x for x in selectableCodes + if not x[0] in categories] for code in sorted(selectableCodes): - if code in _messages_sample_args: - message = _messages[code].format(*_messages_sample_args[code]) - elif code in _messages: - message = _messages[code] - else: - continue - itm = QTreeWidgetItem(self.codeTable, [code, message]) + message = getTranslatedMessage(code, [], example=True) + if message is None: + # try with extension + for ext in ("L", "M", "H", "1"): + message = getTranslatedMessage("{0}.{1}".format(code, ext), + [], example=True) + if message is not None: + break + else: + continue + itm = QTreeWidgetItem(self.codeTable, [ + code, "\n".join(textWrapper.wrap(message))]) if code.startswith(("W", "C", "M")): itm.setIcon(0, UI.PixmapCache.getIcon("warning")) elif code.startswith("E"): itm.setIcon(0, UI.PixmapCache.getIcon("syntaxError")) - elif code.startswith("N"): + elif code.startswith(("A", "N")): itm.setIcon(0, UI.PixmapCache.getIcon("namingError")) elif code.startswith("D"): itm.setIcon(0, UI.PixmapCache.getIcon("docstringError")) + elif code.startswith("S"): + itm.setIcon(0, UI.PixmapCache.getIcon("securityLow")) else: # unknown category prefix => warning itm.setIcon(0, UI.PixmapCache.getIcon("warning")) @@ -78,7 +100,8 @@ """ Public method to get a comma separated list of codes selected. - @return comma separated list of selected codes (string) + @return comma separated list of selected codes + @rtype str """ selectedCodes = []
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCodeSelectionDialog.ui Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCodeSelectionDialog.ui Wed Jun 17 17:14:12 2020 +0200 @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>450</width> - <height>350</height> + <width>500</width> + <height>400</height> </rect> </property> <property name="windowTitle">
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleFixer.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleFixer.py Wed Jun 17 17:14:12 2020 +0200 @@ -18,8 +18,8 @@ import re import tokenize -# CodeStyleCheckerDialog tries to import FixableCodeStyleIssues what fail under -# Python3. So ignore it. +# CodeStyleCheckerDialog tries to import FixableCodeStyleIssues which fails +# under Python3. So ignore it. try: import pycodestyle except ImportError: @@ -238,7 +238,7 @@ fp.write(txt) except (IOError, UnicodeError) as err: # Could not save the file! Skipping it. Reason: {0} - return ("FWRITE_ERROR", (str(err),)) + return ("FIXWRITE_ERROR", [str(err)]) return None @@ -272,22 +272,21 @@ return True - def fixIssue(self, line, pos, message): + def fixIssue(self, line, pos, code): """ Public method to fix the fixable issues. - @param line line number of issue (integer) - @param pos character position of issue (integer) - @param message message text (string) + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param code code of the issue + @type str @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, arguments list for the message + and an ID for a deferred fix + @rtype tuple of (int, str, list, int) """ - if isinstance(message, (tuple, list)): - code = message[0].strip() - else: - code = message.split(None, 1)[0].strip() - if ( line <= len(self.__source) and self.__codeMatch(code) and @@ -298,7 +297,7 @@ self.__modified = True self.fixed += 1 else: - res = (0, "", 0) + res = (0, "", [], 0) return res @@ -312,19 +311,19 @@ # step 1: do fixes operating on logical lines first for id_, code, line, pos in self.__stackLogical: - res, msg, _ = self.__fixes[code](code, line, pos, apply=True) + res, msg, args, _ = self.__fixes[code](code, line, pos, apply=True) if res == 1: self.__modified = True self.fixed += 1 - results[id_] = (res, msg) + results[id_] = (res, msg, args) # step 2: do fixes that change the number of lines for id_, code, line, pos in reversed(self.__stack): - res, msg, _ = self.__fixes[code](code, line, pos, apply=True) + res, msg, args, _ = self.__fixes[code](code, line, pos, apply=True) if res == 1: self.__modified = True self.fixed += 1 - results[id_] = (res, msg) + results[id_] = (res, msg, args) return results @@ -527,12 +526,16 @@ Codes: D111 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ line = line - 1 quotes = re.match(r"""\s*[ru]?('''|'|\")""", @@ -547,7 +550,7 @@ line += 1 # Triple single quotes converted to triple double quotes. - return (1, "FD111", 0) + return (1, "FIXD111", [], 0) def __fixD112(self, code, line, pos): """ @@ -555,12 +558,16 @@ Codes: D112, D113 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ line = line - 1 if code == "D112": @@ -577,7 +584,7 @@ ) self.__source[line] = newText # Introductory quotes corrected to be {0}""" - return (1, ('FD112', (insertChar,)), 0) + return (1, 'FIXD112', [insertChar], 0) def __fixD121(self, code, line, pos, apply=False): """ @@ -585,21 +592,25 @@ Codes: D121 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 if not self.__source[line].lstrip().startswith( ('"""', 'r"""', 'u"""')): # only correctly formatted docstrings will be fixed - return (0, "", 0) + return (0, "", [], 0) docstring = ( self.__source[line].rstrip() + @@ -614,11 +625,11 @@ self.__source[line] = docstring self.__source[line + 1] = "" # Single line docstring put on one line. - return (1, "FD121", 0) + return (1, "FIXD121", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixD131(self, code, line, pos): """ @@ -627,12 +638,16 @@ Codes: D131 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ line = line - 1 newText = "" @@ -660,9 +675,9 @@ if newText: self.__source[line] = newText # Period added to summary line. - return (1, "FD131", 0) + return (1, "FIXD131", [], 0) else: - return (0, "", 0) + return (0, "", [], 0) def __fixD141(self, code, line, pos, apply=False): """ @@ -671,24 +686,28 @@ Codes: D141 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 self.__source[line - 1] = "" # Blank line before function/method docstring removed. - return (1, "FD141", 0) + return (1, "FIXD141", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixD142(self, code, line, pos, apply=False): """ @@ -697,24 +716,28 @@ Codes: D142 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 self.__source[line] = self.__eol + self.__source[line] # Blank line inserted before class docstring. - return (1, "FD142", 0) + return (1, "FIXD142", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixD143(self, code, line, pos, apply=False): """ @@ -723,24 +746,28 @@ Codes: D143 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 self.__source[line] += self.__eol # Blank line inserted after class docstring. - return (1, "FD143", 0) + return (1, "FIXD143", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixD144(self, code, line, pos, apply=False): """ @@ -749,14 +776,18 @@ Codes: D144 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 @@ -766,11 +797,11 @@ self.__source[line] += self.__eol # Blank line inserted after docstring summary. - return (1, "FD144", 0) + return (1, "FIXD144", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixD145(self, code, line, pos, apply=False): """ @@ -779,24 +810,28 @@ Codes: D143 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 self.__source[line] = self.__eol + self.__source[line] # Blank line inserted after last paragraph of docstring. - return (1, "FD145", 0) + return (1, "FIXD145", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixD221(self, code, line, pos, apply=False): """ @@ -805,14 +840,18 @@ Codes: D221, D222 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 @@ -838,15 +877,15 @@ self.__source[line] = newText if code == "D221": # Leading quotes put on separate line. - msg = "FD221" + msg = "FIXD221" else: # Trailing quotes put on separate line. - msg = "FD222" - return (1, msg, 0) + msg = "FIXD222" + return (1, msg, [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixD242(self, code, line, pos, apply=False): """ @@ -855,29 +894,33 @@ Codes: D242, D244 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 self.__source[line - 1] = "" if code == "D242": # Blank line before class docstring removed. - msg = "FD242" + msg = "FIXD242" else: # Blank line before function/method docstring removed. - msg = "FD244" - return (1, msg, 0) + msg = "FIXD244" + return (1, msg, [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixD243(self, code, line, pos, apply=False): """ @@ -886,29 +929,33 @@ Codes: D243, D245 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 self.__source[line + 1] = "" if code == "D243": # Blank line after class docstring removed. - msg = "FD243" + msg = "FIXD243" else: # Blank line after function/method docstring removed. - msg = "FD245" - return (1, msg, 0) + msg = "FIXD245" + return (1, msg, [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixD247(self, code, line, pos, apply=False): """ @@ -917,24 +964,28 @@ Codes: D247 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 self.__source[line - 1] = "" # Blank line after last paragraph removed. - return (1, "FD247", 0) + return (1, "FIXD247", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE101(self, code, line, pos): """ @@ -942,12 +993,16 @@ Codes: E101, E111, W191 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if self.__reindenter is None: self.__reindenter = Reindenter(self.__source) @@ -957,13 +1012,13 @@ self.__source[line - 1] = fixedLine if code in ["E101", "W191"]: # Tab converted to 4 spaces. - msg = "FE101" + msg = "FIXE101" else: # Indentation adjusted to be a multiple of four. - msg = "FE111" - return (1, msg, 0) + msg = "FIXE111" + return (1, msg, [], 0) else: - return (0, "", 0) + return (0, "", [], 0) def __fixE121(self, code, line, pos, apply=False): """ @@ -972,14 +1027,18 @@ Codes: E121, E124 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: logical = self.__getLogical(line, pos) @@ -989,16 +1048,16 @@ if changed: if code == "E121": # Indentation of continuation line corrected. - msg = "FE121" + msg = "FIXE121" elif code == "E124": # Indentation of closing bracket corrected. - msg = "FE124" - return (1, msg, 0) - return (0, "", 0) + msg = "FIXE124" + return (1, msg, [], 0) + return (0, "", [], 0) else: fixId = self.__getID() self.__stackLogical.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE122(self, code, line, pos, apply=False): """ @@ -1006,14 +1065,18 @@ Codes: E122 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: logical = self.__getLogical(line, pos) @@ -1030,12 +1093,12 @@ self.__indentWord + text.lstrip() ) # Missing indentation of continuation line corrected. - return (1, "FE122", 0) - return (0, "", 0) + return (1, "FIXE122", [], 0) + return (0, "", [], 0) else: fixId = self.__getID() self.__stackLogical.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE123(self, code, line, pos, apply=False): """ @@ -1043,14 +1106,18 @@ Codes: E123 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: logical = self.__getLogical(line, pos) @@ -1068,12 +1135,12 @@ changed = True if changed: # Closing bracket aligned to opening bracket. - return (1, "FE123", 0) - return (0, "", 0) + return (1, "FIXE123", [], 0) + return (0, "", [], 0) else: fixId = self.__getID() self.__stackLogical.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE125(self, code, line, pos, apply=False): """ @@ -1082,14 +1149,18 @@ Codes: E125 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: logical = self.__getLogical(line, pos) @@ -1104,12 +1175,12 @@ self.__indentWord + text.lstrip() ) # Indentation level changed. - return (1, "FE125", 0) - return (0, "", 0) + return (1, "FIXE125", [], 0) + return (0, "", [], 0) else: fixId = self.__getID() self.__stackLogical.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE126(self, code, line, pos, apply=False): """ @@ -1118,14 +1189,18 @@ Codes: E126, E133 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: logical = self.__getLogical(line, pos) @@ -1146,12 +1221,12 @@ changed = True if changed: # Indentation level of hanging indentation changed. - return (1, "FE126", 0) - return (0, "", 0) + return (1, "FIXE126", [], 0) + return (0, "", [], 0) else: fixId = self.__getID() self.__stackLogical.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE127(self, code, line, pos, apply=False): """ @@ -1159,14 +1234,18 @@ Codes: E127, E128 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: logical = self.__getLogical(line, pos) @@ -1204,12 +1283,12 @@ changed = True if changed: # Visual indentation corrected. - return (1, "FE127", 0) - return (0, "", 0) + return (1, "FIXE127", [], 0) + return (0, "", [], 0) else: fixId = self.__getID() self.__stackLogical.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE201(self, code, line, pos): """ @@ -1217,26 +1296,30 @@ Codes: E201, E202, E203, E211 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ line = line - 1 text = self.__source[line] if '"""' in text or "'''" in text or text.rstrip().endswith('\\'): - return (0, "", 0) + return (0, "", [], 0) newText = self.__fixWhitespace(text, pos, '') if newText == text: - return (0, "", 0) + return (0, "", [], 0) self.__source[line] = newText # Extraneous whitespace removed. - return (1, "FE201", 0) + return (1, "FIXE201", [], 0) def __fixE221(self, code, line, pos): """ @@ -1245,25 +1328,29 @@ Codes: E221, E222, E223, E224, E241, E242, E271, E272, E273, E274 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ line = line - 1 text = self.__source[line] if '"""' in text or "'''" in text or text.rstrip().endswith('\\'): - return (0, "", 0) + return (0, "", [], 0) newText = self.__fixWhitespace(text, pos, ' ') if newText == text: - return (0, "", 0) + return (0, "", [], 0) self.__source[line] = newText - return (1, "FE221", 0) + return (1, "FIXE221", [], 0) def __fixE225(self, code, line, pos): """ @@ -1271,18 +1358,22 @@ Codes: E225, E226, E227, E228 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ line = line - 1 text = self.__source[line] if '"""' in text or "'''" in text or text.rstrip().endswith('\\'): - return (0, "", 0) + return (0, "", [], 0) newText = text # determine length of operator @@ -1300,11 +1391,11 @@ newText = self.__fixWhitespace(newText, pos2, ' ') newText = self.__fixWhitespace(newText, pos, ' ') if newText == text: - return (0, "", 0) + return (0, "", [], 0) self.__source[line] = newText # Missing whitespaces added. - return (1, "FE225", 0) + return (1, "FIXE225", [], 0) def __fixE231(self, code, line, pos): """ @@ -1312,12 +1403,16 @@ Codes: E231 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ line = line - 1 pos = pos + 1 @@ -1327,7 +1422,7 @@ self.__source[line][pos:] ) # Missing whitespace added. - return (1, "FE231", 0) + return (1, "FIXE231", [], 0) def __fixE251(self, code, line, pos): """ @@ -1336,12 +1431,16 @@ Codes: E251 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ line = line - 1 text = self.__source[line] @@ -1362,7 +1461,7 @@ else: self.__source[line] = newText # Extraneous whitespace removed. - return (1, "FE251", 0) + return (1, "FIXE251", [], 0) def __fixE261(self, code, line, pos): """ @@ -1370,12 +1469,16 @@ Codes: E261, E262 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ line = line - 1 text = self.__source[line] @@ -1384,7 +1487,7 @@ newText = left + (" # " + right if right.strip() else right) self.__source[line] = newText # Whitespace around comment sign corrected. - return (1, "FE261", 0) + return (1, "FIXE261", [], 0) def __fixBlankLinesBefore(self, code, line, pos, apply=False): """ @@ -1393,14 +1496,18 @@ Codes: E301, E302, E303, E305, E306, E307, E308 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: if code in ["E301", "E306", "E307"]: @@ -1428,7 +1535,7 @@ self.__source.insert(line, self.__eol) delta += 1 # %n blank line(s) inserted. - return (1, ("FE302+", blankLinesBefore - blanks), 0) + return (1, "FIXE302+", blankLinesBefore - blanks, 0) elif delta > 0: # delete superfluous blank lines while delta > 0: @@ -1436,13 +1543,13 @@ line -= 1 delta -= 1 # %n superfluous line(s) removed. - return (1, ("FE302-", blanks - blankLinesBefore), 0) + return (1, "FIXE302-", blanks - blankLinesBefore, 0) else: - return (0, "", 0) + return (0, "", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE304(self, code, line, pos, apply=False): """ @@ -1451,14 +1558,18 @@ Codes: E304 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: index = line - 2 @@ -1469,11 +1580,11 @@ else: break # Superfluous blank lines after function decorator removed. - return (1, "FE304", 0) + return (1, "FIXE304", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE401(self, code, line, pos, apply=False): """ @@ -1481,26 +1592,30 @@ Codes: E401 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 text = self.__source[line] if not text.lstrip().startswith("import"): - return (0, "", 0) + return (0, "", [], 0) # pycodestyle (1.3.1) reports false positive if there is an import # statement followed by a semicolon and some unrelated # statement with commas in it. if ';' in text: - return (0, "", 0) + return (0, "", [], 0) newText = ( text[:pos].rstrip("\t ,") + @@ -1511,11 +1626,11 @@ ) self.__source[line] = newText # Imports were put on separate lines. - return (1, "FE401", 0) + return (1, "FIXE401", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE501(self, code, line, pos, apply=False): """ @@ -1523,14 +1638,18 @@ Codes: E501 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: multilineStringLines, docStringLines = ( @@ -1560,13 +1679,13 @@ newNextText = "" self.__source[line + 1] = newNextText # Long lines have been shortened. - return (1, "FE501", 0) + return (1, "FIXE501", [], 0) else: - return (0, "", 0) + return (0, "", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE502(self, code, line, pos): """ @@ -1574,19 +1693,23 @@ Codes: E502 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ self.__source[line - 1] = ( self.__source[line - 1].rstrip("\n\r \t\\") + self.__eol ) # Redundant backslash in brackets removed. - return (1, "FE502", 0) + return (1, "FIXE502", [], 0) def __fixE701(self, code, line, pos, apply=False): """ @@ -1594,14 +1717,18 @@ Codes: E701 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 @@ -1618,11 +1745,11 @@ ) self.__source[line] = newText # Compound statement corrected. - return (1, "FE701", 0) + return (1, "FIXE701", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE702(self, code, line, pos, apply=False): """ @@ -1630,14 +1757,18 @@ Codes: E702, E703 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 @@ -1654,11 +1785,11 @@ second = text[pos:].lstrip("\n\r \t;") self.__source[line] = first + self.__getIndent(text) + second # Compound statement corrected. - return (1, "FE702", 0) + return (1, "FIXE702", [], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixE711(self, code, line, pos): """ @@ -1666,12 +1797,16 @@ Codes: E711, E712 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ line = line - 1 text = self.__source[line] @@ -1685,18 +1820,18 @@ right = text[rightPos:].lstrip() if not right.startswith(("None", "True", "False")): - return (0, "", 0) + return (0, "", [], 0) if center.strip() == "==": center = "is" elif center.strip() == "!=": center = "is not" else: - return (0, "", 0) + return (0, "", [], 0) self.__source[line] = " ".join([left, center, right]) # Comparison to None/True/False corrected. - return (1, "FE711", 0) + return (1, "FIXE711", [], 0) def __fixN804(self, code, line, pos, apply=False): """ @@ -1705,14 +1840,18 @@ Codes: N804, N805 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 @@ -1742,11 +1881,11 @@ newText = left + center + right self.__source[line] = newText # '{0}' argument added. - return (1, ("FN804", (arg,)), 0) + return (1, "FIXN804", [arg], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixN806(self, code, line, pos, apply=False): """ @@ -1754,14 +1893,18 @@ Codes: N806 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) - @keyparam apply flag indicating, that the fix should be applied - (boolean) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int + @param apply flag indicating, that the fix should be applied + @type bool @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ if apply: line = line - 1 @@ -1804,11 +1947,11 @@ self.__source[line] = indent + right # '{0}' argument removed. - return (1, ("FN806", arg), 0) + return (1, "FIXN806", [arg], 0) else: fixId = self.__getID() self.__stack.append((fixId, code, line, pos)) - return (-1, "", fixId) + return (-1, "", [], fixId) def __fixW291(self, code, line, pos): """ @@ -1816,17 +1959,21 @@ Codes: W291, W293 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ self.__source[line - 1] = re.sub(r'[\t ]+(\r?)$', r"\1", self.__source[line - 1]) # Whitespace stripped from end of line. - return (1, "FW291", 0) + return (1, "FIXW291", [], 0) def __fixW292(self, code, line, pos): """ @@ -1834,16 +1981,20 @@ Codes: W292 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ self.__source[line - 1] += self.__eol # newline added to end of file. - return (1, "FW292", 0) + return (1, "FIXW292", [], 0) def __fixW391(self, code, line, pos): """ @@ -1851,12 +2002,16 @@ Codes: W391 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ index = line - 1 while index: @@ -1866,7 +2021,7 @@ else: break # Superfluous trailing blank lines removed from end of file. - return (1, "FW391", 0) + return (1, "FIXW391", [], 0) def __fixW603(self, code, line, pos): """ @@ -1874,16 +2029,20 @@ Codes: W603 - @param code code of the issue (string) - @param line line number of the issue (integer) - @param pos position inside line (integer) + @param code code of the issue + @type str + @param line line number of the issue + @type int + @param pos position inside line + @type int @return value indicating an applied/deferred fix (-1, 0, 1), - a message for the fix (string) and an ID for a deferred - fix (integer) + a message code for the fix, a list of arguments for the + message and an ID for a deferred fix + @rtype tuple of (int, str, list or int, int) """ self.__source[line - 1] = self.__source[line - 1].replace("<>", "!=") # '<>' replaced by '!='. - return (1, "FW603", 0) + return (1, "FIXW603", [], 0) class Reindenter(object):
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py Wed Jun 17 17:14:12 2020 +0200 @@ -8,11 +8,12 @@ style checker run. """ +import textwrap from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QDialog, QTreeWidgetItem -from .translations import _messages, _messages_sample_args +from .translations import getTranslatedMessage from .Ui_CodeStyleStatisticsDialog import Ui_CodeStyleStatisticsDialog @@ -39,22 +40,24 @@ filesIssues = stats["_FilesIssues"] fixesCount = stats["_IssuesFixed"] ignoresCount = stats["_IgnoredErrors"] + securityOk = stats["_SecurityOK"] del stats["_FilesCount"] del stats["_FilesIssues"] del stats["_IssuesFixed"] del stats["_IgnoredErrors"] + del stats["_SecurityOK"] totalIssues = 0 + textWrapper = textwrap.TextWrapper(width=80) + for code in sorted(stats.keys()): - message = _messages.get(code) + message = getTranslatedMessage(code, [], example=True) if message is None: continue - if code in _messages_sample_args: - message = message.format(*_messages_sample_args[code]) - - self.__createItem(stats[code], code, message) + self.__createItem(stats[code], code, + "\n".join(textWrapper.wrap(message))) totalIssues += stats[code] self.totalIssues.setText( @@ -67,6 +70,8 @@ self.tr("%n file(s) checked", "", filesCount)) self.filesIssues.setText( self.tr("%n file(s) with issues found", "", filesIssues)) + self.securityOk.setText( + self.tr("%n security issue(s) acknowledged", "", securityOk)) self.statisticsList.resizeColumnToContents(0) self.statisticsList.resizeColumnToContents(1) @@ -79,10 +84,8 @@ @param code of a code style issue message (string) @param message code style issue message to be shown (string) """ - itm = QTreeWidgetItem(self.statisticsList) - itm.setData(0, Qt.DisplayRole, count) - itm.setData(1, Qt.DisplayRole, code) - itm.setData(2, Qt.DisplayRole, message) + itm = QTreeWidgetItem(self.statisticsList, [ + "{0:6d}".format(count), code, message]) if code.startswith(("W", "C", "M")): itm.setIcon(1, UI.PixmapCache.getIcon("warning")) elif code.startswith("E"): @@ -91,6 +94,8 @@ itm.setIcon(1, UI.PixmapCache.getIcon("namingError")) elif code.startswith("D"): itm.setIcon(1, UI.PixmapCache.getIcon("docstringError")) + elif code.startswith("S"): + itm.setIcon(1, UI.PixmapCache.getIcon("securityLow")) - itm.setTextAlignment(0, Qt.AlignRight) - itm.setTextAlignment(1, Qt.AlignHCenter) + itm.setTextAlignment(0, Qt.AlignRight | Qt.AlignVCenter) + itm.setTextAlignment(1, Qt.AlignHCenter | Qt.AlignVCenter)
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.ui Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.ui Wed Jun 17 17:14:12 2020 +0200 @@ -59,6 +59,9 @@ <item row="2" column="0"> <widget class="QLabel" name="fixedIssues"/> </item> + <item row="2" column="1"> + <widget class="QLabel" name="securityOk"/> + </item> </layout> </item> <item>
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/ComplexityChecker.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/ComplexityChecker.py Wed Jun 17 17:14:12 2020 +0200 @@ -104,7 +104,14 @@ if code: # record the issue with one based line number self.errors.append( - (self.__filename, lineNumber, offset, (code, args))) + { + "file": self.__filename, + "line": lineNumber, + "offset": offset, + "code": code, + "args": args, + } + ) def __reportInvalidSyntax(self): """
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py Wed Jun 17 17:14:12 2020 +0200 @@ -308,7 +308,14 @@ if code and (self.counters[code] == 1 or self.__repeat): # record the issue with one based line number self.errors.append( - (self.__filename, lineNumber + 1, offset, (code, args))) + { + "file": self.__filename, + "line": lineNumber + 1, + "offset": offset, + "code": code, + "args": args, + } + ) def __reportInvalidSyntax(self): """
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/MiscellaneousChecker.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/MiscellaneousChecker.py Wed Jun 17 17:14:12 2020 +0200 @@ -261,7 +261,14 @@ if code and (self.counters[code] == 1 or self.__repeat): # record the issue with one based line number self.errors.append( - (self.__filename, lineNumber + 1, offset, (code, args))) + { + "file": self.__filename, + "line": lineNumber + 1, + "offset": offset, + "code": code, + "args": args, + } + ) def __reportInvalidSyntax(self): """
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/__init__.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Package containing the various security checker modules. +""" + +import collections +import os + + +def generateCheckersDict(): + """ + Function to generate the dictionary with checkers. + + Checker modules are searched for inside this package. Each module + defining some checks must contain a function 'getChecks()' returning + a dictionary containing the check type as key and a list of tuples + with the check function and associated message codes. + + @return dictionary containing list of tuples with checker data + @rtype dict + """ + checkersDict = collections.defaultdict(list) + + checkersDirectory = os.path.dirname(__file__) + checkerModules = [os.path.splitext(m)[0] + for m in os.listdir(checkersDirectory) + if m != "__init__.py" and m.endswith(".py")] + + for checkerModule in checkerModules: + modName = "Security.Checks.{0}".format(checkerModule) + try: + mod = __import__(modName) + components = modName.split('.') + for comp in components[1:]: + mod = getattr(mod, comp) + except ImportError: + continue + + if not hasattr(mod, "getChecks"): + continue + + modCheckersDict = mod.getChecks() + for checktype, checks in modCheckersDict.items(): + checkersDict[checktype].extend(checks) + + return checkersDict
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/assert.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for the use of 'assert'. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Assert": [ + (checkAssertUsed, ("S101",)), + ], + } + + +def checkAssertUsed(reportError, context, config): + """ + Function to check for the use of 'assert'. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S101", + "L", + "H" + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/awsHardcodedPassword.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing checks for potentially hardcoded AWS passwords. +""" + +# +# This is a modified version of the one found at +# https://pypi.org/project/bandit-aws/. +# +# Original Copyright 2020 CMCRC (devcdt@cmcrc.com) +# +# License: GPLv3 +# + +from collections import Counter +import math +import re +import string + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Str": [ + (checkHardcodedAwsKey, ("S801", "S802")), + ], + } + +AWS_ACCESS_KEY_ID_SYMBOLS = string.ascii_uppercase + string.digits +AWS_ACCESS_KEY_ID_REGEX = re.compile( + '[' + AWS_ACCESS_KEY_ID_SYMBOLS + ']{20}' +) +AWS_ACCESS_KEY_ID_MAX_ENTROPY = 3 + +AWS_SECRET_ACCESS_KEY_SYMBOLS = string.ascii_letters + string.digits + '/+=' +AWS_SECRET_ACCESS_KEY_REGEX = re.compile( + '[' + AWS_SECRET_ACCESS_KEY_SYMBOLS + ']{40}' +) +AWS_SECRET_ACCESS_KEY_MAX_ENTROPY = 4.5 + + +def shannonEntropy(data, symbols): + """ + Function to caclculate the Shannon entropy of some given data. + + Source: + http://blog.dkbza.org/2007/05/scanning-data-for-entropy-anomalies.html + + @param data data to calculate the entropy for + @type str + @param symbols allowed symbols + @type str + @return Shannon entropy of the given data + @rtype float + """ + if not data: + return 0 + entropy = 0 + counts = Counter(data) + for x in symbols: + p_x = float(counts[x]) / len(data) + if p_x > 0: + entropy += - p_x * math.log(p_x, 2) + return entropy + + +def checkHardcodedAwsKey(reportError, context, config): + """ + Function to check for potentially hardcoded AWS passwords. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + node = context.node + if AWS_ACCESS_KEY_ID_REGEX.fullmatch(node.s): + entropy = shannonEntropy(node.s, AWS_ACCESS_KEY_ID_SYMBOLS) + if entropy > AWS_ACCESS_KEY_ID_MAX_ENTROPY: + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S801", + "L", + "M", + node.s + ) + + elif AWS_SECRET_ACCESS_KEY_REGEX.fullmatch(node.s): + entropy = shannonEntropy(node.s, AWS_SECRET_ACCESS_KEY_SYMBOLS) + if entropy > AWS_SECRET_ACCESS_KEY_MAX_ENTROPY: + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S802", + "M", + "M", + node.s + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/blackListCalls.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,227 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing checks for blacklisted methods and functions. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2016 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +import ast +import fnmatch + +import AstUtilities + +_blacklists = { + 'S301': ([ + 'pickle.loads', + 'pickle.load', + 'pickle.Unpickler', + 'cPickle.loads', + 'cPickle.load', + 'cPickle.Unpickler', + 'dill.loads', + 'dill.load', + 'dill.Unpickler', + 'shelve.open', + 'shelve.DbfilenameShelf'], + "M"), + 'S302': ([ + 'marshal.load', + 'marshal.loads'], + "M"), + 'S303': ([ + 'hashlib.md5', + 'hashlib.sha1', + 'Crypto.Hash.MD2.new', + 'Crypto.Hash.MD4.new', + 'Crypto.Hash.MD5.new', + 'Crypto.Hash.SHA.new', + 'Cryptodome.Hash.MD2.new', + 'Cryptodome.Hash.MD4.new', + 'Cryptodome.Hash.MD5.new', + 'Cryptodome.Hash.SHA.new', + 'cryptography.hazmat.primitives.hashes.MD5', + 'cryptography.hazmat.primitives.hashes.SHA1'], + "M"), + 'S304': ([ + 'Crypto.Cipher.ARC2.new', + 'Crypto.Cipher.ARC4.new', + 'Crypto.Cipher.Blowfish.new', + 'Crypto.Cipher.DES.new', + 'Crypto.Cipher.XOR.new', + 'Cryptodome.Cipher.ARC2.new', + 'Cryptodome.Cipher.ARC4.new', + 'Cryptodome.Cipher.Blowfish.new', + 'Cryptodome.Cipher.DES.new', + 'Cryptodome.Cipher.XOR.new', + 'cryptography.hazmat.primitives.ciphers.algorithms.ARC4', + 'cryptography.hazmat.primitives.ciphers.algorithms.Blowfish', + 'cryptography.hazmat.primitives.ciphers.algorithms.IDEA'], + "H"), + 'S305': ([ + 'cryptography.hazmat.primitives.ciphers.modes.ECB'], + "M"), + 'S306': ([ + 'tempfile.mktemp'], + "M"), + 'S307': ([ + 'eval'], + "M"), + 'S308': ([ + 'django.utils.safestring.mark_safe'], + "M"), + 'S309': ([ + 'httplib.HTTPSConnection', + 'http.client.HTTPSConnection', + 'six.moves.http_client.HTTPSConnection'], + "M"), + 'S310': ([ + 'urllib.urlopen', + 'urllib.request.urlopen', + 'urllib.urlretrieve', + 'urllib.request.urlretrieve', + 'urllib.URLopener', + 'urllib.request.URLopener', + 'urllib.FancyURLopener', + 'urllib.request.FancyURLopener', + 'urllib2.urlopen', + 'urllib2.Request', + 'six.moves.urllib.request.urlopen', + 'six.moves.urllib.request.urlretrieve', + 'six.moves.urllib.request.URLopener', + 'six.moves.urllib.request.FancyURLopener'], + ""), + 'S311': ([ + 'random.random', + 'random.randrange', + 'random.randint', + 'random.choice', + 'random.uniform', + 'random.triangular'], + "L"), + 'S312': ([ + 'telnetlib.*'], + "H"), + 'S313': ([ + 'xml.etree.cElementTree.parse', + 'xml.etree.cElementTree.iterparse', + 'xml.etree.cElementTree.fromstring', + 'xml.etree.cElementTree.XMLParser'], + "M"), + 'S314': ([ + 'xml.etree.ElementTree.parse', + 'xml.etree.ElementTree.iterparse', + 'xml.etree.ElementTree.fromstring', + 'xml.etree.ElementTree.XMLParser'], + "M"), + 'S315': ([ + 'xml.sax.expatreader.create_parser'], + "M"), + 'S316': ([ + 'xml.dom.expatbuilder.parse', + 'xml.dom.expatbuilder.parseString'], + "M"), + 'S317': ([ + 'xml.sax.parse', + 'xml.sax.parseString', + 'xml.sax.make_parser'], + "M"), + 'S318': ([ + 'xml.dom.minidom.parse', + 'xml.dom.minidom.parseString'], + "M"), + 'S319': ([ + 'xml.dom.pulldom.parse', + 'xml.dom.pulldom.parseString'], + "M"), + 'S320': ([ + 'lxml.etree.parse', + 'lxml.etree.fromstring', + 'lxml.etree.RestrictedElement', + 'lxml.etree.GlobalParserTLS', + 'lxml.etree.getDefaultParser', + 'lxml.etree.check_docinfo'], + "M"), + 'S321': ([ + 'ftplib.*'], + "H"), + 'S322': ([ + 'input'], + "H"), + 'S323': ([ + 'ssl._create_unverified_context'], + "M"), + 'S324': ([ + 'os.tempnam', + 'os.tmpnam'], + "M"), +} + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkBlacklist, tuple(_blacklists.keys())), + ], + } + + +def checkBlacklist(reportError, context, config): + """ + Function to check for blacklisted method calls. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + nodeType = context.node.__class__.__name__ + + if nodeType == 'Call': + func = context.node.func + if isinstance(func, ast.Name) and func.id == '__import__': + if len(context.node.args): + if AstUtilities.isString(context.node.args[0]): + name = context.node.args[0].s + else: + name = "UNKNOWN" + else: + name = "" # handle '__import__()' + else: + name = context.callFunctionNameQual + # In the case the Call is an importlib.import, treat the first + # argument name as an actual import module name. + # Will produce None if argument is not a literal or identifier. + if name in ["importlib.import_module", "importlib.__import__"]: + name = context.call_args[0] + + for code in _blacklists: + qualnames, severity = _blacklists[code] + for qualname in qualnames: + if name and fnmatch.fnmatch(name, qualname): + reportError( + context.node.lineno - 1, + context.node.col_offset, + code, + severity, + "H", + name + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/blackListImports.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing checks for blacklisted imports. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2016 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +_blacklists = { + "S401": ([ + 'telnetlib'], + "H"), + "S402": ([ + 'ftplib'], + "H"), + "S403": ([ + 'pickle', + 'cPickle', + 'dill', + 'shelve'], + "L"), + "S404": ([ + 'subprocess'], + "L"), + "S405": ([ + 'xml.etree.cElementTree', + 'xml.etree.ElementTree'], + "L"), + "S406": ([ + 'xml.sax'], + "L"), + "S407": ([ + 'xml.dom.expatbuilder'], + "L"), + "S408": ([ + 'xml.dom.minidom'], + "L"), + "S409": ([ + 'xml.dom.pulldom'], + "L"), + "S410": ([ + 'lxml'], + "L"), + "S411": ([ + 'xmlrpclib'], + "H"), + "S412": ([ + 'wsgiref.handlers.CGIHandler', + 'twisted.web.twcgi.CGIScript', + 'twisted.web.twcgi.CGIDirectory'], + "H"), + "S413": ([ + 'Crypto.Cipher', + 'Crypto.Hash', + 'Crypto.IO', + 'Crypto.Protocol', + 'Crypto.PublicKey', + 'Crypto.Random', + 'Crypto.Signature', + 'Crypto.Util'], + "H"), +} + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Import": [ + (checkBlacklist, tuple(_blacklists.keys())), + ], + "ImportFrom": [ + (checkBlacklist, tuple(_blacklists.keys())), + ], + "Call": [ + (checkBlacklist, tuple(_blacklists.keys())), + ], + } + + +def checkBlacklist(reportError, context, config): + """ + Function to check for blacklisted method calls. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + nodeType = context.node.__class__.__name__ + + if nodeType.startswith('Import'): + prefix = "" + if nodeType == "ImportFrom": + if context.node.module is not None: + prefix = context.node.module + "." + + for code in _blacklists: + qualnames, severity = _blacklists[code] + for name in context.node.names: + for qualname in qualnames: + if (prefix + name.name).startswith(qualname): + reportError( + context.node.lineno - 1, + context.node.col_offset, + code, + severity, + "H", + name.name + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/certificateValidation.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing checks for switched off certificate validation. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkNoCertificateValidation, ("S501",)), + ], + } + + +def checkNoCertificateValidation(reportError, context, config): + """ + Function to check for switched off certificate validation. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + http_verbs = ('get', 'options', 'head', 'post', 'put', 'patch', 'delete') + if ( + 'requests' in context.callFunctionNameQual and + context.callFunctionName in http_verbs + ): + if context.checkCallArgValue('verify', 'False'): + reportError( + context.getLinenoForCallArg('verify') - 1, + context.getOffsetForCallArg('verify'), + "S501", + "H", + "H" + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/djangoSqlInjection.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,138 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing checks for potential SQL injections risks. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright (C) 2018 [Victor Torre](https://github.com/ehooo) +# +# SPDX-License-Identifier: Apache-2.0 +# + +import ast + +import AstUtilities + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkDjangoExtraUsed, ("S610",)), + (checkDjangoRawSqlUsed, ("S611",)), + ], + } + + +def keywords2dict(keywords): + """ + Function to extract keywords arguments into a dictionary. + + @param keywords list of keyword nodes + @type list of ast.keyword + @return dictionary with keyword name and value + @rtype dict + """ + kwargs = {} + for node in keywords: + if isinstance(node, ast.keyword): + kwargs[node.arg] = node.value + return kwargs + + +def checkDjangoExtraUsed(reportError, context, config): + """ + Function to check for potential SQL injection on extra function. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if context.callFunctionName == 'extra': + kwargs = keywords2dict(context.node.keywords) + args = context.node.args + if args: + if len(args) >= 1: + kwargs['select'] = args[0] + if len(args) >= 2: + kwargs['where'] = args[1] + if len(args) >= 3: + kwargs['params'] = args[2] + if len(args) >= 4: + kwargs['tables'] = args[3] + if len(args) >= 5: + kwargs['order_by'] = args[4] + if len(args) >= 6: + kwargs['select_params'] = args[5] + insecure = False + for key in ['where', 'tables']: + if key in kwargs: + if isinstance(kwargs[key], ast.List): + for val in kwargs[key].elts: + if not AstUtilities.isString(val): + insecure = True + break + else: + insecure = True + break + if not insecure and 'select' in kwargs: + if isinstance(kwargs['select'], ast.Dict): + for k in kwargs['select'].keys: + if not AstUtilities.isString(k): + insecure = True + break + if not insecure: + for v in kwargs['select'].values: + if not AstUtilities.isString(v): + insecure = True + break + else: + insecure = True + + if insecure: + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S610", + "M", + "M" + ) + + +def checkDjangoRawSqlUsed(reportError, context, config): + """ + Function to check for potential SQL injection on RawSQL function. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if context.isModuleImportedLike('django.db.models'): + if context.callFunctionName == 'RawSQL': + sql = context.node.args[0] + if not AstUtilities.isString(sql): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S611", + "M", + "M" + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/djangoXssVulnerability.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,393 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing checks for potential XSS vulnerability. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2018 Victor Torre +# +# SPDX-License-Identifier: Apache-2.0 +# + +import ast +import sys + +import AstUtilities + +PY2 = sys.version_info[0] == 2 + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkDjangoXssVulnerability, ("S703",)), + ], + } + + +def checkDjangoXssVulnerability(reportError, context, config): + """ + Function to check for potential XSS vulnerability. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if context.isModuleImportedLike('django.utils.safestring'): + affectedFunctions = [ + 'mark_safe', + 'SafeText', + 'SafeUnicode', + 'SafeString', + 'SafeBytes' + ] + if context.callFunctionName in affectedFunctions: + xss = context.node.args[0] + if not AstUtilities.isString(xss): + checkPotentialRisk(reportError, context.node) + + +def checkPotentialRisk(reportError, node): + """ + Function to check a given node for a potential XSS vulnerability. + + @param reportError function to be used to report errors + @type func + @param node node to be checked + @type ast.Call + """ + xssVar = node.args[0] + + secure = False + + if isinstance(xssVar, ast.Name): + # Check if the var are secure + parent = node._securityParent + while not isinstance(parent, (ast.Module, ast.FunctionDef)): + parent = parent._securityParent + + isParam = False + if isinstance(parent, ast.FunctionDef): + for name in parent.args.args: + argName = name.id if PY2 else name.arg + if argName == xssVar.id: + isParam = True + break + + if not isParam: + secure = evaluateVar(xssVar, parent, node.lineno) + elif isinstance(xssVar, ast.Call): + parent = node._securityParent + while not isinstance(parent, (ast.Module, ast.FunctionDef)): + parent = parent._securityParent + secure = evaluateCall(xssVar, parent) + elif isinstance(xssVar, ast.BinOp): + isMod = isinstance(xssVar.op, ast.Mod) + isLeftStr = AstUtilities.isString(xssVar.left) + if isMod and isLeftStr: + parent = node._securityParent + while not isinstance(parent, (ast.Module, ast.FunctionDef)): + parent = parent._securityParent + newCall = transform2call(xssVar) + secure = evaluateCall(newCall, parent) + + if not secure: + reportError( + node.lineno - 1, + node.col_offset, + "S703", + "M", + "H" + ) + + +class DeepAssignation(object): + """ + Class to perform a deep analysis of an assign. + """ + def __init__(self, varName, ignoreNodes=None): + """ + Constructor + + @param varName name of the variable + @type str + @param ignoreNodes list of nodes to ignore + @type list of ast.AST + """ + self.__varName = varName + self.__ignoreNodes = ignoreNodes + + def isAssignedIn(self, items): + """ + Public method to check, if the variable is assigned to. + + @param items list of nodes to check against + @type list of ast.AST + @return list of nodes assigned + @rtype list of ast.AST + """ + assigned = [] + for astInst in items: + newAssigned = self.isAssigned(astInst) + if newAssigned: + if isinstance(newAssigned, (list, tuple)): + assigned.extend(newAssigned) + else: + assigned.append(newAssigned) + + return assigned + + def isAssigned(self, node): + """ + Public method to check assignment against a given node. + + @param node node to check against + @type ast.AST + @return flag indicating an assignement + @rtype bool + """ + assigned = False + if self.__ignoreNodes: + if isinstance(self.__ignoreNodes, (list, tuple, object)): + if isinstance(node, self.__ignoreNodes): + return assigned + + if isinstance(node, ast.Expr): + assigned = self.isAssigned(node.value) + elif isinstance(node, ast.FunctionDef): + for name in node.args.args: + if isinstance(name, ast.Name): + if name.id == self.var_name.id: + # If is param the assignations are not affected + return assigned + + assigned = self.isAssignedIn(node.body) + elif isinstance(node, ast.With): + if PY2: + if node.optional_vars.id == self.__varName.id: + assigned = node + else: + assigned = self.isAssignedIn(node.body) + else: + for withitem in node.items: + varId = getattr(withitem.optional_vars, 'id', None) + if varId == self.__varName.id: + assigned = node + else: + assigned = self.isAssignedIn(node.body) + elif PY2 and isinstance(node, ast.TryFinally): + assigned = [] + assigned.extend(self.isAssignedIn(node.body)) + assigned.extend(self.isAssignedIn(node.finalbody)) + elif PY2 and isinstance(node, ast.TryExcept): + assigned = [] + assigned.extend(self.isAssignedIn(node.body)) + assigned.extend(self.isAssignedIn(node.handlers)) + assigned.extend(self.isAssignedIn(node.orelse)) + elif not PY2 and isinstance(node, ast.Try): + assigned = [] + assigned.extend(self.isAssignedIn(node.body)) + assigned.extend(self.isAssignedIn(node.handlers)) + assigned.extend(self.isAssignedIn(node.orelse)) + assigned.extend(self.isAssignedIn(node.finalbody)) + elif isinstance(node, ast.ExceptHandler): + assigned = [] + assigned.extend(self.isAssignedIn(node.body)) + elif isinstance(node, (ast.If, ast.For, ast.While)): + assigned = [] + assigned.extend(self.isAssignedIn(node.body)) + assigned.extend(self.isAssignedIn(node.orelse)) + elif isinstance(node, ast.AugAssign): + if isinstance(node.target, ast.Name): + if node.target.id == self.__varName.id: + assigned = node.value + elif isinstance(node, ast.Assign) and node.targets: + target = node.targets[0] + if isinstance(target, ast.Name): + if target.id == self.__varName.id: + assigned = node.value + elif isinstance(target, ast.Tuple): + pos = 0 + for name in target.elts: + if name.id == self.__varName.id: + assigned = node.value.elts[pos] + break + pos += 1 + + return assigned + + +def evaluateVar(xssVar, parent, until, ignoreNodes=None): + """ + Function to evaluate a variable node for potential XSS vulnerability. + + @param xssVar variable node to be checked + @type ast.Name + @param parent parent node + @type ast.AST + @param until end line number to evaluate variable against + @type int + @param ignoreNodes list of nodes to ignore + @type list of ast.AST + @return flag indicating a secure evaluation + @rtype bool + """ + secure = False + if isinstance(xssVar, ast.Name): + if isinstance(parent, ast.FunctionDef): + for name in parent.args.args: + argName = name.id if PY2 else name.arg + if argName == xssVar.id: + return False # Params are not secure + + analyser = DeepAssignation(xssVar, ignoreNodes) + for node in parent.body: + if node.lineno >= until: + break + to = analyser.isAssigned(node) + if to: + if AstUtilities.isString(to): + secure = True + elif isinstance(to, ast.Name): + secure = evaluateVar( + to, parent, to.lineno, ignoreNodes) + elif isinstance(to, ast.Call): + secure = evaluateCall(to, parent, ignoreNodes) + elif isinstance(to, (list, tuple)): + numSecure = 0 + for someTo in to: + if AstUtilities.isString(someTo): + numSecure += 1 + elif isinstance(someTo, ast.Name): + if evaluateVar(someTo, parent, + node.lineno, ignoreNodes): + numSecure += 1 + else: + break + else: + break + if numSecure == len(to): + secure = True + else: + secure = False + break + else: + secure = False + break + + return secure + + +def evaluateCall(call, parent, ignoreNodes=None): + """ + Function to evaluate a call node for potential XSS vulnerability. + + @param call call node to be checked + @type ast.Call + @param parent parent node + @type ast.AST + @param ignoreNodes list of nodes to ignore + @type list of ast.AST + @return flag indicating a secure evaluation + @rtype bool + """ + secure = False + evaluate = False + + if isinstance(call, ast.Call) and isinstance(call.func, ast.Attribute): + if ( + AstUtilities.isString(call.func.value) and + call.func.attr == 'format' + ): + evaluate = True + if call.keywords or (PY2 and call.kwargs): + evaluate = False + + if evaluate: + args = list(call.args) + if ( + PY2 and + call.starargs and + isinstance(call.starargs, (ast.List, ast.Tuple)) + ): + args.extend(call.starargs.elts) + + numSecure = 0 + for arg in args: + if AstUtilities.isString(arg): + numSecure += 1 + elif isinstance(arg, ast.Name): + if evaluateVar(arg, parent, call.lineno, ignoreNodes): + numSecure += 1 + else: + break + elif isinstance(arg, ast.Call): + if evaluateCall(arg, parent, ignoreNodes): + numSecure += 1 + else: + break + elif ( + not PY2 and + isinstance(arg, ast.Starred) and + isinstance(arg.value, (ast.List, ast.Tuple)) + ): + args.extend(arg.value.elts) + numSecure += 1 + else: + break + secure = numSecure == len(args) + + return secure + + +def transform2call(var): + """ + Function to transform a variable node to a call node. + + @param var variable node + @type ast.BinOp + @return call node + @rtype ast.Call + """ + if isinstance(var, ast.BinOp): + isMod = isinstance(var.op, ast.Mod) + isLeftStr = AstUtilities.isString(var.left) + if isMod and isLeftStr: + newCall = ast.Call() + newCall.args = [] + newCall.args = [] + if PY2: + newCall.starargs = None + newCall.keywords = None + if PY2: + newCall.kwargs = None + newCall.lineno = var.lineno + newCall.func = ast.Attribute() + newCall.func.value = var.left + newCall.func.attr = 'format' + if isinstance(var.right, ast.Tuple): + newCall.args = var.right.elts + elif PY2 and isinstance(var.right, ast.Dict): + newCall.kwargs = var.right + else: + newCall.args = [var.right] + + return newCall + + return None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/exec.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for the use of 'exec'. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +import sys + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + if sys.version_info[0] == 2: + return { + "Exec": [ + (checkExecUsed, ("S102",)), + ], + } + else: + return { + "Call": [ + (checkExecUsed, ("S102",)), + ], + } + + +def checkExecUsed(reportError, context, config): + """ + Function to check for the use of 'exec'. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if ( + sys.version_info[0] == 2 or + context.callFunctionNameQual == 'exec' + ): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S102", + "M", + "H" + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/flaskDebug.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing checks for running a flask application with enabled debug. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2015 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkFlaskDebug, ("S201",)), + ], + } + + +def checkFlaskDebug(reportError, context, config): + """ + Function to check for a flask app being run with debug. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if context.isModuleImportedLike('flask'): + if context.callFunctionNameQual.endswith('.run'): + if context.checkCallArgValue('debug', 'True'): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S201", + "L", + "M" + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalBindAllInterfaces.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for binding to all interfaces. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Str": [ + (checkBindAllInterfaces, ("S104",)), + ], + } + + +def checkBindAllInterfaces(reportError, context, config): + """ + Function to check for binding to all interfaces. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if context.stringVal == '0.0.0.0': + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S104", + "M", + "M", + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalFilePermissions.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for setting too permissive file permissions. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +import stat + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkFilePermissions, ("S102",)), + ], + } + + +def checkFilePermissions(reportError, context, config): + """ + Function to check for setting too permissive file permissions. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if 'chmod' in context.callFunctionName: + if context.callArgsCount == 2: + mode = context.getCallArgAtPosition(1) + + if ( + mode is not None and + isinstance(mode, int) and + (mode & stat.S_IWOTH or mode & stat.S_IXGRP) + ): + # world writable is an HIGH, group executable is a MEDIUM + if mode & stat.S_IWOTH: + severity = "H" + else: + severity = "M" + + filename = context.getCallArgAtPosition(0) + if filename is None: + filename = 'NOT PARSED' + + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S103", + severity, + "H", + oct(mode), + filename + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalHardcodedPassword.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing checks for potentially hardcoded passwords. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +import ast +import re +import sys + +import AstUtilities + +RE_WORDS = "(pas+wo?r?d|pass(phrase)?|pwd|token|secrete?|ken+wort|geheim)" +RE_CANDIDATES = re.compile( + '(^{0}$|_{0}_|^{0}_|_{0}$)'.format(RE_WORDS), + re.IGNORECASE +) + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Str": [ + (checkHardcodedPasswordAsString, ("S105",)), + ], + "Call": [ + (checkHardcodedPasswordAsFunctionArg, ("S106",)), + ], + "FunctionDef": [ + (checkHardcodedPasswordAsDefault, ("S107",)), + ], + } + + +def checkHardcodedPasswordAsString(reportError, context, config): + """ + Function to check for use of hardcoded password strings. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + node = context.node + if isinstance(node._securityParent, ast.Assign): + # looks for "candidate='some_string'" + for targ in node._securityParent.targets: + if isinstance(targ, ast.Name) and RE_CANDIDATES.search(targ.id): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S105", + "L", + "M", + node.s + ) + + elif ( + isinstance(node._securityParent, ast.Index) and + RE_CANDIDATES.search(node.s) + ): + # looks for "dict[candidate]='some_string'" + # assign -> subscript -> index -> string + assign = node._securityParent._securityParent._securityParent + if ( + isinstance(assign, ast.Assign) and + AstUtilities.isString(assign.value) + ): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S105", + "L", + "M", + assign.value.s + ) + + elif isinstance(node._securityParent, ast.Compare): + # looks for "candidate == 'some_string'" + comp = node._securityParent + if isinstance(comp.left, ast.Name): + if RE_CANDIDATES.search(comp.left.id): + if AstUtilities.isString(comp.comparators[0]): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S105", + "L", + "M", + comp.comparators[0].s + ) + + +def checkHardcodedPasswordAsFunctionArg(reportError, context, config): + """ + Function to check for use of hard-coded password function arguments. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + # looks for "function(candidate='some_string')" + for kw in context.node.keywords: + if AstUtilities.isString(kw.value) and RE_CANDIDATES.search(kw.arg): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S106", + "L", + "M", + kw.value.s + ) + + +def checkHardcodedPasswordAsDefault(reportError, context, config): + """ + Function to check for use of hard-coded password argument defaults. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + # looks for "def function(candidate='some_string')" + + # this pads the list of default values with "None" if nothing is given + defs = [None] * (len(context.node.args.args) - + len(context.node.args.defaults)) + defs.extend(context.node.args.defaults) + + # go through all (param, value)s and look for candidates + for key, val in zip(context.node.args.args, defs): + isPy3Arg = True + if sys.version_info[0] > 2: + isPy3Arg = isinstance(key, ast.arg) + if isinstance(key, ast.Name) or isPy3Arg: + check = key.arg if sys.version_info[0] > 2 else key.id # Py3 + if AstUtilities.isString(val) and RE_CANDIDATES.search(check): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S107", + "L", + "M", + val.s + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalHardcodedTmp.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for insecure usage of tmp file/directory. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +#...r\Security\Checks\generalHardcodedTmp.py + +from Security.SecurityDefaults import SecurityDefaults + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Str": [ + (checkHardcodedTmpDirectory, ("S108",)), + ], + } + + +def checkHardcodedTmpDirectory(reportError, context, config): + """ + Function to check for insecure usage of tmp file/directory. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "hardcoded_tmp_directories" in config: + tmpDirs = config["hardcoded_tmp_directories"] + else: + tmpDirs = SecurityDefaults["hardcoded_tmp_directories"] + + if any(context.stringVal.startswith(s) for s in tmpDirs): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S108", + "M", + "M", + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/injectionParamiko.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for shell injection within Paramiko. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkParamikoCalls, ("S601",)), + ], + } + + +def checkParamikoCalls(reportError, context, config): + """ + Function to check for shell injection within Paramiko. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + for module in ['paramiko']: + if context.isModuleImportedLike(module): + if context.callFunctionName in ['exec_command']: + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S601", + "M", + "M", + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/injectionShell.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,307 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for shell injection. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +import ast +import re +import sys + +import AstUtilities + +from Security.SecurityDefaults import SecurityDefaults + +# This regex starts with a windows drive letter (eg C:) +# or one of our path delimeter characters (/, \, .) +fullPathMatchRe = re.compile(r'^(?:[A-Za-z](?=\:)|[\\\/\.])') + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkSubprocessPopenWithShell, ("S602",)), + (checkSubprocessPopenWithoutShell, ("S603",)), + (checkOtherFunctionWithShell, ("S604",)), + (checkStartProcessWithShell, ("S605",)), + (checkStartProcessWithNoShell, ("S606",)), + (checkStartProcessWithPartialPath, ("S607",)), + ], + } + + +def _evaluateShellCall(context): + """ + Function to determine the severity of a shell call. + + @param context context to be inspected + @type SecurityContext + @return severity level (L, M or H) + @rtype str + """ + noFormatting = AstUtilities.isString(context.node.args[0]) + + if noFormatting: + return "L" + else: + return "H" + + +def hasShell(context): + """ + Function to check, if the node of the context contains the shell keyword. + + @param context context to be inspected + @type SecurityContext + @return tuple containing a flag indicating the presence of the 'shell' + argument and flag indicating the value of the 'shell' argument + @rtype tuple of (bool, bool) + """ + keywords = context.node.keywords + result = False + shell = False + if 'shell' in context.callKeywords: + shell = True + for key in keywords: + if key.arg == 'shell': + val = key.value + if AstUtilities.isNumber(val): + result = bool(val.n) + elif isinstance(val, ast.List): + result = bool(val.elts) + elif isinstance(val, ast.Dict): + result = bool(val.keys) + elif isinstance(val, ast.Name) and val.id in ['False', 'None']: + result = False + elif ( + sys.version_info[0] >= 3 and + AstUtilities.isNameConstant(val) + ): + result = val.value + else: + result = True + + return shell, result + + +def checkSubprocessPopenWithShell(reportError, context, config): + """ + Function to check for use of popen with shell equals true. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "shell_injection_subprocess" in config: + functionNames = config["shell_injection_subprocess"] + else: + functionNames = SecurityDefaults["shell_injection_subprocess"] + + if context.callFunctionNameQual in functionNames: + shell, shellValue = hasShell(context) + if shell and shellValue: + if len(context.callArgs) > 0: + sev = _evaluateShellCall(context) + if sev == "L": + reportError( + context.getLinenoForCallArg('shell') - 1, + context.getOffsetForCallArg('shell'), + "S602.L", + sev, + "H", + ) + else: + reportError( + context.getLinenoForCallArg('shell') - 1, + context.getOffsetForCallArg('shell'), + "S602.H", + sev, + "H", + ) + + +def checkSubprocessPopenWithoutShell(reportError, context, config): + """ + Function to check for use of popen without shell equals true. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "shell_injection_subprocess" in config: + functionNames = config["shell_injection_subprocess"] + else: + functionNames = SecurityDefaults["shell_injection_subprocess"] + + if context.callFunctionNameQual in functionNames: + if not hasShell(context)[0]: + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S603", + "L", + "H", + ) + + +def checkOtherFunctionWithShell(reportError, context, config): + """ + Function to check for any function with shell equals true. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "shell_injection_subprocess" in config: + functionNames = config["shell_injection_subprocess"] + else: + functionNames = SecurityDefaults["shell_injection_subprocess"] + + if context.callFunctionNameQual not in functionNames: + shell, shellValue = hasShell(context) + if shell and shellValue: + reportError( + context.getLinenoForCallArg('shell') - 1, + context.getOffsetForCallArg('shell'), + "S604", + "M", + "L", + ) + + +def checkStartProcessWithShell(reportError, context, config): + """ + Function to check for starting a process with a shell. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "shell_injection_shell" in config: + functionNames = config["shell_injection_shell"] + else: + functionNames = SecurityDefaults["shell_injection_shell"] + + if context.callFunctionNameQual in functionNames: + if len(context.callArgs) > 0: + sev = _evaluateShellCall(context) + if sev == "L": + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S605.L", + sev, + "H", + ) + else: + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S605.H", + sev, + "H", + ) + + +def checkStartProcessWithNoShell(reportError, context, config): + """ + Function to check for starting a process with no shell. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "shell_injection_noshell" in config: + functionNames = config["shell_injection_noshell"] + else: + functionNames = SecurityDefaults["shell_injection_noshell"] + + if context.callFunctionNameQual in functionNames: + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S606", + "L", + "M", + ) + + +def checkStartProcessWithPartialPath(reportError, context, config): + """ + Function to check for starting a process with no shell. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "shell_injection_subprocess" in config: + functionNames = config["shell_injection_subprocess"] + else: + functionNames = SecurityDefaults["shell_injection_subprocess"] + + if config and "shell_injection_shell" in config: + functionNames += config["shell_injection_shell"] + else: + functionNames += SecurityDefaults["shell_injection_shell"] + + if config and "shell_injection_noshell" in config: + functionNames += config["shell_injection_noshell"] + else: + functionNames += SecurityDefaults["shell_injection_noshell"] + + if len(context.callArgs): + if context.callFunctionNameQual in functionNames: + node = context.node.args[0] + + # some calls take an arg list, check the first part + if isinstance(node, ast.List): + node = node.elts[0] + + # make sure the param is a string literal and not a var name + if ( + AstUtilities.isString(node) and + not fullPathMatchRe.match(node.s) + ): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S607", + "L", + "H", + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/injectionSql.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for SQL injection. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +import ast +import re + +from Security import SecurityUtils + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Str": [ + (checkHardcodedSqlExpressions, ("S608",)), + ], + } + + +SIMPLE_SQL_RE = re.compile( + r'(select\s.*from\s|' + r'delete\s+from\s|' + r'insert\s+into\s.*values\s|' + r'update\s.*set\s)', + re.IGNORECASE | re.DOTALL, +) + + +def _checkString(data): + """ + Function to check a given string against the list of search patterns. + + @param data string data to be checked + @type str + @return flag indicating a match + @rtype bool + """ + return SIMPLE_SQL_RE.search(data) is not None + + +def _evaluateAst(node): + """ + Function to analyze the given ast node. + + @param node ast node to be analyzed + @type ast.Str + @return tuple containing a flag indicating an execute call and + the resulting statement + @rtype tuple of (bool, str) + """ + wrapper = None + statement = '' + + if isinstance(node._securityParent, ast.BinOp): + out = SecurityUtils.concatString(node, node._securityParent) + wrapper = out[0]._securityParent + statement = out[1] + elif ( + isinstance(node._securityParent, ast.Attribute) and + node._securityParent.attr == 'format' + ): + statement = node.s + # Hierarchy for "".format() is Wrapper -> Call -> Attribute -> Str + wrapper = node._securityParent._securityParent._securityParent + elif ( + hasattr(ast, 'JoinedStr') and + isinstance(node._securityParent, ast.JoinedStr) + ): + statement = node.s + wrapper = node._securityParent._securityParent + + if isinstance(wrapper, ast.Call): # wrapped in "execute" call? + names = ['execute', 'executemany'] + name = SecurityUtils.getCalledName(wrapper) + return (name in names, statement) + else: + return (False, statement) + + +def checkHardcodedSqlExpressions(reportError, context, config): + """ + Function to check for SQL injection. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + val = _evaluateAst(context.node) + if _checkString(val[1]): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S608", + "M", + "M" if val[0] else "L", + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/injectionWildcard.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,92 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for use of wildcard injection. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +from Security.SecurityDefaults import SecurityDefaults + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkLinuxCommandsWildcardInjection, ("S609",)), + ], + } + + +def checkLinuxCommandsWildcardInjection(reportError, context, config): + """ + Function to check for use of wildcard injection. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "shell_injection_subprocess" in config: + subProcessFunctionNames = config["shell_injection_subprocess"] + else: + subProcessFunctionNames = SecurityDefaults[ + "shell_injection_subprocess"] + + if config and "shell_injection_shell" in config: + shellFunctionNames = config["shell_injection_shell"] + else: + shellFunctionNames = SecurityDefaults["shell_injection_shell"] + + vulnerableFunctions = ['chown', 'chmod', 'tar', 'rsync'] + if ( + context.callFunctionNameQual in shellFunctionNames or + (context.callFunctionNameQual in subProcessFunctionNames and + context.checkCallArgValue('shell', 'True')) + ): + if context.callArgsCount >= 1: + callArgument = context.getCallArgAtPosition(0) + argumentString = '' + if isinstance(callArgument, list): + for li in callArgument: + argumentString = argumentString + ' {0}'.format(li) + elif isinstance(callArgument, str): + argumentString = callArgument + + if argumentString != '': + for vulnerableFunction in vulnerableFunctions: + if ( + vulnerableFunction in argumentString and + '*' in argumentString + ): + lineNo = context.getLinenoForCallArg('shell') + if lineNo < 1: + lineNo = context.node.lineno + offset = context.getOffsetForCallArg('shell') + if offset < 0: + offset = context.node.col_offset + reportError( + lineNo - 1, + offset, + "S609", + "H", + "M", + context.callFunctionNameQual + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/insecureHashlibNew.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for use of insecure md4, md5, or sha1 hash +functions in hashlib.new(). +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +from Security.SecurityDefaults import SecurityDefaults + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkHashlibNew, ("S331",)), + ], + } + + +def checkHashlibNew(reportError, context, config): + """ + Function to check for use of insecure md4, md5, or sha1 hash functions + in hashlib.new(). + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "insecure_hashes" in config: + insecureHashes = [h.lower() for h in config["insecure_hashes"]] + else: + insecureHashes = SecurityDefaults["insecure_hashes"] + + if isinstance(context.callFunctionNameQual, str): + qualnameList = context.callFunctionNameQual.split('.') + func = qualnameList[-1] + if 'hashlib' in qualnameList and func == 'new': + args = context.callArgs + keywords = context.callKeywords + name = args[0] if args else keywords['name'] + if ( + isinstance(name, str) and + name.lower() in insecureHashes + ): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S331", + "M", + "H", + name.upper() + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/insecureSslTls.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,153 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for use of SSL/TLS with insecure protocols. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +from Security.SecurityDefaults import SecurityDefaults + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkInsecureSslProtocolVersion, ("S502",)), + (checkSslWithoutVersion, ("S504",)), + ], + "FunctionDef": [ + (checkInsecureSslDefaults, ("S503",)), + ], + } + + +def checkInsecureSslProtocolVersion(reportError, context, config): + """ + Function to check for use of insecure SSL protocol version. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "insecure_ssl_protocol_versions" in config: + insecureProtocolVersions = config["insecure_ssl_protocol_versions"] + else: + insecureProtocolVersions = SecurityDefaults[ + "insecure_ssl_protocol_versions"] + + if context.callFunctionNameQual == 'ssl.wrap_socket': + if context.checkCallArgValue('ssl_version', insecureProtocolVersions): + reportError( + context.getLinenoForCallArg('ssl_version') - 1, + context.getOffsetForCallArg('ssl_version'), + "S502.1", + "H", + "H", + ) + + elif context.callFunctionNameQual == 'pyOpenSSL.SSL.Context': + if context.checkCallArgValue('method', insecureProtocolVersions): + reportError( + context.getLinenoForCallArg('method') - 1, + context.getOffsetForCallArg('method'), + "S502.2", + "H", + "H", + ) + + elif ( + context.callFunctionNameQual != 'ssl.wrap_socket' and + context.callFunctionNameQual != 'pyOpenSSL.SSL.Context' + ): + if context.checkCallArgValue('method', insecureProtocolVersions): + reportError( + context.getLinenoForCallArg('method') - 1, + context.getOffsetForCallArg('method'), + "S502.3", + "H", + "H", + ) + + elif context.checkCallArgValue('ssl_version', + insecureProtocolVersions): + reportError( + context.getLinenoForCallArg('ssl_version') - 1, + context.getOffsetForCallArg('ssl_version'), + "S502.3", + "H", + "H", + ) + + +def checkInsecureSslDefaults(reportError, context, config): + """ + Function to check for SSL use with insecure defaults specified. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "insecure_ssl_protocol_versions" in config: + insecureProtocolVersions = config["insecure_ssl_protocol_versions"] + else: + insecureProtocolVersions = SecurityDefaults[ + "insecure_ssl_protocol_versions"] + + for default in context.functionDefDefaultsQual: + val = default.split(".")[-1] + if val in insecureProtocolVersions: + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S503", + "M", + "M", + ) + + +def checkSslWithoutVersion(reportError, context, config): + """ + Function to check for SSL use with no version specified. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if context.callFunctionNameQual == 'ssl.wrap_socket': + if context.checkCallArgValue('ssl_version') is None: + # checkCallArgValue() returns False if the argument is found + # but does not match the supplied value (or the default None). + # It returns None if the argument passed doesn't exist. This + # tests for that (ssl_version is not specified). + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S504", + "L", + "M", + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/jinja2Templates.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for not auto escaping in jinja2. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +import ast + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkJinja2Autoescape, ("S701",)), + ], + } + + +def checkJinja2Autoescape(reportError, context, config): + """ + Function to check for not auto escaping in jinja2. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if isinstance(context.callFunctionNameQual, str): + qualnameList = context.callFunctionNameQual.split('.') + func = qualnameList[-1] + if 'jinja2' in qualnameList and func == 'Environment': + for node in ast.walk(context.node): + if isinstance(node, ast.keyword): + # definite autoescape = False + if ( + getattr(node, 'arg', None) == 'autoescape' and + ( + getattr(node.value, 'id', None) == 'False' or + getattr(node.value, 'value', None) is False + ) + ): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S701.1", + "H", + "H", + ) + return + + # found autoescape + if getattr(node, 'arg', None) == 'autoescape': + value = getattr(node, 'value', None) + if ( + getattr(value, 'id', None) == 'True' or + getattr(value, 'value', None) is True + ): + return + + # Check if select_autoescape function is used. + elif ( + isinstance(value, ast.Call) and + (getattr(value.func, 'id', None) == + 'select_autoescape') + ): + return + + else: + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S701.1", + "H", + "M", + ) + return + + # We haven't found a keyword named autoescape, indicating default + # behavior + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S701.2", + "H", + "H", + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/makoTemplates.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for use of mako templates. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkMakoTemplateUsage, ("S702",)), + ], + } + + +def checkMakoTemplateUsage(reportError, context, config): + """ + Function to check for use of mako templates. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if isinstance(context.callFunctionNameQual, str): + qualnameList = context.callFunctionNameQual.split('.') + func = qualnameList[-1] + if 'mako' in qualnameList and func == 'Template': + # unlike Jinja2, mako does not have a template wide autoescape + # feature and thus each variable must be carefully sanitized. + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S702", + "M", + "H", + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/sshNoHostKeyVerification.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a check for use of mako templates. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkSshNoHostKeyVerification, ("S507",)), + ], + } + + +def checkSshNoHostKeyVerification(reportError, context, config): + """ + Function to check for use of mako templates. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if ( + context.isModuleImportedLike('paramiko') and + context.callFunctionName == 'set_missing_host_key_policy' + ): + if ( + context.callArgs and + context.callArgs[0] in ['AutoAddPolicy', 'WarningPolicy'] + ): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S507", + "H", + "M", + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/tryExcept.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,106 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing checks for insecure except blocks. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +import ast + +from Security.SecurityDefaults import SecurityDefaults + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "ExceptHandler": [ + (checkTryExceptPass, ("S110",)), + (checkTryExceptContinue, ("S112",)), + ], + } + + +def checkTryExceptPass(reportError, context, config): + """ + Function to check for a pass in the except block. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "check_typed_exception" in config: + checkTypedException = config["check_typed_exception"] + else: + checkTypedException = SecurityDefaults["check_typed_exception"] + + node = context.node + if len(node.body) == 1: + if ( + not checkTypedException and + node.type is not None and + getattr(node.type, 'id', None) != 'Exception' + ): + return + + if isinstance(node.body[0], ast.Pass): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S110", + "L", + "H", + ) + + +def checkTryExceptContinue(reportError, context, config): + """ + Function to check for a continue in the except block. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + if config and "check_typed_exception" in config: + checkTypedException = config["check_typed_exception"] + else: + checkTypedException = SecurityDefaults["check_typed_exception"] + + node = context.node + if len(node.body) == 1: + if ( + not checkTypedException and + node.type is not None and + getattr(node.type, 'id', None) != 'Exception' + ): + return + + if isinstance(node.body[0], ast.Continue): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S112", + "L", + "H", + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/weakCryptographicKey.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,189 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing checks for weak cryptographic key use. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +from Security.SecurityDefaults import SecurityDefaults + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkWeakCryptographicKey, ("S505",)), + ], + } + + +def _classifyKeySize(reportError, config, keyType, keySize, node): + """ + Function to classify a key and report an error if insufficient. + + @param reportError function to be used to report errors + @type func + @param config dictionary with configuration data + @type dict + @param keyType type of key to be classified ('DSA', 'RSA', 'EC') + @type str + @param keySize size of the key to be classified + @type int + @param node node the key was extracted from (needed for reporting) + @type ast.Call + @return flag indicating an error was reported + @rtype bool + """ + if isinstance(keySize, str): + # try to convert to an integer + try: + keySize = int(keySize) + except ValueError: + # size provided via a variable - can't process it at the moment + return False + + conf = {} + conf.update(SecurityDefaults) + if config: + conf.update(config) + + keySizes = { + "DSA": [ + (conf["weak_key_size_dsa_high"], "H"), + (conf["weak_key_size_dsa_medium"], "M"), + ], + "RSA": [ + (conf["weak_key_size_rsa_high"], "H"), + (conf["weak_key_size_rsa_medium"], "M"), + ], + "EC": [ + (conf["weak_key_size_ec_high"], "H"), + (conf["weak_key_size_ec_medium"], "M"), + ], + } + + for size, level in keySizes[keyType]: + if keySize < size: + reportError( + node.lineno - 1, + node.col_offset, + "S505", + level, + "H", + keyType, + size + ) + return True + + return False + + +def _weakCryptoKeySizeCryptography(reportError, context, config): + """ + Function to check 'cryptography.hazmat' for weak key use. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + @return flag indicating an error was reported + @rtype bool + """ + funcKeyType = { + 'cryptography.hazmat.primitives.asymmetric.dsa.' + 'generate_private_key': 'DSA', + 'cryptography.hazmat.primitives.asymmetric.rsa.' + 'generate_private_key': 'RSA', + 'cryptography.hazmat.primitives.asymmetric.ec.' + 'generate_private_key': 'EC', + } + argPosition = { + 'DSA': 0, + 'RSA': 1, + 'EC': 0, + } + keyType = funcKeyType.get(context.callFunctionNameQual) + if keyType in ['DSA', 'RSA']: + keySize = (context.getCallArgValue('key_size') or + context.getCallArgAtPosition(argPosition[keyType]) or + 2048) + return _classifyKeySize(reportError, config, keyType, keySize, + context.node) + + elif keyType == 'EC': + curveKeySizes = { + 'SECP192R1': 192, + 'SECT163K1': 163, + 'SECT163R2': 163, + } + curve = (context.getCallArgValue('curve') or + context.callArgs[argPosition[keyType]]) + keySize = curveKeySizes[curve] if curve in curveKeySizes else 224 + return _classifyKeySize(reportError, config, keyType, keySize, + context.node) + + else: + return False + + +def _weakCryptoKeySizePycrypto(reportError, context, config): + """ + Function to check 'pycrypto' for weak key use. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + @return flag indicating an error was reported + @rtype bool + """ + funcKeyType = { + 'Crypto.PublicKey.DSA.generate': 'DSA', + 'Crypto.PublicKey.RSA.generate': 'RSA', + 'Cryptodome.PublicKey.DSA.generate': 'DSA', + 'Cryptodome.PublicKey.RSA.generate': 'RSA', + } + keyType = funcKeyType.get(context.callFunctionNameQual) + if keyType: + keySize = (context.getCallArgValue('bits') or + context.getCallArgAtPosition(0) or + 2048) + return _classifyKeySize(reportError, config, keyType, keySize, + context.node) + + +def checkWeakCryptographicKey(reportError, context, config): + """ + Function to check for weak cryptographic key use. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + ( + _weakCryptoKeySizeCryptography(reportError, context, config) or + _weakCryptoKeySizePycrypto(reportError, context, config) + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/yamlLoad.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing checks for the use of yaml load functions. +""" + +# +# This is a modified version of the one found in the bandit package. +# +# Original Copyright (c) 2016 Rackspace, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# + + +def getChecks(): + """ + Public method to get a dictionary with checks handled by this module. + + @return dictionary containing checker lists containing checker function and + list of codes + @rtype dict + """ + return { + "Call": [ + (checkYamlLoad, ("S506",)), + ], + } + + +def checkYamlLoad(reportError, context, config): + """ + Function to check for the use of of yaml load functions. + + @param reportError function to be used to report errors + @type func + @param context security context object + @type SecurityContext + @param config dictionary with configuration data + @type dict + """ + imported = context.isModuleImportedExact('yaml') + qualname = context.callFunctionNameQual + if not imported and isinstance(qualname, str): + return + + qualnameList = qualname.split('.') + func = qualnameList[-1] + if all([ + 'yaml' in qualnameList, + func == 'load', + not context.checkCallArgValue('Loader', 'SafeLoader'), + not context.checkCallArgValue('Loader', 'CSafeLoader'), + ]): + reportError( + context.node.lineno - 1, + context.node.col_offset, + "S506", + "M", + "H" + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityChecker.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,266 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the security checker. +""" + +import sys +import ast +import collections + +from . import Checks +from .SecurityNodeVisitor import SecurityNodeVisitor + + +class SecurityChecker(object): + """ + Class implementing a checker for security issues. + """ + Codes = [ + # assert used + "S101", + + # exec used + "S102", + + # bad file permissions + "S103", + + # bind to all interfaces + "S104", + + # hardcoded passwords + "S105", "S106", "S107" + + # hardcoded tmp directory + "S108", + + # try-except + "S110", "S112", + + # flask app + "S201", + + # insecure function calls (blacklisted) + "S301", "S302", "S303", "S304", "S305", "S306", "S307", "S308", "S309", + "S310", "S311", "S312", "S313", "S314", "S315", "S316", "S317", "S318", + "S319", "S320", "S321", "S322", "S323", "S324", + + # hashlib.new + "S331", + + # insecure imports (blacklisted) + "S401", "S402", "S403", "S404", "S405", "S406", "S407", "S408", "S409", + "S410", "S411", "S412", "S413", + + # insecure certificate usage + "S501", + + # insecure SSL/TLS protocol version + "S502", "S503", "S504", + + # weak cryptographic keys + "S505", + + # YAML load + "S506", + + # SSH host key verification + "S507", + + # Shell injection + "S601", "S602", "S603", "S604", "S605", "S606", "S607", + + # SQL injection + "S608", + + # Wildcard injection + "S609", + + # Django SQL injection + "S610", "S611", + + # Jinja2 templates + "S701", + + # Mako templates + "S702", + + # Django XSS vulnerability + "S703", + + # hardcoded AWS passwords + "S801", "S802", + + # Syntax error + "S999", + ] + + def __init__(self, source, filename, select, ignore, expected, repeat, + args): + """ + Constructor + + @param source source code to be checked + @type list of str + @param filename name of the source file + @type str + @param select list of selected codes + @type list of str + @param ignore list of codes to be ignored + @type list of str + @param expected list of expected codes + @type list of str + @param repeat flag indicating to report each occurrence of a code + @type bool + @param args dictionary of arguments for the security checks + @type dict + """ + self.__select = tuple(select) + self.__ignore = ('',) if select else tuple(ignore) + self.__expected = expected[:] + self.__repeat = repeat + self.__filename = filename + self.__source = source[:] + self.__args = args + + # statistics counters + self.counters = {} + + # collection of detected errors + self.errors = [] + + checkersWithCodes = Checks.generateCheckersDict() + + self.__checkers = collections.defaultdict(list) + for checkType, checkersList in checkersWithCodes.items(): + for checker, codes in checkersList: + if any(not (code and self.__ignoreCode(code)) + for code in codes): + self.__checkers[checkType].append(checker) + + def __ignoreCode(self, code): + """ + Private method to check if the message code should be ignored. + + @param code message code to check for + @type str + @return flag indicating to ignore the given code + @rtype bool + """ + return (code.startswith(self.__ignore) and + not code.startswith(self.__select)) + + def reportError(self, lineNumber, offset, code, severity, confidence, + *args): + """ + Public method to record an issue. + + @param lineNumber line number of the issue + @type int + @param offset position within line of the issue + @type int + @param code message code + @type str + @param severity severity code (H = high, M = medium, L = low, + U = undefined) + @type str + @param confidence confidence code (H = high, M = medium, L = low, + U = undefined) + @type str + @param args arguments for the message + @type list + """ + if self.__ignoreCode(code): + return + + if code in self.counters: + self.counters[code] += 1 + else: + self.counters[code] = 1 + + # Don't care about expected codes + if code in self.__expected: + return + + if code and (self.counters[code] == 1 or self.__repeat): + # record the issue with one based line number + self.errors.append({ + "file": self.__filename, + "line": lineNumber + 1, + "offset": offset, + "code": code, + "args": args, + "severity": severity, + "confidence": confidence, + }) + + def __reportInvalidSyntax(self): + """ + Private method to report a syntax error. + """ + exc_type, exc = sys.exc_info()[:2] + if len(exc.args) > 1: + offset = exc.args[1] + if len(offset) > 2: + offset = offset[1:3] + else: + offset = (1, 0) + self.reportError(offset[0] - 1, + offset[1] or 0, + 'S999', + "H", + "H", + exc_type.__name__, exc.args[0]) + + def __generateTree(self): + """ + Private method to generate an AST for our source. + + @return generated AST + @rtype ast.AST + """ + source = "".join(self.__source) + # Check type for py2: if not str it's unicode + if sys.version_info[0] == 2: + try: + source = source.encode('utf-8') + except UnicodeError: + pass + + return compile(source, self.__filename, 'exec', ast.PyCF_ONLY_AST) + + def getConfig(self): + """ + Public method to get the configuration dictionary. + + @return dictionary containing the configuration + @rtype dict + """ + return self.__args + + def run(self): + """ + Public method to check the given source against security related + conditions. + """ + if not self.__filename: + # don't do anything, if essential data is missing + return + + if not self.__checkers: + # don't do anything, if no codes were selected + return + + try: + self.__tree = self.__generateTree() + except (SyntaxError, TypeError): + self.__reportInvalidSyntax() + return + + securityNodeVisitor = SecurityNodeVisitor( + self, self.__checkers, self.__filename) + securityNodeVisitor.generic_visit(self.__tree)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityContext.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,422 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a context class for security related checks. +""" + +# +# This code is a modified version of the one in 'bandit'. +# +# Original Copyright 2014 Hewlett-Packard Development Company, L.P. +# +# SPDX-License-Identifier: Apache-2.0 +# + +import ast +import copy +import sys + +import AstUtilities + +from . import SecurityUtils + + +class SecurityContext(object): + """ + Class implementing a context class for security related checks. + """ + def __init__(self, contextObject=None): + """ + Constructor + + Initialize the class with a context dictionary or an empty + dictionary. + + @param contextObject context dictionary to be used to populate the + class + @type dict + """ + if contextObject is not None: + self.__context = copy.copy(contextObject) + else: + self.__context = {} + + def __repr__(self): + """ + Special method to generate representation of object for printing or + interactive use. + + @return string representation of the object + @rtype str + """ + return "<SecurityContext {0}>".formar(self.__context) + + @property + def callArgs(self): + """ + Public method to get a list of function args. + + @return list of function args + @rtype list + """ + args = [] + if ( + 'call' in self.__context and + hasattr(self.__context['call'], 'args') + ): + for arg in self.__context['call'].args: + if hasattr(arg, 'attr'): + args.append(arg.attr) + else: + args.append(self.__getLiteralValue(arg)) + return args + + @property + def callArgsCount(self): + """ + Public method to get the number of args a function call has. + + @return number of args a function call has + @rtype int + """ + if ( + 'call' in self.__context and + hasattr(self.__context['call'], 'args') + ): + return len(self.__context['call'].args) + else: + return None + + @property + def callFunctionName(self): + """ + Public method to get the name (not FQ) of a function call. + + @return name (not FQ) of a function call + @rtype str + """ + return self.__context.get('name') + + @property + def callFunctionNameQual(self): + """ + Public method to get the FQ name of a function call. + + @return FQ name of a function call + @rtype str + """ + return self.__context.get('qualname') + + @property + def callKeywords(self): + """ + Public method to get a dictionary of keyword parameters. + + @return dictionary of keyword parameters + @rtype dict + """ + if ( + 'call' in self.__context and + hasattr(self.__context['call'], 'keywords') + ): + returnDict = {} + for kw in self.__context['call'].keywords: + if hasattr(kw.value, 'attr'): + returnDict[kw.arg] = kw.value.attr + else: + returnDict[kw.arg] = self.__getLiteralValue(kw.value) + return returnDict + + else: + return None + + @property + def node(self): + """ + Public method to get the raw AST node associated with the context. + + @return raw AST node associated with the context + @rtype ast.AST + """ + return self.__context.get('node') + + @property + def stringVal(self): + """ + Public method to get the value of a standalone unicode or string + object. + + @return value of a standalone unicode or string object + @rtype str + """ + return self.__context.get('str') + + @property + def bytesVal(self): + """ + Public method to get the value of a standalone bytes object. + + @return value of a standalone bytes object + @rtype bytes + """ + return self.__context.get('bytes') + + @property + def stringValAsEscapedBytes(self): + r""" + Public method to get the escaped value of the object. + + Turn the value of a string or bytes object into a byte sequence with + unknown, control, and \\ characters escaped. + + This function should be used when looking for a known sequence in a + potentially badly encoded string in the code. + + @return sequence of printable ascii bytes representing original string + @rtype str + """ + val = self.stringVal + if val is not None: + # it's any of str or unicode in py2, or str in py3 + return val.encode('unicode_escape') + + val = self.bytesVal + if val is not None: + return SecurityUtils.escapedBytesRepresentation(val) + + return None + + @property + def statement(self): + """ + Public method to get the raw AST for the current statement. + + @return raw AST for the current statement + @rtype ast.AST + """ + return self.__context.get('statement') + + @property + def functionDefDefaultsQual(self): + """ + Public method to get a list of fully qualified default values in a + function def. + + @return list of fully qualified default values in a function def + @rtype list + """ + defaults = [] + if ( + 'node' in self.__context and + hasattr(self.__context['node'], 'args') and + hasattr(self.__context['node'].args, 'defaults') + ): + for default in self.__context['node'].args.defaults: + defaults.append(SecurityUtils.getQualAttr( + default, + self.__context['import_aliases'])) + + return defaults + + def __getLiteralValue(self, literal): + """ + Private method to turn AST literals into native Python types. + + @param literal AST literal to be converted + @type ast.AST + @return converted Python object + @rtype Any + """ + if AstUtilities.isNumber(literal): + literalValue = literal.n + + elif AstUtilities.isString(literal): + literalValue = literal.s + + elif isinstance(literal, ast.List): + returnList = [] + for li in literal.elts: + returnList.append(self.__getLiteralValue(li)) + literalValue = returnList + + elif isinstance(literal, ast.Tuple): + returnTuple = () + for ti in literal.elts: + returnTuple = returnTuple + (self.__getLiteralValue(ti),) + literalValue = returnTuple + + elif isinstance(literal, ast.Set): + returnSet = set() + for si in literal.elts: + returnSet.add(self.__getLiteralValue(si)) + literalValue = returnSet + + elif isinstance(literal, ast.Dict): + literalValue = dict(zip(literal.keys, literal.values)) + + elif ( + sys.version_info <= (3, 8, 0) and + isinstance(literal, ast.Ellipsis) + ): + # what do we want to do with this? + literalValue = None + + elif isinstance(literal, ast.Name): + literalValue = literal.id + + # NameConstants are only part of the AST in Python 3. NameConstants + # tend to refer to things like True and False. This prevents them from + # being re-assigned in Python 3. + elif ( + sys.version_info[0] >= 3 and + AstUtilities.isNameConstant(literal) + ): + literalValue = str(literal.value) + + # Bytes are only part of the AST in Python 3 + elif ( + sys.version_info[0] >= 3 and + AstUtilities.isBytes(literal) + ): + literalValue = literal.s + + else: + literalValue = None + + return literalValue + + def getCallArgValue(self, argumentName): + """ + Public method to get the value of a named argument in a function call. + + @param argumentName name of the argument to get the value for + @type str + @return value of the named argument + @rtype Any + """ + kwdValues = self.callKeywords + if kwdValues is not None and argumentName in kwdValues: + return kwdValues[argumentName] + + return None + + def checkCallArgValue(self, argumentName, argumentValues=None): + """ + Public method to check for a value of a named argument in a function + call. + + @param argumentName name of the argument to be checked + @type str + @param argumentValues value or list of values to test against + @type Any or list of Any + @return True if argument found and matched, False if found and not + matched, None if argument not found at all + @rtype bool or None + """ + argValue = self.getCallArgValue(argumentName) + if argValue is not None: + if not isinstance(argumentValues, list): + # if passed a single value, or a tuple, convert to a list + argumentValues = [argumentValues] + for val in argumentValues: + if argValue == val: + return True + return False + else: + # argument name not found, return None to allow testing for this + # eventuality + return None + + def getLinenoForCallArg(self, argumentName): + """ + Public method to get the line number for a specific named argument. + + @param argumentName name of the argument to get the line number for + @type str + @return line number of the found argument or -1 + @rtype int + """ + if hasattr(self.node, 'keywords'): + for key in self.node.keywords: + if key.arg == argumentName: + return key.value.lineno + + return -1 + + def getOffsetForCallArg(self, argumentName): + """ + Public method to get the offset for a specific named argument. + + @param argumentName name of the argument to get the line number for + @type str + @return offset of the found argument or -1 + @rtype int + """ + if hasattr(self.node, 'keywords'): + for key in self.node.keywords: + if key.arg == argumentName: + return key.value.col_offset + + return -1 + + def getCallArgAtPosition(self, positionNum): + """ + Public method to get a positional argument at the specified position + (if it exists). + + @param positionNum index of the argument to get the value for + @type int + @return value of the argument at the specified position if it exists + @rtype Any or None + """ + maxArgs = self.callArgsCount + if maxArgs and positionNum < maxArgs: + return self.__getLiteralValue( + self.__context['call'].args[positionNum] + ) + else: + return None + + def isModuleBeingImported(self, module): + """ + Public method to check for the given module is currently being + imported. + + @param module module name to look for + @type str + @return flag indicating the given module was found + @rtype bool + """ + return self.__context.get('module') == module + + def isModuleImportedExact(self, module): + """ + Public method to check if a given module has been imported; only exact + matches. + + @param module module name to look for + @type str + @return flag indicating the given module was found + @rtype bool + """ + return module in self.__context.get('imports', []) + + def isModuleImportedLike(self, module): + """ + Public method to check if a given module has been imported; given + module exists. + + @param module module name to look for + @type str + @return flag indicating the given module was found + @rtype bool + """ + if 'imports' in self.__context: + for imp in self.__context['imports']: + if module in imp: + return True + + return False
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityDefaults.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the default values for some check modules. +""" + +SecurityDefaults = { + # generalHardcodedTmp.py + "hardcoded_tmp_directories": ["/tmp", "/var/tmp", "/dev/shm", "~/tmp"], + + # insecureHashlibNew.py + "insecure_hashes": ['md4', 'md5', 'sha', 'sha1'], + + # injectionShell.py + # injectionWildcard.py + "shell_injection_subprocess": [ + 'subprocess.Popen', + 'subprocess.call', + 'subprocess.check_call', + 'subprocess.check_output', + 'subprocess.run'], + + # injectionShell.py + # injectionWildcard.py + "shell_injection_shell": [ + 'os.system', + 'os.popen', + 'os.popen2', + 'os.popen3', + 'os.popen4', + 'popen2.popen2', + 'popen2.popen3', + 'popen2.popen4', + 'popen2.Popen3', + 'popen2.Popen4', + 'commands.getoutput', + 'commands.getstatusoutput'], + + # injectionShell.py + "shell_injection_noshell": [ + 'os.execl', + 'os.execle', + 'os.execlp', + 'os.execlpe', + 'os.execv', + 'os.execve', + 'os.execvp', + 'os.execvpe', + 'os.spawnl', + 'os.spawnle', + 'os.spawnlp', + 'os.spawnlpe', + 'os.spawnv', + 'os.spawnve', + 'os.spawnvp', + 'os.spawnvpe', + 'os.startfile'], + + # insecureSslTls.py + "insecure_ssl_protocol_versions": [ + 'PROTOCOL_SSLv2', + 'SSLv2_METHOD', + 'SSLv23_METHOD', + 'PROTOCOL_SSLv3', + 'PROTOCOL_TLSv1', + 'SSLv3_METHOD', + 'TLSv1_METHOD'], + + # tryExcept.py + "check_typed_exception": False, + + # weakCryptographicKey.py + "weak_key_size_dsa_high": 1024, + "weak_key_size_dsa_medium": 2048, + "weak_key_size_rsa_high": 1024, + "weak_key_size_rsa_medium": 2048, + "weak_key_size_ec_high": 160, + "weak_key_size_ec_medium": 224, + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityNodeVisitor.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,295 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing an AST node visitor for security checks. +""" + +import ast + +from . import SecurityUtils +from .SecurityContext import SecurityContext + + +class SecurityNodeVisitor(object): + """ + Class implementing an AST node visitor for security checks. + """ + def __init__(self, checker, secCheckers, filename): + """ + Constructor + + @param checker reference to the main security checker object + @type SecurityChecker + @param secCheckers dictionary containing the available checker routines + @type dict + @param filename name of the checked file + @type str + """ + self.__checker = checker + self.__securityCheckers = secCheckers + + self.seen = 0 + self.depth = 0 + self.filename = filename + self.imports = set() + self.import_aliases = {} + + # in some cases we can't determine a qualified name + try: + self.namespace = SecurityUtils.getModuleQualnameFromPath(filename) + except SecurityUtils.InvalidModulePath: + self.namespace = "" + + def __runChecks(self, checkType): + """ + Private method to run all enabled checks for a given check type. + + @param checkType type of checks to be run + @type str + """ + if checkType in self.__securityCheckers: + for check in self.__securityCheckers[checkType]: + check(self.__checker.reportError, + SecurityContext(self.__context), + self.__checker.getConfig()) + + def visit_ClassDef(self, node): + """ + Public method defining a visitor for AST ClassDef nodes. + + Add class name to current namespace for all descendants. + + @param node reference to the node being inspected + @type ast.ClassDef + """ + # For all child nodes, add this class name to current namespace + self.namespace = SecurityUtils.namespacePathJoin( + self.namespace, node.name) + + def visit_FunctionDef(self, node): + """ + Public method defining a visitor for AST FunctionDef nodes. + + Add relevant information about the node to the context for use in tests + which inspect function definitions. Add the function name to the + current namespace for all descendants. + + @param node reference to the node being inspected + @type ast.FunctionDef + """ + self.__context['function'] = node + qualname = SecurityUtils.namespacePathJoin(self.namespace, node.name) + name = qualname.split('.')[-1] + self.__context['qualname'] = qualname + self.__context['name'] = name + + # For all child nodes and any tests run, add this function name to + # current namespace + self.namespace = SecurityUtils.namespacePathJoin( + self.namespace, node.name) + + self.__runChecks("FunctionDef") + + def visit_Call(self, node): + """ + Public method defining a visitor for AST Call nodes. + + Add relevant information about the node to the context for use in tests + which inspect function calls. + + @param node reference to the node being inspected + @type ast.Call + """ + self.__context['call'] = node + qualname = SecurityUtils.getCallName(node, self.import_aliases) + name = qualname.split('.')[-1] + self.__context['qualname'] = qualname + self.__context['name'] = name + self.__runChecks("Call") + + def visit_Import(self, node): + """ + Public method defining a visitor for AST Import nodes. + + @param node reference to the node being inspected + @type ast.Import + """ + for nodename in node.names: + if nodename.asname: + self.import_aliases[nodename.asname] = nodename.name + self.imports.add(nodename.name) + self.__context['module'] = nodename.name + self.__runChecks("Import") + + def visit_ImportFrom(self, node): + """ + Public method defining a visitor for AST Import nodes. + + This adds relevant information about the node to + the context for use in tests which inspect imports. + + @param node reference to the node being inspected + @type ast.ImportFrom + """ + module = node.module + if module is None: + self.visit_Import(node) + return + + for nodename in node.names: + if nodename.asname: + self.import_aliases[nodename.asname] = ( + module + "." + nodename.name + ) + else: + # Even if import is not aliased we need an entry that maps + # name to module.name. For example, with 'from a import b' + # b should be aliased to the qualified name a.b + self.import_aliases[nodename.name] = ( + module + '.' + nodename.name) + self.imports.add(module + "." + nodename.name) + self.__context['module'] = module + self.__context['name'] = nodename.name + self.__runChecks("ImportFrom") + + def visit_Constant(self, node): + """ + Public method defining a visitor for Constant nodes. + + This calls the appropriate method for the node type. + It maintains compatibility with <3.6 and 3.8+ + + @param node reference to the node being inspected + @type ast.Constant + """ + if isinstance(node.value, str): + self.visit_Str(node) + elif isinstance(node.value, bytes): + self.visit_Bytes(node) + + def visit_Str(self, node): + """ + Public method defining a visitor for String nodes. + + This adds relevant information about node to + the context for use in tests which inspect strings. + + @param node reference to the node being inspected + @type ast.Str + """ + self.__context['str'] = node.s + if not isinstance(node._securityParent, ast.Expr): # docstring + self.__context['linerange'] = SecurityUtils.linerange_fix( + node._securityParent + ) + self.__runChecks("Str") + + def visit_Bytes(self, node): + """ + Public method defining a visitor for Bytes nodes. + + This adds relevant information about node to + the context for use in tests which inspect strings. + + @param node reference to the node being inspected + @type ast.Bytes + """ + self.__context['bytes'] = node.s + if not isinstance(node._securityParent, ast.Expr): # docstring + self.__context['linerange'] = SecurityUtils.linerange_fix( + node._securityParent + ) + self.__runChecks("Bytes") + + def __preVisit(self, node): + """ + Private method to set up a context for the visit method. + + @param node node to base the context on + @type ast.AST + @return flag indicating to visit the node + @rtype bool + """ + self.__context = {} + self.__context['imports'] = self.imports + self.__context['import_aliases'] = self.import_aliases + + if hasattr(node, 'lineno'): + self.__context['lineno'] = node.lineno +## +## if node.lineno in self.nosec_lines: +## LOG.debug("skipped, nosec") +## self.metrics.note_nosec() +## return False + + self.__context['node'] = node + self.__context['linerange'] = SecurityUtils.linerange_fix(node) + self.__context['filename'] = self.filename + + self.seen += 1 + self.depth += 1 + + return True + + def visit(self, node): + """ + Public method to inspected an AST node. + + @param node AST node to be inspected + @type ast.AST + """ + name = node.__class__.__name__ + method = 'visit_' + name + visitor = getattr(self, method, None) + if visitor is not None: + visitor(node) + else: + self.__runChecks(name) + + def __postVisit(self, node): + """ + Private method to clean up after a node was visited. + + @param node AST node that was visited + @type ast.AST + """ + self.depth -= 1 + # Clean up post-recursion stuff that gets setup in the visit methods + # for these node types. + if isinstance(node, (ast.FunctionDef, ast.ClassDef)): + self.namespace = SecurityUtils.namespacePathSplit( + self.namespace)[0] + + def generic_visit(self, node): + """ + Public method to drive the node visitor. + + @param node node to be inspected + @type ast.AST + """ + for _, value in ast.iter_fields(node): + if isinstance(value, list): + maxIndex = len(value) - 1 + for index, item in enumerate(value): + if isinstance(item, ast.AST): + if index < maxIndex: + item._securitySibling = value[index + 1] + else: + item._securitySibling = None + item._securityParent = node + + if self.__preVisit(item): + self.visit(item) + self.generic_visit(item) + self.__postVisit(item) + + elif isinstance(value, ast.AST): + value._securitySibling = None + value._securityParent = node + if self.__preVisit(value): + self.visit(value) + self.generic_visit(value) + self.__postVisit(value)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityUtils.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,326 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing utility functions used by the security checks. +""" + +import ast +import os + +import AstUtilities + + +class InvalidModulePath(Exception): + """ + Class defining an exception for invalid module paths. + """ + pass + + +def getModuleQualnameFromPath(path): + """ + Function to get the module's qualified name by analysis of the + path. + + Resolve the absolute pathname and eliminate symlinks. This could result + in an incorrect name if symlinks are used to restructure the python lib + directory. + + Starting from the right-most directory component look for __init__.py + in the directory component. If it exists then the directory name is + part of the module name. Move left to the subsequent directory + components until a directory is found without __init__.py. + + @param path path of the module to be analyzed + @type str + @return qualified name of the module + @rtype str + @exception InvalidModulePath raised to indicate an invalid module path + """ + (head, tail) = os.path.split(path) + if head == '' or tail == '': + raise InvalidModulePath('Invalid python file path: "{0}"' + ' Missing path or file name'.format(path)) + + qname = [os.path.splitext(tail)[0]] + while head not in ['/', '.', '']: + if os.path.isfile(os.path.join(head, '__init__.py')): + (head, tail) = os.path.split(head) + qname.insert(0, tail) + else: + break + + qualname = '.'.join(qname) + return qualname + + +def namespacePathJoin(namespace, name): + """ + Function to extend a given namespace path. + + @param namespace namespace to be extended + @type str + @param name node name to be appended + @type str + @return extended namespace + @rtype str + """ + return "{0}.{1}".format(namespace, name) + + +def namespacePathSplit(path): + """ + Function to split a namespace path into a head and tail. + + Tail will be the last namespace path component and head will + be everything leading up to that in the path. This is similar to + os.path.split. + + @param path namespace path to be split + @type str + @return tuple containing the namespace path head and tail + @rtype tuple of (str, str) + """ + return tuple(path.rsplit('.', 1)) + + +def getAttrQualName(node, aliases): + """ + Function to get a the full name for the attribute node. + + This will resolve a pseudo-qualified name for the attribute + rooted at node as long as all the deeper nodes are Names or + Attributes. This will give you how the code referenced the name but + will not tell you what the name actually refers to. If we + encounter a node without a static name we punt with an + empty string. If this encounters something more complex, such as + foo.mylist[0](a,b) we just return empty string. + + @param node attribute node to be treated + @type ast.Attribute + @param aliases dictionary of import aliases + @type dict + @return qualified name of the attribute + @rtype str + """ + if isinstance(node, ast.Name): + if node.id in aliases: + return aliases[node.id] + return node.id + elif isinstance(node, ast.Attribute): + name = "{0}.{1}".format(getAttrQualName(node.value, aliases), + node.attr) + if name in aliases: + return aliases[name] + return name + else: + return "" + + +def getCallName(node, aliases): + """ + Function to extract the call name from an ast.Call node. + + @param node node to extract information from + @type ast.Call + @param aliases dictionary of import aliases + @type dict + @return name of the ast.Call node + @rtype str + """ + if isinstance(node.func, ast.Name): + if deepgetattr(node, 'func.id') in aliases: + return aliases[deepgetattr(node, 'func.id')] + return deepgetattr(node, 'func.id') + elif isinstance(node.func, ast.Attribute): + return getAttrQualName(node.func, aliases) + else: + return "" + + +def getQualAttr(node, aliases): + """ + Function to extract the qualified name from an ast.Attribute node. + + @param node node to extract information from + @type ast.Attribute + @param aliases dictionary of import aliases + @type dict + @return qualified attribute name + @rtype str + """ + prefix = "" + if isinstance(node, ast.Attribute): + try: + val = deepgetattr(node, 'value.id') + if val in aliases: + prefix = aliases[val] + else: + prefix = deepgetattr(node, 'value.id') + except Exception: + # We can't get the fully qualified name for an attr, just return + # its base name. + pass + + return "{0}.{1}".format(prefix, node.attr) + else: + return "" + + +def deepgetattr(obj, attr): + """ + Function to recurs through an attribute chain to get the ultimate value. + + @param obj reference to the object to be recursed + @type ast.Name or ast.Attribute + @param attr attribute chain to be parsed + @type ast.Attribute + @return ultimate value + @rtype ast.AST + """ + for key in attr.split('.'): + obj = getattr(obj, key) + return obj + + +def linerange(node): + """ + Function to get line number range from a node. + + @param node node to extract a line range from + @type ast.AST + @return list containing the line number range + @rtype list of int + """ + strip = {"body": None, "orelse": None, + "handlers": None, "finalbody": None} + for key in strip.keys(): + if hasattr(node, key): + strip[key] = getattr(node, key) + node.key = [] + + lines_min = 9999999999 + lines_max = -1 + for n in ast.walk(node): + if hasattr(n, 'lineno'): + lines_min = min(lines_min, n.lineno) + lines_max = max(lines_max, n.lineno) + + for key in strip.keys(): + if strip[key] is not None: + node.key = strip[key] + + if lines_max > -1: + return list(range(lines_min, lines_max + 1)) + + return [0, 1] + + +def linerange_fix(node): + """ + Function to get a line number range working around a known Python bug + with multi-line strings. + + @param node node to extract a line range from + @type ast.AST + @return list containing the line number range + @rtype list of int + """ + # deal with multiline strings lineno behavior (Python issue #16806) + lines = linerange(node) + if ( + hasattr(node, '_securitySibling') and + hasattr(node._securitySibling, 'lineno') + ): + start = min(lines) + delta = node._securitySibling.lineno - start + if delta > 1: + return list(range(start, node._securitySibling.lineno)) + + return lines + + +def escapedBytesRepresentation(b): + """ + Function to escape bytes for comparison with other strings. + + In practice it turns control characters into acceptable codepoints then + encodes them into bytes again to turn unprintable bytes into printable + escape sequences. + + This is safe to do for the whole range 0..255 and result matches + unicode_escape on a unicode string. + + @param b bytes object to be escaped + @type bytes + @return escaped bytes object + @rtype bytes + """ + return b.decode('unicode_escape').encode('unicode_escape') + + +def concatString(node, stop=None): + """ + Function to build a string from an ast.BinOp chain. + + This will build a string from a series of ast.Str/ast.Constant nodes + wrapped in ast.BinOp nodes. Something like "a" + "b" + "c" or "a %s" % val + etc. The provided node can be any participant in the BinOp chain. + + @param node node to be processed + @type ast.BinOp or ast.Str/ast.Constant + @param stop base node to stop at + @type ast.BinOp or ast.Str/ast.Constant + @return tuple containing the root node of the expression and the string + value + @rtype tuple of (ast.AST, str) + """ + def _get(node, bits, stop=None): + if node != stop: + bits.append( + _get(node.left, bits, stop) + if isinstance(node.left, ast.BinOp) + else node.left + ) + bits.append( + _get(node.right, bits, stop) + if isinstance(node.right, ast.BinOp) + else node.right + ) + + bits = [node] + while isinstance(node._securityParent, ast.BinOp): + node = node._securityParent + if isinstance(node, ast.BinOp): + _get(node, bits, stop) + + return ( + node, + " ".join([x.s for x in bits if AstUtilities.isString(x)]) + ) + + +def getCalledName(node): + """ + Function to get the function name from an ast.Call node. + + An ast.Call node representing a method call will present differently to one + wrapping a function call: thing.call() vs call(). This helper will grab the + unqualified call name correctly in either case. + + @param node reference to the call node + @type ast.Call + @return function name of the node + @rtype str + """ + func = node.func + try: + return func.attr if isinstance(func, ast.Attribute) else func.id + except AttributeError: + return "" + +# +# eflag: noqa = M601
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/__init__.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Package implementing the security checker. +"""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,417 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> +# + + +""" +Module implementing message translations for the code style plugin messages +(security part). +""" + +from PyQt5.QtCore import QCoreApplication + +_securityMessages = { + # assert used + "S101": QCoreApplication.translate( + "Security", + "Use of 'assert' detected. The enclosed code will be removed when" + " compiling to optimised byte code."), + + # exec used + "S102": QCoreApplication.translate( + "Security", + "Use of 'exec' detected."), + + # bad file permissions + "S103": QCoreApplication.translate( + "Security", + "'chmod' setting a permissive mask {0} on file ({1})."), + + # bind to all interfaces + "S104": QCoreApplication.translate( + "Security", + "Possible binding to all interfaces."), + + # hardcoded passwords + "S105": QCoreApplication.translate( + "Security", + "Possible hardcoded password: '{0}'"), + "S106": QCoreApplication.translate( + "Security", + "Possible hardcoded password: '{0}'"), + "S107": QCoreApplication.translate( + "Security", + "Possible hardcoded password: '{0}'"), + + # hardcoded tmp directory + "S108": QCoreApplication.translate( + "Security", + "Probable insecure usage of temp file/directory."), + + # try-except + "S110": QCoreApplication.translate( + "Security", + "Try, Except, Pass detected."), + "S112": QCoreApplication.translate( + "Security", + "Try, Except, Continue detected."), + + # flask app + "S201": QCoreApplication.translate( + "Security", + "A Flask app appears to be run with debug=True, which exposes the" + " Werkzeug debugger and allows the execution of arbitrary code."), + + # blacklisted calls + "S301": QCoreApplication.translate( + "Security", + "Pickle and modules that wrap it can be unsafe when used to " + "deserialize untrusted data, possible security issue."), + "S302": QCoreApplication.translate( + "Security", + "Deserialization with the marshal module is possibly dangerous."), + "S303": QCoreApplication.translate( + "Security", + "Use of insecure MD2, MD4, MD5, or SHA1 hash function."), + "S304": QCoreApplication.translate( + "Security", + "Use of insecure cipher '{0}'. Replace with a known secure cipher" + " such as AES."), + "S305": QCoreApplication.translate( + "Security", + "Use of insecure cipher mode '{0}'."), + "S306": QCoreApplication.translate( + "Security", + "Use of insecure and deprecated function (mktemp)."), + "S307": QCoreApplication.translate( + "Security", + "Use of possibly insecure function - consider using safer" + " ast.literal_eval."), + "S308": QCoreApplication.translate( + "Security", + "Use of mark_safe() may expose cross-site scripting vulnerabilities" + " and should be reviewed."), + "S309": QCoreApplication.translate( + "Security", + "Use of HTTPSConnection on older versions of Python prior to 2.7.9" + " and 3.4.3 do not provide security, see" + " https://wiki.openstack.org/wiki/OSSN/OSSN-0033"), + "S310": QCoreApplication.translate( + "Security", + "Audit url open for permitted schemes. Allowing use of file:/ or" + " custom schemes is often unexpected."), + "S311": QCoreApplication.translate( + "Security", + "Standard pseudo-random generators are not suitable for" + " security/cryptographic purposes."), + "S312": QCoreApplication.translate( + "Security", + "Telnet-related functions are being called. Telnet is considered" + " insecure. Use SSH or some other encrypted protocol."), + "S313": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable to" + " XML attacks. Replace '{0}' with its defusedxml equivalent function" + " or make sure defusedxml.defuse_stdlib() is called."), + "S314": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable to" + " XML attacks. Replace '{0}' with its defusedxml equivalent function" + " or make sure defusedxml.defuse_stdlib() is called."), + "S315": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable to" + " XML attacks. Replace '{0}' with its defusedxml equivalent function" + " or make sure defusedxml.defuse_stdlib() is called."), + "S316": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable to" + " XML attacks. Replace '{0}' with its defusedxml equivalent function" + " or make sure defusedxml.defuse_stdlib() is called."), + "S317": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable to" + " XML attacks. Replace '{0}' with its defusedxml equivalent function" + " or make sure defusedxml.defuse_stdlib() is called."), + "S318": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable to" + " XML attacks. Replace '{0}' with its defusedxml equivalent function" + " or make sure defusedxml.defuse_stdlib() is called."), + "S319": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable to" + " XML attacks. Replace '{0}' with its defusedxml equivalent function" + " or make sure defusedxml.defuse_stdlib() is called."), + "S320": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable to" + " XML attacks. Replace '{0}' with its defusedxml equivalent" + " function."), + "S321": QCoreApplication.translate( + "Security", + "FTP-related functions are being called. FTP is considered insecure." + " Use SSH/SFTP/SCP or some other encrypted protocol."), + "S322": QCoreApplication.translate( + "Security", + "The input method in Python 2 will read from standard input, evaluate" + " and run the resulting string as Python source code. This is" + " similar, though in many ways worse, than using eval. On Python 2," + " use raw_input instead, input is safe in Python 3."), + "S323": QCoreApplication.translate( + "Security", + "By default, Python will create a secure, verified SSL context for" + " use in such classes as HTTPSConnection. However, it still allows" + " using an insecure context via the _create_unverified_context that" + " reverts to the previous behavior that does not validate" + " certificates or perform hostname checks."), + "S324": QCoreApplication.translate( + "Security", + "Use of os.tempnam() and os.tmpnam() is vulnerable to symlink" + " attacks. Consider using tmpfile() instead."), + + # hashlib.new + "S331": QCoreApplication.translate( + "Security", + "Use of insecure {0} hash function."), + + # blacklisted imports + "S401": QCoreApplication.translate( + "Security", + "A telnet-related module is being imported. Telnet is considered" + " insecure. Use SSH or some other encrypted protocol."), + "S402": QCoreApplication.translate( + "Security", + "A FTP-related module is being imported. FTP is considered" + " insecure. Use SSH/SFTP/SCP or some other encrypted protocol."), + "S403": QCoreApplication.translate( + "Security", + "Consider possible security implications associated with the '{0}'" + " module."), + "S404": QCoreApplication.translate( + "Security", + "Consider possible security implications associated with the '{0}'" + " module."), + "S405": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable" + " to XML attacks. Replace '{0}' with the equivalent defusedxml" + " package, or make sure defusedxml.defuse_stdlib() is called."), + "S406": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable" + " to XML attacks. Replace '{0}' with the equivalent defusedxml" + " package, or make sure defusedxml.defuse_stdlib() is called."), + "S407": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable" + " to XML attacks. Replace '{0}' with the equivalent defusedxml" + " package, or make sure defusedxml.defuse_stdlib() is called."), + "S408": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable" + " to XML attacks. Replace '{0}' with the equivalent defusedxml" + " package, or make sure defusedxml.defuse_stdlib() is called."), + "S409": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable" + " to XML attacks. Replace '{0}' with the equivalent defusedxml" + " package, or make sure defusedxml.defuse_stdlib() is called."), + "S410": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable" + " to XML attacks. Replace '{0}' with the equivalent defusedxml" + " package."), + "S411": QCoreApplication.translate( + "Security", + "Using '{0}' to parse untrusted XML data is known to be vulnerable" + " to XML attacks. Use defused.xmlrpc.monkey_patch() function to" + " monkey-patch xmlrpclib and mitigate XML vulnerabilities."), + "S412": QCoreApplication.translate( + "Security", + "Consider possible security implications associated with '{0}'" + " module."), + "S413": QCoreApplication.translate( + "Security", + "The pyCrypto library and its module '{0}' are no longer actively" + " maintained and have been deprecated. Consider using" + " pyca/cryptography library."), + + # insecure certificate usage + "S501": QCoreApplication.translate( + "Security", + "'requests' call with verify=False disabling SSL certificate checks," + " security issue."), + + # insecure SSL/TLS protocol version + "S502.1": QCoreApplication.translate( + "Security", + "'ssl.wrap_socket' call with insecure SSL/TLS protocol version" + " identified, security issue."), + "S502.2": QCoreApplication.translate( + "Security", + "'SSL.Context' call with insecure SSL/TLS protocol version identified," + " security issue."), + "S502.3": QCoreApplication.translate( + "Security", + "Function call with insecure SSL/TLS protocol version identified," + " security issue."), + "S503": QCoreApplication.translate( + "Security", + "Function definition identified with insecure SSL/TLS protocol" + " version by default, possible security issue."), + "S504": QCoreApplication.translate( + "Security", + "'ssl.wrap_socket' call with no SSL/TLS protocol version specified," + " the default 'SSLv23' could be insecure, possible security issue."), + + # weak cryptographic keys + "S505": QCoreApplication.translate( + "Security", + "{0} key sizes below {1:d} bits are considered breakable."), + + # YAML load + "S506": QCoreApplication.translate( + "Security", + "Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary" + " objects. Consider 'yaml.safe_load()'."), + + # SSH host key verification + "S507": QCoreApplication.translate( + "Security", + "Paramiko call with policy set to automatically trust the unknown" + " host key."), + + # Shell injection + "S601": QCoreApplication.translate( + "Security", + "Possible shell injection via 'Paramiko' call, check inputs are" + " properly sanitized."), + "S602.L": QCoreApplication.translate( + "Security", + "'subprocess' call with shell=True seems safe, but may be changed" + " in the future, consider rewriting without shell"), + "S602.H": QCoreApplication.translate( + "Security", + "'subprocess' call with shell=True identified, security issue."), + "S603": QCoreApplication.translate( + "Security", + "'subprocess' call - check for execution of untrusted input."), + "S604": QCoreApplication.translate( + "Security", + "Function call with shell=True parameter identified, possible" + " security issue."), + "S605.L": QCoreApplication.translate( + "Security", + "Starting a process with a shell: Seems safe, but may be changed in" + " the future, consider rewriting without shell"), + "S605.H": QCoreApplication.translate( + "Security", + "Starting a process with a shell, possible injection detected," + " security issue."), + "S606": QCoreApplication.translate( + "Security", + "Starting a process without a shell."), + "S607": QCoreApplication.translate( + "Security", + "Starting a process with a partial executable path."), + + # SQL injection + "S608": QCoreApplication.translate( + "Security", + "Possible SQL injection vector through string-based query" + " construction."), + + # Wildcard injection + "S609": QCoreApplication.translate( + "Security", + "Possible wildcard injection in call: {0}"), + + # Django SQL injection + "S610": QCoreApplication.translate( + "Security", + "Use of 'extra()' opens a potential SQL attack vector."), + "S611": QCoreApplication.translate( + "Security", + "Use of 'RawSQL()' opens a potential SQL attack vector."), + + # Jinja2 templates + "S701.1": QCoreApplication.translate( + "Security", + "Using jinja2 templates with 'autoescape=False' is dangerous and can" + " lead to XSS. Use 'autoescape=True' or use the 'select_autoescape'" + " function to mitigate XSS vulnerabilities."), + "S701.2": QCoreApplication.translate( + "Security", + "By default, jinja2 sets 'autoescape' to False. Consider using" + " 'autoescape=True' or use the 'select_autoescape' function to" + " mitigate XSS vulnerabilities."), + + # Mako templates + "S702": QCoreApplication.translate( + "Security", + "Mako templates allow HTML/JS rendering by default and are inherently" + " open to XSS attacks. Ensure variables in all templates are properly" + " sanitized via the 'n', 'h' or 'x' flags (depending on context). For" + " example, to HTML escape the variable 'data' do ${{ data |h }}."), + + # Django XSS vulnerability + "S703": QCoreApplication.translate( + "Security", + "Potential XSS on 'mark_safe()' function."), + + # hardcoded AWS passwords + "S801": QCoreApplication.translate( + "Security", + "Possible hardcoded AWS access key ID: {0:r}"), + "S802": QCoreApplication.translate( + "Security", + "Possible hardcoded AWS secret access key: {0:r}"), + + # Syntax error + "S999": QCoreApplication.translate( + "Security", + "{0}: {1}"), +} + +_securityMessagesSampleArgs = { + "S103": ["0o777", "testfile.txt"], + "S105": ["password"], + "S106": ["password"], + "S107": ["password"], + + "S304": ["Crypto.Cipher.DES"], + "S305": ["cryptography.hazmat.primitives.ciphers.modes.ECB"], + "S313": ["xml.etree.cElementTree.parse"], + "S314": ["xml.etree.ElementTree.parse"], + "S315": ["xml.sax.expatreader.create_parser"], + "S316": ["xml.dom.expatbuilder.parse"], + "S317": ["xml.sax.parse"], + "S318": ["xml.dom.minidom.parse"], + "S319": ["xml.dom.pulldom.parse"], + "S320": ["lxml.etree.parse"], + + "S331": ["MD5"], + + "S403": ["pickle"], + "S404": ["subprocess"], + "S405": ["xml.etree.ElementTree"], + "S406": ["xml.sax"], + "S407": ["xml.dom.expatbuilder"], + "S408": ["xml.dom.minidom"], + "S409": ["xml.dom.pulldom"], + "S410": ["lxml"], + "S411": ["xmlrpclib"], + "S412": ["wsgiref.handlers.CGIHandler"], + "S413": ["Crypto.Cipher"], + + "S505": ["RSA", 2048], + + "S609": ["os.system"], + + "S801": ["A1B2C3D4E5F6G7H8I9J0"], + "S802": ["aA1bB2cC3dD4/eE5fF6gG7+hH8iI9jJ0=kKlLM+="], + + "S999": ["SyntaxError", "Invalid Syntax"], +}
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/pycodestyle.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/pycodestyle.py Wed Jun 17 17:14:12 2020 +0200 @@ -91,7 +91,7 @@ except ImportError: from ConfigParser import RawConfigParser # __IGNORE_WARNING__ -__version__ = '2.5.0-eric' +__version__ = '2.6.0-eric' DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git,__pycache__,.tox' DEFAULT_IGNORE = 'E121,E123,E126,E226,E24,E704,W503,W504' @@ -126,14 +126,17 @@ SINGLETONS = frozenset(['False', 'None', 'True']) KEYWORDS = frozenset(keyword.kwlist + ['print', 'async']) - SINGLETONS UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-']) -ARITHMETIC_OP = frozenset(['**', '*', '/', '//', '+', '-']) +ARITHMETIC_OP = frozenset(['**', '*', '/', '//', '+', '-', '@']) WS_OPTIONAL_OPERATORS = ARITHMETIC_OP.union(['^', '&', '|', '<<', '>>', '%']) # Warn for -> function annotation operator in py3.5+ (issue 803) FUNCTION_RETURN_ANNOTATION_OP = ['->'] if sys.version_info >= (3, 5) else [] +ASSIGNMENT_EXPRESSION_OP = [':='] if sys.version_info >= (3, 8) else [] WS_NEEDED_OPERATORS = frozenset([ '**=', '*=', '/=', '//=', '+=', '-=', '!=', '<>', '<', '>', - '%=', '^=', '&=', '|=', '==', '<=', '>=', '<<=', '>>=', '='] + - FUNCTION_RETURN_ANNOTATION_OP) + '%=', '^=', '&=', '|=', '==', '<=', '>=', '<<=', '>>=', '=', + 'and', 'in', 'is', 'or'] + + FUNCTION_RETURN_ANNOTATION_OP + + ASSIGNMENT_EXPRESSION_OP) WHITESPACE = frozenset(' \t') NEWLINE = frozenset([tokenize.NL, tokenize.NEWLINE]) SKIP_TOKENS = NEWLINE.union([tokenize.INDENT, tokenize.DEDENT]) @@ -146,12 +149,13 @@ RERAISE_COMMA_REGEX = re.compile(r'raise\s+\w+\s*,.*,\s*\w+\s*$') ERRORCODE_REGEX = re.compile(r'\b[A-Z]\d{3}\b') DOCSTRING_REGEX = re.compile(r'u?r?["\']') -EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[\[({] | [\]}),;:]') +EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[\[({] | [\]}),;]| :(?!=)') WHITESPACE_AFTER_COMMA_REGEX = re.compile(r'[,;:]\s*(?: |\t)') COMPARE_SINGLETON_REGEX = re.compile(r'(\bNone|\bFalse|\bTrue)?\s*([=!]=)' r'\s*(?(1)|(None|False|True))\b') -COMPARE_NEGATIVE_REGEX = re.compile(r'\b(not)\s+[^][)(}{ ]+\s+(in|is)\s') -COMPARE_TYPE_REGEX = re.compile(r'(?:[=!]=|is(?:\s+not)?)\s*type(?:s.\w+Type' +COMPARE_NEGATIVE_REGEX = re.compile(r'\b(?<!is\s)(not)\s+[^][)(}{ ]+\s+' + r'(in|is)\s') +COMPARE_TYPE_REGEX = re.compile(r'(?:[=!]=|is(?:\s+not)?)\s+type(?:s.\w+Type' r'|\s*\(\s*([^)]*[^ )])\s*\))') KEYWORD_REGEX = re.compile(r'(\s*)\b(?:%s)\b(\s*)' % r'|'.join(KEYWORDS)) OPERATOR_REGEX = re.compile(r'(?:[^,\s])(\s*)(?:[-+*/|!<=>%&^]+)(\s*)') @@ -325,6 +329,41 @@ ######################################################################## +def _is_one_liner(logical_line, indent_level, lines, line_number): + if not STARTSWITH_TOP_LEVEL_REGEX.match(logical_line): + return False + + line_idx = line_number - 1 + + if line_idx < 1: + prev_indent = 0 + else: + prev_indent = expand_indent(lines[line_idx - 1]) + + if prev_indent > indent_level: + return False + + while line_idx < len(lines): + line = lines[line_idx].strip() + if not line.startswith('@') and STARTSWITH_TOP_LEVEL_REGEX.match(line): + break + else: + line_idx += 1 + else: + return False # invalid syntax: EOF while searching for def/class + + next_idx = line_idx + 1 + while next_idx < len(lines): + if lines[next_idx].strip(): + break + else: + next_idx += 1 + else: + return True # line is last in the file + + return expand_indent(lines[next_idx]) <= indent_level + + @register_check def blank_lines(logical_line, blank_lines, indent_level, line_number, blank_before, previous_logical, @@ -353,16 +392,17 @@ E302: def a():\n pass\n\ndef b(n):\n pass E302: def a():\n pass\n\nasync def b(n):\n pass E303: def a():\n pass\n\n\n\ndef b(n):\n pass + E303: def a():\n\n\n\n pass E304: @decorator\n\ndef a():\n pass E305: def a():\n pass\na() E306: def a():\n def b():\n pass\n def c():\n pass E307: def a():\n def b():\n pass\n\n\n def c():\n pass E308: def a():\n\n\n\n pass - """ + """ # noqa top_level_lines = BLANK_LINES_CONFIG['top_level'] method_lines = BLANK_LINES_CONFIG['method'] - if line_number < top_level_lines + 1 and not previous_logical: + if not previous_logical and blank_before < top_level_lines: return # Don't expect blank lines before the first line if previous_logical.startswith('@'): if blank_lines: @@ -375,20 +415,16 @@ yield (0, "E308 too many blank lines (%d)", blank_lines) else: yield (0, "E307 too many blank lines (%d) in a nested " - "scope, expected %d", blank_lines, method_lines) + "scope, expected %d", blank_lines, method_lines) else: yield (0, "E303 too many blank lines (%d), expected %d", - blank_lines, top_level_lines) + blank_lines, top_level_lines) elif STARTSWITH_TOP_LEVEL_REGEX.match(logical_line): - # If this is a one-liner (i.e. the next line is not more - # indented), and the previous line is also not deeper - # (it would be better to check if the previous line is part - # of another def/class at the same level), don't require blank - # lines around this. - prev_line = lines[line_number - 2] if line_number >= 2 else '' - next_line = lines[line_number] if line_number < len(lines) else '' - if (expand_indent(prev_line) <= indent_level and - expand_indent(next_line) <= indent_level): + # allow a group of one-liners + if ( + _is_one_liner(logical_line, indent_level, lines, line_number) and + blank_before == 0 + ): return if indent_level: if not (blank_before == method_lines or @@ -402,7 +438,7 @@ for line in lines[line_number - top_level_lines::-1]: if line.strip() and expand_indent(line) < ancestor_level: ancestor_level = expand_indent(line) - nested = line.lstrip().startswith('def ') + nested = STARTSWITH_DEF_REGEX.match(line.lstrip()) if nested or ancestor_level == 0: break if nested: @@ -517,13 +553,16 @@ line = logical_line for index in range(len(line) - 1): char = line[index] - if char in ',;:' and line[index + 1] not in WHITESPACE: + next_char = line[index + 1] + if char in ',;:' and next_char not in WHITESPACE: before = line[:index] if char == ':' and before.count('[') > before.count(']') and \ before.rfind('{') < before.rfind('['): continue # Slice syntax, no space required - if char == ',' and line[index + 1] == ')': + if char == ',' and next_char == ')': continue # Allow tuple with only one element: (3,) + if char == ':' and next_char == '=' and sys.version_info >= (3, 8): + continue # Allow assignment expression yield index, "E231 missing whitespace after '%s'", char @@ -558,9 +597,11 @@ elif not indent_expect and indent_level > previous_indent_level: yield 0, tmpl % (3 + c, "unexpected indentation") - expected_indent_level = previous_indent_level + 4 - if indent_expect and indent_level > expected_indent_level: - yield 0, tmpl % (7, 'over-indented') + if indent_expect: + expected_indent_amount = 8 if indent_char == '\t' else 4 + expected_indent_level = previous_indent_level + expected_indent_amount + if indent_level > expected_indent_level: + yield 0, tmpl % (7, 'over-indented') @register_check @@ -710,6 +751,9 @@ elif (token_type in (tokenize.STRING, tokenize.COMMENT) or text in ('u', 'ur', 'b', 'br')): indent_chances[start[1]] = str + # visual indent after assert/raise/with + elif not row and not depth and text in ["assert", "raise", "with"]: + indent_chances[end[1] + 1] = True # special case for the "if" statement because len("if (") == 4 elif not indent_chances and not row and not depth and text == 'if': indent_chances[end[1] + 1] = True @@ -846,6 +890,7 @@ E225: submitted +=1 E225: x = x /2 - 1 E225: z = x **y + E225: z = 1and 1 E226: c = (a+b) * (a-b) E226: hypot2 = x*x + y*y E227: c = a|b @@ -855,6 +900,7 @@ need_space = False prev_type = tokenize.OP prev_text = prev_end = None + operator_types = (tokenize.OP, tokenize.NAME) for token_type, text, start, end, line in tokens: if token_type in SKIP_COMMENTS: continue @@ -873,6 +919,19 @@ # Tolerate the "<>" operator, even if running Python 3 # Deal with Python 3's annotated return value "->" pass + elif ( + # def f(a, /, b): + # ^ + # def f(a, b, /): + # ^ + prev_text == '/' and text in {',', ')'} or + # def f(a, b, /): + # ^ + prev_text == ')' and text == ':' + ): + # Tolerate the "/" operator in function definition + # For more info see PEP570 + pass else: if need_space is True or need_space[1]: # A needed trailing space was not found @@ -886,7 +945,7 @@ yield (need_space[0], "%s missing whitespace " "around %s operator" % (code, optype)) need_space = False - elif token_type == tokenize.OP and prev_end is not None: + elif token_type in operator_types and prev_end is not None: if text == '=' and parens: # Allow keyword args or defaults: foo(bar=None). pass @@ -1074,11 +1133,10 @@ Okay: # this is a comment\nimport os Okay: '''this is a module docstring'''\nimport os Okay: r'''this is a module docstring'''\nimport os - Okay: + Okay: try:\n\timport x\nexcept ImportError:\n\tpass\nelse:\n\tpass\nimport y - Okay: + Okay: try:\n\timport x\nexcept ImportError:\n\tpass\nfinally:\n\tpass\nimport y - E402: a=1\nimport os E402: 'One string'\n"Two string"\nimport os E402: a=1\nfrom sys import x @@ -1092,7 +1150,8 @@ line = line[1:] return line and (line[0] == '"' or line[0] == "'") - allowed_try_keywords = ('try', 'except', 'else', 'finally') + allowed_keywords = ( + 'try', 'except', 'else', 'finally', 'with', 'if', 'elif') if indent_level: # Allow imports in conditional statement/function return @@ -1106,9 +1165,9 @@ yield 0, "E402 module level import not at top of file" elif re.match(DUNDER_REGEX, line): return - elif any(line.startswith(kw) for kw in allowed_try_keywords): - # Allow try, except, else, finally keywords intermixed with - # imports in order to support conditional importing + elif any(line.startswith(kw) for kw in allowed_keywords): + # Allow certain keywords intermixed with imports in order to + # support conditional or filtered importing return elif is_string_literal(line): # The first literal is a docstring, allow it. Otherwise, report @@ -1160,7 +1219,9 @@ update_counts(line[prev_found:found], counts) if ((counts['{'] <= counts['}'] and # {'a': 1} (dict) counts['['] <= counts[']'] and # [1:2] (slice) - counts['('] <= counts[')'])): # (annotation) + counts['('] <= counts[')']) and # (annotation) + not (sys.version_info >= (3, 8) and + line[found + 1] == '=')): # assignment expression lambda_kw = LAMBDA_REGEX.search(line, 0, found) if lambda_kw: before = line[:lambda_kw.start()].rstrip() @@ -1224,13 +1285,16 @@ parens -= 1 +_SYMBOLIC_OPS = frozenset("()[]{},:.;@=%~") | frozenset(("...",)) + + def _is_binary_operator(token_type, text): is_op_token = token_type == tokenize.OP is_conjunction = text in ['and', 'or'] # NOTE(sigmavirus24): Previously the not_a_symbol check was executed # conditionally. Since it is now *always* executed, text may be # None. In that case we get a TypeError for `text not in str`. - not_a_symbol = text and text not in "()[]{},:.;@=%~" + not_a_symbol = text and text not in _SYMBOLIC_OPS # The % character is strictly speaking a binary operator, but the # common usage seems to be to put it next to the format parameters, # after a line break. @@ -1443,28 +1507,58 @@ Variables can be bound in several other contexts, including class and function definitions, 'global' and 'nonlocal' statements, - exception handlers, and 'with' statements. + exception handlers, and 'with' and 'for' statements. + In addition, we have a special handling for function parameters. Okay: except AttributeError as o: Okay: with lock as L: + Okay: foo(l=12) + Okay: for a in foo(l=12): E741: except AttributeError as O: E741: with lock as l: E741: global I E741: nonlocal l + E741: def foo(l): + E741: def foo(l=12): + E741: l = foo(l=12) + E741: for l in range(10): E742: class I(object): E743: def l(x): """ + is_func_def = False # Set to true if 'def' is found + parameter_parentheses_level = 0 idents_to_avoid = ('l', 'O', 'I') prev_type, prev_text, prev_start, prev_end, __ = tokens[0] for token_type, text, start, end, line in tokens[1:]: ident = pos = None + # find function definitions + if prev_text == 'def': + is_func_def = True + # update parameter parentheses level + if parameter_parentheses_level == 0 and \ + prev_type == tokenize.NAME and \ + token_type == tokenize.OP and text == '(': + parameter_parentheses_level = 1 + elif parameter_parentheses_level > 0 and \ + token_type == tokenize.OP: + if text == '(': + parameter_parentheses_level += 1 + elif text == ')': + parameter_parentheses_level -= 1 # identifiers on the lhs of an assignment operator - if token_type == tokenize.OP and '=' in text: + if token_type == tokenize.OP and '=' in text and \ + parameter_parentheses_level == 0: if prev_text in idents_to_avoid: ident = prev_text pos = prev_start - # identifiers bound to values with 'as', 'global', or 'nonlocal' - if prev_text in ('as', 'global', 'nonlocal'): + # identifiers bound to values with 'as', 'for', + # 'global', or 'nonlocal' + if prev_text in ('as', 'for', 'global', 'nonlocal'): + if text in idents_to_avoid: + ident = text + pos = start + # function parameter definitions + if is_func_def: if text in idents_to_avoid: ident = text pos = start @@ -1767,6 +1861,7 @@ >>> expand_indent(' \t') 16 """ + line = line.rstrip('\n\r') if '\t' not in line: return len(line) - len(line.lstrip()) result = 0
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/translations.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/translations.py Wed Jun 17 17:14:12 2020 +0200 @@ -12,8 +12,11 @@ from Globals import translate -__all__ = ["getTranslatedMessage"] +from .Security.translations import ( + _securityMessages, _securityMessagesSampleArgs +) +# TODO: separate this huge dict into separate translations per checker type _messages = { ################################################################## ## pycodestyle messages @@ -854,151 +857,152 @@ ################################################################## ## CodeStyleFixer messages ################################################################## - "FD111": QCoreApplication.translate( + + "FIXD111": QCoreApplication.translate( 'CodeStyleFixer', "Triple single quotes converted to triple double quotes."), - 'FD112': QCoreApplication.translate( + 'FIXD112': QCoreApplication.translate( 'CodeStyleFixer', 'Introductory quotes corrected to be {0}"""'), - "FD121": QCoreApplication.translate( + "FIXD121": QCoreApplication.translate( 'CodeStyleFixer', "Single line docstring put on one line."), - "FD131": QCoreApplication.translate( + "FIXD131": QCoreApplication.translate( 'CodeStyleFixer', "Period added to summary line."), - "FD141": QCoreApplication.translate( + "FIXD141": QCoreApplication.translate( 'CodeStyleFixer', "Blank line before function/method docstring removed."), - "FD142": QCoreApplication.translate( + "FIXD142": QCoreApplication.translate( 'CodeStyleFixer', "Blank line inserted before class docstring."), - "FD143": QCoreApplication.translate( + "FIXD143": QCoreApplication.translate( 'CodeStyleFixer', "Blank line inserted after class docstring."), - "FD144": QCoreApplication.translate( + "FIXD144": QCoreApplication.translate( 'CodeStyleFixer', "Blank line inserted after docstring summary."), - "FD145": QCoreApplication.translate( + "FIXD145": QCoreApplication.translate( 'CodeStyleFixer', "Blank line inserted after last paragraph of docstring."), - "FD221": QCoreApplication.translate( + "FIXD221": QCoreApplication.translate( 'CodeStyleFixer', "Leading quotes put on separate line."), - "FD222": QCoreApplication.translate( + "FIXD222": QCoreApplication.translate( 'CodeStyleFixer', "Trailing quotes put on separate line."), - "FD242": QCoreApplication.translate( + "FIXD242": QCoreApplication.translate( 'CodeStyleFixer', "Blank line before class docstring removed."), - "FD244": QCoreApplication.translate( + "FIXD244": QCoreApplication.translate( 'CodeStyleFixer', "Blank line before function/method docstring removed."), - "FD243": QCoreApplication.translate( + "FIXD243": QCoreApplication.translate( 'CodeStyleFixer', "Blank line after class docstring removed."), - "FD245": QCoreApplication.translate( + "FIXD245": QCoreApplication.translate( 'CodeStyleFixer', "Blank line after function/method docstring removed."), - "FD247": QCoreApplication.translate( + "FIXD247": QCoreApplication.translate( 'CodeStyleFixer', "Blank line after last paragraph removed."), - "FE101": QCoreApplication.translate( + "FIXE101": QCoreApplication.translate( 'CodeStyleFixer', "Tab converted to 4 spaces."), - "FE111": QCoreApplication.translate( + "FIXE111": QCoreApplication.translate( 'CodeStyleFixer', "Indentation adjusted to be a multiple of four."), - "FE121": QCoreApplication.translate( + "FIXE121": QCoreApplication.translate( 'CodeStyleFixer', "Indentation of continuation line corrected."), - "FE124": QCoreApplication.translate( + "FIXE124": QCoreApplication.translate( 'CodeStyleFixer', "Indentation of closing bracket corrected."), - "FE122": QCoreApplication.translate( + "FIXE122": QCoreApplication.translate( 'CodeStyleFixer', "Missing indentation of continuation line corrected."), - "FE123": QCoreApplication.translate( + "FIXE123": QCoreApplication.translate( 'CodeStyleFixer', "Closing bracket aligned to opening bracket."), - "FE125": QCoreApplication.translate( + "FIXE125": QCoreApplication.translate( 'CodeStyleFixer', "Indentation level changed."), - "FE126": QCoreApplication.translate( + "FIXE126": QCoreApplication.translate( 'CodeStyleFixer', "Indentation level of hanging indentation changed."), - "FE127": QCoreApplication.translate( + "FIXE127": QCoreApplication.translate( 'CodeStyleFixer', "Visual indentation corrected."), - "FE201": QCoreApplication.translate( + "FIXE201": QCoreApplication.translate( 'CodeStyleFixer', "Extraneous whitespace removed."), - "FE225": QCoreApplication.translate( + "FIXE225": QCoreApplication.translate( 'CodeStyleFixer', "Missing whitespace added."), - "FE221": QCoreApplication.translate( + "FIXE221": QCoreApplication.translate( 'CodeStyleFixer', "Extraneous whitespace removed."), - "FE231": QCoreApplication.translate( + "FIXE231": QCoreApplication.translate( 'CodeStyleFixer', "Missing whitespace added."), - "FE251": QCoreApplication.translate( + "FIXE251": QCoreApplication.translate( 'CodeStyleFixer', "Extraneous whitespace removed."), - "FE261": QCoreApplication.translate( + "FIXE261": QCoreApplication.translate( 'CodeStyleFixer', "Whitespace around comment sign corrected."), - "FE302+": lambda n=1: translate( + "FIXE302+": lambda n=1: translate( 'CodeStyleFixer', "%n blank line(s) inserted.", '', n), - "FE302-": lambda n=1: translate( + "FIXE302-": lambda n=1: translate( 'CodeStyleFixer', "%n superfluous lines removed", '', n), - "FE303": QCoreApplication.translate( + "FIXE303": QCoreApplication.translate( 'CodeStyleFixer', "Superfluous blank lines removed."), - "FE304": QCoreApplication.translate( + "FIXE304": QCoreApplication.translate( 'CodeStyleFixer', "Superfluous blank lines after function decorator removed."), - "FE401": QCoreApplication.translate( + "FIXE401": QCoreApplication.translate( 'CodeStyleFixer', "Imports were put on separate lines."), - "FE501": QCoreApplication.translate( + "FIXE501": QCoreApplication.translate( 'CodeStyleFixer', "Long lines have been shortened."), - "FE502": QCoreApplication.translate( + "FIXE502": QCoreApplication.translate( 'CodeStyleFixer', "Redundant backslash in brackets removed."), - "FE701": QCoreApplication.translate( + "FIXE701": QCoreApplication.translate( 'CodeStyleFixer', "Compound statement corrected."), - "FE702": QCoreApplication.translate( + "FIXE702": QCoreApplication.translate( 'CodeStyleFixer', "Compound statement corrected."), - "FE711": QCoreApplication.translate( + "FIXE711": QCoreApplication.translate( 'CodeStyleFixer', "Comparison to None/True/False corrected."), - "FN804": QCoreApplication.translate( + "FIXN804": QCoreApplication.translate( 'CodeStyleFixer', "'{0}' argument added."), - "FN806": QCoreApplication.translate( + "FIXN806": QCoreApplication.translate( 'CodeStyleFixer', "'{0}' argument removed."), - "FW291": QCoreApplication.translate( + "FIXW291": QCoreApplication.translate( 'CodeStyleFixer', "Whitespace stripped from end of line."), - "FW292": QCoreApplication.translate( + "FIXW292": QCoreApplication.translate( 'CodeStyleFixer', "newline added to end of file."), - "FW391": QCoreApplication.translate( + "FIXW391": QCoreApplication.translate( 'CodeStyleFixer', "Superfluous trailing blank lines removed from end of file."), - "FW603": QCoreApplication.translate( + "FIXW603": QCoreApplication.translate( 'CodeStyleFixer', "'<>' replaced by '!='."), - "FWRITE_ERROR": QCoreApplication.translate( + "FIXWRITE_ERROR": QCoreApplication.translate( 'CodeStyleFixer', "Could not save the file! Skipping it. Reason: {0}"), } @@ -1073,40 +1077,76 @@ "A891": [5, 3], "A999": ["SyntaxError", "Invalid Syntax"], - "FWRITE_ERROR": ["IOError"], + "FIXWRITE_ERROR": ["IOError"], } +messageCatalogs = ( + _messages, + _securityMessages, +) -def getTranslatedMessage(message): +messageSampleArgsCatalog = ( + _messages_sample_args, + _securityMessagesSampleArgs, +) + + +def getTranslatedMessage(messageCode, messageArgs, example=False): """ Module function to get a translated and formatted message for a - given pyflakes message ID. + given message ID. - @param message the message ID (string) - @return translated and formatted message (string) + @param messageCode the message code + @type str + @param messageArgs list of arguments or a single integer value to format + the message + @type list or int + @param example flag indicating a translated message filled with example + data is requested (messageArgs is ignored if given) + @type bool + @return translated and formatted message + @rtype str """ - if isinstance(message, list): - message, args = message + if example: + for argsCatalog in messageSampleArgsCatalog: + if messageCode in argsCatalog: + args = argsCatalog[messageCode] + break + else: + args = None else: - args = [] + args = messageArgs + + for catalog in messageCatalogs: + if messageCode in catalog: + if args is None: + return catalog[messageCode] + elif isinstance(args, int): + # Retranslate with correct plural form + return catalog[messageCode](args) + else: + return catalog[messageCode].format(*args) + else: + if example: + return None + else: + return QCoreApplication.translate( + "CodeStyleChecker", + "No message defined for code '{0}'." + ).format(messageCode) - if message in _messages: - if isinstance(args, int): - # Retranslate with correct plural form - return _messages[message](args) - else: - if message.startswith(('FD', 'FE', 'FN', 'FW')): - prefix = '' - else: - prefix = message + ' ' - return prefix + _messages[message].format(*args) - elif ' ' in message: - # already translated - return message - else: - return QCoreApplication.translate( - "CodeStyleFixer", " no message defined for code '{0}'" - ).format(message) + +def getMessageCodes(): + """ + Module function to get a list of known message codes. + + @return list of known message codes + @rtype set of str + """ + knownCodes = [] + for catalog in messageCatalogs: + knownCodes += list(catalog.keys()) + return {c.split(".", 1)[0] for c in knownCodes} # # eflag: noqa = M201
--- a/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/__init__.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/__init__.py Wed Jun 17 17:14:12 2020 +0200 @@ -31,13 +31,40 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -__version__ = '2.1.1+' +__version__ = '2.2.0' """ pyflakes repository date: 2020-02-03. """ """ Changes +2.2.0 (2020-04-08) + +- Include column information in error messages +- Fix ``@overload`` detection with other decorators and in non-global scopes +- Fix return-type annotation being a class member +- Fix assignment to ``_`` in doctests with existing ``_`` name +- Namespace attributes which are attached to ast nodes with ``_pyflakes_`` to + avoid conflicts with other libraries (notably bandit) +- Add check for f-strings without placeholders +- Add check for unused/extra/invalid ``'string literal'.format(...)`` +- Add check for unused/extra/invalid ``'string literal % ...`` +- Improve python shebang detection +- Allow type ignore to be followed by a code ``# type: ignore[attr-defined]`` +- Add support for assignment expressions (PEP 572) +- Support ``@overload`` detection from ``typing_extensions`` as well +- Fix ``@overload`` detection for async functions +- Allow ``continue`` inside ``finally`` in python 3.8+ +- Fix handling of annotations in positional-only arguments +- Make pyflakes more resistant to future syntax additions +- Fix false positives in partially quoted type annotations +- Warn about ``is`` comparison to tuples +- Fix ``Checker`` usage with async function subtrees +- Add check for ``if`` of non-empty tuple +- Switch from ``optparse`` to ``argparse`` +- Fix false positives in partially quoted type annotations in unusual contexts +- Be more cautious when identifying ``Literal`` type expressions + 2.1.1 (2019-02-28) - Fix reported line number for type comment errors - Fix typing.overload check to only check imported names
--- a/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/checker.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/checker.py Wed Jun 17 17:14:12 2020 +0200 @@ -15,6 +15,7 @@ import ast import bisect import collections +import contextlib import doctest import functools import os @@ -85,6 +86,51 @@ LOOP_TYPES = (ast.While, ast.For) FUNCTION_TYPES = (ast.FunctionDef,) + +if PY38_PLUS: + def _is_singleton(node): # type: (ast.AST) -> bool + return ( + isinstance(node, ast.Constant) and + isinstance(node.value, (bool, type(Ellipsis), type(None))) + ) +elif not PY2: + def _is_singleton(node): # type: (ast.AST) -> bool + return isinstance(node, (ast.NameConstant, ast.Ellipsis)) +else: + def _is_singleton(node): # type: (ast.AST) -> bool + return ( + isinstance(node, ast.Name) and + node.id in {'True', 'False', 'Ellipsis', 'None'} + ) + + +def _is_tuple_constant(node): # type: (ast.AST) -> bool + return ( + isinstance(node, ast.Tuple) and + all(_is_constant(elt) for elt in node.elts) + ) + + +if PY38_PLUS: + def _is_constant(node): + return isinstance(node, ast.Constant) or _is_tuple_constant(node) +else: + _const_tps = (ast.Str, ast.Num) + if not PY2: + _const_tps += (ast.Bytes,) + + def _is_constant(node): + return ( + isinstance(node, _const_tps) or + _is_singleton(node) or + _is_tuple_constant(node) + ) + + +def _is_const_non_singleton(node): # type: (ast.AST) -> bool + return _is_constant(node) and not _is_singleton(node) + + # https://github.com/python/typed_ast/blob/1.4.0/ast27/Parser/tokenizer.c#L102-L104 TYPE_COMMENT_RE = re.compile(r'^#\s*type:\s*') # https://github.com/python/typed_ast/blob/1.4.0/ast27/Parser/tokenizer.c#L1408-L1413 @@ -625,40 +671,82 @@ return node.name -def is_typing_overload(value, scope_stack): - def name_is_typing_overload(name): # type: (str) -> bool +TYPING_MODULES = frozenset(('typing', 'typing_extensions')) + + +def _is_typing_helper(node, is_name_match_fn, scope_stack): + """ + Internal helper to determine whether or not something is a member of a + typing module. This is used as part of working out whether we are within a + type annotation context. + + Note: you probably don't want to use this function directly. Instead see the + utils below which wrap it (`_is_typing` and `_is_any_typing_member`). + """ + + def _bare_name_is_attr(name): for scope in reversed(scope_stack): if name in scope: return ( isinstance(scope[name], ImportationFrom) and - scope[name].fullName in ( - 'typing.overload', 'typing_extensions.overload', - ) + scope[name].module in TYPING_MODULES and + is_name_match_fn(scope[name].real_name) ) return False - def is_typing_overload_decorator(node): - return ( - ( - isinstance(node, ast.Name) and name_is_typing_overload(node.id) - ) or ( - isinstance(node, ast.Attribute) and - isinstance(node.value, ast.Name) and - node.value.id == 'typing' and - node.attr == 'overload' - ) + return ( + ( + isinstance(node, ast.Name) and + _bare_name_is_attr(node.id) + ) or ( + isinstance(node, ast.Attribute) and + isinstance(node.value, ast.Name) and + node.value.id in TYPING_MODULES and + is_name_match_fn(node.attr) ) + ) + +def _is_typing(node, typing_attr, scope_stack): + """ + Determine whether `node` represents the member of a typing module specified + by `typing_attr`. + + This is used as part of working out whether we are within a type annotation + context. + """ + return _is_typing_helper(node, lambda x: x == typing_attr, scope_stack) + + +def _is_any_typing_member(node, scope_stack): + """ + Determine whether `node` represents any member of a typing module. + + This is used as part of working out whether we are within a type annotation + context. + """ + return _is_typing_helper(node, lambda x: True, scope_stack) + + +def is_typing_overload(value, scope_stack): return ( isinstance(value.source, FUNCTION_TYPES) and any( - is_typing_overload_decorator(dec) + _is_typing(dec, 'overload', scope_stack) for dec in value.source.decorator_list ) ) +def in_annotation(func): + @functools.wraps(func) + def in_annotation_func(self, *args, **kwargs): + with self._enter_annotation(): + return func(self, *args, **kwargs) + return in_annotation_func + + def make_tokens(code): # PY3: tokenize.tokenize requires readline of bytes if not isinstance(code, bytes): @@ -740,11 +828,14 @@ ast.DictComp: GeneratorScope, } if PY35_PLUS: - _ast_node_scope[ast.AsyncFunctionDef] = FunctionScope, + _ast_node_scope[ast.AsyncFunctionDef] = FunctionScope nodeDepth = 0 offset = None traceTree = False + _in_annotation = False + _in_typing_literal = False + _in_deferred = False builtIns = set(builtin_vars).union(_MAGIC_GLOBALS) _customBuiltIns = os.environ.get('PYFLAKES_BUILTINS') @@ -776,6 +867,7 @@ for builtin in self.builtIns: self.addBinding(None, Builtin(builtin)) self.handleChildren(tree) + self._in_deferred = True self.runDeferred(self._deferredFunctions) # Set _deferredFunctions to None so that deferFunction will fail # noisily if called after we've run through the deferred functions. @@ -1016,12 +1108,30 @@ self.scope[value.name] = value + def _unknown_handler(self, node): + # this environment variable configures whether to error on unknown + # ast types. + # + # this is silent by default but the error is enabled for the pyflakes + # testsuite. + # + # this allows new syntax to be added to python without *requiring* + # changes from the pyflakes side. but will still produce an error + # in the pyflakes testsuite (so more specific handling can be added if + # needed). + if os.environ.get('PYFLAKES_ERROR_UNKNOWN'): + raise NotImplementedError('Unexpected type: {}'.format(type(node))) + else: + self.handleChildren(node) + def getNodeHandler(self, node_class): try: return self._nodeHandlers[node_class] except KeyError: nodeType = getNodeType(node_class) - self._nodeHandlers[node_class] = handler = getattr(self, nodeType) + self._nodeHandlers[node_class] = handler = getattr( + self, nodeType, self._unknown_handler, + ) return handler def handleNodeLoad(self, node): @@ -1125,7 +1235,7 @@ binding = Binding(name, node) elif name == '__all__' and isinstance(self.scope, ModuleScope): binding = ExportBinding(name, node._pyflakes_parent, self.scope) - elif isinstance(getattr(node, 'ctx', None), ast.Param): + elif PY2 and isinstance(getattr(node, 'ctx', None), ast.Param): binding = Argument(name, self.getScopeNode(node)) else: binding = Assignment(name, node) @@ -1161,6 +1271,14 @@ except KeyError: self.report(messages.UndefinedName, node, name) + @contextlib.contextmanager + def _enter_annotation(self): + orig, self._in_annotation = self._in_annotation, True + try: + yield + finally: + self._in_annotation = orig + def _handle_type_comments(self, node): for (lineno, col_offset), comment in self._type_comments.get(node, ()): comment = comment.split(':', 1)[1].strip() @@ -1288,6 +1406,7 @@ self.popScope() self.scopeStack = saved_stack + @in_annotation def handleStringAnnotation(self, s, node, ref_lineno, ref_col_offset, err): try: tree = ast.parse(s) @@ -1311,6 +1430,7 @@ self.handleNode(parsed_annotation, node) + @in_annotation def handleAnnotation(self, annotation, node): if isinstance(annotation, ast.Str): # Defer handling forward annotation. @@ -1323,7 +1443,8 @@ messages.ForwardAnnotationSyntaxError, )) elif self.annotationsFutureEnabled: - self.deferFunction(lambda: self.handleNode(annotation, node)) + fn = in_annotation(Checker.handleNode) + self.deferFunction(lambda: fn(self, annotation, node)) else: self.handleNode(annotation, node) @@ -1331,17 +1452,39 @@ pass # "stmt" type nodes - DELETE = PRINT = FOR = ASYNCFOR = WHILE = IF = WITH = WITHITEM = \ + DELETE = PRINT = FOR = ASYNCFOR = WHILE = WITH = WITHITEM = \ ASYNCWITH = ASYNCWITHITEM = TRYFINALLY = EXEC = \ EXPR = ASSIGN = handleChildren PASS = ignore # "expr" type nodes - BOOLOP = UNARYOP = IFEXP = SET = \ - REPR = ATTRIBUTE = SUBSCRIPT = \ + BOOLOP = UNARYOP = SET = \ + REPR = ATTRIBUTE = \ STARRED = NAMECONSTANT = NAMEDEXPR = handleChildren + def SUBSCRIPT(self, node): + if ( + ( + isinstance(node.value, ast.Name) and + node.value.id == 'Literal' + ) or ( + isinstance(node.value, ast.Attribute) and + node.value.attr == 'Literal' + ) + ): + orig, self._in_typing_literal = self._in_typing_literal, True + try: + self.handleChildren(node) + finally: + self._in_typing_literal = orig + else: + if _is_any_typing_member(node.value, self.scopeStack): + with self._enter_annotation(): + self.handleChildren(node) + else: + self.handleChildren(node) + def _handle_string_dot_format(self, node): try: placeholders = tuple(parse_format_string(node.func.value.s)) @@ -1469,6 +1612,15 @@ node.func.attr == 'format' ): self._handle_string_dot_format(node) + + if ( + _is_typing(node.func, 'cast', self.scopeStack) and + len(node.args) >= 1 and + isinstance(node.args[0], ast.Str) + ): + with self._enter_annotation(): + self.handleNode(node.args[0], node) + self.handleChildren(node) def _handle_percent_format(self, node): @@ -1582,7 +1734,27 @@ self._handle_percent_format(node) self.handleChildren(node) - NUM = STR = BYTES = ELLIPSIS = CONSTANT = ignore + def STR(self, node): + if self._in_annotation and not self._in_typing_literal: + fn = functools.partial( + self.handleStringAnnotation, + node.s, + node, + node.lineno, + node.col_offset, + messages.ForwardAnnotationSyntaxError, + ) + if self._in_deferred: + fn() + else: + self.deferFunction(fn) + + if PY38_PLUS: + def CONSTANT(self, node): + if isinstance(node.value, str): + return self.STR(node) + else: + NUM = BYTES = ELLIPSIS = CONSTANT = ignore # "slice" type nodes SLICE = EXTSLICE = INDEX = handleChildren @@ -1665,6 +1837,13 @@ ) self.handleChildren(node) + def IF(self, node): + if isinstance(node.test, ast.Tuple) and node.test.elts != []: + self.report(messages.IfTuple, node) + self.handleChildren(node) + + IFEXP = IF + def ASSERT(self, node): if isinstance(node.test, ast.Tuple) and node.test.elts != []: self.report(messages.AssertTuple, node) @@ -1716,13 +1895,15 @@ Handle occurrence of Name (which can be a load/store/delete access.) """ # Locate the name in locals / function / globals scopes. - if isinstance(node.ctx, (ast.Load, ast.AugLoad)): + if isinstance(node.ctx, ast.Load): self.handleNodeLoad(node) if (node.id == 'locals' and isinstance(self.scope, FunctionScope) and isinstance(node._pyflakes_parent, ast.Call)): # we are doing locals() call in current scope self.scope.usesLocals = True - elif isinstance(node.ctx, (ast.Store, ast.AugStore, ast.Param)): + elif isinstance(node.ctx, ast.Store): + self.handleNodeStore(node) + elif PY2 and isinstance(node.ctx, ast.Param): self.handleNodeStore(node) elif isinstance(node.ctx, ast.Del): self.handleNodeDelete(node) @@ -2061,14 +2242,14 @@ self.handleNode(node.value, node) def COMPARE(self, node): - literals = (ast.Str, ast.Num) - if not PY2: - literals += (ast.Bytes,) - left = node.left for op, right in zip(node.ops, node.comparators): - if (isinstance(op, (ast.Is, ast.IsNot)) and - (isinstance(left, literals) or isinstance(right, literals))): + if ( + isinstance(op, (ast.Is, ast.IsNot)) and ( + _is_const_non_singleton(left) or + _is_const_non_singleton(right) + ) + ): self.report(messages.IsLiteral, node) left = right
--- a/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/messages.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/messages.py Wed Jun 17 17:14:12 2020 +0200 @@ -490,6 +490,18 @@ message = 'too many expressions in star-unpacking assignment' +class IfTuple(Message): + """ + Class defining the "non-empty tuple literal" message. + + Conditional test is a non-empty tuple literal, which are always True. + """ + message_id = 'F49' + message = ( + '\'if tuple literal\' is always true, perhaps remove accidental comma?' + ) + + class AssertTuple(Message): """ Class defining the "tuple assertion" message.
--- a/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py Wed Jun 17 17:14:12 2020 +0200 @@ -162,6 +162,10 @@ 'F48': QCoreApplication.translate( 'pyFlakes', "'...' % ... `*` specifier requires sequence"), + 'F49': QCoreApplication.translate( + 'pyFlakes', + "'if tuple literal' is always true, perhaps remove accidental comma?" + ), }
--- a/eric6/Plugins/PluginCodeStyleChecker.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Plugins/PluginCodeStyleChecker.py Wed Jun 17 17:14:12 2020 +0200 @@ -7,8 +7,8 @@ Module implementing the code style checker plug-in. """ - import os +import textwrap from PyQt5.QtCore import QObject, pyqtSignal, QCoreApplication @@ -84,6 +84,8 @@ self.queuedBatches = [] self.batchesFinished = True + + self.__wrapper = textwrap.TextWrapper(width=80) def __serviceError(self, fn, msg): """ @@ -222,11 +224,13 @@ """ Private slot called after perfoming a style check on one file. - @param fn filename of the just checked file (str) - @param codeStyleCheckerStats stats of style and name check (dict) - @param results tuple for each found violation of style (tuple of - lineno (int), position (int), text (str), fixed (bool), - autofixing (bool), fixedMsg (str)) + @param fn filename of the just checked file + @type str + @param codeStyleCheckerStats stats of style and name check + @type dict + @param results dictionary containing the check result data + (see CodesStyleChecker.__checkCodeStyle for details) + @type dict """ from CheckerPlugins.CodeStyleChecker.translations import ( getTranslatedMessage @@ -234,17 +238,17 @@ fixes = 0 for result in results: - msg = getTranslatedMessage(result[2]) + msg = getTranslatedMessage(result["code"], result["args"]) - fixedMsg = result.pop() - if fixedMsg: + if result["fixcode"]: fixes += 1 - trFixedMsg = getTranslatedMessage(fixedMsg) + trFixedMsg = getTranslatedMessage(result["fixcode"], + result["fixargs"]) msg += "\n" + QCoreApplication.translate( 'CodeStyleCheckerDialog', "Fix: {0}").format(trFixedMsg) - result[2] = msg + result["display"] = "\n".join(self.__wrapper.wrap(msg)) self.styleChecked.emit(fn, codeStyleCheckerStats, fixes, results) def activate(self):
--- a/eric6/Preferences/ConfigurationPages/QtPage.ui Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/QtPage.ui Wed Jun 17 17:14:12 2020 +0200 @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>642</width> - <height>772</height> + <height>929</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_6"> @@ -69,12 +69,7 @@ <item> <widget class="QLabel" name="textLabel1_2_4"> <property name="text"> - <string><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></string> + <string><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</string> </property> <property name="wordWrap"> <bool>true</bool>
--- a/eric6/Preferences/ConfigurationPages/SecurityPage.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/SecurityPage.py Wed Jun 17 17:14:12 2020 +0200 @@ -45,6 +45,9 @@ self.__newPassword = "" self.__oldUseMasterPassword = Preferences.getUser("UseMasterPassword") + + self.alwaysRejectCheckBox.setChecked( + Preferences.getWebBrowser("AlwaysRejectFaultyCertificates")) def setMode(self, displayMode): """ @@ -63,6 +66,10 @@ ) self.__displayMode = displayMode + + self.certificateErrorsGroup.setVisible( + displayMode == ConfigurationWidget.WebBrowserMode + ) def save(self): """ @@ -80,6 +87,10 @@ self.masterPasswordCheckBox.isChecked() ): self.__configDlg.masterPasswordChanged.emit("", self.__newPassword) + + Preferences.setWebBrowser( + "AlwaysRejectFaultyCertificates", + self.alwaysRejectCheckBox.isChecked()) @pyqtSlot(bool) def on_masterPasswordCheckBox_clicked(self, checked):
--- a/eric6/Preferences/ConfigurationPages/SecurityPage.ui Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/SecurityPage.ui Wed Jun 17 17:14:12 2020 +0200 @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>400</width> - <height>300</height> + <height>434</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_3"> @@ -91,6 +91,25 @@ </widget> </item> <item> + <widget class="QGroupBox" name="certificateErrorsGroup"> + <property name="title"> + <string>Certificate Errors</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QCheckBox" name="alwaysRejectCheckBox"> + <property name="toolTip"> + <string>Select to always reject web pages with certificate issues</string> + </property> + <property name="text"> + <string>Always reject URLs with certificate errors</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum>
--- a/eric6/Preferences/__init__.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Preferences/__init__.py Wed Jun 17 17:14:12 2020 +0200 @@ -954,6 +954,7 @@ "DiskCacheEnabled": True, "DiskCacheSize": 50, # 50 MB "SslExceptionsDB": "{}", # empty JSON dictionary + "AlwaysRejectFaultyCertificates": False, "DoNotTrack": False, "RefererSendReferer": 2, # send always "RefererDefaultPolicy": 3, # don't send a referer when downgrading @@ -1479,6 +1480,7 @@ # QChart.ChartTheme otherwise "MpyCrossCompiler": "", # path of the mpy-cross compiler "DfuUtilPath": "", # path of the dfu-util flashing tool + "IgnoredUnknownDevices": "[]", # empty list encoded as JSON # documentation URLs "MicroPythonDocuUrl": "https://docs.micropython.org/en/latest/", @@ -2839,7 +2841,7 @@ "WebRTCPublicInterfacesOnly", "DnsPrefetchEnabled", "FlashCookiesDeleteOnStartExit", "FlashCookieAutoRefresh", "FlashCookieNotify", "VirusTotalEnabled", "VirusTotalSecure", - "PdfViewerEnabled", + "PdfViewerEnabled", "AlwaysRejectFaultyCertificates", ]: return toBool(prefClass.settings.value( "WebBrowser/" + key, prefClass.webBrowserDefaults[key])) @@ -2970,10 +2972,6 @@ "Qt/Qt5TranslationsDir", prefClass.qtDefaults["Qt5TranslationsDir"]) if s == "": - s = os.getenv("QTTRANSLATIONSDIR", "") - if s == "": - s = os.getenv("QT5TRANSLATIONSDIR", "") - if s == "": s = QLibraryInfo.location(QLibraryInfo.TranslationsPath) if s == "" and Globals.isWindowsPlatform(): transPath = os.path.join(Globals.getPyQt5ModulesDirectory(), @@ -3578,6 +3576,14 @@ return toBool(prefClass.settings.value( "MicroPython/" + key, prefClass.microPythonDefaults[key])) + elif key in ["IgnoredUnknownDevices"]: + jsonStr = prefClass.settings.value( + "MicroPython/" + key, + prefClass.microPythonDefaults[key]) + if jsonStr: + return json.loads(jsonStr) + else: + return None else: return prefClass.settings.value( "MicroPython/" + key, @@ -3592,7 +3598,14 @@ @param value the value to be set @param prefClass preferences class used as the storage area """ - prefClass.settings.setValue("MicroPython/" + key, value) + if key in ["IgnoredUnknownDevices"]: + prefClass.settings.setValue( + "MicroPython/" + key, + json.dumps(value)) + else: + prefClass.settings.setValue( + "MicroPython/" + key, + value) def getGeometry(key, prefClass=Prefs):
--- a/eric6/QScintilla/Editor.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/QScintilla/Editor.py Wed Jun 17 17:14:12 2020 +0200 @@ -5144,7 +5144,8 @@ elif wLeft: txt = txt[len(wLeft):] - if txt[0] in "'\"": # New in jedi 0.16: AC of dict keys + if txt and txt[0] in "'\"": + # New in jedi 0.16: AC of dict keys txt = txt[1:] self.insert(txt) self.endUndoAction()
--- a/eric6/ThirdParty/asttokens/__init__.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/ThirdParty/asttokens/__init__.py Wed Jun 17 17:14:12 2020 +0200 @@ -10,4 +10,4 @@ is modified to not depend on 'six'. """ -__version__ = "1.1.13" +__version__ = "2.0.4"
--- a/eric6/ThirdParty/asttokens/asttokens/asttokens.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/ThirdParty/asttokens/asttokens/asttokens.py Wed Jun 17 17:14:12 2020 +0200 @@ -17,6 +17,9 @@ import sys if sys.version_info[0] == 3: xrange = range + binary_type = bytes +else: + binary_type = str import ast import bisect @@ -51,6 +54,12 @@ self._filename = filename self._tree = ast.parse(source_text, filename) if parse else tree + # Decode source after parsing to let Python 2 handle coding declarations. + # (If the encoding was not utf-8 compatible, then even if it parses correctly, + # we'll fail with a unicode error here.) + if isinstance(source_text, binary_type): + source_text = source_text.decode('utf8') + self._text = source_text self._line_numbers = LineNumbers(source_text)
--- a/eric6/ThirdParty/asttokens/asttokens/mark_tokens.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/ThirdParty/asttokens/asttokens/mark_tokens.py Wed Jun 17 17:14:12 2020 +0200 @@ -15,16 +15,18 @@ # limitations under the License. try: - string_types = basestring, # Python 2 + text_type = unicode # Python 2 + binary_type = str except NameError: - string_types = str, # Python 3 + text_type = str # Python 3 + binary_type = bytes +import numbers import sys -import numbers import token + from . import util - # Mapping of matching braces. To find a token here, look up token[:2]. _matching_pairs_left = { (token.OP, '('): (token.OP, ')'), @@ -88,7 +90,7 @@ # Statements continue to before NEWLINE. This helps cover a few different cases at once. if util.is_stmt(node): - last = self._find_last_in_line(last) + last = self._find_last_in_stmt(last) # Capture any unmatched brackets. first, last = self._expand_to_matching_pairs(first, last, node) @@ -103,28 +105,13 @@ node.first_token = nfirst node.last_token = nlast - def _find_last_in_line(self, start_token): - try: - newline = self._code.find_token(start_token, token.NEWLINE) - except IndexError: - newline = self._code.find_token(start_token, token.ENDMARKER) - return self._code.prev_token(newline) - - def _iter_non_child_tokens(self, first_token, last_token, node): - """ - Generates all tokens in [first_token, last_token] range that do not belong to any children of - node. E.g. `foo(bar)` has children `foo` and `bar`, but we would yield the `(`. - """ - tok = first_token - for n in self._iter_children(node): - for t in self._code.token_range(tok, self._code.prev_token(n.first_token)): - yield t - if n.last_token.index >= last_token.index: - return - tok = self._code.next_token(n.last_token) - - for t in self._code.token_range(tok, last_token): - yield t + def _find_last_in_stmt(self, start_token): + t = start_token + while (not util.match_token(t, token.NEWLINE) and + not util.match_token(t, token.OP, ';') and + not token.ISEOF(t.type)): + t = self._code.next_token(t, include_extra=True) + return self._code.prev_token(t) def _expand_to_matching_pairs(self, first_token, last_token, node): """ @@ -135,7 +122,7 @@ # child nodes). If we find any closing ones, we match them to the opens. to_match_right = [] to_match_left = [] - for tok in self._iter_non_child_tokens(first_token, last_token, node): + for tok in self._code.token_range(first_token, last_token): tok_info = tok[:2] if to_match_right and tok_info == to_match_right[-1]: to_match_right.pop() @@ -147,8 +134,8 @@ # Once done, extend `last_token` to match any unclosed parens/braces. for match in reversed(to_match_right): last = self._code.next_token(last_token) - # Allow for a trailing comma before the closing delimiter. - if util.match_token(last, token.OP, ','): + # Allow for trailing commas or colons (allowed in subscripts) before the closing delimiter + while any(util.match_token(last, token.OP, x) for x in (',', ':')): last = self._code.next_token(last) # Now check for the actual closing delimiter. if util.match_token(last, *match): @@ -178,8 +165,11 @@ util.expect_token(before, token.OP, open_brace) return (before, last_token) - def visit_listcomp(self, node, first_token, last_token): - return self.handle_comp('[', node, first_token, last_token) + # Python 3.8 fixed the starting position of list comprehensions: + # https://bugs.python.org/issue31241 + if sys.version_info < (3, 8): + def visit_listcomp(self, node, first_token, last_token): + return self.handle_comp('[', node, first_token, last_token) if sys.version_info[0] == 2: # We shouldn't do this on PY3 because its SetComp/DictComp already have a correct start. @@ -195,6 +185,11 @@ first = self._code.find_token(first_token, token.NAME, 'for', reverse=True) return (first, last_token) + def visit_if(self, node, first_token, last_token): + while first_token.string not in ('if', 'elif'): + first_token = self._code.prev_token(first_token) + return first_token, last_token + def handle_attr(self, node, first_token, last_token): # Attribute node has ".attr" (2 tokens) after the last child. dot = self._code.find_token(last_token, token.OP, '.') @@ -206,38 +201,88 @@ visit_assignattr = handle_attr visit_delattr = handle_attr - def handle_doc(self, node, first_token, last_token): + def handle_def(self, node, first_token, last_token): # With astroid, nodes that start with a doc-string can have an empty body, in which case we # need to adjust the last token to include the doc string. if not node.body and getattr(node, 'doc', None): last_token = self._code.find_token(last_token, token.STRING) + + # Include @ from decorator + if first_token.index > 0: + prev = self._code.prev_token(first_token) + if util.match_token(prev, token.OP, '@'): + first_token = prev return (first_token, last_token) - visit_classdef = handle_doc - visit_funcdef = handle_doc + visit_classdef = handle_def + visit_functiondef = handle_def + + def handle_following_brackets(self, node, last_token, opening_bracket): + # This is for calls and subscripts, which have a pair of brackets + # at the end which may contain no nodes, e.g. foo() or bar[:]. + # We look for the opening bracket and then let the matching pair be found automatically + # Remember that last_token is at the end of all children, + # so we are not worried about encountering a bracket that belongs to a child. + first_child = next(self._iter_children(node)) + call_start = self._code.find_token(first_child.last_token, token.OP, opening_bracket) + if call_start.index > last_token.index: + last_token = call_start + return last_token def visit_call(self, node, first_token, last_token): - # A function call isn't over until we see a closing paren. Remember that last_token is at the - # end of all children, so we are not worried about encountering a paren that belongs to a - # child. - first_child = next(self._iter_children(node)) - call_start = self._code.find_token(first_child.last_token, token.OP, '(') - if call_start.index > last_token.index: - last_token = call_start + last_token = self.handle_following_brackets(node, last_token, '(') + + # Handling a python bug with decorators with empty parens, e.g. + # @deco() + # def ... + if util.match_token(first_token, token.OP, '@'): + first_token = self._code.next_token(first_token) return (first_token, last_token) def visit_subscript(self, node, first_token, last_token): - # A subscript operations isn't over until we see a closing bracket. Similar to function calls. - return (first_token, self._code.find_token(last_token, token.OP, ']')) + last_token = self.handle_following_brackets(node, last_token, '[') + return (first_token, last_token) + + def handle_bare_tuple(self, node, first_token, last_token): + # A bare tuple doesn't include parens; if there is a trailing comma, make it part of the tuple. + maybe_comma = self._code.next_token(last_token) + if util.match_token(maybe_comma, token.OP, ','): + last_token = maybe_comma + return (first_token, last_token) + + if sys.version_info >= (3, 8): + # In Python3.8 parsed tuples include parentheses when present. + def handle_tuple_nonempty(self, node, first_token, last_token): + # It's a bare tuple if the first token belongs to the first child. The first child may + # include extraneous parentheses (which don't create new nodes), so account for those too. + child = node.elts[0] + child_first, child_last = self._gobble_parens(child.first_token, child.last_token, True) + if first_token == child_first: + return self.handle_bare_tuple(node, first_token, last_token) + return (first_token, last_token) + else: + # Before python 3.8, parsed tuples do not include parens. + def handle_tuple_nonempty(self, node, first_token, last_token): + (first_token, last_token) = self.handle_bare_tuple(node, first_token, last_token) + return self._gobble_parens(first_token, last_token, False) def visit_tuple(self, node, first_token, last_token): - # A tuple doesn't include parens; if there is a trailing comma, make it part of the tuple. - try: - maybe_comma = self._code.next_token(last_token) - if util.match_token(maybe_comma, token.OP, ','): - last_token = maybe_comma - except IndexError: - pass + if not node.elts: + # An empty tuple is just "()", and we need no further info. + return (first_token, last_token) + return self.handle_tuple_nonempty(node, first_token, last_token) + + def _gobble_parens(self, first_token, last_token, include_all=False): + # Expands a range of tokens to include one or all pairs of surrounding parentheses, and + # returns (first, last) tokens that include these parens. + while first_token.index > 0: + prev = self._code.prev_token(first_token) + next = self._code.next_token(last_token) + if util.match_token(prev, token.OP, '(') and util.match_token(next, token.OP, ')'): + first_token, last_token = prev, next + if include_all: + continue + break return (first_token, last_token) def visit_str(self, node, first_token, last_token): @@ -246,6 +291,9 @@ def visit_joinedstr(self, node, first_token, last_token): return self.handle_str(first_token, last_token) + def visit_bytes(self, node, first_token, last_token): + return self.handle_str(first_token, last_token) + def handle_str(self, first_token, last_token): # Multiple adjacent STRING tokens form a single string. last = self._code.next_token(last_token) @@ -254,22 +302,42 @@ last = self._code.next_token(last_token) return (first_token, last_token) - def visit_num(self, node, first_token, last_token): + def handle_num(self, node, value, first_token, last_token): # A constant like '-1' gets turned into two tokens; this will skip the '-'. while util.match_token(last_token, token.OP): last_token = self._code.next_token(last_token) + + if isinstance(value, complex): + # A complex number like -2j cannot be compared directly to 0 + # A complex number like 1-2j is expressed as a binary operation + # so we don't need to worry about it + value = value.imag + + # This makes sure that the - is included + if value < 0 and first_token.type == token.NUMBER: + first_token = self._code.prev_token(first_token) return (first_token, last_token) + def visit_num(self, node, first_token, last_token): + return self.handle_num(node, node.n, first_token, last_token) + # In Astroid, the Num and Str nodes are replaced by Const. def visit_const(self, node, first_token, last_token): if isinstance(node.value, numbers.Number): - return self.visit_num(node, first_token, last_token) - elif isinstance(node.value, string_types): + return self.handle_num(node, node.value, first_token, last_token) + elif isinstance(node.value, (text_type, binary_type)): return self.visit_str(node, first_token, last_token) return (first_token, last_token) + # In Python >= 3.6, there is a similar class 'Constant' for literals + # In 3.8 it became the type produced by ast.parse + # https://bugs.python.org/issue32892 + visit_constant = visit_const + def visit_keyword(self, node, first_token, last_token): - if node.arg is not None: + # Until python 3.9 (https://bugs.python.org/issue40141), + # ast.keyword nodes didn't have line info. Astroid has lineno None. + if node.arg is not None and getattr(node, 'lineno', None) is None: equals = self._code.find_token(first_token, token.OP, '=', reverse=True) name = self._code.prev_token(equals) util.expect_token(name, token.NAME, node.arg) @@ -296,3 +364,21 @@ def visit_with(self, node, first_token, last_token): first = self._code.find_token(first_token, token.NAME, 'with', reverse=True) return (first, last_token) + + # Async nodes should typically start with the word 'async' + # but Python < 3.7 doesn't put the col_offset there + # AsyncFunctionDef is slightly different because it might have + # decorators before that, which visit_functiondef handles + def handle_async(self, node, first_token, last_token): + if not first_token.string == 'async': + first_token = self._code.prev_token(first_token) + return (first_token, last_token) + + visit_asyncfor = handle_async + visit_asyncwith = handle_async + + def visit_asyncfunctiondef(self, node, first_token, last_token): + if util.match_token(first_token, token.NAME, 'def'): + # Include the 'async' token + first_token = self._code.prev_token(first_token) + return self.visit_functiondef(node, first_token, last_token)
--- a/eric6/ThirdParty/asttokens/asttokens/util.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/ThirdParty/asttokens/asttokens/util.py Wed Jun 17 17:14:12 2020 +0200 @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + # Copyright 2016 Grist Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -69,7 +71,7 @@ # These were previously defined in tokenize.py and distinguishable by being greater than # token.N_TOKEN. As of python3.7, they are in token.py, and we check for them explicitly. -if hasattr(token, 'COMMENT'): +if hasattr(token, 'ENCODING'): def is_non_coding_token(token_type): """ These are considered non-coding tokens, as they don't affect the syntax tree. @@ -82,17 +84,12 @@ """ return token_type >= token.N_TOKENS -def iter_children(node): - """ - Yields all direct children of a AST node, skipping children that are singleton nodes. - """ - return iter_children_astroid(node) if hasattr(node, 'get_children') else iter_children_ast(node) - def iter_children_func(node): """ - Returns a slightly more optimized function to use in place of ``iter_children``, depending on - whether ``node`` is from ``ast`` or from the ``astroid`` module. + Returns a function which yields all direct children of a AST node, + skipping children that are singleton nodes. + The function depends on whether ``node`` is from ``ast`` or from the ``astroid`` module. """ return iter_children_astroid if hasattr(node, 'get_children') else iter_children_ast @@ -113,6 +110,15 @@ if is_joined_str(node): return + if isinstance(node, ast.Dict): + # override the iteration order: instead of <all keys>, <all values>, + # yield keys and values in source order (key1, value1, key2, value2, ...) + for (key, value) in zip(node.keys, node.values): + if key is not None: + yield key + yield value + return + for child in ast.iter_child_nodes(node): # Skip singleton children; they don't reflect particular positions in the code and break the # assumptions about the tree consisting of distinct nodes. Note that collecting classes @@ -148,6 +154,19 @@ return node.__class__.__name__ == 'JoinedStr' +def is_slice(node): + """Returns whether node represents a slice, e.g. `1:2` in `x[1:2]`""" + # Before 3.9, a tuple containing a slice is an ExtSlice, + # but this was removed in https://bugs.python.org/issue34822 + return ( + node.__class__.__name__ in ('Slice', 'ExtSlice') + or ( + node.__class__.__name__ == 'Tuple' + and any(map(is_slice, node.elts)) + ) + ) + + # Sentinel value used by visit_tree(). _PREVISIT = object() @@ -166,10 +185,8 @@ returned from ``previsit()`` of this node itself. The return ``value`` is ignored except the one for the root node, which is returned from the overall ``visit_tree()`` call. - For the initial node, ``par_value`` is None. Either ``previsit`` and ``postvisit`` may be None. + For the initial node, ``par_value`` is None. ``postvisit`` may be None. """ - if not previsit: - previsit = lambda node, pvalue: (None, None) if not postvisit: postvisit = lambda node, pvalue, value: None @@ -227,7 +244,7 @@ modifications of ranges e.g. as identified by ``ASTTokens.get_text_range(node)``. Replacements is an iterable of ``(start, end, new_text)`` tuples. - For example, ``replace("this is a test", [(0, 4, "X"), (8, 1, "THE")])`` produces + For example, ``replace("this is a test", [(0, 4, "X"), (8, 9, "THE")])`` produces ``"X is THE test"``. """ p = 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/ThirdParty/asttokens/asttokens/version.py Wed Jun 17 17:14:12 2020 +0200 @@ -0,0 +1,1 @@ +__version__ = "2.0.4.dev16+gfc208c7.d20200411"
--- a/eric6/UI/BrowserModel.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/UI/BrowserModel.py Wed Jun 17 17:14:12 2020 +0200 @@ -913,7 +913,10 @@ @return row number (integer) """ - return self.parentItem.childItems.index(self) + try: + return self.parentItem.childItems.index(self) + except ValueError: + return 0 def type(self): """
--- a/eric6/UI/UserInterface.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/UI/UserInterface.py Wed Jun 17 17:14:12 2020 +0200 @@ -358,7 +358,7 @@ self.viewmanager.closeWindow) self.projectBrowser.prBrowser.appendStderr.connect(self.appendToStderr) - self.projectBrowser.ptBrowser.linguistFile.connect(self.__linguist4) + self.projectBrowser.ptBrowser.linguistFile.connect(self.__linguist) self.projectBrowser.ptBrowser.sourceFile.connect( self.viewmanager.openSourceFile) self.projectBrowser.ptBrowser.trpreview[list].connect( @@ -399,7 +399,7 @@ self.project.sourceFile.connect(self.viewmanager.openSourceFile) self.project.designerFile.connect(self.__designer) - self.project.linguistFile.connect(self.__linguist4) + self.project.linguistFile.connect(self.__linguist) self.project.projectOpened.connect(self.viewmanager.projectOpened) self.project.projectClosed.connect(self.viewmanager.projectClosed) self.project.projectFileRenamed.connect( @@ -485,7 +485,7 @@ self.browser.sourceFile[str, int, str].connect( self.viewmanager.openSourceFile) self.browser.designerFile.connect(self.__designer) - self.browser.linguistFile.connect(self.__linguist4) + self.browser.linguistFile.connect(self.__linguist) self.browser.projectFile.connect(self.project.openProject) self.browser.multiProjectFile.connect( self.multiProject.openMultiProject) @@ -2209,7 +2209,7 @@ """<b>Qt-Designer</b>""" """<p>Start Qt-Designer.</p>""" )) - self.designer4Act.triggered.connect(self.__designer4) + self.designer4Act.triggered.connect(self.__designer) self.actions.append(self.designer4Act) else: self.designer4Act = None @@ -2235,7 +2235,7 @@ """<b>Qt-Linguist</b>""" """<p>Start Qt-Linguist.</p>""" )) - self.linguist4Act.triggered.connect(self.__linguist4) + self.linguist4Act.triggered.connect(self.__linguist) self.actions.append(self.linguist4Act) else: self.linguist4Act = None @@ -4873,43 +4873,16 @@ """ self.__unittest() self.unittestDialog.startTests(failedOnly=True) - - def __designer(self, fn=None, version=0): + + @pyqtSlot() + @pyqtSlot(str) + def __designer(self, fn=None): """ Private slot to start the Qt-Designer executable. @param fn filename of the form to be opened @type str - @param version indication for the requested version (4 = Qt 4/5) - @type int - """ - if fn is not None and version == 0: - # determine version from file, if not specified - try: - f = open(fn, "r", encoding="utf-8") - found = False - while not found: - uiLine = f.readline() - found = uiLine.lower().startswith("<ui ") - f.close() - if uiLine.lower().find("version") == -1: - # it is an old version 3 UI file - version = 3 - else: - if uiLine.split('"')[1].startswith("4."): - version = 4 - else: - version = 3 - except IOError: - pass - - if version == 3: - E5MessageBox.information( - self, - self.tr("Qt 3 support"), - self.tr("""Qt v.3 is not supported by eric6.""")) - return - + """ args = [] if fn is not None: try: @@ -4936,47 +4909,45 @@ if Utilities.isMacPlatform(): designer, args = Utilities.prepareQtMacBundle( - "designer", version, args) + "designer", args) else: - if version == 4: - designer = os.path.join( - Utilities.getQtBinariesPath(), - Utilities.generateQtToolName("designer")) + designer = os.path.join( + Utilities.getQtBinariesPath(), + Utilities.generateQtToolName("designer")) if Utilities.isWindowsPlatform(): designer += '.exe' - proc = QProcess() - if not proc.startDetached(designer, args): + if designer: + proc = QProcess() + if not proc.startDetached(designer, args): + E5MessageBox.critical( + self, + self.tr('Process Generation Error'), + self.tr( + '<p>Could not start Qt-Designer.<br>' + 'Ensure that it is available as <b>{0}</b>.</p>' + ).format(designer) + ) + else: E5MessageBox.critical( self, self.tr('Process Generation Error'), self.tr( - '<p>Could not start Qt-Designer.<br>' - 'Ensure that it is available as <b>{0}</b>.</p>' - ).format(designer)) - - def __designer4(self): - """ - Private slot to start the Qt-Designer 4/5 executable. - """ - self.__designer(version=4) - - def __linguist(self, fn=None, version=0): + '<p>Could not find the Qt-Designer executable.<br>' + 'Ensure that it is installed and optionally configured on' + ' the Qt configuration page.</p>' + ) + ) + + @pyqtSlot() + @pyqtSlot(str) + def __linguist(self, fn=None): """ Private slot to start the Qt-Linguist executable. @param fn filename of the translation file to be opened @type str - @param version indication for the requested version (4 = Qt 4/5) - @type int - """ - if version < 4: - E5MessageBox.information( - self, - self.tr("Qt 3 support"), - self.tr("""Qt v.3 is not supported by eric6.""")) - return - + """ args = [] if fn is not None: fn = fn.replace('.qm', '.ts') @@ -5008,83 +4979,79 @@ if Utilities.isMacPlatform(): linguist, args = Utilities.prepareQtMacBundle( - "linguist", version, args) + "linguist", args) else: - if version == 4: - linguist = os.path.join( - Utilities.getQtBinariesPath(), - Utilities.generateQtToolName("linguist")) + linguist = os.path.join( + Utilities.getQtBinariesPath(), + Utilities.generateQtToolName("linguist")) if Utilities.isWindowsPlatform(): linguist += '.exe' - proc = QProcess() - if not proc.startDetached(linguist, args): + if linguist: + proc = QProcess() + if not proc.startDetached(linguist, args): + E5MessageBox.critical( + self, + self.tr('Process Generation Error'), + self.tr( + '<p>Could not start Qt-Linguist.<br>' + 'Ensure that it is available as <b>{0}</b>.</p>' + ).format(linguist) + ) + else: E5MessageBox.critical( self, self.tr('Process Generation Error'), self.tr( - '<p>Could not start Qt-Linguist.<br>' - 'Ensure that it is available as <b>{0}</b>.</p>' - ).format(linguist)) + '<p>Could not find the Qt-Linguist executable.<br>' + 'Ensure that it is installed and optionally configured on' + ' the Qt configuration page.</p>' + ) + ) - @pyqtSlot() - @pyqtSlot(str) - def __linguist4(self, fn=None): - """ - Private slot to start the Qt-Linguist 4/5 executable. - - @param fn filename of the translation file to be opened - """ - self.__linguist(fn, version=4) - - def __assistant(self, home=None, version=0): + def __assistant(self, home=None): """ Private slot to start the Qt-Assistant executable. @param home full pathname of a file to display @type str - @param version indication for the requested version (4 = Qt 4/5) - @type int - """ - if version < 4: - E5MessageBox.information( - self, - self.tr("Qt 3 support"), - self.tr("""Qt v.3 is not supported by eric6.""")) - return - + """ args = [] if home: - if version == 4: - args.append('-showUrl') + args.append('-showUrl') args.append(home) if Utilities.isMacPlatform(): assistant, args = Utilities.prepareQtMacBundle( - "assistant", version, args) + "assistant", args) else: - if version == 4: - assistant = os.path.join( - Utilities.getQtBinariesPath(), - Utilities.generateQtToolName("assistant")) + assistant = os.path.join( + Utilities.getQtBinariesPath(), + Utilities.generateQtToolName("assistant")) if Utilities.isWindowsPlatform(): assistant += '.exe' - proc = QProcess() - if not proc.startDetached(assistant, args): + if assistant: + proc = QProcess() + if not proc.startDetached(assistant, args): + E5MessageBox.critical( + self, + self.tr('Process Generation Error'), + self.tr( + '<p>Could not start Qt-Assistant.<br>' + 'Ensure that it is available as <b>{0}</b>.</p>' + ).format(assistant) + ) + else: E5MessageBox.critical( self, self.tr('Process Generation Error'), self.tr( - '<p>Could not start Qt-Assistant.<br>' - 'Ensure that it is available as <b>{0}</b>.</p>' - ).format(assistant)) - - def __assistant4(self): - """ - Private slot to start the Qt-Assistant 4/5 executable. - """ - self.__assistant(version=4) + '<p>Could not find the Qt-Assistant executable.<br>' + 'Ensure that it is installed and optionally configured on' + ' the Qt configuration page.</p>' + ) + ) def __startWebBrowser(self): """ @@ -5566,7 +5533,7 @@ self.launchHelpViewer(home) elif hvType == 2: if home.startswith("qthelp://"): - self.__assistant(home, version=4) + self.__assistant(home) else: self.__webBrowser(home) elif hvType == 3: @@ -5629,7 +5596,7 @@ self.launchHelpViewer(home) elif hvType == 2: if home.startswith("qthelp://"): - self.__assistant(home, version=4) + self.__assistant(home) else: self.__webBrowser(home) elif hvType == 3: @@ -5695,7 +5662,7 @@ self.launchHelpViewer(home) elif hvType == 2: if home.startswith("qthelp://"): - self.__assistant(home, version=4) + self.__assistant(home) else: self.__webBrowser(home) elif hvType == 3: @@ -5757,7 +5724,7 @@ self.launchHelpViewer(home) elif hvType == 2: if home.startswith("qthelp://"): - self.__assistant(home, version=4) + self.__assistant(home) else: self.__webBrowser(home) elif hvType == 3: @@ -5821,7 +5788,7 @@ self.launchHelpViewer(home) elif hvType == 2: if home.startswith("qthelp://"): - self.__assistant(home, version=4) + self.__assistant(home) else: self.__webBrowser(home) elif hvType == 3: @@ -5858,7 +5825,7 @@ self.launchHelpViewer(home) elif hvType == 2: if home.startswith("qthelp://"): - self.__assistant(home, version=4) + self.__assistant(home) else: self.__webBrowser(home) elif hvType == 3: @@ -5924,7 +5891,7 @@ self.launchHelpViewer(home) elif hvType == 2: if home.startswith("qthelp://"): - self.__assistant(home, version=4) + self.__assistant(home) else: self.__webBrowser(home) elif hvType == 3:
--- a/eric6/Utilities/ModuleParser.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Utilities/ModuleParser.py Wed Jun 17 17:14:12 2020 +0200 @@ -19,7 +19,7 @@ import sys import os -import importlib +import importlib.machinery import re import Utilities
--- a/eric6/Utilities/__init__.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/Utilities/__init__.py Wed Jun 17 17:14:12 2020 +0200 @@ -29,8 +29,8 @@ @param lineno line number causing the warning (integer) @param file file to write the warning message to (ignored) @param line line causing the warning (ignored) - @raise SyntaxError - """ # __IGNORE_WARNING_D252__ __IGNORE_WARNING_D253__ + @raise err exception of type SyntaxError + """ if category is SyntaxWarning: err = SyntaxError(str(message)) err.filename = filename @@ -1745,24 +1745,31 @@ qtDir, generateQtToolName(toolname.capitalize())) + ".app", os.path.join(qtDir, generateQtToolName(toolname)) + ".app", ] + if toolname == "designer": + # support the standalone Qt Designer installer from + # https://build-system.fman.io/qt-designer-download + designer = "Qt Designer.app" + bundles.extend([ + os.path.join(qtDir, 'bin', designer), + os.path.join(qtDir, designer), + ]) for bundle in bundles: if os.path.exists(bundle): return bundle return "" -def prepareQtMacBundle(toolname, version, args): +def prepareQtMacBundle(toolname, args): """ Module function for starting Qt tools that are Mac OS X bundles. - @param toolname plain name of the tool (e.g. "designer") (string) - @param version indication for the requested version (Qt 4) (integer) - @param args name of input file for tool, if any (list of strings) - @return command-name and args for QProcess (tuple) + @param toolname plain name of the tool (e.g. "designer") + @type str + @param args name of input file for tool, if any + @type list of str + @return command-name and args for QProcess + @rtype tuple of (str, list of str) """ - if version != 4: - return ("", []) - fullBundle = getQtMacBundle(toolname) if fullBundle == "": return ("", [])
--- a/eric6/WebBrowser/Bookmarks/AddBookmarkDialog.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/Bookmarks/AddBookmarkDialog.py Wed Jun 17 17:14:12 2020 +0200 @@ -196,9 +196,11 @@ if folder: self.setWindowTitle(self.tr("Add Folder")) self.addressEdit.setVisible(False) + self.addressLabel.setVisible(False) else: self.setWindowTitle(self.tr("Add Bookmark")) self.addressEdit.setVisible(True) + self.addressLabel.setVisible(True) self.resize(self.sizeHint())
--- a/eric6/WebBrowser/Bookmarks/AddBookmarkDialog.ui Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/Bookmarks/AddBookmarkDialog.ui Wed Jun 17 17:14:12 2020 +0200 @@ -44,7 +44,7 @@ </widget> </item> <item row="1" column="0"> - <widget class="QLabel" name="label_3"> + <widget class="QLabel" name="addressLabel"> <property name="text"> <string>Address:</string> </property>
--- a/eric6/WebBrowser/Bookmarks/BookmarksDialog.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/Bookmarks/BookmarksDialog.py Wed Jun 17 17:14:12 2020 +0200 @@ -10,7 +10,9 @@ from PyQt5.QtCore import pyqtSignal, Qt, QUrl, QModelIndex from PyQt5.QtGui import QFontMetrics, QCursor -from PyQt5.QtWidgets import QDialog, QMenu, QApplication +from PyQt5.QtWidgets import ( + QDialog, QMenu, QApplication, QInputDialog, QLineEdit +) from E5Gui.E5TreeSortFilterProxyModel import E5TreeSortFilterProxyModel @@ -175,6 +177,9 @@ menu.addSeparator() act = menu.addAction(self.tr("&Properties..."), self.__edit) act.setEnabled(idx.flags() & Qt.ItemIsEditable) + if idx.isValid() and node.type() == BookmarkNode.Folder: + menu.addSeparator() + menu.addAction(self.tr("New &Folder..."), self.__newFolder) menu.exec_(QCursor.pos()) def __activated(self, idx): @@ -327,6 +332,15 @@ idx = self.__proxyModel.mapToSource(idx) parent = self.__bookmarksModel.node(idx) - node = BookmarkNode(BookmarkNode.Folder) - node.title = self.tr("New Folder") - self.__bookmarksManager.addBookmark(parent, node, row) + title, ok = QInputDialog.getText( + self, + self.tr("New Bookmark Folder"), + self.tr("Enter title for new bookmark folder:"), + QLineEdit.Normal) + + if ok: + if not title: + title = self.tr("New Folder") + node = BookmarkNode(BookmarkNode.Folder) + node.title = title + self.__bookmarksManager.addBookmark(parent, node, row)
--- a/eric6/WebBrowser/Bookmarks/BookmarksMenu.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/Bookmarks/BookmarksMenu.py Wed Jun 17 17:14:12 2020 +0200 @@ -349,17 +349,17 @@ return self.addSeparator() - act = self.addAction(self.tr("Default Home Page")) - act.setData("eric:home") - act.triggered.connect( - lambda: self.__defaultBookmarkTriggered(act)) - act = self.addAction(self.tr("Speed Dial")) - act.setData("eric:speeddial") - act.triggered.connect( - lambda: self.__defaultBookmarkTriggered(act)) + act_1 = self.addAction(self.tr("Default Home Page")) + act_1.setData("eric:home") + act_1.triggered.connect( + lambda: self.__defaultBookmarkTriggered(act_1)) + act_2 = self.addAction(self.tr("Speed Dial")) + act_2.setData("eric:speeddial") + act_2.triggered.connect( + lambda: self.__defaultBookmarkTriggered(act_2)) self.addSeparator() - act = self.addAction(self.tr("Open all in Tabs")) - act.triggered.connect(lambda: self.openAll(act)) + act_3 = self.addAction(self.tr("Open all in Tabs")) + act_3.triggered.connect(lambda: self.openAll(act_3)) def setInitialActions(self, actions): """
--- a/eric6/WebBrowser/Bookmarks/DefaultBookmarks_rc.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/Bookmarks/DefaultBookmarks_rc.py Wed Jun 17 17:14:12 2020 +0200 @@ -2,7 +2,7 @@ # Resource object code # -# Created by: The Resource Compiler for PyQt5 (Qt v5.12.1) +# Created by: The Resource Compiler for PyQt5 (Qt v5.14.2) # # WARNING! All changes made in this file will be lost! @@ -63,7 +63,7 @@ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x6a\x36\x3b\x51\x76\ +\x00\x00\x01\x71\xda\xe0\x03\xcb\ " qt_version = [int(v) for v in QtCore.qVersion().split('.')]
--- a/eric6/WebBrowser/Navigation/NavigationBar.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/Navigation/NavigationBar.py Wed Jun 17 17:14:12 2020 +0200 @@ -233,7 +233,7 @@ for index in range(len(backItems) - 1, -1, -1): item = backItems[index] act = QAction(self) - act.setData(-1 * (index + 1)) + act.setData(item) icon = WebBrowserWindow.icon(item.url()) act.setIcon(icon) act.setText(item.title()) @@ -260,7 +260,7 @@ for index in range(len(forwardItems)): item = forwardItems[index] act = QAction(self) - act.setData(index + 1) + act.setData(item) icon = WebBrowserWindow.icon(item.url()) act.setIcon(icon) act.setText(item.title()) @@ -281,18 +281,10 @@ @param act reference to the action selected in the navigation menu (QAction) """ - offset = act.data() - if offset is not None: + historyItem = act.data() + if historyItem is not None: history = self.__mw.currentBrowser().history() - historyCount = history.count() - if offset < 0: - # go back - history.goToItem( - history.backItems(historyCount)[-1 * offset - 1]) - else: - # go forward - history.goToItem( - history.forwardItems(historyCount)[offset - 1]) + history.goToItem(historyItem) def __goBack(self): """
--- a/eric6/WebBrowser/Network/NetworkManager.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/Network/NetworkManager.py Wed Jun 17 17:14:12 2020 +0200 @@ -64,7 +64,7 @@ if SSL_AVAILABLE: self.__sslErrorHandler = E5SslErrorHandler(self) - self.sslErrors.connect(self.__sslErrorHandler.sslErrorsReplySlot) + self.sslErrors.connect(self.__sslErrorHandlingSlot) self.__temporarilyIgnoredSslErrors = {} self.__permanentlyIgnoredSslErrors = {} @@ -177,6 +177,9 @@ @return flag indicating to ignore this error @rtype bool """ + if Preferences.getWebBrowser("AlwaysRejectFaultyCertificates"): + return False + self.__load() host = error.url().host() @@ -200,11 +203,11 @@ E5MessageBox.Warning, title, self.tr("""<b>{0}</b>""" - """<p>The page you are trying to access has errors""" - """ in the SSL certificate.</p>""" - """<ul><li>{1}</li></ul>""" + """<p>The host <b>{1}</b> you are trying to access has""" + """ errors in the SSL certificate.</p>""" + """<ul><li>{2}</li></ul>""" """<p>Would you like to make an exception?</p>""") - .format(title, error.errorDescription()), + .format(title, host, error.errorDescription()), modal=True, parent=view) permButton = msgBox.addButton(self.tr("&Permanent accept"), E5MessageBox.AcceptRole) @@ -226,10 +229,35 @@ else: return False + def __sslErrorHandlingSlot(self, reply, errors): + """ + Private slot to handle SSL errors for a network reply. + + @param reply reference to the reply object + @type QNetworkReply + @param errors list of SSL errors + @type list of QSslError + """ + if Preferences.getWebBrowser("AlwaysRejectFaultyCertificates"): + return + + self.__load() + + host = reply.url().host() + if ( + host in self.__permanentlyIgnoredSslErrors or + host in self.__temporarilyIgnoredSslErrors + ): + reply.ignoreSslErrors() + else: + self.__sslErrorHandler.sslErrorsReply(reply, errors) + def isInsecureHost(self, host): """ Public method to check a host against the list of insecure hosts. + @param host name of the host to be checked + @type str @return flag indicating an insecure host @rtype bool """
--- a/eric6/WebBrowser/OpenSearch/DefaultSearchEngines/DefaultSearchEngines_rc.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/OpenSearch/DefaultSearchEngines/DefaultSearchEngines_rc.py Wed Jun 17 17:14:12 2020 +0200 @@ -2,13 +2,55 @@ # Resource object code # -# Created by: The Resource Compiler for PyQt5 (Qt v5.12.1) +# Created by: The Resource Compiler for PyQt5 (Qt v5.14.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ +\x00\x00\x02\x7a\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ +\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ +\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ +\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ +\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x4c\x45\x4f\x20\x44\x65\ +\x75\x2d\x45\x6e\x67\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\ +\x3e\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\ +\x6f\x6e\x3e\x44\x65\x75\x74\x73\x63\x68\x2d\x45\x6e\x67\x6c\x69\ +\x73\x63\x68\x20\x57\xc3\xb6\x72\x74\x65\x72\x62\x75\x63\x68\x20\ +\x76\x6f\x6e\x20\x4c\x45\x4f\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\ +\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\ +\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\ +\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\ +\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x64\x69\ +\x63\x74\x2e\x6c\x65\x6f\x2e\x6f\x72\x67\x2f\x65\x6e\x64\x65\x3f\ +\x6c\x61\x6e\x67\x3d\x64\x65\x26\x61\x6d\x70\x3b\x73\x65\x61\x72\ +\x63\x68\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\ +\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\ +\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\ +\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x73\x75\ +\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\x22\x20\ +\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\ +\x2f\x64\x69\x63\x74\x2e\x6c\x65\x6f\x2e\x6f\x72\x67\x2f\x64\x69\ +\x63\x74\x51\x75\x65\x72\x79\x2f\x6d\x2d\x71\x75\x65\x72\x79\x2f\ +\x63\x6f\x6e\x66\x2f\x65\x6e\x64\x65\x2f\x71\x75\x65\x72\x79\x2e\ +\x63\x6f\x6e\x66\x2f\x73\x74\x72\x6c\x69\x73\x74\x2e\x6a\x73\x6f\ +\x6e\x3f\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\ +\x7d\x26\x61\x6d\x70\x3b\x73\x6f\x72\x74\x3d\x50\x4c\x61\x26\x61\ +\x6d\x70\x3b\x73\x68\x6f\x72\x74\x51\x75\x65\x72\x79\x26\x61\x6d\ +\x70\x3b\x6e\x6f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x26\ +\x61\x6d\x70\x3b\x6e\x6f\x51\x75\x65\x72\x79\x55\x52\x4c\x73\x22\ +\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\ +\x74\x70\x3a\x2f\x2f\x64\x69\x63\x74\x2e\x6c\x65\x6f\x2e\x6f\x72\ +\x67\x2f\x69\x6d\x67\x2f\x66\x61\x76\x69\x63\x6f\x6e\x73\x2f\x65\ +\x6e\x64\x65\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\ +\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\ +\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ \x00\x00\x01\x95\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -151,7 +193,33 @@ \x55\x35\x45\x72\x6b\x4a\x67\x67\x67\x3d\x3d\x3c\x2f\x49\x6d\x61\ \x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\ \x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ -\x00\x00\x02\x54\ +\x00\x00\x01\x79\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ +\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ +\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ +\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ +\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x42\x69\x6e\x67\x3c\x2f\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\ +\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x42\x69\x6e\x67\ +\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\x44\x65\x73\ +\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\ +\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\ +\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\ +\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x62\x69\x6e\x67\x2e\x63\x6f\x6d\x2f\x73\ +\x65\x61\x72\x63\x68\x3f\x63\x63\x3d\x7b\x6c\x61\x6e\x67\x75\x61\ +\x67\x65\x7d\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\ +\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\ +\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ +\x2e\x62\x69\x6e\x67\x2e\x63\x6f\x6d\x2f\x73\x2f\x77\x6c\x66\x6c\ +\x61\x67\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\ +\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\ +\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ +\x00\x00\x01\x85\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ @@ -160,37 +228,79 @@ \x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ \x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ \x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x57\x69\x6b\x69\x61\x3c\ -\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\ -\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x57\x69\x6b\ -\x69\x61\x20\x53\x69\x74\x65\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\ -\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\ -\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\ -\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\ -\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\ -\x74\x70\x3a\x2f\x2f\x7b\x63\x6f\x75\x6e\x74\x72\x79\x7d\x2e\x77\ -\x69\x6b\x69\x61\x2e\x63\x6f\x6d\x2f\x69\x6e\x64\x65\x78\x2e\x70\ -\x68\x70\x3f\x74\x69\x74\x6c\x65\x3d\x53\x70\x65\x63\x69\x61\x6c\ -\x3a\x53\x65\x61\x72\x63\x68\x26\x61\x6d\x70\x3b\x73\x65\x61\x72\ -\x63\x68\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\ -\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\ -\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\ -\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x73\x75\ -\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\x22\x20\ -\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\ -\x2f\x7b\x63\x6f\x75\x6e\x74\x72\x79\x7d\x2e\x77\x69\x6b\x69\x61\ -\x2e\x63\x6f\x6d\x2f\x61\x70\x69\x2e\x70\x68\x70\x3f\x61\x63\x74\ -\x69\x6f\x6e\x3d\x6f\x70\x65\x6e\x73\x65\x61\x72\x63\x68\x26\x61\ -\x6d\x70\x3b\x73\x65\x61\x72\x63\x68\x3d\x7b\x73\x65\x61\x72\x63\ -\x68\x54\x65\x72\x6d\x73\x7d\x26\x61\x6d\x70\x3b\x6e\x61\x6d\x65\ -\x73\x70\x61\x63\x65\x3d\x30\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\ -\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x69\x6d\x61\ -\x67\x65\x73\x2e\x77\x69\x6b\x69\x61\x2e\x63\x6f\x6d\x2f\x77\x69\ -\x6b\x69\x61\x67\x6c\x6f\x62\x61\x6c\x2f\x69\x6d\x61\x67\x65\x73\ -\x2f\x36\x2f\x36\x34\x2f\x46\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\ -\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\ -\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ -\x6e\x3e\x0a\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x59\x6f\x75\x54\x75\x62\ +\x65\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\ +\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x59\ +\x6f\x75\x54\x75\x62\x65\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\ +\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\ +\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\ +\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\ +\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ +\x2e\x79\x6f\x75\x74\x75\x62\x65\x2e\x63\x6f\x6d\x2f\x72\x65\x73\ +\x75\x6c\x74\x73\x3f\x73\x65\x61\x72\x63\x68\x5f\x71\x75\x65\x72\ +\x79\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x26\ +\x61\x6d\x70\x3b\x73\x65\x61\x72\x63\x68\x3d\x53\x65\x61\x72\x63\ +\x68\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\ +\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x79\x6f\x75\x74\x75\ +\x62\x65\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\ +\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\ +\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\ +\x6f\x6e\x3e\x0a\ +\x00\x00\x01\xad\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ +\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ +\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ +\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ +\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x4d\x65\x74\x61\x47\x65\ +\x72\x20\x28\x4d\x65\x74\x61\x47\x65\x72\x32\x29\x3c\x2f\x53\x68\ +\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x4d\x65\x74\x61\x47\x65\ +\x72\x3a\x20\x53\x69\x63\x68\x65\x72\x20\x73\x75\x63\x68\x65\x6e\ +\x20\x26\x61\x6d\x70\x3b\x20\x66\x69\x6e\x64\x65\x6e\x2c\x20\x50\ +\x72\x69\x76\x61\x74\x73\x70\x68\xc3\xa4\x72\x65\x20\x73\x63\x68\ +\xc3\xbc\x74\x7a\x65\x6e\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\ +\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\ +\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\ +\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\ +\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x73\x3a\x2f\x2f\x6d\x65\ +\x74\x61\x67\x65\x72\x2e\x64\x65\x2f\x6d\x65\x74\x61\x2f\x6d\x65\ +\x74\x61\x2e\x67\x65\x72\x33\x3f\x65\x69\x6e\x67\x61\x62\x65\x3d\ +\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\ +\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\ +\x73\x3a\x2f\x2f\x6d\x65\x74\x61\x67\x65\x72\x2e\x64\x65\x2f\x66\ +\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\ +\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\ +\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ +\x00\x00\x01\x7e\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ +\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ +\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ +\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ +\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x46\x61\x63\x65\x62\x6f\ +\x6f\x6b\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\ +\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\ +\x53\x65\x61\x72\x63\x68\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x3c\ +\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\ +\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\ +\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\ +\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\ +\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x66\x61\x63\x65\x62\x6f\ +\x6f\x6b\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x2f\x3f\x73\ +\x72\x63\x3d\x6f\x73\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\ +\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\ +\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\ +\x77\x77\x2e\x66\x61\x63\x65\x62\x6f\x6f\x6b\x2e\x63\x6f\x6d\x2f\ +\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\ +\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\ +\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ \x00\x00\x02\x1e\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -227,102 +337,6 @@ \x2f\x62\x65\x6f\x2d\x64\x65\x2e\x70\x6e\x67\x3c\x2f\x49\x6d\x61\ \x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\ \x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ -\x00\x00\x01\x74\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ -\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ -\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ -\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ -\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x50\x79\x50\x49\x3c\x2f\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\ -\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x53\x65\x61\x72\ -\x63\x68\x20\x50\x79\x50\x49\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\ -\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\ -\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\ -\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\ -\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x73\x3a\x2f\x2f\x70\ -\x79\x70\x69\x2e\x6f\x72\x67\x2f\x73\x65\x61\x72\x63\x68\x2f\x3f\ -\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\ -\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\ -\x74\x70\x73\x3a\x2f\x2f\x70\x79\x70\x69\x2e\x6f\x72\x67\x2f\x73\ -\x74\x61\x74\x69\x63\x2f\x69\x6d\x61\x67\x65\x73\x2f\x66\x61\x76\ -\x69\x63\x6f\x6e\x2e\x36\x61\x37\x36\x32\x37\x35\x64\x2e\x69\x63\ -\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\ -\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ -\x6e\x3e\x0a\ -\x00\x00\x01\xc9\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ -\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ -\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ -\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ -\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x4c\x69\x6e\x75\x78\x2d\ -\x4d\x61\x67\x61\x7a\x69\x6e\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\ -\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\ -\x74\x69\x6f\x6e\x3e\x53\x75\x63\x68\x65\x20\x61\x75\x66\x20\x77\ -\x77\x77\x2e\x6c\x69\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\ -\x2e\x64\x65\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\ -\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\ -\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\ -\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\ -\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x6c\x69\ -\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\x2e\x64\x65\x2f\x63\ -\x6f\x6e\x74\x65\x6e\x74\x2f\x73\x65\x61\x72\x63\x68\x3f\x53\x65\ -\x61\x72\x63\x68\x54\x65\x78\x74\x3d\x7b\x73\x65\x61\x72\x63\x68\ -\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\ -\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ -\x6c\x69\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\x2e\x64\x65\ -\x2f\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x2f\x6c\x6e\x6d\x2f\x64\ -\x65\x73\x69\x67\x6e\x2f\x6c\x69\x6e\x75\x78\x5f\x6d\x61\x67\x61\ -\x7a\x69\x6e\x2f\x69\x6d\x61\x67\x65\x73\x2f\x66\x61\x76\x69\x63\ -\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\ -\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\ -\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ -\x00\x00\x02\x46\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ -\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ -\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ -\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ -\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x47\x6f\x6f\x67\x6c\x65\ -\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\ -\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x47\x6f\ -\x6f\x67\x6c\x65\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\ -\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\ -\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\ -\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\ -\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\ -\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\x67\x6c\x65\ -\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x68\x6c\x3d\x7b\ -\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\x61\x6d\x70\x3b\x6c\x72\ -\x3d\x6c\x61\x6e\x67\x5f\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\ -\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\ -\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\ -\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\ -\x70\x65\x3d\x22\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\ -\x78\x2d\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\ -\x6f\x6e\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\ -\x74\x70\x3a\x2f\x2f\x73\x75\x67\x67\x65\x73\x74\x71\x75\x65\x72\ -\x69\x65\x73\x2e\x67\x6f\x6f\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x63\ -\x6f\x6d\x70\x6c\x65\x74\x65\x2f\x73\x65\x61\x72\x63\x68\x3f\x6f\ -\x75\x74\x70\x75\x74\x3d\x66\x69\x72\x65\x66\x6f\x78\x26\x61\x6d\ -\x70\x3b\x68\x6c\x3d\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\ -\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\ -\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\ -\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\ -\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\ -\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\ -\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\ -\x69\x6f\x6e\x3e\x0a\ \x00\x00\x02\x64\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -373,6 +387,45 @@ \x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ \x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ \x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x47\x6f\x6f\x67\x6c\x65\ +\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\ +\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x47\x6f\ +\x6f\x67\x6c\x65\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\ +\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\ +\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\ +\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\ +\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\ +\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\x67\x6c\x65\ +\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x68\x6c\x3d\x7b\ +\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\x61\x6d\x70\x3b\x6c\x72\ +\x3d\x6c\x61\x6e\x67\x5f\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\ +\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\ +\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\ +\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\ +\x70\x65\x3d\x22\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\ +\x78\x2d\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\ +\x6f\x6e\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\ +\x74\x70\x3a\x2f\x2f\x73\x75\x67\x67\x65\x73\x74\x71\x75\x65\x72\ +\x69\x65\x73\x2e\x67\x6f\x6f\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x63\ +\x6f\x6d\x70\x6c\x65\x74\x65\x2f\x73\x65\x61\x72\x63\x68\x3f\x6f\ +\x75\x74\x70\x75\x74\x3d\x66\x69\x72\x65\x66\x6f\x78\x26\x61\x6d\ +\x70\x3b\x68\x6c\x3d\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\ +\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\ +\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\ +\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\ +\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\ +\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\ +\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\ +\x69\x6f\x6e\x3e\x0a\ +\x00\x00\x02\x46\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ +\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ +\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ +\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ +\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ \x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x57\x69\x6b\x69\x61\x20\ \x28\x65\x6e\x29\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\ \x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ @@ -403,35 +456,6 @@ \x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\ \x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\ \x69\x6f\x6e\x3e\x0a\ -\x00\x00\x01\xad\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ -\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ -\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ -\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ -\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x4d\x65\x74\x61\x47\x65\ -\x72\x20\x28\x4d\x65\x74\x61\x47\x65\x72\x32\x29\x3c\x2f\x53\x68\ -\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x44\x65\ -\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x4d\x65\x74\x61\x47\x65\ -\x72\x3a\x20\x53\x69\x63\x68\x65\x72\x20\x73\x75\x63\x68\x65\x6e\ -\x20\x26\x61\x6d\x70\x3b\x20\x66\x69\x6e\x64\x65\x6e\x2c\x20\x50\ -\x72\x69\x76\x61\x74\x73\x70\x68\xc3\xa4\x72\x65\x20\x73\x63\x68\ -\xc3\xbc\x74\x7a\x65\x6e\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\ -\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\ -\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\ -\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\ -\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x73\x3a\x2f\x2f\x6d\x65\ -\x74\x61\x67\x65\x72\x2e\x64\x65\x2f\x6d\x65\x74\x61\x2f\x6d\x65\ -\x74\x61\x2e\x67\x65\x72\x33\x3f\x65\x69\x6e\x67\x61\x62\x65\x3d\ -\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\ -\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\ -\x73\x3a\x2f\x2f\x6d\x65\x74\x61\x67\x65\x72\x2e\x64\x65\x2f\x66\ -\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\ -\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\ -\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ \x00\x00\x02\x8d\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -511,87 +535,7 @@ \x3c\x2f\x55\x72\x6c\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\ \x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ \ -\x00\x00\x02\x27\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ -\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ -\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ -\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ -\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x59\x61\x68\x6f\x6f\x21\ -\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\ -\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x59\x61\ -\x68\x6f\x6f\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\ -\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\ -\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\ -\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\ -\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\ -\x74\x70\x3a\x2f\x2f\x73\x65\x61\x72\x63\x68\x2e\x79\x61\x68\x6f\ -\x6f\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x65\x69\x3d\ -\x75\x74\x66\x2d\x38\x26\x61\x6d\x70\x3b\x66\x72\x3d\x73\x66\x70\ -\x26\x61\x6d\x70\x3b\x69\x73\x63\x71\x72\x79\x3d\x26\x61\x6d\x70\ -\x3b\x70\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\ -\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\ -\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\ -\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x73\x75\ -\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\x22\x20\ -\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\ -\x2f\x66\x66\x2e\x73\x65\x61\x72\x63\x68\x2e\x79\x61\x68\x6f\x6f\ -\x2e\x63\x6f\x6d\x2f\x67\x6f\x73\x73\x69\x70\x3f\x6f\x75\x74\x70\ -\x75\x74\x3d\x66\x78\x6a\x73\x6f\x6e\x26\x61\x6d\x70\x3b\x63\x6f\ -\x6d\x6d\x61\x6e\x64\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\ -\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\ -\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x2e\x77\x77\x77\x2e\x79\ -\x61\x68\x6f\x6f\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\ -\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\ -\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\ -\x74\x69\x6f\x6e\x3e\x0a\ -\x00\x00\x02\x8d\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ -\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ -\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ -\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ -\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x53\x74\x61\x72\x74\x50\ -\x61\x67\x65\x20\x2d\x20\x45\x6e\x67\x6c\x69\x73\x68\x3c\x2f\x53\ -\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x44\ -\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x53\x74\x61\x72\x74\ -\x50\x61\x67\x65\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\x44\x65\x73\ -\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\ -\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\ -\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\ -\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x73\ -\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x74\x61\x72\x74\x70\x61\x67\x65\ -\x2e\x63\x6f\x6d\x2f\x64\x6f\x2f\x64\x73\x65\x61\x72\x63\x68\x3f\ -\x71\x75\x65\x72\x79\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\ -\x6d\x73\x7d\x26\x61\x6d\x70\x3b\x63\x61\x74\x3d\x77\x65\x62\x26\ -\x61\x6d\x70\x3b\x70\x6c\x3d\x6f\x70\x65\x6e\x73\x65\x61\x72\x63\ -\x68\x26\x61\x6d\x70\x3b\x6c\x61\x6e\x67\x75\x61\x67\x65\x3d\x65\ -\x6e\x67\x6c\x69\x73\x68\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\ -\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\ -\x74\x79\x70\x65\x3d\x22\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\ -\x6e\x2f\x78\x2d\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\ -\x6a\x73\x6f\x6e\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\ -\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x74\x61\x72\ -\x74\x70\x61\x67\x65\x2e\x63\x6f\x6d\x2f\x63\x67\x69\x2d\x62\x69\ -\x6e\x2f\x63\x73\x75\x67\x67\x65\x73\x74\x3f\x71\x75\x65\x72\x79\ -\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x26\x61\ -\x6d\x70\x3b\x6c\x69\x6d\x69\x74\x3d\x31\x30\x26\x61\x6d\x70\x3b\ -\x6c\x61\x6e\x67\x3d\x65\x6e\x67\x6c\x69\x73\x68\x26\x61\x6d\x70\ -\x3b\x66\x6f\x72\x6d\x61\x74\x3d\x6a\x73\x6f\x6e\x22\x2f\x3e\x0a\ -\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x73\ -\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x74\x61\x72\x74\x70\x61\x67\x65\ -\x2e\x63\x6f\x6d\x2f\x67\x72\x61\x70\x68\x69\x63\x73\x2f\x66\x61\ -\x76\x69\x63\x6f\x6e\x2f\x73\x70\x2d\x66\x61\x76\x69\x63\x6f\x6e\ -\x2d\x31\x36\x78\x31\x36\x2e\x70\x6e\x67\x3c\x2f\x49\x6d\x61\x67\ -\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\ -\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ -\x00\x00\x01\x85\ +\x00\x00\x01\x9b\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ @@ -600,117 +544,25 @@ \x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ \x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ \x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x59\x6f\x75\x54\x75\x62\ -\x65\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\ -\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x59\ -\x6f\x75\x54\x75\x62\x65\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\ -\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\ -\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\ -\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\ -\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ -\x2e\x79\x6f\x75\x74\x75\x62\x65\x2e\x63\x6f\x6d\x2f\x72\x65\x73\ -\x75\x6c\x74\x73\x3f\x73\x65\x61\x72\x63\x68\x5f\x71\x75\x65\x72\ -\x79\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x26\ -\x61\x6d\x70\x3b\x73\x65\x61\x72\x63\x68\x3d\x53\x65\x61\x72\x63\ -\x68\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\ -\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x79\x6f\x75\x74\x75\ -\x62\x65\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\ -\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\ -\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\ -\x6f\x6e\x3e\x0a\ -\x00\x00\x01\x6f\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ -\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ -\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ -\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ -\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x52\x65\x64\x64\x69\x74\ -\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\ -\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x52\x65\ -\x64\x64\x69\x74\x20\x53\x69\x74\x65\x20\x53\x65\x61\x72\x63\x68\ -\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\ -\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\ -\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\ -\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\ -\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x72\x65\x64\x64\x69\ -\x74\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x71\x3d\x7b\ -\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\ -\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\ -\x2f\x2f\x77\x77\x77\x2e\x72\x65\x64\x64\x69\x74\x2e\x63\x6f\x6d\ -\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\ -\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ -\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ -\x00\x00\x02\x7a\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ -\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ -\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ -\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ -\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x4c\x45\x4f\x20\x44\x65\ -\x75\x2d\x45\x6e\x67\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\ -\x3e\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\ -\x6f\x6e\x3e\x44\x65\x75\x74\x73\x63\x68\x2d\x45\x6e\x67\x6c\x69\ -\x73\x63\x68\x20\x57\xc3\xb6\x72\x74\x65\x72\x62\x75\x63\x68\x20\ -\x76\x6f\x6e\x20\x4c\x45\x4f\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\ -\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\ -\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\ -\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\ -\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x64\x69\ -\x63\x74\x2e\x6c\x65\x6f\x2e\x6f\x72\x67\x2f\x65\x6e\x64\x65\x3f\ -\x6c\x61\x6e\x67\x3d\x64\x65\x26\x61\x6d\x70\x3b\x73\x65\x61\x72\ -\x63\x68\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\ -\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\ -\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\ -\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x73\x75\ -\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\x22\x20\ -\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\ -\x2f\x64\x69\x63\x74\x2e\x6c\x65\x6f\x2e\x6f\x72\x67\x2f\x64\x69\ -\x63\x74\x51\x75\x65\x72\x79\x2f\x6d\x2d\x71\x75\x65\x72\x79\x2f\ -\x63\x6f\x6e\x66\x2f\x65\x6e\x64\x65\x2f\x71\x75\x65\x72\x79\x2e\ -\x63\x6f\x6e\x66\x2f\x73\x74\x72\x6c\x69\x73\x74\x2e\x6a\x73\x6f\ -\x6e\x3f\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\ -\x7d\x26\x61\x6d\x70\x3b\x73\x6f\x72\x74\x3d\x50\x4c\x61\x26\x61\ -\x6d\x70\x3b\x73\x68\x6f\x72\x74\x51\x75\x65\x72\x79\x26\x61\x6d\ -\x70\x3b\x6e\x6f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x26\ -\x61\x6d\x70\x3b\x6e\x6f\x51\x75\x65\x72\x79\x55\x52\x4c\x73\x22\ -\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\ -\x74\x70\x3a\x2f\x2f\x64\x69\x63\x74\x2e\x6c\x65\x6f\x2e\x6f\x72\ -\x67\x2f\x69\x6d\x67\x2f\x66\x61\x76\x69\x63\x6f\x6e\x73\x2f\x65\ -\x6e\x64\x65\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\ -\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\ -\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ -\x00\x00\x01\x7e\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ -\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ -\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ -\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ -\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x46\x61\x63\x65\x62\x6f\ -\x6f\x6b\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\ -\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\ -\x53\x65\x61\x72\x63\x68\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x3c\ -\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\ -\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\ -\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\ -\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\ -\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x66\x61\x63\x65\x62\x6f\ -\x6f\x6b\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x2f\x3f\x73\ -\x72\x63\x3d\x6f\x73\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\ -\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\ -\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\ -\x77\x77\x2e\x66\x61\x63\x65\x62\x6f\x6f\x6b\x2e\x63\x6f\x6d\x2f\ -\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\ -\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\ -\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x57\x69\x6b\x74\x69\x6f\ +\x6e\x61\x72\x79\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\ +\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ +\x6e\x3e\x57\x69\x6b\x74\x69\x6f\x6e\x61\x72\x79\x3c\x2f\x44\x65\ +\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\ +\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\ +\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\ +\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\ +\x3a\x2f\x2f\x7b\x63\x6f\x75\x6e\x74\x72\x79\x7d\x2e\x77\x69\x6b\ +\x74\x69\x6f\x6e\x61\x72\x79\x2e\x6f\x72\x67\x2f\x77\x2f\x69\x6e\ +\x64\x65\x78\x2e\x70\x68\x70\x3f\x74\x69\x74\x6c\x65\x3d\x53\x70\ +\x65\x63\x69\x61\x6c\x3a\x53\x65\x61\x72\x63\x68\x26\x61\x6d\x70\ +\x3b\x73\x65\x61\x72\x63\x68\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\ +\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\ +\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x65\x6e\x2e\x77\x69\ +\x6b\x74\x69\x6f\x6e\x61\x72\x79\x2e\x6f\x72\x67\x2f\x66\x61\x76\ +\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\ +\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\ +\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ \x00\x00\x1b\x4f\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -1150,7 +1002,70 @@ \x52\x55\x35\x45\x72\x6b\x4a\x67\x67\x67\x3d\x3d\x3c\x2f\x49\x6d\ \x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ \x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ -\x00\x00\x01\x9b\ +\x00\x00\x01\x74\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ +\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ +\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ +\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ +\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x50\x79\x50\x49\x3c\x2f\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\ +\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x53\x65\x61\x72\ +\x63\x68\x20\x50\x79\x50\x49\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\ +\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\ +\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\ +\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\ +\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x73\x3a\x2f\x2f\x70\ +\x79\x70\x69\x2e\x6f\x72\x67\x2f\x73\x65\x61\x72\x63\x68\x2f\x3f\ +\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\ +\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\ +\x74\x70\x73\x3a\x2f\x2f\x70\x79\x70\x69\x2e\x6f\x72\x67\x2f\x73\ +\x74\x61\x74\x69\x63\x2f\x69\x6d\x61\x67\x65\x73\x2f\x66\x61\x76\ +\x69\x63\x6f\x6e\x2e\x36\x61\x37\x36\x32\x37\x35\x64\x2e\x69\x63\ +\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\ +\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ +\x6e\x3e\x0a\ +\x00\x00\x02\x27\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ +\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ +\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ +\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ +\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x59\x61\x68\x6f\x6f\x21\ +\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\ +\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x59\x61\ +\x68\x6f\x6f\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\ +\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\ +\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\ +\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\ +\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\ +\x74\x70\x3a\x2f\x2f\x73\x65\x61\x72\x63\x68\x2e\x79\x61\x68\x6f\ +\x6f\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x65\x69\x3d\ +\x75\x74\x66\x2d\x38\x26\x61\x6d\x70\x3b\x66\x72\x3d\x73\x66\x70\ +\x26\x61\x6d\x70\x3b\x69\x73\x63\x71\x72\x79\x3d\x26\x61\x6d\x70\ +\x3b\x70\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\ +\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\ +\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\ +\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x73\x75\ +\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\x22\x20\ +\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\ +\x2f\x66\x66\x2e\x73\x65\x61\x72\x63\x68\x2e\x79\x61\x68\x6f\x6f\ +\x2e\x63\x6f\x6d\x2f\x67\x6f\x73\x73\x69\x70\x3f\x6f\x75\x74\x70\ +\x75\x74\x3d\x66\x78\x6a\x73\x6f\x6e\x26\x61\x6d\x70\x3b\x63\x6f\ +\x6d\x6d\x61\x6e\x64\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\ +\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\ +\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x2e\x77\x77\x77\x2e\x79\ +\x61\x68\x6f\x6f\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\ +\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\ +\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\ +\x74\x69\x6f\x6e\x3e\x0a\ +\x00\x00\x01\xc9\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ @@ -1159,26 +1074,29 @@ \x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ \x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ \x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x57\x69\x6b\x74\x69\x6f\ -\x6e\x61\x72\x79\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\ -\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ -\x6e\x3e\x57\x69\x6b\x74\x69\x6f\x6e\x61\x72\x79\x3c\x2f\x44\x65\ -\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\ -\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\ -\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\ -\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\ -\x3a\x2f\x2f\x7b\x63\x6f\x75\x6e\x74\x72\x79\x7d\x2e\x77\x69\x6b\ -\x74\x69\x6f\x6e\x61\x72\x79\x2e\x6f\x72\x67\x2f\x77\x2f\x69\x6e\ -\x64\x65\x78\x2e\x70\x68\x70\x3f\x74\x69\x74\x6c\x65\x3d\x53\x70\ -\x65\x63\x69\x61\x6c\x3a\x53\x65\x61\x72\x63\x68\x26\x61\x6d\x70\ -\x3b\x73\x65\x61\x72\x63\x68\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\ -\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\ -\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x65\x6e\x2e\x77\x69\ -\x6b\x74\x69\x6f\x6e\x61\x72\x79\x2e\x6f\x72\x67\x2f\x66\x61\x76\ -\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\ -\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\ -\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ -\x00\x00\x01\x79\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x4c\x69\x6e\x75\x78\x2d\ +\x4d\x61\x67\x61\x7a\x69\x6e\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\ +\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\ +\x74\x69\x6f\x6e\x3e\x53\x75\x63\x68\x65\x20\x61\x75\x66\x20\x77\ +\x77\x77\x2e\x6c\x69\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\ +\x2e\x64\x65\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\ +\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\ +\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\ +\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\ +\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x6c\x69\ +\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\x2e\x64\x65\x2f\x63\ +\x6f\x6e\x74\x65\x6e\x74\x2f\x73\x65\x61\x72\x63\x68\x3f\x53\x65\ +\x61\x72\x63\x68\x54\x65\x78\x74\x3d\x7b\x73\x65\x61\x72\x63\x68\ +\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\ +\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x6c\x69\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\x2e\x64\x65\ +\x2f\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x2f\x6c\x6e\x6d\x2f\x64\ +\x65\x73\x69\x67\x6e\x2f\x6c\x69\x6e\x75\x78\x5f\x6d\x61\x67\x61\ +\x7a\x69\x6e\x2f\x69\x6d\x61\x67\x65\x73\x2f\x66\x61\x76\x69\x63\ +\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\ +\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\ +\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ +\x00\x00\x02\x8d\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ @@ -1187,23 +1105,105 @@ \x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ \x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ \x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x42\x69\x6e\x67\x3c\x2f\ -\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\ -\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x42\x69\x6e\x67\ -\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\x44\x65\x73\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x53\x74\x61\x72\x74\x50\ +\x61\x67\x65\x20\x2d\x20\x45\x6e\x67\x6c\x69\x73\x68\x3c\x2f\x53\ +\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x44\ +\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x53\x74\x61\x72\x74\ +\x50\x61\x67\x65\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\x44\x65\x73\ \x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\ \x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\ \x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\ -\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\ -\x2f\x2f\x77\x77\x77\x2e\x62\x69\x6e\x67\x2e\x63\x6f\x6d\x2f\x73\ -\x65\x61\x72\x63\x68\x3f\x63\x63\x3d\x7b\x6c\x61\x6e\x67\x75\x61\ -\x67\x65\x7d\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\ -\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\ -\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ -\x2e\x62\x69\x6e\x67\x2e\x63\x6f\x6d\x2f\x73\x2f\x77\x6c\x66\x6c\ -\x61\x67\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\ -\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\ -\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ +\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x73\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x74\x61\x72\x74\x70\x61\x67\x65\ +\x2e\x63\x6f\x6d\x2f\x64\x6f\x2f\x64\x73\x65\x61\x72\x63\x68\x3f\ +\x71\x75\x65\x72\x79\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\ +\x6d\x73\x7d\x26\x61\x6d\x70\x3b\x63\x61\x74\x3d\x77\x65\x62\x26\ +\x61\x6d\x70\x3b\x70\x6c\x3d\x6f\x70\x65\x6e\x73\x65\x61\x72\x63\ +\x68\x26\x61\x6d\x70\x3b\x6c\x61\x6e\x67\x75\x61\x67\x65\x3d\x65\ +\x6e\x67\x6c\x69\x73\x68\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\ +\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\ +\x74\x79\x70\x65\x3d\x22\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\ +\x6e\x2f\x78\x2d\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\ +\x6a\x73\x6f\x6e\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\ +\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x74\x61\x72\ +\x74\x70\x61\x67\x65\x2e\x63\x6f\x6d\x2f\x63\x67\x69\x2d\x62\x69\ +\x6e\x2f\x63\x73\x75\x67\x67\x65\x73\x74\x3f\x71\x75\x65\x72\x79\ +\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x26\x61\ +\x6d\x70\x3b\x6c\x69\x6d\x69\x74\x3d\x31\x30\x26\x61\x6d\x70\x3b\ +\x6c\x61\x6e\x67\x3d\x65\x6e\x67\x6c\x69\x73\x68\x26\x61\x6d\x70\ +\x3b\x66\x6f\x72\x6d\x61\x74\x3d\x6a\x73\x6f\x6e\x22\x2f\x3e\x0a\ +\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x73\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x74\x61\x72\x74\x70\x61\x67\x65\ +\x2e\x63\x6f\x6d\x2f\x67\x72\x61\x70\x68\x69\x63\x73\x2f\x66\x61\ +\x76\x69\x63\x6f\x6e\x2f\x73\x70\x2d\x66\x61\x76\x69\x63\x6f\x6e\ +\x2d\x31\x36\x78\x31\x36\x2e\x70\x6e\x67\x3c\x2f\x49\x6d\x61\x67\ +\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\ +\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ +\x00\x00\x01\x6f\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ +\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ +\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ +\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ +\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x52\x65\x64\x64\x69\x74\ +\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\ +\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x52\x65\ +\x64\x64\x69\x74\x20\x53\x69\x74\x65\x20\x53\x65\x61\x72\x63\x68\ +\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\ +\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\ +\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\ +\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\ +\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x72\x65\x64\x64\x69\ +\x74\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x71\x3d\x7b\ +\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\ +\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x72\x65\x64\x64\x69\x74\x2e\x63\x6f\x6d\ +\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\ +\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ +\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\ +\x00\x00\x02\x54\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\ +\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\ +\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\ +\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\ +\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\ +\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x57\x69\x6b\x69\x61\x3c\ +\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\ +\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x57\x69\x6b\ +\x69\x61\x20\x53\x69\x74\x65\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\ +\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\ +\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\ +\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\ +\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\ +\x74\x70\x3a\x2f\x2f\x7b\x63\x6f\x75\x6e\x74\x72\x79\x7d\x2e\x77\ +\x69\x6b\x69\x61\x2e\x63\x6f\x6d\x2f\x69\x6e\x64\x65\x78\x2e\x70\ +\x68\x70\x3f\x74\x69\x74\x6c\x65\x3d\x53\x70\x65\x63\x69\x61\x6c\ +\x3a\x53\x65\x61\x72\x63\x68\x26\x61\x6d\x70\x3b\x73\x65\x61\x72\ +\x63\x68\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\ +\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\ +\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\ +\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x73\x75\ +\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\x22\x20\ +\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\ +\x2f\x7b\x63\x6f\x75\x6e\x74\x72\x79\x7d\x2e\x77\x69\x6b\x69\x61\ +\x2e\x63\x6f\x6d\x2f\x61\x70\x69\x2e\x70\x68\x70\x3f\x61\x63\x74\ +\x69\x6f\x6e\x3d\x6f\x70\x65\x6e\x73\x65\x61\x72\x63\x68\x26\x61\ +\x6d\x70\x3b\x73\x65\x61\x72\x63\x68\x3d\x7b\x73\x65\x61\x72\x63\ +\x68\x54\x65\x72\x6d\x73\x7d\x26\x61\x6d\x70\x3b\x6e\x61\x6d\x65\ +\x73\x70\x61\x63\x65\x3d\x30\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\ +\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x69\x6d\x61\ +\x67\x65\x73\x2e\x77\x69\x6b\x69\x61\x2e\x63\x6f\x6d\x2f\x77\x69\ +\x6b\x69\x61\x67\x6c\x6f\x62\x61\x6c\x2f\x69\x6d\x61\x67\x65\x73\ +\x2f\x36\x2f\x36\x34\x2f\x46\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\ +\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\ +\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ +\x6e\x3e\x0a\ \x00\x00\x02\x5b\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -1247,6 +1247,10 @@ " qt_resource_name = b"\ +\x00\x0e\ +\x00\xf1\x12\x1c\ +\x00\x4c\ +\x00\x45\x00\x4f\x00\x5f\x00\x44\x00\x65\x00\x75\x00\x45\x00\x6e\x00\x67\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0d\ \x0a\x2e\x72\x9c\ \x00\x41\ @@ -1255,41 +1259,41 @@ \x09\x21\x3a\xfc\ \x00\x44\ \x00\x75\x00\x63\x00\x6b\x00\x44\x00\x75\x00\x63\x00\x6b\x00\x47\x00\x6f\x00\x2e\x00\x78\x00\x6d\x00\x6c\ -\x00\x09\ -\x01\xf4\xe3\x3c\ -\x00\x57\ -\x00\x69\x00\x6b\x00\x69\x00\x61\x00\x2e\x00\x78\x00\x6d\x00\x6c\ +\x00\x08\ +\x00\x4a\x56\x1c\ +\x00\x42\ +\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x78\x00\x6d\x00\x6c\ +\x00\x0b\ +\x0b\x48\x8a\x5c\ +\x00\x59\ +\x00\x6f\x00\x75\x00\x54\x00\x75\x00\x62\x00\x65\x00\x2e\x00\x78\x00\x6d\x00\x6c\ +\x00\x14\ +\x06\xbb\x4c\x7c\ +\x00\x4d\ +\x00\x65\x00\x74\x00\x61\x00\x47\x00\x65\x00\x72\x00\x5f\x00\x4d\x00\x65\x00\x74\x00\x61\x00\x47\x00\x65\x00\x72\x00\x32\x00\x2e\ +\x00\x78\x00\x6d\x00\x6c\ +\x00\x0c\ +\x0f\xd5\x68\x1c\ +\x00\x46\ +\x00\x61\x00\x63\x00\x65\x00\x62\x00\x6f\x00\x6f\x00\x6b\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x12\ \x0a\xf9\x0f\x7c\ \x00\x44\ \x00\x65\x00\x45\x00\x6e\x00\x5f\x00\x42\x00\x65\x00\x6f\x00\x6c\x00\x69\x00\x6e\x00\x67\x00\x75\x00\x73\x00\x2e\x00\x78\x00\x6d\ \x00\x6c\ -\x00\x08\ -\x0e\x4c\x55\xdc\ -\x00\x50\ -\x00\x79\x00\x50\x00\x49\x00\x2e\x00\x78\x00\x6d\x00\x6c\ -\x00\x10\ -\x09\x73\x65\x7c\ -\x00\x4c\ -\x00\x69\x00\x6e\x00\x75\x00\x78\x00\x4d\x00\x61\x00\x67\x00\x61\x00\x7a\x00\x69\x00\x6e\x00\x2e\x00\x78\x00\x6d\x00\x6c\ -\x00\x0a\ -\x0e\x31\x93\x9c\ -\x00\x47\ -\x00\x6f\x00\x6f\x00\x67\x00\x6c\x00\x65\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x1b\ \x0d\x52\x43\x5c\ \x00\x47\ \x00\x6f\x00\x6f\x00\x67\x00\x6c\x00\x65\x00\x5f\x00\x49\x00\x6d\x00\x5f\x00\x46\x00\x65\x00\x65\x00\x6c\x00\x69\x00\x6e\x00\x67\ \x00\x5f\x00\x4c\x00\x75\x00\x63\x00\x6b\x00\x79\x00\x2e\x00\x78\x00\x6d\x00\x6c\ +\x00\x0a\ +\x0e\x31\x93\x9c\ +\x00\x47\ +\x00\x6f\x00\x6f\x00\x67\x00\x6c\x00\x65\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0c\ \x0e\x81\x61\xdc\ \x00\x57\ \x00\x69\x00\x6b\x00\x69\x00\x61\x00\x5f\x00\x65\x00\x6e\x00\x2e\x00\x78\x00\x6d\x00\x6c\ -\x00\x14\ -\x06\xbb\x4c\x7c\ -\x00\x4d\ -\x00\x65\x00\x74\x00\x61\x00\x47\x00\x65\x00\x72\x00\x5f\x00\x4d\x00\x65\x00\x74\x00\x61\x00\x47\x00\x65\x00\x72\x00\x32\x00\x2e\ -\x00\x78\x00\x6d\x00\x6c\ \x00\x10\ \x06\x9e\x0e\x7c\ \x00\x53\ @@ -1298,42 +1302,38 @@ \x0f\xc7\x2e\x1c\ \x00\x73\ \x00\x65\x00\x61\x00\x72\x00\x78\x00\x6d\x00\x65\x00\x2e\x00\x78\x00\x6d\x00\x6c\ +\x00\x0e\ +\x08\xce\x7c\x3c\ +\x00\x57\ +\x00\x69\x00\x6b\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x61\x00\x72\x00\x79\x00\x2e\x00\x78\x00\x6d\x00\x6c\ +\x00\x09\ +\x08\x57\xee\x9c\ +\x00\x51\ +\x00\x77\x00\x61\x00\x6e\x00\x74\x00\x2e\x00\x78\x00\x6d\x00\x6c\ +\x00\x08\ +\x0e\x4c\x55\xdc\ +\x00\x50\ +\x00\x79\x00\x50\x00\x49\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x09\ \x0f\x62\xe1\xdc\ \x00\x59\ \x00\x61\x00\x68\x00\x6f\x00\x6f\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x10\ +\x09\x73\x65\x7c\ +\x00\x4c\ +\x00\x69\x00\x6e\x00\x75\x00\x78\x00\x4d\x00\x61\x00\x67\x00\x61\x00\x7a\x00\x69\x00\x6e\x00\x2e\x00\x78\x00\x6d\x00\x6c\ +\x00\x10\ \x06\xbb\x0e\x7c\ \x00\x53\ \x00\x74\x00\x61\x00\x72\x00\x74\x00\x50\x00\x61\x00\x67\x00\x65\x00\x5f\x00\x65\x00\x6e\x00\x2e\x00\x78\x00\x6d\x00\x6c\ -\x00\x0b\ -\x0b\x48\x8a\x5c\ -\x00\x59\ -\x00\x6f\x00\x75\x00\x54\x00\x75\x00\x62\x00\x65\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0a\ \x0b\x0c\x48\x7c\ \x00\x52\ \x00\x65\x00\x64\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x78\x00\x6d\x00\x6c\ -\x00\x0e\ -\x00\xf1\x12\x1c\ -\x00\x4c\ -\x00\x45\x00\x4f\x00\x5f\x00\x44\x00\x65\x00\x75\x00\x45\x00\x6e\x00\x67\x00\x2e\x00\x78\x00\x6d\x00\x6c\ -\x00\x0c\ -\x0f\xd5\x68\x1c\ -\x00\x46\ -\x00\x61\x00\x63\x00\x65\x00\x62\x00\x6f\x00\x6f\x00\x6b\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x09\ -\x08\x57\xee\x9c\ -\x00\x51\ -\x00\x77\x00\x61\x00\x6e\x00\x74\x00\x2e\x00\x78\x00\x6d\x00\x6c\ -\x00\x0e\ -\x08\xce\x7c\x3c\ +\x01\xf4\xe3\x3c\ \x00\x57\ -\x00\x69\x00\x6b\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x61\x00\x72\x00\x79\x00\x2e\x00\x78\x00\x6d\x00\x6c\ -\x00\x08\ -\x00\x4a\x56\x1c\ -\x00\x42\ -\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x78\x00\x6d\x00\x6c\ +\x00\x69\x00\x6b\x00\x69\x00\x61\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0d\ \x06\xf8\x53\x3c\ \x00\x57\ @@ -1342,77 +1342,77 @@ qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00\x01\ -\x00\x00\x02\x92\x00\x00\x00\x00\x00\x01\x00\x00\x46\x57\ -\x00\x00\x02\x18\x00\x00\x00\x00\x00\x01\x00\x00\x25\x65\ -\x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x00\x08\x9b\ -\x00\x00\x01\x62\x00\x00\x00\x00\x00\x01\x00\x00\x19\x07\ -\x00\x00\x01\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xd8\ -\x00\x00\x01\x34\x00\x00\x00\x00\x00\x01\x00\x00\x17\x56\ +\x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x19\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x02\x90\x00\x00\x00\x00\x00\x01\x00\x00\x45\x7c\ +\x00\x00\x01\x80\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x70\ +\x00\x00\x02\x50\x00\x00\x00\x00\x00\x01\x00\x00\x41\x78\ +\x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x1f\ \x00\x00\x02\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x47\xd4\ -\x00\x00\x02\x58\x00\x00\x00\x00\x00\x01\x00\x00\x29\x65\ -\x00\x00\x02\x70\x00\x00\x00\x00\x00\x01\x00\x00\x44\xb8\ -\x00\x00\x00\x20\x00\x00\x00\x00\x00\x01\x00\x00\x01\x99\ -\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x8d\ -\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xf3\ -\x00\x00\x01\xfe\x00\x00\x00\x00\x00\x01\x00\x00\x23\xf2\ -\x00\x00\x01\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x22\x69\ -\x00\x00\x00\xda\x00\x00\x00\x00\x00\x01\x00\x00\x12\xa4\ -\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x10\x5a\ -\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x15\ -\x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00\x15\x0c\ -\x00\x00\x01\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x1d\xad\ -\x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x98\ -\x00\x00\x02\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x27\xe3\ +\x00\x00\x01\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x20\xb5\ +\x00\x00\x01\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x1f\x16\ +\x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x00\x04\x17\ +\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x3f\xab\ +\x00\x00\x00\x22\x00\x00\x00\x00\x00\x01\x00\x00\x02\x7e\ +\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x11\x52\ +\x00\x00\x02\x76\x00\x00\x00\x00\x00\x01\x00\x00\x44\x09\ +\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x96\ +\x00\x00\x01\x0c\x00\x00\x00\x00\x00\x01\x00\x00\x13\x74\ +\x00\x00\x01\x48\x00\x00\x00\x00\x00\x01\x00\x00\x15\xdc\ +\x00\x00\x01\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x3c\x08\ +\x00\x00\x01\x62\x00\x00\x00\x00\x00\x01\x00\x00\x18\x26\ +\x00\x00\x02\x12\x00\x00\x00\x00\x00\x01\x00\x00\x3d\x80\ +\x00\x00\x01\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x01\ +\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xd0\ " qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x02\x92\x00\x00\x00\x00\x00\x01\x00\x00\x46\x57\ -\x00\x00\x01\x6a\x36\x3b\x51\x92\ -\x00\x00\x02\x18\x00\x00\x00\x00\x00\x01\x00\x00\x25\x65\ -\x00\x00\x01\x6a\x36\x3b\x51\x94\ -\x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x00\x08\x9b\ -\x00\x00\x01\x6a\x36\x3b\x51\x96\ -\x00\x00\x01\x62\x00\x00\x00\x00\x00\x01\x00\x00\x19\x07\ -\x00\x00\x01\x6a\x36\x3b\x51\x88\ -\x00\x00\x01\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xd8\ -\x00\x00\x01\x6a\x36\x3b\x51\xf7\ -\x00\x00\x01\x34\x00\x00\x00\x00\x00\x01\x00\x00\x17\x56\ -\x00\x00\x01\x6a\x36\x3b\x51\xb1\ +\x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x19\ +\x00\x00\x01\x71\xda\xe0\x03\xcf\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01\x71\xda\xe0\x03\xcf\ +\x00\x00\x02\x90\x00\x00\x00\x00\x00\x01\x00\x00\x45\x7c\ +\x00\x00\x01\x71\xda\xe0\x03\xcf\ +\x00\x00\x01\x80\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x70\ +\x00\x00\x01\x71\xda\xe0\x03\xe3\ +\x00\x00\x02\x50\x00\x00\x00\x00\x00\x01\x00\x00\x41\x78\ +\x00\x00\x01\x71\xda\xe0\x03\xcb\ +\x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x1f\ +\x00\x00\x01\x71\xda\xe0\x03\xc7\ \x00\x00\x02\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x47\xd4\ -\x00\x00\x01\x6a\x36\x3b\x51\xb3\ -\x00\x00\x02\x58\x00\x00\x00\x00\x00\x01\x00\x00\x29\x65\ -\x00\x00\x01\x6a\x36\x3b\x52\x8b\ -\x00\x00\x02\x70\x00\x00\x00\x00\x00\x01\x00\x00\x44\xb8\ -\x00\x00\x01\x6a\x36\x3b\x51\xc4\ -\x00\x00\x00\x20\x00\x00\x00\x00\x00\x01\x00\x00\x01\x99\ -\x00\x00\x01\x6a\x36\x3b\x52\x89\ -\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x8d\ -\x00\x00\x01\x6a\x36\x3b\x51\xd8\ -\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x6a\x36\x3b\x51\xf4\ -\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xf3\ -\x00\x00\x01\x6a\x36\x3b\x51\xd6\ -\x00\x00\x01\xfe\x00\x00\x00\x00\x00\x01\x00\x00\x23\xf2\ -\x00\x00\x01\x6a\x36\x3b\x52\x11\ -\x00\x00\x01\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x22\x69\ -\x00\x00\x01\x6a\x36\x3b\x52\x13\ -\x00\x00\x00\xda\x00\x00\x00\x00\x00\x01\x00\x00\x12\xa4\ -\x00\x00\x01\x6a\x36\x3b\x51\xf6\ -\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x10\x5a\ -\x00\x00\x01\x6a\x36\x3b\x51\x86\ -\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x15\ -\x00\x00\x01\x6a\x36\x3b\x51\xc3\ -\x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00\x15\x0c\ -\x00\x00\x01\x6a\x36\x3b\x51\xd9\ -\x00\x00\x01\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x1d\xad\ -\x00\x00\x01\x6a\x36\x3b\x52\x8c\ -\x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x98\ -\x00\x00\x01\x6a\x36\x3b\x51\xf9\ -\x00\x00\x02\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x27\xe3\ -\x00\x00\x01\x6a\x36\x3b\x52\x10\ +\x00\x00\x01\x71\xda\xe0\x03\xc7\ +\x00\x00\x01\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x20\xb5\ +\x00\x00\x01\x71\xda\xe0\x03\xc7\ +\x00\x00\x01\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x1f\x16\ +\x00\x00\x01\x71\xda\xe0\x03\xc7\ +\x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x00\x04\x17\ +\x00\x00\x01\x71\xda\xe0\x03\xc7\ +\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x3f\xab\ +\x00\x00\x01\x71\xda\xe0\x03\xc7\ +\x00\x00\x00\x22\x00\x00\x00\x00\x00\x01\x00\x00\x02\x7e\ +\x00\x00\x01\x71\xda\xe0\x03\xcb\ +\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x11\x52\ +\x00\x00\x01\x71\xda\xe0\x03\xc7\ +\x00\x00\x02\x76\x00\x00\x00\x00\x00\x01\x00\x00\x44\x09\ +\x00\x00\x01\x71\xda\xe0\x04\x13\ +\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x96\ +\x00\x00\x01\x71\xda\xe0\x04\x13\ +\x00\x00\x01\x0c\x00\x00\x00\x00\x00\x01\x00\x00\x13\x74\ +\x00\x00\x01\x71\xda\xe0\x03\xcb\ +\x00\x00\x01\x48\x00\x00\x00\x00\x00\x01\x00\x00\x15\xdc\ +\x00\x00\x01\x71\xda\xe0\x03\xe3\ +\x00\x00\x01\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x3c\x08\ +\x00\x00\x01\x71\xda\xe0\x03\xc7\ +\x00\x00\x01\x62\x00\x00\x00\x00\x00\x01\x00\x00\x18\x26\ +\x00\x00\x01\x71\xda\xe0\x03\xc7\ +\x00\x00\x02\x12\x00\x00\x00\x00\x00\x01\x00\x00\x3d\x80\ +\x00\x00\x01\x71\xda\xe0\x03\xc7\ +\x00\x00\x01\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x01\ +\x00\x00\x01\x71\xda\xe0\x03\xcb\ +\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xd0\ +\x00\x00\x01\x71\xda\xe0\x04\x13\ " qt_version = [int(v) for v in QtCore.qVersion().split('.')]
--- a/eric6/WebBrowser/SiteInfo/SiteInfoDialog.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/SiteInfo/SiteInfoDialog.py Wed Jun 17 17:14:12 2020 +0200 @@ -24,14 +24,16 @@ from ..WebBrowserPage import WebBrowserPage import UI.PixmapCache +import Preferences + +from WebBrowser.WebBrowserWindow import WebBrowserWindow class SiteInfoDialog(QDialog, Ui_SiteInfoDialog): """ Class implementing a dialog to show some information about a site. """ - okStyle = "QLabel { color : white; background-color : green; }" - nokStyle = "QLabel { color : white; background-color : red; }" + securityStyleFormat = "QLabel {{ background-color : {0}; }}" def __init__(self, browser, parent=None): """ @@ -72,11 +74,31 @@ self.heading.setText("<b>{0}</b>".format(title)) self.siteAddressLabel.setText(self.__baseUrl.toString()) if self.__baseUrl.scheme() in ["https"]: - self.securityLabel.setStyleSheet(SiteInfoDialog.okStyle) - self.securityLabel.setText( - self.tr('<b>Connection is encrypted.</b>')) + if WebBrowserWindow.networkManager().isInsecureHost( + self.__baseUrl.host() + ): + self.securityIconLabel.setPixmap( + UI.PixmapCache.getPixmap("securityMedium")) + self.securityLabel.setStyleSheet( + SiteInfoDialog.securityStyleFormat.format( + Preferences.getWebBrowser("InsecureUrlColor").name() + ) + ) + self.securityLabel.setText(self.tr( + '<b>Connection is encrypted but may be insecure.</b>')) + else: + self.securityIconLabel.setPixmap( + UI.PixmapCache.getPixmap("securityHigh")) + self.securityLabel.setStyleSheet( + SiteInfoDialog.securityStyleFormat.format( + Preferences.getWebBrowser("SecureUrlColor").name() + ) + ) + self.securityLabel.setText( + self.tr('<b>Connection is encrypted.</b>')) else: - self.securityLabel.setStyleSheet(SiteInfoDialog.nokStyle) + self.securityIconLabel.setPixmap( + UI.PixmapCache.getPixmap("securityLow")) self.securityLabel.setText( self.tr('<b>Connection is not encrypted.</b>')) browser.page().runJavaScript(
--- a/eric6/WebBrowser/SiteInfo/SiteInfoDialog.ui Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/SiteInfo/SiteInfoDialog.ui Wed Jun 17 17:14:12 2020 +0200 @@ -16,7 +16,7 @@ <property name="sizeGripEnabled"> <bool>true</bool> </property> - <layout class="QVBoxLayout" name="verticalLayout"> + <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <widget class="QLabel" name="heading"> <property name="text"> @@ -36,7 +36,7 @@ <attribute name="title"> <string>General</string> </attribute> - <layout class="QVBoxLayout" name="verticalLayout_2"> + <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> @@ -140,13 +140,16 @@ </spacer> </item> <item row="1" column="1"> + <widget class="QLabel" name="securityIconLabel"/> + </item> + <item row="1" column="2"> <widget class="QLabel" name="securityLabel"> <property name="text"> <string/> </property> </widget> </item> - <item row="1" column="2"> + <item row="1" column="3"> <spacer name="horizontalSpacer_2"> <property name="orientation"> <enum>Qt::Horizontal</enum>
--- a/eric6/WebBrowser/Tools/WebIconProvider.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/Tools/WebIconProvider.py Wed Jun 17 17:14:12 2020 +0200 @@ -80,7 +80,7 @@ def load(self): """ - Public method to load the bookmarks. + Public method to load the web site icons. """ if self.__loaded: return @@ -105,7 +105,7 @@ def save(self): """ - Public method to save the zoom values. + Public method to save the web site icons. """ if not self.__loaded: return @@ -161,7 +161,7 @@ @rtype str """ return url.toString(QUrl.PrettyDecoded | QUrl.RemoveUserInfo | - QUrl.RemoveFragment) + QUrl.RemoveFragment | QUrl.RemovePath) def iconForUrl(self, url): """ @@ -187,18 +187,24 @@ self.load() urlStr = self.__urlToString(url) - for iconUrlStr in self.__iconsDB: - if iconUrlStr.startswith(urlStr): - return self.__iconsDB[iconUrlStr] + if urlStr in self.__iconsDB: + return self.__iconsDB[urlStr] + else: + for iconUrlStr in self.__iconsDB: + if iconUrlStr.startswith(urlStr): + return self.__iconsDB[iconUrlStr] # try replacing http scheme with https scheme url = QUrl(url) if url.scheme() == "http": url.setScheme("https") - urlStr = self.__urlToString(url) - for iconUrlStr in self.__iconsDB: - if iconUrlStr.startswith(urlStr): - return self.__iconsDB[iconUrlStr] + urlStr = self.__urlToString(url) + if urlStr in self.__iconsDB: + return self.__iconsDB[urlStr] + else: + for iconUrlStr in self.__iconsDB: + if iconUrlStr.startswith(urlStr): + return self.__iconsDB[iconUrlStr] if scheme == "https": return UI.PixmapCache.getIcon("securityHigh32")
--- a/eric6/WebBrowser/UrlBar/UrlBar.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/UrlBar/UrlBar.py Wed Jun 17 17:14:12 2020 +0200 @@ -235,7 +235,7 @@ if not self.__browser.getSafeBrowsingStatus(): # malicious web site backgroundColor = Preferences.getWebBrowser( - "MaliciousUrlColor") + "MaliciousUrlColor") elif self.__browser.url().scheme() == "https": if WebBrowserWindow.networkManager().isInsecureHost( self.__browser.url().host()
--- a/eric6/WebBrowser/UserAgent/UserAgentDefaults_rc.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/UserAgent/UserAgentDefaults_rc.py Wed Jun 17 17:14:12 2020 +0200 @@ -2,7 +2,7 @@ # Resource object code # -# Created by: The Resource Compiler for PyQt5 (Qt v5.12.1) +# Created by: The Resource Compiler for PyQt5 (Qt v5.14.2) # # WARNING! All changes made in this file will be lost! @@ -92,7 +92,7 @@ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x6a\x36\x3b\x52\xa8\ +\x00\x00\x01\x71\xda\xe0\x03\xd7\ " qt_version = [int(v) for v in QtCore.qVersion().split('.')]
--- a/eric6/WebBrowser/WebBrowserTabWidget.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/WebBrowserTabWidget.py Wed Jun 17 17:14:12 2020 +0200 @@ -428,8 +428,8 @@ browser.backwardAvailable.connect( self.__mainWindow.setBackwardAvailable) browser.forwardAvailable.connect(self.__mainWindow.setForwardAvailable) - browser.loadStarted.connect( - lambda: self.__loadStarted(browser)) + browser.loadProgress.connect( + lambda progress: self.__loadProgress(progress, browser)) browser.loadFinished.connect( lambda ok: self.__loadFinished(ok, browser)) browser.faviconChanged.connect( @@ -874,25 +874,6 @@ for urlbar in self.__stackedUrlBar.urlBars(): urlbar.preferencesChanged() - def __loadStarted(self, browser): - """ - Private method to handle the loadStarted signal. - - @param browser reference to the web browser - @type WebBrowserView - """ - index = self.indexOf(browser) - anim = self.animationLabel(index, "loadingAnimation", 40) - if not anim: - self.setTabIcon(index, UI.PixmapCache.getIcon("loading")) - else: - self.setTabIcon(index, QIcon()) - self.setTabText(index, self.tr("Loading...")) - self.setTabToolTip(index, self.tr("Loading...")) - self.showMessage.emit(self.tr("Loading...")) - - self.__mainWindow.setLoadingActions(True) - def __loadFinished(self, ok, browser): """ Private method to handle the loadFinished signal. @@ -902,18 +883,45 @@ @param browser reference to the web browser @type WebBrowserView """ - import WebBrowser.WebBrowserWindow - index = self.indexOf(browser) - self.resetAnimation(index) - self.setTabIcon( - index, WebBrowser.WebBrowserWindow.WebBrowserWindow.icon( - browser.url())) if ok: self.showMessage.emit(self.tr("Finished loading")) else: self.showMessage.emit(self.tr("Failed to load")) + + def __loadProgress(self, progress, browser): + """ + Private method to handle the loadProgress signal. - self.__mainWindow.setLoadingActions(False) + Note: This works around wegengine not sending a loadFinished + signal for navigation on the same page. + + @param progress load progress in percent + @type int + @param browser reference to the web browser + @type WebBrowserView + """ + index = self.indexOf(browser) + if progress == 0: + # page loading has started + anim = self.animationLabel(index, "loadingAnimation", 40) + if not anim: + self.setTabIcon(index, UI.PixmapCache.getIcon("loading")) + else: + self.setTabIcon(index, QIcon()) + self.setTabText(index, self.tr("Loading...")) + self.setTabToolTip(index, self.tr("Loading...")) + self.showMessage.emit(self.tr("Loading...")) + + self.__mainWindow.setLoadingActions(True) + elif progress == 100: + import WebBrowser.WebBrowserWindow + self.resetAnimation(index) + self.setTabIcon( + index, WebBrowser.WebBrowserWindow.WebBrowserWindow.icon( + browser.url())) + self.showMessage.emit(self.tr("Finished loading")) + + self.__mainWindow.setLoadingActions(False) def __iconChanged(self, browser): """
--- a/eric6/WebBrowser/data/icons_rc.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/data/icons_rc.py Wed Jun 17 17:14:12 2020 +0200 @@ -2,13 +2,1044 @@ # Resource object code # -# Created by: The Resource Compiler for PyQt5 (Qt v5.12.1) +# Created by: The Resource Compiler for PyQt5 (Qt v5.14.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ +\x00\x00\x07\x84\ +\x47\ +\x49\x46\x38\x39\x61\x36\x00\x37\x00\xf3\x00\x00\xff\xff\xff\x00\ +\x00\x00\x78\x78\x78\x1c\x1c\x1c\x0e\x0e\x0e\xd8\xd8\xd8\x54\x54\ +\x54\xdc\xdc\xdc\xc4\xc4\xc4\x48\x48\x48\x8a\x8a\x8a\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\xff\x0b\x4e\ +\x45\x54\x53\x43\x41\x50\x45\x32\x2e\x30\x03\x01\x00\x00\x00\x21\ +\xfe\x1a\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x61\ +\x6a\x61\x78\x6c\x6f\x61\x64\x2e\x69\x6e\x66\x6f\x00\x21\xf9\x04\ +\x09\x0a\x00\x00\x00\x2c\x00\x00\x00\x00\x36\x00\x37\x00\x00\x04\ +\xcc\x10\xc8\x49\xab\xbd\x38\xeb\xcd\xbb\xff\x60\x28\x8e\x64\x69\ +\x9e\x25\x92\x10\x44\x82\xa0\xa7\xc2\xce\x84\x02\x93\x08\x4d\xbf\ +\x77\xb8\xea\xac\x44\x2f\x04\xa4\x0d\x41\xc5\xd9\xf1\xf3\x03\x0a\ +\x97\x9d\x5c\x91\x77\x2c\x18\x58\x86\x02\x46\xa6\xb3\x2d\x0b\x03\ +\xda\x40\x7b\x51\x05\xa9\x16\xc1\x60\x20\x18\x5d\x75\x06\x93\x80\ +\xd6\x26\x16\x4d\xe1\xd9\x40\x94\xc4\x8b\x45\x6f\x34\x71\x25\x73\ +\x33\x75\x20\x07\x79\x2c\x03\x07\x27\x6a\x6c\x24\x07\x6f\x06\x8d\ +\x50\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x1c\x8f\x87\x96\xa1\x1a\ +\x85\x2c\xa2\x47\xa6\x04\xa8\x14\x8a\x04\x7b\x96\xae\xb0\x17\xb2\ +\x97\xb5\x18\xaa\xac\x3d\xb9\xa5\x6b\xba\x43\xa4\x9f\xc2\xc3\xc4\ +\xc5\xc6\xc7\xc8\x9b\xc1\x8e\xbe\x24\xbc\x72\x74\x23\xb7\x25\xd3\ +\x20\xd5\xd2\x7f\x22\xcf\x84\xd1\x23\xcb\x72\xcd\xc9\x9e\xdf\xc5\ +\xdb\xc5\xd7\xc3\xe8\xc2\xe6\xe5\xe1\xe2\xef\x3d\x11\x00\x21\xf9\ +\x04\x09\x0a\x00\x00\x00\x2c\x00\x00\x00\x00\x36\x00\x37\x00\x00\ +\x04\xce\x10\xc8\x49\xab\xbd\x38\xeb\xcd\xbb\xff\x60\x28\x8e\x64\ +\x69\x9e\x68\xaa\x16\x06\x41\x18\x85\x5a\x16\x83\xeb\x0e\xb1\x2c\ +\xb6\xb6\x6b\xe8\xa2\x5e\x0f\x18\x12\xda\x88\x20\x5e\xef\x87\xf4\ +\x1c\x6a\xb6\xc1\xe1\x82\x48\xb8\x12\x88\xa6\xe4\xc0\x33\x4c\x2d\ +\x0a\xa3\x62\x24\x18\x0c\x04\x26\x84\xd1\x95\x05\x09\x7a\x68\x92\ +\x75\x9d\x08\x41\x6f\xa5\xf5\x11\x74\x27\x0c\xf2\x7a\x04\x21\x6f\ +\x36\x71\x23\x73\x46\x75\x83\x66\x86\x23\x6a\x6b\x6d\x5a\x1a\x61\ +\x42\x63\x92\x1c\x55\x57\x91\x97\x9c\x9d\x9e\x9f\xa0\xa1\x6e\x8c\ +\x97\x65\x67\x1a\x84\x2e\x8d\x40\xa9\x04\xab\x14\x7d\x7f\x4d\xb1\ +\x19\xb4\xb3\x3d\xb2\x17\xad\xaf\x32\xbb\xa8\xa4\x92\xa6\xbc\xa2\ +\xc4\xc5\xc6\xc7\xc8\xc9\xca\x27\xc2\x29\xcd\x64\x70\xcc\xd1\x22\ +\xb6\x25\xd5\x7c\xb8\x27\xd7\x1f\xbe\x26\xdd\x22\xcf\xcc\xc0\xcb\ +\x9e\xe1\xc7\xdf\xc6\xdb\xc4\xea\xa2\xe8\xc6\xe6\xe4\xf1\x27\x11\ +\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\x2c\x00\x00\x00\x00\x36\x00\ +\x37\x00\x00\x04\xce\x10\xc8\x49\xab\xbd\x38\xeb\xcd\xbb\xff\x60\ +\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\x30\x0c\x02\x5b\x0a\x44\x4d\ +\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\x0f\x44\xb3\xe1\x86\x1f\x17\ +\x0c\x99\x2b\x18\x6a\x86\x02\x49\x79\x24\x15\x76\xb6\x81\x34\x54\ +\xac\x55\x45\x4f\x1e\xc1\x00\xcc\x9a\xc4\xb6\x72\x4d\x48\x42\xd7\ +\x44\xdd\x9b\x29\xcc\x23\xc3\x5f\x5f\xd1\x01\xbb\x3e\x30\x3b\x07\ +\x61\x06\x7e\x7f\x85\x86\x87\x88\x89\x8a\x12\x08\x09\x35\x09\x08\ +\x8b\x15\x0a\x68\x0a\x19\x54\x43\x08\x6e\x04\x91\x16\x71\x79\x29\ +\x8e\x6e\x09\x17\x7c\x3d\x3f\x9b\x6f\x16\xa6\x6c\x2c\xa9\x04\x17\ +\x9f\x3f\xa2\x68\xa4\xb1\x78\x99\x9b\x9d\x92\x94\x62\x96\x92\x13\ +\x8d\x8f\xbb\xc0\xc5\xc6\xc7\xc8\xc9\x13\x98\x28\xcc\x70\x3c\xa0\ +\x44\xd0\x23\xac\x27\xd5\x6a\xa7\x26\xd7\x5c\xd3\x26\xb2\x23\xce\ +\xde\xb8\xca\x88\xe1\xc5\xdf\xc6\xdb\xc5\xea\xc0\xe8\xc6\xe6\xe4\ +\xf1\x26\x11\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\x2c\x00\x00\x00\ +\x00\x36\x00\x37\x00\x00\x04\xcd\x10\xc8\x49\xab\xbd\x38\xeb\xcd\ +\xbb\xff\x60\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\x30\x0c\x02\x5b\ +\x0a\x44\x4d\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\x0f\x44\xb3\xe1\ +\x86\x1f\x17\x0c\xc9\x34\x29\x8f\xce\x17\x94\xc8\x9b\x8a\x8a\x35\ +\x6b\x67\x67\x13\x96\xb8\x35\x2f\x08\xdc\x3b\x91\xc5\xc9\xea\x09\ +\x7b\x23\x3d\x53\xef\xa6\x7c\x4e\xaf\xdb\xef\xf8\xbc\xaa\x60\xa8\ +\x19\x0a\x1a\x71\x3f\x05\x67\x80\x17\x6c\x5a\x29\x7d\x3c\x04\x06\ +\x18\x67\x43\x8c\x36\x8f\x41\x91\x92\x04\x18\x88\x43\x8b\x3c\x8e\ +\x99\x52\x48\x07\x67\x07\x7a\x13\x07\x8b\x06\xa4\xa5\xab\xac\xad\ +\xae\x27\x08\x09\x35\x09\x08\xac\x0a\x92\x0a\x23\x82\x23\x08\x97\ +\x04\xb5\x54\x46\x25\xb2\x97\x09\x21\x90\x24\xbe\x35\xc7\x95\xc9\ +\xca\x21\x9a\x24\xc4\x92\xc6\xd0\xa0\x25\xbd\x97\xc0\x79\xb7\x8c\ +\xb9\x48\xbb\x15\xb1\xb3\xdb\x3f\xd1\xab\xc8\xe8\xcd\xab\xe7\xec\ +\xd7\xaf\xf0\x2b\x11\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\x2c\x00\ +\x00\x00\x00\x36\x00\x37\x00\x00\x04\xcb\x10\xc8\x49\xab\xbd\x38\ +\xeb\xcd\xbb\xff\x60\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\x30\x0c\ +\x02\x5b\x0a\x44\x4d\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\x0f\x44\ +\xb3\xe1\x86\x1f\x17\x0c\xc9\x34\x29\x8f\xce\x17\x94\xc8\x9b\x8a\ +\x8a\x35\x6b\x67\x67\x13\x96\xb8\x35\x2f\x08\xdc\x3b\x91\xc5\xc9\ +\xea\x09\x7b\x23\x3d\x53\xef\xa6\x7c\x4e\xaf\xdb\xef\xf8\x3c\x3e\ +\x8e\xe4\x5f\xd8\x5a\x2a\x80\x19\x67\x48\x85\x18\x87\x3f\x89\x16\ +\x83\x43\x8d\x18\x7e\x3f\x91\x7a\x94\x95\x96\x97\x98\x99\x4c\x05\ +\x06\x35\x06\x05\x6e\x52\x27\x05\x67\xa0\x21\x8f\x23\x9d\x3c\x04\ +\x06\x40\x5d\x26\xab\x36\xae\x61\xb0\xb1\x04\x57\x6a\x25\xaa\x3c\ +\xad\x57\xa2\x19\x08\x09\x35\x09\x08\x17\x07\x67\x07\x43\x0a\xb1\ +\x0a\xc6\xaa\x06\xc9\x3f\x08\xb6\x04\xc5\x79\xc2\xb6\x09\x7a\xd4\ +\x35\xdb\xdc\x7a\xd8\xb1\xda\x79\xd3\xb6\xd6\x79\xcb\xab\xcd\x95\ +\xc1\xc3\xe7\x22\x11\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\x2c\x00\ +\x00\x00\x00\x36\x00\x37\x00\x00\x04\xcc\x10\xc8\x49\xab\xbd\x38\ +\xeb\xcd\xbb\xff\x60\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\x30\x0c\ +\x02\x5b\x0a\x44\x4d\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\x0f\x44\ +\xb3\xe1\x86\x1f\x17\x0c\xc9\x34\x29\x8f\xce\x17\x94\xc8\x9b\x8a\ +\x8a\x35\x6b\x67\x67\x13\x96\xb8\x35\x2f\x08\xdc\x3b\x91\xc5\xc9\ +\xea\x09\x7b\x23\x3d\x53\xef\xa6\x7c\x4e\xaf\xdb\xef\xf8\x3c\x3e\ +\x8e\xe4\x5f\xd8\x5a\x2a\x80\x19\x67\x48\x85\x18\x87\x3f\x89\x16\ +\x83\x43\x8d\x18\x7e\x3f\x91\x7a\x94\x95\x96\x97\x98\x00\x08\x09\ +\x35\x09\x08\x96\x0a\x3c\x35\x0a\x94\x08\xa2\x36\x9f\x33\x52\x22\ +\x9c\xa7\x04\x09\x33\x6a\x20\xae\x36\x5f\x41\x21\xb4\x35\xb6\x5d\ +\x21\xad\xa7\xb0\x6e\xb2\x1f\xa6\xae\xa9\x6e\xab\x22\xa1\xa2\xa4\ +\x17\x05\x06\x35\x06\x05\x48\x9b\x9d\xc6\x15\x05\x67\xd2\x94\xcf\ +\xa2\x06\x95\xb4\xdf\xae\x95\xdc\x3c\xde\x94\x07\x67\x07\x96\x07\ +\xdc\x06\xea\x99\x28\x11\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\x2c\ +\x00\x00\x00\x00\x36\x00\x37\x00\x00\x04\xcc\x10\xc8\x49\xab\xbd\ +\x38\xeb\xcd\xbb\xff\x60\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\x30\ +\x0c\x02\x5b\x0a\x44\x4d\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\x0f\ +\x44\xb3\xe1\x86\x1f\x17\x0c\xc9\x34\x29\x8f\xce\x17\x94\xc8\x9b\ +\x8a\x8a\x35\x6b\x67\x67\x13\x96\xb8\x35\x2f\x08\xdc\x3b\x91\xc5\ +\xc9\xea\x09\x7b\x23\x3d\x53\xef\xa6\x7c\x4e\xaf\xdb\xef\x22\x44\ +\xa2\x96\x40\xe0\x2b\x0a\x3c\x35\x0a\x7f\x12\x08\x82\x36\x7e\x3f\ +\x71\x16\x7b\x88\x04\x09\x8b\x6a\x16\x8f\x36\x3f\x67\x17\x95\x35\ +\x97\x41\x17\x8e\x88\x91\x39\x6c\x5a\x87\x8f\x8a\xa2\x52\x19\x81\ +\x82\x84\x85\x86\x8e\x7d\xae\xb2\xb3\xb4\xb5\x4c\x05\x06\x35\x06\ +\x05\xb3\x05\x67\xbc\x51\x4b\x22\xb9\x82\x06\x4e\x93\x20\x95\x26\ +\x98\x21\xca\x5f\x9d\x21\xc4\x3c\xc6\x33\xc8\x1f\x07\x67\x07\x6b\ +\xa9\x23\x07\xc4\x06\xda\xb6\x1d\x8c\xb2\xa3\xb4\xcc\xb2\xe8\xae\ +\xe6\xb4\xe4\xe2\xef\x27\x11\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\ +\x2c\x00\x00\x00\x00\x36\x00\x37\x00\x00\x04\xcc\x10\xc8\x49\xab\ +\xbd\x38\xeb\xcd\xbb\xff\x60\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\ +\x30\x0c\x02\x5b\x0a\x44\x4d\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\ +\x0f\x44\xb3\xe1\x7e\x88\x44\x2d\x81\xd0\xb8\x60\x43\x80\x82\x57\ +\x53\x44\x39\x08\xaa\xad\x39\x7b\x1d\x3f\x4a\x2d\x21\x31\xe3\x7d\ +\x3b\x62\x5b\x69\x67\x13\x7e\xd2\xb5\x75\x30\x14\xd6\x92\x49\xc5\ +\xda\x19\x9b\xe6\xe2\xbd\x23\x53\x54\x56\x57\x58\x61\x4c\x85\x89\ +\x8a\x8b\x8c\x8d\x57\x05\x06\x35\x06\x05\x8e\x16\x05\x6c\x35\x03\ +\x94\x43\x4f\x7b\x13\x91\x54\x06\x9c\x66\x18\x69\x43\x98\x3d\xa5\ +\x62\xa7\x73\x17\xa0\x3c\xa2\x3f\x79\x37\x18\x07\xa8\x03\x07\x51\ +\x9d\x1a\x07\xa0\x06\xb9\x95\xc1\xc2\xc3\xc4\xc5\xc6\xc7\x1d\xbb\ +\x28\xca\x22\xb3\x9e\x44\xa4\x40\x6d\x27\xb7\x23\xd5\x26\xd7\x21\ +\xce\x27\xdb\x23\xcc\x26\xdf\xc8\x89\xe1\xc2\xdd\xc4\xd9\xc3\xe8\ +\xe5\xd1\xc5\xe4\xe2\xef\x25\x11\x00\x3b\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\ +\x00\x00\x04\x2c\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\x00\ +\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xde\x03\x0c\x12\x06\x08\xae\xb5\x4a\x3d\x00\x00\x03\xb9\x49\x44\ +\x41\x54\x38\xcb\x5d\xcb\x5b\x4c\x5b\x75\x00\x07\xe0\xdf\xff\x9c\ +\xd3\x9e\x76\x6d\x69\xc1\x52\x84\xca\x40\x2e\x16\xc7\x9d\x31\x67\ +\x9c\x66\x03\x27\x73\x2f\x8a\x71\x2c\x12\x12\x12\x1f\xa6\x89\x2c\ +\x73\xc9\x36\x37\x13\x6f\x0f\x5e\xa2\xcc\x88\x0f\xb8\x87\x3d\x78\ +\x99\x09\x09\x4b\x34\xd1\x38\x86\x3a\xb9\x3a\x04\x06\x1d\x84\x6b\ +\xa1\x2d\xd0\x0b\xa5\xed\xa1\x17\x7a\x4a\xdb\x73\xf3\xc9\x17\xbf\ +\xf7\x8f\xe0\x7f\xea\x00\xac\xf6\x78\xb0\x7f\xb1\x10\x00\xd0\x07\ +\x50\xbf\x9d\x69\x36\x15\x55\xd5\x3f\x22\xe6\xab\xcd\xac\xbc\x64\ +\xcd\x65\x33\x82\x73\x79\x67\xa2\xa7\x7b\x36\xc8\xfc\x17\xaf\xff\ +\x74\x15\xee\x73\x9f\xe3\xd9\xf0\x3e\xd5\x4e\xb4\xf2\xbb\x57\x3a\ +\xcb\xac\x95\xcd\xaf\x2f\x14\x72\xf5\xad\x79\xe5\x15\xe1\x4c\xf2\ +\xf1\xd8\xf4\x10\x76\x84\x2d\x18\x92\x31\xec\x39\x82\xc3\x25\x96\ +\x83\x2d\x04\x00\x2e\x5f\xac\xc7\xf5\x1e\x3b\x00\xe0\x30\xa0\x39\ +\xd6\xf5\xd2\x25\x5e\x6f\x7c\x7f\x6e\x88\x66\x6d\x2f\x04\x51\x7b\ +\x54\xc0\xae\x5f\x40\x69\x41\x03\xbc\x53\x03\xd8\x18\xf7\x80\x4f\ +\x88\x23\xb6\x23\xc5\x2d\x14\x00\x68\xee\xd8\x71\xfe\xe7\x5e\xb4\ +\xb5\xe1\xc0\xe9\xdb\xbd\xb7\x72\x5a\xda\x3f\x76\xb8\xfd\x78\x30\ +\xf5\x9d\x1c\xe7\xb6\x51\x7a\x92\x81\x62\x52\x63\xda\x31\x89\xb9\ +\xbf\xfd\xf0\x2b\x40\xda\xc4\xc4\x3e\xb9\xb1\x92\xa1\x15\x1f\x8f\ +\xc1\x6c\x99\x4a\xda\x1a\xe9\x12\x53\xd5\x37\x74\x9e\xa5\xa3\xb1\ +\x22\x28\x91\x1c\x95\x8a\x11\x52\xe4\xe9\x4e\x03\x16\x07\x78\x84\ +\x97\x05\x78\xe7\x37\x40\xcb\xe9\x8c\x56\x94\x69\xa3\x4a\xee\x9e\ +\x73\x8a\x76\x82\xa1\x2f\x80\xa6\x77\xf0\xf5\xc4\xa7\x6f\xe9\x8a\ +\x6d\xbd\xae\xe1\x11\x29\x15\x72\xd0\xc9\x1d\x0e\x12\x05\x04\xdc\ +\x5e\x48\xfb\x09\xe8\xf2\x53\x70\xfc\xa9\xc8\x8f\xb2\x22\x65\xc8\ +\xa2\x6f\x5c\x7b\xbe\xbc\xab\xf1\xa3\x15\x85\x00\xc0\xbc\x32\x9a\ +\xfd\xfd\xef\x77\xdc\x81\x99\x87\x9a\x02\x36\xc2\xae\x8e\xfa\x90\ +\x65\x12\x11\xe6\x62\x30\x9b\x4f\x23\xbb\xf0\x14\x84\x3d\x23\x7c\ +\xbe\x10\x88\xb2\xb5\xb5\xe6\x2e\x6b\x5d\x9e\x79\xd3\xde\xda\x71\ +\x93\xd0\x00\xf0\x58\x53\xcb\xb5\x8d\x91\x6f\x4f\x1d\x88\x6d\x52\ +\xf6\xb1\x20\xd1\x54\x18\x91\x10\xd3\x38\x56\xdd\x83\x27\x6a\xda\ +\x50\x5d\x57\x8b\xd1\x87\x01\x94\x54\x14\x2b\x12\x2c\xc6\xd2\x43\ +\xe6\x8e\xe8\x5e\xcd\xf4\xc4\x1f\x17\x5c\x74\xdf\xe2\x6d\x53\x44\ +\xc5\xf6\x4c\xf5\xf5\x9b\xa3\x7e\x9e\x98\x73\x68\x44\x96\x7d\x28\ +\x50\xbf\x08\xe4\x34\xe1\xe5\xd6\x2a\xdc\x9b\x74\x81\x97\x15\x4c\ +\xce\x7b\xc9\x92\x33\x44\x68\x8d\x5a\xa5\xa5\x94\x13\x14\x9e\xfa\ +\x81\xa2\x8c\xf9\x15\x54\xc2\x63\x63\x58\x0d\x38\x5f\x1a\x9b\x0b\ +\x31\x68\x24\x82\x38\x7d\x1c\x95\x35\x79\x90\x28\x1a\x87\x8f\x94\ +\x40\x9d\x63\xc4\x1e\xab\x86\xd6\x92\x85\xcd\x9d\x38\x61\xb2\xb3\ +\x8a\xac\xe5\xb9\x8d\x54\x38\xb0\x5e\xe4\x78\x30\x02\x29\x1e\x05\ +\x51\x53\x90\x64\x05\xb1\x3d\x3d\x26\x96\x44\xc5\xbe\x16\x86\x27\ +\x18\xc7\x36\xc7\x43\xaf\x67\x90\x7b\xd0\x0c\xc5\xa8\x03\xa3\xd3\ +\x92\x86\xa3\x25\xe0\x79\xb1\x99\xe1\x9c\xc1\x48\x68\x66\x05\x11\ +\x2f\x0f\x0d\x14\x68\x55\x04\x1a\x35\x03\x5a\x21\xc4\xee\xe4\x94\ +\x8c\xd1\x43\x12\x94\x0a\x9b\xbc\x80\x24\xcb\x82\xe8\xb5\x60\x29\ +\x82\xd5\xb5\x20\x64\x31\x93\x62\xaa\xa4\xe8\xfd\x1d\x83\xe5\x33\ +\x29\x8f\xb7\xa6\x12\x9c\x64\xd0\xe8\x32\x3a\x2d\x1f\xdd\xd8\x4d\ +\xbc\x1d\x88\xa4\x35\x26\x5e\x42\x43\xa5\x05\x87\x74\x5a\x0c\xaf\ +\x85\x11\x57\x13\x45\xf0\xa4\xc9\xd2\xec\x3a\xb4\xa9\xf4\x10\x01\ +\x80\xfb\xeb\x23\x54\x55\x7e\x21\x9d\xda\xf5\xca\xf7\x06\x26\xa9\ +\xd7\x7e\xb9\x22\x9c\x4c\x5c\xfd\xd1\xa9\xb7\x75\xe8\x9f\xb4\x2a\ +\x6f\x9c\xad\x23\x65\x16\x13\xb8\xfd\x0c\xee\x8e\xaf\x63\x6c\x70\ +\x11\x8c\x2f\x3c\x4b\x85\x62\xc7\x19\xcf\xea\x2d\x7c\xf9\xd5\x7b\ +\x68\xef\x1f\x93\x18\x0a\xd0\xab\x21\xb5\x7b\x40\x14\xe5\xf2\x85\ +\x13\x67\x7e\x4d\x46\xf7\xd3\xe7\xc6\x1d\x1c\x5e\x6d\xb0\x60\x76\ +\x4b\xc4\x6e\x28\x01\x46\x10\x97\x52\xf1\x54\xa7\x7f\xed\xc3\x04\ +\x01\x00\x87\xeb\x2e\xb8\x40\x1c\xdb\xae\x05\xc4\xc2\x22\x3c\x3e\ +\x2b\x3e\xe8\xee\x02\x00\x3c\xf7\xca\xcd\x4a\xc5\x64\x38\x5b\x5d\ +\x5b\x58\xe0\xf2\x44\x64\xce\xbf\xfb\x17\xef\x0e\x0d\x2e\xff\x73\ +\x29\xfa\xcc\xf9\x7e\xfc\x0b\x0b\xb9\xbe\x45\x31\x2c\x8e\xcb\x00\ +\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x03\x16\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ +\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\ +\x01\x42\x28\x9b\x78\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ +\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x93\x49\x44\ +\x41\x54\x38\x8d\x95\x91\xbd\x4f\x1b\x41\x10\xc5\x67\xe1\x96\xbb\ +\xf3\x25\xd8\x46\xe1\x82\x20\x91\x2c\x45\x38\x42\x51\x94\x02\x19\ +\x21\x04\x1d\xa2\xa3\x80\xa3\x30\x05\x25\x12\x15\x32\x14\x44\x48\ +\xfc\x05\x54\x96\x28\x29\x4c\x45\x0f\xae\xa0\xc0\x20\x0a\x7a\xa0\ +\x20\x46\x48\x24\x0e\x8e\xb1\x8d\xe3\x23\xb7\xc7\xde\xde\xee\x5e\ +\x8a\xc4\x16\x1f\x49\xc1\x2b\x67\xde\xfc\xf4\x66\x06\x65\xb3\xd9\ +\x81\x20\x08\x52\x08\xa1\x38\x3c\x43\x41\x10\xe4\x11\x42\x69\xc5\ +\xf7\xfd\x85\x91\x91\x91\x01\xc3\x30\xd4\xe7\x00\x08\x21\xd1\xc3\ +\xc3\xc3\x05\x45\x4a\x19\x07\x80\x6a\xbd\x5e\x77\x9f\x03\xc0\x18\ +\x87\xa4\x94\x71\x85\x52\x0a\x94\xd2\x27\xc3\xb9\x5c\x2e\xba\xb7\ +\xb7\xf7\x2a\x16\x8b\xb9\xc9\x64\xb2\x64\x18\x86\xb8\xdf\x17\x42\ +\xb8\x94\xd2\x76\x85\x73\x8e\x82\x20\x68\x36\x6a\xb5\x9a\x92\x4a\ +\xa5\x3e\x5e\x5c\x5c\x84\x55\x55\x85\x83\x83\x03\xd8\xd8\xd8\x78\ +\x37\x3f\x3f\xff\x65\x6a\x6a\xea\xfa\x3e\x84\x73\x8e\x14\xc6\x18\ +\xe2\x9c\x37\x8b\x2b\x2b\x2b\x1f\x6e\x6f\x6f\xdb\x97\x96\x96\x2a\ +\x63\x63\x63\x2e\x00\xc0\xc9\xc9\x49\x5b\x22\x91\x70\xe6\xe6\xe6\ +\x3e\x25\x93\xc9\x6f\xc3\xc3\xc3\x3f\x01\x00\x18\x63\xa8\x85\x73\ +\x8e\xa4\x94\x20\xa5\x84\xb3\xb3\x33\xa3\x5c\x2e\x47\xa7\xa7\xa7\ +\x6b\x96\x65\x5d\xa9\xaa\x5a\x50\x55\xf5\x6a\x68\x68\xe8\x47\x26\ +\x93\xe9\xa8\x56\xab\xd1\xf5\xf5\xf5\xf7\x9e\xe7\x21\x29\x25\x70\ +\xce\x51\x0b\x63\x0c\x49\x29\x61\x7b\x7b\xbb\x6b\x6b\x6b\xeb\xad\ +\x69\x9a\x80\x31\xf6\x8e\x8e\x8e\x24\x63\x8c\x33\xc6\xd8\xf1\xf1\ +\x31\xdf\xdd\xdd\x8d\x99\xa6\x09\x9a\xa6\x69\xe9\x74\x3a\x2e\xa5\ +\x6c\x26\x00\x29\x25\x10\x42\xc2\xf9\x7c\xbe\x4b\xd7\x75\xd8\xd9\ +\xd9\x31\x4d\xd3\x0c\x1a\xc9\x84\x10\x6d\xcb\xcb\xcb\x15\x5d\xd7\ +\x61\x76\x76\xf6\x7a\x7c\x7c\xdc\xfd\x9b\x00\x94\xc6\x0a\x33\x33\ +\x33\x25\x00\x78\x71\x7e\x7e\xfe\x72\x71\x71\xb1\x18\x8d\x46\x5d\ +\x29\x25\x00\x00\xf4\xf6\xf6\x3a\x99\x4c\x46\xd5\x75\x1d\xfa\xfa\ +\xfa\xca\xba\xae\x13\xc6\xd8\x9f\x23\x36\x00\xae\xeb\xda\x96\x65\ +\x95\x4e\x4f\x4f\xef\x22\x91\x48\x79\x6d\x6d\x2d\xde\xdf\xdf\x5f\ +\xc1\x18\xcb\x5c\x2e\xf7\xc6\x71\x9c\xc8\xc4\xc4\x44\x05\x63\x5c\ +\xa7\x94\x8a\xe6\x17\xee\x1f\x11\x63\x5c\x1e\x1c\x1c\xbc\xcb\x66\ +\xb3\x86\x6d\xdb\x1d\x9b\x9b\x9b\xaf\x01\x00\x4c\xd3\x04\xcb\xb2\ +\x2a\x89\x44\xa2\xe4\x38\x8e\x78\xf0\x46\xdf\xf7\x51\x23\xaa\xe7\ +\x79\xbe\xe7\x79\xb5\xd1\xd1\x51\x6d\x72\x72\xf2\xeb\xcd\xcd\x0d\ +\xb6\x6d\x5b\xe9\xe9\xe9\xf1\x11\x42\xbf\x6c\xdb\xae\x35\xbc\x00\ +\x00\xbe\xef\x3f\x04\x34\x44\x08\xa1\x84\x90\xef\x9a\xa6\x69\x9d\ +\x9d\x9d\xd8\xb6\xed\x3b\x21\x04\x87\x47\xf2\x7d\x1f\x29\x00\x70\ +\x59\x28\x14\xc2\xdd\xdd\xdd\xec\xb1\x81\x10\x42\x01\x80\x3e\xae\ +\x03\x00\x14\x8b\xc5\x36\x00\xb8\x54\x42\xa1\xd0\xea\xfe\xfe\xfe\ +\x67\x21\x44\xec\x5f\xc6\xff\xa9\xb5\xb5\xf5\x32\x1c\x0e\xaf\xfe\ +\x06\x47\x78\x84\x8a\xac\x27\x36\x0e\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x03\x30\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ +\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\x4d\x00\x00\x0e\x9c\ +\x01\xde\xf6\x9c\x57\x00\x00\x02\xd2\x49\x44\x41\x54\x38\x8d\x6d\ +\x93\x4d\x68\x5c\x55\x14\x80\xbf\x73\xdf\x9b\xe9\xc4\x21\xcc\x4c\ +\x4c\xc6\x2a\x22\xb6\xa9\x93\x44\x0c\xa3\x62\xc1\x2c\x14\x9d\xd2\ +\x12\x35\x85\x52\x5a\x11\x6c\xa5\x1b\x71\x57\xe8\xce\xc5\x74\x37\ +\x82\x2e\xa5\x4b\x05\xcb\x20\xc6\x45\xdd\x48\x4a\xf0\x27\xf1\x07\ +\x69\xa4\x86\xc2\x98\xd0\xc4\x50\x14\x1a\x4d\x9b\x57\xf3\x63\xe0\ +\xbd\xe4\xdd\xf7\xee\xbd\x2e\x06\xa7\xb1\x7a\x56\xe7\x1c\x38\x1f\ +\x87\xc3\x77\x84\x7b\x62\x69\x69\xc9\x69\xad\xef\x6d\x03\x90\xcd\ +\x66\xa9\x54\x2a\xb2\xbb\xe7\xef\x2e\x5a\xad\x96\xdb\xba\xd0\xc0\ +\x9f\xbe\x8c\x12\xc1\xcb\x08\xce\x82\xb5\x0e\xa7\x1c\x5b\xcf\x8f\ +\xd1\x6a\xb5\x5c\xb5\x5a\xed\x40\x3a\xc9\xcc\xcc\x8c\x53\xcd\x0b\ +\xdc\xf7\xed\x57\x78\x22\x74\xed\xf5\x31\xeb\x16\x44\xf0\xef\x57\ +\x6c\xdf\x4a\x30\xc6\x12\xd5\x0e\x63\x4e\x9f\x65\x64\x64\x44\x3a\ +\x80\xe9\xe9\x69\xe7\x35\x3f\xa0\x77\x76\x8a\x6c\xc6\xc3\xf7\x05\ +\x3f\xeb\xa1\x3c\x01\x0b\x56\x1c\x26\xb5\x24\x3b\x16\x9d\x1a\xd6\ +\x0e\x1e\x22\x3d\xf5\x26\xb5\x5a\x4d\x64\x62\x62\xc2\x75\x7d\xfa\ +\x11\xe5\xab\xdf\xb3\x99\x11\x36\x8d\x63\xef\x9e\x0c\x7b\xba\x3d\ +\x82\x6d\x8b\x00\xbd\x5d\x42\x12\x59\x56\xa2\x04\x8b\xa3\x94\x3a\ +\xf4\xb3\x2f\x12\xbf\x76\x06\x15\x04\x01\x3d\x3f\x7c\x83\x38\x21\ +\x1e\x3d\xc6\xd8\x42\xc0\xce\xcb\x27\x59\x13\xc7\xa1\xd9\xdf\x79\ +\xe1\xc7\xdf\x28\xbc\x7b\x91\x2b\x5b\x09\x47\x17\x02\x8e\xce\xdf\ +\x22\x7f\xfe\x3d\xf4\x77\x5f\xb3\xba\xba\x8a\x0a\xc3\x10\x25\xa0\ +\xb2\x42\xe1\xf1\xa7\xd8\xd9\xdc\xa0\xfb\x89\x2a\x6e\xbb\x7d\x9e\ +\xcf\xde\x38\xc6\xc3\x07\x9f\x23\xdf\xdf\x0f\xc0\xf8\xe9\x93\x3c\ +\xfd\xfa\x19\x36\x4a\xbd\x84\x61\xd8\x06\x58\x0b\x6b\x91\xa1\x6f\ +\xb8\x4a\xeb\xd2\x38\xbd\x83\xc3\xfc\xa9\x0c\x69\x9a\xf2\xcc\x5b\ +\xe7\xb8\x73\x63\x91\x70\xf9\x0f\xd2\x34\x25\xd7\x53\x20\x35\x06\ +\x67\xcc\x5d\x80\x01\xee\x28\x45\x71\x7f\x85\x6b\x1f\x5f\xa4\x7b\ +\x5f\x3f\xb7\xb7\x1c\x71\x1c\xb3\x7c\x6d\x96\x5c\xdf\x83\xa8\x62\ +\x81\x38\x8e\x39\xf2\xce\xfb\xfc\xd4\xfc\x90\xe2\xe6\x3a\x51\x14\ +\xe1\x87\x61\x48\x92\x18\xa2\x47\x2b\x58\xa5\x38\xde\xbc\x84\x01\ +\x72\xfb\x0f\xa0\xb5\xe6\xe7\x4f\x9a\x0c\xbe\x7a\x0a\x3f\x5f\x44\ +\x6b\xcd\xf8\x93\xfb\x18\x44\xe8\x43\xda\x1b\x44\x51\x84\x4e\x0c\ +\xde\xc0\x10\x2b\x73\x2d\xa6\xce\xbf\xcd\xed\xeb\xf3\x94\x2a\x43\ +\x68\xad\x39\xf1\xf9\x14\x37\xaf\x5e\x61\xe3\xfa\x3c\x5a\x6b\x4a\ +\x0a\xf2\x16\x92\x24\x25\x8a\x22\xa4\x5e\xaf\xbb\x07\xa6\x26\xc9\ +\x2d\x2d\xe0\x7b\x8a\x03\x39\x9f\x65\xe7\x40\x14\x4a\xb5\x45\xe9\ +\x51\x0a\x27\x8e\x20\x4a\x29\x88\xa3\xa8\x60\xee\x91\x01\x56\x6a\ +\xa3\x6d\x91\xea\xf5\xba\x2b\x7f\x39\x49\x75\xe5\x17\x24\x01\x25\ +\x42\xae\xe0\x63\x22\x07\x80\x97\x17\xe2\xbf\x0c\xd6\x39\x5c\xc6\ +\xd1\x7a\x68\x80\xd5\xc3\x2f\xd1\x68\x34\xa4\xa3\x72\xbd\x5e\x77\ +\xe5\x2f\x2e\x33\xf8\xeb\x02\x9e\x08\xa2\xa4\x6d\xa2\x03\xac\xc3\ +\xe2\x48\x8d\x63\xb1\x7f\x88\xe0\xc8\x2b\x34\x1a\x8d\xbb\x2a\xef\ +\x86\x94\x26\x27\x78\x6c\x71\x0e\x2f\xeb\xe1\x2c\xe0\x40\x7c\x30\ +\xb1\xe1\xc6\xd0\x30\xeb\xa3\x63\x9d\xe1\xff\x00\xfe\x81\x04\x41\ +\xf0\xbf\xef\x5c\x2e\x97\xff\x35\x0c\xf0\x37\x5c\xfc\x53\xd5\x3a\ +\x96\xb0\xec\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x4a\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ +\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\ +\x01\x42\x28\x9b\x78\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ +\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x01\xc7\x49\x44\ +\x41\x54\x38\x8d\xa5\x93\xcd\x6a\x1a\x61\x14\x86\x1f\x33\x0e\x05\ +\x4d\x47\xda\x88\x64\x53\x14\x83\x43\x76\xc6\x95\x4c\x5d\xb9\x33\ +\x05\x17\xdd\x64\x99\x45\x2e\x20\xbd\x82\x76\x51\x7a\x03\xbd\x82\ +\x76\x93\x95\x0c\x82\x8b\xe2\x76\x32\xe8\x6a\x04\x85\x04\xa2\xd0\ +\xa2\x14\x84\x80\xc5\x9f\x5a\xb5\xf0\xa5\xa7\x1b\x2d\x93\xa1\x29\ +\x14\x0f\x9c\xcd\x39\xe7\x79\x39\x3f\xdf\x17\x12\x11\xb6\xb1\x9d\ +\xad\xe8\x07\x04\x12\x40\x1a\x88\xfa\x62\x51\xe0\x60\x9d\xfb\xa7\ +\xc0\x7e\x3e\x9f\x3f\xd6\x75\xfd\xa3\x6d\xdb\xe6\x1a\x8c\xda\xb6\ +\x6d\xea\xba\xfe\x21\x9f\xcf\x1f\x03\xfb\xf7\x08\x11\xd9\x78\xc2\ +\xb2\xac\x53\xa0\x0b\x5c\x69\x9a\x76\x59\xad\x56\x8f\xaa\xd5\xea\ +\x91\xa6\x69\x97\xc0\x15\xd0\xb5\x2c\xeb\x54\x44\x12\x1b\x2e\xe4\ +\x5b\x62\x3a\x95\x4a\xbd\x1f\x0c\x06\x4f\x00\x01\x1e\x85\xc3\xe1\ +\x39\x80\x52\x6a\x17\xf8\x09\x84\x92\xc9\xe4\xb8\xdf\xef\xbf\x02\ +\xbe\x04\x47\xb8\xf5\x3c\xef\x22\x93\xc9\x5c\x03\x0b\x60\xac\x94\ +\xd2\x94\x52\x1a\x30\x06\x16\x99\x4c\xe6\xda\xf3\xbc\x0b\xe0\x76\ +\x03\x85\x02\x67\x34\x46\xa3\xd1\x8b\x42\xa1\xf0\xbc\xd7\xeb\x3d\ +\xf3\x27\x4c\xd3\xfc\xda\x68\x34\x9a\xf1\x78\xfc\x13\x30\x7b\x68\ +\x89\x77\xad\x56\xab\xb7\x5c\x2e\xf7\xd6\x5d\xfc\xf1\xd5\x6a\xf5\ +\xb4\xdd\x6e\x77\x81\x3b\x3f\xe0\xef\x20\x5a\xaf\xd7\x0f\xca\xe5\ +\xf2\x6b\xa5\x94\x02\xe6\x01\xf1\x5d\x5d\xd7\xb5\x5a\xad\xf6\xae\ +\x54\x2a\x7d\x06\x7e\x04\x05\xd2\xb1\x58\xec\xcd\x6c\x36\xfb\x05\ +\x7c\x07\xc8\x66\xb3\xdf\x00\x3a\x9d\xce\xde\xba\xe6\xb1\x61\x18\ +\x3b\xd3\xe9\xf4\xed\xdf\x96\x38\xaf\x54\x2a\xcd\x48\x24\x32\x04\ +\x16\xb9\x5c\x6e\xe8\x38\xce\x8d\xe3\x38\x37\xb9\x5c\x6e\x08\x2c\ +\x22\x91\xc8\xb0\x52\xa9\x34\xef\x75\xe7\x7b\x07\x88\xc8\xa1\xeb\ +\xba\x67\xc5\x62\xf1\x7c\x32\x99\x9c\x88\x88\x21\x22\xc6\x64\x32\ +\x39\x29\x16\x8b\xe7\xae\xeb\x9e\x89\xc8\xa1\x9f\x09\x0a\x20\x22\ +\xa6\x88\xbc\x5c\xc3\x9b\x98\xb1\x8e\x99\xc1\xfa\xe0\x19\xff\xdb\ +\xb6\xfe\x8d\xbf\x01\x7c\x52\x08\x38\x8e\xd7\x1d\xc8\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x73\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ +\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\ +\x01\x42\x28\x9b\x78\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ +\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x01\xf0\x49\x44\ +\x41\x54\x38\x8d\xa5\x92\x4f\x6b\x1a\x61\x10\xc6\x7f\xae\x8a\x55\ +\x8a\xed\xcd\x20\x14\xb2\x87\x88\x87\x42\x4d\x3c\x49\x3d\xec\x25\ +\x64\x03\x7b\xc9\xc1\xdc\x3c\xf5\xb0\xb7\xc6\x9b\x5f\x20\x1f\x40\ +\xea\xb9\x9f\xc0\xe0\xa9\x37\x21\x14\x12\x59\x58\xd8\x84\x42\xa1\ +\xe0\x69\x89\x60\x4c\x2f\x49\xb5\xa8\xc4\x3f\xd3\x43\xde\xb5\x26\ +\x48\x28\x74\xe0\x85\x79\x67\x9e\x79\x98\x99\x67\x42\x22\xc2\xff\ +\x58\xe4\x99\x5c\x1a\x78\xa9\xfc\xdf\x40\x6f\x2d\x4a\x44\x56\xdf\ +\x2b\x11\xd1\x45\x24\x6d\x59\xd6\x01\x70\x03\xdc\x58\x96\x75\x20\ +\x22\x69\x11\xd9\x54\x98\x65\xcd\xa3\x62\xdb\xb6\x77\x43\xa1\x90\ +\x97\x4a\xa5\x8e\x63\xb1\xd8\x09\x70\x09\x5c\xc6\x62\xb1\x93\x54\ +\x2a\x75\x1c\x0e\x87\x1d\xdb\xb6\x77\x57\x49\x42\x2b\x3b\xd8\x8c\ +\x46\xa3\x9f\x67\xb3\x59\x52\xb5\x3e\x01\xc6\x2a\x17\x07\x5e\x00\ +\xa3\x48\x24\x72\x37\x9d\x4e\x3f\x00\x3e\x80\xb6\x32\xcd\x7d\xb9\ +\x5c\xfe\x02\x0c\x81\x6b\xe0\x56\x91\x4c\x94\x7f\x0d\xfc\x52\x98\ +\xfb\xa7\x4b\x4c\x97\x4a\xa5\x9d\x56\xab\xb5\xa5\x0a\x48\x26\x93\ +\x77\x95\x4a\xe5\x1b\x40\xad\x56\x7b\x37\x18\x0c\x5e\x03\x34\x9b\ +\xcd\xad\xe1\x70\xb8\xd3\x68\x34\x00\x7a\xc1\xfc\x19\xe0\x02\x68\ +\x01\x4d\xa0\x59\xad\x56\x8f\x44\x64\x5b\x44\xb6\xab\xd5\xea\x51\ +\x10\x57\x98\x0b\x11\xc9\x88\xc8\x5f\x19\x35\x4d\xfb\xb1\x58\x2c\ +\x42\xc1\xbf\xdd\x6e\x0f\x80\xfe\x8a\x3f\x51\xa9\x89\xa6\x69\x3f\ +\x97\x75\x81\xce\xae\xeb\x9e\x19\x86\xd1\x09\xe6\x76\x1c\x67\x5f\ +\xd7\xf5\x43\x5d\xd7\x0f\x1d\xc7\xd9\x0f\xe2\x86\x61\x74\x5c\xd7\ +\x3d\x53\xb7\xb1\x24\xe8\xe5\xf3\xf9\xd3\x6c\x36\x7b\x15\x00\xe7\ +\xf3\xf9\xc0\xf7\xfd\x3d\xdf\xf7\xf7\xe6\xf3\x79\xd0\xc1\x24\x9b\ +\xcd\x5e\xe5\xf3\xf9\x53\xd4\x61\x3d\x92\x31\x91\x48\x7c\x1c\x8f\ +\x03\xe5\xd6\x5b\x3c\x1e\x67\x34\x1a\x7d\x62\x8d\x8c\xb7\x9e\xe7\ +\xb9\xb9\x5c\xae\x5f\xaf\xd7\x3b\xa6\x69\x76\x79\xb8\x83\xb1\x69\ +\x9a\xdd\x7a\xbd\xde\xc9\xe5\x72\x7d\xcf\xf3\x5c\x1e\x64\xe5\x69\ +\x07\x00\x1b\xc0\x7b\xa0\xeb\x38\x4e\xba\x58\x2c\xbe\x05\x38\x3f\ +\x3f\xff\x5e\x28\x14\x7a\xc0\x1b\xa0\x1d\x2c\x77\x1d\xc1\xaa\x65\ +\x00\x43\xf9\x5f\x81\xce\x3a\xd0\x73\x04\xff\x64\x7f\x00\x19\x1e\ +\x09\x5d\x0e\xd9\xff\x6d\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ +\x00\x00\x03\xb1\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\x1b\xaf\x01\x5e\x1a\ +\x91\x1c\x00\x00\x03\x56\x49\x44\x41\x54\x48\xc7\xdd\x95\x4d\x68\ +\x5c\x55\x14\xc7\x7f\xf7\xe3\xbd\x97\xe9\x34\x69\x5a\x93\x60\xdb\ +\x80\x60\xc1\x12\x9a\x20\x0d\x49\x88\x50\xca\x43\xbb\x70\x93\x85\ +\x62\x41\x2b\xea\x42\xb0\xb8\xb2\x20\x08\x6e\x64\xd0\x55\x4b\x2d\ +\x48\x37\x22\x48\x10\x8c\x20\xba\x09\x45\xa4\x12\xe2\x98\x8a\x29\ +\x1a\xa4\x92\x6a\x6d\x4a\x9b\xb4\x19\x9d\x98\xc4\xb1\xd3\x99\x79\ +\xf3\xde\x9b\xf7\xee\x75\x51\x2c\xe4\x63\x31\xc1\x6e\xf4\xec\xee\ +\xc7\x39\xbf\x7b\xee\xb9\xff\x73\xe1\xbf\x6e\xa2\x99\x4d\xfd\x9f\ +\x3e\xd4\xff\xdc\x23\x2f\x7d\x38\xbe\xf0\xc9\xa3\x8e\x94\xc1\xc1\ +\xae\xc1\xc9\xa1\xae\x43\x6f\x3c\xbb\xef\xd5\x5f\xb7\x04\xc8\xe7\ +\xf3\x76\xb3\x4d\x1f\x94\x4f\xf3\xee\x91\xf7\x99\x2d\xcd\x90\xda\ +\x98\x30\x89\x28\xdd\x5e\x65\xdf\x9d\x83\x9b\x06\xf5\x7d\xff\x5e\ +\x5c\xbd\x7e\x31\x9f\xcf\x6f\x70\xb8\xb6\x67\x8e\x6f\x0a\x13\x74\ +\x74\x08\x04\x29\x5e\xb5\x8d\xc9\xf9\x2f\x58\x9c\x2d\x6f\x16\x7c\ +\xcd\x58\x6f\x76\x82\x5c\x2e\xb7\x26\xb3\x87\x3f\xda\xf5\x43\x6c\ +\xa2\x81\xdf\x6a\xab\x08\x04\xd9\x44\x33\x2f\xaf\xce\x8c\xe5\x26\ +\x06\xd7\xf9\x6d\xb8\x01\xdd\x4c\x0d\x52\x63\x48\xad\x21\x6c\xc4\ +\x08\xa0\xc5\x1a\x8c\x69\xae\xc8\x4d\x01\x4c\x6a\x30\x58\x6a\x71\ +\x08\x08\xda\x74\x4a\x6a\xec\xfd\x03\x24\xc6\x24\xc6\x1a\xea\xc9\ +\xdd\x0c\x8c\x34\x24\xa9\x49\xb6\x04\x38\x3b\x73\xb6\xb7\x20\x0b\ +\x9c\xeb\x3c\x07\xa7\xf9\xde\xd3\x5a\x68\x29\xd1\x52\x26\x89\xb1\ +\x7d\x49\x9a\x12\x36\x42\xa4\x10\xc4\x6e\x8c\xc5\xf6\x0d\x7e\xde\ +\x3d\xed\x69\xad\x1d\xad\xd0\x12\xbb\xcc\x4f\xd4\xf6\xec\x67\xa2\ +\xf8\x59\xcf\x91\xdd\x47\xaf\xac\x01\xcc\xfd\x39\xf7\xde\xa9\xc7\ +\x4f\x51\x11\x65\x8e\xc6\x4f\x0f\x4a\x29\x11\xc2\x82\x00\x29\x04\ +\x59\x37\x63\x83\x30\x10\x00\x9e\xf2\xec\xf1\xde\xd7\xb3\x4a\xa8\ +\x61\x29\x24\x5a\x2a\xb6\x39\x59\xb6\xeb\xed\x34\x08\xf8\xea\xd6\ +\xd8\x3b\xc0\x33\x6b\x00\xa3\x97\x46\x87\x0f\x74\xf4\x70\xa3\x72\ +\x85\x62\x58\x44\x6a\x85\x52\xa0\x94\x44\x0b\xc9\x5c\x60\x44\xc3\ +\x84\x48\x01\xd3\x2b\x93\x42\x0b\x05\x48\x5a\x9d\x76\x8c\x51\xfc\ +\xb2\x74\x8d\x1b\xc5\x45\x5e\x1c\x1a\x61\x29\x28\x3c\xb9\xe1\x8a\ +\x82\x28\xb0\x97\x57\x7e\x26\x30\x65\x6a\x69\x1d\x65\x25\xca\x48\ +\x1c\xa3\x70\xd4\xdd\x6c\x94\x54\x78\xca\xa3\x45\xb5\xa0\x71\xa9\ +\xc4\x55\xbe\xfb\xe3\x22\xf3\xa5\x5b\x54\xc2\x90\xac\x69\xa7\xd6\ +\xa8\xd2\x30\xe9\xc6\x1a\x58\x63\xc7\xa7\x16\x2e\x1c\xeb\xe9\xec\ +\xc1\x53\x6d\x68\xa9\xf0\x94\x8b\x87\x8b\x46\xd1\xea\x64\xec\xc5\ +\xe5\xf3\xc2\xca\x98\xa1\xce\x27\x6c\x10\xd7\x85\x12\x9a\xbe\x07\ +\x0e\xd0\xb7\xab\x17\x8b\xc5\x95\x8a\x42\x78\x95\xc4\xa4\xe3\x9b\ +\x01\x4e\x64\xa2\xcc\xb1\xa9\xcb\x53\x14\xdd\xe2\x0c\x02\x90\x20\ +\x24\x89\xab\x54\xdf\x53\xfb\x47\xb2\x5a\x5b\x32\x6e\x96\xdb\xf5\ +\xbf\xc4\x97\x0b\xe7\x6b\x9e\x23\x67\x5d\xa5\xb4\xab\x14\xae\xd6\ +\xec\x8c\x3a\x06\xba\xdb\xbb\x89\x68\x9c\xd8\xf8\x4c\xdf\x66\xe5\ +\x64\xfe\x24\xf9\x7c\x9e\xdc\x9b\xb9\x7b\x0a\xb5\x80\x39\x63\xa7\ +\x83\x24\x18\xd6\x8e\xc4\xd3\x92\xba\x09\x48\x4c\x32\x7b\xf3\x85\ +\xca\x63\x6b\x95\xfc\xb2\xf5\x7d\x1f\xdf\xf7\x57\xfe\x99\x93\x4d\ +\x29\xd9\xa2\xab\x71\x15\x8b\x45\x29\x41\x64\x42\x52\xd3\x9c\x86\ +\x9a\x53\xb2\x35\x54\xa2\x0a\xa9\x13\x92\x71\x15\x51\x5c\x25\x69\ +\xb2\x57\x34\x05\xc0\xc0\x6a\xbd\x8c\x67\x22\xea\x8d\x06\x36\x89\ +\x48\xed\xbf\x00\xac\xef\x8a\x1f\xcb\x51\x5c\x62\x16\x4b\x15\x56\ +\x74\x8d\xbd\xdb\xba\xd9\x5b\xef\x1e\x78\x2d\xf7\xbc\xdd\x32\x60\ +\x7d\x3f\x07\x98\x5b\xfe\x1a\xe9\x2d\xb2\x50\x2d\x61\x52\x4d\x97\ +\xde\x8d\xd3\xea\xe0\xf7\xfb\xf7\xe7\xcb\x1c\x19\x7b\xf0\xd0\x1d\ +\xd4\x99\x0b\x4b\xbf\x0f\xb4\x7b\x3b\xea\x87\x77\x1e\xfe\xf6\xd2\ +\xf5\x1f\x5f\x59\x78\xab\x70\x93\xff\xbd\xfd\x0d\xf6\xbd\x75\x1d\ +\x3b\xea\x7e\x89\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\ +\x00\x00\x04\x7f\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ +\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\x1b\xaf\x01\ +\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x01\x0a\ +\x17\x02\x30\xf6\x73\x58\xfb\x00\x00\x03\xff\x49\x44\x41\x54\x48\ +\xc7\xbd\x95\x6b\x4c\x9b\x75\x14\xc6\x9f\xb7\xd7\xc1\xe8\xe8\xca\ +\x66\x3b\x4a\xc9\x80\x7a\x03\x5a\xca\x8c\x81\x99\x60\x5e\x37\x2e\ +\x92\x2c\xd9\x07\x2c\x4a\xe4\x36\x32\x34\xc6\x84\x0c\xe2\x40\x12\ +\x63\x5f\xb2\xa8\x89\x41\xe2\x52\xd6\x80\x51\xc1\x38\xa5\xc8\x75\ +\x1b\x42\x3b\x88\x62\x59\x02\x6c\x0c\x07\x04\x4a\xe2\x56\x20\x8b\ +\x5c\x02\x65\xa9\xb6\x89\xbc\x57\xbf\xa0\x21\x0a\x8c\x6e\xd1\xf3\ +\xf9\x7f\xce\xef\xfc\x9f\x73\x9e\x1c\xe0\x3f\x0e\xe2\x51\xf3\x2a\ +\x2a\x2a\x4c\x99\x99\x99\x65\xa1\xa1\xa1\xa9\x1c\xcf\xc9\xfc\x7e\ +\xdf\xdd\x55\xef\x5a\x6b\x6d\x4f\xdd\xe5\x99\xb6\x19\xfa\xb1\x9a\ +\xb2\x58\xde\x2b\x59\x5c\x5a\xa4\x39\x8e\x15\x7c\x3e\x9f\x30\x37\ +\x3f\x27\xdc\x1e\x1f\x13\x3a\x3a\xdb\xf8\x8a\x77\xce\x59\x01\x48\ +\xfe\x7a\x2c\xd9\x9a\x39\x38\x38\x28\x3c\xac\x7a\x4d\x4d\x8d\x3e\ +\xf5\xf8\x0b\xf5\x52\xa9\x54\xca\x32\x1c\xc4\x12\x31\x5a\xed\x76\ +\xbe\xa3\xa3\xc3\x73\xe7\xce\x44\x0f\xc3\x30\x76\x00\xc2\xb6\x80\ +\x4d\xc8\xae\x00\x85\x62\xff\xe9\xf0\x70\x45\x08\xc7\x71\x60\x58\ +\x1a\x04\x41\xa0\xb7\xcf\xf1\xf5\xad\x5b\x63\xd5\x14\x45\x2d\x92\ +\x24\x79\x8e\x24\x49\x62\x47\x00\x00\x50\x14\xb5\xd3\x6c\xc4\x45\ +\x45\xf9\x76\x8f\x67\x1e\x31\x31\x7a\x30\x0c\x03\x91\x58\x8c\x23\ +\x1a\x8d\x1b\xc0\xf2\x76\x09\xa2\x20\xf5\x0f\x79\x36\x3e\xe1\x79\ +\xb7\x7b\x06\x2c\xcb\x80\x65\x59\xb0\x0c\x8b\xc2\xc2\x82\xf4\xf8\ +\xf8\x78\xe9\xd6\xc6\xaa\xaa\xaa\xc2\x83\x06\xa4\xa5\xa5\x3d\xa5\ +\xd7\xc7\x45\x4b\xa5\x32\xb8\x67\xdc\x20\x08\x02\x2c\xcb\x20\x56\ +\x1f\x97\x5e\x5c\x5c\xd0\x5b\x56\x56\x16\xbd\xbc\x7c\xff\xb9\xeb\ +\xd7\x9d\x5f\x28\x0e\x84\x8d\x05\x0b\x20\x48\xf2\xc5\x53\x5a\xad\ +\x96\xd0\x6a\xb5\xe8\xec\xea\xc6\x47\x1f\xd7\x82\x65\x59\xec\x93\ +\xcb\x11\xa5\x8b\x3e\x19\xba\x3f\x64\x56\x1f\xf7\xcc\x58\x64\x64\ +\x64\xc9\x90\x6b\xe8\x41\xb0\x00\x79\xa2\xc1\x98\x73\xf7\xde\x1c\ +\x3a\xbb\x7b\x60\x3a\x76\x0c\x3d\x0e\x07\x26\xa7\xa6\x00\x01\xd0\ +\xe9\x74\x08\x0b\x0b\x0b\x91\xed\x93\x11\x23\xa3\xa3\x6c\x7f\xff\ +\x40\x4b\x30\x00\x82\xa2\xde\x37\x27\x9b\x4c\x46\x43\x42\x02\x7e\ +\x5d\x5a\x82\x58\x24\x42\x6c\x4c\x0c\x5a\xdb\xdb\xc1\xf3\x3c\x94\ +\x4a\x25\x08\x82\xc0\xac\x7b\x56\xa8\xae\xac\x76\xf2\x3c\xdf\xb2\ +\xe3\x16\xfd\xb3\xb8\xcd\x66\xcd\x4b\x49\x39\xde\xb8\xb2\xb2\x02\ +\x83\xc1\x80\xec\xac\x0c\xf4\x3a\x1c\x38\x1a\xa5\x85\x29\xc9\x08\ +\x99\x5c\x86\xd5\xd5\x15\xac\x7b\xd7\x99\xd7\x2d\xf9\xdf\x33\x0c\ +\x53\x0d\x60\x05\xdb\x78\x40\xa0\x28\xea\x6f\x93\x98\xcd\x66\x71\ +\x73\xf3\x97\x96\xcb\xdf\x7e\xc3\x65\x65\x65\x09\x29\xa9\x29\x82\ +\xcb\xe5\x12\x3c\x9e\x7b\xc2\x8f\x83\x3f\x70\x79\x79\xaf\xfd\xf6\ +\x12\x49\xce\x91\x24\xe9\x12\x8b\xc5\x56\x00\x85\x9b\x66\xdd\xdd\ +\x07\x00\x50\x52\x52\xa2\x38\x91\x71\xa2\x69\x7a\x6a\x3a\xc7\xe9\ +\x74\x22\x42\x15\x01\x9d\x2e\x1a\x6a\x8d\x9a\xbf\x74\xc9\x76\xd3\ +\x6a\xb5\x5e\xa3\x69\xfa\x36\x80\x39\x00\x6b\x00\xfc\x14\x45\x6d\ +\x6c\xa6\x0b\xbb\x02\xca\xcb\xcb\xf5\xa6\x64\x43\x47\x5b\xeb\x77\ +\xc6\xf1\xf1\x9f\xa1\x52\xa9\xc0\xb2\x2c\xce\x14\x17\x09\x36\x9b\ +\xad\xeb\xe2\xa7\x17\x2b\x01\x2c\x00\xe0\x1e\xa6\xef\xbf\x00\x7e\ +\xbf\x2f\xfb\xc9\xa7\xe3\x46\x6c\xb6\x86\x88\xf9\xf9\x05\x48\xa4\ +\x12\xd0\x34\x8d\x97\xb3\xb3\x30\x39\x39\xe5\xda\x2c\xee\xd9\xeb\ +\xea\x6d\x05\x48\xaf\x5e\xed\xae\x3e\xac\x3e\x7c\xad\xa1\xe1\x33\ +\xc9\xda\xaa\x17\x22\x91\x08\x1c\xcb\x21\x29\x39\x09\xaa\x83\xaa\ +\x5f\x4a\x4b\xdf\x38\xbf\x29\x09\x82\x02\xe8\xf5\x7a\x79\xd1\x99\ +\xfc\x7a\xb5\x5a\x73\x76\x7a\x7a\x1a\x07\x14\x0a\xd0\x1b\x34\x02\ +\x81\x00\xa2\xa2\xa2\x90\x71\x32\xdd\x5b\x79\xbe\xaa\x12\xc0\xf8\ +\x56\x7d\xf7\x12\x22\x00\x78\xf3\xad\xd2\x2a\x8e\xe3\x72\x9b\x9a\ +\xbf\x7a\xd7\xbb\xfe\xe0\x15\xf3\xab\xe6\xfb\x4a\xa5\x12\x5a\xad\ +\x16\xc5\xc5\x85\x1b\x9f\xd4\xd6\x7d\xe0\xf5\x7a\xfb\xf6\xa2\xf9\ +\xb6\x3f\x38\x14\x71\xc8\x7c\xa5\xeb\xca\xcd\xe1\x1b\xc3\x8d\xc3\ +\x37\x86\x7d\x26\x43\x82\xc6\x68\x34\xd4\x27\x1a\x12\x79\x7b\x8b\ +\xfd\xf3\xdc\xdc\xdc\x3a\x00\x75\x8f\x72\x9d\x24\x00\x20\x97\xcb\ +\x7e\x57\x1f\xd1\xa8\x01\xa8\x01\xf8\xff\x60\x99\x27\x92\x93\x93\ +\x04\x47\x9f\xa3\xdb\x62\xa9\x79\xfb\xb1\x6f\x72\x63\xa3\xad\x20\ +\xfc\x60\x78\xd3\xe8\xc8\xe8\x08\x41\x10\x0b\x31\xb1\x47\x73\x7e\ +\x1a\x1c\xea\x6f\x6f\xeb\x2c\x0b\x76\xa8\x3b\x1d\x7d\xd1\x85\x0f\ +\x2f\x14\x31\x0c\x7d\x36\x10\x08\x10\x13\x13\x93\x3d\x03\xce\x81\ +\x66\x00\x4b\xc1\x0e\xf5\x7f\x8f\x3f\x01\x2e\x51\xa3\xa9\xc7\xde\ +\x69\x7b\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x20\x26\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ +\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ +\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x02\x15\ +\x0e\x23\x2f\xab\xc9\xe5\x0b\x00\x00\x00\x1d\x69\x54\x58\x74\x43\ +\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x43\x72\x65\x61\x74\ +\x65\x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x64\x2e\x65\x07\ +\x00\x00\x1f\x7d\x49\x44\x41\x54\x78\xda\xcd\x9b\x69\x90\x5d\xd7\ +\x71\xdf\x7f\x7d\xee\xfa\x96\xd9\x07\xc4\x00\x33\x18\x02\x03\xae\ +\x22\x45\x53\x0b\x25\xd2\x91\x44\x53\x8a\x2d\x89\x91\x17\xad\xa4\ +\x2c\x5b\x52\x12\xc9\xf1\x56\x72\xca\xa9\xe4\x4b\x2a\x1f\x52\x89\ +\xbf\x38\x49\x39\x72\xe2\x4d\x92\x63\x4b\xb1\x55\x12\x4d\x49\xb4\ +\xc5\x45\x24\x41\x10\xa0\x44\x09\x80\x28\x42\x22\x41\x12\xfb\x3a\ +\x33\x00\x66\x06\xb3\xbf\xed\xde\x7b\x4e\xe7\xc3\xb9\x6f\x30\x00\ +\x41\xed\x76\xe5\x56\xdd\x79\x6f\xee\xf6\x4e\xf7\xe9\xfe\x77\xf7\ +\xff\xf4\x85\x1f\x73\x7b\xf1\xc5\x17\xf9\xff\x65\xfb\x49\xc6\x12\ +\xfe\x34\x06\x70\xe0\xc0\x81\xde\x9e\x9e\x9e\x9f\x37\xc6\xbc\x4e\ +\x44\x7a\x01\xfb\x8f\x24\x6b\xa0\xaa\xcb\xce\xb9\xef\xac\xac\xac\ +\x3c\x7e\xf3\xcd\x37\x2f\xff\xa4\x0f\x94\x1f\xe7\xa6\x3d\x7b\xf6\ +\x70\xfb\xed\xb7\x03\xf0\xf5\xaf\x7f\xbd\x32\x3a\x3a\x7a\x6f\xad\ +\x56\xfb\x70\x14\x45\x37\x1b\x63\x22\x40\x45\x04\x91\x2b\x3f\xfe\ +\xf2\xe3\xaa\xfa\x8a\xbf\xa5\xaa\xeb\xcf\x8b\x73\x2e\xcf\xf3\xfc\ +\x40\xa3\xd1\xf8\xdc\xd4\xd4\xd4\x17\xde\xfc\xe6\x37\xb7\x2e\x1f\ +\xd3\x3f\xea\xf6\xe0\x83\x0f\xae\x7d\x7f\xe0\x81\x07\x92\xe3\xc7\ +\x8f\x7f\xe8\xdc\xb9\x73\xdf\x5c\x5c\x5c\x6c\xaf\x36\x1a\xda\x6c\ +\xb5\xb4\xd5\x6e\x6b\xbb\xd3\xd1\x4e\xb9\x67\x59\xe6\xf7\x3c\xd7\ +\x2c\xcf\x35\xcf\x73\x2d\x8a\x42\xf3\xa2\xf0\x9f\xeb\x8e\x67\x79\ +\xbe\x76\x7d\xa7\xd3\xd1\x76\xbb\xad\xad\x56\x4b\x5b\xad\x96\x36\ +\x5b\x2d\x5d\x5d\x5d\xd5\x85\x85\x85\xf6\xb9\x73\xe7\xbe\x79\xfc\ +\xf8\xf1\x0f\x3d\xf0\xc0\x03\xc9\x95\xc6\xf6\x8f\xb2\xed\xd9\xb3\ +\x67\xed\xfb\xfd\xf7\xdf\x9f\x1e\x3e\x7c\xf8\xdd\xd3\xd3\xd3\x7b\ +\x16\x16\x16\x8a\x46\xa3\xa1\xed\x2c\xd3\x8e\xb5\x2e\x73\x4e\x73\ +\xa7\x5a\xa8\xdf\x6d\xb9\xbb\x72\xbf\xd2\xe6\xd6\xed\xdd\xeb\x0b\ +\x55\xcd\x55\x35\x73\x4e\x33\xe7\xb4\x63\xad\x6b\x67\x99\x36\x1a\ +\x0d\x5d\x58\x58\x28\xa6\xa7\xa7\xf7\x1c\x3e\x7c\xf8\xdd\xf7\xdf\ +\x7f\x7f\x7a\xa5\x31\xfe\x54\x5d\x60\xff\xfe\xfd\xbc\xe6\x35\xaf\ +\x01\x60\xe7\xce\x9d\xb5\xcd\x9b\x37\xbf\xa5\x5e\xaf\xff\xa7\x4a\ +\xb5\x7a\x47\x9a\x24\x88\x88\xae\x9c\x3c\xc1\xe2\xb1\xe3\x92\x35\ +\x56\x41\x04\xb8\xd4\x0d\x8c\xc8\xda\x2f\x0a\x82\x5e\xb4\x73\x7f\ +\x5c\x41\xfd\x1f\x7f\x4e\xb5\xbc\x46\x41\x95\xb8\x56\xa3\x6f\xfb\ +\x76\xed\xdd\xba\x0d\x55\x95\x76\xa7\x43\xab\xd9\xfc\xd6\xea\xea\ +\xea\x7f\x39\x7b\xf6\xec\x53\x77\xdd\x75\x57\xe3\xf2\xb1\xfe\x54\ +\x14\xf0\xdd\xef\x7e\x97\x5b\x6f\xbd\xb5\xeb\xf3\xf5\x91\x91\x91\ +\xb7\x56\xab\xd5\xff\x90\x56\x2a\xff\x2c\x89\x63\x44\x55\x57\xcf\ +\x9c\x91\x43\x9f\xfe\x33\x0e\xff\xcd\xe7\x58\x99\x5d\xea\xca\xb3\ +\xf6\xd9\xfd\x31\x53\xfe\xaf\x57\x18\x88\x00\xee\xb2\xeb\xd7\x3f\ +\xa3\x77\x43\x1f\xd7\xfe\xda\x87\xb9\xfe\xe3\xbf\x45\x6d\xcb\x16\ +\x45\x44\xda\xed\x36\xed\x76\xfb\xe9\x56\xab\xf5\x87\xe7\xcf\x9f\ +\xdf\xf9\xa6\x37\xbd\x69\xf5\xf2\x31\xff\xd8\x0a\x78\xee\xb9\xe7\ +\x00\xb8\xe5\x96\x5b\xba\xc2\xf7\x8c\x8c\x8c\xdc\x5d\xad\x56\x7f\ +\x2f\x4d\xd3\x3b\x92\x24\x51\x50\x56\x4f\x9d\x92\x83\x9f\xfe\x14\ +\x8b\x0f\xfd\x3d\x3d\x4b\x33\xf4\xd7\x13\x50\xc1\xb5\x1d\x61\xcd\ +\x80\x03\x2d\x20\x88\x04\x13\x09\xae\x50\x34\x57\x4c\xc5\x5b\x84\ +\x6d\x28\x26\x11\x24\x14\x5c\xee\x70\x05\x98\x00\x54\xa0\x58\x75\ +\x04\x55\x03\xa2\x2c\xae\x76\x58\xe9\xbb\x8a\xfe\xbb\x7f\x89\xeb\ +\x3f\xf6\x1b\xd4\xc7\xb7\xaa\x0a\x74\x3a\x1d\xe9\x74\x3a\xdf\x6a\ +\x36\x9b\x9f\x3c\x77\xee\xdc\xc3\x6f\x7e\xf3\x9b\x57\xae\x34\xfe\ +\x9f\x28\x0c\x3e\xf9\xe4\x93\x7d\x23\x23\x23\xbf\x52\xad\x56\xff\ +\x4d\x9a\xa6\x77\xc4\x71\x8c\x3a\xc7\xea\x99\xd3\x1c\xfa\xf4\x9f\ +\xb3\xf2\xe8\x57\xe9\x59\x9c\xa5\x1e\x45\x68\x0e\xa2\x10\x24\x01\ +\x61\x2a\xa0\x82\x6d\x39\xd4\x2a\xd6\x2a\x88\x60\x52\x83\xa9\x88\ +\x9f\xdd\x4c\xd1\x42\xa1\xf0\xf3\x6d\x22\x21\x48\x05\x54\x71\x99\ +\x57\x1e\x02\xf5\x20\x86\xc5\x39\x56\x1e\xff\x2a\x07\x51\xae\xff\ +\xd8\x6f\x52\x1f\x1f\x27\x8e\x63\x44\xe4\x0e\x11\x61\x64\x64\x24\ +\x7d\xf2\xc9\x27\x1f\xb8\xeb\xae\xbb\x96\x7e\x22\x17\x58\x6f\x42\ +\x4f\x3d\xf5\x54\xff\xe8\xe8\xe8\xfb\x2a\x95\xca\x47\x93\x24\xb9\ +\x2d\x8a\xe3\x58\x40\x9b\x53\x53\xf2\xe2\xff\xfa\x24\xab\x3b\x1e\ +\xa6\x67\x71\x81\x6a\x28\x84\x89\xc1\x84\x02\x4e\xd0\x8e\x12\xd6\ +\x0d\x58\x50\xab\x98\x48\x30\xa1\x17\xc8\x15\x8a\x49\xbd\xe1\xdb\ +\xa6\xc3\x24\x06\x13\x94\x16\x60\x15\x29\xa7\xa6\x68\x94\x96\x62\ +\x14\x97\x2b\x79\xe6\x68\x5a\x65\xa5\x67\x80\xfa\xdb\xee\xe6\x55\ +\x9f\xf8\x04\xd5\xd1\x31\x75\xaa\x92\x67\x59\x96\x65\xd9\xb7\x5b\ +\xad\xd6\x5f\x4f\x4d\x4d\xdd\xff\x96\xb7\xbc\x65\xf1\x07\xb9\x83\ +\xb9\xd2\xc1\xbd\x7b\xf7\xae\xdd\xb0\x7b\xf7\xee\xbe\x4d\x9b\x36\ +\xbd\x2f\x49\x92\x8f\xc4\x71\xfc\xda\x30\x0c\x63\x13\x04\xb4\x67\ +\xce\xf1\xfc\x27\xff\x88\x95\x47\x1e\xa2\x6f\x79\x81\x9a\x11\xa2\ +\xc0\x10\xc6\x86\xb0\x12\x78\x45\x58\x10\x27\x88\x13\x0c\x42\x18\ +\x1b\xa2\x6a\xf7\x9c\xc1\x38\x83\x71\x10\x60\x88\x12\x43\x54\xf3\ +\x0a\x0c\xf0\xe7\xc5\x09\xc6\xf9\xfb\xc2\x34\xf0\xf7\x07\x86\x2a\ +\x42\xef\xca\x02\x2b\x8f\x3e\xc4\x81\x4f\xfe\x11\xed\xf3\xe7\x08\ +\xc2\x80\x28\x8a\xe2\x38\x8e\x5f\x9b\x24\xc9\x47\x36\x6d\xda\xf4\ +\xbe\xdd\xbb\x77\xf7\x01\xdc\x7a\xeb\xad\xec\xdd\xbb\xf7\x87\xb3\ +\x80\xf5\x09\xc5\x13\x4f\x3c\xd1\x3b\x36\x36\xf6\x9e\x5a\xad\xf6\ +\xb1\x24\x49\x5e\x1b\x45\x51\x25\xae\x56\x59\x3a\x76\x4c\x5f\xf8\ +\xe3\xff\x29\xab\x0f\xfd\x03\xfd\xed\x15\xfa\x7a\x22\x0c\x7e\xd6\ +\x25\x10\x82\x48\xbc\xdf\xe7\x4a\x54\x37\xa8\x13\xef\xf3\x81\xf7\ +\x73\xb5\x0a\x0e\x4c\xd5\xc3\x9b\x6d\x80\x09\x81\x40\xd0\x42\x51\ +\xa7\x48\xe4\xcf\x15\x2b\x8a\x24\xa0\x06\x5c\xae\xa8\x55\x34\x00\ +\xe7\x1c\xcb\xab\x39\x8b\x69\x2f\xb5\x77\xfe\x22\x37\xfd\xde\xbf\ +\xd5\xde\xed\xdb\x25\x6b\x36\x29\xf2\xbc\xd5\xe9\x74\x9e\x6d\x34\ +\x1a\x9f\x99\x9c\x9c\xfc\xf2\xdb\xde\xf6\xb6\xe5\x57\x4a\x96\xcc\ +\xe5\x49\x4e\xf7\x82\xa7\x9f\x7e\xba\x3e\x3a\x3a\x7a\x77\xb5\x5a\ +\xfd\x8d\x24\x49\x6e\x8b\xa2\xa8\x12\x55\xab\xcc\x1f\x3c\xa8\x2f\ +\xfd\xe9\x9f\xc8\xfc\xfd\x5f\x64\xa0\xb9\x44\x5f\x35\x22\x4c\x02\ +\x82\xc4\x60\x8c\x60\x1c\x48\xe1\xf7\x30\x31\x84\xa9\x21\xaa\x08\ +\x41\x28\x88\x03\x32\x10\x2b\x04\x89\x10\x56\x84\x30\xed\x9e\x13\ +\x24\x53\xc4\x79\xb0\x8c\xaa\x42\x58\x09\x30\xdd\x73\x16\xc4\x82\ +\x09\x84\xa8\x62\x88\xd2\x80\xde\x34\x62\xa0\xb9\xc4\xfc\x97\xbf\ +\xc0\x4b\x7f\xf6\x27\x32\x7f\xf0\xa0\x46\x95\x0a\x61\x14\x55\x92\ +\x24\xb9\xad\x5a\xad\xfe\xc6\xe8\xe8\xe8\xdd\x4f\x3f\xfd\x74\x1d\ +\xe0\xf6\xdb\x6f\x7f\x59\xb2\xb4\xa6\x80\x1d\x3b\x76\xf0\xae\x77\ +\xbd\xab\x3b\xf3\xb5\xc1\xc1\xc1\xb7\x56\x2a\x95\x4f\x24\x49\x72\ +\x47\x18\x86\xb1\x09\x43\x96\x8e\x1e\xd5\x43\x9f\xfe\x94\x9c\xfb\ +\xec\xa7\xd9\x12\x5b\xfa\x7b\x52\x0c\x5e\x30\xb1\x42\x60\x84\x20\ +\x36\x04\xa9\x21\x48\x0c\x62\x05\xca\x3d\x10\xf1\xca\xa8\x1b\xc2\ +\x54\x10\xdb\xdd\x0d\x81\x7a\xd3\x8f\xea\x86\x30\x11\x8c\x0a\xe4\ +\xfe\xb9\xc6\x79\x25\x45\x15\xe3\x5d\x47\x04\x0a\x4a\xb7\x32\xf4\ +\xf7\x24\x6c\x49\x95\x73\x9f\xfd\x34\x47\x3e\xfd\x29\x59\x3a\x76\ +\x4c\x4d\x10\x10\x86\x61\x9c\x24\xc9\x1d\x95\x4a\xe5\x13\x83\x83\ +\x83\x6f\x7d\xe2\x89\x27\x6a\x00\xef\x7a\xd7\xbb\xd8\xb1\x63\xc7\ +\x45\x17\xd8\xbd\x7b\x37\x00\x77\xde\x79\x27\x00\xf7\xdd\x77\x5f\ +\x7a\xe3\x8d\x37\xbe\xb5\x56\xab\xfd\xc7\x4a\xa5\xf2\xb3\x69\x9a\ +\x02\x68\x7b\x76\x96\xe7\xff\xfb\xff\x90\xa5\xaf\x7c\x81\x2d\xa9\ +\xa3\xb7\x9e\xe0\x1c\xb8\x86\x62\x62\x81\x42\x08\x13\x21\xac\x1b\ +\x4c\x22\x60\xa1\x98\x71\x04\x35\x0f\x82\x12\x42\xd8\x13\x10\x54\ +\x05\xd7\x56\x8a\x79\x87\x24\x94\xb1\x4e\x09\x07\x0c\x92\x0a\xb6\ +\xa9\x14\xcb\x16\xb5\x20\x06\x6c\x1b\x82\x61\x41\x02\xc5\x76\x94\ +\x62\xc5\x61\x33\x07\x81\x0f\xa7\xa6\x06\xc6\x08\x4b\xab\x1d\xce\ +\xb4\x84\xbe\x77\xdf\xc3\xab\x7f\xff\xdf\x69\xb2\x61\x18\x10\xe9\ +\x74\x3a\xb4\x5a\xad\x6f\x36\x1a\x8d\x3f\x78\xe9\xa5\x97\x76\x7e\ +\xe0\x03\x1f\x68\x97\xd8\xc6\x9d\x77\xde\x79\x29\x06\x7c\xe6\x33\ +\x9f\x49\xde\xf0\x86\x37\xdc\x5d\xab\xd5\xfe\x7d\xa5\x52\xf1\x71\ +\x5e\x95\xd6\xb9\x73\xf2\xd2\xff\xfe\x24\xcd\x47\x1e\x62\xb0\xb9\ +\x44\x5f\x6f\xea\xfd\x59\x3d\xa2\x87\x35\x3f\xdb\x02\x98\xd8\x5b\ +\x01\x16\xdc\xaa\x12\x0d\x1a\xb0\x3e\x22\x98\x54\xbc\x72\x3a\x8a\ +\x6b\x83\xe9\xf3\x3f\x6f\x97\x1c\xa6\x66\x90\x08\x5c\x47\xd1\xcc\ +\x63\x80\x33\x4a\x7e\xc1\x11\xf4\x79\x7c\xb0\x6d\x87\xcb\x14\x35\ +\x8a\x0a\xd8\x86\x2b\xf1\x41\xb0\x99\x63\x69\xb9\xcd\x7c\xb5\x8f\ +\xea\x3b\xfe\x05\x37\xfc\xee\x27\xa8\x6c\x1c\x51\x44\xe8\x74\x3a\ +\xd2\x6e\xb7\xbf\xd5\x68\x34\xfe\xdb\xbe\x7d\xfb\x1e\xfe\xd8\xc7\ +\x3e\xd6\xe9\x82\x7d\xd0\x15\xfe\xf3\x9f\xff\x7c\xed\x96\x5b\x6e\ +\x79\x6f\xad\x56\xfb\xfd\x34\x4d\x6f\x4f\xd2\x04\x51\xa5\x71\xe6\ +\x0c\x87\xff\xe2\x4f\xa5\xfd\xe4\xa3\x0c\x76\x96\xa9\x47\x31\x64\ +\x52\x9a\xbe\x10\x24\x86\xb0\x62\x08\x22\x83\x58\xaf\x10\x29\x40\ +\x72\x21\xac\x05\x04\x35\xe3\x7d\xdc\xfa\xe3\x74\x4a\x77\xa9\x1b\ +\x82\x9a\xf8\x90\x59\x78\xa5\xd0\xf1\x85\xb4\x89\xbb\xe7\xfc\x73\ +\x34\xf7\x80\xaa\x39\x98\x50\x08\x6a\x06\x91\x12\x4c\x73\x0f\x9c\ +\xb6\x05\x49\x12\x12\x49\x87\xd5\xe9\x29\x96\x66\xe7\xe9\xb9\xe6\ +\x5a\xe2\xde\x5e\x82\x20\x10\x60\x0b\xb0\x75\x78\x78\xb8\x71\xe7\ +\x9d\x77\x1e\xfb\xd2\x97\xbe\x94\x7f\xfc\xe3\x1f\xf7\x0a\xd8\xb5\ +\x6b\x57\xff\xf8\xf8\xf8\xfb\x6b\xb5\xda\x6f\x56\x2a\x95\x37\x24\ +\x69\x2a\xa2\xaa\xab\xa7\x4f\xc9\xd1\xbf\xfc\x8c\x34\x1f\x7f\x84\ +\xbe\xd5\x45\x6a\x12\x10\x88\x4f\x52\xc2\xd4\x20\x81\xf7\xd3\xc0\ +\x78\x7f\x36\xf8\xe3\x41\x45\x08\x02\x41\xb2\xae\x80\xa5\xcf\xa6\ +\x86\xb0\xba\xee\x98\xc1\x03\x63\x2e\x84\x55\x7f\x9f\x98\x12\x2c\ +\xd5\x2b\xcd\xb5\x14\x53\xf7\x96\x23\x94\xd1\xc5\x51\x46\x19\x90\ +\x58\x30\xb1\xf7\x24\x51\x21\x44\x30\xad\x16\xab\xa7\x27\x59\x5e\ +\x5e\x91\xda\xb6\x09\x89\xfb\xfb\x35\x8c\x22\x11\x91\xcd\xc6\x98\ +\xd1\x81\x81\x81\xce\xbd\xf7\xde\x7b\xe2\x4d\x6f\x7a\x53\xdb\x00\ +\xd4\x6a\xb5\xb7\xa7\x69\xfa\x91\x24\x49\x5e\x1b\xc5\xb1\x41\x55\ +\x57\x4f\x9f\x96\x63\x7f\xf5\x97\x34\xbf\xf6\x10\x3d\x0b\xf3\xd4\ +\xc4\xc7\x64\x29\xe3\x79\x10\x1b\x82\xa8\x1c\xac\x05\x32\x45\x80\ +\x20\x16\x6f\x11\x15\x03\xb9\x9f\x6d\x29\x04\x03\x84\xa9\x10\xf6\ +\xfa\x88\x21\x19\x98\x42\x90\x5c\x30\x85\x10\xa4\xa6\x3c\xb7\x2e\ +\x22\x14\x3e\xaa\x84\x69\x69\x65\xa9\xf1\x4a\xe8\x00\x85\x07\xc8\ +\xa0\x74\xb9\x30\xf1\x2e\x69\x0a\xf1\x79\xc2\xd2\x02\xad\xc7\x1e\ +\xe6\xf8\x67\xff\x92\xc6\xe9\xd3\x82\x53\x8d\xe2\xd8\x24\x49\xf2\ +\xda\x34\x4d\x3f\x52\xab\xd5\xde\xde\x4d\x85\x0d\xf0\xfa\x28\x8a\ +\x6e\x8a\xa2\x28\x0e\xc2\x90\xe5\x63\xc7\x38\xfe\x57\xff\x87\xd5\ +\x47\x1e\xa4\x6f\x71\x9e\x5a\x1a\x12\xc6\x81\x0f\x71\x5a\x9a\x24\ +\x3e\xdd\x35\x81\x1f\x84\x84\x7e\x76\xc8\x40\xb5\x74\x8f\x14\x82\ +\xe4\xe2\x71\xc9\xbc\xcf\x4b\xee\x05\x36\x55\x01\x2d\x5d\xa6\x34\ +\x7f\x29\x84\x20\x02\x62\x5f\x2d\x9a\x96\x81\x36\xa8\x51\xc8\x7c\ +\x2e\x61\x22\xc1\xa1\x60\x9d\x77\x0d\x29\x9f\x6f\xf0\x96\x47\x40\ +\xcd\x29\x6e\xfe\x02\xcb\x0f\x3d\xc8\x51\x07\x13\x1f\xfd\x57\xf4\ +\x4c\x6c\x27\x8a\xa2\xb8\x28\x8a\x9b\x80\xd7\x03\x7f\x17\x02\x71\ +\x51\x14\x7d\x22\x12\x19\x63\x40\x44\xdb\x27\x4f\xca\xfc\xdf\x7d\ +\x91\xe1\xa2\x45\x3d\x8e\x09\x23\x1f\x8f\x8d\x08\xb4\x0a\x74\x39\ +\x43\xe3\xd2\x4c\x43\x90\x24\xc2\x44\x31\x14\xa1\x9f\x71\x01\x71\ +\xbe\xc0\x09\x2a\x5e\x68\x2d\x1c\x34\xdb\xd0\x74\x5e\x71\xc9\xc5\ +\xf2\x58\x0a\x41\x0b\x01\xe3\x43\x1b\x49\x80\xd4\x0c\x8a\xa2\x2b\ +\xde\xc7\xc5\x78\x1c\x30\x36\x83\xb8\x40\x2d\x68\xcb\xa2\x4e\x71\ +\x01\xd8\x86\x85\x48\x90\x54\x10\x15\x02\x31\xd4\xa3\x00\x5d\x9c\ +\xe3\xc2\xdf\x7d\x91\xd6\xcf\xdd\x25\x3d\xd7\x5c\xa3\xc6\x18\x11\ +\x91\xa8\x28\x8a\x3e\x20\x0e\x81\x38\xcb\x32\x51\xf5\xc4\x93\x82\ +\x84\xed\x26\xfd\x0b\xf3\xf4\x8e\x0c\x60\xd4\x9b\x96\xcf\xe7\x0b\ +\xc2\xc1\x61\xd2\x89\x09\xa2\x81\x3a\xb8\xb2\xc4\x35\x19\x6e\x7a\ +\x1a\x37\x77\x01\x43\x41\x90\x78\xd3\x27\x2f\x77\xeb\x08\x7a\x87\ +\x08\xb6\x6c\xc1\x0c\xf4\x41\xe1\x6f\x34\xf5\xb2\x34\x9e\x2f\x50\ +\xcd\x20\x6b\xe1\x66\xe7\x71\xf3\x0b\x68\x2b\x47\x82\x32\x1d\xae\ +\x7b\x73\x93\xb4\x8a\x6c\xbc\x0e\x33\xba\x09\x57\x14\xc4\xab\x0e\ +\x35\x40\x00\x45\xcb\xe2\x6c\x81\xda\x36\xf9\xe2\x22\x3a\x3d\x8b\ +\x2e\x2e\xd0\x5b\x8d\x29\xce\xcf\x13\xb6\x5b\x94\x46\x8b\xaa\x6a\ +\x96\x65\x02\x44\x21\x10\xe4\x79\x1e\x38\xe7\xa4\xcb\xbf\xc5\x81\ +\xa1\xaf\x16\x78\x40\x52\xef\x6f\xea\x14\xbb\xda\xa6\xfe\xd6\xdb\ +\xd9\xf4\x5f\xff\x80\x78\xf3\x96\xb5\xba\xbd\x38\x7f\x96\xe5\x4f\ +\xfd\x39\xd9\xce\xbf\xc7\xb4\x67\x30\x95\x08\xb1\x06\xb7\x02\x18\ +\x41\xdb\x16\xee\xb8\x85\xe4\x77\x7e\x9f\xf8\x96\x9f\x59\x47\x84\ +\xf8\x64\x5c\x5b\x0d\x74\xf9\x02\x6e\x6e\x0a\xfb\xec\x33\xe4\x4f\ +\xee\xc2\x1e\x3e\x88\x5b\x6d\xf9\x7a\x22\x35\x38\x2d\x30\x9b\x46\ +\xa8\x7e\xe8\xb7\xa9\xbd\xf3\xfd\x5c\x89\x45\xb4\xab\xab\xe4\x67\ +\xa7\x69\xbf\x74\x80\x95\xa7\x76\xb1\xfa\xf4\x4e\xb2\xb9\x19\xfa\ +\xeb\x01\x49\x68\xd6\xf8\x45\xe7\x9c\xe4\x79\x1e\x00\x61\x57\x01\ +\x62\xad\x5d\x77\x81\xa2\x0e\xcf\xd9\xa8\xf7\xb9\x30\x16\x6c\x54\ +\x25\xdc\xb6\x95\x78\xf3\x96\x4b\x0a\x09\x73\xd5\x46\x82\x6d\x5b\ +\xa1\xa7\x17\x6d\xcc\xf8\x4a\xb0\x4c\x5b\x83\x41\xa1\xdd\x50\x5a\ +\x81\x12\xa9\x12\x5f\x46\x92\xa0\x20\x95\x1a\xa6\x52\x23\xd8\x38\ +\x4e\x78\xd3\x1d\x84\x3f\x77\x37\xd9\xfd\x7f\x41\xbe\xeb\x61\xf4\ +\x78\x03\x71\xe0\x54\xc8\x33\x25\x2a\xf4\x15\xcb\xd8\xb0\x5e\x27\ +\xbc\xf6\x3a\x2a\xd7\x5e\x47\xcf\x5b\x7f\x81\xe5\x1d\x0f\x73\xfe\ +\xcf\xff\x98\x7c\xe1\x19\x9c\x73\x6b\xf2\x59\x6b\xc9\xf3\x5c\x80\ +\xc0\x5c\x89\x95\x55\xa7\x68\x07\x5c\xc7\x97\xad\x18\x50\x57\x10\ +\x5d\x37\x41\x72\xc3\x75\x2f\xe7\xaa\xc5\x10\x6d\x1b\xc7\x0c\x6f\ +\xc4\xb5\x42\xdc\xac\x43\x97\x94\xa0\xcf\x63\x84\x8b\xa1\x48\x15\ +\x17\xac\x11\x5c\xa8\xb5\x74\x1a\xab\x74\x9a\xab\x14\xad\x16\xea\ +\xdc\x9a\x60\xc1\xe6\xad\x84\xef\xb8\x07\x19\xdb\x82\xe9\x0d\xb0\ +\xf3\x8a\x9d\x71\xe4\x8b\x0e\xdb\xd1\x4b\x18\x63\xe7\x1c\xce\x59\ +\x5c\x79\xff\x7a\x65\xf4\xbd\xfd\x5d\xf4\xbe\xfd\x97\x09\x7a\x36\ +\x78\x17\x5e\xc7\x30\x77\x3f\xc3\x4b\x14\x50\x5e\x20\x02\x12\x81\ +\x89\x7d\xfc\x56\x0b\x2e\xcb\x49\xb6\x6c\x27\xdc\x76\xed\x95\xcb\ +\xca\x8d\x63\x98\xf1\xab\xe1\xe4\x0b\x04\xd9\xaa\x0f\x57\x6d\xa0\ +\xe2\x93\x1f\xb2\x92\xef\x2a\x85\x6c\x2e\x2d\x70\xe0\xef\xef\xc7\ +\x39\x4b\xda\x3b\xc0\xc6\x57\xdd\xcc\xf0\xc4\x35\xc4\x95\x2a\x12\ +\x04\x04\x9b\xae\xc6\x8d\xbf\x0a\xf7\x9d\x93\x04\xbd\x0e\x75\x86\ +\xa2\x66\x20\x94\xf5\x9c\x39\xf3\xa7\x4f\x32\x7f\xfa\x14\xce\x39\ +\xea\xc3\x1b\xe8\xdf\x3c\x4a\xb5\x7f\x00\x63\x0c\x26\xad\x30\xf0\ +\xcb\xef\x66\xe1\xe1\x87\x20\x0a\xd7\x94\xbc\x5e\x11\x21\x50\x6a\ +\xd1\xa1\x5a\x2a\xc3\xf8\x8c\x4b\x82\x92\xd4\xb4\x8a\xd3\x80\x78\ +\x6c\x2b\xe9\xd8\x38\x00\xce\x5a\xb2\x56\x8b\xb8\x52\xc1\x04\x01\ +\xe1\xc6\x51\xc2\xf1\x71\x8a\x81\x3a\x2c\xad\x22\x2a\xb0\x02\xb4\ +\x15\x6d\xe3\x51\x7e\x9d\xa1\xe5\x8b\x0b\x5c\xf8\xca\xe7\x20\xcf\ +\x28\xf2\x80\xe5\xdb\x6f\xc3\xdc\xf3\x51\x46\x5e\xfd\x7a\x7f\x41\ +\x94\x90\x0f\x6e\x01\x35\x44\x69\xc9\x2b\x24\xc6\x87\xdb\x35\x4b\ +\x75\x4c\x7f\xeb\x29\x0e\x7f\xf9\xf3\x34\xe6\xe6\x49\x37\x6f\x63\ +\xeb\x3f\x7f\x07\xd7\xbf\xf3\x9d\xf4\x8f\x6c\x46\x44\xa8\x4c\x5c\ +\x43\xb4\x6d\x2b\x54\x52\xaf\x00\xbd\x68\x39\x6b\x0a\x58\xf3\xff\ +\x2e\x07\x6b\x3d\x45\xe5\x72\xc5\x00\x06\x87\xd9\x34\x42\xb2\x75\ +\x1b\x51\x5f\x3f\x00\x59\xb3\xc9\xd9\x03\xcf\x33\x34\x31\x41\x7d\ +\xc3\x55\x44\x3d\x75\xc2\x4d\xe3\x14\xb5\x21\xf4\xdc\x39\x1c\xea\ +\x79\x81\x58\x7c\x9c\x0f\x29\x99\x62\xaf\x87\x48\x0b\xb6\x15\x33\ +\x24\x45\x46\x73\x36\x23\x7b\x21\xc6\x4e\x4f\x52\xdc\xf4\x3a\x42\ +\xe3\x73\x80\x4e\x1c\x11\x05\xa0\x2d\x87\x16\x0e\xd7\xe3\xc0\xae\ +\x77\x57\x25\x9a\x9b\xa3\xff\xe8\x11\xa2\xc9\xb3\x74\x4e\x9c\xe2\ +\x82\x38\xe6\xc6\xc7\xe8\x1f\xd9\xbc\xce\xa5\xc6\xd0\xb4\xba\x26\ +\x63\x17\x07\x5e\xa6\x80\xf5\x2c\xb5\xb3\x0a\xae\x54\x88\x58\xc2\ +\xed\xdb\x09\xb7\x8c\x23\x71\xe4\x15\xb0\xba\xc2\xe4\x53\x4f\x42\ +\x91\x53\xe9\xeb\x27\x4a\x53\xcc\xc6\x51\x18\x1e\xc3\x1d\x3a\x84\ +\xb1\x0e\x8d\xd5\xc7\x65\x2b\x10\xc0\x3a\x92\x9b\x00\x65\xb4\x2a\ +\xd4\x9c\x21\x6f\xa5\xac\xf6\x0e\x10\x26\xd5\x35\x23\x51\x55\x5a\ +\x8b\xe7\x09\x70\xb8\x0e\x3e\xee\x77\x4a\xee\xb0\x0b\xa2\x0a\x3d\ +\x61\xc4\xd5\xd5\x1a\x59\xb5\xce\xaa\x16\x64\xe7\x4f\x53\x4c\x9d\ +\x59\x7b\x86\x88\xe0\x7a\xfa\x21\x8a\xbc\x60\xe5\xf1\x4b\x14\xd0\ +\x45\xc8\xf5\x3c\x91\x04\xa5\x0b\x38\xc1\x59\x88\xc6\x27\x08\x47\ +\x46\x51\x13\xe0\x54\xc9\x97\x16\x59\xd9\xfb\x14\x0b\x3d\x3d\x8c\ +\xdc\xf2\x33\x84\x69\x8a\x8c\x8c\x22\xdb\x26\xd0\xef\x7d\x1d\x69\ +\xb4\xd0\x1c\x5c\x53\x71\x6d\xc5\x15\x0e\x67\x1d\x0a\x38\x55\x88\ +\x12\x64\xe2\x67\xb0\x6a\x91\xb1\x0a\xb5\x5b\xdf\x88\xd9\x3a\x81\ +\x31\x82\x05\x5a\x17\xe6\x68\x1f\x3c\x44\x3d\x2b\x90\x44\x20\x14\ +\x24\x16\x54\xbc\x1a\x7d\xa4\x72\x88\x58\xc2\xc8\x4b\xd2\x53\x80\ +\x86\x29\xf5\x4a\xa5\xbc\xc6\x21\x41\x40\x3b\xeb\x90\xd8\xe2\xe2\ +\x04\x5c\xee\x02\x97\xad\xbf\x79\x0c\x08\x40\x4a\x53\xd4\xb0\x4a\ +\x3c\xba\x95\x70\x70\x08\x44\xc8\xda\x6d\x9a\x67\x27\x89\x8e\xbd\ +\x48\x3e\x36\x81\x6d\xb6\x70\x7d\xfd\x04\x57\x6d\x24\xd8\xba\x15\ +\xdb\x57\x41\x8a\x16\x7a\x41\xb1\x40\xd1\xf6\x4a\x50\xa7\x9e\xf7\ +\xb7\x05\x66\xe8\x2a\xa2\x8f\xfd\x67\x54\x14\x89\xab\x04\xbd\x7d\ +\x48\xad\x8e\x5a\xcb\xca\xec\x0c\xd3\x5f\xdf\x05\x07\x8f\x20\xb9\ +\x85\xbe\xb2\x68\x4a\x14\x0d\xfd\x33\x9c\x3a\x54\x1d\x84\x01\x54\ +\x62\x4c\x5f\x42\xa0\x75\xa2\x89\x9b\xa8\x4e\x5c\x8b\x2d\x31\xc2\ +\x04\x01\xad\xf3\xd3\x04\xad\x66\xb9\x18\xa3\x2f\x07\xc1\xae\x39\ +\xac\x73\x2d\x9c\x53\x9c\x2a\x62\x95\x60\xeb\x16\xc2\xb1\x51\x24\ +\x4d\x51\xa0\x39\x7f\x81\xd9\xfd\xcf\x30\x94\x77\x60\xf2\x0c\x8d\ +\xd9\xf3\x04\x83\x83\x04\x49\x42\xb0\x61\x33\xb2\x61\x0b\x6e\x66\ +\x1e\x50\x82\x01\xc1\x34\x58\xe3\xf1\x1c\xe0\xac\x83\x30\x46\xae\ +\xbe\xc6\x27\x42\xea\xf1\x41\x8c\xa1\xbd\xba\xca\xf4\xb3\x7b\x39\ +\xf5\xe0\xff\xe5\x3a\xbd\x80\x29\x7c\x14\xc2\xe9\x1a\x9b\xec\x95\ +\xe8\xad\x36\x1c\xd9\x0c\x37\xdd\x8a\x1b\x6f\x52\x7f\xcd\xcf\x52\ +\xb9\xeb\xe7\x89\xb7\x4d\xe0\xb2\x0c\x55\xa5\x68\xb7\x29\x26\x27\ +\xa1\xd9\xf2\x18\x54\x0a\x7e\x65\x17\xd0\x8b\x20\x68\xdb\x8a\x69\ +\x3b\x50\x25\xda\xba\x0d\xd9\xb4\x19\x17\x45\x38\xa0\x7d\xe1\x02\ +\x17\xf6\x7c\x9b\xcd\x0d\xa1\x68\x2e\xb0\x78\xe2\x08\xc9\xe8\x18\ +\x95\x38\xc1\xf6\x5f\x45\x67\xf8\x7a\xcc\xdc\xb3\xa4\x83\xa1\x1f\ +\xac\x51\x48\x1c\x4e\x1c\xb6\x34\xdd\x35\xb0\x59\xf3\x39\x1f\x59\ +\x82\xb4\xc2\xf8\xeb\xdf\xc8\x55\xed\x0f\x23\x5f\xf8\x33\x68\xcf\ +\x52\xcc\x5a\xb2\x8e\x23\x37\x8e\xb8\x65\x4b\x25\xfa\xc5\x82\x9e\ +\x9f\x7b\x27\xbc\xe5\x17\x3c\x28\x18\x03\x81\x41\xad\xc3\x8a\xa0\ +\x45\xc1\x91\x5d\x4f\xd2\x38\x72\x9c\x81\xac\xc0\x18\xb3\x86\x77\ +\x97\xb8\xc0\xe5\x18\x20\xe2\xab\x3b\x89\x05\xd4\x10\x8f\x6d\x25\ +\xda\x30\x82\x44\x31\xce\x29\xc5\xfc\x2c\xee\xe0\x77\x08\x22\x47\ +\xfb\xdc\x0c\xed\x63\x47\xb0\xaf\xb9\x0d\xed\x1b\x20\xd8\xb8\x91\ +\xe8\xd5\x37\x52\x3c\xea\x17\x43\x24\x16\x6c\xc7\x2b\xd4\x59\xb7\ +\x06\x60\x9d\x95\x65\x26\x9f\xfd\x36\xea\x2c\x51\xa5\x4e\xff\xf8\ +\x38\xd5\xa1\x61\xc2\x38\x26\xe8\x1d\xa0\xf2\xc6\xb7\xd2\x39\x7d\ +\x92\xe2\xc4\x17\xa0\xa7\x8d\xa9\x0b\x52\xf7\x96\xa4\xeb\x73\x97\ +\x20\x44\xa2\xe8\xb2\xfc\x52\xb1\x79\xce\xd2\xd4\x24\xa7\xbf\xfa\ +\x65\xc2\xe9\xd3\x04\x5d\x8e\xed\x95\x30\xe0\x12\x96\x5c\x00\xe3\ +\x57\x70\x64\x68\x98\x68\xcb\x38\xa6\x56\x03\x11\x3a\x8d\x06\xf9\ +\xf2\x12\x7d\x7d\xbd\x44\x1b\x37\x12\x65\x06\x1a\x6d\x5c\x27\xc3\ +\xda\x02\x53\xeb\x21\xbe\x7a\x2b\xf9\x55\x43\xd8\xe3\x17\x10\xe3\ +\x28\x5a\xea\xa9\x2c\xab\xde\x77\x81\xe6\xcc\x0c\x2f\x7c\xf2\x0f\ +\x21\xcf\x50\x0c\xf5\x1b\xaf\x63\xfc\x17\xee\x66\xec\xb6\x37\x51\ +\x19\x18\x42\xeb\xfd\xd8\x57\xbd\x91\x9c\xfb\x89\xa2\x32\x22\x45\ +\x0a\x81\x4f\xd5\xbb\x02\xd8\xa2\x83\x2d\x0a\xbf\x8a\x64\x1d\x45\ +\x96\xd1\x59\x5d\xe1\xc2\xb1\x63\x9c\x7a\xf4\x61\xec\xd3\xbb\xa9\ +\xb5\x57\x09\x4c\x77\x61\x56\x5e\x9e\x09\x5e\xb4\x80\x75\x28\x59\ +\x28\xce\x7a\x1f\x0b\xb6\x6c\x81\x24\xc6\x15\x05\x36\xcf\x48\xc7\ +\xc6\xd9\xfc\xaf\x7f\x97\x38\x8a\x89\x73\x07\xa3\x63\x98\x4a\x15\ +\x9b\xe7\xbe\x2c\xee\x1f\xc6\x4e\xdc\x84\x9c\xd8\x45\x18\x19\x5f\ +\x4c\x19\x8f\x29\xea\xbc\x1b\x98\xbc\xcd\xe8\x85\x63\xc4\x79\x46\ +\xb6\x6c\x69\xce\x4f\xb3\xda\xd3\x4b\x63\x6c\x82\xb4\x7f\x08\x15\ +\x41\xae\x9e\xc0\xd6\x6b\x48\x63\x99\x22\xf7\x69\xb0\x2b\xdc\xda\ +\x78\x9d\x73\x9c\x3f\x74\x88\xb9\x43\x07\xc9\x5b\x2d\x6c\x9e\x93\ +\xaf\x2c\xd1\x3a\x7f\x8e\xd6\x91\xa3\xd8\x17\x0f\xb0\xa1\xb5\x42\ +\x54\xb8\x4b\x00\xee\xfb\x24\x42\xeb\xf2\x80\x02\xac\x1a\xe2\x91\ +\x51\xc2\xcd\xa3\x10\x46\xd8\xa2\xc0\x88\x50\xdd\xb2\x15\x19\xbb\ +\x1a\x05\x12\xca\x04\x27\x08\x70\x85\xf7\x4b\x57\xef\x87\x9b\x6e\ +\xc3\xee\x7c\x82\x30\x0d\xc1\x81\x0b\x40\x71\x6b\xb3\x17\x18\xd8\ +\x36\x54\xa7\x52\x74\xc8\x8d\x63\x31\xcb\xe9\xcc\xce\xe2\x96\x97\ +\x70\x28\x2a\x42\xd0\xdf\x4f\xde\xd7\x0f\x0b\xe7\xb0\x1d\x87\x6d\ +\x2b\x36\x2f\x05\x50\xc5\x15\x05\x8b\xcf\x7d\x97\xe9\x7f\xf8\x32\ +\xed\xb9\x79\x04\x07\x59\x0b\x5d\x5a\x22\x5e\x5c\x66\xd0\x2a\xf5\ +\x28\xf4\x39\x84\xbb\x58\x80\xfe\xc0\x3c\x40\x7d\x11\x08\x95\x0a\ +\xd1\x96\x71\xc2\x81\x41\xd4\x18\x70\x0e\x09\x43\x4c\x9c\xbc\xac\ +\x1c\x53\xeb\x50\x67\xb1\x45\x8e\xd4\xea\x44\x37\xdc\x4c\x3b\x48\ +\x08\xda\x4a\xd1\x76\xe5\xcc\x95\xc5\x8b\xfa\xff\xf3\x95\x8c\xb0\ +\xc8\x71\x6d\x4b\xb5\x56\x23\x19\x1e\x24\xa9\x56\xb1\x85\x2d\x81\ +\x52\x68\x4b\x40\x50\xae\xab\xab\x28\xaa\xae\x4c\xdd\xbd\x35\x85\ +\xf3\xb3\xf4\x9f\x3c\x44\x7e\x76\x06\x11\x43\x10\x08\x91\x18\xe2\ +\x20\xc0\x04\x1e\x17\xf2\x2b\xb4\xdd\x7c\xff\x3c\x40\x14\x8d\x04\ +\x19\x1e\x24\x9a\x98\x40\x92\xc4\x87\x94\x4e\x87\x4e\xa3\x41\xd1\ +\x69\xaf\xa5\xb5\xdd\x94\x2c\x8c\x63\xa2\x6a\x95\x30\x4e\x90\x28\ +\x26\xda\xb8\x89\xc6\xa6\xab\x29\xa6\x8f\x53\x34\x2c\xb6\xe3\x13\ +\x21\xd7\x15\x40\x05\x1b\x0d\x92\x4b\x86\xf4\x0b\xe6\xc6\xed\x04\ +\xaf\x7d\x1d\x66\xc3\x46\x5c\x91\xfb\x59\x6a\xb7\x69\xcd\x5c\xa0\ +\x12\x58\xbf\x86\x10\x2b\x1a\x5c\x54\xa2\xaa\xa3\x16\x1b\x92\x9e\ +\x14\xd7\xaa\x50\xb4\xf0\x8a\x2e\x93\x2d\x4f\x9f\xfb\xda\x06\xb9\ +\x72\xdf\xd1\x95\xf3\x00\xa7\x38\x0c\x3a\x38\x4c\xb0\x6d\x3b\x1a\ +\x04\x88\x31\xcc\x1d\x3f\xc6\x81\xaf\x7c\x89\x33\xdf\xde\x43\x10\ +\x45\x65\xd7\x12\x60\x2c\xc3\x37\xdc\xc4\x0d\xef\xf8\x45\x46\x6f\ +\x7d\x0d\x61\x10\xe2\x92\x94\xe2\xf5\xb7\x11\xee\x38\xe9\x31\x40\ +\xf4\x62\xd1\x55\x14\x04\x83\x43\xa4\xbf\xf5\x7b\x04\xce\x41\x5a\ +\xc7\x8c\x8f\x23\xc3\x1b\x21\xad\xe0\xac\xc5\xda\x82\xe5\xa9\xd3\ +\x98\x95\x65\x30\x0e\xeb\xc0\xe6\x65\x1e\xe0\x1c\xea\x9c\x27\x69\ +\x0a\xbf\xe4\x6e\x33\xc5\xa9\x40\xd0\x5d\x49\x2e\x6b\x1a\x51\xac\ +\x5b\x17\x71\xbb\xe4\xc9\xf7\x77\x01\xc5\x3a\x43\x30\xb8\x91\x74\ +\xfc\x6a\x08\x02\xd4\x18\x96\x8f\x1d\x41\x9f\xfe\x06\x63\x07\x5e\ +\x24\x4a\x22\x44\xfc\xb2\x95\x09\x1c\x79\x7b\x85\xec\xba\xeb\xc9\ +\xae\xbb\x1e\x93\xa6\x90\x26\xc4\x6f\xbc\x03\xbb\xf3\x7e\x9c\x71\ +\x68\x54\x9a\xb0\x75\xa8\x75\x50\xad\x11\xfe\xec\x5d\x17\xa3\x4f\ +\x18\xfa\x38\x0e\x20\x86\xce\xf2\x32\x87\xbe\xf4\x79\x36\x6b\x93\ +\xce\xbc\xc5\x15\x96\x3c\xb5\xd8\xce\xc5\x38\xae\xce\xe1\xda\x8e\ +\x7c\xd9\xe1\x56\x1d\x92\x1a\x24\x2e\x59\x6a\x05\x9b\xf9\x88\x63\ +\xf3\x2e\xea\xcb\x95\x5d\xe0\x65\xc5\x90\x31\xc8\x60\x1f\xf1\xab\ +\x6e\x24\xac\x54\x10\x63\xc8\x0b\x8b\x9e\x3a\x4d\xcf\xd9\x29\x7a\ +\x13\x25\xaa\x94\xa1\xa9\x80\x30\x14\x16\xcf\x4e\xc1\xd4\x24\xb6\ +\xd5\xf2\x1d\x40\x71\x42\xe5\xda\xeb\x59\xee\x1d\xc0\x2e\x2c\x63\ +\x33\x8b\x77\xeb\x92\x08\x15\x83\x24\xe9\x25\x21\x49\xfd\x09\x16\ +\xcf\x4e\x73\x7a\xc7\x43\x98\x3d\xbb\x30\x2b\x6d\xcf\x1d\x5a\x45\ +\x52\xf5\x33\x2c\xdd\xe7\x08\x9a\x80\x54\xbc\x7b\x38\xa7\x90\x7b\ +\xf3\x77\xae\x24\x72\xe4\xe5\xed\x38\x3f\x44\x31\x24\xb8\x34\xa5\ +\x55\xad\x32\x73\xf2\x24\x26\x8c\x68\x2c\xcc\xb3\x7a\xf0\x30\x49\ +\xab\x45\x1c\x19\x8c\x94\x99\x65\x01\xd2\x86\xb8\xdd\x24\x3f\x7a\ +\x8c\xb9\x17\x0f\xb0\xda\x69\x21\x4e\x61\x65\x85\x4e\xcf\x26\x8a\ +\xce\x24\xed\xc5\x06\x8b\xd3\x53\xe4\x27\x8e\xe1\xda\xed\x75\xf8\ +\xe1\xf3\xfa\xac\xb9\x42\x67\x71\x81\xa5\x93\x27\x59\xdc\xbf\x1f\ +\x79\xe1\x79\xc6\x16\xe6\x30\x56\x3d\x00\x2b\x58\x2d\x58\x99\x9f\ +\xc5\x1e\x3d\x8a\xeb\xb4\x21\x2f\xe8\x2c\x2c\x80\x2d\x20\x04\xd7\ +\x71\xd8\xac\xeb\x6e\xde\xfc\xdd\xba\xe8\xe6\x09\xce\x2b\x58\x00\ +\x5d\x98\x28\x19\x91\x70\x60\x40\x64\xe3\x26\x8e\x7c\xf9\x4b\xb4\ +\x1f\x7f\x1c\x4c\x80\x74\x9a\x0c\x9c\x99\x64\x28\x2f\x70\xa1\xff\ +\x91\xf2\x79\x88\x40\x12\x05\x2c\xbc\xf0\x1c\x53\x4b\x0b\x74\x7a\ +\x7b\x11\x20\xca\x2d\xa3\x33\xa7\x49\x43\xa1\x79\xfa\x04\x67\xff\ +\xf6\xaf\x29\x1e\xec\x87\x52\xfb\xdd\x2e\x10\xcd\x14\x8a\x0e\xd2\ +\x69\x22\xf3\xf3\xc4\x73\xb3\x0c\xda\x0e\x3d\x71\x0c\x45\xd7\x94\ +\x85\xf6\xec\x3c\xb3\x0f\xfd\x03\x2b\xcf\x7c\x1b\xb5\x16\x93\x2b\ +\x23\x33\x53\xf4\x2c\x37\x90\x42\x71\xca\x25\xd5\xa2\x07\x42\xa8\ +\xde\x7c\x23\xe1\xe0\x20\x65\x25\x24\xeb\xfa\xb5\xbc\x02\xf2\x3c\ +\x6f\x34\x9b\xcd\x22\xcb\x32\xc2\x38\x96\x74\xeb\x36\xbd\xea\x97\ +\x7e\x59\x2e\x7c\xee\xaf\x59\x7d\x7a\x0f\x0a\x54\x42\x88\xd2\x18\ +\x09\x23\x0a\x27\x18\xd5\x72\x61\x04\x34\x12\x82\x28\x20\xba\x30\ +\x43\x38\x79\x86\x5c\x9d\x27\x22\x82\x80\x70\xb8\x4a\x14\x85\x54\ +\x96\x2e\xd0\x3a\x3b\x8d\x5a\xbb\x56\x6e\xfb\x16\x19\xd0\xa6\x12\ +\x8a\xef\x30\xa9\x06\x21\xbd\x69\x48\xad\xc7\x87\xda\xa2\xed\x28\ +\xda\xe5\xd2\x57\xd6\x24\x98\x79\x1e\xf3\xbd\x67\xfc\xac\xb6\x15\ +\x4d\x13\x5c\x12\x43\xee\x85\x27\xf4\x5c\x86\x53\x87\x4a\x40\x65\ +\xfb\x35\x6c\xb8\xe7\x5e\xd2\x6d\x13\x8a\x73\x92\x65\x19\xcd\x66\ +\xb3\xc8\xf3\xbc\xd1\x55\x80\xce\xcc\xcc\xbc\x34\x39\x39\x79\x32\ +\x4d\xd3\x9e\x8d\x41\x10\x56\x47\x46\xd8\xf4\xde\xf7\x91\x0a\xcc\ +\xdd\x77\x1f\xed\x93\xc7\x11\x57\x78\x9a\x1c\xc5\xaa\x2f\x35\x05\ +\xf1\x09\x46\xee\x4d\xa1\x1e\x84\xf4\xf4\x44\x7e\xcd\x4f\x7d\x4d\ +\x61\xc4\x40\xa6\xf4\x07\x01\x83\x3d\x35\x24\xe8\x22\xb2\x10\x94\ +\x3d\x9e\x36\x2a\x01\xca\x74\x13\x16\xf5\xb3\x2e\x42\xd1\x2d\xd2\ +\x14\x12\x23\x6c\xae\xa4\x8c\x06\x09\xaa\x50\xc4\xd6\x27\x6d\x65\ +\x5f\xa1\xba\x6e\x06\xeb\xd0\x20\x22\xdd\x3a\xc1\xf0\xfb\x3e\x40\ +\xff\xaf\xbc\x07\xed\x1f\xa0\xd9\x6a\x32\x3b\x3b\x5b\x4c\x4e\x4e\ +\x9e\x9c\x99\x99\x79\x09\x9f\x9f\x91\x2c\x2d\x2d\x35\x92\x24\x89\ +\xa3\x28\xda\x98\x26\xc9\x50\xa5\x52\x91\xa0\x56\xd3\xca\xb6\x09\ +\x31\x81\xa1\x3d\x39\x45\xb1\xb4\x84\x2b\xac\xaf\x0f\x42\x5f\x57\ +\x28\xfe\x07\xd5\xe1\x5b\x5b\x04\x24\x12\x4c\x59\x9b\x14\x6d\x8f\ +\xc2\x9a\x79\xbe\x91\x08\x24\x36\x28\x50\xb4\x7c\x32\x53\xe4\x3e\ +\xbb\x33\x69\x49\x78\xa8\xc3\xe5\x8a\xcd\x1d\xd6\x2a\x2e\x73\xbe\ +\x49\x2a\x2a\xc1\xab\xbc\xde\x5a\x1f\x02\x25\x04\x82\x2e\xcd\xa5\ +\xd8\xc2\x41\x10\x92\x5e\xbd\x9d\x0d\xf7\xdc\x43\xff\x7b\xde\x83\ +\xeb\xeb\xd3\x4e\xa7\x23\x67\xcf\x9e\xd5\x43\x87\x0e\x1d\x79\xe6\ +\x99\x67\x1e\x7c\xec\xb1\xc7\x1e\x9b\x9d\x9d\x9d\x0f\x80\x60\x76\ +\x76\x36\x3f\x72\xe4\xc8\x5c\xa5\x52\x21\x8a\xa2\x91\x38\x8e\x07\ +\x7b\x7a\x7b\xc5\x54\x2a\x5a\x9d\xb8\x06\x11\x95\xec\xec\x34\xf9\ +\xc2\x22\x58\x77\x91\xdb\x2b\x57\x6a\x25\x10\x14\xf1\x40\xda\xf5\ +\x41\xeb\x97\xb3\x25\x64\xcd\x27\x11\x0f\x33\x2e\x2f\x41\x28\xea\ +\xc6\x64\x5d\x2b\xd5\xbb\x35\x88\x1a\x01\x51\x6c\xc1\x9a\x65\xd8\ +\xdc\xb7\xda\x69\xd9\x57\xe1\x4d\x1d\xd4\x09\xb6\xcc\x0f\x30\x01\ +\x95\x6d\x13\x0c\xbf\xff\xfd\x0c\xbe\xf7\xfd\xea\x7a\xfb\xc8\xad\ +\x95\xd3\xa7\x4e\x71\xe0\xc0\x81\x63\xdf\xfc\xe6\x37\x1f\xb8\xef\ +\xbe\xfb\x1e\x3a\x7d\xfa\xf4\x19\xa0\x15\x74\xd7\x67\x5a\xad\x56\ +\x7e\xf4\xe8\xd1\xf3\x49\x92\xb4\xe2\x38\xde\x14\xc7\xf1\x50\x5f\ +\x7f\x3f\x52\x49\xa9\xdd\x70\xa3\x18\x55\x3a\x93\xa7\xc9\xe6\x2e\ +\xac\x09\xae\x56\x3d\x6d\x66\xc0\x18\xf5\x1d\x23\xb9\x4f\x42\x5c\ +\xee\xdb\xe2\x24\x34\xe0\xb3\x68\x5c\xae\x14\x1d\x3f\x53\x12\x97\ +\x4d\x51\x52\x0a\x97\x95\x25\x73\xb9\x0e\x21\x21\x68\xd9\x03\x50\ +\x74\x1c\x45\xae\xb8\x52\x19\x84\x5d\xc1\xfd\x33\xbb\x33\xef\xd4\ +\x51\xd9\x3e\xc1\x86\x0f\x7c\x90\xc1\x0f\x7e\x08\x5b\xaf\x53\x58\ +\xcb\x89\xe3\xc7\xe5\xb9\xe7\x9e\x3b\xf2\x8d\x6f\x7c\xe3\x8b\x5f\ +\xf9\xca\x57\xbe\xb6\xb4\xb4\x34\x89\xe7\xac\x9b\xdd\x06\x09\x07\ +\xd8\x2c\xcb\xf2\x53\xa7\x4e\xcd\x85\x61\xb8\x9c\xa6\xe9\x58\x1c\ +\xc7\x43\xbd\xfd\xfd\x22\x49\xa2\x3d\x37\xbf\x1a\x51\xa4\x79\xf4\ +\x18\xf9\xfc\x05\x4c\x14\x96\x83\xd7\xb5\x19\x52\xe7\x85\x92\xd0\ +\xcf\x9e\x2b\xd4\x77\x7f\xba\x8b\x33\x29\x51\x49\x4b\x59\x20\xf4\ +\x94\x9b\xed\xf8\xf5\x3d\xc2\x12\xa8\x9d\xef\x1d\x76\x40\xd1\xb4\ +\xde\x52\x02\x59\x8b\xef\x5d\x58\x28\x0a\x8f\xf2\x2a\x8a\xed\x74\ +\x48\xc7\xaf\x66\xe4\xd7\x3f\xca\xf0\xaf\xff\xba\x16\x69\x4a\x6e\ +\xad\x74\x85\x7f\xea\xa9\xa7\xfe\xe6\x91\x47\x1e\xd9\xb9\xb2\xb2\ +\x32\x09\x2c\x02\x2d\xc0\x76\x2d\xc0\x89\x88\x05\x6c\xa7\xd3\xc9\ +\xce\x9f\x3f\xbf\x14\xc7\xf1\x6a\x9a\xa6\x9b\x2a\x69\x3a\x54\xad\ +\xd5\x24\xa8\x56\xa5\x76\xdd\x75\x1a\x55\x2a\xd2\x38\x74\x90\x6c\ +\x61\xbe\x64\x5f\x14\xe7\x04\x6b\x3d\xe5\x2c\xeb\x92\x0f\x97\x97\ +\xa0\x54\xb6\xbe\x11\x78\x41\xbd\x39\x7b\x8e\xc0\xe6\x1e\xb4\x24\ +\xf4\x1c\x84\x73\x4a\x51\x5c\xea\xeb\x5d\xc5\x38\xf5\xee\x51\xe4\ +\xba\x66\xf2\x8a\x62\xdb\x1d\xe2\xd1\x51\xc6\x7e\xf3\xb7\x19\xba\ +\xf7\x83\x6a\x6b\x35\x69\xb7\x5a\x32\x79\xe6\x0c\xcf\x3f\xff\xfc\ +\xe1\xa7\x9f\x7e\xfa\x0b\x3b\x76\xec\xd8\xbd\xb8\xb8\x78\x1a\x58\ +\x14\x91\x06\x90\xe3\xf9\x95\x8b\x15\x40\xa9\x04\xd7\x6a\xb5\x3a\ +\x33\x33\x33\x0b\x95\x4a\x25\x8b\xa2\x68\x43\x25\x4d\xfb\xd2\x38\ +\x0e\xe2\xa1\x21\xa9\x6c\xbd\x5a\xa3\x9e\x1e\x69\x1e\x3d\x4a\xbe\ +\xb0\xe0\x99\xf3\xb2\x5f\x68\xad\xde\xee\x22\xb2\x2b\xc1\xf2\x22\ +\xc3\xee\xf9\x46\xeb\xcf\xa9\x78\xcc\x70\x76\x5d\xfc\xb6\x25\x06\ +\x94\x4f\xb2\xa5\x85\x75\x85\x2f\xd7\x36\x7c\xc1\xe3\x7c\x5a\x9d\ +\x8e\x5f\xcd\x96\xdf\xfa\x1d\x06\xde\xfb\x5e\x65\x68\x48\x56\x17\ +\x17\x99\x9a\x9a\xca\x9f\x7f\xfe\xf9\x23\x7b\xf7\xee\xfd\xf2\xe3\ +\x8f\x3f\xfe\xc4\xdc\xdc\xdc\xa9\xae\xf0\xaa\x9a\x77\xd3\xb0\xe0\ +\xb2\x2c\x71\x4d\x09\x8d\x46\x23\x9b\x99\x99\xb9\x50\xa9\x54\x5c\ +\x1c\xc7\x43\x95\x4a\xa5\x2f\x0a\x82\x20\x1d\x1a\x96\xea\xf6\x6b\ +\x34\x88\x22\x69\x9d\x3e\x43\xbe\xbc\xe4\xeb\x70\xfc\xb4\xbb\x6e\ +\x58\x2a\x0f\xad\x37\x79\xe7\x74\x4d\x40\xa4\x34\x79\xf1\xdc\x83\ +\xb3\x9e\x2c\xed\x0a\x4f\xe8\xc3\xa2\x2d\x13\x1c\x57\x86\x38\xd5\ +\x12\x14\x71\x38\x0c\x95\xad\xdb\xd9\xfc\xd1\x7f\xc9\xd0\x3d\x1f\ +\x54\x06\x87\x64\xf9\xc2\x1c\x67\xcf\x9e\xcd\x0e\x1c\x38\x70\x74\ +\xdf\xbe\x7d\x0f\x3e\xf6\xd8\x63\x8f\x9e\x3f\x7f\xfe\xf4\x95\x84\ +\xbf\x92\x02\xba\x4a\x70\x7e\xb5\x79\xb5\x33\x37\x37\x37\x97\x24\ +\x89\x89\xe3\x78\x30\x4d\xd3\xbe\x24\x0c\x83\xa8\xb7\x57\x7a\x6e\ +\x7c\x95\xaa\x75\xd2\x99\x9e\x26\x5f\x5a\x42\x0b\xeb\x05\x2f\x53\ +\x4f\x5f\x72\x7a\x25\x38\x57\xe6\xfb\xee\x22\x25\xdd\x6d\x8b\x77\ +\x0e\x4f\x94\x96\xd7\xbb\x2e\x75\x8e\x77\x07\x6b\x75\xcd\x9a\xdc\ +\xc5\xe5\x6d\x34\x88\xa8\x6c\x9b\x60\xe4\xde\x0f\xb2\xf1\xc3\x1f\ +\x51\x5b\xab\xc9\xca\xc2\x02\x53\x53\x53\xd9\x0b\x2f\xbc\x70\x74\ +\xef\xde\xbd\x5f\xdb\xb1\x63\xc7\x23\xd3\xd3\xd3\xa7\x80\x05\x11\ +\x69\x5e\x2e\xfc\x2b\x29\xa0\x9b\xa5\x5b\xc0\x2e\x2f\x2f\xb7\x66\ +\x66\x66\xe6\xa2\x28\x92\x28\x8a\x86\xd2\x34\x1d\xa8\x56\xab\xc6\ +\x24\x09\xf5\x1b\x6f\x14\xa3\x8e\xf6\xe4\x14\xd9\xe2\x92\x6f\x50\ +\x30\xbe\x27\x00\x29\x73\x83\x12\xb8\x5c\xb9\xe6\xe8\x43\xa6\x9f\ +\x59\xd5\x75\x16\x51\xce\xb8\x67\x7a\xdc\xda\x71\x67\x3d\x76\x78\ +\x32\x44\xb1\xd6\xc7\xf9\xca\xc4\x04\x9b\xee\xb9\x97\x0d\xbf\xf6\ +\x6b\xd8\x34\xa5\xd5\x6c\xca\x99\x33\x67\x8a\x03\x07\x0e\x1c\xd9\ +\xb3\x67\xcf\x23\x3b\x76\xec\x78\x78\x6a\x6a\xea\x78\x09\x78\x0d\ +\xdf\xe5\xf0\xf2\xb6\x82\xef\xa7\x00\xd7\x7d\x7f\x61\x65\x65\xa5\ +\x31\x37\x37\x37\x17\x86\xa1\x0b\x82\x60\x43\x9a\xa6\xc3\x7d\x7d\ +\x7d\x62\x92\x44\xeb\xd7\x5e\x87\xc1\x48\x6b\x72\x92\xce\xc2\xfc\ +\x1a\xf3\xeb\x5c\x59\xfa\xae\x95\x18\xac\x2d\xbe\x6a\xd7\x15\xd6\ +\x7a\x11\xbc\xc7\x3b\x55\x6c\xd7\x55\xba\xee\xd4\xcd\xe9\x9d\x17\ +\x5e\x4d\x40\x75\xfb\xb5\x6c\xbe\xf7\x57\xd9\x70\xcf\x3d\xea\x6a\ +\x35\xf2\xa2\x90\x13\x27\x4e\xf0\xbd\xef\x7d\xef\xf0\xde\xbd\x7b\ +\xbf\xba\x73\xe7\xce\x47\xa6\xa7\xa7\x8f\x77\x43\x5d\x17\xf0\xae\ +\xf8\x1a\xda\x0f\x68\xa7\xef\x2a\xc1\xae\xac\xac\xb4\x2e\x5c\xb8\ +\x30\x63\x8c\xe9\xa8\xea\xc6\x30\x0c\x87\x87\x86\x86\x90\x34\xa5\ +\xb6\x7d\xbb\x04\x41\x40\x7b\x6a\x8a\xf6\xcc\x9c\x4f\x56\xba\xb4\ +\x9a\xf1\x4d\x53\x97\x08\xee\xca\xc6\xa6\xf2\xb5\x99\xae\x95\x58\ +\xab\x17\x5d\x48\x64\xcd\x0d\x9c\xfa\x64\xc9\x39\xa8\x5f\x77\x3d\ +\xa3\xbf\xfa\x21\x36\xbc\xef\x7d\x68\x6f\x2f\x85\xb5\x1c\x3c\x78\ +\x50\x9e\x7d\xf6\xd9\x43\xfb\xf6\xed\xbb\x7f\xf7\xee\xdd\x5f\x9b\ +\x9e\x9e\x3e\x09\x2c\x95\xc2\x67\xaf\x24\xfc\x0f\xa3\x80\xcb\x95\ +\xd0\x39\x7f\xfe\xfc\x9c\x31\x66\x25\x08\x82\xd1\x20\x08\x86\x07\ +\x07\x07\x25\xa8\xd5\xb4\xb6\x7d\xbb\x04\x61\x48\xeb\xc4\x71\x1a\ +\x8b\x8b\xd8\xf2\xfd\x87\xc2\x2a\x85\xf3\xbb\x75\x17\xbf\x17\xd6\ +\xef\xd6\x2a\x79\x79\x6e\xfd\xf9\xbc\x3c\x5f\xa8\x5f\x10\xb6\x40\ +\xef\xb6\xad\x6c\xf9\xc8\x47\xd9\xf0\x81\xf7\xa3\x7d\xfd\x9a\xe5\ +\xb9\xbc\xf8\xe2\x8b\xb2\x7f\xff\xfe\xc3\x7b\xf6\xec\xf9\xdb\x5d\ +\xbb\x76\x3d\xd1\x05\xbc\x32\xce\xe7\xdf\x4f\xf8\x1f\xf6\x8d\x11\ +\x05\x0a\x11\x69\xa9\x2a\x73\x73\x73\x6e\xf7\xee\xdd\x3b\xad\xb5\ +\xd6\x39\xf7\x11\xe0\xba\xeb\x6f\xb8\x41\xaa\x03\x03\x3a\xfc\x9e\ +\xf7\x30\x74\xfb\xed\xe2\x96\x97\xaf\xdc\x8f\x2f\xeb\x8f\xe8\x2b\ +\x74\xee\xeb\x25\x2f\x0d\x5d\xb2\x64\xd9\xdb\x8b\x6c\xde\xac\x32\ +\x30\x40\xab\xd9\x92\x43\x07\x0f\xf2\xec\xb3\xcf\x1e\xde\xb3\x67\ +\xcf\x67\xbf\xf1\x8d\x6f\xec\x9e\x9f\x9f\x3f\x0d\x2c\x97\x63\x2d\ +\x7e\x90\xf0\x3f\xca\x2b\x33\x4e\x55\x73\x11\xdf\x4c\x36\x3f\x3f\ +\x7f\x6a\xe7\xce\x9d\x4f\x1a\x63\x22\x11\xf9\xd5\x30\x0c\xaf\xd9\ +\xba\x6d\x9b\xe9\xdd\xb8\x91\x78\x7c\x5c\x83\x20\x90\x4b\x49\xd3\ +\xf5\x0b\x37\x3f\x68\x4c\xf2\xf2\x37\xad\x4a\xaa\xda\x5a\xab\x59\ +\xa7\x23\xcb\x8b\x8b\x9c\x3c\x71\xc2\xed\xdf\xbf\xff\xe8\xbe\x7d\ +\xfb\x3e\xbf\x73\xe7\xce\x27\x57\x57\x57\xcf\xfc\xa8\xc2\xff\xa8\ +\xaf\xce\xaa\xaa\xae\x59\xc2\xea\xea\xea\xe4\xe3\x8f\x3f\xfe\x68\ +\x10\x04\x49\x18\x86\xef\x06\xae\x19\xdb\xb2\x25\x4c\xd3\x6e\x91\ +\xaf\xfc\x54\x37\xaf\x50\x69\xb7\xdb\x4c\x9e\x39\x53\xec\xdf\xbf\ +\xff\xe8\x33\xcf\x3c\xf3\x95\xc7\x1f\x7f\xfc\xd1\x46\xa3\x31\xf5\ +\xe3\x08\xff\xe3\xbc\x3b\xac\xa5\x25\xa0\xaa\xd2\x68\x34\xd8\xb5\ +\x6b\xd7\x83\xc6\x18\x03\xbc\x73\x69\x69\x69\x6b\x4f\x4f\x4f\xa8\ +\xfa\xd3\x96\x7e\x6d\xcd\x52\x56\x56\x56\x8a\xe3\xc7\x8f\x9f\xdc\ +\xb7\x6f\xdf\x23\xbb\x76\xed\x7a\xf0\x32\xe1\xf3\x7f\x92\x77\x87\ +\xcb\x2d\x06\x52\xa0\x77\x6c\x6c\x6c\xeb\xeb\x5e\xf7\xba\x3b\xfb\ +\xfb\xfb\x5f\x15\x04\x41\xdd\x39\xa7\x3f\xe1\xb3\xaf\xa8\x7c\x63\ +\x8c\x58\x6b\x57\x17\x17\x17\x5f\xfc\xce\x77\xbe\xb3\x7b\x72\x72\ +\xf2\x24\xb0\x8c\x6f\xc7\xca\xfe\xc9\x5e\x9e\x5e\x77\x6f\x58\xf6\ +\x81\xd5\x81\x1e\xa0\x56\x2a\x26\x58\xf7\x2e\xe4\x4f\x45\xf8\x75\ +\xc9\x59\x56\x26\x36\x2b\xc0\x6a\x89\xf6\x3f\x92\xd9\xaf\xdf\xfe\ +\x1f\xba\xc9\xa0\xf1\xd3\x43\x85\x2f\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ \x00\x00\x0b\x2d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -190,80 +1221,6 @@ \x57\x58\xe6\x90\x67\x11\xf2\xd4\xf9\x2c\x77\xe2\x73\x08\xbc\x41\ \xbc\x15\x05\x78\x11\xb1\xff\x01\xed\xeb\x89\x21\x3a\xe3\x55\x01\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x04\x7f\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ -\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ -\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ -\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\x1b\xaf\x01\ -\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x01\x0a\ -\x17\x02\x30\xf6\x73\x58\xfb\x00\x00\x03\xff\x49\x44\x41\x54\x48\ -\xc7\xbd\x95\x6b\x4c\x9b\x75\x14\xc6\x9f\xb7\xd7\xc1\xe8\xe8\xca\ -\x66\x3b\x4a\xc9\x80\x7a\x03\x5a\xca\x8c\x81\x99\x60\x5e\x37\x2e\ -\x92\x2c\xd9\x07\x2c\x4a\xe4\x36\x32\x34\xc6\x84\x0c\xe2\x40\x12\ -\x63\x5f\xb2\xa8\x89\x41\xe2\x52\xd6\x80\x51\xc1\x38\xa5\xc8\x75\ -\x1b\x42\x3b\x88\x62\x59\x02\x6c\x0c\x07\x04\x4a\xe2\x56\x20\x8b\ -\x5c\x02\x65\xa9\xb6\x89\xbc\x57\xbf\xa0\x21\x0a\x8c\x6e\xd1\xf3\ -\xf9\x7f\xce\xef\xfc\x9f\x73\x9e\x1c\xe0\x3f\x0e\xe2\x51\xf3\x2a\ -\x2a\x2a\x4c\x99\x99\x99\x65\xa1\xa1\xa1\xa9\x1c\xcf\xc9\xfc\x7e\ -\xdf\xdd\x55\xef\x5a\x6b\x6d\x4f\xdd\xe5\x99\xb6\x19\xfa\xb1\x9a\ -\xb2\x58\xde\x2b\x59\x5c\x5a\xa4\x39\x8e\x15\x7c\x3e\x9f\x30\x37\ -\x3f\x27\xdc\x1e\x1f\x13\x3a\x3a\xdb\xf8\x8a\x77\xce\x59\x01\x48\ -\xfe\x7a\x2c\xd9\x9a\x39\x38\x38\x28\x3c\xac\x7a\x4d\x4d\x8d\x3e\ -\xf5\xf8\x0b\xf5\x52\xa9\x54\xca\x32\x1c\xc4\x12\x31\x5a\xed\x76\ -\xbe\xa3\xa3\xc3\x73\xe7\xce\x44\x0f\xc3\x30\x76\x00\xc2\xb6\x80\ -\x4d\xc8\xae\x00\x85\x62\xff\xe9\xf0\x70\x45\x08\xc7\x71\x60\x58\ -\x1a\x04\x41\xa0\xb7\xcf\xf1\xf5\xad\x5b\x63\xd5\x14\x45\x2d\x92\ -\x24\x79\x8e\x24\x49\x62\x47\x00\x00\x50\x14\xb5\xd3\x6c\xc4\x45\ -\x45\xf9\x76\x8f\x67\x1e\x31\x31\x7a\x30\x0c\x03\x91\x58\x8c\x23\ -\x1a\x8d\x1b\xc0\xf2\x76\x09\xa2\x20\xf5\x0f\x79\x36\x3e\xe1\x79\ -\xb7\x7b\x06\x2c\xcb\x80\x65\x59\xb0\x0c\x8b\xc2\xc2\x82\xf4\xf8\ -\xf8\x78\xe9\xd6\xc6\xaa\xaa\xaa\xc2\x83\x06\xa4\xa5\xa5\x3d\xa5\ -\xd7\xc7\x45\x4b\xa5\x32\xb8\x67\xdc\x20\x08\x02\x2c\xcb\x20\x56\ -\x1f\x97\x5e\x5c\x5c\xd0\x5b\x56\x56\x16\xbd\xbc\x7c\xff\xb9\xeb\ -\xd7\x9d\x5f\x28\x0e\x84\x8d\x05\x0b\x20\x48\xf2\xc5\x53\x5a\xad\ -\x96\xd0\x6a\xb5\xe8\xec\xea\xc6\x47\x1f\xd7\x82\x65\x59\xec\x93\ -\xcb\x11\xa5\x8b\x3e\x19\xba\x3f\x64\x56\x1f\xf7\xcc\x58\x64\x64\ -\x64\xc9\x90\x6b\xe8\x41\xb0\x00\x79\xa2\xc1\x98\x73\xf7\xde\x1c\ -\x3a\xbb\x7b\x60\x3a\x76\x0c\x3d\x0e\x07\x26\xa7\xa6\x00\x01\xd0\ -\xe9\x74\x08\x0b\x0b\x0b\x91\xed\x93\x11\x23\xa3\xa3\x6c\x7f\xff\ -\x40\x4b\x30\x00\x82\xa2\xde\x37\x27\x9b\x4c\x46\x43\x42\x02\x7e\ -\x5d\x5a\x82\x58\x24\x42\x6c\x4c\x0c\x5a\xdb\xdb\xc1\xf3\x3c\x94\ -\x4a\x25\x08\x82\xc0\xac\x7b\x56\xa8\xae\xac\x76\xf2\x3c\xdf\xb2\ -\xe3\x16\xfd\xb3\xb8\xcd\x66\xcd\x4b\x49\x39\xde\xb8\xb2\xb2\x02\ -\x83\xc1\x80\xec\xac\x0c\xf4\x3a\x1c\x38\x1a\xa5\x85\x29\xc9\x08\ -\x99\x5c\x86\xd5\xd5\x15\xac\x7b\xd7\x99\xd7\x2d\xf9\xdf\x33\x0c\ -\x53\x0d\x60\x05\xdb\x78\x40\xa0\x28\xea\x6f\x93\x98\xcd\x66\x71\ -\x73\xf3\x97\x96\xcb\xdf\x7e\xc3\x65\x65\x65\x09\x29\xa9\x29\x82\ -\xcb\xe5\x12\x3c\x9e\x7b\xc2\x8f\x83\x3f\x70\x79\x79\xaf\xfd\xf6\ -\x12\x49\xce\x91\x24\xe9\x12\x8b\xc5\x56\x00\x85\x9b\x66\xdd\xdd\ -\x07\x00\x50\x52\x52\xa2\x38\x91\x71\xa2\x69\x7a\x6a\x3a\xc7\xe9\ -\x74\x22\x42\x15\x01\x9d\x2e\x1a\x6a\x8d\x9a\xbf\x74\xc9\x76\xd3\ -\x6a\xb5\x5e\xa3\x69\xfa\x36\x80\x39\x00\x6b\x00\xfc\x14\x45\x6d\ -\x6c\xa6\x0b\xbb\x02\xca\xcb\xcb\xf5\xa6\x64\x43\x47\x5b\xeb\x77\ -\xc6\xf1\xf1\x9f\xa1\x52\xa9\xc0\xb2\x2c\xce\x14\x17\x09\x36\x9b\ -\xad\xeb\xe2\xa7\x17\x2b\x01\x2c\x00\xe0\x1e\xa6\xef\xbf\x00\x7e\ -\xbf\x2f\xfb\xc9\xa7\xe3\x46\x6c\xb6\x86\x88\xf9\xf9\x05\x48\xa4\ -\x12\xd0\x34\x8d\x97\xb3\xb3\x30\x39\x39\xe5\xda\x2c\xee\xd9\xeb\ -\xea\x6d\x05\x48\xaf\x5e\xed\xae\x3e\xac\x3e\x7c\xad\xa1\xe1\x33\ -\xc9\xda\xaa\x17\x22\x91\x08\x1c\xcb\x21\x29\x39\x09\xaa\x83\xaa\ -\x5f\x4a\x4b\xdf\x38\xbf\x29\x09\x82\x02\xe8\xf5\x7a\x79\xd1\x99\ -\xfc\x7a\xb5\x5a\x73\x76\x7a\x7a\x1a\x07\x14\x0a\xd0\x1b\x34\x02\ -\x81\x00\xa2\xa2\xa2\x90\x71\x32\xdd\x5b\x79\xbe\xaa\x12\xc0\xf8\ -\x56\x7d\xf7\x12\x22\x00\x78\xf3\xad\xd2\x2a\x8e\xe3\x72\x9b\x9a\ -\xbf\x7a\xd7\xbb\xfe\xe0\x15\xf3\xab\xe6\xfb\x4a\xa5\x12\x5a\xad\ -\x16\xc5\xc5\x85\x1b\x9f\xd4\xd6\x7d\xe0\xf5\x7a\xfb\xf6\xa2\xf9\ -\xb6\x3f\x38\x14\x71\xc8\x7c\xa5\xeb\xca\xcd\xe1\x1b\xc3\x8d\xc3\ -\x37\x86\x7d\x26\x43\x82\xc6\x68\x34\xd4\x27\x1a\x12\x79\x7b\x8b\ -\xfd\xf3\xdc\xdc\xdc\x3a\x00\x75\x8f\x72\x9d\x24\x00\x20\x97\xcb\ -\x7e\x57\x1f\xd1\xa8\x01\xa8\x01\xf8\xff\x60\x99\x27\x92\x93\x93\ -\x04\x47\x9f\xa3\xdb\x62\xa9\x79\xfb\xb1\x6f\x72\x63\xa3\xad\x20\ -\xfc\x60\x78\xd3\xe8\xc8\xe8\x08\x41\x10\x0b\x31\xb1\x47\x73\x7e\ -\x1a\x1c\xea\x6f\x6f\xeb\x2c\x0b\x76\xa8\x3b\x1d\x7d\xd1\x85\x0f\ -\x2f\x14\x31\x0c\x7d\x36\x10\x08\x10\x13\x13\x93\x3d\x03\xce\x81\ -\x66\x00\x4b\xc1\x0e\xf5\x7f\x8f\x3f\x01\x2e\x51\xa3\xa9\xc7\xde\ -\x69\x7b\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x20\xb1\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -790,523 +1747,6 @@ \x53\x4d\x4d\x4d\xc1\xa9\xa6\xf6\x23\xda\xff\x01\xb7\xbe\xbf\x34\ \x7c\xc5\x7a\x2d\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ -\x00\x00\x20\x26\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ -\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ -\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ -\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ -\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x02\x15\ -\x0e\x23\x2f\xab\xc9\xe5\x0b\x00\x00\x00\x1d\x69\x54\x58\x74\x43\ -\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x43\x72\x65\x61\x74\ -\x65\x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x64\x2e\x65\x07\ -\x00\x00\x1f\x7d\x49\x44\x41\x54\x78\xda\xcd\x9b\x69\x90\x5d\xd7\ -\x71\xdf\x7f\x7d\xee\xfa\x96\xd9\x07\xc4\x00\x33\x18\x02\x03\xae\ -\x22\x45\x53\x0b\x25\xd2\x91\x44\x53\x8a\x2d\x89\x91\x17\xad\xa4\ -\x2c\x5b\x52\x12\xc9\xf1\x56\x72\xca\xa9\xe4\x4b\x2a\x1f\x52\x89\ -\xbf\x38\x49\x39\x72\xe2\x4d\x92\x63\x4b\xb1\x55\x12\x4d\x49\xb4\ -\xc5\x45\x24\x41\x10\xa0\x44\x09\x80\x28\x42\x22\x41\x12\xfb\x3a\ -\x33\x00\x66\x06\xb3\xbf\xed\xde\x7b\x4e\xe7\xc3\xb9\x6f\x30\x00\ -\x41\xed\x76\xe5\x56\xdd\x79\x6f\xee\xf6\x4e\xf7\xe9\xfe\x77\xf7\ -\xff\xf4\x85\x1f\x73\x7b\xf1\xc5\x17\xf9\xff\x65\xfb\x49\xc6\x12\ -\xfe\x34\x06\x70\xe0\xc0\x81\xde\x9e\x9e\x9e\x9f\x37\xc6\xbc\x4e\ -\x44\x7a\x01\xfb\x8f\x24\x6b\xa0\xaa\xcb\xce\xb9\xef\xac\xac\xac\ -\x3c\x7e\xf3\xcd\x37\x2f\xff\xa4\x0f\x94\x1f\xe7\xa6\x3d\x7b\xf6\ -\x70\xfb\xed\xb7\x03\xf0\xf5\xaf\x7f\xbd\x32\x3a\x3a\x7a\x6f\xad\ -\x56\xfb\x70\x14\x45\x37\x1b\x63\x22\x40\x45\x04\x91\x2b\x3f\xfe\ -\xf2\xe3\xaa\xfa\x8a\xbf\xa5\xaa\xeb\xcf\x8b\x73\x2e\xcf\xf3\xfc\ -\x40\xa3\xd1\xf8\xdc\xd4\xd4\xd4\x17\xde\xfc\xe6\x37\xb7\x2e\x1f\ -\xd3\x3f\xea\xf6\xe0\x83\x0f\xae\x7d\x7f\xe0\x81\x07\x92\xe3\xc7\ -\x8f\x7f\xe8\xdc\xb9\x73\xdf\x5c\x5c\x5c\x6c\xaf\x36\x1a\xda\x6c\ -\xb5\xb4\xd5\x6e\x6b\xbb\xd3\xd1\x4e\xb9\x67\x59\xe6\xf7\x3c\xd7\ -\x2c\xcf\x35\xcf\x73\x2d\x8a\x42\xf3\xa2\xf0\x9f\xeb\x8e\x67\x79\ -\xbe\x76\x7d\xa7\xd3\xd1\x76\xbb\xad\xad\x56\x4b\x5b\xad\x96\x36\ -\x5b\x2d\x5d\x5d\x5d\xd5\x85\x85\x85\xf6\xb9\x73\xe7\xbe\x79\xfc\ -\xf8\xf1\x0f\x3d\xf0\xc0\x03\xc9\x95\xc6\xf6\x8f\xb2\xed\xd9\xb3\ -\x67\xed\xfb\xfd\xf7\xdf\x9f\x1e\x3e\x7c\xf8\xdd\xd3\xd3\xd3\x7b\ -\x16\x16\x16\x8a\x46\xa3\xa1\xed\x2c\xd3\x8e\xb5\x2e\x73\x4e\x73\ -\xa7\x5a\xa8\xdf\x6d\xb9\xbb\x72\xbf\xd2\xe6\xd6\xed\xdd\xeb\x0b\ -\x55\xcd\x55\x35\x73\x4e\x33\xe7\xb4\x63\xad\x6b\x67\x99\x36\x1a\ -\x0d\x5d\x58\x58\x28\xa6\xa7\xa7\xf7\x1c\x3e\x7c\xf8\xdd\xf7\xdf\ -\x7f\x7f\x7a\xa5\x31\xfe\x54\x5d\x60\xff\xfe\xfd\xbc\xe6\x35\xaf\ -\x01\x60\xe7\xce\x9d\xb5\xcd\x9b\x37\xbf\xa5\x5e\xaf\xff\xa7\x4a\ -\xb5\x7a\x47\x9a\x24\x88\x88\xae\x9c\x3c\xc1\xe2\xb1\xe3\x92\x35\ -\x56\x41\x04\xb8\xd4\x0d\x8c\xc8\xda\x2f\x0a\x82\x5e\xb4\x73\x7f\ -\x5c\x41\xfd\x1f\x7f\x4e\xb5\xbc\x46\x41\x95\xb8\x56\xa3\x6f\xfb\ -\x76\xed\xdd\xba\x0d\x55\x95\x76\xa7\x43\xab\xd9\xfc\xd6\xea\xea\ -\xea\x7f\x39\x7b\xf6\xec\x53\x77\xdd\x75\x57\xe3\xf2\xb1\xfe\x54\ -\x14\xf0\xdd\xef\x7e\x97\x5b\x6f\xbd\xb5\xeb\xf3\xf5\x91\x91\x91\ -\xb7\x56\xab\xd5\xff\x90\x56\x2a\xff\x2c\x89\x63\x44\x55\x57\xcf\ -\x9c\x91\x43\x9f\xfe\x33\x0e\xff\xcd\xe7\x58\x99\x5d\xea\xca\xb3\ -\xf6\xd9\xfd\x31\x53\xfe\xaf\x57\x18\x88\x00\xee\xb2\xeb\xd7\x3f\ -\xa3\x77\x43\x1f\xd7\xfe\xda\x87\xb9\xfe\xe3\xbf\x45\x6d\xcb\x16\ -\x45\x44\xda\xed\x36\xed\x76\xfb\xe9\x56\xab\xf5\x87\xe7\xcf\x9f\ -\xdf\xf9\xa6\x37\xbd\x69\xf5\xf2\x31\xff\xd8\x0a\x78\xee\xb9\xe7\ -\x00\xb8\xe5\x96\x5b\xba\xc2\xf7\x8c\x8c\x8c\xdc\x5d\xad\x56\x7f\ -\x2f\x4d\xd3\x3b\x92\x24\x51\x50\x56\x4f\x9d\x92\x83\x9f\xfe\x14\ -\x8b\x0f\xfd\x3d\x3d\x4b\x33\xf4\xd7\x13\x50\xc1\xb5\x1d\x61\xcd\ -\x80\x03\x2d\x20\x88\x04\x13\x09\xae\x50\x34\x57\x4c\xc5\x5b\x84\ -\x6d\x28\x26\x11\x24\x14\x5c\xee\x70\x05\x98\x00\x54\xa0\x58\x75\ -\x04\x55\x03\xa2\x2c\xae\x76\x58\xe9\xbb\x8a\xfe\xbb\x7f\x89\xeb\ -\x3f\xf6\x1b\xd4\xc7\xb7\xaa\x0a\x74\x3a\x1d\xe9\x74\x3a\xdf\x6a\ -\x36\x9b\x9f\x3c\x77\xee\xdc\xc3\x6f\x7e\xf3\x9b\x57\xae\x34\xfe\ -\x9f\x28\x0c\x3e\xf9\xe4\x93\x7d\x23\x23\x23\xbf\x52\xad\x56\xff\ -\x4d\x9a\xa6\x77\xc4\x71\x8c\x3a\xc7\xea\x99\xd3\x1c\xfa\xf4\x9f\ -\xb3\xf2\xe8\x57\xe9\x59\x9c\xa5\x1e\x45\x68\x0e\xa2\x10\x24\x01\ -\x61\x2a\xa0\x82\x6d\x39\xd4\x2a\xd6\x2a\x88\x60\x52\x83\xa9\x88\ -\x9f\xdd\x4c\xd1\x42\xa1\xf0\xf3\x6d\x22\x21\x48\x05\x54\x71\x99\ -\x57\x1e\x02\xf5\x20\x86\xc5\x39\x56\x1e\xff\x2a\x07\x51\xae\xff\ -\xd8\x6f\x52\x1f\x1f\x27\x8e\x63\x44\xe4\x0e\x11\x61\x64\x64\x24\ -\x7d\xf2\xc9\x27\x1f\xb8\xeb\xae\xbb\x96\x7e\x22\x17\x58\x6f\x42\ -\x4f\x3d\xf5\x54\xff\xe8\xe8\xe8\xfb\x2a\x95\xca\x47\x93\x24\xb9\ -\x2d\x8a\xe3\x58\x40\x9b\x53\x53\xf2\xe2\xff\xfa\x24\xab\x3b\x1e\ -\xa6\x67\x71\x81\x6a\x28\x84\x89\xc1\x84\x02\x4e\xd0\x8e\x12\xd6\ -\x0d\x58\x50\xab\x98\x48\x30\xa1\x17\xc8\x15\x8a\x49\xbd\xe1\xdb\ -\xa6\xc3\x24\x06\x13\x94\x16\x60\x15\x29\xa7\xa6\x68\x94\x96\x62\ -\x14\x97\x2b\x79\xe6\x68\x5a\x65\xa5\x67\x80\xfa\xdb\xee\xe6\x55\ -\x9f\xf8\x04\xd5\xd1\x31\x75\xaa\x92\x67\x59\x96\x65\xd9\xb7\x5b\ -\xad\xd6\x5f\x4f\x4d\x4d\xdd\xff\x96\xb7\xbc\x65\xf1\x07\xb9\x83\ -\xb9\xd2\xc1\xbd\x7b\xf7\xae\xdd\xb0\x7b\xf7\xee\xbe\x4d\x9b\x36\ -\xbd\x2f\x49\x92\x8f\xc4\x71\xfc\xda\x30\x0c\x63\x13\x04\xb4\x67\ -\xce\xf1\xfc\x27\xff\x88\x95\x47\x1e\xa2\x6f\x79\x81\x9a\x11\xa2\ -\xc0\x10\xc6\x86\xb0\x12\x78\x45\x58\x10\x27\x88\x13\x0c\x42\x18\ -\x1b\xa2\x6a\xf7\x9c\xc1\x38\x83\x71\x10\x60\x88\x12\x43\x54\xf3\ -\x0a\x0c\xf0\xe7\xc5\x09\xc6\xf9\xfb\xc2\x34\xf0\xf7\x07\x86\x2a\ -\x42\xef\xca\x02\x2b\x8f\x3e\xc4\x81\x4f\xfe\x11\xed\xf3\xe7\x08\ -\xc2\x80\x28\x8a\xe2\x38\x8e\x5f\x9b\x24\xc9\x47\x36\x6d\xda\xf4\ -\xbe\xdd\xbb\x77\xf7\x01\xdc\x7a\xeb\xad\xec\xdd\xbb\xf7\x87\xb3\ -\x80\xf5\x09\xc5\x13\x4f\x3c\xd1\x3b\x36\x36\xf6\x9e\x5a\xad\xf6\ -\xb1\x24\x49\x5e\x1b\x45\x51\x25\xae\x56\x59\x3a\x76\x4c\x5f\xf8\ -\xe3\xff\x29\xab\x0f\xfd\x03\xfd\xed\x15\xfa\x7a\x22\x0c\x7e\xd6\ -\x25\x10\x82\x48\xbc\xdf\xe7\x4a\x54\x37\xa8\x13\xef\xf3\x81\xf7\ -\x73\xb5\x0a\x0e\x4c\xd5\xc3\x9b\x6d\x80\x09\x81\x40\xd0\x42\x51\ -\xa7\x48\xe4\xcf\x15\x2b\x8a\x24\xa0\x06\x5c\xae\xa8\x55\x34\x00\ -\xe7\x1c\xcb\xab\x39\x8b\x69\x2f\xb5\x77\xfe\x22\x37\xfd\xde\xbf\ -\xd5\xde\xed\xdb\x25\x6b\x36\x29\xf2\xbc\xd5\xe9\x74\x9e\x6d\x34\ -\x1a\x9f\x99\x9c\x9c\xfc\xf2\xdb\xde\xf6\xb6\xe5\x57\x4a\x96\xcc\ -\xe5\x49\x4e\xf7\x82\xa7\x9f\x7e\xba\x3e\x3a\x3a\x7a\x77\xb5\x5a\ -\xfd\x8d\x24\x49\x6e\x8b\xa2\xa8\x12\x55\xab\xcc\x1f\x3c\xa8\x2f\ -\xfd\xe9\x9f\xc8\xfc\xfd\x5f\x64\xa0\xb9\x44\x5f\x35\x22\x4c\x02\ -\x82\xc4\x60\x8c\x60\x1c\x48\xe1\xf7\x30\x31\x84\xa9\x21\xaa\x08\ -\x41\x28\x88\x03\x32\x10\x2b\x04\x89\x10\x56\x84\x30\xed\x9e\x13\ -\x24\x53\xc4\x79\xb0\x8c\xaa\x42\x58\x09\x30\xdd\x73\x16\xc4\x82\ -\x09\x84\xa8\x62\x88\xd2\x80\xde\x34\x62\xa0\xb9\xc4\xfc\x97\xbf\ -\xc0\x4b\x7f\xf6\x27\x32\x7f\xf0\xa0\x46\x95\x0a\x61\x14\x55\x92\ -\x24\xb9\xad\x5a\xad\xfe\xc6\xe8\xe8\xe8\xdd\x4f\x3f\xfd\x74\x1d\ -\xe0\xf6\xdb\x6f\x7f\x59\xb2\xb4\xa6\x80\x1d\x3b\x76\xf0\xae\x77\ -\xbd\xab\x3b\xf3\xb5\xc1\xc1\xc1\xb7\x56\x2a\x95\x4f\x24\x49\x72\ -\x47\x18\x86\xb1\x09\x43\x96\x8e\x1e\xd5\x43\x9f\xfe\x94\x9c\xfb\ -\xec\xa7\xd9\x12\x5b\xfa\x7b\x52\x0c\x5e\x30\xb1\x42\x60\x84\x20\ -\x36\x04\xa9\x21\x48\x0c\x62\x05\xca\x3d\x10\xf1\xca\xa8\x1b\xc2\ -\x54\x10\xdb\xdd\x0d\x81\x7a\xd3\x8f\xea\x86\x30\x11\x8c\x0a\xe4\ -\xfe\xb9\xc6\x79\x25\x45\x15\xe3\x5d\x47\x04\x0a\x4a\xb7\x32\xf4\ -\xf7\x24\x6c\x49\x95\x73\x9f\xfd\x34\x47\x3e\xfd\x29\x59\x3a\x76\ -\x4c\x4d\x10\x10\x86\x61\x9c\x24\xc9\x1d\x95\x4a\xe5\x13\x83\x83\ -\x83\x6f\x7d\xe2\x89\x27\x6a\x00\xef\x7a\xd7\xbb\xd8\xb1\x63\xc7\ -\x45\x17\xd8\xbd\x7b\x37\x00\x77\xde\x79\x27\x00\xf7\xdd\x77\x5f\ -\x7a\xe3\x8d\x37\xbe\xb5\x56\xab\xfd\xc7\x4a\xa5\xf2\xb3\x69\x9a\ -\x02\x68\x7b\x76\x96\xe7\xff\xfb\xff\x90\xa5\xaf\x7c\x81\x2d\xa9\ -\xa3\xb7\x9e\xe0\x1c\xb8\x86\x62\x62\x81\x42\x08\x13\x21\xac\x1b\ -\x4c\x22\x60\xa1\x98\x71\x04\x35\x0f\x82\x12\x42\xd8\x13\x10\x54\ -\x05\xd7\x56\x8a\x79\x87\x24\x94\xb1\x4e\x09\x07\x0c\x92\x0a\xb6\ -\xa9\x14\xcb\x16\xb5\x20\x06\x6c\x1b\x82\x61\x41\x02\xc5\x76\x94\ -\x62\xc5\x61\x33\x07\x81\x0f\xa7\xa6\x06\xc6\x08\x4b\xab\x1d\xce\ -\xb4\x84\xbe\x77\xdf\xc3\xab\x7f\xff\xdf\x69\xb2\x61\x18\x10\xe9\ -\x74\x3a\xb4\x5a\xad\x6f\x36\x1a\x8d\x3f\x78\xe9\xa5\x97\x76\x7e\ -\xe0\x03\x1f\x68\x97\xd8\xc6\x9d\x77\xde\x79\x29\x06\x7c\xe6\x33\ -\x9f\x49\xde\xf0\x86\x37\xdc\x5d\xab\xd5\xfe\x7d\xa5\x52\xf1\x71\ -\x5e\x95\xd6\xb9\x73\xf2\xd2\xff\xfe\x24\xcd\x47\x1e\x62\xb0\xb9\ -\x44\x5f\x6f\xea\xfd\x59\x3d\xa2\x87\x35\x3f\xdb\x02\x98\xd8\x5b\ -\x01\x16\xdc\xaa\x12\x0d\x1a\xb0\x3e\x22\x98\x54\xbc\x72\x3a\x8a\ -\x6b\x83\xe9\xf3\x3f\x6f\x97\x1c\xa6\x66\x90\x08\x5c\x47\xd1\xcc\ -\x63\x80\x33\x4a\x7e\xc1\x11\xf4\x79\x7c\xb0\x6d\x87\xcb\x14\x35\ -\x8a\x0a\xd8\x86\x2b\xf1\x41\xb0\x99\x63\x69\xb9\xcd\x7c\xb5\x8f\ -\xea\x3b\xfe\x05\x37\xfc\xee\x27\xa8\x6c\x1c\x51\x44\xe8\x74\x3a\ -\xd2\x6e\xb7\xbf\xd5\x68\x34\xfe\xdb\xbe\x7d\xfb\x1e\xfe\xd8\xc7\ -\x3e\xd6\xe9\x82\x7d\xd0\x15\xfe\xf3\x9f\xff\x7c\xed\x96\x5b\x6e\ -\x79\x6f\xad\x56\xfb\xfd\x34\x4d\x6f\x4f\xd2\x04\x51\xa5\x71\xe6\ -\x0c\x87\xff\xe2\x4f\xa5\xfd\xe4\xa3\x0c\x76\x96\xa9\x47\x31\x64\ -\x52\x9a\xbe\x10\x24\x86\xb0\x62\x08\x22\x83\x58\xaf\x10\x29\x40\ -\x72\x21\xac\x05\x04\x35\xe3\x7d\xdc\xfa\xe3\x74\x4a\x77\xa9\x1b\ -\x82\x9a\xf8\x90\x59\x78\xa5\xd0\xf1\x85\xb4\x89\xbb\xe7\xfc\x73\ -\x34\xf7\x80\xaa\x39\x98\x50\x08\x6a\x06\x91\x12\x4c\x73\x0f\x9c\ -\xb6\x05\x49\x12\x12\x49\x87\xd5\xe9\x29\x96\x66\xe7\xe9\xb9\xe6\ -\x5a\xe2\xde\x5e\x82\x20\x10\x60\x0b\xb0\x75\x78\x78\xb8\x71\xe7\ -\x9d\x77\x1e\xfb\xd2\x97\xbe\x94\x7f\xfc\xe3\x1f\xf7\x0a\xd8\xb5\ -\x6b\x57\xff\xf8\xf8\xf8\xfb\x6b\xb5\xda\x6f\x56\x2a\x95\x37\x24\ -\x69\x2a\xa2\xaa\xab\xa7\x4f\xc9\xd1\xbf\xfc\x8c\x34\x1f\x7f\x84\ -\xbe\xd5\x45\x6a\x12\x10\x88\x4f\x52\xc2\xd4\x20\x81\xf7\xd3\xc0\ -\x78\x7f\x36\xf8\xe3\x41\x45\x08\x02\x41\xb2\xae\x80\xa5\xcf\xa6\ -\x86\xb0\xba\xee\x98\xc1\x03\x63\x2e\x84\x55\x7f\x9f\x98\x12\x2c\ -\xd5\x2b\xcd\xb5\x14\x53\xf7\x96\x23\x94\xd1\xc5\x51\x46\x19\x90\ -\x58\x30\xb1\xf7\x24\x51\x21\x44\x30\xad\x16\xab\xa7\x27\x59\x5e\ -\x5e\x91\xda\xb6\x09\x89\xfb\xfb\x35\x8c\x22\x11\x91\xcd\xc6\x98\ -\xd1\x81\x81\x81\xce\xbd\xf7\xde\x7b\xe2\x4d\x6f\x7a\x53\xdb\x00\ -\xd4\x6a\xb5\xb7\xa7\x69\xfa\x91\x24\x49\x5e\x1b\xc5\xb1\x41\x55\ -\x57\x4f\x9f\x96\x63\x7f\xf5\x97\x34\xbf\xf6\x10\x3d\x0b\xf3\xd4\ -\xc4\xc7\x64\x29\xe3\x79\x10\x1b\x82\xa8\x1c\xac\x05\x32\x45\x80\ -\x20\x16\x6f\x11\x15\x03\xb9\x9f\x6d\x29\x04\x03\x84\xa9\x10\xf6\ -\xfa\x88\x21\x19\x98\x42\x90\x5c\x30\x85\x10\xa4\xa6\x3c\xb7\x2e\ -\x22\x14\x3e\xaa\x84\x69\x69\x65\xa9\xf1\x4a\xe8\x00\x85\x07\xc8\ -\xa0\x74\xb9\x30\xf1\x2e\x69\x0a\xf1\x79\xc2\xd2\x02\xad\xc7\x1e\ -\xe6\xf8\x67\xff\x92\xc6\xe9\xd3\x82\x53\x8d\xe2\xd8\x24\x49\xf2\ -\xda\x34\x4d\x3f\x52\xab\xd5\xde\xde\x4d\x85\x0d\xf0\xfa\x28\x8a\ -\x6e\x8a\xa2\x28\x0e\xc2\x90\xe5\x63\xc7\x38\xfe\x57\xff\x87\xd5\ -\x47\x1e\xa4\x6f\x71\x9e\x5a\x1a\x12\xc6\x81\x0f\x71\x5a\x9a\x24\ -\x3e\xdd\x35\x81\x1f\x84\x84\x7e\x76\xc8\x40\xb5\x74\x8f\x14\x82\ -\xe4\xe2\x71\xc9\xbc\xcf\x4b\xee\x05\x36\x55\x01\x2d\x5d\xa6\x34\ -\x7f\x29\x84\x20\x02\x62\x5f\x2d\x9a\x96\x81\x36\xa8\x51\xc8\x7c\ -\x2e\x61\x22\xc1\xa1\x60\x9d\x77\x0d\x29\x9f\x6f\xf0\x96\x47\x40\ -\xcd\x29\x6e\xfe\x02\xcb\x0f\x3d\xc8\x51\x07\x13\x1f\xfd\x57\xf4\ -\x4c\x6c\x27\x8a\xa2\xb8\x28\x8a\x9b\x80\xd7\x03\x7f\x17\x02\x71\ -\x51\x14\x7d\x22\x12\x19\x63\x40\x44\xdb\x27\x4f\xca\xfc\xdf\x7d\ -\x91\xe1\xa2\x45\x3d\x8e\x09\x23\x1f\x8f\x8d\x08\xb4\x0a\x74\x39\ -\x43\xe3\xd2\x4c\x43\x90\x24\xc2\x44\x31\x14\xa1\x9f\x71\x01\x71\ -\xbe\xc0\x09\x2a\x5e\x68\x2d\x1c\x34\xdb\xd0\x74\x5e\x71\xc9\xc5\ -\xf2\x58\x0a\x41\x0b\x01\xe3\x43\x1b\x49\x80\xd4\x0c\x8a\xa2\x2b\ -\xde\xc7\xc5\x78\x1c\x30\x36\x83\xb8\x40\x2d\x68\xcb\xa2\x4e\x71\ -\x01\xd8\x86\x85\x48\x90\x54\x10\x15\x02\x31\xd4\xa3\x00\x5d\x9c\ -\xe3\xc2\xdf\x7d\x91\xd6\xcf\xdd\x25\x3d\xd7\x5c\xa3\xc6\x18\x11\ -\x91\xa8\x28\x8a\x3e\x20\x0e\x81\x38\xcb\x32\x51\xf5\xc4\x93\x82\ -\x84\xed\x26\xfd\x0b\xf3\xf4\x8e\x0c\x60\xd4\x9b\x96\xcf\xe7\x0b\ -\xc2\xc1\x61\xd2\x89\x09\xa2\x81\x3a\xb8\xb2\xc4\x35\x19\x6e\x7a\ -\x1a\x37\x77\x01\x43\x41\x90\x78\xd3\x27\x2f\x77\xeb\x08\x7a\x87\ -\x08\xb6\x6c\xc1\x0c\xf4\x41\xe1\x6f\x34\xf5\xb2\x34\x9e\x2f\x50\ -\xcd\x20\x6b\xe1\x66\xe7\x71\xf3\x0b\x68\x2b\x47\x82\x32\x1d\xae\ -\x7b\x73\x93\xb4\x8a\x6c\xbc\x0e\x33\xba\x09\x57\x14\xc4\xab\x0e\ -\x35\x40\x00\x45\xcb\xe2\x6c\x81\xda\x36\xf9\xe2\x22\x3a\x3d\x8b\ -\x2e\x2e\xd0\x5b\x8d\x29\xce\xcf\x13\xb6\x5b\x94\x46\x8b\xaa\x6a\ -\x96\x65\x02\x44\x21\x10\xe4\x79\x1e\x38\xe7\xa4\xcb\xbf\xc5\x81\ -\xa1\xaf\x16\x78\x40\x52\xef\x6f\xea\x14\xbb\xda\xa6\xfe\xd6\xdb\ -\xd9\xf4\x5f\xff\x80\x78\xf3\x96\xb5\xba\xbd\x38\x7f\x96\xe5\x4f\ -\xfd\x39\xd9\xce\xbf\xc7\xb4\x67\x30\x95\x08\xb1\x06\xb7\x02\x18\ -\x41\xdb\x16\xee\xb8\x85\xe4\x77\x7e\x9f\xf8\x96\x9f\x59\x47\x84\ -\xf8\x64\x5c\x5b\x0d\x74\xf9\x02\x6e\x6e\x0a\xfb\xec\x33\xe4\x4f\ -\xee\xc2\x1e\x3e\x88\x5b\x6d\xf9\x7a\x22\x35\x38\x2d\x30\x9b\x46\ -\xa8\x7e\xe8\xb7\xa9\xbd\xf3\xfd\x5c\x89\x45\xb4\xab\xab\xe4\x67\ -\xa7\x69\xbf\x74\x80\x95\xa7\x76\xb1\xfa\xf4\x4e\xb2\xb9\x19\xfa\ -\xeb\x01\x49\x68\xd6\xf8\x45\xe7\x9c\xe4\x79\x1e\x00\x61\x57\x01\ -\x62\xad\x5d\x77\x81\xa2\x0e\xcf\xd9\xa8\xf7\xb9\x30\x16\x6c\x54\ -\x25\xdc\xb6\x95\x78\xf3\x96\x4b\x0a\x09\x73\xd5\x46\x82\x6d\x5b\ -\xa1\xa7\x17\x6d\xcc\xf8\x4a\xb0\x4c\x5b\x83\x41\xa1\xdd\x50\x5a\ -\x81\x12\xa9\x12\x5f\x46\x92\xa0\x20\x95\x1a\xa6\x52\x23\xd8\x38\ -\x4e\x78\xd3\x1d\x84\x3f\x77\x37\xd9\xfd\x7f\x41\xbe\xeb\x61\xf4\ -\x78\x03\x71\xe0\x54\xc8\x33\x25\x2a\xf4\x15\xcb\xd8\xb0\x5e\x27\ -\xbc\xf6\x3a\x2a\xd7\x5e\x47\xcf\x5b\x7f\x81\xe5\x1d\x0f\x73\xfe\ -\xcf\xff\x98\x7c\xe1\x19\x9c\x73\x6b\xf2\x59\x6b\xc9\xf3\x5c\x80\ -\xc0\x5c\x89\x95\x55\xa7\x68\x07\x5c\xc7\x97\xad\x18\x50\x57\x10\ -\x5d\x37\x41\x72\xc3\x75\x2f\xe7\xaa\xc5\x10\x6d\x1b\xc7\x0c\x6f\ -\xc4\xb5\x42\xdc\xac\x43\x97\x94\xa0\xcf\x63\x84\x8b\xa1\x48\x15\ -\x17\xac\x11\x5c\xa8\xb5\x74\x1a\xab\x74\x9a\xab\x14\xad\x16\xea\ -\xdc\x9a\x60\xc1\xe6\xad\x84\xef\xb8\x07\x19\xdb\x82\xe9\x0d\xb0\ -\xf3\x8a\x9d\x71\xe4\x8b\x0e\xdb\xd1\x4b\x18\x63\xe7\x1c\xce\x59\ -\x5c\x79\xff\x7a\x65\xf4\xbd\xfd\x5d\xf4\xbe\xfd\x97\x09\x7a\x36\ -\x78\x17\x5e\xc7\x30\x77\x3f\xc3\x4b\x14\x50\x5e\x20\x02\x12\x81\ -\x89\x7d\xfc\x56\x0b\x2e\xcb\x49\xb6\x6c\x27\xdc\x76\xed\x95\xcb\ -\xca\x8d\x63\x98\xf1\xab\xe1\xe4\x0b\x04\xd9\xaa\x0f\x57\x6d\xa0\ -\xe2\x93\x1f\xb2\x92\xef\x2a\x85\x6c\x2e\x2d\x70\xe0\xef\xef\xc7\ -\x39\x4b\xda\x3b\xc0\xc6\x57\xdd\xcc\xf0\xc4\x35\xc4\x95\x2a\x12\ -\x04\x04\x9b\xae\xc6\x8d\xbf\x0a\xf7\x9d\x93\x04\xbd\x0e\x75\x86\ -\xa2\x66\x20\x94\xf5\x9c\x39\xf3\xa7\x4f\x32\x7f\xfa\x14\xce\x39\ -\xea\xc3\x1b\xe8\xdf\x3c\x4a\xb5\x7f\x00\x63\x0c\x26\xad\x30\xf0\ -\xcb\xef\x66\xe1\xe1\x87\x20\x0a\xd7\x94\xbc\x5e\x11\x21\x50\x6a\ -\xd1\xa1\x5a\x2a\xc3\xf8\x8c\x4b\x82\x92\xd4\xb4\x8a\xd3\x80\x78\ -\x6c\x2b\xe9\xd8\x38\x00\xce\x5a\xb2\x56\x8b\xb8\x52\xc1\x04\x01\ -\xe1\xc6\x51\xc2\xf1\x71\x8a\x81\x3a\x2c\xad\x22\x2a\xb0\x02\xb4\ -\x15\x6d\xe3\x51\x7e\x9d\xa1\xe5\x8b\x0b\x5c\xf8\xca\xe7\x20\xcf\ -\x28\xf2\x80\xe5\xdb\x6f\xc3\xdc\xf3\x51\x46\x5e\xfd\x7a\x7f\x41\ -\x94\x90\x0f\x6e\x01\x35\x44\x69\xc9\x2b\x24\xc6\x87\xdb\x35\x4b\ -\x75\x4c\x7f\xeb\x29\x0e\x7f\xf9\xf3\x34\xe6\xe6\x49\x37\x6f\x63\ -\xeb\x3f\x7f\x07\xd7\xbf\xf3\x9d\xf4\x8f\x6c\x46\x44\xa8\x4c\x5c\ -\x43\xb4\x6d\x2b\x54\x52\xaf\x00\xbd\x68\x39\x6b\x0a\x58\xf3\xff\ -\x2e\x07\x6b\x3d\x45\xe5\x72\xc5\x00\x06\x87\xd9\x34\x42\xb2\x75\ -\x1b\x51\x5f\x3f\x00\x59\xb3\xc9\xd9\x03\xcf\x33\x34\x31\x41\x7d\ -\xc3\x55\x44\x3d\x75\xc2\x4d\xe3\x14\xb5\x21\xf4\xdc\x39\x1c\xea\ -\x79\x81\x58\x7c\x9c\x0f\x29\x99\x62\xaf\x87\x48\x0b\xb6\x15\x33\ -\x24\x45\x46\x73\x36\x23\x7b\x21\xc6\x4e\x4f\x52\xdc\xf4\x3a\x42\ -\xe3\x73\x80\x4e\x1c\x11\x05\xa0\x2d\x87\x16\x0e\xd7\xe3\xc0\xae\ -\x77\x57\x25\x9a\x9b\xa3\xff\xe8\x11\xa2\xc9\xb3\x74\x4e\x9c\xe2\ -\x82\x38\xe6\xc6\xc7\xe8\x1f\xd9\xbc\xce\xa5\xc6\xd0\xb4\xba\x26\ -\x63\x17\x07\x5e\xa6\x80\xf5\x2c\xb5\xb3\x0a\xae\x54\x88\x58\xc2\ -\xed\xdb\x09\xb7\x8c\x23\x71\xe4\x15\xb0\xba\xc2\xe4\x53\x4f\x42\ -\x91\x53\xe9\xeb\x27\x4a\x53\xcc\xc6\x51\x18\x1e\xc3\x1d\x3a\x84\ -\xb1\x0e\x8d\xd5\xc7\x65\x2b\x10\xc0\x3a\x92\x9b\x00\x65\xb4\x2a\ -\xd4\x9c\x21\x6f\xa5\xac\xf6\x0e\x10\x26\xd5\x35\x23\x51\x55\x5a\ -\x8b\xe7\x09\x70\xb8\x0e\x3e\xee\x77\x4a\xee\xb0\x0b\xa2\x0a\x3d\ -\x61\xc4\xd5\xd5\x1a\x59\xb5\xce\xaa\x16\x64\xe7\x4f\x53\x4c\x9d\ -\x59\x7b\x86\x88\xe0\x7a\xfa\x21\x8a\xbc\x60\xe5\xf1\x4b\x14\xd0\ -\x45\xc8\xf5\x3c\x91\x04\xa5\x0b\x38\xc1\x59\x88\xc6\x27\x08\x47\ -\x46\x51\x13\xe0\x54\xc9\x97\x16\x59\xd9\xfb\x14\x0b\x3d\x3d\x8c\ -\xdc\xf2\x33\x84\x69\x8a\x8c\x8c\x22\xdb\x26\xd0\xef\x7d\x1d\x69\ -\xb4\xd0\x1c\x5c\x53\x71\x6d\xc5\x15\x0e\x67\x1d\x0a\x38\x55\x88\ -\x12\x64\xe2\x67\xb0\x6a\x91\xb1\x0a\xb5\x5b\xdf\x88\xd9\x3a\x81\ -\x31\x82\x05\x5a\x17\xe6\x68\x1f\x3c\x44\x3d\x2b\x90\x44\x20\x14\ -\x24\x16\x54\xbc\x1a\x7d\xa4\x72\x88\x58\xc2\xc8\x4b\xd2\x53\x80\ -\x86\x29\xf5\x4a\xa5\xbc\xc6\x21\x41\x40\x3b\xeb\x90\xd8\xe2\xe2\ -\x04\x5c\xee\x02\x97\xad\xbf\x79\x0c\x08\x40\x4a\x53\xd4\xb0\x4a\ -\x3c\xba\x95\x70\x70\x08\x44\xc8\xda\x6d\x9a\x67\x27\x89\x8e\xbd\ -\x48\x3e\x36\x81\x6d\xb6\x70\x7d\xfd\x04\x57\x6d\x24\xd8\xba\x15\ -\xdb\x57\x41\x8a\x16\x7a\x41\xb1\x40\xd1\xf6\x4a\x50\xa7\x9e\xf7\ -\xb7\x05\x66\xe8\x2a\xa2\x8f\xfd\x67\x54\x14\x89\xab\x04\xbd\x7d\ -\x48\xad\x8e\x5a\xcb\xca\xec\x0c\xd3\x5f\xdf\x05\x07\x8f\x20\xb9\ -\x85\xbe\xb2\x68\x4a\x14\x0d\xfd\x33\x9c\x3a\x54\x1d\x84\x01\x54\ -\x62\x4c\x5f\x42\xa0\x75\xa2\x89\x9b\xa8\x4e\x5c\x8b\x2d\x31\xc2\ -\x04\x01\xad\xf3\xd3\x04\xad\x66\xb9\x18\xa3\x2f\x07\xc1\xae\x39\ -\xac\x73\x2d\x9c\x53\x9c\x2a\x62\x95\x60\xeb\x16\xc2\xb1\x51\x24\ -\x4d\x51\xa0\x39\x7f\x81\xd9\xfd\xcf\x30\x94\x77\x60\xf2\x0c\x8d\ -\xd9\xf3\x04\x83\x83\x04\x49\x42\xb0\x61\x33\xb2\x61\x0b\x6e\x66\ -\x1e\x50\x82\x01\xc1\x34\x58\xe3\xf1\x1c\xe0\xac\x83\x30\x46\xae\ -\xbe\xc6\x27\x42\xea\xf1\x41\x8c\xa1\xbd\xba\xca\xf4\xb3\x7b\x39\ -\xf5\xe0\xff\xe5\x3a\xbd\x80\x29\x7c\x14\xc2\xe9\x1a\x9b\xec\x95\ -\xe8\xad\x36\x1c\xd9\x0c\x37\xdd\x8a\x1b\x6f\x52\x7f\xcd\xcf\x52\ -\xb9\xeb\xe7\x89\xb7\x4d\xe0\xb2\x0c\x55\xa5\x68\xb7\x29\x26\x27\ -\xa1\xd9\xf2\x18\x54\x0a\x7e\x65\x17\xd0\x8b\x20\x68\xdb\x8a\x69\ -\x3b\x50\x25\xda\xba\x0d\xd9\xb4\x19\x17\x45\x38\xa0\x7d\xe1\x02\ -\x17\xf6\x7c\x9b\xcd\x0d\xa1\x68\x2e\xb0\x78\xe2\x08\xc9\xe8\x18\ -\x95\x38\xc1\xf6\x5f\x45\x67\xf8\x7a\xcc\xdc\xb3\xa4\x83\xa1\x1f\ -\xac\x51\x48\x1c\x4e\x1c\xb6\x34\xdd\x35\xb0\x59\xf3\x39\x1f\x59\ -\x82\xb4\xc2\xf8\xeb\xdf\xc8\x55\xed\x0f\x23\x5f\xf8\x33\x68\xcf\ -\x52\xcc\x5a\xb2\x8e\x23\x37\x8e\xb8\x65\x4b\x25\xfa\xc5\x82\x9e\ -\x9f\x7b\x27\xbc\xe5\x17\x3c\x28\x18\x03\x81\x41\xad\xc3\x8a\xa0\ -\x45\xc1\x91\x5d\x4f\xd2\x38\x72\x9c\x81\xac\xc0\x18\xb3\x86\x77\ -\x97\xb8\xc0\xe5\x18\x20\xe2\xab\x3b\x89\x05\xd4\x10\x8f\x6d\x25\ -\xda\x30\x82\x44\x31\xce\x29\xc5\xfc\x2c\xee\xe0\x77\x08\x22\x47\ -\xfb\xdc\x0c\xed\x63\x47\xb0\xaf\xb9\x0d\xed\x1b\x20\xd8\xb8\x91\ -\xe8\xd5\x37\x52\x3c\xea\x17\x43\x24\x16\x6c\xc7\x2b\xd4\x59\xb7\ -\x06\x60\x9d\x95\x65\x26\x9f\xfd\x36\xea\x2c\x51\xa5\x4e\xff\xf8\ -\x38\xd5\xa1\x61\xc2\x38\x26\xe8\x1d\xa0\xf2\xc6\xb7\xd2\x39\x7d\ -\x92\xe2\xc4\x17\xa0\xa7\x8d\xa9\x0b\x52\xf7\x96\xa4\xeb\x73\x97\ -\x20\x44\xa2\xe8\xb2\xfc\x52\xb1\x79\xce\xd2\xd4\x24\xa7\xbf\xfa\ -\x65\xc2\xe9\xd3\x04\x5d\x8e\xed\x95\x30\xe0\x12\x96\x5c\x00\xe3\ -\x57\x70\x64\x68\x98\x68\xcb\x38\xa6\x56\x03\x11\x3a\x8d\x06\xf9\ -\xf2\x12\x7d\x7d\xbd\x44\x1b\x37\x12\x65\x06\x1a\x6d\x5c\x27\xc3\ -\xda\x02\x53\xeb\x21\xbe\x7a\x2b\xf9\x55\x43\xd8\xe3\x17\x10\xe3\ -\x28\x5a\xea\xa9\x2c\xab\xde\x77\x81\xe6\xcc\x0c\x2f\x7c\xf2\x0f\ -\x21\xcf\x50\x0c\xf5\x1b\xaf\x63\xfc\x17\xee\x66\xec\xb6\x37\x51\ -\x19\x18\x42\xeb\xfd\xd8\x57\xbd\x91\x9c\xfb\x89\xa2\x32\x22\x45\ -\x0a\x81\x4f\xd5\xbb\x02\xd8\xa2\x83\x2d\x0a\xbf\x8a\x64\x1d\x45\ -\x96\xd1\x59\x5d\xe1\xc2\xb1\x63\x9c\x7a\xf4\x61\xec\xd3\xbb\xa9\ -\xb5\x57\x09\x4c\x77\x61\x56\x5e\x9e\x09\x5e\xb4\x80\x75\x28\x59\ -\x28\xce\x7a\x1f\x0b\xb6\x6c\x81\x24\xc6\x15\x05\x36\xcf\x48\xc7\ -\xc6\xd9\xfc\xaf\x7f\x97\x38\x8a\x89\x73\x07\xa3\x63\x98\x4a\x15\ -\x9b\xe7\xbe\x2c\xee\x1f\xc6\x4e\xdc\x84\x9c\xd8\x45\x18\x19\x5f\ -\x4c\x19\x8f\x29\xea\xbc\x1b\x98\xbc\xcd\xe8\x85\x63\xc4\x79\x46\ -\xb6\x6c\x69\xce\x4f\xb3\xda\xd3\x4b\x63\x6c\x82\xb4\x7f\x08\x15\ -\x41\xae\x9e\xc0\xd6\x6b\x48\x63\x99\x22\xf7\x69\xb0\x2b\xdc\xda\ -\x78\x9d\x73\x9c\x3f\x74\x88\xb9\x43\x07\xc9\x5b\x2d\x6c\x9e\x93\ -\xaf\x2c\xd1\x3a\x7f\x8e\xd6\x91\xa3\xd8\x17\x0f\xb0\xa1\xb5\x42\ -\x54\xb8\x4b\x00\xee\xfb\x24\x42\xeb\xf2\x80\x02\xac\x1a\xe2\x91\ -\x51\xc2\xcd\xa3\x10\x46\xd8\xa2\xc0\x88\x50\xdd\xb2\x15\x19\xbb\ -\x1a\x05\x12\xca\x04\x27\x08\x70\x85\xf7\x4b\x57\xef\x87\x9b\x6e\ -\xc3\xee\x7c\x82\x30\x0d\xc1\x81\x0b\x40\x71\x6b\xb3\x17\x18\xd8\ -\x36\x54\xa7\x52\x74\xc8\x8d\x63\x31\xcb\xe9\xcc\xce\xe2\x96\x97\ -\x70\x28\x2a\x42\xd0\xdf\x4f\xde\xd7\x0f\x0b\xe7\xb0\x1d\x87\x6d\ -\x2b\x36\x2f\x05\x50\xc5\x15\x05\x8b\xcf\x7d\x97\xe9\x7f\xf8\x32\ -\xed\xb9\x79\x04\x07\x59\x0b\x5d\x5a\x22\x5e\x5c\x66\xd0\x2a\xf5\ -\x28\xf4\x39\x84\xbb\x58\x80\xfe\xc0\x3c\x40\x7d\x11\x08\x95\x0a\ -\xd1\x96\x71\xc2\x81\x41\xd4\x18\x70\x0e\x09\x43\x4c\x9c\xbc\xac\ -\x1c\x53\xeb\x50\x67\xb1\x45\x8e\xd4\xea\x44\x37\xdc\x4c\x3b\x48\ -\x08\xda\x4a\xd1\x76\xe5\xcc\x95\xc5\x8b\xfa\xff\xf3\x95\x8c\xb0\ -\xc8\x71\x6d\x4b\xb5\x56\x23\x19\x1e\x24\xa9\x56\xb1\x85\x2d\x81\ -\x52\x68\x4b\x40\x50\xae\xab\xab\x28\xaa\xae\x4c\xdd\xbd\x35\x85\ -\xf3\xb3\xf4\x9f\x3c\x44\x7e\x76\x06\x11\x43\x10\x08\x91\x18\xe2\ -\x20\xc0\x04\x1e\x17\xf2\x2b\xb4\xdd\x7c\xff\x3c\x40\x14\x8d\x04\ -\x19\x1e\x24\x9a\x98\x40\x92\xc4\x87\x94\x4e\x87\x4e\xa3\x41\xd1\ -\x69\xaf\xa5\xb5\xdd\x94\x2c\x8c\x63\xa2\x6a\x95\x30\x4e\x90\x28\ -\x26\xda\xb8\x89\xc6\xa6\xab\x29\xa6\x8f\x53\x34\x2c\xb6\xe3\x13\ -\x21\xd7\x15\x40\x05\x1b\x0d\x92\x4b\x86\xf4\x0b\xe6\xc6\xed\x04\ -\xaf\x7d\x1d\x66\xc3\x46\x5c\x91\xfb\x59\x6a\xb7\x69\xcd\x5c\xa0\ -\x12\x58\xbf\x86\x10\x2b\x1a\x5c\x54\xa2\xaa\xa3\x16\x1b\x92\x9e\ -\x14\xd7\xaa\x50\xb4\xf0\x8a\x2e\x93\x2d\x4f\x9f\xfb\xda\x06\xb9\ -\x72\xdf\xd1\x95\xf3\x00\xa7\x38\x0c\x3a\x38\x4c\xb0\x6d\x3b\x1a\ -\x04\x88\x31\xcc\x1d\x3f\xc6\x81\xaf\x7c\x89\x33\xdf\xde\x43\x10\ -\x45\x65\xd7\x12\x60\x2c\xc3\x37\xdc\xc4\x0d\xef\xf8\x45\x46\x6f\ -\x7d\x0d\x61\x10\xe2\x92\x94\xe2\xf5\xb7\x11\xee\x38\xe9\x31\x40\ -\xf4\x62\xd1\x55\x14\x04\x83\x43\xa4\xbf\xf5\x7b\x04\xce\x41\x5a\ -\xc7\x8c\x8f\x23\xc3\x1b\x21\xad\xe0\xac\xc5\xda\x82\xe5\xa9\xd3\ -\x98\x95\x65\x30\x0e\xeb\xc0\xe6\x65\x1e\xe0\x1c\xea\x9c\x27\x69\ -\x0a\xbf\xe4\x6e\x33\xc5\xa9\x40\xd0\x5d\x49\x2e\x6b\x1a\x51\xac\ -\x5b\x17\x71\xbb\xe4\xc9\xf7\x77\x01\xc5\x3a\x43\x30\xb8\x91\x74\ -\xfc\x6a\x08\x02\xd4\x18\x96\x8f\x1d\x41\x9f\xfe\x06\x63\x07\x5e\ -\x24\x4a\x22\x44\xfc\xb2\x95\x09\x1c\x79\x7b\x85\xec\xba\xeb\xc9\ -\xae\xbb\x1e\x93\xa6\x90\x26\xc4\x6f\xbc\x03\xbb\xf3\x7e\x9c\x71\ -\x68\x54\x9a\xb0\x75\xa8\x75\x50\xad\x11\xfe\xec\x5d\x17\xa3\x4f\ -\x18\xfa\x38\x0e\x20\x86\xce\xf2\x32\x87\xbe\xf4\x79\x36\x6b\x93\ -\xce\xbc\xc5\x15\x96\x3c\xb5\xd8\xce\xc5\x38\xae\xce\xe1\xda\x8e\ -\x7c\xd9\xe1\x56\x1d\x92\x1a\x24\x2e\x59\x6a\x05\x9b\xf9\x88\x63\ -\xf3\x2e\xea\xcb\x95\x5d\xe0\x65\xc5\x90\x31\xc8\x60\x1f\xf1\xab\ -\x6e\x24\xac\x54\x10\x63\xc8\x0b\x8b\x9e\x3a\x4d\xcf\xd9\x29\x7a\ -\x13\x25\xaa\x94\xa1\xa9\x80\x30\x14\x16\xcf\x4e\xc1\xd4\x24\xb6\ -\xd5\xf2\x1d\x40\x71\x42\xe5\xda\xeb\x59\xee\x1d\xc0\x2e\x2c\x63\ -\x33\x8b\x77\xeb\x92\x08\x15\x83\x24\xe9\x25\x21\x49\xfd\x09\x16\ -\xcf\x4e\x73\x7a\xc7\x43\x98\x3d\xbb\x30\x2b\x6d\xcf\x1d\x5a\x45\ -\x52\xf5\x33\x2c\xdd\xe7\x08\x9a\x80\x54\xbc\x7b\x38\xa7\x90\x7b\ -\xf3\x77\xae\x24\x72\xe4\xe5\xed\x38\x3f\x44\x31\x24\xb8\x34\xa5\ -\x55\xad\x32\x73\xf2\x24\x26\x8c\x68\x2c\xcc\xb3\x7a\xf0\x30\x49\ -\xab\x45\x1c\x19\x8c\x94\x99\x65\x01\xd2\x86\xb8\xdd\x24\x3f\x7a\ -\x8c\xb9\x17\x0f\xb0\xda\x69\x21\x4e\x61\x65\x85\x4e\xcf\x26\x8a\ -\xce\x24\xed\xc5\x06\x8b\xd3\x53\xe4\x27\x8e\xe1\xda\xed\x75\xf8\ -\xe1\xf3\xfa\xac\xb9\x42\x67\x71\x81\xa5\x93\x27\x59\xdc\xbf\x1f\ -\x79\xe1\x79\xc6\x16\xe6\x30\x56\x3d\x00\x2b\x58\x2d\x58\x99\x9f\ -\xc5\x1e\x3d\x8a\xeb\xb4\x21\x2f\xe8\x2c\x2c\x80\x2d\x20\x04\xd7\ -\x71\xd8\xac\xeb\x6e\xde\xfc\xdd\xba\xe8\xe6\x09\xce\x2b\x58\x00\ -\x5d\x98\x28\x19\x91\x70\x60\x40\x64\xe3\x26\x8e\x7c\xf9\x4b\xb4\ -\x1f\x7f\x1c\x4c\x80\x74\x9a\x0c\x9c\x99\x64\x28\x2f\x70\xa1\xff\ -\x91\xf2\x79\x88\x40\x12\x05\x2c\xbc\xf0\x1c\x53\x4b\x0b\x74\x7a\ -\x7b\x11\x20\xca\x2d\xa3\x33\xa7\x49\x43\xa1\x79\xfa\x04\x67\xff\ -\xf6\xaf\x29\x1e\xec\x87\x52\xfb\xdd\x2e\x10\xcd\x14\x8a\x0e\xd2\ -\x69\x22\xf3\xf3\xc4\x73\xb3\x0c\xda\x0e\x3d\x71\x0c\x45\xd7\x94\ -\x85\xf6\xec\x3c\xb3\x0f\xfd\x03\x2b\xcf\x7c\x1b\xb5\x16\x93\x2b\ -\x23\x33\x53\xf4\x2c\x37\x90\x42\x71\xca\x25\xd5\xa2\x07\x42\xa8\ -\xde\x7c\x23\xe1\xe0\x20\x65\x25\x24\xeb\xfa\xb5\xbc\x02\xf2\x3c\ -\x6f\x34\x9b\xcd\x22\xcb\x32\xc2\x38\x96\x74\xeb\x36\xbd\xea\x97\ -\x7e\x59\x2e\x7c\xee\xaf\x59\x7d\x7a\x0f\x0a\x54\x42\x88\xd2\x18\ -\x09\x23\x0a\x27\x18\xd5\x72\x61\x04\x34\x12\x82\x28\x20\xba\x30\ -\x43\x38\x79\x86\x5c\x9d\x27\x22\x82\x80\x70\xb8\x4a\x14\x85\x54\ -\x96\x2e\xd0\x3a\x3b\x8d\x5a\xbb\x56\x6e\xfb\x16\x19\xd0\xa6\x12\ -\x8a\xef\x30\xa9\x06\x21\xbd\x69\x48\xad\xc7\x87\xda\xa2\xed\x28\ -\xda\xe5\xd2\x57\xd6\x24\x98\x79\x1e\xf3\xbd\x67\xfc\xac\xb6\x15\ -\x4d\x13\x5c\x12\x43\xee\x85\x27\xf4\x5c\x86\x53\x87\x4a\x40\x65\ -\xfb\x35\x6c\xb8\xe7\x5e\xd2\x6d\x13\x8a\x73\x92\x65\x19\xcd\x66\ -\xb3\xc8\xf3\xbc\xd1\x55\x80\xce\xcc\xcc\xbc\x34\x39\x39\x79\x32\ -\x4d\xd3\x9e\x8d\x41\x10\x56\x47\x46\xd8\xf4\xde\xf7\x91\x0a\xcc\ -\xdd\x77\x1f\xed\x93\xc7\x11\x57\x78\x9a\x1c\xc5\xaa\x2f\x35\x05\ -\xf1\x09\x46\xee\x4d\xa1\x1e\x84\xf4\xf4\x44\x7e\xcd\x4f\x7d\x4d\ -\x61\xc4\x40\xa6\xf4\x07\x01\x83\x3d\x35\x24\xe8\x22\xb2\x10\x94\ -\x3d\x9e\x36\x2a\x01\xca\x74\x13\x16\xf5\xb3\x2e\x42\xd1\x2d\xd2\ -\x14\x12\x23\x6c\xae\xa4\x8c\x06\x09\xaa\x50\xc4\xd6\x27\x6d\x65\ -\x5f\xa1\xba\x6e\x06\xeb\xd0\x20\x22\xdd\x3a\xc1\xf0\xfb\x3e\x40\ -\xff\xaf\xbc\x07\xed\x1f\xa0\xd9\x6a\x32\x3b\x3b\x5b\x4c\x4e\x4e\ -\x9e\x9c\x99\x99\x79\x09\x9f\x9f\x91\x2c\x2d\x2d\x35\x92\x24\x89\ -\xa3\x28\xda\x98\x26\xc9\x50\xa5\x52\x91\xa0\x56\xd3\xca\xb6\x09\ -\x31\x81\xa1\x3d\x39\x45\xb1\xb4\x84\x2b\xac\xaf\x0f\x42\x5f\x57\ -\x28\xfe\x07\xd5\xe1\x5b\x5b\x04\x24\x12\x4c\x59\x9b\x14\x6d\x8f\ -\xc2\x9a\x79\xbe\x91\x08\x24\x36\x28\x50\xb4\x7c\x32\x53\xe4\x3e\ -\xbb\x33\x69\x49\x78\xa8\xc3\xe5\x8a\xcd\x1d\xd6\x2a\x2e\x73\xbe\ -\x49\x2a\x2a\xc1\xab\xbc\xde\x5a\x1f\x02\x25\x04\x82\x2e\xcd\xa5\ -\xd8\xc2\x41\x10\x92\x5e\xbd\x9d\x0d\xf7\xdc\x43\xff\x7b\xde\x83\ -\xeb\xeb\xd3\x4e\xa7\x23\x67\xcf\x9e\xd5\x43\x87\x0e\x1d\x79\xe6\ -\x99\x67\x1e\x7c\xec\xb1\xc7\x1e\x9b\x9d\x9d\x9d\x0f\x80\x60\x76\ -\x76\x36\x3f\x72\xe4\xc8\x5c\xa5\x52\x21\x8a\xa2\x91\x38\x8e\x07\ -\x7b\x7a\x7b\xc5\x54\x2a\x5a\x9d\xb8\x06\x11\x95\xec\xec\x34\xf9\ -\xc2\x22\x58\x77\x91\xdb\x2b\x57\x6a\x25\x10\x14\xf1\x40\xda\xf5\ -\x41\xeb\x97\xb3\x25\x64\xcd\x27\x11\x0f\x33\x2e\x2f\x41\x28\xea\ -\xc6\x64\x5d\x2b\xd5\xbb\x35\x88\x1a\x01\x51\x6c\xc1\x9a\x65\xd8\ -\xdc\xb7\xda\x69\xd9\x57\xe1\x4d\x1d\xd4\x09\xb6\xcc\x0f\x30\x01\ -\x95\x6d\x13\x0c\xbf\xff\xfd\x0c\xbe\xf7\xfd\xea\x7a\xfb\xc8\xad\ -\x95\xd3\xa7\x4e\x71\xe0\xc0\x81\x63\xdf\xfc\xe6\x37\x1f\xb8\xef\ -\xbe\xfb\x1e\x3a\x7d\xfa\xf4\x19\xa0\x15\x74\xd7\x67\x5a\xad\x56\ -\x7e\xf4\xe8\xd1\xf3\x49\x92\xb4\xe2\x38\xde\x14\xc7\xf1\x50\x5f\ -\x7f\x3f\x52\x49\xa9\xdd\x70\xa3\x18\x55\x3a\x93\xa7\xc9\xe6\x2e\ -\xac\x09\xae\x56\x3d\x6d\x66\xc0\x18\xf5\x1d\x23\xb9\x4f\x42\x5c\ -\xee\xdb\xe2\x24\x34\xe0\xb3\x68\x5c\xae\x14\x1d\x3f\x53\x12\x97\ -\x4d\x51\x52\x0a\x97\x95\x25\x73\xb9\x0e\x21\x21\x68\xd9\x03\x50\ -\x74\x1c\x45\xae\xb8\x52\x19\x84\x5d\xc1\xfd\x33\xbb\x33\xef\xd4\ -\x51\xd9\x3e\xc1\x86\x0f\x7c\x90\xc1\x0f\x7e\x08\x5b\xaf\x53\x58\ -\xcb\x89\xe3\xc7\xe5\xb9\xe7\x9e\x3b\xf2\x8d\x6f\x7c\xe3\x8b\x5f\ -\xf9\xca\x57\xbe\xb6\xb4\xb4\x34\x89\xe7\xac\x9b\xdd\x06\x09\x07\ -\xd8\x2c\xcb\xf2\x53\xa7\x4e\xcd\x85\x61\xb8\x9c\xa6\xe9\x58\x1c\ -\xc7\x43\xbd\xfd\xfd\x22\x49\xa2\x3d\x37\xbf\x1a\x51\xa4\x79\xf4\ -\x18\xf9\xfc\x05\x4c\x14\x96\x83\xd7\xb5\x19\x52\xe7\x85\x92\xd0\ -\xcf\x9e\x2b\xd4\x77\x7f\xba\x8b\x33\x29\x51\x49\x4b\x59\x20\xf4\ -\x94\x9b\xed\xf8\xf5\x3d\xc2\x12\xa8\x9d\xef\x1d\x76\x40\xd1\xb4\ -\xde\x52\x02\x59\x8b\xef\x5d\x58\x28\x0a\x8f\xf2\x2a\x8a\xed\x74\ -\x48\xc7\xaf\x66\xe4\xd7\x3f\xca\xf0\xaf\xff\xba\x16\x69\x4a\x6e\ -\xad\x74\x85\x7f\xea\xa9\xa7\xfe\xe6\x91\x47\x1e\xd9\xb9\xb2\xb2\ -\x32\x09\x2c\x02\x2d\xc0\x76\x2d\xc0\x89\x88\x05\x6c\xa7\xd3\xc9\ -\xce\x9f\x3f\xbf\x14\xc7\xf1\x6a\x9a\xa6\x9b\x2a\x69\x3a\x54\xad\ -\xd5\x24\xa8\x56\xa5\x76\xdd\x75\x1a\x55\x2a\xd2\x38\x74\x90\x6c\ -\x61\xbe\x64\x5f\x14\xe7\x04\x6b\x3d\xe5\x2c\xeb\x92\x0f\x97\x97\ -\xa0\x54\xb6\xbe\x11\x78\x41\xbd\x39\x7b\x8e\xc0\xe6\x1e\xb4\x24\ -\xf4\x1c\x84\x73\x4a\x51\x5c\xea\xeb\x5d\xc5\x38\xf5\xee\x51\xe4\ -\xba\x66\xf2\x8a\x62\xdb\x1d\xe2\xd1\x51\xc6\x7e\xf3\xb7\x19\xba\ -\xf7\x83\x6a\x6b\x35\x69\xb7\x5a\x32\x79\xe6\x0c\xcf\x3f\xff\xfc\ -\xe1\xa7\x9f\x7e\xfa\x0b\x3b\x76\xec\xd8\xbd\xb8\xb8\x78\x1a\x58\ -\x14\x91\x06\x90\xe3\xf9\x95\x8b\x15\x40\xa9\x04\xd7\x6a\xb5\x3a\ -\x33\x33\x33\x0b\x95\x4a\x25\x8b\xa2\x68\x43\x25\x4d\xfb\xd2\x38\ -\x0e\xe2\xa1\x21\xa9\x6c\xbd\x5a\xa3\x9e\x1e\x69\x1e\x3d\x4a\xbe\ -\xb0\xe0\x99\xf3\xb2\x5f\x68\xad\xde\xee\x22\xb2\x2b\xc1\xf2\x22\ -\xc3\xee\xf9\x46\xeb\xcf\xa9\x78\xcc\x70\x76\x5d\xfc\xb6\x25\x06\ -\x94\x4f\xb2\xa5\x85\x75\x85\x2f\xd7\x36\x7c\xc1\xe3\x7c\x5a\x9d\ -\x8e\x5f\xcd\x96\xdf\xfa\x1d\x06\xde\xfb\x5e\x65\x68\x48\x56\x17\ -\x17\x99\x9a\x9a\xca\x9f\x7f\xfe\xf9\x23\x7b\xf7\xee\xfd\xf2\xe3\ -\x8f\x3f\xfe\xc4\xdc\xdc\xdc\xa9\xae\xf0\xaa\x9a\x77\xd3\xb0\xe0\ -\xb2\x2c\x71\x4d\x09\x8d\x46\x23\x9b\x99\x99\xb9\x50\xa9\x54\x5c\ -\x1c\xc7\x43\x95\x4a\xa5\x2f\x0a\x82\x20\x1d\x1a\x96\xea\xf6\x6b\ -\x34\x88\x22\x69\x9d\x3e\x43\xbe\xbc\xe4\xeb\x70\xfc\xb4\xbb\x6e\ -\x58\x2a\x0f\xad\x37\x79\xe7\x74\x4d\x40\xa4\x34\x79\xf1\xdc\x83\ -\xb3\x9e\x2c\xed\x0a\x4f\xe8\xc3\xa2\x2d\x13\x1c\x57\x86\x38\xd5\ -\x12\x14\x71\x38\x0c\x95\xad\xdb\xd9\xfc\xd1\x7f\xc9\xd0\x3d\x1f\ -\x54\x06\x87\x64\xf9\xc2\x1c\x67\xcf\x9e\xcd\x0e\x1c\x38\x70\x74\ -\xdf\xbe\x7d\x0f\x3e\xf6\xd8\x63\x8f\x9e\x3f\x7f\xfe\xf4\x95\x84\ -\xbf\x92\x02\xba\x4a\x70\x7e\xb5\x79\xb5\x33\x37\x37\x37\x97\x24\ -\x89\x89\xe3\x78\x30\x4d\xd3\xbe\x24\x0c\x83\xa8\xb7\x57\x7a\x6e\ -\x7c\x95\xaa\x75\xd2\x99\x9e\x26\x5f\x5a\x42\x0b\xeb\x05\x2f\x53\ -\x4f\x5f\x72\x7a\x25\x38\x57\xe6\xfb\xee\x22\x25\xdd\x6d\x8b\x77\ -\x0e\x4f\x94\x96\xd7\xbb\x2e\x75\x8e\x77\x07\x6b\x75\xcd\x9a\xdc\ -\xc5\xe5\x6d\x34\x88\xa8\x6c\x9b\x60\xe4\xde\x0f\xb2\xf1\xc3\x1f\ -\x51\x5b\xab\xc9\xca\xc2\x02\x53\x53\x53\xd9\x0b\x2f\xbc\x70\x74\ -\xef\xde\xbd\x5f\xdb\xb1\x63\xc7\x23\xd3\xd3\xd3\xa7\x80\x05\x11\ -\x69\x5e\x2e\xfc\x2b\x29\xa0\x9b\xa5\x5b\xc0\x2e\x2f\x2f\xb7\x66\ -\x66\x66\xe6\xa2\x28\x92\x28\x8a\x86\xd2\x34\x1d\xa8\x56\xab\xc6\ -\x24\x09\xf5\x1b\x6f\x14\xa3\x8e\xf6\xe4\x14\xd9\xe2\x92\x6f\x50\ -\x30\xbe\x27\x00\x29\x73\x83\x12\xb8\x5c\xb9\xe6\xe8\x43\xa6\x9f\ -\x59\xd5\x75\x16\x51\xce\xb8\x67\x7a\xdc\xda\x71\x67\x3d\x76\x78\ -\x32\x44\xb1\xd6\xc7\xf9\xca\xc4\x04\x9b\xee\xb9\x97\x0d\xbf\xf6\ -\x6b\xd8\x34\xa5\xd5\x6c\xca\x99\x33\x67\x8a\x03\x07\x0e\x1c\xd9\ -\xb3\x67\xcf\x23\x3b\x76\xec\x78\x78\x6a\x6a\xea\x78\x09\x78\x0d\ -\xdf\xe5\xf0\xf2\xb6\x82\xef\xa7\x00\xd7\x7d\x7f\x61\x65\x65\xa5\ -\x31\x37\x37\x37\x17\x86\xa1\x0b\x82\x60\x43\x9a\xa6\xc3\x7d\x7d\ -\x7d\x62\x92\x44\xeb\xd7\x5e\x87\xc1\x48\x6b\x72\x92\xce\xc2\xfc\ -\x1a\xf3\xeb\x5c\x59\xfa\xae\x95\x18\xac\x2d\xbe\x6a\xd7\x15\xd6\ -\x7a\x11\xbc\xc7\x3b\x55\x6c\xd7\x55\xba\xee\xd4\xcd\xe9\x9d\x17\ -\x5e\x4d\x40\x75\xfb\xb5\x6c\xbe\xf7\x57\xd9\x70\xcf\x3d\xea\x6a\ -\x35\xf2\xa2\x90\x13\x27\x4e\xf0\xbd\xef\x7d\xef\xf0\xde\xbd\x7b\ -\xbf\xba\x73\xe7\xce\x47\xa6\xa7\xa7\x8f\x77\x43\x5d\x17\xf0\xae\ -\xf8\x1a\xda\x0f\x68\xa7\xef\x2a\xc1\xae\xac\xac\xb4\x2e\x5c\xb8\ -\x30\x63\x8c\xe9\xa8\xea\xc6\x30\x0c\x87\x87\x86\x86\x90\x34\xa5\ -\xb6\x7d\xbb\x04\x41\x40\x7b\x6a\x8a\xf6\xcc\x9c\x4f\x56\xba\xb4\ -\x9a\xf1\x4d\x53\x97\x08\xee\xca\xc6\xa6\xf2\xb5\x99\xae\x95\x58\ -\xab\x17\x5d\x48\x64\xcd\x0d\x9c\xfa\x64\xc9\x39\xa8\x5f\x77\x3d\ -\xa3\xbf\xfa\x21\x36\xbc\xef\x7d\x68\x6f\x2f\x85\xb5\x1c\x3c\x78\ -\x50\x9e\x7d\xf6\xd9\x43\xfb\xf6\xed\xbb\x7f\xf7\xee\xdd\x5f\x9b\ -\x9e\x9e\x3e\x09\x2c\x95\xc2\x67\xaf\x24\xfc\x0f\xa3\x80\xcb\x95\ -\xd0\x39\x7f\xfe\xfc\x9c\x31\x66\x25\x08\x82\xd1\x20\x08\x86\x07\ -\x07\x07\x25\xa8\xd5\xb4\xb6\x7d\xbb\x04\x61\x48\xeb\xc4\x71\x1a\ -\x8b\x8b\xd8\xf2\xfd\x87\xc2\x2a\x85\xf3\xbb\x75\x17\xbf\x17\xd6\ -\xef\xd6\x2a\x79\x79\x6e\xfd\xf9\xbc\x3c\x5f\xa8\x5f\x10\xb6\x40\ -\xef\xb6\xad\x6c\xf9\xc8\x47\xd9\xf0\x81\xf7\xa3\x7d\xfd\x9a\xe5\ -\xb9\xbc\xf8\xe2\x8b\xb2\x7f\xff\xfe\xc3\x7b\xf6\xec\xf9\xdb\x5d\ -\xbb\x76\x3d\xd1\x05\xbc\x32\xce\xe7\xdf\x4f\xf8\x1f\xf6\x8d\x11\ -\x05\x0a\x11\x69\xa9\x2a\x73\x73\x73\x6e\xf7\xee\xdd\x3b\xad\xb5\ -\xd6\x39\xf7\x11\xe0\xba\xeb\x6f\xb8\x41\xaa\x03\x03\x3a\xfc\x9e\ -\xf7\x30\x74\xfb\xed\xe2\x96\x97\xaf\xdc\x8f\x2f\xeb\x8f\xe8\x2b\ -\x74\xee\xeb\x25\x2f\x0d\x5d\xb2\x64\xd9\xdb\x8b\x6c\xde\xac\x32\ -\x30\x40\xab\xd9\x92\x43\x07\x0f\xf2\xec\xb3\xcf\x1e\xde\xb3\x67\ -\xcf\x67\xbf\xf1\x8d\x6f\xec\x9e\x9f\x9f\x3f\x0d\x2c\x97\x63\x2d\ -\x7e\x90\xf0\x3f\xca\x2b\x33\x4e\x55\x73\x11\xdf\x4c\x36\x3f\x3f\ -\x7f\x6a\xe7\xce\x9d\x4f\x1a\x63\x22\x11\xf9\xd5\x30\x0c\xaf\xd9\ -\xba\x6d\x9b\xe9\xdd\xb8\x91\x78\x7c\x5c\x83\x20\x90\x4b\x49\xd3\ -\xf5\x0b\x37\x3f\x68\x4c\xf2\xf2\x37\xad\x4a\xaa\xda\x5a\xab\x59\ -\xa7\x23\xcb\x8b\x8b\x9c\x3c\x71\xc2\xed\xdf\xbf\xff\xe8\xbe\x7d\ -\xfb\x3e\xbf\x73\xe7\xce\x27\x57\x57\x57\xcf\xfc\xa8\xc2\xff\xa8\ -\xaf\xce\xaa\xaa\xae\x59\xc2\xea\xea\xea\xe4\xe3\x8f\x3f\xfe\x68\ -\x10\x04\x49\x18\x86\xef\x06\xae\x19\xdb\xb2\x25\x4c\xd3\x6e\x91\ -\xaf\xfc\x54\x37\xaf\x50\x69\xb7\xdb\x4c\x9e\x39\x53\xec\xdf\xbf\ -\xff\xe8\x33\xcf\x3c\xf3\x95\xc7\x1f\x7f\xfc\xd1\x46\xa3\x31\xf5\ -\xe3\x08\xff\xe3\xbc\x3b\xac\xa5\x25\xa0\xaa\xd2\x68\x34\xd8\xb5\ -\x6b\xd7\x83\xc6\x18\x03\xbc\x73\x69\x69\x69\x6b\x4f\x4f\x4f\xa8\ -\xfa\xd3\x96\x7e\x6d\xcd\x52\x56\x56\x56\x8a\xe3\xc7\x8f\x9f\xdc\ -\xb7\x6f\xdf\x23\xbb\x76\xed\x7a\xf0\x32\xe1\xf3\x7f\x92\x77\x87\ -\xcb\x2d\x06\x52\xa0\x77\x6c\x6c\x6c\xeb\xeb\x5e\xf7\xba\x3b\xfb\ -\xfb\xfb\x5f\x15\x04\x41\xdd\x39\xa7\x3f\xe1\xb3\xaf\xa8\x7c\x63\ -\x8c\x58\x6b\x57\x17\x17\x17\x5f\xfc\xce\x77\xbe\xb3\x7b\x72\x72\ -\xf2\x24\xb0\x8c\x6f\xc7\xca\xfe\xc9\x5e\x9e\x5e\x77\x6f\x58\xf6\ -\x81\xd5\x81\x1e\xa0\x56\x2a\x26\x58\xf7\x2e\xe4\x4f\x45\xf8\x75\ -\xc9\x59\x56\x26\x36\x2b\xc0\x6a\x89\xf6\x3f\x92\xd9\xaf\xdf\xfe\ -\x1f\xba\xc9\xa0\xf1\xd3\x43\x85\x2f\x00\x00\x00\x00\x49\x45\x4e\ -\x44\xae\x42\x60\x82\ \x00\x00\x0c\x69\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -1508,446 +1948,6 @@ \x03\x00\x6b\xee\x3c\x46\xf3\xaf\x97\xb3\xf4\xd2\x13\x9c\xdc\xbd\ \x0c\x80\xff\x00\x1c\x7c\x06\xd9\x9b\xd6\x5b\xe7\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x03\x30\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ -\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ -\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\x4d\x00\x00\x0e\x9c\ -\x01\xde\xf6\x9c\x57\x00\x00\x02\xd2\x49\x44\x41\x54\x38\x8d\x6d\ -\x93\x4d\x68\x5c\x55\x14\x80\xbf\x73\xdf\x9b\xe9\xc4\x21\xcc\x4c\ -\x4c\xc6\x2a\x22\xb6\xa9\x93\x44\x0c\xa3\x62\xc1\x2c\x14\x9d\xd2\ -\x12\x35\x85\x52\x5a\x11\x6c\xa5\x1b\x71\x57\xe8\xce\xc5\x74\x37\ -\x82\x2e\xa5\x4b\x05\xcb\x20\xc6\x45\xdd\x48\x4a\xf0\x27\xf1\x07\ -\x69\xa4\x86\xc2\x98\xd0\xc4\x50\x14\x1a\x4d\x9b\x57\xf3\x63\xe0\ -\xbd\xe4\xdd\xf7\xee\xbd\x2e\x06\xa7\xb1\x7a\x56\xe7\x1c\x38\x1f\ -\x87\xc3\x77\x84\x7b\x62\x69\x69\xc9\x69\xad\xef\x6d\x03\x90\xcd\ -\x66\xa9\x54\x2a\xb2\xbb\xe7\xef\x2e\x5a\xad\x96\xdb\xba\xd0\xc0\ -\x9f\xbe\x8c\x12\xc1\xcb\x08\xce\x82\xb5\x0e\xa7\x1c\x5b\xcf\x8f\ -\xd1\x6a\xb5\x5c\xb5\x5a\xed\x40\x3a\xc9\xcc\xcc\x8c\x53\xcd\x0b\ -\xdc\xf7\xed\x57\x78\x22\x74\xed\xf5\x31\xeb\x16\x44\xf0\xef\x57\ -\x6c\xdf\x4a\x30\xc6\x12\xd5\x0e\x63\x4e\x9f\x65\x64\x64\x44\x3a\ -\x80\xe9\xe9\x69\xe7\x35\x3f\xa0\x77\x76\x8a\x6c\xc6\xc3\xf7\x05\ -\x3f\xeb\xa1\x3c\x01\x0b\x56\x1c\x26\xb5\x24\x3b\x16\x9d\x1a\xd6\ -\x0e\x1e\x22\x3d\xf5\x26\xb5\x5a\x4d\x64\x62\x62\xc2\x75\x7d\xfa\ -\x11\xe5\xab\xdf\xb3\x99\x11\x36\x8d\x63\xef\x9e\x0c\x7b\xba\x3d\ -\x82\x6d\x8b\x00\xbd\x5d\x42\x12\x59\x56\xa2\x04\x8b\xa3\x94\x3a\ -\xf4\xb3\x2f\x12\xbf\x76\x06\x15\x04\x01\x3d\x3f\x7c\x83\x38\x21\ -\x1e\x3d\xc6\xd8\x42\xc0\xce\xcb\x27\x59\x13\xc7\xa1\xd9\xdf\x79\ -\xe1\xc7\xdf\x28\xbc\x7b\x91\x2b\x5b\x09\x47\x17\x02\x8e\xce\xdf\ -\x22\x7f\xfe\x3d\xf4\x77\x5f\xb3\xba\xba\x8a\x0a\xc3\x10\x25\xa0\ -\xb2\x42\xe1\xf1\xa7\xd8\xd9\xdc\xa0\xfb\x89\x2a\x6e\xbb\x7d\x9e\ -\xcf\xde\x38\xc6\xc3\x07\x9f\x23\xdf\xdf\x0f\xc0\xf8\xe9\x93\x3c\ -\xfd\xfa\x19\x36\x4a\xbd\x84\x61\xd8\x06\x58\x0b\x6b\x91\xa1\x6f\ -\xb8\x4a\xeb\xd2\x38\xbd\x83\xc3\xfc\xa9\x0c\x69\x9a\xf2\xcc\x5b\ -\xe7\xb8\x73\x63\x91\x70\xf9\x0f\xd2\x34\x25\xd7\x53\x20\x35\x06\ -\x67\xcc\x5d\x80\x01\xee\x28\x45\x71\x7f\x85\x6b\x1f\x5f\xa4\x7b\ -\x5f\x3f\xb7\xb7\x1c\x71\x1c\xb3\x7c\x6d\x96\x5c\xdf\x83\xa8\x62\ -\x81\x38\x8e\x39\xf2\xce\xfb\xfc\xd4\xfc\x90\xe2\xe6\x3a\x51\x14\ -\xe1\x87\x61\x48\x92\x18\xa2\x47\x2b\x58\xa5\x38\xde\xbc\x84\x01\ -\x72\xfb\x0f\xa0\xb5\xe6\xe7\x4f\x9a\x0c\xbe\x7a\x0a\x3f\x5f\x44\ -\x6b\xcd\xf8\x93\xfb\x18\x44\xe8\x43\xda\x1b\x44\x51\x84\x4e\x0c\ -\xde\xc0\x10\x2b\x73\x2d\xa6\xce\xbf\xcd\xed\xeb\xf3\x94\x2a\x43\ -\x68\xad\x39\xf1\xf9\x14\x37\xaf\x5e\x61\xe3\xfa\x3c\x5a\x6b\x4a\ -\x0a\xf2\x16\x92\x24\x25\x8a\x22\xa4\x5e\xaf\xbb\x07\xa6\x26\xc9\ -\x2d\x2d\xe0\x7b\x8a\x03\x39\x9f\x65\xe7\x40\x14\x4a\xb5\x45\xe9\ -\x51\x0a\x27\x8e\x20\x4a\x29\x88\xa3\xa8\x60\xee\x91\x01\x56\x6a\ -\xa3\x6d\x91\xea\xf5\xba\x2b\x7f\x39\x49\x75\xe5\x17\x24\x01\x25\ -\x42\xae\xe0\x63\x22\x07\x80\x97\x17\xe2\xbf\x0c\xd6\x39\x5c\xc6\ -\xd1\x7a\x68\x80\xd5\xc3\x2f\xd1\x68\x34\xa4\xa3\x72\xbd\x5e\x77\ -\xe5\x2f\x2e\x33\xf8\xeb\x02\x9e\x08\xa2\xa4\x6d\xa2\x03\xac\xc3\ -\xe2\x48\x8d\x63\xb1\x7f\x88\xe0\xc8\x2b\x34\x1a\x8d\xbb\x2a\xef\ -\x86\x94\x26\x27\x78\x6c\x71\x0e\x2f\xeb\xe1\x2c\xe0\x40\x7c\x30\ -\xb1\xe1\xc6\xd0\x30\xeb\xa3\x63\x9d\xe1\xff\x00\xfe\x81\x04\x41\ -\xf0\xbf\xef\x5c\x2e\x97\xff\x35\x0c\xf0\x37\x5c\xfc\x53\xd5\x3a\ -\x96\xb0\xec\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x03\xb1\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ -\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ -\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\x1b\xaf\x01\x5e\x1a\ -\x91\x1c\x00\x00\x03\x56\x49\x44\x41\x54\x48\xc7\xdd\x95\x4d\x68\ -\x5c\x55\x14\xc7\x7f\xf7\xe3\xbd\x97\xe9\x34\x69\x5a\x93\x60\xdb\ -\x80\x60\xc1\x12\x9a\x20\x0d\x49\x88\x50\xca\x43\xbb\x70\x93\x85\ -\x62\x41\x2b\xea\x42\xb0\xb8\xb2\x20\x08\x6e\x64\xd0\x55\x4b\x2d\ -\x48\x37\x22\x48\x10\x8c\x20\xba\x09\x45\xa4\x12\xe2\x98\x8a\x29\ -\x1a\xa4\x92\x6a\x6d\x4a\x9b\xb4\x19\x9d\x98\xc4\xb1\xd3\x99\x79\ -\xf3\xde\x9b\xf7\xee\x75\x51\x2c\xe4\x63\x31\xc1\x6e\xf4\xec\xee\ -\xc7\x39\xbf\x7b\xee\xb9\xff\x73\xe1\xbf\x6e\xa2\x99\x4d\xfd\x9f\ -\x3e\xd4\xff\xdc\x23\x2f\x7d\x38\xbe\xf0\xc9\xa3\x8e\x94\xc1\xc1\ -\xae\xc1\xc9\xa1\xae\x43\x6f\x3c\xbb\xef\xd5\x5f\xb7\x04\xc8\xe7\ -\xf3\x76\xb3\x4d\x1f\x94\x4f\xf3\xee\x91\xf7\x99\x2d\xcd\x90\xda\ -\x98\x30\x89\x28\xdd\x5e\x65\xdf\x9d\x83\x9b\x06\xf5\x7d\xff\x5e\ -\x5c\xbd\x7e\x31\x9f\xcf\x6f\x70\xb8\xb6\x67\x8e\x6f\x0a\x13\x74\ -\x74\x08\x04\x29\x5e\xb5\x8d\xc9\xf9\x2f\x58\x9c\x2d\x6f\x16\x7c\ -\xcd\x58\x6f\x76\x82\x5c\x2e\xb7\x26\xb3\x87\x3f\xda\xf5\x43\x6c\ -\xa2\x81\xdf\x6a\xab\x08\x04\xd9\x44\x33\x2f\xaf\xce\x8c\xe5\x26\ -\x06\xd7\xf9\x6d\xb8\x01\xdd\x4c\x0d\x52\x63\x48\xad\x21\x6c\xc4\ -\x08\xa0\xc5\x1a\x8c\x69\xae\xc8\x4d\x01\x4c\x6a\x30\x58\x6a\x71\ -\x08\x08\xda\x74\x4a\x6a\xec\xfd\x03\x24\xc6\x24\xc6\x1a\xea\xc9\ -\xdd\x0c\x8c\x34\x24\xa9\x49\xb6\x04\x38\x3b\x73\xb6\xb7\x20\x0b\ -\x9c\xeb\x3c\x07\xa7\xf9\xde\xd3\x5a\x68\x29\xd1\x52\x26\x89\xb1\ -\x7d\x49\x9a\x12\x36\x42\xa4\x10\xc4\x6e\x8c\xc5\xf6\x0d\x7e\xde\ -\x3d\xed\x69\xad\x1d\xad\xd0\x12\xbb\xcc\x4f\xd4\xf6\xec\x67\xa2\ -\xf8\x59\xcf\x91\xdd\x47\xaf\xac\x01\xcc\xfd\x39\xf7\xde\xa9\xc7\ -\x4f\x51\x11\x65\x8e\xc6\x4f\x0f\x4a\x29\x11\xc2\x82\x00\x29\x04\ -\x59\x37\x63\x83\x30\x10\x00\x9e\xf2\xec\xf1\xde\xd7\xb3\x4a\xa8\ -\x61\x29\x24\x5a\x2a\xb6\x39\x59\xb6\xeb\xed\x34\x08\xf8\xea\xd6\ -\xd8\x3b\xc0\x33\x6b\x00\xa3\x97\x46\x87\x0f\x74\xf4\x70\xa3\x72\ -\x85\x62\x58\x44\x6a\x85\x52\xa0\x94\x44\x0b\xc9\x5c\x60\x44\xc3\ -\x84\x48\x01\xd3\x2b\x93\x42\x0b\x05\x48\x5a\x9d\x76\x8c\x51\xfc\ -\xb2\x74\x8d\x1b\xc5\x45\x5e\x1c\x1a\x61\x29\x28\x3c\xb9\xe1\x8a\ -\x82\x28\xb0\x97\x57\x7e\x26\x30\x65\x6a\x69\x1d\x65\x25\xca\x48\ -\x1c\xa3\x70\xd4\xdd\x6c\x94\x54\x78\xca\xa3\x45\xb5\xa0\x71\xa9\ -\xc4\x55\xbe\xfb\xe3\x22\xf3\xa5\x5b\x54\xc2\x90\xac\x69\xa7\xd6\ -\xa8\xd2\x30\xe9\xc6\x1a\x58\x63\xc7\xa7\x16\x2e\x1c\xeb\xe9\xec\ -\xc1\x53\x6d\x68\xa9\xf0\x94\x8b\x87\x8b\x46\xd1\xea\x64\xec\xc5\ -\xe5\xf3\xc2\xca\x98\xa1\xce\x27\x6c\x10\xd7\x85\x12\x9a\xbe\x07\ -\x0e\xd0\xb7\xab\x17\x8b\xc5\x95\x8a\x42\x78\x95\xc4\xa4\xe3\x9b\ -\x01\x4e\x64\xa2\xcc\xb1\xa9\xcb\x53\x14\xdd\xe2\x0c\x02\x90\x20\ -\x24\x89\xab\x54\xdf\x53\xfb\x47\xb2\x5a\x5b\x32\x6e\x96\xdb\xf5\ -\xbf\xc4\x97\x0b\xe7\x6b\x9e\x23\x67\x5d\xa5\xb4\xab\x14\xae\xd6\ -\xec\x8c\x3a\x06\xba\xdb\xbb\x89\x68\x9c\xd8\xf8\x4c\xdf\x66\xe5\ -\x64\xfe\x24\xf9\x7c\x9e\xdc\x9b\xb9\x7b\x0a\xb5\x80\x39\x63\xa7\ -\x83\x24\x18\xd6\x8e\xc4\xd3\x92\xba\x09\x48\x4c\x32\x7b\xf3\x85\ -\xca\x63\x6b\x95\xfc\xb2\xf5\x7d\x1f\xdf\xf7\x57\xfe\x99\x93\x4d\ -\x29\xd9\xa2\xab\x71\x15\x8b\x45\x29\x41\x64\x42\x52\xd3\x9c\x86\ -\x9a\x53\xb2\x35\x54\xa2\x0a\xa9\x13\x92\x71\x15\x51\x5c\x25\x69\ -\xb2\x57\x34\x05\xc0\xc0\x6a\xbd\x8c\x67\x22\xea\x8d\x06\x36\x89\ -\x48\xed\xbf\x00\xac\xef\x8a\x1f\xcb\x51\x5c\x62\x16\x4b\x15\x56\ -\x74\x8d\xbd\xdb\xba\xd9\x5b\xef\x1e\x78\x2d\xf7\xbc\xdd\x32\x60\ -\x7d\x3f\x07\x98\x5b\xfe\x1a\xe9\x2d\xb2\x50\x2d\x61\x52\x4d\x97\ -\xde\x8d\xd3\xea\xe0\xf7\xfb\xf7\xe7\xcb\x1c\x19\x7b\xf0\xd0\x1d\ -\xd4\x99\x0b\x4b\xbf\x0f\xb4\x7b\x3b\xea\x87\x77\x1e\xfe\xf6\xd2\ -\xf5\x1f\x5f\x59\x78\xab\x70\x93\xff\xbd\xfd\x0d\xf6\xbd\x75\x1d\ -\x3b\xea\x7e\x89\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\ -\x00\x00\x04\x2c\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ -\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ -\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\x00\ -\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ -\xde\x03\x0c\x12\x06\x08\xae\xb5\x4a\x3d\x00\x00\x03\xb9\x49\x44\ -\x41\x54\x38\xcb\x5d\xcb\x5b\x4c\x5b\x75\x00\x07\xe0\xdf\xff\x9c\ -\xd3\x9e\x76\x6d\x69\xc1\x52\x84\xca\x40\x2e\x16\xc7\x9d\x31\x67\ -\x9c\x66\x03\x27\x73\x2f\x8a\x71\x2c\x12\x12\x12\x1f\xa6\x89\x2c\ -\x73\xc9\x36\x37\x13\x6f\x0f\x5e\xa2\xcc\x88\x0f\xb8\x87\x3d\x78\ -\x99\x09\x09\x4b\x34\xd1\x38\x86\x3a\xb9\x3a\x04\x06\x1d\x84\x6b\ -\xa1\x2d\xd0\x0b\xa5\xed\xa1\x17\x7a\x4a\xdb\x73\xf3\xc9\x17\xbf\ -\xf7\x8f\xe0\x7f\xea\x00\xac\xf6\x78\xb0\x7f\xb1\x10\x00\xd0\x07\ -\x50\xbf\x9d\x69\x36\x15\x55\xd5\x3f\x22\xe6\xab\xcd\xac\xbc\x64\ -\xcd\x65\x33\x82\x73\x79\x67\xa2\xa7\x7b\x36\xc8\xfc\x17\xaf\xff\ -\x74\x15\xee\x73\x9f\xe3\xd9\xf0\x3e\xd5\x4e\xb4\xf2\xbb\x57\x3a\ -\xcb\xac\x95\xcd\xaf\x2f\x14\x72\xf5\xad\x79\xe5\x15\xe1\x4c\xf2\ -\xf1\xd8\xf4\x10\x76\x84\x2d\x18\x92\x31\xec\x39\x82\xc3\x25\x96\ -\x83\x2d\x04\x00\x2e\x5f\xac\xc7\xf5\x1e\x3b\x00\xe0\x30\xa0\x39\ -\xd6\xf5\xd2\x25\x5e\x6f\x7c\x7f\x6e\x88\x66\x6d\x2f\x04\x51\x7b\ -\x54\xc0\xae\x5f\x40\x69\x41\x03\xbc\x53\x03\xd8\x18\xf7\x80\x4f\ -\x88\x23\xb6\x23\xc5\x2d\x14\x00\x68\xee\xd8\x71\xfe\xe7\x5e\xb4\ -\xb5\xe1\xc0\xe9\xdb\xbd\xb7\x72\x5a\xda\x3f\x76\xb8\xfd\x78\x30\ -\xf5\x9d\x1c\xe7\xb6\x51\x7a\x92\x81\x62\x52\x63\xda\x31\x89\xb9\ -\xbf\xfd\xf0\x2b\x40\xda\xc4\xc4\x3e\xb9\xb1\x92\xa1\x15\x1f\x8f\ -\xc1\x6c\x99\x4a\xda\x1a\xe9\x12\x53\xd5\x37\x74\x9e\xa5\xa3\xb1\ -\x22\x28\x91\x1c\x95\x8a\x11\x52\xe4\xe9\x4e\x03\x16\x07\x78\x84\ -\x97\x05\x78\xe7\x37\x40\xcb\xe9\x8c\x56\x94\x69\xa3\x4a\xee\x9e\ -\x73\x8a\x76\x82\xa1\x2f\x80\xa6\x77\xf0\xf5\xc4\xa7\x6f\xe9\x8a\ -\x6d\xbd\xae\xe1\x11\x29\x15\x72\xd0\xc9\x1d\x0e\x12\x05\x04\xdc\ -\x5e\x48\xfb\x09\xe8\xf2\x53\x70\xfc\xa9\xc8\x8f\xb2\x22\x65\xc8\ -\xa2\x6f\x5c\x7b\xbe\xbc\xab\xf1\xa3\x15\x85\x00\xc0\xbc\x32\x9a\ -\xfd\xfd\xef\x77\xdc\x81\x99\x87\x9a\x02\x36\xc2\xae\x8e\xfa\x90\ -\x65\x12\x11\xe6\x62\x30\x9b\x4f\x23\xbb\xf0\x14\x84\x3d\x23\x7c\ -\xbe\x10\x88\xb2\xb5\xb5\xe6\x2e\x6b\x5d\x9e\x79\xd3\xde\xda\x71\ -\x93\xd0\x00\xf0\x58\x53\xcb\xb5\x8d\x91\x6f\x4f\x1d\x88\x6d\x52\ -\xf6\xb1\x20\xd1\x54\x18\x91\x10\xd3\x38\x56\xdd\x83\x27\x6a\xda\ -\x50\x5d\x57\x8b\xd1\x87\x01\x94\x54\x14\x2b\x12\x2c\xc6\xd2\x43\ -\xe6\x8e\xe8\x5e\xcd\xf4\xc4\x1f\x17\x5c\x74\xdf\xe2\x6d\x53\x44\ -\xc5\xf6\x4c\xf5\xf5\x9b\xa3\x7e\x9e\x98\x73\x68\x44\x96\x7d\x28\ -\x50\xbf\x08\xe4\x34\xe1\xe5\xd6\x2a\xdc\x9b\x74\x81\x97\x15\x4c\ -\xce\x7b\xc9\x92\x33\x44\x68\x8d\x5a\xa5\xa5\x94\x13\x14\x9e\xfa\ -\x81\xa2\x8c\xf9\x15\x54\xc2\x63\x63\x58\x0d\x38\x5f\x1a\x9b\x0b\ -\x31\x68\x24\x82\x38\x7d\x1c\x95\x35\x79\x90\x28\x1a\x87\x8f\x94\ -\x40\x9d\x63\xc4\x1e\xab\x86\xd6\x92\x85\xcd\x9d\x38\x61\xb2\xb3\ -\x8a\xac\xe5\xb9\x8d\x54\x38\xb0\x5e\xe4\x78\x30\x02\x29\x1e\x05\ -\x51\x53\x90\x64\x05\xb1\x3d\x3d\x26\x96\x44\xc5\xbe\x16\x86\x27\ -\x18\xc7\x36\xc7\x43\xaf\x67\x90\x7b\xd0\x0c\xc5\xa8\x03\xa3\xd3\ -\x92\x86\xa3\x25\xe0\x79\xb1\x99\xe1\x9c\xc1\x48\x68\x66\x05\x11\ -\x2f\x0f\x0d\x14\x68\x55\x04\x1a\x35\x03\x5a\x21\xc4\xee\xe4\x94\ -\x8c\xd1\x43\x12\x94\x0a\x9b\xbc\x80\x24\xcb\x82\xe8\xb5\x60\x29\ -\x82\xd5\xb5\x20\x64\x31\x93\x62\xaa\xa4\xe8\xfd\x1d\x83\xe5\x33\ -\x29\x8f\xb7\xa6\x12\x9c\x64\xd0\xe8\x32\x3a\x2d\x1f\xdd\xd8\x4d\ -\xbc\x1d\x88\xa4\x35\x26\x5e\x42\x43\xa5\x05\x87\x74\x5a\x0c\xaf\ -\x85\x11\x57\x13\x45\xf0\xa4\xc9\xd2\xec\x3a\xb4\xa9\xf4\x10\x01\ -\x80\xfb\xeb\x23\x54\x55\x7e\x21\x9d\xda\xf5\xca\xf7\x06\x26\xa9\ -\xd7\x7e\xb9\x22\x9c\x4c\x5c\xfd\xd1\xa9\xb7\x75\xe8\x9f\xb4\x2a\ -\x6f\x9c\xad\x23\x65\x16\x13\xb8\xfd\x0c\xee\x8e\xaf\x63\x6c\x70\ -\x11\x8c\x2f\x3c\x4b\x85\x62\xc7\x19\xcf\xea\x2d\x7c\xf9\xd5\x7b\ -\x68\xef\x1f\x93\x18\x0a\xd0\xab\x21\xb5\x7b\x40\x14\xe5\xf2\x85\ -\x13\x67\x7e\x4d\x46\xf7\xd3\xe7\xc6\x1d\x1c\x5e\x6d\xb0\x60\x76\ -\x4b\xc4\x6e\x28\x01\x46\x10\x97\x52\xf1\x54\xa7\x7f\xed\xc3\x04\ -\x01\x00\x87\xeb\x2e\xb8\x40\x1c\xdb\xae\x05\xc4\xc2\x22\x3c\x3e\ -\x2b\x3e\xe8\xee\x02\x00\x3c\xf7\xca\xcd\x4a\xc5\x64\x38\x5b\x5d\ -\x5b\x58\xe0\xf2\x44\x64\xce\xbf\xfb\x17\xef\x0e\x0d\x2e\xff\x73\ -\x29\xfa\xcc\xf9\x7e\xfc\x0b\x0b\xb9\xbe\x45\x31\x2c\x8e\xcb\x00\ -\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x02\x4a\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ -\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ -\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\ -\x01\x42\x28\x9b\x78\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ -\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ -\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x01\xc7\x49\x44\ -\x41\x54\x38\x8d\xa5\x93\xcd\x6a\x1a\x61\x14\x86\x1f\x33\x0e\x05\ -\x4d\x47\xda\x88\x64\x53\x14\x83\x43\x76\xc6\x95\x4c\x5d\xb9\x33\ -\x05\x17\xdd\x64\x99\x45\x2e\x20\xbd\x82\x76\x51\x7a\x03\xbd\x82\ -\x76\x93\x95\x0c\x82\x8b\xe2\x76\x32\xe8\x6a\x04\x85\x04\xa2\xd0\ -\xa2\x14\x84\x80\xc5\x9f\x5a\xb5\xf0\xa5\xa7\x1b\x2d\x93\xa1\x29\ -\x14\x0f\x9c\xcd\x39\xe7\x79\x39\x3f\xdf\x17\x12\x11\xb6\xb1\x9d\ -\xad\xe8\x07\x04\x12\x40\x1a\x88\xfa\x62\x51\xe0\x60\x9d\xfb\xa7\ -\xc0\x7e\x3e\x9f\x3f\xd6\x75\xfd\xa3\x6d\xdb\xe6\x1a\x8c\xda\xb6\ -\x6d\xea\xba\xfe\x21\x9f\xcf\x1f\x03\xfb\xf7\x08\x11\xd9\x78\xc2\ -\xb2\xac\x53\xa0\x0b\x5c\x69\x9a\x76\x59\xad\x56\x8f\xaa\xd5\xea\ -\x91\xa6\x69\x97\xc0\x15\xd0\xb5\x2c\xeb\x54\x44\x12\x1b\x2e\xe4\ -\x5b\x62\x3a\x95\x4a\xbd\x1f\x0c\x06\x4f\x00\x01\x1e\x85\xc3\xe1\ -\x39\x80\x52\x6a\x17\xf8\x09\x84\x92\xc9\xe4\xb8\xdf\xef\xbf\x02\ -\xbe\x04\x47\xb8\xf5\x3c\xef\x22\x93\xc9\x5c\x03\x0b\x60\xac\x94\ -\xd2\x94\x52\x1a\x30\x06\x16\x99\x4c\xe6\xda\xf3\xbc\x0b\xe0\x76\ -\x03\x85\x02\x67\x34\x46\xa3\xd1\x8b\x42\xa1\xf0\xbc\xd7\xeb\x3d\ -\xf3\x27\x4c\xd3\xfc\xda\x68\x34\x9a\xf1\x78\xfc\x13\x30\x7b\x68\ -\x89\x77\xad\x56\xab\xb7\x5c\x2e\xf7\xd6\x5d\xfc\xf1\xd5\x6a\xf5\ -\xb4\xdd\x6e\x77\x81\x3b\x3f\xe0\xef\x20\x5a\xaf\xd7\x0f\xca\xe5\ -\xf2\x6b\xa5\x94\x02\xe6\x01\xf1\x5d\x5d\xd7\xb5\x5a\xad\xf6\xae\ -\x54\x2a\x7d\x06\x7e\x04\x05\xd2\xb1\x58\xec\xcd\x6c\x36\xfb\x05\ -\x7c\x07\xc8\x66\xb3\xdf\x00\x3a\x9d\xce\xde\xba\xe6\xb1\x61\x18\ -\x3b\xd3\xe9\xf4\xed\xdf\x96\x38\xaf\x54\x2a\xcd\x48\x24\x32\x04\ -\x16\xb9\x5c\x6e\xe8\x38\xce\x8d\xe3\x38\x37\xb9\x5c\x6e\x08\x2c\ -\x22\x91\xc8\xb0\x52\xa9\x34\xef\x75\xe7\x7b\x07\x88\xc8\xa1\xeb\ -\xba\x67\xc5\x62\xf1\x7c\x32\x99\x9c\x88\x88\x21\x22\xc6\x64\x32\ -\x39\x29\x16\x8b\xe7\xae\xeb\x9e\x89\xc8\xa1\x9f\x09\x0a\x20\x22\ -\xa6\x88\xbc\x5c\xc3\x9b\x98\xb1\x8e\x99\xc1\xfa\xe0\x19\xff\xdb\ -\xb6\xfe\x8d\xbf\x01\x7c\x52\x08\x38\x8e\xd7\x1d\xc8\x00\x00\x00\ -\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x03\x16\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ -\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ -\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\ -\x01\x42\x28\x9b\x78\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ -\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ -\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x93\x49\x44\ -\x41\x54\x38\x8d\x95\x91\xbd\x4f\x1b\x41\x10\xc5\x67\xe1\x96\xbb\ -\xf3\x25\xd8\x46\xe1\x82\x20\x91\x2c\x45\x38\x42\x51\x94\x02\x19\ -\x21\x04\x1d\xa2\xa3\x80\xa3\x30\x05\x25\x12\x15\x32\x14\x44\x48\ -\xfc\x05\x54\x96\x28\x29\x4c\x45\x0f\xae\xa0\xc0\x20\x0a\x7a\xa0\ -\x20\x46\x48\x24\x0e\x8e\xb1\x8d\xe3\x23\xb7\xc7\xde\xde\xee\x5e\ -\x8a\xc4\x16\x1f\x49\xc1\x2b\x67\xde\xfc\xf4\x66\x06\x65\xb3\xd9\ -\x81\x20\x08\x52\x08\xa1\x38\x3c\x43\x41\x10\xe4\x11\x42\x69\xc5\ -\xf7\xfd\x85\x91\x91\x91\x01\xc3\x30\xd4\xe7\x00\x08\x21\xd1\xc3\ -\xc3\xc3\x05\x45\x4a\x19\x07\x80\x6a\xbd\x5e\x77\x9f\x03\xc0\x18\ -\x87\xa4\x94\x71\x85\x52\x0a\x94\xd2\x27\xc3\xb9\x5c\x2e\xba\xb7\ -\xb7\xf7\x2a\x16\x8b\xb9\xc9\x64\xb2\x64\x18\x86\xb8\xdf\x17\x42\ -\xb8\x94\xd2\x76\x85\x73\x8e\x82\x20\x68\x36\x6a\xb5\x9a\x92\x4a\ -\xa5\x3e\x5e\x5c\x5c\x84\x55\x55\x85\x83\x83\x03\xd8\xd8\xd8\x78\ -\x37\x3f\x3f\xff\x65\x6a\x6a\xea\xfa\x3e\x84\x73\x8e\x14\xc6\x18\ -\xe2\x9c\x37\x8b\x2b\x2b\x2b\x1f\x6e\x6f\x6f\xdb\x97\x96\x96\x2a\ -\x63\x63\x63\x2e\x00\xc0\xc9\xc9\x49\x5b\x22\x91\x70\xe6\xe6\xe6\ -\x3e\x25\x93\xc9\x6f\xc3\xc3\xc3\x3f\x01\x00\x18\x63\xa8\x85\x73\ -\x8e\xa4\x94\x20\xa5\x84\xb3\xb3\x33\xa3\x5c\x2e\x47\xa7\xa7\xa7\ -\x6b\x96\x65\x5d\xa9\xaa\x5a\x50\x55\xf5\x6a\x68\x68\xe8\x47\x26\ -\x93\xe9\xa8\x56\xab\xd1\xf5\xf5\xf5\xf7\x9e\xe7\x21\x29\x25\x70\ -\xce\x51\x0b\x63\x0c\x49\x29\x61\x7b\x7b\xbb\x6b\x6b\x6b\xeb\xad\ -\x69\x9a\x80\x31\xf6\x8e\x8e\x8e\x24\x63\x8c\x33\xc6\xd8\xf1\xf1\ -\x31\xdf\xdd\xdd\x8d\x99\xa6\x09\x9a\xa6\x69\xe9\x74\x3a\x2e\xa5\ -\x6c\x26\x00\x29\x25\x10\x42\xc2\xf9\x7c\xbe\x4b\xd7\x75\xd8\xd9\ -\xd9\x31\x4d\xd3\x0c\x1a\xc9\x84\x10\x6d\xcb\xcb\xcb\x15\x5d\xd7\ -\x61\x76\x76\xf6\x7a\x7c\x7c\xdc\xfd\x9b\x00\x94\xc6\x0a\x33\x33\ -\x33\x25\x00\x78\x71\x7e\x7e\xfe\x72\x71\x71\xb1\x18\x8d\x46\x5d\ -\x29\x25\x00\x00\xf4\xf6\xf6\x3a\x99\x4c\x46\xd5\x75\x1d\xfa\xfa\ -\xfa\xca\xba\xae\x13\xc6\xd8\x9f\x23\x36\x00\xae\xeb\xda\x96\x65\ -\x95\x4e\x4f\x4f\xef\x22\x91\x48\x79\x6d\x6d\x2d\xde\xdf\xdf\x5f\ -\xc1\x18\xcb\x5c\x2e\xf7\xc6\x71\x9c\xc8\xc4\xc4\x44\x05\x63\x5c\ -\xa7\x94\x8a\xe6\x17\xee\x1f\x11\x63\x5c\x1e\x1c\x1c\xbc\xcb\x66\ -\xb3\x86\x6d\xdb\x1d\x9b\x9b\x9b\xaf\x01\x00\x4c\xd3\x04\xcb\xb2\ -\x2a\x89\x44\xa2\xe4\x38\x8e\x78\xf0\x46\xdf\xf7\x51\x23\xaa\xe7\ -\x79\xbe\xe7\x79\xb5\xd1\xd1\x51\x6d\x72\x72\xf2\xeb\xcd\xcd\x0d\ -\xb6\x6d\x5b\xe9\xe9\xe9\xf1\x11\x42\xbf\x6c\xdb\xae\x35\xbc\x00\ -\x00\xbe\xef\x3f\x04\x34\x44\x08\xa1\x84\x90\xef\x9a\xa6\x69\x9d\ -\x9d\x9d\xd8\xb6\xed\x3b\x21\x04\x87\x47\xf2\x7d\x1f\x29\x00\x70\ -\x59\x28\x14\xc2\xdd\xdd\xdd\xec\xb1\x81\x10\x42\x01\x80\x3e\xae\ -\x03\x00\x14\x8b\xc5\x36\x00\xb8\x54\x42\xa1\xd0\xea\xfe\xfe\xfe\ -\x67\x21\x44\xec\x5f\xc6\xff\xa9\xb5\xb5\xf5\x32\x1c\x0e\xaf\xfe\ -\x06\x47\x78\x84\x8a\xac\x27\x36\x0e\x00\x00\x00\x00\x49\x45\x4e\ -\x44\xae\x42\x60\x82\ -\x00\x00\x07\x84\ -\x47\ -\x49\x46\x38\x39\x61\x36\x00\x37\x00\xf3\x00\x00\xff\xff\xff\x00\ -\x00\x00\x78\x78\x78\x1c\x1c\x1c\x0e\x0e\x0e\xd8\xd8\xd8\x54\x54\ -\x54\xdc\xdc\xdc\xc4\xc4\xc4\x48\x48\x48\x8a\x8a\x8a\x00\x00\x00\ -\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\xff\x0b\x4e\ -\x45\x54\x53\x43\x41\x50\x45\x32\x2e\x30\x03\x01\x00\x00\x00\x21\ -\xfe\x1a\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x61\ -\x6a\x61\x78\x6c\x6f\x61\x64\x2e\x69\x6e\x66\x6f\x00\x21\xf9\x04\ -\x09\x0a\x00\x00\x00\x2c\x00\x00\x00\x00\x36\x00\x37\x00\x00\x04\ -\xcc\x10\xc8\x49\xab\xbd\x38\xeb\xcd\xbb\xff\x60\x28\x8e\x64\x69\ -\x9e\x25\x92\x10\x44\x82\xa0\xa7\xc2\xce\x84\x02\x93\x08\x4d\xbf\ -\x77\xb8\xea\xac\x44\x2f\x04\xa4\x0d\x41\xc5\xd9\xf1\xf3\x03\x0a\ -\x97\x9d\x5c\x91\x77\x2c\x18\x58\x86\x02\x46\xa6\xb3\x2d\x0b\x03\ -\xda\x40\x7b\x51\x05\xa9\x16\xc1\x60\x20\x18\x5d\x75\x06\x93\x80\ -\xd6\x26\x16\x4d\xe1\xd9\x40\x94\xc4\x8b\x45\x6f\x34\x71\x25\x73\ -\x33\x75\x20\x07\x79\x2c\x03\x07\x27\x6a\x6c\x24\x07\x6f\x06\x8d\ -\x50\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x1c\x8f\x87\x96\xa1\x1a\ -\x85\x2c\xa2\x47\xa6\x04\xa8\x14\x8a\x04\x7b\x96\xae\xb0\x17\xb2\ -\x97\xb5\x18\xaa\xac\x3d\xb9\xa5\x6b\xba\x43\xa4\x9f\xc2\xc3\xc4\ -\xc5\xc6\xc7\xc8\x9b\xc1\x8e\xbe\x24\xbc\x72\x74\x23\xb7\x25\xd3\ -\x20\xd5\xd2\x7f\x22\xcf\x84\xd1\x23\xcb\x72\xcd\xc9\x9e\xdf\xc5\ -\xdb\xc5\xd7\xc3\xe8\xc2\xe6\xe5\xe1\xe2\xef\x3d\x11\x00\x21\xf9\ -\x04\x09\x0a\x00\x00\x00\x2c\x00\x00\x00\x00\x36\x00\x37\x00\x00\ -\x04\xce\x10\xc8\x49\xab\xbd\x38\xeb\xcd\xbb\xff\x60\x28\x8e\x64\ -\x69\x9e\x68\xaa\x16\x06\x41\x18\x85\x5a\x16\x83\xeb\x0e\xb1\x2c\ -\xb6\xb6\x6b\xe8\xa2\x5e\x0f\x18\x12\xda\x88\x20\x5e\xef\x87\xf4\ -\x1c\x6a\xb6\xc1\xe1\x82\x48\xb8\x12\x88\xa6\xe4\xc0\x33\x4c\x2d\ -\x0a\xa3\x62\x24\x18\x0c\x04\x26\x84\xd1\x95\x05\x09\x7a\x68\x92\ -\x75\x9d\x08\x41\x6f\xa5\xf5\x11\x74\x27\x0c\xf2\x7a\x04\x21\x6f\ -\x36\x71\x23\x73\x46\x75\x83\x66\x86\x23\x6a\x6b\x6d\x5a\x1a\x61\ -\x42\x63\x92\x1c\x55\x57\x91\x97\x9c\x9d\x9e\x9f\xa0\xa1\x6e\x8c\ -\x97\x65\x67\x1a\x84\x2e\x8d\x40\xa9\x04\xab\x14\x7d\x7f\x4d\xb1\ -\x19\xb4\xb3\x3d\xb2\x17\xad\xaf\x32\xbb\xa8\xa4\x92\xa6\xbc\xa2\ -\xc4\xc5\xc6\xc7\xc8\xc9\xca\x27\xc2\x29\xcd\x64\x70\xcc\xd1\x22\ -\xb6\x25\xd5\x7c\xb8\x27\xd7\x1f\xbe\x26\xdd\x22\xcf\xcc\xc0\xcb\ -\x9e\xe1\xc7\xdf\xc6\xdb\xc4\xea\xa2\xe8\xc6\xe6\xe4\xf1\x27\x11\ -\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\x2c\x00\x00\x00\x00\x36\x00\ -\x37\x00\x00\x04\xce\x10\xc8\x49\xab\xbd\x38\xeb\xcd\xbb\xff\x60\ -\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\x30\x0c\x02\x5b\x0a\x44\x4d\ -\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\x0f\x44\xb3\xe1\x86\x1f\x17\ -\x0c\x99\x2b\x18\x6a\x86\x02\x49\x79\x24\x15\x76\xb6\x81\x34\x54\ -\xac\x55\x45\x4f\x1e\xc1\x00\xcc\x9a\xc4\xb6\x72\x4d\x48\x42\xd7\ -\x44\xdd\x9b\x29\xcc\x23\xc3\x5f\x5f\xd1\x01\xbb\x3e\x30\x3b\x07\ -\x61\x06\x7e\x7f\x85\x86\x87\x88\x89\x8a\x12\x08\x09\x35\x09\x08\ -\x8b\x15\x0a\x68\x0a\x19\x54\x43\x08\x6e\x04\x91\x16\x71\x79\x29\ -\x8e\x6e\x09\x17\x7c\x3d\x3f\x9b\x6f\x16\xa6\x6c\x2c\xa9\x04\x17\ -\x9f\x3f\xa2\x68\xa4\xb1\x78\x99\x9b\x9d\x92\x94\x62\x96\x92\x13\ -\x8d\x8f\xbb\xc0\xc5\xc6\xc7\xc8\xc9\x13\x98\x28\xcc\x70\x3c\xa0\ -\x44\xd0\x23\xac\x27\xd5\x6a\xa7\x26\xd7\x5c\xd3\x26\xb2\x23\xce\ -\xde\xb8\xca\x88\xe1\xc5\xdf\xc6\xdb\xc5\xea\xc0\xe8\xc6\xe6\xe4\ -\xf1\x26\x11\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\x2c\x00\x00\x00\ -\x00\x36\x00\x37\x00\x00\x04\xcd\x10\xc8\x49\xab\xbd\x38\xeb\xcd\ -\xbb\xff\x60\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\x30\x0c\x02\x5b\ -\x0a\x44\x4d\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\x0f\x44\xb3\xe1\ -\x86\x1f\x17\x0c\xc9\x34\x29\x8f\xce\x17\x94\xc8\x9b\x8a\x8a\x35\ -\x6b\x67\x67\x13\x96\xb8\x35\x2f\x08\xdc\x3b\x91\xc5\xc9\xea\x09\ -\x7b\x23\x3d\x53\xef\xa6\x7c\x4e\xaf\xdb\xef\xf8\xbc\xaa\x60\xa8\ -\x19\x0a\x1a\x71\x3f\x05\x67\x80\x17\x6c\x5a\x29\x7d\x3c\x04\x06\ -\x18\x67\x43\x8c\x36\x8f\x41\x91\x92\x04\x18\x88\x43\x8b\x3c\x8e\ -\x99\x52\x48\x07\x67\x07\x7a\x13\x07\x8b\x06\xa4\xa5\xab\xac\xad\ -\xae\x27\x08\x09\x35\x09\x08\xac\x0a\x92\x0a\x23\x82\x23\x08\x97\ -\x04\xb5\x54\x46\x25\xb2\x97\x09\x21\x90\x24\xbe\x35\xc7\x95\xc9\ -\xca\x21\x9a\x24\xc4\x92\xc6\xd0\xa0\x25\xbd\x97\xc0\x79\xb7\x8c\ -\xb9\x48\xbb\x15\xb1\xb3\xdb\x3f\xd1\xab\xc8\xe8\xcd\xab\xe7\xec\ -\xd7\xaf\xf0\x2b\x11\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\x2c\x00\ -\x00\x00\x00\x36\x00\x37\x00\x00\x04\xcb\x10\xc8\x49\xab\xbd\x38\ -\xeb\xcd\xbb\xff\x60\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\x30\x0c\ -\x02\x5b\x0a\x44\x4d\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\x0f\x44\ -\xb3\xe1\x86\x1f\x17\x0c\xc9\x34\x29\x8f\xce\x17\x94\xc8\x9b\x8a\ -\x8a\x35\x6b\x67\x67\x13\x96\xb8\x35\x2f\x08\xdc\x3b\x91\xc5\xc9\ -\xea\x09\x7b\x23\x3d\x53\xef\xa6\x7c\x4e\xaf\xdb\xef\xf8\x3c\x3e\ -\x8e\xe4\x5f\xd8\x5a\x2a\x80\x19\x67\x48\x85\x18\x87\x3f\x89\x16\ -\x83\x43\x8d\x18\x7e\x3f\x91\x7a\x94\x95\x96\x97\x98\x99\x4c\x05\ -\x06\x35\x06\x05\x6e\x52\x27\x05\x67\xa0\x21\x8f\x23\x9d\x3c\x04\ -\x06\x40\x5d\x26\xab\x36\xae\x61\xb0\xb1\x04\x57\x6a\x25\xaa\x3c\ -\xad\x57\xa2\x19\x08\x09\x35\x09\x08\x17\x07\x67\x07\x43\x0a\xb1\ -\x0a\xc6\xaa\x06\xc9\x3f\x08\xb6\x04\xc5\x79\xc2\xb6\x09\x7a\xd4\ -\x35\xdb\xdc\x7a\xd8\xb1\xda\x79\xd3\xb6\xd6\x79\xcb\xab\xcd\x95\ -\xc1\xc3\xe7\x22\x11\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\x2c\x00\ -\x00\x00\x00\x36\x00\x37\x00\x00\x04\xcc\x10\xc8\x49\xab\xbd\x38\ -\xeb\xcd\xbb\xff\x60\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\x30\x0c\ -\x02\x5b\x0a\x44\x4d\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\x0f\x44\ -\xb3\xe1\x86\x1f\x17\x0c\xc9\x34\x29\x8f\xce\x17\x94\xc8\x9b\x8a\ -\x8a\x35\x6b\x67\x67\x13\x96\xb8\x35\x2f\x08\xdc\x3b\x91\xc5\xc9\ -\xea\x09\x7b\x23\x3d\x53\xef\xa6\x7c\x4e\xaf\xdb\xef\xf8\x3c\x3e\ -\x8e\xe4\x5f\xd8\x5a\x2a\x80\x19\x67\x48\x85\x18\x87\x3f\x89\x16\ -\x83\x43\x8d\x18\x7e\x3f\x91\x7a\x94\x95\x96\x97\x98\x00\x08\x09\ -\x35\x09\x08\x96\x0a\x3c\x35\x0a\x94\x08\xa2\x36\x9f\x33\x52\x22\ -\x9c\xa7\x04\x09\x33\x6a\x20\xae\x36\x5f\x41\x21\xb4\x35\xb6\x5d\ -\x21\xad\xa7\xb0\x6e\xb2\x1f\xa6\xae\xa9\x6e\xab\x22\xa1\xa2\xa4\ -\x17\x05\x06\x35\x06\x05\x48\x9b\x9d\xc6\x15\x05\x67\xd2\x94\xcf\ -\xa2\x06\x95\xb4\xdf\xae\x95\xdc\x3c\xde\x94\x07\x67\x07\x96\x07\ -\xdc\x06\xea\x99\x28\x11\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\x2c\ -\x00\x00\x00\x00\x36\x00\x37\x00\x00\x04\xcc\x10\xc8\x49\xab\xbd\ -\x38\xeb\xcd\xbb\xff\x60\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\x30\ -\x0c\x02\x5b\x0a\x44\x4d\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\x0f\ -\x44\xb3\xe1\x86\x1f\x17\x0c\xc9\x34\x29\x8f\xce\x17\x94\xc8\x9b\ -\x8a\x8a\x35\x6b\x67\x67\x13\x96\xb8\x35\x2f\x08\xdc\x3b\x91\xc5\ -\xc9\xea\x09\x7b\x23\x3d\x53\xef\xa6\x7c\x4e\xaf\xdb\xef\x22\x44\ -\xa2\x96\x40\xe0\x2b\x0a\x3c\x35\x0a\x7f\x12\x08\x82\x36\x7e\x3f\ -\x71\x16\x7b\x88\x04\x09\x8b\x6a\x16\x8f\x36\x3f\x67\x17\x95\x35\ -\x97\x41\x17\x8e\x88\x91\x39\x6c\x5a\x87\x8f\x8a\xa2\x52\x19\x81\ -\x82\x84\x85\x86\x8e\x7d\xae\xb2\xb3\xb4\xb5\x4c\x05\x06\x35\x06\ -\x05\xb3\x05\x67\xbc\x51\x4b\x22\xb9\x82\x06\x4e\x93\x20\x95\x26\ -\x98\x21\xca\x5f\x9d\x21\xc4\x3c\xc6\x33\xc8\x1f\x07\x67\x07\x6b\ -\xa9\x23\x07\xc4\x06\xda\xb6\x1d\x8c\xb2\xa3\xb4\xcc\xb2\xe8\xae\ -\xe6\xb4\xe4\xe2\xef\x27\x11\x00\x21\xf9\x04\x09\x0a\x00\x00\x00\ -\x2c\x00\x00\x00\x00\x36\x00\x37\x00\x00\x04\xcc\x10\xc8\x49\xab\ -\xbd\x38\xeb\xcd\xbb\xff\x60\x28\x8e\x64\x69\x9e\x68\xaa\xae\xac\ -\x30\x0c\x02\x5b\x0a\x44\x4d\xc4\xb2\x38\xd8\xc4\x90\xeb\x3c\xdf\ -\x0f\x44\xb3\xe1\x7e\x88\x44\x2d\x81\xd0\xb8\x60\x43\x80\x82\x57\ -\x53\x44\x39\x08\xaa\xad\x39\x7b\x1d\x3f\x4a\x2d\x21\x31\xe3\x7d\ -\x3b\x62\x5b\x69\x67\x13\x7e\xd2\xb5\x75\x30\x14\xd6\x92\x49\xc5\ -\xda\x19\x9b\xe6\xe2\xbd\x23\x53\x54\x56\x57\x58\x61\x4c\x85\x89\ -\x8a\x8b\x8c\x8d\x57\x05\x06\x35\x06\x05\x8e\x16\x05\x6c\x35\x03\ -\x94\x43\x4f\x7b\x13\x91\x54\x06\x9c\x66\x18\x69\x43\x98\x3d\xa5\ -\x62\xa7\x73\x17\xa0\x3c\xa2\x3f\x79\x37\x18\x07\xa8\x03\x07\x51\ -\x9d\x1a\x07\xa0\x06\xb9\x95\xc1\xc2\xc3\xc4\xc5\xc6\xc7\x1d\xbb\ -\x28\xca\x22\xb3\x9e\x44\xa4\x40\x6d\x27\xb7\x23\xd5\x26\xd7\x21\ -\xce\x27\xdb\x23\xcc\x26\xdf\xc8\x89\xe1\xc2\xdd\xc4\xd9\xc3\xe8\ -\xe5\xd1\xc5\xe4\xe2\xef\x25\x11\x00\x3b\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\ -\x00\x00\x02\x73\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ -\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ -\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\ -\x01\x42\x28\x9b\x78\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ -\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ -\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x01\xf0\x49\x44\ -\x41\x54\x38\x8d\xa5\x92\x4f\x6b\x1a\x61\x10\xc6\x7f\xae\x8a\x55\ -\x8a\xed\xcd\x20\x14\xb2\x87\x88\x87\x42\x4d\x3c\x49\x3d\xec\x25\ -\x64\x03\x7b\xc9\xc1\xdc\x3c\xf5\xb0\xb7\xc6\x9b\x5f\x20\x1f\x40\ -\xea\xb9\x9f\xc0\xe0\xa9\x37\x21\x14\x12\x59\x58\xd8\x84\x42\xa1\ -\xe0\x69\x89\x60\x4c\x2f\x49\xb5\xa8\xc4\x3f\xd3\x43\xde\xb5\x26\ -\x48\x28\x74\xe0\x85\x79\x67\x9e\x79\x98\x99\x67\x42\x22\xc2\xff\ -\x58\xe4\x99\x5c\x1a\x78\xa9\xfc\xdf\x40\x6f\x2d\x4a\x44\x56\xdf\ -\x2b\x11\xd1\x45\x24\x6d\x59\xd6\x01\x70\x03\xdc\x58\x96\x75\x20\ -\x22\x69\x11\xd9\x54\x98\x65\xcd\xa3\x62\xdb\xb6\x77\x43\xa1\x90\ -\x97\x4a\xa5\x8e\x63\xb1\xd8\x09\x70\x09\x5c\xc6\x62\xb1\x93\x54\ -\x2a\x75\x1c\x0e\x87\x1d\xdb\xb6\x77\x57\x49\x42\x2b\x3b\xd8\x8c\ -\x46\xa3\x9f\x67\xb3\x59\x52\xb5\x3e\x01\xc6\x2a\x17\x07\x5e\x00\ -\xa3\x48\x24\x72\x37\x9d\x4e\x3f\x00\x3e\x80\xb6\x32\xcd\x7d\xb9\ -\x5c\xfe\x02\x0c\x81\x6b\xe0\x56\x91\x4c\x94\x7f\x0d\xfc\x52\x98\ -\xfb\xa7\x4b\x4c\x97\x4a\xa5\x9d\x56\xab\xb5\xa5\x0a\x48\x26\x93\ -\x77\x95\x4a\xe5\x1b\x40\xad\x56\x7b\x37\x18\x0c\x5e\x03\x34\x9b\ -\xcd\xad\xe1\x70\xb8\xd3\x68\x34\x00\x7a\xc1\xfc\x19\xe0\x02\x68\ -\x01\x4d\xa0\x59\xad\x56\x8f\x44\x64\x5b\x44\xb6\xab\xd5\xea\x51\ -\x10\x57\x98\x0b\x11\xc9\x88\xc8\x5f\x19\x35\x4d\xfb\xb1\x58\x2c\ -\x42\xc1\xbf\xdd\x6e\x0f\x80\xfe\x8a\x3f\x51\xa9\x89\xa6\x69\x3f\ -\x97\x75\x81\xce\xae\xeb\x9e\x19\x86\xd1\x09\xe6\x76\x1c\x67\x5f\ -\xd7\xf5\x43\x5d\xd7\x0f\x1d\xc7\xd9\x0f\xe2\x86\x61\x74\x5c\xd7\ -\x3d\x53\xb7\xb1\x24\xe8\xe5\xf3\xf9\xd3\x6c\x36\x7b\x15\x00\xe7\ -\xf3\xf9\xc0\xf7\xfd\x3d\xdf\xf7\xf7\xe6\xf3\x79\xd0\xc1\x24\x9b\ -\xcd\x5e\xe5\xf3\xf9\x53\xd4\x61\x3d\x92\x31\x91\x48\x7c\x1c\x8f\ -\x03\xe5\xd6\x5b\x3c\x1e\x67\x34\x1a\x7d\x62\x8d\x8c\xb7\x9e\xe7\ -\xb9\xb9\x5c\xae\x5f\xaf\xd7\x3b\xa6\x69\x76\x79\xb8\x83\xb1\x69\ -\x9a\xdd\x7a\xbd\xde\xc9\xe5\x72\x7d\xcf\xf3\x5c\x1e\x64\xe5\x69\ -\x07\x00\x1b\xc0\x7b\xa0\xeb\x38\x4e\xba\x58\x2c\xbe\x05\x38\x3f\ -\x3f\xff\x5e\x28\x14\x7a\xc0\x1b\xa0\x1d\x2c\x77\x1d\xc1\xaa\x65\ -\x00\x43\xf9\x5f\x81\xce\x3a\xd0\x73\x04\xff\x64\x7f\x00\x19\x1e\ -\x09\x5d\x0e\xd9\xff\x6d\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ -\x60\x82\ " qt_resource_name = b"\ @@ -1955,74 +1955,74 @@ \x00\x6f\xa6\x53\ \x00\x69\ \x00\x63\x00\x6f\x00\x6e\x00\x73\ -\x00\x14\ -\x0b\x6a\x55\xa7\ -\x00\x62\ -\x00\x6f\x00\x78\x00\x2d\x00\x62\x00\x6f\x00\x72\x00\x64\x00\x65\x00\x72\x00\x2d\x00\x73\x00\x6d\x00\x61\x00\x6c\x00\x6c\x00\x2e\ -\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ -\x00\xbd\xc0\x27\ -\x00\x73\ -\x00\x65\x00\x74\x00\x74\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x70\x00\x6e\x00\x67\ -\x00\x0e\ -\x05\x17\xcb\xe7\ -\x00\x62\ -\x00\x72\x00\x6f\x00\x6b\x00\x65\x00\x6e\x00\x50\x00\x61\x00\x67\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ -\x00\x11\ -\x0c\x49\x94\x07\ -\x00\x61\ -\x00\x64\x00\x42\x00\x6c\x00\x6f\x00\x63\x00\x6b\x00\x50\x00\x6c\x00\x75\x00\x73\x00\x36\x00\x34\x00\x2e\x00\x70\x00\x6e\x00\x67\ -\ +\x00\xb0\xe2\x96\ +\x00\x6c\ +\x00\x6f\x00\x61\x00\x64\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x67\x00\x69\x00\x66\ \x00\x0d\ -\x0c\x7a\x4d\x87\ +\x0c\x56\x4d\x87\ \x00\x65\ -\x00\x72\x00\x69\x00\x63\x00\x57\x00\x65\x00\x62\x00\x33\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x72\x00\x69\x00\x63\x00\x57\x00\x65\x00\x62\x00\x31\x00\x36\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0a\ +\x05\x78\x4f\x27\ +\x00\x72\ +\x00\x65\x00\x6c\x00\x6f\x00\x61\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x11\ \x0c\x97\x94\x07\ \x00\x61\ \x00\x64\x00\x42\x00\x6c\x00\x6f\x00\x63\x00\x6b\x00\x50\x00\x6c\x00\x75\x00\x73\x00\x31\x00\x36\x00\x2e\x00\x70\x00\x6e\x00\x67\ \ -\x00\x08\ -\x03\xc6\x59\xa7\ -\x00\x70\ -\x00\x6c\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ -\x00\x0d\ -\x0c\x56\x4d\x87\ -\x00\x65\ -\x00\x72\x00\x69\x00\x63\x00\x57\x00\x65\x00\x62\x00\x31\x00\x36\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x06\x98\x83\x27\ \x00\x63\ \x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ -\x00\x0a\ -\x05\x78\x4f\x27\ -\x00\x72\ -\x00\x65\x00\x6c\x00\x6f\x00\x61\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ -\x00\x0b\ -\x00\xb0\xe2\x96\ -\x00\x6c\ -\x00\x6f\x00\x61\x00\x64\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x67\x00\x69\x00\x66\ \x00\x08\ \x0b\x07\x5a\x27\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x08\ +\x03\xc6\x59\xa7\ +\x00\x70\ +\x00\x6c\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0b\ +\x00\xbd\xc0\x27\ +\x00\x73\ +\x00\x65\x00\x74\x00\x74\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x11\ +\x0c\x49\x94\x07\ +\x00\x61\ +\x00\x64\x00\x42\x00\x6c\x00\x6f\x00\x63\x00\x6b\x00\x50\x00\x6c\x00\x75\x00\x73\x00\x36\x00\x34\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x14\ +\x0b\x6a\x55\xa7\ +\x00\x62\ +\x00\x6f\x00\x78\x00\x2d\x00\x62\x00\x6f\x00\x72\x00\x64\x00\x65\x00\x72\x00\x2d\x00\x73\x00\x6d\x00\x61\x00\x6c\x00\x6c\x00\x2e\ +\x00\x70\x00\x6e\x00\x67\ +\x00\x0e\ +\x05\x17\xcb\xe7\ +\x00\x62\ +\x00\x72\x00\x6f\x00\x6b\x00\x65\x00\x6e\x00\x50\x00\x61\x00\x67\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0d\ +\x0c\x7a\x4d\x87\ +\x00\x65\ +\x00\x72\x00\x69\x00\x63\x00\x57\x00\x65\x00\x62\x00\x33\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x02\ -\x00\x00\x01\x54\x00\x00\x00\x00\x00\x01\x00\x00\x6d\x81\ -\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x31\ -\x00\x00\x00\xec\x00\x00\x00\x00\x00\x01\x00\x00\x60\x34\ -\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xb4\ -\x00\x00\x01\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x6a\x67\ -\x00\x00\x01\x22\x00\x00\x00\x00\x00\x01\x00\x00\x68\x19\ -\x00\x00\x01\x70\x00\x00\x00\x00\x00\x01\x00\x00\x75\x09\ \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x30\x69\ -\x00\x00\x01\x02\x00\x00\x00\x00\x00\x01\x00\x00\x63\xe9\ -\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x50\x93\ -\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x5d\x00\ +\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x80\ +\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x16\xcb\ +\x00\x00\x01\x44\x00\x00\x00\x00\x00\x01\x00\x00\x4a\x5e\ +\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xb8\ +\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x12\x06\ +\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x14\x54\ +\x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x2d\ +\x00\x00\x00\xee\x00\x00\x00\x00\x00\x01\x00\x00\x1f\x03\ +\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x07\x88\ +\x00\x00\x01\x66\x00\x00\x00\x00\x00\x01\x00\x00\x6b\x13\ +\x00\x00\x00\x66\x00\x00\x00\x00\x00\x01\x00\x00\x0e\xd2\ " qt_resource_struct_v2 = b"\ @@ -2030,30 +2030,30 @@ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x02\ \x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x01\x54\x00\x00\x00\x00\x00\x01\x00\x00\x6d\x81\ -\x00\x00\x01\x6a\x36\x3b\x51\xed\ -\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x31\ -\x00\x00\x01\x6a\x36\x3b\x51\xc4\ -\x00\x00\x00\xec\x00\x00\x00\x00\x00\x01\x00\x00\x60\x34\ -\x00\x00\x01\x6a\x36\x3b\x52\xb3\ -\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xb4\ -\x00\x00\x01\x6a\x36\x3b\x51\xc2\ -\x00\x00\x01\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x6a\x67\ -\x00\x00\x01\x6a\x36\x3b\x52\x37\ -\x00\x00\x01\x22\x00\x00\x00\x00\x00\x01\x00\x00\x68\x19\ -\x00\x00\x01\x6a\x36\x3b\x52\x21\ -\x00\x00\x01\x70\x00\x00\x00\x00\x00\x01\x00\x00\x75\x09\ -\x00\x00\x01\x6a\x36\x3b\x51\xc5\ \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x6a\x36\x3b\x52\x35\ -\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x30\x69\ -\x00\x00\x01\x6a\x36\x3b\x52\xb2\ -\x00\x00\x01\x02\x00\x00\x00\x00\x00\x01\x00\x00\x63\xe9\ -\x00\x00\x01\x6a\x36\x3b\x52\x01\ -\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x50\x93\ -\x00\x00\x01\x6a\x36\x3b\x51\xef\ -\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x5d\x00\ -\x00\x00\x01\x6a\x36\x3b\x51\xeb\ +\x00\x00\x01\x71\xda\xe0\x03\xcf\ +\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x80\ +\x00\x00\x01\x71\xda\xe0\x03\xcf\ +\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x16\xcb\ +\x00\x00\x01\x71\xda\xe0\x03\xd7\ +\x00\x00\x01\x44\x00\x00\x00\x00\x00\x01\x00\x00\x4a\x5e\ +\x00\x00\x01\x71\xda\xe0\x03\xcf\ +\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xb8\ +\x00\x00\x01\x71\xda\xe0\x03\xcf\ +\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x12\x06\ +\x00\x00\x01\x71\xda\xe0\x03\xcf\ +\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x14\x54\ +\x00\x00\x01\x71\xda\xe0\x03\xcf\ +\x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x2d\ +\x00\x00\x01\x71\xda\xe0\x03\xcf\ +\x00\x00\x00\xee\x00\x00\x00\x00\x00\x01\x00\x00\x1f\x03\ +\x00\x00\x01\x71\xda\xe0\x03\xd7\ +\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x07\x88\ +\x00\x00\x01\x71\xda\xe0\x04\x1b\ +\x00\x00\x01\x66\x00\x00\x00\x00\x00\x01\x00\x00\x6b\x13\ +\x00\x00\x01\x71\xda\xe0\x03\xeb\ +\x00\x00\x00\x66\x00\x00\x00\x00\x00\x01\x00\x00\x0e\xd2\ +\x00\x00\x01\x71\xda\xe0\x03\xcf\ " qt_version = [int(v) for v in QtCore.qVersion().split('.')]
--- a/eric6/WebBrowser/data/javascript_rc.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/WebBrowser/data/javascript_rc.py Wed Jun 17 17:14:12 2020 +0200 @@ -2,13 +2,255 @@ # Resource object code # -# Created by: The Resource Compiler for PyQt5 (Qt v5.10.0) +# Created by: The Resource Compiler for PyQt5 (Qt v5.14.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ +\x00\x00\x0e\xf5\ +\x00\ +\x00\x39\x5f\x78\x9c\xcd\x1b\xed\x6e\xdb\x46\xf2\xbf\x9f\x62\x23\ +\x14\xad\x9c\xc8\xb4\x9d\xb4\xf7\x21\x5f\x0e\xe7\x38\x8e\xe1\xab\ +\xe3\x38\x17\xa7\x2d\xe0\x1a\xc6\x4a\x5c\x49\xac\x29\x92\x5d\x92\ +\x56\x74\x89\xde\xe6\xde\xe4\x5e\xec\x66\xf6\x7b\xc9\xa5\xa4\x14\ +\xb9\xa2\x42\x10\x45\xdc\xd9\x99\xd9\xf9\x9e\x59\x66\xff\xf1\xce\ +\x63\xfc\x43\x4e\xf2\x62\xc9\x93\xe9\xac\x22\xfd\x93\x5d\xf2\xf4\ +\xe0\xf0\x3b\x72\x3d\x63\xe4\x6d\x05\x2b\xf3\x82\x66\x4b\x72\x51\ +\xc5\x51\x10\xf2\x5b\xf2\x7d\x4a\xf9\x7f\xff\x93\x3e\xc4\x34\x65\ +\x59\x49\x5e\xd2\x8a\xde\xe7\x59\x59\xa7\x15\x39\x7e\x31\x20\x94\ +\x7c\xff\xf2\xf8\x05\x39\xe3\x79\x5d\x90\xb1\x44\x37\x20\x49\x36\ +\xc9\xff\x71\x1f\xd3\x51\x04\x8f\x00\xa8\xae\x66\x39\x27\xaf\x93\ +\x34\xa1\x19\xf9\x31\x4f\x27\x13\xf2\xb7\xb9\xf8\x15\x2d\xf0\x97\ +\x81\xfd\xbb\xe4\x22\xab\xe8\xb8\x1a\x92\x59\x55\x15\xc3\xfd\xfd\ +\xc5\x62\x11\xfd\x5a\x45\x49\xbe\x9f\x26\x63\x60\x22\xc9\xa6\xfb\ +\xea\x68\xd7\xb3\xa4\x24\x93\x24\x65\x04\xbe\x0b\xca\x2b\x92\x4f\ +\x48\x25\x0e\xf7\x23\x1b\x9d\xcc\x68\x96\xb1\x94\xcc\xf3\xb8\x06\ +\x10\xb3\x44\xae\xf3\x3c\xbd\x4f\xaa\x48\x61\xf9\xea\xed\xf5\xdd\ +\x8b\xd3\xb3\xf3\xcb\xbb\x8b\xf3\x93\xd3\xcb\x77\xa7\xc3\x8b\xb3\ +\xab\x8b\xa7\x87\x5f\x49\x6e\xe6\x73\xc6\xc7\x09\x4d\xc9\x85\x20\ +\xcf\xc8\xfb\x92\x4e\x19\xae\xa9\x07\xac\x24\xb3\x3c\x8d\x81\x2f\ +\xf2\x40\xd3\x24\x46\x41\xe8\x3d\x40\x4d\x72\x0d\x40\x73\xba\x24\ +\x35\xec\xaf\x2c\xd7\x19\xa2\xa1\xe3\x71\xce\x63\x9a\x8d\x19\x59\ +\x24\xd5\x4c\x70\xe9\xa0\x50\xfb\x09\x9d\x72\xc6\xe6\x2c\xab\x48\ +\xc1\xf3\x87\x24\x66\xb1\x01\x47\x2c\xef\xf2\x49\xb5\xa0\x1c\xce\ +\xc9\x41\xe4\x69\xc5\x78\x46\xab\xe4\x81\xa5\x42\x21\x41\x22\x00\ +\x33\x2f\x81\x14\xc8\x3b\xc9\x00\x9d\x62\x87\x2c\x78\x52\x55\x2c\ +\x73\x28\x8e\x58\xb5\x60\xf0\x64\x99\xd7\x84\x66\x71\xc3\x80\x22\ +\xf2\x0a\xf4\x6b\xb4\x23\xf1\x0a\x54\x19\x0a\x23\x8b\x93\x2a\x01\ +\xa3\x21\x20\xaa\xb6\x52\x05\xf0\x9e\x85\x92\xc8\x26\x35\x07\x0e\ +\x39\x22\x41\x6b\xe2\x73\x8a\x8b\x4a\x7c\x4c\xf2\x3c\xae\x08\xae\ +\x10\x5a\xb5\xb1\x2a\x80\xbd\xba\xd4\x5a\x3e\xbb\x7c\x4f\x2e\x58\ +\x59\x32\x4e\xce\x58\xc6\x38\x48\xf6\xaa\x1e\x01\xd3\x6d\xbd\x1e\ +\xfb\xd2\xb3\xfa\x42\x0d\x8e\x18\x72\x11\x93\x3a\x8b\x01\x95\x15\ +\xa3\x32\x2f\x4b\x46\x10\x0d\x53\x7a\x60\xbc\xc4\xe3\x3c\x8d\x0e\ +\x41\x5d\xe6\xe7\x33\x42\xc1\x8c\x11\xb4\x9c\x01\x85\xd1\x52\x60\ +\x7c\x05\x4a\xf0\x14\xfc\x2a\x07\xda\x52\x1e\x28\x60\x5a\x14\x8c\ +\x72\x94\x3b\xa8\x19\x37\x08\x56\x95\x29\x47\x68\xca\x0f\x4f\x0f\ +\x11\x52\x98\xac\xfb\xf8\x19\xec\x18\xa7\x75\x2c\x54\x2f\xb6\x16\ +\x74\x7c\x4f\xa7\x88\x4b\x1c\x47\x9d\x3b\x22\x57\x29\xa3\xc0\x37\ +\x67\x0f\x09\x5b\x68\x8b\x9b\xe4\x69\x9a\x2f\x24\x61\xab\xa2\x2a\ +\x27\x70\xc6\x9a\xb3\x86\x38\x3a\x64\x81\x88\x38\xfb\xb5\x4e\xb8\ +\xb0\xb4\x12\xac\x33\x4d\x51\xc8\x73\xa6\x42\x40\xa9\x14\x3b\xcd\ +\xea\x28\xe7\xd3\x7d\xed\x4f\xfb\xe9\xb4\x48\xa3\x59\x35\x4f\xf5\ +\xe1\x1c\x2b\x68\x01\x83\x83\xee\x79\x3b\xf7\x40\xf8\x62\xb7\x36\ +\x90\xe3\x12\x4c\xbf\x2c\x98\x70\x3a\xf6\x61\xcc\x0a\x3c\xcf\xa0\ +\x19\x2c\xa7\x60\x15\xa5\x70\x84\x31\xe3\xe8\x38\x84\xc6\xd2\x74\ +\x69\x2a\x0e\x83\x01\x14\xac\x18\xb6\xa1\xc4\xc4\x2f\x82\x6a\x8b\ +\x59\x39\xe6\xc9\x48\x0a\xbb\x19\x81\x41\x1d\xe4\x54\xd3\x44\x34\ +\xda\x26\x0e\xa3\xc3\x41\x4b\x4d\x52\xc3\xb0\xe7\xee\xf4\xa7\x93\ +\xd3\xab\xeb\xf3\x37\x97\x51\xf5\xa1\x92\xcb\x22\x14\xa2\x1a\x99\ +\x1b\xe0\x4e\x2f\x5f\xea\xf0\xf6\x95\x78\xbc\xbf\xb3\xd3\x43\x77\ +\x2a\x2b\x9e\x8c\xab\xde\xd1\xce\xce\x03\xe5\xe4\xad\x8d\x9b\xaf\ +\x41\x6d\x80\xe4\x7a\x59\xc0\x79\x9f\x93\x8f\x3b\x04\x3e\x65\x32\ +\x85\x73\x0e\xc9\xe1\x40\xfc\x84\x48\x54\x80\x14\x96\xef\x0b\x30\ +\x48\x36\x24\x4f\xe5\xe3\x24\x4b\x40\x79\xcf\xd4\x8f\x38\x85\x95\ +\x6f\xe5\x8f\x98\x8d\xea\xe9\x90\x7c\xa7\xe1\x1e\xf2\x7b\xf6\x9a\ +\x41\x7e\x88\x87\xe4\x4f\xf2\x21\xb8\x6e\xc6\xc6\xd5\x75\xfe\x4e\ +\xd1\xfa\xb3\xda\x9a\x94\x6a\xe9\x15\xcf\xe7\x7a\xf1\x2f\x72\xb1\ +\x64\xd5\x95\xe2\x65\x48\xfe\x2a\x9f\x71\x56\x16\x10\x50\x80\xf8\ +\xe1\xc1\x60\x67\xd5\x3e\x21\x9c\x6a\x52\x67\x63\x14\x79\xbf\xe2\ +\x34\x03\x70\x5e\x0d\x04\xf7\x27\x34\x4d\x47\x20\xc5\xdd\x1d\x79\ +\xee\x64\x42\xfa\x15\x48\x02\xdd\x42\x43\x92\x47\xcf\x9f\x93\x5e\ +\x3e\xfa\x05\x58\xea\x91\x4f\x9f\x48\x13\x20\x2a\x19\xf8\xa7\x80\ +\xd2\x74\x7a\xbb\x4a\x90\xea\xa4\x65\x0e\xee\xc5\x38\xcf\x79\xbf\ +\x27\x6c\xc2\xe1\x8e\x7d\x00\x63\x44\xe3\x71\x48\x4a\x6a\x32\x84\ +\x83\xb5\x22\x7e\x8d\x5a\x04\x83\x3c\x9b\x4b\xb5\x91\xb1\x3a\x81\ +\xd1\x51\xd4\x23\x4f\x0c\x69\xff\xd3\x23\x67\x60\xd5\x19\x64\xd1\ +\xa1\xa5\x35\x84\xc7\x4f\xd4\x99\xac\x78\x76\xe1\x59\x6f\xd0\x38\ +\x63\x18\x54\x2c\xed\xee\x1e\x19\xa2\x9c\x55\x35\xcf\xe4\xef\xd5\ +\x8e\xf8\x42\x8d\x8c\x8d\x36\xd0\x78\xe5\x32\xfe\x2b\xb2\xc7\x7e\ +\x6e\x09\x1e\xed\x58\x00\x71\x7e\x47\x89\x60\x84\x74\x57\x2c\x5b\ +\x21\x5b\xcd\xc9\x65\xa9\x0f\xb4\xfa\x6c\xea\x69\x43\xd8\x18\x40\ +\x00\xc2\x7f\xbe\x03\x87\x92\x20\xc9\x64\x29\xf7\xd9\x63\xac\xac\ +\x02\x25\xe7\x91\x7f\x64\x17\x7e\xb5\x13\x38\x4e\x64\xb5\xe4\x30\ +\xaf\x1e\x35\xf9\x47\x09\x29\xb6\x14\x44\x84\x3f\x8f\x02\x07\x54\ +\x70\x5b\x9e\x0f\xea\xa5\x92\x75\x9f\xad\x04\x1b\x1b\xcf\x88\x00\ +\x88\x10\x7f\x13\xd7\x18\x33\x42\x47\xbc\x88\x54\x9c\x68\xd9\x9b\ +\x96\x18\x7c\x41\x58\x90\x4e\xdc\xe4\x41\x7f\x46\x9c\xd1\xfb\xa3\ +\xed\x69\x1a\x7f\xdf\x40\xf5\x5f\x0a\xee\x4b\xd1\x6d\x04\xc1\x0d\ +\xd4\xaf\x3c\xe8\xcf\xe0\x21\x66\x13\x0a\x75\x77\x00\xbf\x1f\x46\ +\x20\xa8\x8a\x2a\x54\x9b\x18\x67\x63\x06\xde\x1d\x0f\xc1\x6d\x5d\ +\x0b\xda\x4c\x75\xd5\x32\x61\xf6\x81\x8d\x75\x68\x14\x49\x61\x75\ +\xe4\x2f\x9e\xa3\x3f\x1e\x34\x1e\x36\x5d\x74\x60\x82\x53\xc8\x59\ +\x1f\x99\xc5\x86\xc1\xed\xef\xe3\x7a\x96\xdb\xd0\x06\xa9\x0e\xd3\ +\x31\x24\x69\x11\x09\x62\x28\x22\xc6\x55\xba\xf4\x55\xa7\xa4\xdf\ +\xf4\x4c\xfd\x71\x83\x92\x3d\xb4\x66\x46\xef\xd6\x67\x03\xdf\xba\ +\xac\xe7\x23\xc6\xa3\xd7\xc7\x3f\xdd\xfd\x70\x7c\xf1\xfe\x34\xc0\ +\xe6\x82\xd3\x22\xc8\x84\x11\x91\x46\x02\x4d\x87\x40\xd2\x45\x5f\ +\x78\xdf\x8c\x96\x6f\x16\x99\x36\x1c\xd0\x70\xdc\xdb\x6d\x79\xa3\ +\x6f\x04\x27\x40\x2f\xaf\x88\x90\xbe\x36\x04\x91\x34\xb4\xb1\x42\ +\x5a\x96\x51\x3b\x14\xeb\xb6\x16\x91\x60\x2f\xc1\x03\xf9\x27\x7c\ +\xf2\xc4\x42\xbb\x2b\xc6\x76\x6e\xd4\xce\x5b\xdc\xaa\x1e\xb6\xb7\ +\xb4\xa2\xa9\x1b\xfc\x65\x2a\xd4\x56\x68\x9f\xbb\xa1\x65\xcb\xf8\ +\xaa\xb2\xaa\x3d\x85\xc2\x7d\xa3\xfd\x45\xfe\xbe\xf5\x83\xae\x7c\ +\xd8\x54\x84\x7c\xaa\x02\xe0\xe9\x1c\x3b\xa9\x58\xd3\x56\x4f\xad\ +\x1f\x52\x3e\x2d\xdd\xe8\x4b\x58\x0a\x81\x26\xac\x59\xa8\xfd\xb3\ +\x7e\xef\x7d\x26\xcf\x17\x9b\x52\x0c\x95\xe8\xf3\x89\x29\x7a\x38\ +\x74\x9f\x4b\xd8\x56\x9c\x5f\xb5\xc4\xa6\x63\xe3\x16\x82\x13\xbe\ +\xaa\x09\xfc\x06\x13\x3d\x57\x71\x4a\x87\xed\x76\xc0\xc2\x42\xa3\ +\x61\x9e\x9a\x97\xad\x2d\x34\x6c\x7d\x9a\x6d\x30\xc0\x7e\x47\x4c\ +\x8c\x59\xca\x2a\xb6\x79\x7f\x3b\xcf\x87\xe2\xfc\x16\xf2\x84\x16\ +\x8a\xf4\xd1\x1a\x13\xac\xe3\x3d\xae\x1a\x82\xec\x28\x09\x6e\x92\ +\xdb\xa3\x16\x5c\xa7\x69\x0b\x07\x6c\xd9\xf5\x7a\xdb\x76\xec\xbb\ +\x68\xa7\x31\x65\x65\xe5\x40\x86\x05\x05\x91\xb0\xb2\xa1\xac\xa0\ +\x95\xbb\x06\xd2\xb4\x74\x13\xb3\x6a\xd5\x66\xa0\x69\x3b\xfc\x5b\ +\x7b\x77\xd8\x68\x12\xdd\x60\x1b\xfd\x8f\x58\xe3\x0c\x3b\x93\x3c\ +\x76\x31\xab\x40\x51\x27\x1a\x9a\x2d\xb4\xeb\x85\xb4\x0d\xb4\x04\ +\x4e\x29\xc5\xa1\xd6\xf0\xaa\x11\x02\x3f\x8b\x77\x68\x68\x56\x83\ +\x46\x99\x1c\xb2\x3c\x29\xce\x4b\x3a\xc7\xd1\x14\xe9\x32\x3d\x63\ +\x52\x19\x5b\x90\xb7\x6f\xc4\xaf\xbe\xdd\x2a\x19\xbf\xb1\x0f\x6e\ +\x07\x9a\xdb\x60\xa1\x09\xf9\x32\xcb\x17\xa4\xce\x30\x6b\x12\x6b\ +\x35\x03\xb2\x98\x25\x50\x81\xce\xc5\x44\x92\xb3\x09\xe3\x0c\xc7\ +\x57\x39\x0e\x86\xe0\xf7\x34\x29\x2b\x78\x14\x2b\x7e\xca\x4d\xc7\ +\x69\x38\x40\x2b\x3a\x35\xfc\xc3\xe1\x3f\x92\xbc\x5d\x19\xd6\xfa\ +\xc1\x83\xa0\xdf\x78\xbd\x63\x83\x82\xbb\xd6\x5f\x27\x91\xdf\x6c\ +\x97\xf0\x8d\xf6\x61\x3a\x42\xad\x9c\xcc\xa8\x05\x84\x6a\xf0\xe8\ +\xde\x56\xd8\xf1\xdd\x5d\x12\xdf\xdd\xa1\x52\x01\x56\xa2\xb3\x90\ +\x46\x28\xb8\x78\x6b\x1a\xb5\x1d\xa5\xbe\x0b\xd0\x04\x0e\x8c\xc6\ +\xa6\x32\xac\x66\xb4\x22\x53\x56\xa9\x0e\x3f\x06\xcf\x05\x76\xa4\ +\x63\x12\x36\x4f\x4a\x9c\x6d\xb8\xc4\x25\x01\x99\xb4\x4b\xc1\x87\ +\x49\xea\x40\xe0\x84\x8e\x67\x62\x80\x0b\x04\x3c\x0b\x91\x01\x21\ +\x06\x4b\xc1\x71\x25\xd8\x51\x05\x49\x42\xd3\x81\xea\x90\xc9\xfc\ +\xeb\x52\xd2\xc1\x44\xe0\xf4\x29\x79\xc6\xed\x1f\x71\xef\x8b\x7c\ +\x9c\xb8\x21\x4d\x4a\x29\xc8\x8d\x1f\x3a\x1d\x86\xd2\xad\x49\x95\ +\x49\x56\x56\x38\xcb\x05\x91\x1c\x73\x4e\x97\x81\x1a\xb4\xac\x0b\ +\xd1\x3a\xa7\x4a\x39\x4d\x2f\xd1\x07\x86\xd4\xa9\x5c\x59\x60\x32\ +\x34\xa2\x94\x65\xd3\x6a\xd6\x08\xa3\x4e\x92\xc2\x3a\x1f\xbe\xfe\ +\x46\x1a\x3b\x8e\xc8\x93\x27\x49\x28\x73\x00\x25\x48\x51\xb0\x4f\ +\xa5\x10\x4f\x04\x86\x2e\x80\x74\x86\x6e\x85\x05\x52\x3d\x7e\x75\ +\xf9\xe0\x23\x8d\xca\xdb\xf7\xe9\x13\x31\x0b\x37\xbd\xbb\x3b\x45\ +\xf7\xf1\xdd\x5d\xef\xb6\x09\x68\x4e\x94\xc8\x92\x1f\x67\xbd\x13\ +\x1c\x91\x37\x8f\x65\x98\x91\xf0\x2e\x47\x81\x02\x53\x54\xfe\x0e\ +\x6e\xbf\x9c\x0c\xb8\x9b\xde\x76\xbb\x1b\xa2\xba\x6e\xc3\xd1\x4e\ +\x58\x24\xc1\x7a\x22\xdc\x3b\xa8\x80\x5c\x67\xf7\x10\x9e\x4d\x2c\ +\x11\xb9\xd7\x1c\x07\x12\xaf\x68\x2b\xf2\xba\x92\xb9\xb7\xb7\xb1\ +\x30\xf3\xe4\xf2\xeb\x9b\x50\x2e\x31\xf8\x07\xc4\xe3\xdb\x0d\x5e\ +\xc4\x21\xa4\xb0\x40\xde\x84\x42\x31\x5f\xb2\x38\x52\x83\xc2\xbe\ +\xf1\xaa\x56\x2c\xde\x20\x70\xa1\x76\x85\x37\x64\xcb\xaa\x3a\x5c\ +\xaf\x82\xe6\x26\xf0\x4a\x38\x0f\xf8\x1b\xce\x70\x31\xe7\x49\x2c\ +\xb1\x91\x6d\x95\x13\x9a\x41\xd0\x2a\xa0\xd6\xf9\xb8\x52\x62\x08\ +\xa1\xf9\xa5\x06\xa7\xa6\x25\x06\x3a\x9c\xbf\x03\x2c\xea\x60\x3a\ +\x23\x8b\xbc\x4e\x63\x8c\x83\x64\x46\x1f\xe4\x08\x1e\xa4\x92\x60\ +\x9a\x64\x93\x09\x60\x1b\x90\x51\x2d\x18\x08\xa1\x1d\xb1\x14\xb8\ +\x82\x08\xac\x67\xf8\xa5\x88\xb8\xec\x83\xb8\x0f\x49\x6d\x12\x56\ +\x63\x7a\xbc\xd0\x41\x12\x92\xe3\x79\xa3\xe9\x55\x48\x2f\xdf\x5c\ +\x9f\x0e\xe5\x5c\x3a\x66\x55\x5e\x73\x0c\xcc\xa0\x1d\xcc\x62\x7c\ +\x89\x67\x5e\xe4\xfc\x9e\x72\xbc\xd5\x20\x6f\xaf\x5f\xbc\x3f\xdb\ +\xfb\xf6\xe0\xe0\xe9\x61\x0b\x17\x1a\x8c\x8e\xde\x98\x97\xb1\xf5\ +\xbb\x09\x88\xd9\xc4\x28\x17\x18\x2b\x80\x35\xfa\xc4\x8f\x87\x3b\ +\x2a\xea\x72\xd6\x77\x1f\x05\xe6\x25\xab\x6e\xda\x49\xfc\x01\x49\ +\x7a\x38\xbb\x08\x2b\x63\x52\xec\xdd\x78\x7b\x6e\x00\xd1\x6d\xe0\ +\x90\xab\x8e\x10\xb9\x72\xd8\x04\xe1\x43\xa9\x84\x56\x2a\x2e\x20\ +\x68\xca\x19\x8d\x97\xa2\x0e\x49\xa0\xf5\xfa\x37\x03\x07\xc3\xa1\ +\x71\x35\xab\x4b\x32\x47\x93\xd2\x13\x14\xed\xfc\xe2\x4e\xc8\xe4\ +\xdb\x96\xc3\xad\xab\x8b\x54\x90\x52\xa0\xed\xc2\xb9\xb9\xd7\xcd\ +\x81\x9d\xad\x91\x16\xcd\xb9\x94\xae\x4a\x24\xad\xa4\xde\xd1\x93\ +\xb7\xe0\x6e\x1c\x7c\x9d\x89\x69\xab\xcd\x5d\xad\xb5\x1d\xce\xc7\ +\xb1\x9a\x76\xca\xea\xe4\xa5\x88\x67\x49\xa9\xdb\xc4\x4b\x51\xba\ +\x48\x90\xd0\x88\x42\xee\x12\x96\xfc\x9c\x58\x14\x37\x07\x8e\x6d\ +\x58\xb8\x73\x48\x58\x1f\x7c\xc0\x43\x07\x50\x1e\xe9\xc6\xe2\xbc\ +\x35\x17\x3c\xfa\xa3\x22\xe8\xd0\x2a\xa5\x6b\x2c\x87\x1f\x67\xc8\ +\x6e\xc1\xba\x2f\x3e\x1a\x84\xdc\xe4\xf3\x82\xc6\x76\xbe\x27\x86\ +\x7b\x18\x21\x14\x37\xf8\x4f\x55\xdc\x61\x1a\xb2\xfc\x07\x7c\xd3\ +\xda\x60\xc8\x79\xba\xda\xda\x56\x25\x7a\xe3\x08\xd4\x31\x91\x0d\ +\x70\x50\x43\x84\x22\xd3\x56\x9b\x65\xe4\x31\x62\x3c\x6a\xf3\x2a\ +\x32\x7a\xd8\x74\xc8\xd7\x5f\xbb\xa6\x22\x54\x60\xd2\x62\xa7\x0e\ +\x20\x50\xe4\x19\x78\xbd\xba\x88\x8d\x85\xc3\xf5\x0a\x48\x00\x3d\ +\x62\x9a\x7a\x33\x77\x62\x05\xe5\x50\x75\x03\x3c\x82\xd9\xf0\xe0\ +\xc6\x3b\x39\x16\xe8\x22\x26\x32\x0c\x24\x29\x26\x1b\x05\x8c\x4f\ +\xe9\x82\x2e\x4b\xd1\x32\x88\x22\x3e\x01\x42\x74\x94\xcb\x54\x45\ +\xcc\x09\x14\x37\x41\xbc\x4e\x2e\x96\x8d\x53\x10\x0a\x3f\xeb\x3b\ +\xaa\xc6\xfd\xe3\xa0\x13\x8d\x54\xe2\xd0\x6a\x15\x3b\xa8\x6e\x70\ +\x3d\xaf\x73\x74\x1d\x84\x5d\x6d\x4c\x34\x2b\x9f\x88\xbd\x18\xfd\ +\x83\x78\xab\x65\x88\x4c\x78\x3e\xff\x42\x2e\xdb\x7c\xf2\xbb\x78\ +\xac\x4e\xe5\x5b\xa2\x89\x12\xfc\x7a\x33\x71\xdd\x37\x24\x7d\x81\ +\x12\x04\xbe\x77\xb8\xa5\xa0\x55\x4d\x0e\x4d\x48\xac\x83\x21\x66\ +\x15\xe8\xeb\x82\xc2\x15\x85\x39\x68\x02\x9f\x6a\x56\xa2\xec\x77\ +\x93\x7a\x54\x16\xf8\xae\x05\x1e\x73\x40\x0e\x3b\x64\xb0\x26\x82\ +\x6d\x47\x44\xb6\x9b\x42\x8e\x07\x7f\x88\xc8\xf6\xa5\x22\x50\xe8\ +\x4d\x87\x3f\x62\x18\xb2\x25\x8f\x57\xde\xed\x3f\x7e\x2c\x57\x1e\ +\x93\x73\x31\xfe\x91\x5d\x84\x9d\x0e\xa1\x70\x31\xac\xcb\x80\x21\ +\x19\x41\xe3\x8c\xc8\x31\x26\x06\x6c\x07\x4a\x57\x03\x4b\x3d\xd8\ +\x31\x28\x22\x45\x60\xdf\x2f\xb2\xe4\xb4\x49\x0a\xcc\x0c\xeb\xfb\ +\xd6\x2d\x06\x8a\xd8\x31\x5e\xbb\x04\x8a\x2c\xeb\x59\xe5\x66\x8f\ +\x17\x75\x93\xdf\xc2\x3b\xfb\x03\x3d\xb6\x5e\x8a\xe0\x68\xa7\x50\ +\x43\xf6\xb7\x0a\xd6\xc6\x7d\x69\x51\xa4\x4b\x03\xea\x1d\xa5\x31\ +\x2f\x59\x7b\xcf\x53\x74\xde\x4b\x18\x7f\xd0\x20\xaf\x69\xd1\x94\ +\x12\xf8\x93\x9c\xb9\x59\xdd\x8c\xb1\x1c\x5e\x53\xaa\x8b\x52\xd4\ +\x71\x20\xc4\x1a\x98\x2a\xeb\xe5\x1f\x68\x5a\x23\x5b\x0e\xf8\x8d\ +\x87\xab\x11\xa5\x37\x97\xe7\x3a\x11\x78\x14\x82\x23\x09\xc3\xbc\ +\x13\x49\x13\x6d\xa1\x2d\x95\x82\x2c\xa4\x7d\xfb\xe6\x3d\xc0\xb7\ +\xf8\xfc\xeb\xbf\x5d\x12\xe7\xe0\x05\x60\xc5\x91\x7c\x67\x55\x77\ +\xd7\xcd\x3e\x1c\x50\xfa\x72\xc5\x5e\x59\x0f\x39\x47\x0c\xf8\x53\ +\xef\x3f\x1a\x5f\xc2\xc6\x4e\x0d\x59\xa3\xc6\xb4\x79\x3b\x5f\x28\ +\x5d\x73\x5e\x6b\x39\xde\x99\xda\x86\xb3\xc9\xc1\x3e\xcb\x39\xbd\ +\x80\xe2\x36\x51\xf2\x65\xb1\xfe\x5c\x7c\xbd\x0c\xbc\xef\x83\xea\ +\x93\xab\xaa\x59\xb2\xa0\xad\x66\x49\x2e\x9d\x8b\xfc\xee\x80\x05\ +\x5a\x25\x8b\xf1\xd6\x6b\x54\x03\x86\x8c\x77\xba\x81\xc9\x84\x88\ +\x2f\xad\x9b\x6e\xcf\xea\x9c\x99\x2a\x20\xa9\xc5\xfb\x90\x9b\x86\ +\xaa\xce\xdb\x3f\x66\x8f\x98\xb2\xfa\xe5\x5c\xb8\xc6\xd0\x95\xdb\ +\x73\x6f\x6f\x3b\xee\xe3\x7d\x5d\x10\x03\x9e\x55\xf6\x2b\x2e\x82\ +\xd6\xfc\xd6\xfb\xb9\x39\x4b\xf6\xf0\x40\xbd\x75\xf7\x59\xf6\xb5\ +\xc1\x76\xa2\xd3\x6f\xe4\x6d\xcc\x88\x3d\xa9\xd4\xde\xd0\xda\x41\ +\x00\x08\x8f\x08\x20\xf8\xd5\x28\xc2\x03\x33\xfb\x0e\x05\x99\xb9\ +\xfd\xa3\x75\xc3\x64\xfd\x91\x53\x79\xf1\x8e\xfd\x86\x59\x79\x47\ +\x35\x27\x52\xd1\x9a\x94\xa2\x3f\x16\xa8\x2f\xe9\x75\xe0\x6b\x57\ +\x81\x8d\x42\xc0\x0d\x1b\x61\xcf\x1d\x41\xe1\x7a\xc6\x20\x70\xf0\ +\x77\xe2\xef\xbe\x8d\xce\x93\x3c\xe4\xc2\x7e\xfa\x78\x4e\x5c\xf8\ +\x96\x1f\x7b\x83\xbe\x06\xec\x61\x03\x36\x73\x6a\xcd\x97\xf2\x12\ +\xdd\x83\x7f\xea\xc0\xe3\x1b\x47\x66\x58\xd6\x8c\xcc\xe2\x75\x9a\ +\x71\xcd\x39\xbe\x20\xff\x80\x39\xc5\xdd\x27\xa7\x9e\x89\x7a\x8b\ +\x1a\xfe\x50\x3d\xae\x1a\x90\xa4\x12\x23\xd0\xbc\x35\x6f\x2b\xb0\ +\xeb\x2d\x71\x5d\x5c\x7a\xba\xf8\x9a\xf7\x9f\x66\x64\xac\x1a\xe8\ +\x58\x34\xd4\x04\x67\xf5\x64\xc9\xaa\x46\xfc\xfa\x9c\xf4\x28\xa4\ +\xf0\xac\x79\x83\xd0\x14\x5b\x68\xa0\xde\x84\x01\x3d\x89\x38\x14\ +\x6c\x72\xf0\x8a\x4a\x16\xfc\x99\x48\xb3\x25\xc9\x8b\x2a\x99\xe3\ +\x54\x92\xd0\x05\x5d\xe2\xec\x1f\x9b\xa0\x8a\xd7\x63\x39\x05\xa0\ +\xe3\xaa\x56\xe0\x2d\x6c\x41\xd2\xbe\x5d\x40\x4b\x84\xc1\x64\xca\ +\xe2\xde\xba\xfb\x25\x3b\xa8\x6b\xe2\xc4\xb7\x5e\x6b\xb6\x1b\xac\ +\x1c\xcc\x0d\x04\x7a\xb6\x79\x0d\x46\x2b\xdc\xe5\x63\xd0\x2e\x0c\ +\x27\xc9\xb4\xe6\x74\x84\xaf\x49\x23\x05\x3f\x08\x4d\x99\xd3\xd6\ +\x93\x56\xc6\xc1\x4f\xa8\x7c\xda\x52\xef\xe1\xd6\xac\x81\x6c\x9b\ +\xa0\x05\xea\x14\x95\x4d\x39\xc3\x1b\x88\xec\x1b\xbc\x80\x00\x7b\ +\xce\xd6\x36\xb7\xfa\x45\x0f\x85\x5b\x7a\x91\x5b\x2b\x2a\x57\xf3\ +\x7a\x81\x9f\x7b\xd8\xd5\x36\x55\xfb\x73\xcf\x0e\x84\x9d\x3b\x2a\ +\x15\xfc\x83\xbd\x4c\xeb\x91\x1a\x59\x77\xd4\x89\x62\x93\xaf\x9b\ +\xd2\xd5\x4d\x5f\x70\xdf\x95\x02\x1e\xb6\x17\xa5\x2f\x1d\x6d\x4c\ +\x48\x0c\x02\xa7\x6c\x60\x03\x02\x10\xd9\x5c\xff\x9f\xa0\xda\x17\ +\xe9\xa3\xe6\xb5\x9c\x7f\xe2\xcf\xea\xfb\x37\xc6\x91\x87\xb6\xd8\ +\xf0\xb3\x5d\x73\xbc\x29\xf5\x3b\xef\xf9\x87\x5b\xdc\xad\xb3\xbf\ +\x00\xd6\xcc\x03\xb8\x77\x8e\x0e\x70\x71\x34\x80\xf5\xa3\xbd\x11\ +\x5a\xf7\x2b\x47\x7a\x8a\xbb\xfa\xbf\xbc\x50\x20\x6e\x5e\x65\x0d\ +\x63\x9b\x4b\x53\x2b\x6b\xda\x8d\x97\xb2\x0c\x60\x33\x35\x7b\xf0\ +\xaa\x47\x68\xb7\xac\xea\x25\x2b\xf2\xb1\x75\xb3\x01\x75\x11\xec\ +\x80\x38\x69\x8f\x6d\x2a\xdc\xcc\x79\xb5\x28\x62\x59\x3d\xf7\x9a\ +\x2a\x55\x6b\xeb\x97\x4c\x2c\x90\x7c\xa4\x2b\x0b\x10\xe2\xfe\xbe\ +\x37\xd0\xc1\xff\xc7\x22\xec\x3e\xcb\x63\xf6\x4b\xb9\xe3\x14\xc5\ +\xea\x3f\xff\xa1\xe3\x7d\x23\xf1\x7f\xa3\x49\xca\x25\xb0\x46\x7c\ +\x4f\xa2\xf4\x6e\x40\x1c\xf3\xf3\x6c\x51\x72\x70\x04\x2c\xfc\x0f\ +\xef\xa9\xe8\x1b\ \x00\x00\x24\x34\ \x00\ \x00\x86\x68\x78\x9c\xd5\x7d\xfb\x73\xdb\x38\xd2\xe0\xcf\xa7\xbf\ @@ -591,248 +833,6 @@ \xd5\x5f\xb6\xa5\xc4\x7a\x7c\x4d\x56\x65\xea\x73\x49\x25\x45\xbc\ \xb7\xfb\x42\xef\x99\xfb\x0e\xbd\xa1\xee\x54\x9e\x5c\xff\x7f\x2f\ \x2e\x80\x20\ -\x00\x00\x0e\xf5\ -\x00\ -\x00\x39\x5f\x78\x9c\xcd\x1b\xed\x6e\xdb\x46\xf2\xbf\x9f\x62\x23\ -\x14\xad\x9c\xc8\xb4\x9d\xb4\xf7\x21\x5f\x0e\xe7\x38\x8e\xe1\xab\ -\xe3\x38\x17\xa7\x2d\xe0\x1a\xc6\x4a\x5c\x49\xac\x29\x92\x5d\x92\ -\x56\x74\x89\xde\xe6\xde\xe4\x5e\xec\x66\xf6\x7b\xc9\xa5\xa4\x14\ -\xb9\xa2\x42\x10\x45\xdc\xd9\x99\xd9\xf9\x9e\x59\x66\xff\xf1\xce\ -\x63\xfc\x43\x4e\xf2\x62\xc9\x93\xe9\xac\x22\xfd\x93\x5d\xf2\xf4\ -\xe0\xf0\x3b\x72\x3d\x63\xe4\x6d\x05\x2b\xf3\x82\x66\x4b\x72\x51\ -\xc5\x51\x10\xf2\x5b\xf2\x7d\x4a\xf9\x7f\xff\x93\x3e\xc4\x34\x65\ -\x59\x49\x5e\xd2\x8a\xde\xe7\x59\x59\xa7\x15\x39\x7e\x31\x20\x94\ -\x7c\xff\xf2\xf8\x05\x39\xe3\x79\x5d\x90\xb1\x44\x37\x20\x49\x36\ -\xc9\xff\x71\x1f\xd3\x51\x04\x8f\x00\xa8\xae\x66\x39\x27\xaf\x93\ -\x34\xa1\x19\xf9\x31\x4f\x27\x13\xf2\xb7\xb9\xf8\x15\x2d\xf0\x97\ -\x81\xfd\xbb\xe4\x22\xab\xe8\xb8\x1a\x92\x59\x55\x15\xc3\xfd\xfd\ -\xc5\x62\x11\xfd\x5a\x45\x49\xbe\x9f\x26\x63\x60\x22\xc9\xa6\xfb\ -\xea\x68\xd7\xb3\xa4\x24\x93\x24\x65\x04\xbe\x0b\xca\x2b\x92\x4f\ -\x48\x25\x0e\xf7\x23\x1b\x9d\xcc\x68\x96\xb1\x94\xcc\xf3\xb8\x06\ -\x10\xb3\x44\xae\xf3\x3c\xbd\x4f\xaa\x48\x61\xf9\xea\xed\xf5\xdd\ -\x8b\xd3\xb3\xf3\xcb\xbb\x8b\xf3\x93\xd3\xcb\x77\xa7\xc3\x8b\xb3\ -\xab\x8b\xa7\x87\x5f\x49\x6e\xe6\x73\xc6\xc7\x09\x4d\xc9\x85\x20\ -\xcf\xc8\xfb\x92\x4e\x19\xae\xa9\x07\xac\x24\xb3\x3c\x8d\x81\x2f\ -\xf2\x40\xd3\x24\x46\x41\xe8\x3d\x40\x4d\x72\x0d\x40\x73\xba\x24\ -\x35\xec\xaf\x2c\xd7\x19\xa2\xa1\xe3\x71\xce\x63\x9a\x8d\x19\x59\ -\x24\xd5\x4c\x70\xe9\xa0\x50\xfb\x09\x9d\x72\xc6\xe6\x2c\xab\x48\ -\xc1\xf3\x87\x24\x66\xb1\x01\x47\x2c\xef\xf2\x49\xb5\xa0\x1c\xce\ -\xc9\x41\xe4\x69\xc5\x78\x46\xab\xe4\x81\xa5\x42\x21\x41\x22\x00\ -\x33\x2f\x81\x14\xc8\x3b\xc9\x00\x9d\x62\x87\x2c\x78\x52\x55\x2c\ -\x73\x28\x8e\x58\xb5\x60\xf0\x64\x99\xd7\x84\x66\x71\xc3\x80\x22\ -\xf2\x0a\xf4\x6b\xb4\x23\xf1\x0a\x54\x19\x0a\x23\x8b\x93\x2a\x01\ -\xa3\x21\x20\xaa\xb6\x52\x05\xf0\x9e\x85\x92\xc8\x26\x35\x07\x0e\ -\x39\x22\x41\x6b\xe2\x73\x8a\x8b\x4a\x7c\x4c\xf2\x3c\xae\x08\xae\ -\x10\x5a\xb5\xb1\x2a\x80\xbd\xba\xd4\x5a\x3e\xbb\x7c\x4f\x2e\x58\ -\x59\x32\x4e\xce\x58\xc6\x38\x48\xf6\xaa\x1e\x01\xd3\x6d\xbd\x1e\ -\xfb\xd2\xb3\xfa\x42\x0d\x8e\x18\x72\x11\x93\x3a\x8b\x01\x95\x15\ -\xa3\x32\x2f\x4b\x46\x10\x0d\x53\x7a\x60\xbc\xc4\xe3\x3c\x8d\x0e\ -\x41\x5d\xe6\xe7\x33\x42\xc1\x8c\x11\xb4\x9c\x01\x85\xd1\x52\x60\ -\x7c\x05\x4a\xf0\x14\xfc\x2a\x07\xda\x52\x1e\x28\x60\x5a\x14\x8c\ -\x72\x94\x3b\xa8\x19\x37\x08\x56\x95\x29\x47\x68\xca\x0f\x4f\x0f\ -\x11\x52\x98\xac\xfb\xf8\x19\xec\x18\xa7\x75\x2c\x54\x2f\xb6\x16\ -\x74\x7c\x4f\xa7\x88\x4b\x1c\x47\x9d\x3b\x22\x57\x29\xa3\xc0\x37\ -\x67\x0f\x09\x5b\x68\x8b\x9b\xe4\x69\x9a\x2f\x24\x61\xab\xa2\x2a\ -\x27\x70\xc6\x9a\xb3\x86\x38\x3a\x64\x81\x88\x38\xfb\xb5\x4e\xb8\ -\xb0\xb4\x12\xac\x33\x4d\x51\xc8\x73\xa6\x42\x40\xa9\x14\x3b\xcd\ -\xea\x28\xe7\xd3\x7d\xed\x4f\xfb\xe9\xb4\x48\xa3\x59\x35\x4f\xf5\ -\xe1\x1c\x2b\x68\x01\x83\x83\xee\x79\x3b\xf7\x40\xf8\x62\xb7\x36\ -\x90\xe3\x12\x4c\xbf\x2c\x98\x70\x3a\xf6\x61\xcc\x0a\x3c\xcf\xa0\ -\x19\x2c\xa7\x60\x15\xa5\x70\x84\x31\xe3\xe8\x38\x84\xc6\xd2\x74\ -\x69\x2a\x0e\x83\x01\x14\xac\x18\xb6\xa1\xc4\xc4\x2f\x82\x6a\x8b\ -\x59\x39\xe6\xc9\x48\x0a\xbb\x19\x81\x41\x1d\xe4\x54\xd3\x44\x34\ -\xda\x26\x0e\xa3\xc3\x41\x4b\x4d\x52\xc3\xb0\xe7\xee\xf4\xa7\x93\ -\xd3\xab\xeb\xf3\x37\x97\x51\xf5\xa1\x92\xcb\x22\x14\xa2\x1a\x99\ -\x1b\xe0\x4e\x2f\x5f\xea\xf0\xf6\x95\x78\xbc\xbf\xb3\xd3\x43\x77\ -\x2a\x2b\x9e\x8c\xab\xde\xd1\xce\xce\x03\xe5\xe4\xad\x8d\x9b\xaf\ -\x41\x6d\x80\xe4\x7a\x59\xc0\x79\x9f\x93\x8f\x3b\x04\x3e\x65\x32\ -\x85\x73\x0e\xc9\xe1\x40\xfc\x84\x48\x54\x80\x14\x96\xef\x0b\x30\ -\x48\x36\x24\x4f\xe5\xe3\x24\x4b\x40\x79\xcf\xd4\x8f\x38\x85\x95\ -\x6f\xe5\x8f\x98\x8d\xea\xe9\x90\x7c\xa7\xe1\x1e\xf2\x7b\xf6\x9a\ -\x41\x7e\x88\x87\xe4\x4f\xf2\x21\xb8\x6e\xc6\xc6\xd5\x75\xfe\x4e\ -\xd1\xfa\xb3\xda\x9a\x94\x6a\xe9\x15\xcf\xe7\x7a\xf1\x2f\x72\xb1\ -\x64\xd5\x95\xe2\x65\x48\xfe\x2a\x9f\x71\x56\x16\x10\x50\x80\xf8\ -\xe1\xc1\x60\x67\xd5\x3e\x21\x9c\x6a\x52\x67\x63\x14\x79\xbf\xe2\ -\x34\x03\x70\x5e\x0d\x04\xf7\x27\x34\x4d\x47\x20\xc5\xdd\x1d\x79\ -\xee\x64\x42\xfa\x15\x48\x02\xdd\x42\x43\x92\x47\xcf\x9f\x93\x5e\ -\x3e\xfa\x05\x58\xea\x91\x4f\x9f\x48\x13\x20\x2a\x19\xf8\xa7\x80\ -\xd2\x74\x7a\xbb\x4a\x90\xea\xa4\x65\x0e\xee\xc5\x38\xcf\x79\xbf\ -\x27\x6c\xc2\xe1\x8e\x7d\x00\x63\x44\xe3\x71\x48\x4a\x6a\x32\x84\ -\x83\xb5\x22\x7e\x8d\x5a\x04\x83\x3c\x9b\x4b\xb5\x91\xb1\x3a\x81\ -\xd1\x51\xd4\x23\x4f\x0c\x69\xff\xd3\x23\x67\x60\xd5\x19\x64\xd1\ -\xa1\xa5\x35\x84\xc7\x4f\xd4\x99\xac\x78\x76\xe1\x59\x6f\xd0\x38\ -\x63\x18\x54\x2c\xed\xee\x1e\x19\xa2\x9c\x55\x35\xcf\xe4\xef\xd5\ -\x8e\xf8\x42\x8d\x8c\x8d\x36\xd0\x78\xe5\x32\xfe\x2b\xb2\xc7\x7e\ -\x6e\x09\x1e\xed\x58\x00\x71\x7e\x47\x89\x60\x84\x74\x57\x2c\x5b\ -\x21\x5b\xcd\xc9\x65\xa9\x0f\xb4\xfa\x6c\xea\x69\x43\xd8\x18\x40\ -\x00\xc2\x7f\xbe\x03\x87\x92\x20\xc9\x64\x29\xf7\xd9\x63\xac\xac\ -\x02\x25\xe7\x91\x7f\x64\x17\x7e\xb5\x13\x38\x4e\x64\xb5\xe4\x30\ -\xaf\x1e\x35\xf9\x47\x09\x29\xb6\x14\x44\x84\x3f\x8f\x02\x07\x54\ -\x70\x5b\x9e\x0f\xea\xa5\x92\x75\x9f\xad\x04\x1b\x1b\xcf\x88\x00\ -\x88\x10\x7f\x13\xd7\x18\x33\x42\x47\xbc\x88\x54\x9c\x68\xd9\x9b\ -\x96\x18\x7c\x41\x58\x90\x4e\xdc\xe4\x41\x7f\x46\x9c\xd1\xfb\xa3\ -\xed\x69\x1a\x7f\xdf\x40\xf5\x5f\x0a\xee\x4b\xd1\x6d\x04\xc1\x0d\ -\xd4\xaf\x3c\xe8\xcf\xe0\x21\x66\x13\x0a\x75\x77\x00\xbf\x1f\x46\ -\x20\xa8\x8a\x2a\x54\x9b\x18\x67\x63\x06\xde\x1d\x0f\xc1\x6d\x5d\ -\x0b\xda\x4c\x75\xd5\x32\x61\xf6\x81\x8d\x75\x68\x14\x49\x61\x75\ -\xe4\x2f\x9e\xa3\x3f\x1e\x34\x1e\x36\x5d\x74\x60\x82\x53\xc8\x59\ -\x1f\x99\xc5\x86\xc1\xed\xef\xe3\x7a\x96\xdb\xd0\x06\xa9\x0e\xd3\ -\x31\x24\x69\x11\x09\x62\x28\x22\xc6\x55\xba\xf4\x55\xa7\xa4\xdf\ -\xf4\x4c\xfd\x71\x83\x92\x3d\xb4\x66\x46\xef\xd6\x67\x03\xdf\xba\ -\xac\xe7\x23\xc6\xa3\xd7\xc7\x3f\xdd\xfd\x70\x7c\xf1\xfe\x34\xc0\ -\xe6\x82\xd3\x22\xc8\x84\x11\x91\x46\x02\x4d\x87\x40\xd2\x45\x5f\ -\x78\xdf\x8c\x96\x6f\x16\x99\x36\x1c\xd0\x70\xdc\xdb\x6d\x79\xa3\ -\x6f\x04\x27\x40\x2f\xaf\x88\x90\xbe\x36\x04\x91\x34\xb4\xb1\x42\ -\x5a\x96\x51\x3b\x14\xeb\xb6\x16\x91\x60\x2f\xc1\x03\xf9\x27\x7c\ -\xf2\xc4\x42\xbb\x2b\xc6\x76\x6e\xd4\xce\x5b\xdc\xaa\x1e\xb6\xb7\ -\xb4\xa2\xa9\x1b\xfc\x65\x2a\xd4\x56\x68\x9f\xbb\xa1\x65\xcb\xf8\ -\xaa\xb2\xaa\x3d\x85\xc2\x7d\xa3\xfd\x45\xfe\xbe\xf5\x83\xae\x7c\ -\xd8\x54\x84\x7c\xaa\x02\xe0\xe9\x1c\x3b\xa9\x58\xd3\x56\x4f\xad\ -\x1f\x52\x3e\x2d\xdd\xe8\x4b\x58\x0a\x81\x26\xac\x59\xa8\xfd\xb3\ -\x7e\xef\x7d\x26\xcf\x17\x9b\x52\x0c\x95\xe8\xf3\x89\x29\x7a\x38\ -\x74\x9f\x4b\xd8\x56\x9c\x5f\xb5\xc4\xa6\x63\xe3\x16\x82\x13\xbe\ -\xaa\x09\xfc\x06\x13\x3d\x57\x71\x4a\x87\xed\x76\xc0\xc2\x42\xa3\ -\x61\x9e\x9a\x97\xad\x2d\x34\x6c\x7d\x9a\x6d\x30\xc0\x7e\x47\x4c\ -\x8c\x59\xca\x2a\xb6\x79\x7f\x3b\xcf\x87\xe2\xfc\x16\xf2\x84\x16\ -\x8a\xf4\xd1\x1a\x13\xac\xe3\x3d\xae\x1a\x82\xec\x28\x09\x6e\x92\ -\xdb\xa3\x16\x5c\xa7\x69\x0b\x07\x6c\xd9\xf5\x7a\xdb\x76\xec\xbb\ -\x68\xa7\x31\x65\x65\xe5\x40\x86\x05\x05\x91\xb0\xb2\xa1\xac\xa0\ -\x95\xbb\x06\xd2\xb4\x74\x13\xb3\x6a\xd5\x66\xa0\x69\x3b\xfc\x5b\ -\x7b\x77\xd8\x68\x12\xdd\x60\x1b\xfd\x8f\x58\xe3\x0c\x3b\x93\x3c\ -\x76\x31\xab\x40\x51\x27\x1a\x9a\x2d\xb4\xeb\x85\xb4\x0d\xb4\x04\ -\x4e\x29\xc5\xa1\xd6\xf0\xaa\x11\x02\x3f\x8b\x77\x68\x68\x56\x83\ -\x46\x99\x1c\xb2\x3c\x29\xce\x4b\x3a\xc7\xd1\x14\xe9\x32\x3d\x63\ -\x52\x19\x5b\x90\xb7\x6f\xc4\xaf\xbe\xdd\x2a\x19\xbf\xb1\x0f\x6e\ -\x07\x9a\xdb\x60\xa1\x09\xf9\x32\xcb\x17\xa4\xce\x30\x6b\x12\x6b\ -\x35\x03\xb2\x98\x25\x50\x81\xce\xc5\x44\x92\xb3\x09\xe3\x0c\xc7\ -\x57\x39\x0e\x86\xe0\xf7\x34\x29\x2b\x78\x14\x2b\x7e\xca\x4d\xc7\ -\x69\x38\x40\x2b\x3a\x35\xfc\xc3\xe1\x3f\x92\xbc\x5d\x19\xd6\xfa\ -\xc1\x83\xa0\xdf\x78\xbd\x63\x83\x82\xbb\xd6\x5f\x27\x91\xdf\x6c\ -\x97\xf0\x8d\xf6\x61\x3a\x42\xad\x9c\xcc\xa8\x05\x84\x6a\xf0\xe8\ -\xde\x56\xd8\xf1\xdd\x5d\x12\xdf\xdd\xa1\x52\x01\x56\xa2\xb3\x90\ -\x46\x28\xb8\x78\x6b\x1a\xb5\x1d\xa5\xbe\x0b\xd0\x04\x0e\x8c\xc6\ -\xa6\x32\xac\x66\xb4\x22\x53\x56\xa9\x0e\x3f\x06\xcf\x05\x76\xa4\ -\x63\x12\x36\x4f\x4a\x9c\x6d\xb8\xc4\x25\x01\x99\xb4\x4b\xc1\x87\ -\x49\xea\x40\xe0\x84\x8e\x67\x62\x80\x0b\x04\x3c\x0b\x91\x01\x21\ -\x06\x4b\xc1\x71\x25\xd8\x51\x05\x49\x42\xd3\x81\xea\x90\xc9\xfc\ -\xeb\x52\xd2\xc1\x44\xe0\xf4\x29\x79\xc6\xed\x1f\x71\xef\x8b\x7c\ -\x9c\xb8\x21\x4d\x4a\x29\xc8\x8d\x1f\x3a\x1d\x86\xd2\xad\x49\x95\ -\x49\x56\x56\x38\xcb\x05\x91\x1c\x73\x4e\x97\x81\x1a\xb4\xac\x0b\ -\xd1\x3a\xa7\x4a\x39\x4d\x2f\xd1\x07\x86\xd4\xa9\x5c\x59\x60\x32\ -\x34\xa2\x94\x65\xd3\x6a\xd6\x08\xa3\x4e\x92\xc2\x3a\x1f\xbe\xfe\ -\x46\x1a\x3b\x8e\xc8\x93\x27\x49\x28\x73\x00\x25\x48\x51\xb0\x4f\ -\xa5\x10\x4f\x04\x86\x2e\x80\x74\x86\x6e\x85\x05\x52\x3d\x7e\x75\ -\xf9\xe0\x23\x8d\xca\xdb\xf7\xe9\x13\x31\x0b\x37\xbd\xbb\x3b\x45\ -\xf7\xf1\xdd\x5d\xef\xb6\x09\x68\x4e\x94\xc8\x92\x1f\x67\xbd\x13\ -\x1c\x91\x37\x8f\x65\x98\x91\xf0\x2e\x47\x81\x02\x53\x54\xfe\x0e\ -\x6e\xbf\x9c\x0c\xb8\x9b\xde\x76\xbb\x1b\xa2\xba\x6e\xc3\xd1\x4e\ -\x58\x24\xc1\x7a\x22\xdc\x3b\xa8\x80\x5c\x67\xf7\x10\x9e\x4d\x2c\ -\x11\xb9\xd7\x1c\x07\x12\xaf\x68\x2b\xf2\xba\x92\xb9\xb7\xb7\xb1\ -\x30\xf3\xe4\xf2\xeb\x9b\x50\x2e\x31\xf8\x07\xc4\xe3\xdb\x0d\x5e\ -\xc4\x21\xa4\xb0\x40\xde\x84\x42\x31\x5f\xb2\x38\x52\x83\xc2\xbe\ -\xf1\xaa\x56\x2c\xde\x20\x70\xa1\x76\x85\x37\x64\xcb\xaa\x3a\x5c\ -\xaf\x82\xe6\x26\xf0\x4a\x38\x0f\xf8\x1b\xce\x70\x31\xe7\x49\x2c\ -\xb1\x91\x6d\x95\x13\x9a\x41\xd0\x2a\xa0\xd6\xf9\xb8\x52\x62\x08\ -\xa1\xf9\xa5\x06\xa7\xa6\x25\x06\x3a\x9c\xbf\x03\x2c\xea\x60\x3a\ -\x23\x8b\xbc\x4e\x63\x8c\x83\x64\x46\x1f\xe4\x08\x1e\xa4\x92\x60\ -\x9a\x64\x93\x09\x60\x1b\x90\x51\x2d\x18\x08\xa1\x1d\xb1\x14\xb8\ -\x82\x08\xac\x67\xf8\xa5\x88\xb8\xec\x83\xb8\x0f\x49\x6d\x12\x56\ -\x63\x7a\xbc\xd0\x41\x12\x92\xe3\x79\xa3\xe9\x55\x48\x2f\xdf\x5c\ -\x9f\x0e\xe5\x5c\x3a\x66\x55\x5e\x73\x0c\xcc\xa0\x1d\xcc\x62\x7c\ -\x89\x67\x5e\xe4\xfc\x9e\x72\xbc\xd5\x20\x6f\xaf\x5f\xbc\x3f\xdb\ -\xfb\xf6\xe0\xe0\xe9\x61\x0b\x17\x1a\x8c\x8e\xde\x98\x97\xb1\xf5\ -\xbb\x09\x88\xd9\xc4\x28\x17\x18\x2b\x80\x35\xfa\xc4\x8f\x87\x3b\ -\x2a\xea\x72\xd6\x77\x1f\x05\xe6\x25\xab\x6e\xda\x49\xfc\x01\x49\ -\x7a\x38\xbb\x08\x2b\x63\x52\xec\xdd\x78\x7b\x6e\x00\xd1\x6d\xe0\ -\x90\xab\x8e\x10\xb9\x72\xd8\x04\xe1\x43\xa9\x84\x56\x2a\x2e\x20\ -\x68\xca\x19\x8d\x97\xa2\x0e\x49\xa0\xf5\xfa\x37\x03\x07\xc3\xa1\ -\x71\x35\xab\x4b\x32\x47\x93\xd2\x13\x14\xed\xfc\xe2\x4e\xc8\xe4\ -\xdb\x96\xc3\xad\xab\x8b\x54\x90\x52\xa0\xed\xc2\xb9\xb9\xd7\xcd\ -\x81\x9d\xad\x91\x16\xcd\xb9\x94\xae\x4a\x24\xad\xa4\xde\xd1\x93\ -\xb7\xe0\x6e\x1c\x7c\x9d\x89\x69\xab\xcd\x5d\xad\xb5\x1d\xce\xc7\ -\xb1\x9a\x76\xca\xea\xe4\xa5\x88\x67\x49\xa9\xdb\xc4\x4b\x51\xba\ -\x48\x90\xd0\x88\x42\xee\x12\x96\xfc\x9c\x58\x14\x37\x07\x8e\x6d\ -\x58\xb8\x73\x48\x58\x1f\x7c\xc0\x43\x07\x50\x1e\xe9\xc6\xe2\xbc\ -\x35\x17\x3c\xfa\xa3\x22\xe8\xd0\x2a\xa5\x6b\x2c\x87\x1f\x67\xc8\ -\x6e\xc1\xba\x2f\x3e\x1a\x84\xdc\xe4\xf3\x82\xc6\x76\xbe\x27\x86\ -\x7b\x18\x21\x14\x37\xf8\x4f\x55\xdc\x61\x1a\xb2\xfc\x07\x7c\xd3\ -\xda\x60\xc8\x79\xba\xda\xda\x56\x25\x7a\xe3\x08\xd4\x31\x91\x0d\ -\x70\x50\x43\x84\x22\xd3\x56\x9b\x65\xe4\x31\x62\x3c\x6a\xf3\x2a\ -\x32\x7a\xd8\x74\xc8\xd7\x5f\xbb\xa6\x22\x54\x60\xd2\x62\xa7\x0e\ -\x20\x50\xe4\x19\x78\xbd\xba\x88\x8d\x85\xc3\xf5\x0a\x48\x00\x3d\ -\x62\x9a\x7a\x33\x77\x62\x05\xe5\x50\x75\x03\x3c\x82\xd9\xf0\xe0\ -\xc6\x3b\x39\x16\xe8\x22\x26\x32\x0c\x24\x29\x26\x1b\x05\x8c\x4f\ -\xe9\x82\x2e\x4b\xd1\x32\x88\x22\x3e\x01\x42\x74\x94\xcb\x54\x45\ -\xcc\x09\x14\x37\x41\xbc\x4e\x2e\x96\x8d\x53\x10\x0a\x3f\xeb\x3b\ -\xaa\xc6\xfd\xe3\xa0\x13\x8d\x54\xe2\xd0\x6a\x15\x3b\xa8\x6e\x70\ -\x3d\xaf\x73\x74\x1d\x84\x5d\x6d\x4c\x34\x2b\x9f\x88\xbd\x18\xfd\ -\x83\x78\xab\x65\x88\x4c\x78\x3e\xff\x42\x2e\xdb\x7c\xf2\xbb\x78\ -\xac\x4e\xe5\x5b\xa2\x89\x12\xfc\x7a\x33\x71\xdd\x37\x24\x7d\x81\ -\x12\x04\xbe\x77\xb8\xa5\xa0\x55\x4d\x0e\x4d\x48\xac\x83\x21\x66\ -\x15\xe8\xeb\x82\xc2\x15\x85\x39\x68\x02\x9f\x6a\x56\xa2\xec\x77\ -\x93\x7a\x54\x16\xf8\xae\x05\x1e\x73\x40\x0e\x3b\x64\xb0\x26\x82\ -\x6d\x47\x44\xb6\x9b\x42\x8e\x07\x7f\x88\xc8\xf6\xa5\x22\x50\xe8\ -\x4d\x87\x3f\x62\x18\xb2\x25\x8f\x57\xde\xed\x3f\x7e\x2c\x57\x1e\ -\x93\x73\x31\xfe\x91\x5d\x84\x9d\x0e\xa1\x70\x31\xac\xcb\x80\x21\ -\x19\x41\xe3\x8c\xc8\x31\x26\x06\x6c\x07\x4a\x57\x03\x4b\x3d\xd8\ -\x31\x28\x22\x45\x60\xdf\x2f\xb2\xe4\xb4\x49\x0a\xcc\x0c\xeb\xfb\ -\xd6\x2d\x06\x8a\xd8\x31\x5e\xbb\x04\x8a\x2c\xeb\x59\xe5\x66\x8f\ -\x17\x75\x93\xdf\xc2\x3b\xfb\x03\x3d\xb6\x5e\x8a\xe0\x68\xa7\x50\ -\x43\xf6\xb7\x0a\xd6\xc6\x7d\x69\x51\xa4\x4b\x03\xea\x1d\xa5\x31\ -\x2f\x59\x7b\xcf\x53\x74\xde\x4b\x18\x7f\xd0\x20\xaf\x69\xd1\x94\ -\x12\xf8\x93\x9c\xb9\x59\xdd\x8c\xb1\x1c\x5e\x53\xaa\x8b\x52\xd4\ -\x71\x20\xc4\x1a\x98\x2a\xeb\xe5\x1f\x68\x5a\x23\x5b\x0e\xf8\x8d\ -\x87\xab\x11\xa5\x37\x97\xe7\x3a\x11\x78\x14\x82\x23\x09\xc3\xbc\ -\x13\x49\x13\x6d\xa1\x2d\x95\x82\x2c\xa4\x7d\xfb\xe6\x3d\xc0\xb7\ -\xf8\xfc\xeb\xbf\x5d\x12\xe7\xe0\x05\x60\xc5\x91\x7c\x67\x55\x77\ -\xd7\xcd\x3e\x1c\x50\xfa\x72\xc5\x5e\x59\x0f\x39\x47\x0c\xf8\x53\ -\xef\x3f\x1a\x5f\xc2\xc6\x4e\x0d\x59\xa3\xc6\xb4\x79\x3b\x5f\x28\ -\x5d\x73\x5e\x6b\x39\xde\x99\xda\x86\xb3\xc9\xc1\x3e\xcb\x39\xbd\ -\x80\xe2\x36\x51\xf2\x65\xb1\xfe\x5c\x7c\xbd\x0c\xbc\xef\x83\xea\ -\x93\xab\xaa\x59\xb2\xa0\xad\x66\x49\x2e\x9d\x8b\xfc\xee\x80\x05\ -\x5a\x25\x8b\xf1\xd6\x6b\x54\x03\x86\x8c\x77\xba\x81\xc9\x84\x88\ -\x2f\xad\x9b\x6e\xcf\xea\x9c\x99\x2a\x20\xa9\xc5\xfb\x90\x9b\x86\ -\xaa\xce\xdb\x3f\x66\x8f\x98\xb2\xfa\xe5\x5c\xb8\xc6\xd0\x95\xdb\ -\x73\x6f\x6f\x3b\xee\xe3\x7d\x5d\x10\x03\x9e\x55\xf6\x2b\x2e\x82\ -\xd6\xfc\xd6\xfb\xb9\x39\x4b\xf6\xf0\x40\xbd\x75\xf7\x59\xf6\xb5\ -\xc1\x76\xa2\xd3\x6f\xe4\x6d\xcc\x88\x3d\xa9\xd4\xde\xd0\xda\x41\ -\x00\x08\x8f\x08\x20\xf8\xd5\x28\xc2\x03\x33\xfb\x0e\x05\x99\xb9\ -\xfd\xa3\x75\xc3\x64\xfd\x91\x53\x79\xf1\x8e\xfd\x86\x59\x79\x47\ -\x35\x27\x52\xd1\x9a\x94\xa2\x3f\x16\xa8\x2f\xe9\x75\xe0\x6b\x57\ -\x81\x8d\x42\xc0\x0d\x1b\x61\xcf\x1d\x41\xe1\x7a\xc6\x20\x70\xf0\ -\x77\xe2\xef\xbe\x8d\xce\x93\x3c\xe4\xc2\x7e\xfa\x78\x4e\x5c\xf8\ -\x96\x1f\x7b\x83\xbe\x06\xec\x61\x03\x36\x73\x6a\xcd\x97\xf2\x12\ -\xdd\x83\x7f\xea\xc0\xe3\x1b\x47\x66\x58\xd6\x8c\xcc\xe2\x75\x9a\ -\x71\xcd\x39\xbe\x20\xff\x80\x39\xc5\xdd\x27\xa7\x9e\x89\x7a\x8b\ -\x1a\xfe\x50\x3d\xae\x1a\x90\xa4\x12\x23\xd0\xbc\x35\x6f\x2b\xb0\ -\xeb\x2d\x71\x5d\x5c\x7a\xba\xf8\x9a\xf7\x9f\x66\x64\xac\x1a\xe8\ -\x58\x34\xd4\x04\x67\xf5\x64\xc9\xaa\x46\xfc\xfa\x9c\xf4\x28\xa4\ -\xf0\xac\x79\x83\xd0\x14\x5b\x68\xa0\xde\x84\x01\x3d\x89\x38\x14\ -\x6c\x72\xf0\x8a\x4a\x16\xfc\x99\x48\xb3\x25\xc9\x8b\x2a\x99\xe3\ -\x54\x92\xd0\x05\x5d\xe2\xec\x1f\x9b\xa0\x8a\xd7\x63\x39\x05\xa0\ -\xe3\xaa\x56\xe0\x2d\x6c\x41\xd2\xbe\x5d\x40\x4b\x84\xc1\x64\xca\ -\xe2\xde\xba\xfb\x25\x3b\xa8\x6b\xe2\xc4\xb7\x5e\x6b\xb6\x1b\xac\ -\x1c\xcc\x0d\x04\x7a\xb6\x79\x0d\x46\x2b\xdc\xe5\x63\xd0\x2e\x0c\ -\x27\xc9\xb4\xe6\x74\x84\xaf\x49\x23\x05\x3f\x08\x4d\x99\xd3\xd6\ -\x93\x56\xc6\xc1\x4f\xa8\x7c\xda\x52\xef\xe1\xd6\xac\x81\x6c\x9b\ -\xa0\x05\xea\x14\x95\x4d\x39\xc3\x1b\x88\xec\x1b\xbc\x80\x00\x7b\ -\xce\xd6\x36\xb7\xfa\x45\x0f\x85\x5b\x7a\x91\x5b\x2b\x2a\x57\xf3\ -\x7a\x81\x9f\x7b\xd8\xd5\x36\x55\xfb\x73\xcf\x0e\x84\x9d\x3b\x2a\ -\x15\xfc\x83\xbd\x4c\xeb\x91\x1a\x59\x77\xd4\x89\x62\x93\xaf\x9b\ -\xd2\xd5\x4d\x5f\x70\xdf\x95\x02\x1e\xb6\x17\xa5\x2f\x1d\x6d\x4c\ -\x48\x0c\x02\xa7\x6c\x60\x03\x02\x10\xd9\x5c\xff\x9f\xa0\xda\x17\ -\xe9\xa3\xe6\xb5\x9c\x7f\xe2\xcf\xea\xfb\x37\xc6\x91\x87\xb6\xd8\ -\xf0\xb3\x5d\x73\xbc\x29\xf5\x3b\xef\xf9\x87\x5b\xdc\xad\xb3\xbf\ -\x00\xd6\xcc\x03\xb8\x77\x8e\x0e\x70\x71\x34\x80\xf5\xa3\xbd\x11\ -\x5a\xf7\x2b\x47\x7a\x8a\xbb\xfa\xbf\xbc\x50\x20\x6e\x5e\x65\x0d\ -\x63\x9b\x4b\x53\x2b\x6b\xda\x8d\x97\xb2\x0c\x60\x33\x35\x7b\xf0\ -\xaa\x47\x68\xb7\xac\xea\x25\x2b\xf2\xb1\x75\xb3\x01\x75\x11\xec\ -\x80\x38\x69\x8f\x6d\x2a\xdc\xcc\x79\xb5\x28\x62\x59\x3d\xf7\x9a\ -\x2a\x55\x6b\xeb\x97\x4c\x2c\x90\x7c\xa4\x2b\x0b\x10\xe2\xfe\xbe\ -\x37\xd0\xc1\xff\xc7\x22\xec\x3e\xcb\x63\xf6\x4b\xb9\xe3\x14\xc5\ -\xea\x3f\xff\xa1\xe3\x7d\x23\xf1\x7f\xa3\x49\xca\x25\xb0\x46\x7c\ -\x4f\xa2\xf4\x6e\x40\x1c\xf3\xf3\x6c\x51\x72\x70\x04\x2c\xfc\x0f\ -\xef\xa9\xe8\x1b\ \x00\x01\x6e\xac\ \x2f\ \x2a\x21\x20\x6a\x51\x75\x65\x72\x79\x20\x76\x31\x2e\x37\x2e\x31\ @@ -6709,14 +6709,14 @@ \x08\x94\x81\xf4\ \x00\x6a\ \x00\x61\x00\x76\x00\x61\x00\x73\x00\x63\x00\x72\x00\x69\x00\x70\x00\x74\ +\x00\x0e\ +\x0e\x3a\xd6\x33\ +\x00\x71\ +\x00\x77\x00\x65\x00\x62\x00\x63\x00\x68\x00\x61\x00\x6e\x00\x6e\x00\x65\x00\x6c\x00\x2e\x00\x6a\x00\x73\ \x00\x0c\ \x06\x7a\xfc\x33\ \x00\x6a\ \x00\x71\x00\x75\x00\x65\x00\x72\x00\x79\x00\x2d\x00\x75\x00\x69\x00\x2e\x00\x6a\x00\x73\ -\x00\x0e\ -\x0e\x3a\xd6\x33\ -\x00\x71\ -\x00\x77\x00\x65\x00\x62\x00\x63\x00\x68\x00\x61\x00\x6e\x00\x6e\x00\x65\x00\x6c\x00\x2e\x00\x6a\x00\x73\ \x00\x09\ \x0b\xc9\x66\x13\ \x00\x6a\ @@ -6726,9 +6726,9 @@ qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ -\x00\x00\x00\x1a\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x00\x3c\x00\x01\x00\x00\x00\x01\x00\x00\x0e\xf9\ \x00\x00\x00\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x33\x31\ -\x00\x00\x00\x38\x00\x01\x00\x00\x00\x01\x00\x00\x24\x38\ +\x00\x00\x00\x1a\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ " qt_resource_struct_v2 = b"\ @@ -6736,16 +6736,16 @@ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ \x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x1a\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x53\xdc\x87\x12\xa8\ +\x00\x00\x00\x3c\x00\x01\x00\x00\x00\x01\x00\x00\x0e\xf9\ +\x00\x00\x01\x71\xda\xe0\x04\x1b\ \x00\x00\x00\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x33\x31\ -\x00\x00\x01\x53\xdc\x87\x12\xa8\ -\x00\x00\x00\x38\x00\x01\x00\x00\x00\x01\x00\x00\x24\x38\ -\x00\x00\x01\x5d\xd1\x1e\xd5\x9a\ +\x00\x00\x01\x71\xda\xe0\x03\xeb\ +\x00\x00\x00\x1a\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01\x71\xda\xe0\x03\xd3\ " -qt_version = QtCore.qVersion().split('.') -if qt_version < ['5', '8', '0']: +qt_version = [int(v) for v in QtCore.qVersion().split('.')] +if qt_version < [5, 8, 0]: rcc_version = 1 qt_resource_struct = qt_resource_struct_v1 else:
--- a/eric6/eric6.py Sun May 03 13:42:52 2020 +0200 +++ b/eric6/eric6.py Wed Jun 17 17:14:12 2020 +0200 @@ -293,6 +293,14 @@ if "__PYVENV_LAUNCHER__" in os.environ: del os.environ["__PYVENV_LAUNCHER__"] + # make sure our executable directory (i.e. that of the used Python + # interpreter) is included in the executable search path + pathList = os.environ["PATH"].split(os.pathsep) + exeDir = os.path.dirname(sys.executable) + if exeDir not in pathList: + pathList.insert(0, exeDir) + os.environ["PATH"] = os.pathsep.join(pathList) + from Toolbox import Startup # set the library paths for plugins Startup.setLibraryPaths()
--- a/eric6/i18n/eric6_cs.ts Sun May 03 13:42:52 2020 +0200 +++ b/eric6/i18n/eric6_cs.ts Wed Jun 17 17:14:12 2020 +0200 @@ -375,7 +375,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="200"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="201"/> <source>Add Bookmark</source> <translation>Přidat záložku</translation> </message> @@ -1117,72 +1117,72 @@ <context> <name>AnnotationsChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="808"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> <source>missing type annotation for function argument '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> - <source>missing type annotation for '*{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="814"/> + <source>missing type annotation for '*{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> <source>missing type annotation for '**{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> - <source>missing return type annotation for public function</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="826"/> - <source>missing return type annotation for protected function</source> + <source>missing return type annotation for public function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="829"/> - <source>missing return type annotation for private function</source> + <source>missing return type annotation for protected function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="832"/> - <source>missing return type annotation for special method</source> + <source>missing return type annotation for private function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="835"/> - <source>missing return type annotation for staticmethod</source> + <source>missing return type annotation for special method</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="838"/> + <source>missing return type annotation for staticmethod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="841"/> <source>missing return type annotation for classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="850"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="853"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> - <source>missing type annotation for 'self' in method</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="820"/> + <source>missing type annotation for 'self' in method</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> <source>missing type annotation for 'cls' in classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="842"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="845"/> <source>type annotation coverage of {0}% is too low</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="846"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="849"/> <source>type annotation is too complex ({0} > {1})</source> <translation type="unfinished"></translation> </message> @@ -1831,32 +1831,32 @@ <translation>Přidat s&ložku</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="154"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> <source>&Open</source> <translation>&Otevřít</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> <source>Open in New &Tab</source> <translation>Otevřít v novém &tabu</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="167"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> <source>Edit &Name</source> <translation>Editovat &název</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="170"/> - <source>Edit &Address</source> - <translation>Editovat &adresu</translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <source>Edit &Address</source> + <translation>Editovat &adresu</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="174"/> <source>&Delete</source> <translation>&Smazat</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="331"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="343"/> <source>New Folder</source> <translation>Nová složka</translation> </message> @@ -1866,25 +1866,40 @@ <translation>Stisknout pro smazání vybraných položek</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="176"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="178"/> <source>&Properties...</source> <translation type="unfinished">&Natavení...</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="161"/> - <source>Open in New &Window</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="163"/> + <source>Open in New &Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="165"/> <source>Open in New Pri&vate Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="160"/> <source>Open in New &Background Tab</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="182"/> + <source>New &Folder...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>New Bookmark Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>Enter title for new bookmark folder:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>BookmarksImportDialog</name> @@ -2811,6 +2826,49 @@ </message> </context> <context> + <name>CheckerCategories</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="63"/> + <source>Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="66"/> + <source>Code Complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="69"/> + <source>Documentation</source> + <translation type="unfinished">Dokumentace</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="72"/> + <source>Errors</source> + <translation type="unfinished">Chyby</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="75"/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="78"/> + <source>Naming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="84"/> + <source>Warnings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <source>Security</source> + <translation type="unfinished">Bezpečnost</translation> + </message> +</context> +<context> <name>ChromeImporter</name> <message> <location filename="../WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py" line="43"/> @@ -2945,15 +3003,20 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source>Select Path to Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source><p>The device volume <b>{0}</b> could not be found. Is the device in 'bootloader' mode and mounted?</p> <p>Alternatively select the "Manual Select" entry and enter the path to the device below.</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="52"/> + <source>Manual Select</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ClearPrivateDataDialog</name> @@ -3323,6 +3386,14 @@ </message> </context> <context> + <name>CodeStyleChecker</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1133"/> + <source>No message defined for code '{0}'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>CodeStyleCheckerDialog</name> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="14"/> @@ -3337,137 +3408,127 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="50"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="68"/> <source>Exclude Files:</source> <translation type="unfinished">Nevkládat soubory:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="57"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="75"/> <source>Enter filename patterns of files to be excluded separated by a comma</source> <translation type="unfinished">Zadejte patterny jmen souborů oddělené čárkami, které se nemají vkládat</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="830"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1090"/> <source>Press to start the code style check run</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="840"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1254"/> <source>Press to fix the selected issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1113"/> <source>Press to load the default values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="873"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1123"/> <source>Press to store the current values as defaults</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="883"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1133"/> <source>Press to reset the default values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="82"/> <source>Exclude Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="71"/> - <source>Enter message codes or categories to be excluded separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="141"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="159"/> <source>Press to select the message codes from a list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="85"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="103"/> <source>Included Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="92"/> - <source>Enter message codes or categories to be included separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="106"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="124"/> <source>Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="113"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="131"/> <source>Enter message codes of issues to be fixed automatically (leave empty to fix all)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="127"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="145"/> <source>Don't Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="134"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="152"/> <source>Enter message codes of issues not to be fixed automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="265"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="283"/> <source>Max. Line Length:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="316"/> <source>Enter the maximum allowed line length (PEP-8: 79 characters)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="425"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="443"/> <source>Docstring Type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="450"/> <source>Select the rule set for docstrings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="406"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="424"/> <source>Select to allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="409"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="427"/> <source>Allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="150"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="168"/> <source>Select to repeat each message type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="153"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="171"/> <source>Repeat messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="163"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="181"/> <source>Select to fix some issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="166"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="184"/> <source>Fix issues automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="904"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1167"/> <source><b>Result List</b> <p>This list shows the results of the code style check. Double clicking an entry will open this entry in an editor window and position the cursor at @@ -3475,375 +3536,525 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1183"/> <source>File/Line</source> <translation type="unfinished">Soubor/Řádek</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="925"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1188"/> <source>Code</source> <translation type="unfinished">Kód</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="930"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1193"/> <source>Message</source> <translation type="unfinished">Zpráva</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="80"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="117"/> <source>PEP-257</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="118"/> <source>Eric</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="88"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="144"/> <source>Statistics...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="90"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="146"/> <source>Press to show some statistics for the last run</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="149"/> <source>Show</source> <translation type="unfinished">Zobrazit</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="151"/> <source>Press to show all files containing an issue</source> <translation type="unfinished">Stisknout pro zobrazení všech souborů, které obsahují problém</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="637"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="241"/> <source>Error: {0}</source> <translation type="unfinished">Chyby: {0}</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="244"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="248"/> <source>Fix: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="778"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="982"/> <source>No issues found.</source> <translation type="unfinished">Žádné problémy nenalezeny.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1214"/> <source>Shows the progress of the code style check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="960"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1223"/> <source>%v/%m Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="176"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="194"/> <source>Select to show ignored issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="179"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="197"/> <source>Show ignored</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="730"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="927"/> <source>{0} (ignored)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="622"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="820"/> <source>Preparing files...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="698"/> <source>Enter the maximum allowed code complexity (McCabe: 10)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="152"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="214"/> <source>Errors</source> <translation type="unfinished">Chyby</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="664"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="859"/> <source>Transferring data...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="44"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="42"/> <source>Global Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="233"/> <source>Specific Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="257"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="275"/> <source>Source Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="419"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="437"/> <source>Documentation Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="455"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="473"/> <source>Coding Line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="461"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="479"/> <source>Valid Encodings:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="468"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="486"/> <source>Enter valid encodings separated by a comma (leave empty to use defaults)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="478"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="496"/> <source>Copyright</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="484"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="502"/> <source>Min. File Size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="491"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="509"/> <source>Enter the minimum size a file must have to be checked (0 for all files)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="517"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="535"/> <source>Author:</source> <translation type="unfinished">Autor:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="524"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="542"/> <source>Enter a copyright author name to check for (leave empty to omit this check)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="534"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="552"/> <source>Future Imports</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="540"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="558"/> <source>Expected Imports:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="654"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="672"/> <source>Code Complexity</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1093"/> + <source>&Start</source> + <translation type="unfinished">&Start</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1257"/> + <source>&Fix Selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1116"/> + <source>&Load Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1126"/> + <source>St&ore Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1136"/> + <source>&Reset Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="985"/> + <source>No files found (check your ignore list).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="584"/> + <source>Ignore Built-ins Assignment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="600"/> + <source>Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="605"/> + <source>Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="615"/> + <source>Press to add a built-in assignment to be ignored</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="625"/> + <source>Press to delete the selected entries</source> + <translation type="unfinished">Stisknout pro smazání vybraných položek</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="691"/> + <source>Max. McCabe Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="714"/> + <source>Max. Line Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="721"/> + <source>Enter the maximum complexity (number of nodes) for a line of code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="737"/> + <source>Max. Line Complexity Score:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="744"/> + <source>Enter the maximum allowed median for line complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="350"/> + <source>Blank Lines Before</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="356"/> + <source>Top Level Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="363"/> + <source>Enter the number of blank lines before top level classes and functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="395"/> + <source>Methods and Nested Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="402"/> + <source>Enter the number of blank lines before methods and nested classes or functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="309"/> + <source>Max. Documentation Line Length:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="653"/> + <source>Commented Code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="659"/> + <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="662"/> + <source>Search aggressively</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="763"/> + <source>Type Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="769"/> + <source>Min. Coverage:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="776"/> + <source>Enter the minimum percentage of type annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="779"/> + <source>off</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="782"/> + <source>%</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="805"/> + <source>Max. Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="812"/> + <source>Enter the maximum type annotation complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="32"/> + <source>Configure</source> + <translation type="unfinished">Konfigurovat</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1146"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1244"/> + <source>Press to restart the code style check run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1247"/> + <source>Restart</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="48"/> + <source>Categories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="58"/> + <source>Select the categories of checks to be performed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="89"/> + <source>Enter message codes to be excluded separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="110"/> + <source>Enter message codes to be included separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="833"/> - <source>&Start</source> - <translation type="unfinished">&Start</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="843"/> - <source>&Fix Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="866"/> - <source>&Load Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="876"/> - <source>St&ore Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="886"/> - <source>&Reset Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="781"/> - <source>No files found (check your ignore list).</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="566"/> - <source>Ignore Built-ins Assignment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="582"/> - <source>Left</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="587"/> - <source>Right</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="597"/> - <source>Press to add a built-in assignment to be ignored</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="607"/> - <source>Press to delete the selected entries</source> - <translation type="unfinished">Stisknout pro smazání vybraných položek</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="673"/> - <source>Max. McCabe Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="696"/> - <source>Max. Line Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="703"/> - <source>Enter the maximum complexity (number of nodes) for a line of code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="719"/> - <source>Max. Line Complexity Score:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="726"/> - <source>Enter the maximum allowed median for line complexity</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="332"/> - <source>Blank Lines Before</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="338"/> - <source>Top Level Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="345"/> - <source>Enter the number of blank lines before top level classes and functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="377"/> - <source>Methods and Nested Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="384"/> - <source>Enter the number of blank lines before methods and nested classes or functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="291"/> - <source>Max. Documentation Line Length:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="635"/> - <source>Commented Code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="641"/> - <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="644"/> - <source>Search aggressively</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="745"/> - <source>Type Annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="751"/> - <source>Min. Coverage:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="758"/> - <source>Enter the minimum percentage of type annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="761"/> - <source>off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="764"/> - <source>%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="787"/> - <source>Max. Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="794"/> - <source>Enter the maximum type annotation complexity</source> + <source>Security Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="839"/> + <source>Hardcoded 'tmp' Directories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="849"/> + <source>Weak Cryptographic Keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="855"/> + <source>DSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="973"/> + <source>High Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="868"/> + <source>Select the bit length below which a DSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="990"/> + <source>Medium Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="885"/> + <source>Select the bit length below which a DSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="911"/> + <source>RSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="924"/> + <source>Select the bit length below which a RSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="941"/> + <source>Select the bit length below which a RSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="967"/> + <source>Elliptic Curves</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="980"/> + <source>Select the bit length below which an Elliptic Curve is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="997"/> + <source>Select the bit length below which an Elliptic Curve is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1026"/> + <source>Enter the names of insecure SSL protocols and methods (one per line)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1033"/> + <source>Insecure SSL Protocols:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1043"/> + <source>Insecure Hashes:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1050"/> + <source>Enter a list of hash methods to be considered insecure separated by comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1057"/> + <source>Select to also check for insecure exception handling for typed exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1060"/> + <source>Check Typed Exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1067"/> + <source>Enter directory names (one per line) to be checked for</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1154"/> + <source><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>CodeStyleCheckerPlugin</name> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> <source>Check Code Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>&Code Style...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="262"/> - <source>Check code style.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>&Code Style...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="266"/> + <source>Check code style.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="364"/> <source><b>Check Code Style...</b><p>This checks Python files for compliance to the code style conventions given in various PEPs.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="110"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="112"/> <source>Python 2 batch check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="126"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="128"/> <source>Python 3 batch check</source> <translation type="unfinished"></translation> </message> @@ -3879,142 +4090,142 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="857"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="861"/> <source>Triple single quotes converted to triple double quotes.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="860"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="864"/> <source>Introductory quotes corrected to be {0}"""</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="867"/> <source>Single line docstring put on one line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="866"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="870"/> <source>Period added to summary line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="893"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="897"/> <source>Blank line before function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="872"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="876"/> <source>Blank line inserted before class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="875"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="879"/> <source>Blank line inserted after class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="878"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="882"/> <source>Blank line inserted after docstring summary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="881"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="885"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="884"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="888"/> <source>Leading quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="887"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="891"/> <source>Trailing quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="890"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="894"/> <source>Blank line before class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="896"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="900"/> <source>Blank line after class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="899"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="903"/> <source>Blank line after function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="902"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="906"/> <source>Blank line after last paragraph removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="905"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="909"/> <source>Tab converted to 4 spaces.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="908"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="912"/> <source>Indentation adjusted to be a multiple of four.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="911"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="915"/> <source>Indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="914"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="918"/> <source>Indentation of closing bracket corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="917"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="921"/> <source>Missing indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="924"/> <source>Closing bracket aligned to opening bracket.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="923"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="927"/> <source>Indentation level changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="926"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="930"/> <source>Indentation level of hanging indentation changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="929"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="933"/> <source>Visual indentation corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="944"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="948"/> <source>Extraneous whitespace removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="941"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="945"/> <source>Missing whitespace added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="947"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> <source>Whitespace around comment sign corrected.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="955"/> <source>%n blank line(s) inserted.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4023,7 +4234,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="954"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> <source>%n superfluous lines removed</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4032,80 +4243,75 @@ </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="962"/> <source>Superfluous blank lines removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="961"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="965"/> <source>Superfluous blank lines after function decorator removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="964"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="968"/> <source>Imports were put on separate lines.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="967"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="971"/> <source>Long lines have been shortened.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="970"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="974"/> <source>Redundant backslash in brackets removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="976"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="980"/> <source>Compound statement corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="979"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="983"/> <source>Comparison to None/True/False corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="982"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="986"/> <source>'{0}' argument added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="985"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="989"/> <source>'{0}' argument removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="988"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="992"/> <source>Whitespace stripped from end of line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="991"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="995"/> <source>newline added to end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="994"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="998"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="997"/> - <source>'<>' replaced by '!='.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1001"/> + <source>'<>' replaced by '!='.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1005"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1107"/> - <source> no message defined for code '{0}'</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>CodeStyleStatisticsDialog</name> @@ -4130,7 +4336,7 @@ <translation type="unfinished">Zpráva</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="60"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="63"/> <source>%n issue(s) found</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4139,7 +4345,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="67"/> <source>%n issue(s) fixed</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4148,7 +4354,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="66"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="69"/> <source>%n file(s) checked</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4157,7 +4363,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="68"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="71"/> <source>%n file(s) with issues found</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4166,7 +4372,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="62"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="65"/> <source>%n issue(s) ignored</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4174,6 +4380,15 @@ <numerusform></numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="73"/> + <source>%n security issue(s) acknowledged</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> </context> <context> <name>CodingError</name> @@ -4601,22 +4816,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="479"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="482"/> <source>'{0}' is too complex ({1})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="481"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="484"/> <source>source code line is too complex ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="483"/> - <source>overall source code line complexity is too high ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="486"/> + <source>overall source code line complexity is too high ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="489"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> @@ -8406,242 +8621,242 @@ <context> <name>DocStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="288"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="291"/> <source>module is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290"/> - <source>public function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293"/> - <source>private function/method may be missing a docstring</source> + <source>public function/method is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296"/> + <source>private function/method may be missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299"/> <source>public class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301"/> <source>private class may be missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="300"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="303"/> <source>docstring not surrounded by """</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302"/> - <source>docstring containing \ not surrounded by r"""</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305"/> - <source>docstring containing unicode character not surrounded by u"""</source> + <source>docstring containing \ not surrounded by r"""</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308"/> + <source>docstring containing unicode character not surrounded by u"""</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311"/> <source>one-liner docstring on multiple lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313"/> <source>docstring has wrong indentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> <source>docstring summary does not end with a period</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> <source>docstring summary is not in imperative mood (Does instead of Do)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320"/> - <source>docstring summary looks like a function's/method's signature</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> - <source>docstring does not mention the return value type</source> + <source>docstring summary looks like a function's/method's signature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> - <source>function/method docstring is separated by a blank line</source> + <source>docstring does not mention the return value type</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> - <source>class docstring is not preceded by a blank line</source> + <source>function/method docstring is separated by a blank line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> + <source>class docstring is not preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> <source>class docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> <source>docstring summary is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341"/> <source>last paragraph of docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> - <source>private function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> + <source>private function/method is missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352"/> <source>private class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> - <source>leading quotes of docstring not on separate line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <source>leading quotes of docstring not on separate line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> <source>trailing quotes of docstring not on separate line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="363"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="366"/> <source>docstring does not contain a @return line but function/method returns something</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370"/> <source>docstring contains a @return line but function/method doesn't return anything</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> - <source>docstring does not contain enough @param/@keyparam lines</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> - <source>docstring contains too many @param/@keyparam lines</source> + <source>docstring does not contain enough @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> - <source>keyword only arguments must be documented with @keyparam lines</source> + <source>docstring contains too many @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> - <source>order of @param/@keyparam lines does not match the function/method signature</source> + <source>keyword only arguments must be documented with @keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> + <source>order of @param/@keyparam lines does not match the function/method signature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="386"/> <source>class docstring is preceded by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> <source>class docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> - <source>function/method docstring is preceded by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> + <source>function/method docstring is preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> <source>function/method docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> - <source>last paragraph of docstring is followed by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="399"/> + <source>last paragraph of docstring is followed by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="402"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="403"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="406"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="426"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="429"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="312"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="315"/> <source>docstring does not contain a summary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>docstring summary does not start with '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="407"/> - <source>raised exception '{0}' is not documented in docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="410"/> - <source>documented exception '{0}' is not raised</source> + <source>raised exception '{0}' is not documented in docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="413"/> - <source>docstring does not contain a @signal line but class defines signals</source> + <source>documented exception '{0}' is not raised</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="416"/> - <source>docstring contains a @signal line but class doesn't define signals</source> + <source>docstring does not contain a @signal line but class defines signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="419"/> - <source>defined signal '{0}' is not documented in docstring</source> + <source>docstring contains a @signal line but class doesn't define signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="422"/> + <source>defined signal '{0}' is not documented in docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="425"/> <source>documented signal '{0}' is not defined</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="354"/> <source>class docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347"/> <source>function docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>module docstring is still a default string</source> <translation type="unfinished"></translation> </message> @@ -10599,12 +10814,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Add Entry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Enter the entry to add to the list:</source> <translation type="unfinished"></translation> </message> @@ -11233,7 +11448,7 @@ <translation>Editovat breakpoint...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5615"/> + <location filename="../QScintilla/Editor.py" line="5616"/> <source>Enable breakpoint</source> <translation>Aktivovat breakpoint</translation> </message> @@ -11323,187 +11538,187 @@ <translation>Autodoplňování není dostupné protože zdrojová část autodoplňování nebyla nalezena.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5618"/> + <location filename="../QScintilla/Editor.py" line="5619"/> <source>Disable breakpoint</source> <translation>Deaktivovat breakpoint</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Code Coverage</source> <translation>Pokrytí kódu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Please select a coverage file</source> <translation>Prosím, vyberte soubor s pokrytím kódu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>Show Code Coverage Annotations</source> <translation>Zobrazit poznámky pokrytí kódu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6049"/> + <location filename="../QScintilla/Editor.py" line="6050"/> <source>All lines have been covered.</source> <translation>Všechny řádky byly pokryty.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>There is no coverage file available.</source> <translation>Soubor s pokrytím není dostupný.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Profile Data</source> <translation>Profilovat data</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Please select a profile file</source> <translation>Prosím, vyberte soubor s profilem</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>Syntax Error</source> <translation>Chyba syntaxe</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>No syntax error message available.</source> <translation>Hlášení syntaktické chyby není dostupné.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Macro Name</source> <translation>Název makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Select a macro name:</source> <translation>Vyberte název makra:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6754"/> + <location filename="../QScintilla/Editor.py" line="6755"/> <source>Load macro file</source> <translation>Načíst soubor makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Macro files (*.macro)</source> <translation>Macro soubory (*.macro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source>Error loading macro</source> <translation>Chyba při načítání makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Save macro file</source> <translation>Uložit soubor s makrem</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source>Save macro</source> <translation>Uložit makro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source>Error saving macro</source> <translation>Chyba při ukládání makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Start Macro Recording</source> <translation>Spustit záznam makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Macro recording is already active. Start new?</source> <translation>Nahrávání makra již probíhá. Spustit nové?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Macro Recording</source> <translation>Záznam makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Enter name of the macro:</source> <translation>Vložte název makra:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7009"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>File changed</source> <translation>Soubor změněn</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source>Drop Error</source> <translation>Zahodit chybu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7341"/> + <location filename="../QScintilla/Editor.py" line="7342"/> <source>Resources</source> <translation>Zdroje</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7343"/> + <location filename="../QScintilla/Editor.py" line="7344"/> <source>Add file...</source> <translation>Přidat soubor...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7345"/> + <location filename="../QScintilla/Editor.py" line="7346"/> <source>Add files...</source> <translation>Přidat soubory...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7347"/> + <location filename="../QScintilla/Editor.py" line="7348"/> <source>Add aliased file...</source> <translation>Přidat zástupce souboru...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7350"/> + <location filename="../QScintilla/Editor.py" line="7351"/> <source>Add localized resource...</source> <translation>Přidat lokalizované resource...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7354"/> + <location filename="../QScintilla/Editor.py" line="7355"/> <source>Add resource frame</source> <translation>Přidat resource frame</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7373"/> + <location filename="../QScintilla/Editor.py" line="7374"/> <source>Add file resource</source> <translation>Přidat soubor resource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7389"/> + <location filename="../QScintilla/Editor.py" line="7390"/> <source>Add file resources</source> <translation>Přidat soubory resource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Add aliased file resource</source> <translation>Přidat zástupce souboru resource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Package Diagram</source> <translation>Diagram balíčku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Include class attributes?</source> <translation>Včetně atributů třídy?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Application Diagram</source> <translation>Diagram aplikace</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Include module names?</source> <translation>Včetně jmen modulů?</translation> </message> @@ -11523,12 +11738,12 @@ <translation>Nebyl zadán forám exportu. Zrušeno....</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Imports Diagram</source> <translation>Importovat diagram</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Include imports from external modules?</source> <translation>Zahrnout importy z externích modulů?</translation> </message> @@ -11598,7 +11813,7 @@ <translation>Použít Pygments lexer.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7847"/> + <location filename="../QScintilla/Editor.py" line="7848"/> <source>Check spelling...</source> <translation>Zatrhnout kontrolu...</translation> </message> @@ -11608,12 +11823,12 @@ <translation>Zatrhnout výběr kontroly...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7850"/> + <location filename="../QScintilla/Editor.py" line="7851"/> <source>Add to dictionary</source> <translation>Přidat do slovníku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7852"/> + <location filename="../QScintilla/Editor.py" line="7853"/> <source>Ignore All</source> <translation>Ignorovat vše</translation> </message> @@ -11653,32 +11868,32 @@ <translation><p>Soubor <b>{0}</b> nemůže být přejmenován.<br />Důvod: {1}</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6768"/> + <location filename="../QScintilla/Editor.py" line="6769"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation><p>Soubor s makrem <b>{0}</b> nelze načíst.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation><p>Soubor s makrem <b>{0}</b> je poškozen.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation><p>So souboru s makrem <b>{0}</b> nelze zapisovat.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7179"/> + <location filename="../QScintilla/Editor.py" line="7180"/> <source>{0} (ro)</source> <translation>{0} (ro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> není soubor.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Alias for file <b>{0}</b>:</source> <translation>Zástupce pro soubor <b>{0}</b>:</translation> </message> @@ -11708,22 +11923,22 @@ <translation type="unfinished"><p>Soubor <b>{0}</b> již existuje.</p><p>Má se přepsat?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6614"/> + <location filename="../QScintilla/Editor.py" line="6615"/> <source>Warning: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6621"/> + <location filename="../QScintilla/Editor.py" line="6622"/> <source>Error: {0}</source> <translation type="unfinished">Chyby: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7005"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation type="unfinished"></translation> </message> @@ -11748,27 +11963,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>Sort Lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>The selection contains illegal data for a numerical sort.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>Warning</source> <translation type="unfinished">Varování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>No warning messages available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6611"/> + <location filename="../QScintilla/Editor.py" line="6612"/> <source>Style: {0}</source> <translation type="unfinished"></translation> </message> @@ -11793,7 +12008,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6999"/> + <location filename="../QScintilla/Editor.py" line="7000"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation type="unfinished"><p>Soubor <b>{0}</b> byl změněn po té co již byl načten do eric5. Znovu načíst?</p> {0}?} {6.?}</translation> </message> @@ -11818,22 +12033,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>Call-Tips Provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>Register Mouse Click Handler</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation type="unfinished"></translation> </message> @@ -11863,12 +12078,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source>EditorConfig Properties</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation type="unfinished"></translation> </message> @@ -17532,17 +17747,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="66"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="71"/> <source>Firmware Files (*.img);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="72"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="77"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="76"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="82"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> @@ -17560,12 +17775,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="211"/> + <location filename="../MicroPython/EspDevices.py" line="217"/> <source>Flash MicroPython Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="236"/> + <location filename="../MicroPython/EspDevices.py" line="248"/> <source>Flash Additional Firmware</source> <translation type="unfinished"></translation> </message> @@ -17590,7 +17805,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>'esptool write_flash' Output</source> <translation type="unfinished"></translation> </message> @@ -17600,47 +17815,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>Show Chip ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>Show Flash ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>Show MAC Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>'esptool read_flash' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>'esptool chip_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>'esptool flash_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>'esptool read_mac' Output</source> <translation type="unfinished"></translation> </message> @@ -17673,20 +17888,35 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="72"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="96"/> <source>Address:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="79"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="103"/> <source>Enter the flash addres in the hexadecimal form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="43"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="51"/> <source>Firmware Files (*.bin);;All Files (*)</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="75"/> + <source>Flash Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="82"/> + <source>Select the flash mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="89"/> + <source>Leave empty to use the default mode.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ExceptionLogger</name> @@ -40407,6 +40637,14 @@ </message> </context> <context> + <name>IgnoredDevicesDialog</name> + <message> + <location filename="../MicroPython/IgnoredDevicesDialog.ui" line="14"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImageMarkupDialog</name> <message> <location filename="../QScintilla/MarkupProviders/ImageMarkupDialog.py" line="52"/> @@ -46327,27 +46565,27 @@ <context> <name>MicroPythonDevice</name> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="214"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="223"/> <source>Unsupported Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="224"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="233"/> <source>REPL is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="243"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="252"/> <source>Plotter is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="262"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="271"/> <source>Running scripts is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="282"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="291"/> <source>File Manager is not supported by this device.</source> <translation type="unfinished"></translation> </message> @@ -46905,7 +47143,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="460"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="493"/> <source>Press to connect the selected device</source> <translation type="unfinished"></translation> </message> @@ -46934,32 +47172,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="430"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="463"/> <source>Clear</source> <translation type="unfinished">Vyčistit</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="432"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="465"/> <source>Copy</source> <translation type="unfinished">Kopírovat</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="433"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="466"/> <source>Paste</source> <translation type="unfinished">Vložit</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="455"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="488"/> <source>Press to disconnect the current device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>No device attached</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -46968,212 +47206,212 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source>Start REPL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source>Serial Device Connect</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source>Run Script</source> <translation type="unfinished">Spustit skript</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="921"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="954"/> <source>There is no editor open. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="929"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="962"/> <source>The current editor does not contain a script. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source><p>Cannot run script.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Open Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Python3 Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source>Start Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>Unsaved Chart Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>The chart contains unsaved data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source>Start File Manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1136"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169"/> <source>Show Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1139"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1172"/> <source>Show Implementation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source>Synchronize Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1147"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1180"/> <source>Show Device Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1150"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1183"/> <source>Show Local Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1461"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1497"/> <source>Compile Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1481"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1517"/> <source>Compile Current Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1188"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224"/> <source><h3>Device Version Information</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1197"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1233"/> <source>No version information available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1199"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1235"/> <source>Device Version Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1258"/> <source>unknown</source> <translation type="unfinished">neznámý</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source>Device Implementation Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source><p>The time of the connected device was synchronized with the local time.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1272"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308"/> <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1280"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1316"/> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1294"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1330"/> <source>Device Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source>Local Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source>Error handling device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1413"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1449"/> <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1467"/> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished">Python soubory (*.py);;Všechny soubory (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1441"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1477"/> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1451"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1487"/> <source>'mpy-cross' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1474"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1510"/> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished"></translation> </message> @@ -47188,50 +47426,70 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1018"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051"/> <source>µPy Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1098"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1131"/> <source>µPy Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1174"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1207"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1178"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1214"/> <source>Configure</source> <translation type="unfinished">Konfigurovat</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1153"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186"/> <source>Show Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1170"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1203"/> <source>Download Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source>Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1333"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1369"/> <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>Unknown MicroPython Device</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:eric-bugs@eric-ide.python-projects.org"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>{0} ({1:04x}/{2:04x})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1211"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -48032,463 +48290,463 @@ <context> <name>MiscellaneousChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="492"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> <source>coding magic comment not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> - <source>unknown encoding ({0}) found in coding magic comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="498"/> - <source>copyright notice not present</source> + <source>unknown encoding ({0}) found in coding magic comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="501"/> - <source>copyright notice contains invalid author</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="702"/> - <source>found {0} formatter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> - <source>format string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> - <source>docstring does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> - <source>other string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> - <source>format call uses too large index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> - <source>format call uses missing keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> - <source>format call uses keyword arguments but no named entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> - <source>format call uses variable arguments but no numbered entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> - <source>format call uses implicit and explicit indexes together</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> - <source>format call provides unused index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> - <source>format call provides unused keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="751"/> - <source>expected these __future__ imports: {0}; but only got: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> - <source>expected these __future__ imports: {0}; but got none</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="761"/> - <source>print statement found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> - <source>one element tuple found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="800"/> - <source>{0}: {1}</source> + <source>copyright notice not present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> + <source>copyright notice contains invalid author</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> + <source>found {0} formatter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> + <source>format string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> + <source>docstring does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> + <source>other string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> + <source>format call uses too large index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> + <source>format call uses missing keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> + <source>format call uses keyword arguments but no named entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> + <source>format call uses variable arguments but no numbered entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> + <source>format call uses implicit and explicit indexes together</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> + <source>format call provides unused index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <source>format call provides unused keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> + <source>expected these __future__ imports: {0}; but only got: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <source>expected these __future__ imports: {0}; but got none</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> + <source>print statement found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="767"/> + <source>one element tuple found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="803"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="507"/> <source>"{0}" is a Python builtin and is being shadowed; consider renaming the variable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="508"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="511"/> <source>"{0}" is used as an argument and thus shadows a Python builtin; consider renaming the argument</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="512"/> - <source>unnecessary generator - rewrite as a list comprehension</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="515"/> - <source>unnecessary generator - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a list comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="518"/> - <source>unnecessary generator - rewrite as a dict comprehension</source> + <source>unnecessary generator - rewrite as a set comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="521"/> - <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="524"/> + <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> <source>unnecessary list comprehension - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> <source>unnecessary list comprehension - "{0}" can take a generator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="770"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> <source>mutable default argument of type {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> <source>sort keys - '{0}' should be before '{1}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> <source>logging statement uses '%'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> - <source>logging statement uses f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> + <source>logging statement uses f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="750"/> <source>logging statement uses 'warn' instead of 'warning'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> <source>logging statement uses string.format()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> <source>logging statement uses '+'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="760"/> <source>gettext import with alias _ found: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="648"/> - <source>Python does not support the unary prefix increment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> - <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> - <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> - <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> - <source>Python 3 does not include '.iter*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> - <source>Python 3 does not include '.view*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> - <source>'.next()' does not exist in Python 3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> - <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> - <source>mutable default argument of function call '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> - <source>using .strip() with multi-character strings is misleading</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> - <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> - <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <source>Python does not support the unary prefix increment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> + <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="663"/> + <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> + <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> + <source>Python 3 does not include '.iter*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> + <source>Python 3 does not include '.view*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> + <source>'.next()' does not exist in Python 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="700"/> + <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="776"/> - <source>None should not be added at any return if function has no return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="780"/> - <source>an explicit value at every return should be added if function has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="784"/> - <source>an explicit return at the end of the function should be added if it has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="788"/> - <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <source>mutable default argument of function call '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> + <source>using .strip() with multi-character strings is misleading</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="681"/> + <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="671"/> + <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <source>None should not be added at any return if function has no return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="783"/> + <source>an explicit value at every return should be added if function has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="787"/> + <source>an explicit return at the end of the function should be added if it has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="791"/> + <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> <source>do not call assert False since python -O removes these calls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="672"/> - <source>unncessary f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="675"/> + <source>unncessary f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> <source>cannot use 'self.__class__' as first argument of 'super()' call</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> - <source>do not call getattr with a constant attribute value</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> + <source>do not call getattr with a constant attribute value</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>do not call setattr with a constant attribute value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="796"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="799"/> <source>commented code lines should be removed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="792"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="795"/> <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="559"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="562"/> <source>use of 'datetime.datetime()' without 'tzinfo' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="566"/> <source>use of 'datetime.datetime.today()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> <source>use of 'datetime.datetime.utcnow()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="571"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="574"/> <source>use of 'datetime.datetime.utcfromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(, tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>use of 'datetime.datetime.now()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> <source>use of 'datetime.datetime.fromtimestamp()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="583"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="586"/> <source>use of 'datetime.datetime.strptime()' should be followed by '.replace(tzinfo=)'</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> + <source>use of 'datetime.date()' should be avoided. +Use 'datetime.datetime(, tzinfo=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> + <source>use of 'datetime.date.today()' should be avoided. +Use 'datetime.datetime.now(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="601"/> + <source>use of 'datetime.date.fromtimestamp()' should be avoided. +Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> + <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> - <source>use of 'datetime.date()' should be avoided. -Use 'datetime.datetime(, tzinfo=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> - <source>use of 'datetime.date.today()' should be avoided. -Use 'datetime.datetime.now(tz=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="598"/> - <source>use of 'datetime.date.fromtimestamp()' should be avoided. -Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> + <source>use of 'datetime.date.fromordinal()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> - <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> - <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> - <source>use of 'datetime.date.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> <source>use of 'datetime.date.fromisoformat()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> <source>unnecessary {0} call - rewrite as a literal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> - <source>unnecessary {0} literal - rewrite as a {1} literal</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="536"/> - <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> + <source>unnecessary {0} literal - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="539"/> - <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> + <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="542"/> - <source>unnecessary list call - remove the outer call to list()</source> + <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="545"/> - <source>unnecessary list comprehension - "in" can take a generator</source> + <source>unnecessary list call - remove the outer call to list()</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="548"/> - <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <source>unnecessary list comprehension - "in" can take a generator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="551"/> + <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>unnecessary {0} passed to list() - remove the outer call to {1}()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="613"/> - <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="616"/> - <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="619"/> + <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="622"/> <source>'sys.version' compared to string (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> - <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> - <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="629"/> + <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="632"/> <source>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="633"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> <source>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="637"/> - <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="640"/> + <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="643"/> <source>'sys.version' compared to string (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>'sys.version[:1]' referenced (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> @@ -48944,72 +49202,72 @@ <context> <name>NamingStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> <source>class names should use CapWords convention</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> - <source>function name should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="438"/> - <source>argument name should be lowercase</source> + <source>function name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> - <source>first argument of a class method should be named 'cls'</source> + <source>argument name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="444"/> - <source>first argument of a method should be named 'self'</source> + <source>first argument of a class method should be named 'cls'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> + <source>first argument of a method should be named 'self'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>first argument of a static method should not be named 'self' or 'cls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="451"/> - <source>module names should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="454"/> - <source>package names should be lowercase</source> + <source>module names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="457"/> - <source>constant imported as non constant</source> + <source>package names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="460"/> - <source>lowercase imported as non lowercase</source> + <source>constant imported as non constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="463"/> - <source>camelcase imported as lowercase</source> + <source>lowercase imported as non lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="466"/> - <source>camelcase imported as constant</source> + <source>camelcase imported as lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="469"/> - <source>variable in function should be lowercase</source> + <source>camelcase imported as constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="472"/> + <source>variable in function should be lowercase</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="475"/> <source>names 'l', 'O' and 'I' should be avoided</source> <translation type="unfinished"></translation> </message> @@ -49063,50 +49321,50 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="201"/> <source>SSL Certificate Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> - <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="205"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="212"/> <source>&Permanent accept</source> <translation type="unfinished">Akce&ptovat natrvalo</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="207"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="214"/> <source>&Temporary accept</source> <translation type="unfinished">Akcep&tovat dočasně</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="209"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="216"/> <source>&Reject</source> <translation type="unfinished">&Odmítnout</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="243"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="284"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"><b>Zadejte uživatelské jméno a heslo pro {0}', realm '{1}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="247"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="288"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"><b>Zadejte uživatelské jméno a heslo pro '{0}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="295"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="336"/> <source>Authentication required</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="296"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="337"/> <source>Authentication is required to access:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="202"/> + <source><b>{0}</b><p>The host <b>{1}</b> you are trying to access has errors in the SSL certificate.</p><ul><li>{2}</li></ul><p>Would you like to make an exception?</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>NetworkPage</name> @@ -50470,6 +50728,41 @@ <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../PipInterface/Pip.py" line="679"/> + <source>Cache Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="704"/> + <source>List Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="694"/> + <source>Enter a file pattern (empty for all):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="728"/> + <source>Remove Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="720"/> + <source>Enter a file pattern:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="751"/> + <source>Purge Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="744"/> + <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PipDialog</name> @@ -51252,7 +51545,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/> <source>Install Packages</source> <translation type="unfinished"></translation> </message> @@ -51277,28 +51570,48 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="942"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="955"/> <source>Edit User Configuration...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="945"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="958"/> <source>Edit Environment Configuration...</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="963"/> + <source>Configure...</source> + <translation type="unfinished">Konfigurovat...</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>Edit Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>No valid configuration path determined. Aborting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="941"/> + <source>Show Cache Info...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="944"/> + <source>Show Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="947"/> + <source>Remove Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../PipInterface/PipPackagesWidget.py" line="950"/> - <source>Configure...</source> - <translation type="unfinished">Konfigurovat...</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>Edit Configuration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>No valid configuration path determined. Aborting</source> + <source>Purge Cache...</source> <translation type="unfinished"></translation> </message> </context> @@ -52574,17 +52887,17 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1640"/> + <location filename="../Preferences/__init__.py" line="1645"/> <source>Export Preferences</source> <translation>Předvolby exportu</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Import Preferences</source> <translation>Předvolby importu</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Properties File (*.ini);;All Files (*)</source> <translation type="unfinished"></translation> </message> @@ -61708,17 +62021,17 @@ <translation><b>Konfigurovat Qt</b></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="90"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="85"/> <source>Qt Tools</source> <translation>Qt nástroje</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="169"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="164"/> <source>This gives an example of the complete tool name</source> <translation>Příklad kompletního jména nástroje</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="172"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="167"/> <source>designer</source> <translation></translation> </message> @@ -61728,7 +62041,7 @@ <translation><font color="#FF0000"><b>Poznámka:</b> Tato nastavení budou aktivována až po novém spuštění aplikace.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="123"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="118"/> <source>The tool executable is composed of the prefix, the tool name and the postfix. For win, the extension is added automatically.</source> <translation>Spustitelný nástroj je složen z prefixu, jména nástroje a postfixu. Pro win je extenze připojena automaticky.</translation> </message> @@ -61743,62 +62056,52 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> - <source><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="135"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="130"/> <source>Qt-Prefix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="137"/> <source>Enter the prefix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="144"/> <source>Qt-Postfix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="151"/> <source>Enter the postfix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="221"/> <source>Indent Width:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="233"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="228"/> <source>Select the indent width (default: 4)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="327"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="322"/> <source>Generate imports relative to '.'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="296"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="291"/> <source>Tools Directory:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="114"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="109"/> <source>Enter the path of the Qt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="211"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="206"/> <source>Enter the path of the PyQt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -61808,7 +62111,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="312"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="307"/> <source>Enter the path of the PySide2 tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -61818,35 +62121,40 @@ <translation type="unfinished">Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="187"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="182"/> <source>PyQt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="220"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="215"/> <source>pyuic Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="272"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="267"/> <source>Select to generate extra code to test and display the form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="275"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="270"/> <source>Generate Extra Test Code</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="288"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="283"/> <source>PySide2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="316"/> <source>pyside2-uic Options</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> + <source><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Queues</name> @@ -63632,6 +63940,334 @@ </message> </context> <context> + <name>Security</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="16"/> + <source>Use of 'assert' detected. The enclosed code will be removed when compiling to optimised byte code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="22"/> + <source>Use of 'exec' detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="27"/> + <source>'chmod' setting a permissive mask {0} on file ({1}).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="32"/> + <source>Possible binding to all interfaces.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="43"/> + <source>Possible hardcoded password: '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="48"/> + <source>Probable insecure usage of temp file/directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="53"/> + <source>Try, Except, Pass detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="56"/> + <source>Try, Except, Continue detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="61"/> + <source>A Flask app appears to be run with debug=True, which exposes the Werkzeug debugger and allows the execution of arbitrary code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="67"/> + <source>Pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="71"/> + <source>Deserialization with the marshal module is possibly dangerous.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="74"/> + <source>Use of insecure MD2, MD4, MD5, or SHA1 hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="77"/> + <source>Use of insecure cipher '{0}'. Replace with a known secure cipher such as AES.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="81"/> + <source>Use of insecure cipher mode '{0}'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="84"/> + <source>Use of insecure and deprecated function (mktemp).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="87"/> + <source>Use of possibly insecure function - consider using safer ast.literal_eval.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="91"/> + <source>Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="95"/> + <source>Use of HTTPSConnection on older versions of Python prior to 2.7.9 and 3.4.3 do not provide security, see https://wiki.openstack.org/wiki/OSSN/OSSN-0033</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="100"/> + <source>Audit url open for permitted schemes. Allowing use of file:/ or custom schemes is often unexpected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="104"/> + <source>Standard pseudo-random generators are not suitable for security/cryptographic purposes.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="108"/> + <source>Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="142"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="147"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="152"/> + <source>FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="156"/> + <source>The input method in Python 2 will read from standard input, evaluate and run the resulting string as Python source code. This is similar, though in many ways worse, than using eval. On Python 2, use raw_input instead, input is safe in Python 3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="162"/> + <source>By default, Python will create a secure, verified SSL context for use in such classes as HTTPSConnection. However, it still allows using an insecure context via the _create_unverified_context that reverts to the previous behavior that does not validate certificates or perform hostname checks.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="169"/> + <source>Use of os.tempnam() and os.tmpnam() is vulnerable to symlink attacks. Consider using tmpfile() instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="175"/> + <source>Use of insecure {0} hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="180"/> + <source>A telnet-related module is being imported. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="184"/> + <source>A FTP-related module is being imported. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="192"/> + <source>Consider possible security implications associated with the '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="216"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="221"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="226"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Use defused.xmlrpc.monkey_patch() function to monkey-patch xmlrpclib and mitigate XML vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="231"/> + <source>Consider possible security implications associated with '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="235"/> + <source>The pyCrypto library and its module '{0}' are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="242"/> + <source>'requests' call with verify=False disabling SSL certificate checks, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="248"/> + <source>'ssl.wrap_socket' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="252"/> + <source>'SSL.Context' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="256"/> + <source>Function call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="260"/> + <source>Function definition identified with insecure SSL/TLS protocol version by default, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="264"/> + <source>'ssl.wrap_socket' call with no SSL/TLS protocol version specified, the default 'SSLv23' could be insecure, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="270"/> + <source>{0} key sizes below {1:d} bits are considered breakable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="275"/> + <source>Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary objects. Consider 'yaml.safe_load()'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="281"/> + <source>Paramiko call with policy set to automatically trust the unknown host key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="287"/> + <source>Possible shell injection via 'Paramiko' call, check inputs are properly sanitized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="291"/> + <source>'subprocess' call with shell=True seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="295"/> + <source>'subprocess' call with shell=True identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="298"/> + <source>'subprocess' call - check for execution of untrusted input.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="301"/> + <source>Function call with shell=True parameter identified, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="305"/> + <source>Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="309"/> + <source>Starting a process with a shell, possible injection detected, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="313"/> + <source>Starting a process without a shell.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="316"/> + <source>Starting a process with a partial executable path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="321"/> + <source>Possible SQL injection vector through string-based query construction.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="327"/> + <source>Possible wildcard injection in call: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="332"/> + <source>Use of 'extra()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="335"/> + <source>Use of 'RawSQL()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="340"/> + <source>Using jinja2 templates with 'autoescape=False' is dangerous and can lead to XSS. Use 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="345"/> + <source>By default, jinja2 sets 'autoescape' to False. Consider using 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="352"/> + <source>Mako templates allow HTML/JS rendering by default and are inherently open to XSS attacks. Ensure variables in all templates are properly sanitized via the 'n', 'h' or 'x' flags (depending on context). For example, to HTML escape the variable 'data' do ${{ data |h }}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="360"/> + <source>Potential XSS on 'mark_safe()' function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="365"/> + <source>Possible hardcoded AWS access key ID: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="368"/> + <source>Possible hardcoded AWS secret access key: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="373"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>SecurityPage</name> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="37"/> @@ -63673,6 +64309,21 @@ <source><b>Configure security settings</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="96"/> + <source>Certificate Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="102"/> + <source>Select to always reject web pages with certificate issues</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="105"/> + <source>Always reject URLs with certificate errors</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SendRefererWhitelistDialog</name> @@ -65628,52 +66279,52 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="168"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="171"/> <source>Media</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="184"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="187"/> <source>Image</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="189"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="192"/> <source>Image Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="197"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="200"/> <source><b>Preview</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="216"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="238"/> <source>Preview not available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="243"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="265"/> <source>Copy Image Location to Clipboard</source> <translation type="unfinished">Kopírovat cestu obrázku do schránky</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="246"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="268"/> <source>Copy Image Name to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source>Save Image</source> <translation type="unfinished">Uložit obrázek</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="299"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="321"/> <source>All Files (*)</source> <translation type="unfinished">Všechny soubory (*)</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source><p>Cannot write to file <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> @@ -65688,25 +66339,30 @@ <translation type="obsolete">Cesta:</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="229"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="251"/> <source>Loading...</source> <translation type="unfinished">Načítám...</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="287"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="309"/> <source><p>This preview is not available.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="76"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="97"/> <source><b>Connection is encrypted.</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="80"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="102"/> <source><b>Connection is not encrypted.</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="87"/> + <source><b>Connection is encrypted but may be insecure.</b></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SiteInfoWidget</name> @@ -65716,60 +66372,65 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="62"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="69"/> <source>Your connection to this site is <b>secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="67"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="74"/> <source>Your connection to this site is <b>not secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="82"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="89"/> <source>This is your <b>{0}.</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="88"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="95"/> <source>You have <b>never</b> visited this site before.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="97"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="104"/> <source>first</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="99"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="106"/> <source>second</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="101"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="108"/> <source>third</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="102"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="109"/> <source>This is your <b>{0}</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="123"/> - <source>Register as <b>{0}</b> links handler.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="130"/> + <source>Register as <b>{0}</b> links handler.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="137"/> <source>Register</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="147"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="154"/> <source>More...</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="63"/> + <source>Your connection to this site <b>may not be secure</b>.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SnapWidget</name> @@ -77949,7 +78610,7 @@ <translation><b>Klávesové zkratky</b><p>Nastavení klávesových zkratek aplikace podle zvyklostí uživatele.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6327"/> + <location filename="../UI/UserInterface.py" line="6294"/> <source>Export Keyboard Shortcuts</source> <translation>Exportovat klávesové zkratky</translation> </message> @@ -77969,7 +78630,7 @@ <translation><b>Export klávesových zkratek</b><p>Exportují se klávesové zkratky z aplikace.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Import Keyboard Shortcuts</source> <translation>Import klávesových zkratek</translation> </message> @@ -78094,7 +78755,7 @@ <translation>Nastavení</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Help</source> <translation>Nápověda</translation> </message> @@ -78109,7 +78770,7 @@ <translation type="obsolete"><h3>Čísla verzí</h3><table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7324"/> + <location filename="../UI/UserInterface.py" line="7291"/> <source></table></source> <translation></table></translation> </message> @@ -78139,62 +78800,62 @@ <translation type="obsolete">V aktuálním projektu není definován hlavní skript. Zrušeno</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source>Problem</source> <translation>Problém</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source>Process Generation Error</source> <translation>Chyba v procesu generování</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source> <translation>Aktuálně není vybrán žádný prohlížeč. Prosím otevřete Nastavení a nějaký vyberte.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5149"/> + <location filename="../UI/UserInterface.py" line="5116"/> <source><p>Could not start the help viewer.<br>Ensure that it is available as <b>hh</b>.</p></source> <translation><p>Nemohu spustit prohlížeč nápovědy.<br>Ověřte jestli je dostupný jako <b>hh</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source>Documentation Missing</source> <translation>Dokumentace chybí</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source>Documentation</source> <translation>Dokumentace</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5727"/> + <location filename="../UI/UserInterface.py" line="5694"/> <source><p>The PyQt4 documentation starting point has not been configured.</p></source> <translation type="unfinished"><p>Počátek dokumentace PySide nebyl nastaven.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source>Save tasks</source> <translation>Uložit úlohy</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source>Read tasks</source> <translation>Načíst úlohy</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source>Drop Error</source> <translation>Zahodit chybu</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Error during updates check</source> <translation>Chyba během zjišťování aktualizací</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>Update available</source> <translation>Byla nalezena aktualizace</translation> </message> @@ -78209,17 +78870,17 @@ <translation>Zobrazit externí nás&troje</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Could not perform updates check.</source> <translation>Kontrolu updatů nelze provést.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>&Cancel</source> <translation>&Zrušit</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>First time usage</source> <translation>Spuštěno poprvé</translation> </message> @@ -78314,7 +78975,7 @@ <translation>Zobrazit dostupné verze ke stažení</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7309"/> + <location filename="../UI/UserInterface.py" line="7276"/> <source><h3>Available versions</h3><table></source> <translation><h3>Dostupné verze</h3><table></translation> </message> @@ -78394,7 +79055,7 @@ <translation>Obnovit manažer nástrojových lišt...</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>External Tools</source> <translation>Externí nástroje</translation> </message> @@ -78409,12 +79070,12 @@ <translation>Prohlížeč &multiprojektu</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6646"/> + <location filename="../UI/UserInterface.py" line="6613"/> <source>Save session</source> <translation>Uložit relaci</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source>Read session</source> <translation>Načíst relaci</translation> </message> @@ -78646,7 +79307,7 @@ <message> <location filename="../UI/UserInterface.py" line="5062"/> <source>Qt 3 support</source> - <translation>Qt 3 podpora</translation> + <translation type="obsolete">Qt 3 podpora</translation> </message> <message> <location filename="../UI/UserInterface.py" line="2870"/> @@ -78684,106 +79345,106 @@ <translation>Externí nástroje/{0}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source><p>The file <b>{0}</b> does not exist or is zero length.</p></source> <translation><p>Soubor <b>{0}</b> neexistuje nebo má nulovou délku.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="4962"/> + <location filename="../UI/UserInterface.py" line="4935"/> <source><p>Could not start Qt-Designer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Nemohu spustit Qt-Designer.<br>Ověřte jestli je dostupný jako <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5034"/> + <location filename="../UI/UserInterface.py" line="5005"/> <source><p>Could not start Qt-Linguist.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Nemohu spustit Qt-Linguist.<br>Ověřte jestli je dostupný jako <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5087"/> + <location filename="../UI/UserInterface.py" line="5049"/> <source><p>Could not start Qt-Assistant.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Nemohu spustit Qt-Assistant.<br>Ověřte jestli je dostupný jako <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5129"/> + <location filename="../UI/UserInterface.py" line="5096"/> <source><p>Could not start custom viewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Nemohu spustit aktuální prohlížeč.<br>Ověřte jestli je dostupný jako <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5199"/> + <location filename="../UI/UserInterface.py" line="5166"/> <source><p>Could not start UI Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Nemohu spustit UI Previewer.<br>Ověřte jestli je dostupný jako <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5256"/> + <location filename="../UI/UserInterface.py" line="5223"/> <source><p>Could not start Translation Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Nemohu spustit Previewer překladů.<br>Ověřte jestli je dostupný jako <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5279"/> + <location filename="../UI/UserInterface.py" line="5246"/> <source><p>Could not start SQL Browser.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Nelze spustit SQL Browser.<br>Ujistěte se, že je dostupný jako <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5374"/> + <location filename="../UI/UserInterface.py" line="5341"/> <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source> <translation>V externím nástroji '{0}' ve skupině '{1}' nebyl záznam nástroje nalezen.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>No toolgroup entry '{0}' found.</source> <translation>Skupina nástrojů '{0}' nenalezena. </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5422"/> + <location filename="../UI/UserInterface.py" line="5389"/> <source>Starting process '{0} {1}'. </source> <translation>Spouštím proces '{0} {1}'. </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source><p>Could not start the tool entry <b>{0}</b>.<br>Ensure that it is available as <b>{1}</b>.</p></source> <translation><p>Nemohu spustit příkaz <b>{0}</b><br>Ověřte jestli je dostupný jako <b>{1}</b>. </p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5516"/> + <location filename="../UI/UserInterface.py" line="5483"/> <source>Process '{0}' has exited. </source> <translation>Proces '{0}' byl ukončen. </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source><p>The documentation starting point "<b>{0}</b>" could not be found.</p></source> <translation><p>Adresář dokumentace "<b>{0}</b>" nebyl nalezen.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation><p>Do souboru s úlohami <b>{0}</b> nelze zapisovat.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation><p>Soubor s úlohami <b>{0}</b> nelze načíst.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6584"/> + <location filename="../UI/UserInterface.py" line="6551"/> <source><p>The session file <b>{0}</b> could not be written.</p></source> <translation><p>Zápis do souboru relace session <b>{0}</b> se nezdařil.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source><p>The session file <b>{0}</b> could not be read.</p></source> <translation><p>Soubor relace session <b>{0}</b> nelze přečíst.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> není soubor.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7108"/> + <location filename="../UI/UserInterface.py" line="7075"/> <source>Trying host {0}</source> <translation>Zkouším host {0}</translation> </message> @@ -78818,7 +79479,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Keyboard shortcut file (*.e4k)</source> <translation type="unfinished"></translation> </message> @@ -78858,27 +79519,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>Error getting versions information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7167"/> + <location filename="../UI/UserInterface.py" line="7134"/> <source>The versions information could not be downloaded. Please go online and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Open Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Could not start a web browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -78964,12 +79625,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5351"/> + <location filename="../UI/UserInterface.py" line="5318"/> <source><p>Could not start Snapshot tool.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7380"/> + <location filename="../UI/UserInterface.py" line="7347"/> <source>Select Workspace Directory</source> <translation type="unfinished"></translation> </message> @@ -79334,7 +79995,7 @@ <translation type="unfinished">Otevřít PyQt4 dokumentaci {5 ?}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5789"/> + <location filename="../UI/UserInterface.py" line="5756"/> <source><p>The PyQt5 documentation starting point has not been configured.</p></source> <translation type="unfinished"><p>Adresář PyQt4 dokumentace není nakonfigurován.</p> {5 ?}</translation> </message> @@ -79344,7 +80005,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>%v/%m</source> <translation type="unfinished"></translation> </message> @@ -79364,7 +80025,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7103"/> + <location filename="../UI/UserInterface.py" line="7070"/> <source>Version Check</source> <translation type="unfinished"></translation> </message> @@ -79436,25 +80097,25 @@ <message> <location filename="../UI/UserInterface.py" line="5062"/> <source>Qt v.3 is not supported by eric6.</source> - <translation type="unfinished">Qt v.3 není podporováno v eric5. {3 ?} {6.?}</translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <translation type="obsolete">Qt v.3 není podporováno v eric5. {3 ?} {6.?}</translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="7233"/> <source>The update to <b>{0}</b> of eric6 is available at <b>{1}</b>. Would you like to get it?</source> <translation type="unfinished">Aktualizace <b>{0}</b> eric5 je připravena na <b>{1}</b>. Chcete ji stáhnout a nainstalovat? {0}?} {6 ?} {1}?}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>Eric6 is up to date</source> <translation type="unfinished">Eric5 je aktuální {6 ?}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>You are using the latest version of eric6</source> <translation type="unfinished">Používáte poslední verzi eric6</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>eric6 has not been configured yet. The configuration dialog will be started.</source> <translation type="unfinished">eric5 nebyl ještě nakonfigurován. Bude spuštěn konfigurační dialog. {6 ?}</translation> </message> @@ -79474,7 +80135,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7119"/> + <location filename="../UI/UserInterface.py" line="7086"/> <source>The versions information cannot not be downloaded because you are <b>offline</b>. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -79519,7 +80180,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>Load session</source> <translation type="unfinished">Načíst relaci</translation> </message> @@ -79534,17 +80195,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>eric6 Session Files (*.e5s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>Crash Session found!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>A session file of a crashed session was found. Shall this session be restored?</source> <translation type="unfinished"></translation> </message> @@ -79559,17 +80220,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>Update Check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7244"/> + <location filename="../UI/UserInterface.py" line="7211"/> <source>You are using a snapshot release of eric6. A more up-to-date stable release might be available.</source> <translation type="unfinished"></translation> </message> @@ -79624,7 +80285,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source><p>The PySide{0} documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> @@ -79700,17 +80361,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source>Start Web Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6015"/> + <location filename="../UI/UserInterface.py" line="5982"/> <source>The eric6 web browser could not be started.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source><p>The eric6 web browser is not started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> @@ -79809,6 +80470,21 @@ <source><h2>Version Numbers</h2><table></source> <translation type="unfinished"><h3>Čísla verzí</h3><table> {2>?} {2>?}</translation> </message> + <message> + <location filename="../UI/UserInterface.py" line="4944"/> + <source><p>Could not find the Qt-Designer executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5014"/> + <source><p>Could not find the Qt-Linguist executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5058"/> + <source><p>Could not find the Qt-Assistant executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>UserPropertiesDialog</name> @@ -85640,37 +86316,37 @@ <translation type="obsolete">Vybrat barvu pozadí pro bezpečné URL.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="324"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="402"/> <source>Images</source> <translation type="unfinished">Obrázky</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="408"/> <source>Select to load images</source> <translation type="unfinished">Vybrat pro nahrání obrázků</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="333"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="411"/> <source>Load images</source> <translation type="unfinished">Nahrát obrázky</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="343"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="421"/> <source>Style Sheet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="349"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="427"/> <source>User Style Sheet:</source> <translation type="unfinished">Uživatelský list stylů:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="365"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="443"/> <source>Enter the file name of a user style sheet</source> <translation type="unfinished">Zadejte jméno souboru uživatelských stylů</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="375"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="453"/> <source>Tabs</source> <translation type="unfinished">Taby</translation> </message> @@ -85680,12 +86356,12 @@ <translation type="obsolete">Zobrazit pouze jedno tlačítko Zavřít místo jednoho v každém tabu</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="381"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="459"/> <source>Select to issue a warning, if multiple tabs are about to be closed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="384"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="462"/> <source>Warn, if multiple tabs are about to be closed</source> <translation type="unfinished"></translation> </message> @@ -85705,37 +86381,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="426"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="504"/> <source><font color="#FF0000"><b>Note:</b> All settings below are activated at the next startup of the application.</font></source> <translation type="unfinished"><font color="#FF0000"><b>Poznámka:</b> Tato nastavení budou aktivována až po novém spuštění aplikace.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="433"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="511"/> <source>Toolbars</source> <translation type="unfinished">Lišty nástrojů</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="439"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="517"/> <source>Select to show toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="520"/> <source>Show Toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="394"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="472"/> <source>Scrollbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="400"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="478"/> <source>Select to show scrollbars. Note: Scrolling is possible even without them.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="403"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="481"/> <source>Show Scrollbars</source> <translation type="unfinished"></translation> </message> @@ -85745,13 +86421,48 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="304"/> + <source>Select the background color for secure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> - <source>Background color of secure URLs:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="298"/> - <source>Select the background color for secure URLs.</source> + <source>URL Entry Background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="291"/> + <source>Secure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="327"/> + <source>Insecure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="340"/> + <source>Select the background color for insecure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="350"/> + <source>Malicious URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="363"/> + <source>Select the background color for malicious URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="373"/> + <source>Private Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="386"/> + <source>Select the background color for URLs in private mode.</source> <translation type="unfinished"></translation> </message> </context> @@ -87023,27 +87734,27 @@ <translation type="unfinished">...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="892"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="913"/> <source>Loading...</source> <translation type="unfinished">Načítám...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="912"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="922"/> <source>Finished loading</source> <translation type="unfinished">Načteno</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="914"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="889"/> <source>Failed to load</source> <translation type="unfinished">Načtení selhalo</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window?</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation type="unfinished"> @@ -87053,22 +87764,22 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="962"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="970"/> <source>&Quit</source> <translation type="unfinished">&Konec</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="965"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="973"/> <source>C&lose Current Tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1146"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1154"/> <source>Restore All Closed Tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1148"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1156"/> <source>Clear List</source> <translation type="unfinished"></translation> </message> @@ -89962,12 +90673,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="391"/> + <location filename="../eric6.py" line="399"/> <source>Starting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../eric6.py" line="396"/> + <location filename="../eric6.py" line="404"/> <source>Generating Main Window...</source> <translation type="unfinished">Generování hlavního okna...</translation> </message> @@ -90118,7 +90829,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="183"/> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="187"/> <source>no message defined for code '{0}'</source> <translation type="unfinished"></translation> </message> @@ -90302,421 +91013,426 @@ <source>'...' % ... `*` specifier requires sequence</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="165"/> + <source>'if tuple literal' is always true, perhaps remove accidental comma?</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>pycodestyle</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="21"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> <source>indentation contains mixed spaces and tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> - <source>indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="27"/> - <source>expected an indented block</source> + <source>indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="30"/> - <source>unexpected indentation</source> + <source>expected an indented block</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="33"/> - <source>indentation is not a multiple of four (comment)</source> + <source>unexpected indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36"/> - <source>expected an indented block (comment)</source> + <source>indentation is not a multiple of four (comment)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39"/> + <source>expected an indented block (comment)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> <source>unexpected indentation (comment)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> - <source>continuation line indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="48"/> - <source>continuation line missing indentation or outdented</source> + <source>continuation line indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="51"/> + <source>continuation line missing indentation or outdented</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54"/> <source>closing bracket does not match indentation of opening bracket's line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55"/> - <source>closing bracket does not match visual indentation</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="58"/> - <source>continuation line with same indent as next logical line</source> + <source>closing bracket does not match visual indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="61"/> - <source>continuation line over-indented for hanging indent</source> + <source>continuation line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64"/> - <source>continuation line over-indented for visual indent</source> + <source>continuation line over-indented for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67"/> - <source>continuation line under-indented for visual indent</source> + <source>continuation line over-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70"/> - <source>visually indented line with same indent as next logical line</source> + <source>continuation line under-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73"/> - <source>continuation line unaligned for hanging indent</source> + <source>visually indented line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76"/> - <source>closing bracket is missing indentation</source> + <source>continuation line unaligned for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79"/> - <source>indentation contains tabs</source> + <source>closing bracket is missing indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82"/> + <source>indentation contains tabs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85"/> <source>whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91"/> - <source>whitespace before '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94"/> - <source>multiple spaces before operator</source> + <source>whitespace before '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97"/> - <source>multiple spaces after operator</source> + <source>multiple spaces before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100"/> - <source>tab before operator</source> + <source>multiple spaces after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103"/> - <source>tab after operator</source> + <source>tab before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106"/> - <source>missing whitespace around operator</source> + <source>tab after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109"/> - <source>missing whitespace around arithmetic operator</source> + <source>missing whitespace around operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112"/> - <source>missing whitespace around bitwise or shift operator</source> + <source>missing whitespace around arithmetic operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115"/> - <source>missing whitespace around modulo operator</source> + <source>missing whitespace around bitwise or shift operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118"/> - <source>missing whitespace after '{0}'</source> + <source>missing whitespace around modulo operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121"/> - <source>multiple spaces after '{0}'</source> + <source>missing whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124"/> - <source>tab after '{0}'</source> + <source>multiple spaces after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127"/> + <source>tab after '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> <source>unexpected spaces around keyword / parameter equals</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> - <source>at least two spaces before inline comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136"/> - <source>inline comment should start with '# '</source> + <source>at least two spaces before inline comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="139"/> - <source>block comment should start with '# '</source> + <source>inline comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="142"/> - <source>too many leading '#' for block comment</source> + <source>block comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="145"/> - <source>multiple spaces after keyword</source> + <source>too many leading '#' for block comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="148"/> - <source>multiple spaces before keyword</source> + <source>multiple spaces after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="151"/> - <source>tab after keyword</source> + <source>multiple spaces before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154"/> - <source>tab before keyword</source> + <source>tab after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157"/> - <source>missing whitespace after keyword</source> + <source>tab before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="160"/> - <source>trailing whitespace</source> + <source>missing whitespace after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163"/> - <source>no newline at end of file</source> + <source>trailing whitespace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166"/> + <source>no newline at end of file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169"/> <source>blank line contains whitespace</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> - <source>too many blank lines ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> - <source>blank lines found after function decorator</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="194"/> - <source>blank line at end of file</source> + <source>too many blank lines ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <source>blank lines found after function decorator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="197"/> - <source>multiple imports on one line</source> + <source>blank line at end of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200"/> - <source>module level import not at top of file</source> + <source>multiple imports on one line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203"/> - <source>line too long ({0} > {1} characters)</source> + <source>module level import not at top of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206"/> - <source>the backslash is redundant between brackets</source> + <source>line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209"/> + <source>the backslash is redundant between brackets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> <source>line break before binary operator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> - <source>.has_key() is deprecated, use 'in'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> - <source>deprecated form of raising exception</source> + <source>.has_key() is deprecated, use 'in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> - <source>'<>' is deprecated, use '!='</source> + <source>deprecated form of raising exception</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> + <source>'<>' is deprecated, use '!='</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>backticks are deprecated, use 'repr()'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> - <source>multiple statements on one line (colon)</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> - <source>multiple statements on one line (semicolon)</source> + <source>multiple statements on one line (colon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> - <source>statement ends with a semicolon</source> + <source>multiple statements on one line (semicolon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> + <source>statement ends with a semicolon</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248"/> <source>multiple statements on one line (def)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="251"/> - <source>comparison to {0} should be {1}</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> - <source>test for membership should be 'not in'</source> + <source>comparison to {0} should be {1}</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> - <source>test for object identity should be 'is not'</source> + <source>test for membership should be 'not in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> - <source>do not compare types, use 'isinstance()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> - <source>do not assign a lambda expression, use a def</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> - <source>ambiguous variable name '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> - <source>ambiguous class definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> - <source>ambiguous function definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> - <source>{0}: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> - <source>{0}</source> + <source>test for object identity should be 'is not'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> + <source>do not compare types, use 'isinstance()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> + <source>do not assign a lambda expression, use a def</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> + <source>ambiguous variable name '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> + <source>ambiguous class definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> + <source>ambiguous function definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284"/> + <source>{0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> <source>do not use bare except</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184"/> <source>expected {0} blank lines after class or function definition, found {1}</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> + <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> + <source>missing whitespace around parameter equals</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <source>expected {0} blank lines, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <source>expected {0} blank lines before a nested definition, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <source>line break after binary operator</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> - <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> - <source>missing whitespace around parameter equals</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172"/> - <source>expected {0} blank lines, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="185"/> - <source>expected {0} blank lines before a nested definition, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> - <source>line break after binary operator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>invalid escape sequence '\{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> <source>too many blank lines ({0}) before a nested definition, expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> <source>too many blank lines ({0}), expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> <source>over-indented</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> <source>doc line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message>
--- a/eric6/i18n/eric6_de.ts Sun May 03 13:42:52 2020 +0200 +++ b/eric6/i18n/eric6_de.ts Wed Jun 17 17:14:12 2020 +0200 @@ -352,7 +352,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="200"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="201"/> <source>Add Bookmark</source> <translation>Lesezeichen hinzufügen</translation> </message> @@ -1104,72 +1104,72 @@ <context> <name>AnnotationsChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="808"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> <source>missing type annotation for function argument '{0}'</source> <translation>fehlende Typannotation für Funktionsargument '{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> - <source>missing type annotation for '*{0}'</source> - <translation>fehlende Typannotation für '*{0}'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="814"/> + <source>missing type annotation for '*{0}'</source> + <translation>fehlende Typannotation für '*{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> <source>missing type annotation for '**{0}'</source> <translation>fehlende Typannotation für '**{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> - <source>missing return type annotation for public function</source> - <translation>fehlende Rückgabetypannotation für öffentliche Funktion</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="826"/> - <source>missing return type annotation for protected function</source> - <translation>fehlende Rückgabetypannotation für geschützte Funktion</translation> + <source>missing return type annotation for public function</source> + <translation>fehlende Rückgabetypannotation für öffentliche Funktion</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="829"/> - <source>missing return type annotation for private function</source> - <translation>fehlende Rückgabetypannotation für private Funktion</translation> + <source>missing return type annotation for protected function</source> + <translation>fehlende Rückgabetypannotation für geschützte Funktion</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="832"/> - <source>missing return type annotation for special method</source> - <translation>fehlende Rückgabetypannotation für spezielle Methode</translation> + <source>missing return type annotation for private function</source> + <translation>fehlende Rückgabetypannotation für private Funktion</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="835"/> - <source>missing return type annotation for staticmethod</source> - <translation>fehlende Rückgabetypannotation für statische Methode</translation> + <source>missing return type annotation for special method</source> + <translation>fehlende Rückgabetypannotation für spezielle Methode</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="838"/> + <source>missing return type annotation for staticmethod</source> + <translation>fehlende Rückgabetypannotation für statische Methode</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="841"/> <source>missing return type annotation for classmethod</source> <translation>fehlende Rückgabetypannotation für Klassenmethode</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="850"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="853"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> - <source>missing type annotation for 'self' in method</source> - <translation>fehlende Typannotation für 'self' in Methode</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="820"/> + <source>missing type annotation for 'self' in method</source> + <translation>fehlende Typannotation für 'self' in Methode</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> <source>missing type annotation for 'cls' in classmethod</source> <translation>fehlende Typannotation für 'cls' in Klassenmethode</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="842"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="845"/> <source>type annotation coverage of {0}% is too low</source> <translation>Typannotationsabdeckung von {0}% ist zu niedrig</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="846"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="849"/> <source>type annotation is too complex ({0} > {1})</source> <translation>Typannotation ist zu komplex ({0} > {1})</translation> </message> @@ -1817,32 +1817,32 @@ <translation>&Ordner hinzufügen</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="154"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> <source>&Open</source> <translation>Ö&ffnen</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> <source>Open in New &Tab</source> <translation>In neuem &Register öffnen</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="167"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> <source>Edit &Name</source> <translation>&Namen editieren</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="170"/> - <source>Edit &Address</source> - <translation>&Adresse editieren</translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <source>Edit &Address</source> + <translation>&Adresse editieren</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="174"/> <source>&Delete</source> <translation>&Löschen</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="331"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="343"/> <source>New Folder</source> <translation>Neuer Ordner</translation> </message> @@ -1852,25 +1852,40 @@ <translation>Drücken, um die ausgwählten Einträge zu löschen</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="176"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="178"/> <source>&Properties...</source> <translation>&Eigenschaften …</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="161"/> - <source>Open in New &Window</source> - <translation>In neuem &Fenster öffnen</translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="163"/> + <source>Open in New &Window</source> + <translation>In neuem &Fenster öffnen</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="165"/> <source>Open in New Pri&vate Window</source> <translation>In neuem &privaten Fenster öffnen</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="160"/> <source>Open in New &Background Tab</source> <translation>In neuem &Hintergrundregister öffnen</translation> </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="182"/> + <source>New &Folder...</source> + <translation>&Neuer Ordner...</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>New Bookmark Folder</source> + <translation>Neuer Lesezeichenordner</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>Enter title for new bookmark folder:</source> + <translation>Gib den Titel des neuen Lesezeichenordners ein:</translation> + </message> </context> <context> <name>BookmarksImportDialog</name> @@ -2777,6 +2792,49 @@ </message> </context> <context> + <name>CheckerCategories</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="63"/> + <source>Annotations</source> + <translation>Annotationen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="66"/> + <source>Code Complexity</source> + <translation>Code-Komplexität</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="69"/> + <source>Documentation</source> + <translation>Dokumentation</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="72"/> + <source>Errors</source> + <translation>Fehler</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="75"/> + <source>Miscellaneous</source> + <translation>Verschiedenes</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="78"/> + <source>Naming</source> + <translation>Benennung</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="84"/> + <source>Warnings</source> + <translation>Warnungen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <source>Security</source> + <translation>Sicherheit</translation> + </message> +</context> +<context> <name>ChromeImporter</name> <message> <location filename="../WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py" line="43"/> @@ -2912,15 +2970,20 @@ <translation>CircuitPython Firmwaredateien (*.uf2);;Alle Dateien (*)</translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source>Select Path to Device</source> <translation>Wähle den Pfad zum Gerät</translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source><p>The device volume <b>{0}</b> could not be found. Is the device in 'bootloader' mode and mounted?</p> <p>Alternatively select the "Manual Select" entry and enter the path to the device below.</p></source> <translation><p>Der Datenträger des Gerätes <b>{0}</b> konnte nicht gefunden werden. Ist das Gerät im'Bootloader' Modus und eingehängt?</p><p>Wähle alternativ den Eintrag "Manuelle Auswahl" und gib unten den Pfad zum Gerät ein.</p></translation> </message> + <message> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="52"/> + <source>Manual Select</source> + <translation>Manuelle Auswahl</translation> + </message> </context> <context> <name>ClearPrivateDataDialog</name> @@ -3270,6 +3333,14 @@ </message> </context> <context> + <name>CodeStyleChecker</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1133"/> + <source>No message defined for code '{0}'.</source> + <translation>Keine Nachricht für '{0}' definiert.</translation> + </message> +</context> +<context> <name>CodeStyleCheckerDialog</name> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="14"/> @@ -3287,137 +3358,127 @@ Zeile und Position.</p></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="50"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="68"/> <source>Exclude Files:</source> <translation>Ignoriere Dateien:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="57"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="75"/> <source>Enter filename patterns of files to be excluded separated by a comma</source> <translation>Gib Dateimuster getrennt durch Komma von Dateien ein, die ignoriert werden sollen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="830"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1090"/> <source>Press to start the code style check run</source> <translation>Drücken, um die Quelltextstil-Prüfung zu starten</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="840"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1254"/> <source>Press to fix the selected issues</source> <translation>Drücken, um die ausgewählten Probleme zu beheben</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1113"/> <source>Press to load the default values</source> <translation>Drücken, um Standarwerte zu laden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="873"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1123"/> <source>Press to store the current values as defaults</source> <translation>Drücken, um die aktuellen Werte als Standard zu speichern</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="883"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1133"/> <source>Press to reset the default values</source> <translation>Drücken, um die Standardeinstellungen zurückzusetzen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="82"/> <source>Exclude Messages:</source> <translation>Ignorierte Nachrichten:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="71"/> - <source>Enter message codes or categories to be excluded separated by a comma</source> - <translation>Gib die Nachrichtenschlüssel oder -kategorien für auszuschließende Nachrichten durch Kommata getrennt ein</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="141"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="159"/> <source>Press to select the message codes from a list</source> <translation>Drücken, um die Nachrichtenschlüssel aus einer Liste zu wählen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="85"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="103"/> <source>Included Messages:</source> <translation>Ausgewählte Nachrichten:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="92"/> - <source>Enter message codes or categories to be included separated by a comma</source> - <translation>Gib die Nachrichtenschlüssel oder -kategorien für ausgewählte Nachrichten durch Kommata getrennt ein</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="106"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="124"/> <source>Fix Issues:</source> <translation>Zu behebende Probleme:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="113"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="131"/> <source>Enter message codes of issues to be fixed automatically (leave empty to fix all)</source> <translation>Geben Sie die Nachrichtenschlüssel für automatisch zu behebende Probleme ein (leer lassen, um alle zu beheben)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="127"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="145"/> <source>Don't Fix Issues:</source> <translation>Nicht zu behebende Probleme:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="134"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="152"/> <source>Enter message codes of issues not to be fixed automatically</source> <translation>Geben Sie die Nachrichtenschlüssel für nicht automatisch zu behebende Probleme ein</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="265"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="283"/> <source>Max. Line Length:</source> <translation>Max. Zeilenlänge:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="316"/> <source>Enter the maximum allowed line length (PEP-8: 79 characters)</source> <translation>Gib die maximal zulässige Zeilenlänge ein (PEP-8: 79 Zeichen)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="425"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="443"/> <source>Docstring Type:</source> <translation>Docstring Typ:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="450"/> <source>Select the rule set for docstrings</source> <translation>Wähle den Regelsatz für Docstrings</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="406"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="424"/> <source>Select to allow hanging closing brackets</source> <translation>Auswählen, um hängende schließende Klammern zuzulassen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="409"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="427"/> <source>Allow hanging closing brackets</source> <translation>Hängende schließende Klammern zulassen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="150"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="168"/> <source>Select to repeat each message type</source> <translation>Auswählen, um Wiederholungen eines Nachrichtentyps zuzulassen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="153"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="171"/> <source>Repeat messages</source> <translation>Nachrichten wiederholen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="163"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="181"/> <source>Select to fix some issues</source> <translation>Auswählen, um ausgewählte Probleme zu beheben</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="166"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="184"/> <source>Fix issues automatically</source> <translation>Probleme automatisch beheben</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="904"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1167"/> <source><b>Result List</b> <p>This list shows the results of the code style check. Double clicking an entry will open this entry in an editor window and position the cursor at @@ -3428,375 +3489,525 @@ Zeile und Position.</p></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1183"/> <source>File/Line</source> <translation>Datei/Zeile</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="925"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1188"/> <source>Code</source> <translation>Code</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="930"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1193"/> <source>Message</source> <translation>Nachricht</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="80"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="117"/> <source>PEP-257</source> <translation>PEP-257</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="118"/> <source>Eric</source> <translation>Eric</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="88"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="144"/> <source>Statistics...</source> <translation>Statistik...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="90"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="146"/> <source>Press to show some statistics for the last run</source> <translation>Drücken, um eine Statistik für den letzten Lauf zu zeigen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="149"/> <source>Show</source> <translation>Zeige</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="151"/> <source>Press to show all files containing an issue</source> <translation>Drücken, um alle Dateien mit Problemen anzuzeigen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="637"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="241"/> <source>Error: {0}</source> <translation>Fehler: {0}</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="244"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="248"/> <source>Fix: {0}</source> <translation>Lösung: {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="778"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="982"/> <source>No issues found.</source> <translation>Keine Probleme gefunden.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1214"/> <source>Shows the progress of the code style check</source> <translation>Zeigt den Fortschritt der Quelltextstil-Prüfung an</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="960"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1223"/> <source>%v/%m Files</source> <translation>%v/%m Dateien</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="176"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="194"/> <source>Select to show ignored issues</source> <translation>Auswählen, um ignorierte Probleme anzuzeigen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="179"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="197"/> <source>Show ignored</source> <translation>Ignorierte anzeigen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="730"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="927"/> <source>{0} (ignored)</source> <translation>{0} (ignoriert)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="622"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="820"/> <source>Preparing files...</source> <translation>Bereite Dateien vor...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="698"/> <source>Enter the maximum allowed code complexity (McCabe: 10)</source> <translation>Gib die maximal erlaubte Codekomplexität ein (McCabe: 10)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="152"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="214"/> <source>Errors</source> <translation>Fehler</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="664"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="859"/> <source>Transferring data...</source> <translation>Übertrage Daten...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="44"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="42"/> <source>Global Options</source> <translation>Globale Optionen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="233"/> <source>Specific Options</source> <translation>Spezifische Optionen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="257"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="275"/> <source>Source Style</source> <translation>Quelltextstil</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="419"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="437"/> <source>Documentation Style</source> <translation>Dokumentationsstil</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="455"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="473"/> <source>Coding Line</source> <translation>Kodierungszeile</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="461"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="479"/> <source>Valid Encodings:</source> <translation>Zulässige Kodierungen:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="468"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="486"/> <source>Enter valid encodings separated by a comma (leave empty to use defaults)</source> <translation>Gib die zulässigen Kodierungen durch Komma getrennt ein (leer lassen, um Standardwerte zu verwenden)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="478"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="496"/> <source>Copyright</source> <translation>Copyright</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="484"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="502"/> <source>Min. File Size:</source> <translation>Min. Dateigröße:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="491"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="509"/> <source>Enter the minimum size a file must have to be checked (0 for all files)</source> <translation>Gib die Mindestdateigröße ein, ab der eine Datei geprüft wird (0 für alle Dateien)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="517"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="535"/> <source>Author:</source> <translation>Autor:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="524"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="542"/> <source>Enter a copyright author name to check for (leave empty to omit this check)</source> <translation>Gib einen Copyright Autornamen ein, der überprüft werden soll (leer lassen, um diese Prüfung zu überspringen)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="534"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="552"/> <source>Future Imports</source> <translation>Future Imports</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="540"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="558"/> <source>Expected Imports:</source> <translation>Erwartete Imports:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="654"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="672"/> <source>Code Complexity</source> <translation>Code-Komplexität</translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1093"/> + <source>&Start</source> + <translation>&Starten</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1257"/> + <source>&Fix Selected</source> + <translation>Ausgewählte &beheben</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1116"/> + <source>&Load Defaults</source> + <translation>Standards &laden</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1126"/> + <source>St&ore Defaults</source> + <translation>Standards s&peichern</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1136"/> + <source>&Reset Defaults</source> + <translation>Standards lösc&hen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="985"/> + <source>No files found (check your ignore list).</source> + <translation>Keine Dateien gefunden (überprüfe die Ignorierliste).</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="584"/> + <source>Ignore Built-ins Assignment</source> + <translation>Built-in Zuweisung ignorieren</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="600"/> + <source>Left</source> + <translation>Links</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="605"/> + <source>Right</source> + <translation>Rechts</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="615"/> + <source>Press to add a built-in assignment to be ignored</source> + <translation>Drücken, um eine zu ignorierende Built-in Zuweisung hinzuzufügen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="625"/> + <source>Press to delete the selected entries</source> + <translation>Drücken, um die ausgwählten Einträge zu löschen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="691"/> + <source>Max. McCabe Complexity:</source> + <translation>Max. McCabe Komplexität:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="714"/> + <source>Max. Line Complexity:</source> + <translation>Max. Komplexität pro Zeile:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="721"/> + <source>Enter the maximum complexity (number of nodes) for a line of code</source> + <translation>Gib die maximal zulässige Komplexitäte einer Zeile an (Anzahl Instruktionen)</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="737"/> + <source>Max. Line Complexity Score:</source> + <translation>Max. mittlere Komplexität:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="744"/> + <source>Enter the maximum allowed median for line complexity</source> + <translation>Gib den maximal zulässigen Wert für die mittlere Zeilenkomplexität ein</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="350"/> + <source>Blank Lines Before</source> + <translation>Leerzeilen vor</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="356"/> + <source>Top Level Classes and Functions:</source> + <translation>Klassen und Funktionen der obersten Ebene:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="363"/> + <source>Enter the number of blank lines before top level classes and functions</source> + <translation>Gib die Anzahl Leerzeilen vor Klassen und Funktionen der obersten Ebene ein</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="395"/> + <source>Methods and Nested Classes and Functions:</source> + <translation>Methoden und geschachtelte Klassen und Funktionen:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="402"/> + <source>Enter the number of blank lines before methods and nested classes or functions</source> + <translation>Gib die Anzahl Leerzeilen vor Methoden und geschachtelten Klassen und Funktionen ein</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="309"/> + <source>Max. Documentation Line Length:</source> + <translation>Max. Dokumentationszeilenlänge:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="653"/> + <source>Commented Code</source> + <translation>Auskommentierter Code</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="659"/> + <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> + <translation>Auswählen, um agressiver nach auskommentiertem Code zu suchen. Dies erhöhte die Rate fehlerhafter Erkennungen.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="662"/> + <source>Search aggressively</source> + <translation>Agressive Suche</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="763"/> + <source>Type Annotations</source> + <translation>Typannotationen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="769"/> + <source>Min. Coverage:</source> + <translation>Mindestabdeckung:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="776"/> + <source>Enter the minimum percentage of type annotations</source> + <translation>Gib den Mindestprozentsatz für Typannotationen ein</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="779"/> + <source>off</source> + <translation>aus</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="782"/> + <source>%</source> + <translation>%</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="805"/> + <source>Max. Complexity:</source> + <translation>Max. Komplexität:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="812"/> + <source>Enter the maximum type annotation complexity</source> + <translation>Gib die maximale Komplexität von Typannotationen ein</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="32"/> + <source>Configure</source> + <translation>Einstellungen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1146"/> + <source>Run</source> + <translation>Ausführung</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1244"/> + <source>Press to restart the code style check run</source> + <translation>Drücken, um die Quelltextstil-Prüfung erneut zu starten</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1247"/> + <source>Restart</source> + <translation>Neu starten</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="48"/> + <source>Categories:</source> + <translation>Kategorien:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="58"/> + <source>Select the categories of checks to be performed.</source> + <translation>Wähle die Kategorien durchzuführender Prüfungen aus.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="89"/> + <source>Enter message codes to be excluded separated by a comma</source> + <translation>Gib die Nachrichtenschlüssel für auszuschließende Nachrichten durch Kommata getrennt ein</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="110"/> + <source>Enter message codes to be included separated by a comma</source> + <translation>Gib die Nachrichtenschlüssel für ausgewählte Nachrichten durch Kommata getrennt ein</translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="833"/> - <source>&Start</source> - <translation>&Starten</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="843"/> - <source>&Fix Selected</source> - <translation>Ausgewählte &beheben</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="866"/> - <source>&Load Defaults</source> - <translation>Standards &laden</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="876"/> - <source>St&ore Defaults</source> - <translation>Standards s&peichern</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="886"/> - <source>&Reset Defaults</source> - <translation>Standards lösc&hen</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="781"/> - <source>No files found (check your ignore list).</source> - <translation>Keine Dateien gefunden (überprüfe die Ignorierliste).</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="566"/> - <source>Ignore Built-ins Assignment</source> - <translation>Built-in Zuweisung ignorieren</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="582"/> - <source>Left</source> - <translation>Links</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="587"/> - <source>Right</source> - <translation>Rechts</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="597"/> - <source>Press to add a built-in assignment to be ignored</source> - <translation>Drücken, um eine zu ignorierende Built-in Zuweisung hinzuzufügen</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="607"/> - <source>Press to delete the selected entries</source> - <translation>Drücken, um die ausgwählten Einträge zu löschen</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="673"/> - <source>Max. McCabe Complexity:</source> - <translation>Max. McCabe Komplexität:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="696"/> - <source>Max. Line Complexity:</source> - <translation>Max. Komplexität pro Zeile:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="703"/> - <source>Enter the maximum complexity (number of nodes) for a line of code</source> - <translation>Gib die maximal zulässige Komplexitäte einer Zeile an (Anzahl Instruktionen)</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="719"/> - <source>Max. Line Complexity Score:</source> - <translation>Max. mittlere Komplexität:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="726"/> - <source>Enter the maximum allowed median for line complexity</source> - <translation>Gib den maximal zulässigen Wert für die mittlere Zeilenkomplexität ein</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="332"/> - <source>Blank Lines Before</source> - <translation>Leerzeilen vor</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="338"/> - <source>Top Level Classes and Functions:</source> - <translation>Klassen und Funktionen der obersten Ebene:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="345"/> - <source>Enter the number of blank lines before top level classes and functions</source> - <translation>Gib die Anzahl Leerzeilen vor Klassen und Funktionen der obersten Ebene ein</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="377"/> - <source>Methods and Nested Classes and Functions:</source> - <translation>Methoden und geschachtelte Klassen und Funktionen:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="384"/> - <source>Enter the number of blank lines before methods and nested classes or functions</source> - <translation>Gib die Anzahl Leerzeilen vor Methoden und geschachtelten Klassen und Funktionen ein</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="291"/> - <source>Max. Documentation Line Length:</source> - <translation>Max. Dokumentationszeilenlänge:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="635"/> - <source>Commented Code</source> - <translation>Auskommentierter Code</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="641"/> - <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> - <translation>Auswählen, um agressiver nach auskommentiertem Code zu suchen. Dies erhöhte die Rate fehlerhafter Erkennungen.</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="644"/> - <source>Search aggressively</source> - <translation>Agressive Suche</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="745"/> - <source>Type Annotations</source> - <translation>Typannotationen</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="751"/> - <source>Min. Coverage:</source> - <translation>Mindestabdeckung:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="758"/> - <source>Enter the minimum percentage of type annotations</source> - <translation>Gib den Mindestprozentsatz für Typannotationen ein</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="761"/> - <source>off</source> - <translation>aus</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="764"/> - <source>%</source> - <translation>%</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="787"/> - <source>Max. Complexity:</source> - <translation>Max. Komplexität:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="794"/> - <source>Enter the maximum type annotation complexity</source> - <translation>Gib die maximale Komplexität von Typannotationen ein</translation> + <source>Security Options</source> + <translation>Sicherheitsoptionen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="839"/> + <source>Hardcoded 'tmp' Directories:</source> + <translation>Fest einprogrammierte 'tmp' Verzeichnisse:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="849"/> + <source>Weak Cryptographic Keys</source> + <translation>Schwache Kryptografische Schlüssel</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="855"/> + <source>DSA</source> + <translation>DSA</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="973"/> + <source>High Risk:</source> + <translation>Hohes Risiko:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="868"/> + <source>Select the bit length below which a DSA key is to be considered very weak</source> + <translation>Wähle die Bitlänge, unter der ein DSA Schlüssel als besonders schwach betrachtet wird</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="990"/> + <source>Medium Risk:</source> + <translation>Mittleres Risiko:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="885"/> + <source>Select the bit length below which a DSA key is to be considered weak</source> + <translation>Wähle die Bitlänge, unter der ein DSA Schlüssel als schwach betrachtet wird</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="911"/> + <source>RSA</source> + <translation>RSA</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="924"/> + <source>Select the bit length below which a RSA key is to be considered very weak</source> + <translation>Wähle die Bitlänge, unter der ein RSA Schlüssel als besonders schwach betrachtet wird</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="941"/> + <source>Select the bit length below which a RSA key is to be considered weak</source> + <translation>Wähle die Bitlänge, unter der ein RSA Schlüssel als schwach betrachtet wird</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="967"/> + <source>Elliptic Curves</source> + <translation>Elliptische Kurven</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="980"/> + <source>Select the bit length below which an Elliptic Curve is to be considered very weak</source> + <translation>Wähle die Bitlänge, unter der eine Elliptische Kurve als besonders schwach betrachtet wird</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="997"/> + <source>Select the bit length below which an Elliptic Curve is to be considered weak</source> + <translation>Wähle die Bitlänge, unter der eine Elliptische Kurve als schwach betrachtet wird</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1026"/> + <source>Enter the names of insecure SSL protocols and methods (one per line)</source> + <translation>Gib die Namen von unsicheren SSL Protokollen und Methoden ein (eine pro Zeile)</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1033"/> + <source>Insecure SSL Protocols:</source> + <translation>Unsichere SSL Protokolle:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1043"/> + <source>Insecure Hashes:</source> + <translation>Unsichere Hashes:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1050"/> + <source>Enter a list of hash methods to be considered insecure separated by comma</source> + <translation>Gib eine Liste von Hashmethoden, die als unsicher betrachtet werden, durch Komma getrennt ein</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1057"/> + <source>Select to also check for insecure exception handling for typed exceptions</source> + <translation>Auswählen, um auch die unsichere Ausnahmebehandlung von typisierten Ausnahmen zu prüfen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1060"/> + <source>Check Typed Exceptions</source> + <translation>Typisierte Ausnahmen prüfen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1067"/> + <source>Enter directory names (one per line) to be checked for</source> + <translation>Gib zu überprüfende Verzeichnisnamen (einen pro Zeile) ein</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1154"/> + <source><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</source> + <translation><b>Hinweis:</b> Markiere geprüfte Sicherheitsmeldungen mit einem "<b># secok</b>" Kommentar.</translation> </message> </context> <context> <name>CodeStyleCheckerPlugin</name> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> <source>Check Code Style</source> <translation>Quelltextstil püfen</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>&Code Style...</source> - <translation>&Quelltextstil...</translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="262"/> - <source>Check code style.</source> - <translation>Quelltextstil püfen.</translation> - </message> - <message> <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>&Code Style...</source> + <translation>&Quelltextstil...</translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="266"/> + <source>Check code style.</source> + <translation>Quelltextstil püfen.</translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="364"/> <source><b>Check Code Style...</b><p>This checks Python files for compliance to the code style conventions given in various PEPs.</p></source> <translation><b>Quelltextstil prüfen...</b><p>Dies überprüft Python-Dateien auf Einhaltung der Konventionen verschiedener PEPs.</p></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="110"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="112"/> <source>Python 2 batch check</source> <translation>Python 2 Stapelprüfung</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="126"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="128"/> <source>Python 3 batch check</source> <translation>Python 3 Stapelprüfung</translation> </message> @@ -3832,142 +4043,142 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="857"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="861"/> <source>Triple single quotes converted to triple double quotes.</source> <translation>Dreifache Einfachanführungszeichen in dreifache Doppelanführungszeichen umgewandelt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="860"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="864"/> <source>Introductory quotes corrected to be {0}"""</source> <translation>Einleitende Anführungszeichen in {0}""" korrigiert</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="867"/> <source>Single line docstring put on one line.</source> <translation>Einzeiligen Docstring auf eine Zeile gebracht.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="866"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="870"/> <source>Period added to summary line.</source> <translation>Punkt an die Zusammenfassungszeile angefügt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="893"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="897"/> <source>Blank line before function/method docstring removed.</source> <translation>Leerzeile vor Funktions-/Methodendocstring entfernt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="872"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="876"/> <source>Blank line inserted before class docstring.</source> <translation>Leerzeile vor Klassendocstring eingefügt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="875"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="879"/> <source>Blank line inserted after class docstring.</source> <translation>Leerzeile nach Klassendocstring eingefügt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="878"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="882"/> <source>Blank line inserted after docstring summary.</source> <translation>Leerzeile nach Docstring Zusammenfassung eingefügt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="881"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="885"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation>Leerzeile nach letztem Abschnitt des Docstring eingefügt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="884"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="888"/> <source>Leading quotes put on separate line.</source> <translation>Einleitende Anführungszeichen auf separate Zeile gesetzt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="887"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="891"/> <source>Trailing quotes put on separate line.</source> <translation>Schließende Anführungszeichen auf separate Zeile gesetzt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="890"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="894"/> <source>Blank line before class docstring removed.</source> <translation>Leerzeile vor Klassendocstring entfernt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="896"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="900"/> <source>Blank line after class docstring removed.</source> <translation>Leerzeile nach Klassendocstring entfernt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="899"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="903"/> <source>Blank line after function/method docstring removed.</source> <translation>Leerzeile nach Funktions-/Methodendocstring entfernt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="902"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="906"/> <source>Blank line after last paragraph removed.</source> <translation>Leerzeile nach letzten Abschnitt entfernt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="905"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="909"/> <source>Tab converted to 4 spaces.</source> <translation>Tabulator in 4 Leerzeichen gewandelt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="908"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="912"/> <source>Indentation adjusted to be a multiple of four.</source> <translation>Einrückung auf ein Vielfaches von vier korrigiert.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="911"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="915"/> <source>Indentation of continuation line corrected.</source> <translation>Einrückung der Fortsetzungszeile korrigiert.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="914"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="918"/> <source>Indentation of closing bracket corrected.</source> <translation>Einrückung der schließenden Klammer korrigiert.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="917"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="921"/> <source>Missing indentation of continuation line corrected.</source> <translation>Fehlende Einrückung der Fortsetzungszeile korrigiert.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="924"/> <source>Closing bracket aligned to opening bracket.</source> <translation>Schließende Klammer an öffnender Klammer ausgerichtet.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="923"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="927"/> <source>Indentation level changed.</source> <translation>Einrückungsebene geändert.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="926"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="930"/> <source>Indentation level of hanging indentation changed.</source> <translation>Einrückungsebene der hängenden Einrückung geändert.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="929"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="933"/> <source>Visual indentation corrected.</source> <translation>Visuelle Einrückung korrigiert.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="944"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="948"/> <source>Extraneous whitespace removed.</source> <translation>Überzählige Leerzeichen gelöscht.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="941"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="945"/> <source>Missing whitespace added.</source> <translation>Fehlende Leerzeichen eingefügt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="947"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> <source>Whitespace around comment sign corrected.</source> <translation>Leerzeichen um Kommentarzeichen korrigiert.</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="955"/> <source>%n blank line(s) inserted.</source> <translation> <numerusform>Eine Leerzeile eingefügt.</numerusform> @@ -3975,7 +4186,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="954"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> <source>%n superfluous lines removed</source> <translation> <numerusform>Eine überflüssige Zeile gelöscht</numerusform> @@ -3983,80 +4194,75 @@ </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="962"/> <source>Superfluous blank lines removed.</source> <translation>Überflüssige Leerzeilen gelöscht.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="961"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="965"/> <source>Superfluous blank lines after function decorator removed.</source> <translation>Überflüssige Leerzeilen nach Funktionsdekorator gelöscht.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="964"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="968"/> <source>Imports were put on separate lines.</source> <translation>Imports wurden auf separate Zeilen verteilt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="967"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="971"/> <source>Long lines have been shortened.</source> <translation>Lange Zeilen wurden gekürzt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="970"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="974"/> <source>Redundant backslash in brackets removed.</source> <translation>Redundante Backslashes in Klammern entfernt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="976"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="980"/> <source>Compound statement corrected.</source> <translation>Compund Statement korrigiert.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="979"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="983"/> <source>Comparison to None/True/False corrected.</source> <translation>Vergleich mit None/True/False korrigiert.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="982"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="986"/> <source>'{0}' argument added.</source> <translation>'{0}' Argument hinzugefügt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="985"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="989"/> <source>'{0}' argument removed.</source> <translation>'{0}' Argument entfernt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="988"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="992"/> <source>Whitespace stripped from end of line.</source> <translation>Leerzeichen am Zeilenende entfernt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="991"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="995"/> <source>newline added to end of file.</source> <translation>Zeilenvorschub am Dateiende angefügt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="994"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="998"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation>Überflüssige Leerzeilen am Dateiende gelöscht.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="997"/> - <source>'<>' replaced by '!='.</source> - <translation>„<>“ durch „!=“ ersetzt.</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1001"/> + <source>'<>' replaced by '!='.</source> + <translation>„<>“ durch „!=“ ersetzt.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1005"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation>Datei konnte nicht gespeichert werden! Ursache: {0}</translation> </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1107"/> - <source> no message defined for code '{0}'</source> - <translation> keine Nachricht für '{0}' definiert</translation> - </message> </context> <context> <name>CodeStyleStatisticsDialog</name> @@ -4081,7 +4287,7 @@ <translation>Nachricht</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="60"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="63"/> <source>%n issue(s) found</source> <translation> <numerusform>ein Problem gefunden</numerusform> @@ -4089,7 +4295,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="67"/> <source>%n issue(s) fixed</source> <translation> <numerusform>ein Problem behoben</numerusform> @@ -4097,7 +4303,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="66"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="69"/> <source>%n file(s) checked</source> <translation> <numerusform>eine Datei überprüft</numerusform> @@ -4105,7 +4311,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="68"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="71"/> <source>%n file(s) with issues found</source> <translation> <numerusform>eine Datei mit Problemen gefunden</numerusform> @@ -4113,13 +4319,21 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="62"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="65"/> <source>%n issue(s) ignored</source> <translation> <numerusform>ein Problem ignoriert</numerusform> <numerusform>%n Probleme ignoriert</numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="73"/> + <source>%n security issue(s) acknowledged</source> + <translation> + <numerusform>%n Sicherheitsproblem geprüft</numerusform> + <numerusform>%n Sicherheitsprobleme geprüft</numerusform> + </translation> + </message> </context> <context> <name>CodingError</name> @@ -4531,22 +4745,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="479"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="482"/> <source>'{0}' is too complex ({1})</source> <translation>'{0}' ist zu komplex ({1})</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="481"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="484"/> <source>source code line is too complex ({0})</source> <translation>Quelltextzeile ist zu komplex ({0})</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="483"/> - <source>overall source code line complexity is too high ({0})</source> - <translation>mittlere Komplexität der Quelltextzeilen is zu hoch ({0})</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="486"/> + <source>overall source code line complexity is too high ({0})</source> + <translation>mittlere Komplexität der Quelltextzeilen is zu hoch ({0})</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="489"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> @@ -8292,242 +8506,242 @@ <context> <name>DocStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="288"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="291"/> <source>module is missing a docstring</source> <translation>Modul hat keinen Docstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290"/> - <source>public function/method is missing a docstring</source> - <translation>Öffentliche Funktion/Methode hat keinen Docstring</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293"/> - <source>private function/method may be missing a docstring</source> - <translation>Private Funktion/Methode hat keinen Docstring</translation> + <source>public function/method is missing a docstring</source> + <translation>Öffentliche Funktion/Methode hat keinen Docstring</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296"/> + <source>private function/method may be missing a docstring</source> + <translation>Private Funktion/Methode hat keinen Docstring</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299"/> <source>public class is missing a docstring</source> <translation>Öffentliche Klasse hat keinen Docstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301"/> <source>private class may be missing a docstring</source> <translation>Private Klasse hat keinen Docstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="300"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="303"/> <source>docstring not surrounded by """</source> <translation>Docstring nicht durch """ eingeschlossen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302"/> - <source>docstring containing \ not surrounded by r"""</source> - <translation>Docstring, der \ enthält, nicht durch r""" eingeschlossen</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305"/> - <source>docstring containing unicode character not surrounded by u"""</source> - <translation>Docstring, der Unicode Zeichen enthält, nicht durch u""" eingeschlossen</translation> + <source>docstring containing \ not surrounded by r"""</source> + <translation>Docstring, der \ enthält, nicht durch r""" eingeschlossen</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308"/> + <source>docstring containing unicode character not surrounded by u"""</source> + <translation>Docstring, der Unicode Zeichen enthält, nicht durch u""" eingeschlossen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311"/> <source>one-liner docstring on multiple lines</source> <translation>einzeiliger Docstring über mehrere Zeilen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313"/> <source>docstring has wrong indentation</source> <translation>Docstring hat falsche Einrückung</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> <source>docstring summary does not end with a period</source> <translation>Docstring Zusammenfassung endet nicht mit einem Punkt</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> <source>docstring summary is not in imperative mood (Does instead of Do)</source> <translation>Docstring Zusammenfassung nicht im Imperativ (Tut anstelle Tue)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320"/> - <source>docstring summary looks like a function's/method's signature</source> - <translation>Docstring Zusammenfassung scheint Funktion-/Methodensignatur zu sein</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> - <source>docstring does not mention the return value type</source> - <translation>Docstring erwähnt nicht den Typ des Rückgabewertes</translation> + <source>docstring summary looks like a function's/method's signature</source> + <translation>Docstring Zusammenfassung scheint Funktion-/Methodensignatur zu sein</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> - <source>function/method docstring is separated by a blank line</source> - <translation>Funktions-/Methodendocstring ist durch eine Leerzeile abgetrennt</translation> + <source>docstring does not mention the return value type</source> + <translation>Docstring erwähnt nicht den Typ des Rückgabewertes</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> - <source>class docstring is not preceded by a blank line</source> - <translation>Klassendocstring hat keine führende Leerzeile</translation> + <source>function/method docstring is separated by a blank line</source> + <translation>Funktions-/Methodendocstring ist durch eine Leerzeile abgetrennt</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> + <source>class docstring is not preceded by a blank line</source> + <translation>Klassendocstring hat keine führende Leerzeile</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> <source>class docstring is not followed by a blank line</source> <translation>Klassendocstring hat keine nachfolgende Leerzeile</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> <source>docstring summary is not followed by a blank line</source> <translation>Docstring Zusammenfassung hat keine folgende Leerzeile</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341"/> <source>last paragraph of docstring is not followed by a blank line</source> <translation>letzter Abschnitt des Docstring hat keine folgende Leerzeile</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> - <source>private function/method is missing a docstring</source> - <translation>Private Funktion/Methode hat keinen Docstring</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> + <source>private function/method is missing a docstring</source> + <translation>Private Funktion/Methode hat keinen Docstring</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352"/> <source>private class is missing a docstring</source> <translation>Private Klasse hat keinen Docstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> - <source>leading quotes of docstring not on separate line</source> - <translation>einleitende Anführungszeichen nicht auf separater Zeile</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <source>leading quotes of docstring not on separate line</source> + <translation>einleitende Anführungszeichen nicht auf separater Zeile</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> <source>trailing quotes of docstring not on separate line</source> <translation>schließende Anführungszeichen nicht auf separater Zeile</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="363"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="366"/> <source>docstring does not contain a @return line but function/method returns something</source> <translation>Docstring enthält keine @return Zeile obwohl die Funktion/Methode etwas zurückgibt</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370"/> <source>docstring contains a @return line but function/method doesn't return anything</source> <translation>Docstring enthält eine @return Zeile obwohl die Funktion/Methode nichts zurückgibt</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> - <source>docstring does not contain enough @param/@keyparam lines</source> - <translation>Docstring enthält nicht genügend @param/@keyparam Zeilen</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> - <source>docstring contains too many @param/@keyparam lines</source> - <translation>Docstring enthält zu viele @param/@keyparam Zeilen</translation> + <source>docstring does not contain enough @param/@keyparam lines</source> + <translation>Docstring enthält nicht genügend @param/@keyparam Zeilen</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> - <source>keyword only arguments must be documented with @keyparam lines</source> - <translation>'keyword only' Argumente müssen mit @keyparam Zeilen dokumentiert werden</translation> + <source>docstring contains too many @param/@keyparam lines</source> + <translation>Docstring enthält zu viele @param/@keyparam Zeilen</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> - <source>order of @param/@keyparam lines does not match the function/method signature</source> - <translation>Reihenfolge der @param/@keyparam Zeilen stimmt nicht mit der Funktions-/Methodensignatur überein</translation> + <source>keyword only arguments must be documented with @keyparam lines</source> + <translation>'keyword only' Argumente müssen mit @keyparam Zeilen dokumentiert werden</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> + <source>order of @param/@keyparam lines does not match the function/method signature</source> + <translation>Reihenfolge der @param/@keyparam Zeilen stimmt nicht mit der Funktions-/Methodensignatur überein</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="386"/> <source>class docstring is preceded by a blank line</source> <translation>Klassendocstring hat eine führende Leerzeile</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> <source>class docstring is followed by a blank line</source> <translation>Klassendocstring hat eine nachfolgende Leerzeile</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> - <source>function/method docstring is preceded by a blank line</source> - <translation>Funktions-/Methodendocstring hat eine führende Leerzeile</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> + <source>function/method docstring is preceded by a blank line</source> + <translation>Funktions-/Methodendocstring hat eine führende Leerzeile</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> <source>function/method docstring is followed by a blank line</source> <translation>Funktions-/Methodendocstring hat eine nachfolgende Leerzeile</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> - <source>last paragraph of docstring is followed by a blank line</source> - <translation>letzter Abschnitt des Docstring hat eine folgende Leerzeile</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="399"/> + <source>last paragraph of docstring is followed by a blank line</source> + <translation>letzter Abschnitt des Docstring hat eine folgende Leerzeile</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="402"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation>Docstring enthält keine @exception Zeile obwohl die Funktion/Methode eine Ausnahme erzeugt</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="403"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="406"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation>Docstring enthält eine @exception Zeile obwohl die Funktion/Methode keine Ausnahme erzeugt</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="426"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="429"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="312"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="315"/> <source>docstring does not contain a summary</source> <translation>Docstring enthält keine Zusammenfassung</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>docstring summary does not start with '{0}'</source> <translation>Docstring Zusammenfassung beginnt nicht mit '{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="407"/> - <source>raised exception '{0}' is not documented in docstring</source> - <translation>Ausnahme '{0}' wird geworfen, ist aber nicht dokumentiert</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="410"/> - <source>documented exception '{0}' is not raised</source> - <translation>dokumentierte Ausnahme '{0}' wird nicht geworfen</translation> + <source>raised exception '{0}' is not documented in docstring</source> + <translation>Ausnahme '{0}' wird geworfen, ist aber nicht dokumentiert</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="413"/> - <source>docstring does not contain a @signal line but class defines signals</source> - <translation>Docstring enthält keine @signal Zeile obwohl die Klasse Signale definiert</translation> + <source>documented exception '{0}' is not raised</source> + <translation>dokumentierte Ausnahme '{0}' wird nicht geworfen</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="416"/> - <source>docstring contains a @signal line but class doesn't define signals</source> - <translation>Docstring enthält eine @signal Zeile obwohl die Klasse keine Signale definiert</translation> + <source>docstring does not contain a @signal line but class defines signals</source> + <translation>Docstring enthält keine @signal Zeile obwohl die Klasse Signale definiert</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="419"/> - <source>defined signal '{0}' is not documented in docstring</source> - <translation>definiertes Signal '{0}' ist nicht dokumentiert</translation> + <source>docstring contains a @signal line but class doesn't define signals</source> + <translation>Docstring enthält eine @signal Zeile obwohl die Klasse keine Signale definiert</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="422"/> + <source>defined signal '{0}' is not documented in docstring</source> + <translation>definiertes Signal '{0}' ist nicht dokumentiert</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="425"/> <source>documented signal '{0}' is not defined</source> <translation>dokumentiertes Signal '{0}' ist nicht definiert</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="354"/> <source>class docstring is still a default string</source> <translation>Klassendocstring is noch immer ein Standardstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347"/> <source>function docstring is still a default string</source> <translation>Funktionsdocstring is noch immer ein Standardstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>module docstring is still a default string</source> <translation>Moduldocstring is noch immer ein Standardstring</translation> </message> @@ -10368,12 +10582,12 @@ <translation>&Alle entfernen</translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Add Entry</source> <translation>Eintrag hinzufügen</translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Enter the entry to add to the list:</source> <translation>Gib den hinzuzufügenden Eintrag ein:</translation> </message> @@ -10862,7 +11076,7 @@ <translation>Drucken abgebrochen</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7009"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>File changed</source> <translation>Datei geändert</translation> </message> @@ -10927,57 +11141,57 @@ <translation>Zurück zum letzten gesichert Zustand</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Macro Name</source> <translation>Makro Name</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Select a macro name:</source> <translation>Wähle einen Makro Namen:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Macro files (*.macro)</source> <translation>Makrodateien (*.macro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6754"/> + <location filename="../QScintilla/Editor.py" line="6755"/> <source>Load macro file</source> <translation>Lade Makrodatei</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source>Error loading macro</source> <translation>Fehler beim Makro Laden</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Save macro file</source> <translation>Makrodatei schreiben</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source>Save macro</source> <translation>Makro speichern</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source>Error saving macro</source> <translation>Fehler beim Makro speichern</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Start Macro Recording</source> <translation>Makroaufzeichnung starten</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Macro Recording</source> <translation>Makroaufzeichnung</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Enter name of the macro:</source> <translation>Gib einen Namen für das Makro ein:</translation> </message> @@ -11027,32 +11241,32 @@ <translation>Haltepunkt bearbeiten...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5615"/> + <location filename="../QScintilla/Editor.py" line="5616"/> <source>Enable breakpoint</source> <translation>Haltepunkt aktivieren</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5618"/> + <location filename="../QScintilla/Editor.py" line="5619"/> <source>Disable breakpoint</source> <translation>Haltepunkt deaktivieren</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Code Coverage</source> <translation>Quelltext Abdeckung</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Please select a coverage file</source> <translation>Bitte wählen Sie eine Datei mit Abdeckungsdaten</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Profile Data</source> <translation>Profildaten</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Please select a profile file</source> <translation>Bitte wählen Sie eine Datei mit Profildaten</translation> </message> @@ -11092,7 +11306,7 @@ <translation>Autom. Speicherung aktiv</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source>Drop Error</source> <translation>Drop Fehler</translation> </message> @@ -11102,12 +11316,12 @@ <translation>Zeige Syntaxfehlermeldung</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>Syntax Error</source> <translation>Syntaxfehler</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>No syntax error message available.</source> <translation>Keine Syntaxfehlermeldung verfügbar.</translation> </message> @@ -11137,17 +11351,17 @@ <translation>Vorige nichtabgedeckte Zeile</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>Show Code Coverage Annotations</source> <translation>Zeilen ohne Abdeckung Markieren</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6049"/> + <location filename="../QScintilla/Editor.py" line="6050"/> <source>All lines have been covered.</source> <translation>Alle Zeilen sind abgedeckt.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>There is no coverage file available.</source> <translation>Es gibt keine Datei mit Abdeckungsinformationen.</translation> </message> @@ -11157,22 +11371,22 @@ <translation><p>Die Datei <b>{0}</b> enthält ungesicherte Änderungen.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6768"/> + <location filename="../QScintilla/Editor.py" line="6769"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation><p>Die Makrodatei <b>{0}</b> kann nicht gelesen werden.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation><p>Die Makrodatei <b>{0}</b> ist zerstört.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation><p>Die Makrodatei <b>{0}</b> kann nicht geschrieben werden.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> ist keine Datei.</p></translation> </message> @@ -11212,82 +11426,82 @@ <translation>Keine Sprache</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7179"/> + <location filename="../QScintilla/Editor.py" line="7180"/> <source>{0} (ro)</source> <translation>{0} (ro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7341"/> + <location filename="../QScintilla/Editor.py" line="7342"/> <source>Resources</source> <translation>Ressourcen</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7343"/> + <location filename="../QScintilla/Editor.py" line="7344"/> <source>Add file...</source> <translation>Datei hinzufügen...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7345"/> + <location filename="../QScintilla/Editor.py" line="7346"/> <source>Add files...</source> <translation>Dateien hinzufügen...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7347"/> + <location filename="../QScintilla/Editor.py" line="7348"/> <source>Add aliased file...</source> <translation>Aliased-Datei hinzufügen...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7350"/> + <location filename="../QScintilla/Editor.py" line="7351"/> <source>Add localized resource...</source> <translation>Lokalisierte Ressource hinzufügen...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7373"/> + <location filename="../QScintilla/Editor.py" line="7374"/> <source>Add file resource</source> <translation>Dateiressource hinzufügen</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7389"/> + <location filename="../QScintilla/Editor.py" line="7390"/> <source>Add file resources</source> <translation>Dateiressourcen hinzufügen</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Add aliased file resource</source> <translation>Aliased-Dateiressourcen hinzufügen</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Alias for file <b>{0}</b>:</source> <translation>Alias für Datei <b>{0}</b>:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Package Diagram</source> <translation>Package-Diagramm</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Include class attributes?</source> <translation>Klassenattribute anzeigen?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Application Diagram</source> <translation>Applikations-Diagramm</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Include module names?</source> <translation>Modulnamen anzeigen?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7354"/> + <location filename="../QScintilla/Editor.py" line="7355"/> <source>Add resource frame</source> <translation>Ressourcenrahmen hinzufügen</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Macro recording is already active. Start new?</source> <translation>Eine Makroaufzeichnung ist bereits aktiv. Neu starten?</translation> </message> @@ -11337,12 +11551,12 @@ <translation>Kein Exportformat angegeben. Abbruch...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Imports Diagram</source> <translation>Imports Diagramm</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Include imports from external modules?</source> <translation>Imports externer Module anzeigen?</translation> </message> @@ -11417,7 +11631,7 @@ <translation>Wähle den anzuwendenden Pygments Lexer.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7847"/> + <location filename="../QScintilla/Editor.py" line="7848"/> <source>Check spelling...</source> <translation>Rechtschreibprüfung...</translation> </message> @@ -11427,12 +11641,12 @@ <translation>Rechtschreibprüfung für Auswahl...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7850"/> + <location filename="../QScintilla/Editor.py" line="7851"/> <source>Add to dictionary</source> <translation>Zum Wörterbuch hinzufügen</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7852"/> + <location filename="../QScintilla/Editor.py" line="7853"/> <source>Ignore All</source> <translation>Alle ignorieren</translation> </message> @@ -11477,22 +11691,22 @@ <translation><p>Die Datei <b>{0}</b> existiert bereits. Überschreiben?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation><p>Die Makrodatei <b>{0}</b> existiert bereits. Überschreiben?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6614"/> + <location filename="../QScintilla/Editor.py" line="6615"/> <source>Warning: {0}</source> <translation>Warnung: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6621"/> + <location filename="../QScintilla/Editor.py" line="6622"/> <source>Error: {0}</source> <translation>Fehler: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7005"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation><br><b>Warnung:</b> Vorgenommenen Änderungen gehen beim neu einlesen verloren.</translation> </message> @@ -11517,27 +11731,27 @@ <translation>Vorherige Änderung</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>Sort Lines</source> <translation>Zeilen sortieren</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>The selection contains illegal data for a numerical sort.</source> <translation>Die Auswahl enthält für eine numerische Sortierung ungültige Daten.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>Warning</source> <translation>Warnung</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>No warning messages available.</source> <translation>Keine Warnmeldungen verfügbar.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6611"/> + <location filename="../QScintilla/Editor.py" line="6612"/> <source>Style: {0}</source> <translation>Stil: {0}</translation> </message> @@ -11562,7 +11776,7 @@ <translation>Öffnen mit Kodierung</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6999"/> + <location filename="../QScintilla/Editor.py" line="7000"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation><p>Die Datei <b>{0}</b> wurde geändert, während sie in eric6 geöffnet war. Neu einlesen?</p></translation> </message> @@ -11587,22 +11801,22 @@ <translation>Der Provider für automatische Vervollständigungen namens '{0}' ist bereits registriert. Die Wiederholung wird ignoriert.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>Call-Tips Provider</source> <translation>Calltipps-Provider</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation>Der Calltipps-Provider namens '{0}' ist bereits registriert. Die Wiederholung wird ignoriert.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>Register Mouse Click Handler</source> <translation>Maus Klick Handler registrieren</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation>Ein Maus Klick Handler für "{0}" wurde bereits durch "{1}" registriert. Die Anfrage durch "{2}" wird abgebrochen...</translation> </message> @@ -11632,12 +11846,12 @@ <translation>Auswahl in Konsole ausführen</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source>EditorConfig Properties</source> <translation>EditorConfig Eigenschaften</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation><p>Die EditorConfig Eigenschaften für die Datei <b>{0}</b> konnten nicht geladen werden.</p></translation> </message> @@ -16999,17 +17213,17 @@ <translation>Gib den Pfad der Firmwaredatei ein</translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="66"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="71"/> <source>Firmware Files (*.img);;All Files (*)</source> <translation>Firmwaredateien (*.img);;Alle Dateien (*)</translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="72"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="77"/> <source>Backup Firmware</source> <translation>Firmware sichern</translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="76"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="82"/> <source>Restore Firmware</source> <translation>Firmware zurückspielen</translation> </message> @@ -17027,12 +17241,12 @@ <translation>Flash löschen</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="211"/> + <location filename="../MicroPython/EspDevices.py" line="217"/> <source>Flash MicroPython Firmware</source> <translation>MicroPython Firmware flashen</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="236"/> + <location filename="../MicroPython/EspDevices.py" line="248"/> <source>Flash Additional Firmware</source> <translation>Zusätzliche Firmware flashen</translation> </message> @@ -17057,7 +17271,7 @@ <translation>Chiptyp '{0}' wird nicht unterstützt.</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>'esptool write_flash' Output</source> <translation>Ausgabe von 'esptool write_flash'</translation> </message> @@ -17067,47 +17281,47 @@ <translation>Gerät zurücksetzen</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>Backup Firmware</source> <translation>Firmware sichern</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>Restore Firmware</source> <translation>Firmware zurückspielen</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>Show Chip ID</source> <translation>Chip ID anzeigen</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>Show Flash ID</source> <translation>Flash ID anzeigen</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>Show MAC Address</source> <translation>MAC Adresse anzeigen</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>'esptool read_flash' Output</source> <translation>Ausgabe von 'esptool read_flash'</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>'esptool chip_id' Output</source> <translation>Ausgabe von 'esptool chip_id'</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>'esptool flash_id' Output</source> <translation>Ausgabe von 'esptool flash_id'</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>'esptool read_mac' Output</source> <translation>Ausgabe von 'esptool read_mac'</translation> </message> @@ -17140,20 +17354,35 @@ <translation>Gib den Pfad der Firmwaredatei ein</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="72"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="96"/> <source>Address:</source> <translation>Adresse:</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="79"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="103"/> <source>Enter the flash addres in the hexadecimal form</source> <translation>Gib die Flash Speicheradresse in Hexadezimalform ein</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="43"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="51"/> <source>Firmware Files (*.bin);;All Files (*)</source> <translation>Firmwaredateien (*.bin);;Alle Dateien (*)</translation> </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="75"/> + <source>Flash Mode:</source> + <translation>Flash Modus:</translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="82"/> + <source>Select the flash mode</source> + <translation>Wähle den Flashmodus aus</translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="89"/> + <source>Leave empty to use the default mode.</source> + <translation>Leer lassen, um den Standardmodus zu verwenden.</translation> + </message> </context> <context> <name>ExceptionLogger</name> @@ -37558,6 +37787,14 @@ </message> </context> <context> + <name>IgnoredDevicesDialog</name> + <message> + <location filename="../MicroPython/IgnoredDevicesDialog.ui" line="14"/> + <source>Ignored Serial Devices</source> + <translation>Ignorierte Serielle Geräte</translation> + </message> +</context> +<context> <name>ImageMarkupDialog</name> <message> <location filename="../QScintilla/MarkupProviders/ImageMarkupDialog.py" line="52"/> @@ -43350,27 +43587,27 @@ <context> <name>MicroPythonDevice</name> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="214"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="223"/> <source>Unsupported Device</source> <translation>Nicht unterstütztes Gerät</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="224"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="233"/> <source>REPL is not supported by this device.</source> <translation>REPL wird von diesem Gerät nicht unterstützt.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="243"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="252"/> <source>Plotter is not supported by this device.</source> <translation>Der Plotter wird von diesem Gerät nicht unterstützt.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="262"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="271"/> <source>Running scripts is not supported by this device.</source> <translation>Die Ausführung von Skripten wird von diesem Gerät nicht unterstützt.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="282"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="291"/> <source>File Manager is not supported by this device.</source> <translation>Der Dateimanager wird von diesem Gerät nicht unterstützt.</translation> </message> @@ -43928,7 +44165,7 @@ <translation>Drücken, um ein Chartfenster zur Darstellung der vom ausgewählten Gerät empfangenen Daten zu öffnen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="460"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="493"/> <source>Press to connect the selected device</source> <translation>Drücken, um eine Verbindung mit den ausgewählten Gerät herzustellen</translation> </message> @@ -43956,32 +44193,32 @@ <translation>Keine unterstützten Geräte gefunden.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="430"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="463"/> <source>Clear</source> <translation>Löschen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="432"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="465"/> <source>Copy</source> <translation>Kopieren</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="433"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="466"/> <source>Paste</source> <translation>Einfügen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="455"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="488"/> <source>Press to disconnect the current device</source> <translation>Drücken, um die Verbindung zum aktuelle Geräte zu trennen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>No device attached</source> <translation>Kein Gerät angeschlossen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -43994,212 +44231,212 @@ Drücke zum Abschluss den Resetknopf des Gerätes und warte ein paar Sekunden vor einem neuen Versuch.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source>Start REPL</source> <translation>REPL starten</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation><p>Die Eingabeaufforderung kann nicht gestartet werden.</p><p>Ursache: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source>Serial Device Connect</source> <translation>Serielle Verbindung</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation><p>Kann keine Verbindung zum Gerät an der seriellen Schnittstelle <b>{0}</b> herstellen.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source>Run Script</source> <translation>Skript ausführen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="921"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="954"/> <source>There is no editor open. Abort...</source> <translation>Es ist kein Editor offen. Abbruch...</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="929"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="962"/> <source>The current editor does not contain a script. Abort...</source> <translation>Der aktuelle Editortext enthält kein Skript. Abbruch...</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source><p>Cannot run script.</p><p>Reason: {0}</p></source> <translation><p>Das Skript kann nicht ausgeführt werden.</p><p>Ursache: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Open Python File</source> <translation>Pythondatei öffnen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Python3 Files (*.py);;All Files (*)</source> <translation>Python3 Dateien (*.py);;Alle Dateien (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source>Start Chart</source> <translation>Chart starten</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> <translation><p>Das Chart kann nicht gestartet werden.</p><p>Ursache: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>Unsaved Chart Data</source> <translation>Nich gesicherte Chart Daten</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>The chart contains unsaved data.</source> <translation>Das Chart enthält ungesicherte Daten.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source>Start File Manager</source> <translation>Dateimanager starten</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> <translation><p>Der Dateimanager kann nicht gestartet werden.</p><p>Ursache: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1136"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169"/> <source>Show Version</source> <translation>Version anzeigen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1139"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1172"/> <source>Show Implementation</source> <translation>Implementierung anzeigen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source>Synchronize Time</source> <translation>Zeit synchronisieren</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1147"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1180"/> <source>Show Device Time</source> <translation>Gerätezeit anzeigen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1150"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1183"/> <source>Show Local Time</source> <translation>Lokale Zeit anzeigen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1461"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1497"/> <source>Compile Python File</source> <translation>Python Datei übersetzen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1481"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1517"/> <source>Compile Current Editor</source> <translation>Aktuellen Editor übersetzen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1188"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224"/> <source><h3>Device Version Information</h3></source> <translation><h3>Versionsinformationen des Gerätes</h3></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1197"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1233"/> <source>No version information available.</source> <translation>Keine Versionsinformationen verfügbar.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1199"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1235"/> <source>Device Version Information</source> <translation>Versionsinformationen des Gerätes</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1258"/> <source>unknown</source> <translation>unbekannt</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source>Device Implementation Information</source> <translation>Informationen zur Implementierung</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}</b>.</p></source> <translation><h3>Informationen zur Implementierung</h3><p>Dieses Gerät enthält <b>{0} {1}</b>.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source><p>The time of the connected device was synchronized with the local time.</p></source> <translation><p>Die Zeit des angeschlossenen Gerätes wurde mit der lokalen Zeit synchronisiert.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1272"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308"/> <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation><h3>Datum und Zeit des Gerätes</h3><table><tr><td><b>Datum</b></td><td>{0}</td></tr><tr><td><b>Zeit</b></td><td>{1}</td></tr></table></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1280"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1316"/> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation><h3>Datum und Zeit des Gerätes</h3><p>{0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1294"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1330"/> <source>Device Date and Time</source> <translation>Datum und Zeit des Gerätes</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source>Local Date and Time</source> <translation>Lokales Datum und Zeit</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation><h3>Lokales Datum und Zeit</h3><table><tr><td><b>Datum</b></td><td>{0}</td></tr><tr><td><b>Zeit</b></td><td>{1}</td></tr></table></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source>Error handling device</source> <translation>Fehler bei Gerätekommunikation</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> <translation><p>Es trat ein Fehler bei der Kommunikation mit dem Gerät auf.</p><p>Methode: {0}</p><p>Nachricht: {1}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1413"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1449"/> <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> <translation>Der MicroPython Crosscompiler <b>mpy-cross</b> kann nicht gefunden werden. Stelle sicher, dass er im Suchpfad liegt oder konfiguriere ihn auf der MicroPython Konfigurationsseite.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1467"/> <source>Python Files (*.py);;All Files (*)</source> <translation>Python-Dateien (*.py);;Alle Dateien (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1441"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1477"/> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation>Die Python Datei <b>{0}</b> existiert nicht. Abbruch...</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1451"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1487"/> <source>'mpy-cross' Output</source> <translation>'mpy-cross' Ausgabe</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1474"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1510"/> <source>The current editor does not contain a Python file. Aborting...</source> <translation>Der aktuelle Editortext enthält keine Pythondatei. Abbruch...</translation> </message> @@ -44214,50 +44451,70 @@ <translation>Drücken, um einen Dateimanager zum ausgewählten Gerät zu öffnen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1018"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051"/> <source>µPy Chart</source> <translation>µPy Chart</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1098"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1131"/> <source>µPy Files</source> <translation>µPy Dateien</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1174"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1207"/> <source>Show Documentation</source> <translation>Dokumentation anzeigen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1178"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1214"/> <source>Configure</source> <translation>Einstellungen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1153"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186"/> <source>Show Time</source> <translation>Zeit anzeigen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1170"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1203"/> <source>Download Firmware</source> <translation>Firmware herunterladen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source>Date and Time</source> <translation>Datum und Zeit</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1333"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1369"/> <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> <translation><table><tr><th></th><th>Lokales Datum und Zeit</th><th>Datum und Zeit des Gerätes</th></tr><tr><td><b>Datum</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Zeit</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> <translation><table><tr><th>Lokales Datum und Zeit</th><th>Datum und Zeit des Gerätes</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></translation> </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>Unknown MicroPython Device</source> + <translation>Unbekanntes MicroPython Gerät</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:eric-bugs@eric-ide.python-projects.org"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> + <translation><p>Diese ubekannten seriellen Geräte wurden erkannt.</p><ul><li>{0}</li></ul><p>Falls es sich um ein MicroPython Board handelt, melden sie es bitte zusammen mit dem Boardnamen und einer Kurzbeschreibung an <a href="mailto:eric-bugs@eric-ide.python-projects.org"> die eric Fehlermitteilungsemailadresse</a>.</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>{0} ({1:04x}/{2:04x})</source> + <translation>{0} ({1:04x}/{2:04x})</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1211"/> + <source>Ignored Serial Devices</source> + <translation>Ignorierte Serielle Geräte</translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -45060,469 +45317,469 @@ <context> <name>MiscellaneousChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="492"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> <source>coding magic comment not found</source> <translation>Kodierungskommentar nicht gefunden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> - <source>unknown encoding ({0}) found in coding magic comment</source> - <translation>Unzulässige Kodierung ({0}) im Kodierungskommentar gefunden</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="498"/> - <source>copyright notice not present</source> - <translation>Copyrightvermerk nicht gefunden</translation> + <source>unknown encoding ({0}) found in coding magic comment</source> + <translation>Unzulässige Kodierung ({0}) im Kodierungskommentar gefunden</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="501"/> + <source>copyright notice not present</source> + <translation>Copyrightvermerk nicht gefunden</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> <source>copyright notice contains invalid author</source> <translation>Copyrightvermerk enthält ungültigen Autor</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="702"/> - <source>found {0} formatter</source> - <translation>{0} Format gefunden</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> - <source>format string does contain unindexed parameters</source> - <translation>Formatstring enthält nicht indizierte Parameter</translation> + <source>found {0} formatter</source> + <translation>{0} Format gefunden</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> - <source>docstring does contain unindexed parameters</source> - <translation>Dokumentationsstring enthält nicht indizierte Parameter</translation> + <source>format string does contain unindexed parameters</source> + <translation>Formatstring enthält nicht indizierte Parameter</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> - <source>other string does contain unindexed parameters</source> - <translation>Anderer String enthält nicht indizierte Parameter</translation> + <source>docstring does contain unindexed parameters</source> + <translation>Dokumentationsstring enthält nicht indizierte Parameter</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> - <source>format call uses too large index ({0})</source> - <translation>Format Aufruf enthält zu großen Index ({0})</translation> + <source>other string does contain unindexed parameters</source> + <translation>Anderer String enthält nicht indizierte Parameter</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> - <source>format call uses missing keyword ({0})</source> - <translation>Format Aufruf verwendet fehlendes Schlüsselwort ({0})</translation> + <source>format call uses too large index ({0})</source> + <translation>Format Aufruf enthält zu großen Index ({0})</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> - <source>format call uses keyword arguments but no named entries</source> - <translation>Format Aufruf verwendet Schlüsselwort Argumente, enthält aber keine benannten Einträge</translation> + <source>format call uses missing keyword ({0})</source> + <translation>Format Aufruf verwendet fehlendes Schlüsselwort ({0})</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> - <source>format call uses variable arguments but no numbered entries</source> - <translation>Format Aufruf verwendet variable argumente, enthält aber keine nummerierten Einträge</translation> + <source>format call uses keyword arguments but no named entries</source> + <translation>Format Aufruf verwendet Schlüsselwort Argumente, enthält aber keine benannten Einträge</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> - <source>format call uses implicit and explicit indexes together</source> - <translation>Format Aufruf verwendet sowohl implizite als auch explizite Indizes</translation> + <source>format call uses variable arguments but no numbered entries</source> + <translation>Format Aufruf verwendet variable argumente, enthält aber keine nummerierten Einträge</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> - <source>format call provides unused index ({0})</source> - <translation>Format Aufruf verwendet ungenutzten Index ({0})</translation> + <source>format call uses implicit and explicit indexes together</source> + <translation>Format Aufruf verwendet sowohl implizite als auch explizite Indizes</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> + <source>format call provides unused index ({0})</source> + <translation>Format Aufruf verwendet ungenutzten Index ({0})</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> <source>format call provides unused keyword ({0})</source> <translation>Format Aufruf verwendet ungenutztes Schlüsselwort ({0})</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="751"/> - <source>expected these __future__ imports: {0}; but only got: {1}</source> - <translation>erwartete __future__ Imports: {0}; aber nur {1} gefunden</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> + <source>expected these __future__ imports: {0}; but only got: {1}</source> + <translation>erwartete __future__ Imports: {0}; aber nur {1} gefunden</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> <source>expected these __future__ imports: {0}; but got none</source> <translation>erwartete __future__ Imports: {0}; jedoch keine gefunden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="761"/> - <source>print statement found</source> - <translation>print Statement gefunden</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> + <source>print statement found</source> + <translation>print Statement gefunden</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="767"/> <source>one element tuple found</source> <translation>Tuple mit einem Element gefunden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="800"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="803"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="507"/> <source>"{0}" is a Python builtin and is being shadowed; consider renaming the variable</source> <translation>"{0}" ist ein Python Builtin und wird verdeckt; die Variable sollte umbenannt werden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="508"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="511"/> <source>"{0}" is used as an argument and thus shadows a Python builtin; consider renaming the argument</source> <translation>"{0}" wird als Parameter verwendet und verdeckt ein Python Builtin; der Parameter sollte umbenannt werden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="512"/> - <source>unnecessary generator - rewrite as a list comprehension</source> - <translation>unnötiger Generator - in List Comprehension umwandeln</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="515"/> - <source>unnecessary generator - rewrite as a set comprehension</source> - <translation>unnötiger Generator - in Set Comprehension umwandeln</translation> + <source>unnecessary generator - rewrite as a list comprehension</source> + <translation>unnötiger Generator - in List Comprehension umwandeln</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="518"/> - <source>unnecessary generator - rewrite as a dict comprehension</source> - <translation>unnötiger Generator - in Dict Comprehension umwandeln</translation> + <source>unnecessary generator - rewrite as a set comprehension</source> + <translation>unnötiger Generator - in Set Comprehension umwandeln</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="521"/> - <source>unnecessary list comprehension - rewrite as a set comprehension</source> - <translation>unnötige List Comprehension - in eine Set Comprehension umwandeln</translation> + <source>unnecessary generator - rewrite as a dict comprehension</source> + <translation>unnötiger Generator - in Dict Comprehension umwandeln</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="524"/> + <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <translation>unnötige List Comprehension - in eine Set Comprehension umwandeln</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> <source>unnecessary list comprehension - rewrite as a dict comprehension</source> <translation>unnötige List Comprehension - in eine Dict Comprehension umwandeln</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> <source>unnecessary list comprehension - "{0}" can take a generator</source> <translation>unnötige List Comprehension - "{0}" kann einen Generator verwenden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="770"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> <source>mutable default argument of type {0}</source> <translation>veränderbares Standardargument des Typs {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> <source>sort keys - '{0}' should be before '{1}'</source> <translation>Schlüssel sortieren - '{0}' sollte vor '{1}' kommen</translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> + <source>logging statement uses '%'</source> + <translation>Loggingbefehl verwendet '%'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> + <source>logging statement uses f-string</source> + <translation>Loggingbefehl verwendet 'f-string'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="750"/> + <source>logging statement uses 'warn' instead of 'warning'</source> + <translation>Loggingbefehl verwendet 'warn' anstelle 'warning'</translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> - <source>logging statement uses '%'</source> - <translation>Loggingbefehl verwendet '%'</translation> + <source>logging statement uses string.format()</source> + <translation>Loggingbefehl verwendet 'string.format()'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> - <source>logging statement uses f-string</source> - <translation>Loggingbefehl verwendet 'f-string'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> - <source>logging statement uses 'warn' instead of 'warning'</source> - <translation>Loggingbefehl verwendet 'warn' anstelle 'warning'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> - <source>logging statement uses string.format()</source> - <translation>Loggingbefehl verwendet 'string.format()'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> <source>logging statement uses '+'</source> <translation>Loggingbefehl verwendet '+'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="760"/> <source>gettext import with alias _ found: {0}</source> <translation>gettext Import mit Alias _ entdeckt: {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="648"/> - <source>Python does not support the unary prefix increment</source> - <translation>Python unterstützt kein 'Unary Prefix Increment'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> - <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> - <translation>'sys.maxint' ist in Python 3 nicht definiert - verwende 'sys.maxsize'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> - <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> - <translation>'BaseException.message' wurde mit Python 2.6 als überholt markiert und in Python 3 entfernt - verwende 'str(e)'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> - <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> - <translation>Zuweisungen an 'os.environ' löschen nicht die Umgebungsvariablen - verwende 'os.environ.clear()'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> - <source>Python 3 does not include '.iter*' methods on dictionaries</source> - <translation>Python 3 enthält keine '.iter*' Methoden für Dictionaries</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> - <source>Python 3 does not include '.view*' methods on dictionaries</source> - <translation>Python 3 enthält keine '.view*' Methoden für Dictionaries</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> - <source>'.next()' does not exist in Python 3</source> - <translation>'.next()' existiert in Python 3 nicht</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> - <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> - <translation>'__metaclass__' tut nichts in Python 3 - verwende 'class MyClass(BaseClass, metaclass=...)'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> - <source>mutable default argument of function call '{0}'</source> - <translation>Funktionsaufruf '{0}' als veränderbares Standardargument</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> - <source>using .strip() with multi-character strings is misleading</source> - <translation>Verwendung von .strip() mit Zeichenketten mit mehreren Zeichen ist missverständlich</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> - <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> - <translation>Verwendung von 'hasattr(x, "__call__")' zum Test, ob 'x' aufrufbar ist, ist unzuverlässig</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> - <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> - <translation>Schleifenvariable {0} wird im Schleifenkörper nicht verwendet - beginne den Namen mit einem Unterstrich</translation> + <source>Python does not support the unary prefix increment</source> + <translation>Python unterstützt kein 'Unary Prefix Increment'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> + <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> + <translation>'sys.maxint' ist in Python 3 nicht definiert - verwende 'sys.maxsize'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="663"/> + <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> + <translation>'BaseException.message' wurde mit Python 2.6 als überholt markiert und in Python 3 entfernt - verwende 'str(e)'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> + <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> + <translation>Zuweisungen an 'os.environ' löschen nicht die Umgebungsvariablen - verwende 'os.environ.clear()'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> + <source>Python 3 does not include '.iter*' methods on dictionaries</source> + <translation>Python 3 enthält keine '.iter*' Methoden für Dictionaries</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> + <source>Python 3 does not include '.view*' methods on dictionaries</source> + <translation>Python 3 enthält keine '.view*' Methoden für Dictionaries</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> + <source>'.next()' does not exist in Python 3</source> + <translation>'.next()' existiert in Python 3 nicht</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="700"/> + <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> + <translation>'__metaclass__' tut nichts in Python 3 - verwende 'class MyClass(BaseClass, metaclass=...)'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="776"/> - <source>None should not be added at any return if function has no return value except None</source> - <translation>None sollte nicht zu einem return hinzugefügt werden, wenn die Funktion keinen Rückgabewert außer None besitzt</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="780"/> - <source>an explicit value at every return should be added if function has a return value except None</source> - <translation>ein expliziter Wert sollte jedem return hinzugefügt werden, wenn eine Funktion einen Rückgabewert außer None besitzt</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="784"/> - <source>an explicit return at the end of the function should be added if it has a return value except None</source> - <translation>ein expliziter Rückgabewert sollte am Ende einer Funktion hinzugefügt werden, wenn sie einen Rückgabewert außer None besitzt</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="788"/> - <source>a value should not be assigned to a variable if it will be used as a return value only</source> - <translation>einer Variable sollte kein Wert zugewiesen werden, wenn sie nur als Rückgabewert verwendet wird</translation> + <source>mutable default argument of function call '{0}'</source> + <translation>Funktionsaufruf '{0}' als veränderbares Standardargument</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> + <source>using .strip() with multi-character strings is misleading</source> + <translation>Verwendung von .strip() mit Zeichenketten mit mehreren Zeichen ist missverständlich</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="681"/> + <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> + <translation>Verwendung von 'hasattr(x, "__call__")' zum Test, ob 'x' aufrufbar ist, ist unzuverlässig</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="671"/> + <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <translation>Schleifenvariable {0} wird im Schleifenkörper nicht verwendet - beginne den Namen mit einem Unterstrich</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <source>None should not be added at any return if function has no return value except None</source> + <translation>None sollte nicht zu einem return hinzugefügt werden, wenn die Funktion keinen Rückgabewert außer None besitzt</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="783"/> + <source>an explicit value at every return should be added if function has a return value except None</source> + <translation>ein expliziter Wert sollte jedem return hinzugefügt werden, wenn eine Funktion einen Rückgabewert außer None besitzt</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="787"/> + <source>an explicit return at the end of the function should be added if it has a return value except None</source> + <translation>ein expliziter Rückgabewert sollte am Ende einer Funktion hinzugefügt werden, wenn sie einen Rückgabewert außer None besitzt</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="791"/> + <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <translation>einer Variable sollte kein Wert zugewiesen werden, wenn sie nur als Rückgabewert verwendet wird</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> <source>do not call assert False since python -O removes these calls</source> <translation>verwende nicht 'assert False', da python -O dies entfernt</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="672"/> - <source>unncessary f-string</source> - <translation>unnötige f-Zeichenkette</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="675"/> + <source>unncessary f-string</source> + <translation>unnötige f-Zeichenkette</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> <source>cannot use 'self.__class__' as first argument of 'super()' call</source> <translation>als erstes Argument von 'super()' kann nicht 'self.__class__' verwendet werden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> - <source>do not call getattr with a constant attribute value</source> - <translation>verwende getattr nicht mit einem konstanten Attribut</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> + <source>do not call getattr with a constant attribute value</source> + <translation>verwende getattr nicht mit einem konstanten Attribut</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>do not call setattr with a constant attribute value</source> <translation>verwende setattr nicht mit einem konstanten Attribut</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="796"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="799"/> <source>commented code lines should be removed</source> <translation>auskommentierte Codezeilen sollten entfernt werden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="792"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="795"/> <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source> <translation>ziehe eine implizite Zeilenfortsetzung innerhalb von Klammern gegenüber einem Backslash (\) vor</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="559"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="562"/> <source>use of 'datetime.datetime()' without 'tzinfo' argument should be avoided</source> <translation>Verwendung von 'datetime.datetime()' ohne 'tzinfo' Argument sollte vermieden werden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="566"/> <source>use of 'datetime.datetime.today()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation>Verwendung von 'datetime.datetime.today()' sollte vermieden werden Verwende 'datetime.datetime.now(tz=)'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> <source>use of 'datetime.datetime.utcnow()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation>Verwendung von 'datetime.datetime.utcnow()' sollte vermieden werden Verwende 'datetime.datetime.now(tz=)'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="571"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="574"/> <source>use of 'datetime.datetime.utcfromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(, tz=)' instead.</source> <translation>Verwendung von 'datetime.datetime.utcfromtimestamp()' sollte vermieden werden Verwende 'datetime.datetime.fromtimestamp(, tz=)'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>use of 'datetime.datetime.now()' without 'tz' argument should be avoided</source> <translation>Verwendung von 'datetime.datetime.now()' ohne 'tz' Argument sollte vermieden werden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> <source>use of 'datetime.datetime.fromtimestamp()' without 'tz' argument should be avoided</source> <translation>Verwendung von 'datetime.datetime.fromtimestamp()' ohne 'tz' Argument sollte vermieden werden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="583"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="586"/> <source>use of 'datetime.datetime.strptime()' should be followed by '.replace(tzinfo=)'</source> <translation>Verwendung von datetime.datetime.strptime()' sollte mit '.replace(tzinfo=)' erweitert werden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> <source>use of 'datetime.date()' should be avoided. Use 'datetime.datetime(, tzinfo=).date()' instead.</source> <translation>Verwendung von 'datetime.date()' sollte vermieden werden Verwende 'datetime.datetime(, tzinfo=).date()'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> <source>use of 'datetime.date.today()' should be avoided. Use 'datetime.datetime.now(tz=).date()' instead.</source> <translation>Verwendung von 'datetime.date.today()' sollte vermieden werden Verwende 'datetime.datetime.now(tz=).date()'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="598"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="601"/> <source>use of 'datetime.date.fromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> <translation>Verwendung von 'datetime.date.fromtimestamp()' sollte vermieden werden Verwende 'datetime.datetime.fromtimestamp(tz=).date()'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> <translation>Verwendung von 'datetime.time()' ohne 'tzinfo' Argument sollte vermieden werden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> <translation>Verwendung von 'datetime.datetime.fromordinal()' sollte vermieden werden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> - <source>use of 'datetime.date.fromordinal()' should be avoided</source> - <translation>Verwendung von 'datetime.date.fromordinal()' sollte vermieden werden</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> + <source>use of 'datetime.date.fromordinal()' should be avoided</source> + <translation>Verwendung von 'datetime.date.fromordinal()' sollte vermieden werden</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> <source>use of 'datetime.date.fromisoformat()' should be avoided</source> <translation>Verwendung von 'datetime.date.fromisoformat()' sollte vermieden werden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> <source>unnecessary {0} call - rewrite as a literal</source> <translation>unnötiger {0} Aufruf - als Literal umschreiben</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> - <source>unnecessary {0} literal - rewrite as a {1} literal</source> - <translation>unnötiges {0} literal - als ein {1} Literal umschreiben</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="536"/> - <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> - <translation>unnötige {0} an tuple() übergeben - als {1} Literal umschreiben</translation> + <source>unnecessary {0} literal - rewrite as a {1} literal</source> + <translation>unnötiges {0} literal - als ein {1} Literal umschreiben</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="539"/> - <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> - <translation>unnötige {0} an list() übergeben - als {1} Literal umschreiben</translation> + <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> + <translation>unnötige {0} an tuple() übergeben - als {1} Literal umschreiben</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="542"/> - <source>unnecessary list call - remove the outer call to list()</source> - <translation>unnötiger list() Aufruf - entferne den äußersten list() Aufruf</translation> + <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> + <translation>unnötige {0} an list() übergeben - als {1} Literal umschreiben</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="545"/> - <source>unnecessary list comprehension - "in" can take a generator</source> - <translation>unnötige List Comprehension - "in" kann einen Generator verwenden</translation> + <source>unnecessary list call - remove the outer call to list()</source> + <translation>unnötiger list() Aufruf - entferne den äußersten list() Aufruf</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="548"/> - <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> - <translation>unnötige {0} an tuple() übergeben - entferne den äußersten {1}() Aufruf</translation> + <source>unnecessary list comprehension - "in" can take a generator</source> + <translation>unnötige List Comprehension - "in" kann einen Generator verwenden</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="551"/> + <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <translation>unnötige {0} an tuple() übergeben - entferne den äußersten {1}() Aufruf</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>unnecessary {0} passed to list() - remove the outer call to {1}()</source> <translation>unnötige {0} an list() übergeben - entferne den äußersten {1}() Aufruf</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="613"/> - <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation>'sys.version[:3]' referenziert (Python 3.10), verwende 'sys.version_info'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="616"/> - <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation>'sys.version[2]' referenziert (Python 3.10), verwende 'sys.version_info'</translation> + <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation>'sys.version[:3]' referenziert (Python 3.10), verwende 'sys.version_info'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="619"/> + <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation>'sys.version[2]' referenziert (Python 3.10), verwende 'sys.version_info'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="622"/> <source>'sys.version' compared to string (Python 3.10), use 'sys.version_info'</source> <translation>'sys.version' verglichen mit Zeichenkette (Python 3.10), verwende 'sys.version_info'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> - <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> - <translation>'sys.version_info[0] == 3' referenziert (Python 4), verwende '>='</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> - <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> - <translation>'six.PY3' referenziert (Python 4), verwende 'not six.PY2'</translation> + <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> + <translation>'sys.version_info[0] == 3' referenziert (Python 4), verwende '>='</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="629"/> + <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <translation>'six.PY3' referenziert (Python 4), verwende 'not six.PY2'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="632"/> <source>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation>'sys.version_info[1]' verglichen mit einem Integer (Python 4), vergleiche 'sys.version_info' mit einem Tuple</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="633"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> <source>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation>'sys.version_info.minor' verglichen mit einem Integer (Python 4), vergleiche 'sys.version_info' mit einem Tuple</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="637"/> - <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> - <translation>'sys.version[0]' referenziert (Python 10), verwende 'sys.version_info'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="640"/> + <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> + <translation>'sys.version[0]' referenziert (Python 10), verwende 'sys.version_info'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="643"/> <source>'sys.version' compared to string (Python 10), use 'sys.version_info'</source> <translation>'sys.version' verglichen mit Zeichenkette (Python 10), verwende 'sys.version_info'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>'sys.version[:1]' referenced (Python 10), use 'sys.version_info'</source> <translation>'sys.version[:1]' referenziert (Python 10), verwende 'sys.version_info'</translation> </message> @@ -45978,72 +46235,72 @@ <context> <name>NamingStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> <source>class names should use CapWords convention</source> <translation>Klassennamen sollten die 'CapWords' Konvention verwenden</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> - <source>function name should be lowercase</source> - <translation>Funktionsname sollte klein geschrieben sein</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="438"/> - <source>argument name should be lowercase</source> - <translation>Argumentname sollte klein geschrieben sein</translation> + <source>function name should be lowercase</source> + <translation>Funktionsname sollte klein geschrieben sein</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> - <source>first argument of a class method should be named 'cls'</source> - <translation>Das erste Argument einer Klassenmethode sollte 'cls' sein</translation> + <source>argument name should be lowercase</source> + <translation>Argumentname sollte klein geschrieben sein</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="444"/> - <source>first argument of a method should be named 'self'</source> - <translation>Das erste Argument einer Methode sollte 'self' sein</translation> + <source>first argument of a class method should be named 'cls'</source> + <translation>Das erste Argument einer Klassenmethode sollte 'cls' sein</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> + <source>first argument of a method should be named 'self'</source> + <translation>Das erste Argument einer Methode sollte 'self' sein</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>first argument of a static method should not be named 'self' or 'cls</source> <translation>Das erste Argument einer statischen Methode sollte nicht 'self' oder 'cls' sein</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="451"/> - <source>module names should be lowercase</source> - <translation>Modulnamen sollten klein geschrieben sein</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="454"/> - <source>package names should be lowercase</source> - <translation>Paketnamen sollten klein geschrieben sein</translation> + <source>module names should be lowercase</source> + <translation>Modulnamen sollten klein geschrieben sein</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="457"/> - <source>constant imported as non constant</source> - <translation>Konstante als Nicht-Konstante importiert</translation> + <source>package names should be lowercase</source> + <translation>Paketnamen sollten klein geschrieben sein</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="460"/> - <source>lowercase imported as non lowercase</source> - <translation>klein geschriebener Bezeichner als nicht klein geschriebener importiert</translation> + <source>constant imported as non constant</source> + <translation>Konstante als Nicht-Konstante importiert</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="463"/> - <source>camelcase imported as lowercase</source> - <translation>groß/klein geschriebener Bezeichner als klein geschriebener importiert</translation> + <source>lowercase imported as non lowercase</source> + <translation>klein geschriebener Bezeichner als nicht klein geschriebener importiert</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="466"/> - <source>camelcase imported as constant</source> - <translation>groß/klein geschriebener Bezeichner als Konstante importiert</translation> + <source>camelcase imported as lowercase</source> + <translation>groß/klein geschriebener Bezeichner als klein geschriebener importiert</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="469"/> - <source>variable in function should be lowercase</source> - <translation>Variablen in Funktionen sollte klein geschrieben sein</translation> + <source>camelcase imported as constant</source> + <translation>groß/klein geschriebener Bezeichner als Konstante importiert</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="472"/> + <source>variable in function should be lowercase</source> + <translation>Variablen in Funktionen sollte klein geschrieben sein</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="475"/> <source>names 'l', 'O' and 'I' should be avoided</source> <translation>Namen 'l', 'O' und 'I' sollten vermieden werden</translation> </message> @@ -46084,50 +46341,50 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="201"/> <source>SSL Certificate Error</source> <translation>SSL Zertifikatsfehler</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> - <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> - <translation><b>{0}</b><p>Die Seite, auf die zugegriffen werden soll, besitzt Fehler in ihrem SSL Zertifikat.</p><ul><li>{1}</li></ul><p>Soll eine Ausnahme erstellt werden?</p></translation> - </message> - <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="205"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="212"/> <source>&Permanent accept</source> <translation>&Immer akzeptieren</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="207"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="214"/> <source>&Temporary accept</source> <translation>&Vorläufig akzeptieren</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="209"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="216"/> <source>&Reject</source> <translation>&Ablehnen</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="243"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="284"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation><b>Gib Nutzernamen und Kennwort für „{0}“ und Realm „{1}“ ein</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="247"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="288"/> <source><b>Enter username and password for '{0}'</b></source> <translation><b>Gib Nutzernamen und Kennwort für „{0}“ ein</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="295"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="336"/> <source>Authentication required</source> <translation>Authentisierung erforderlich</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="296"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="337"/> <source>Authentication is required to access:</source> <translation>Eine Authentisierung ist zum Zugriff auf diese URL erforderlich:</translation> </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="202"/> + <source><b>{0}</b><p>The host <b>{1}</b> you are trying to access has errors in the SSL certificate.</p><ul><li>{2}</li></ul><p>Would you like to make an exception?</p></source> + <translation><b>{0}</b><p>Der Server <b>{1}</b>, auf den zugegriffen werden soll, besitzt Fehler im SSL Zertifikat.</p><ul><li>{1}</li></ul><p>Soll eine Ausnahme erstellt werden?</p></translation> + </message> </context> <context> <name>NetworkPage</name> @@ -47444,6 +47701,41 @@ <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source> <translation>Sie versuchen ein Upgrade von PyQt Paketen. Dies könnte für die laufende Python Instanz ({0}) fehlschlagen. Soll fortgefahren werden?</translation> </message> + <message> + <location filename="../PipInterface/Pip.py" line="679"/> + <source>Cache Info</source> + <translation>Zwischenspeicherinformationen</translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="704"/> + <source>List Cached Files</source> + <translation>Liste zwischengespeicherte Dateien</translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="694"/> + <source>Enter a file pattern (empty for all):</source> + <translation>Gib ein Dateinamenmuster ein (leer für alle):</translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="728"/> + <source>Remove Cached Files</source> + <translation>Zwischengespeicherte Dateien Löschen</translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="720"/> + <source>Enter a file pattern:</source> + <translation>Gib ein Dateinamenmuster ein:</translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="751"/> + <source>Purge Cache</source> + <translation>Zwischenspeicher Leeren</translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="744"/> + <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source> + <translation>Soll der pip Zwischenspeicher wirklich geleert werden? Alle Dateien müssen neu heruntergeladen werden.</translation> + </message> </context> <context> <name>PipDialog</name> @@ -48197,7 +48489,7 @@ <translation>Pip reparieren</translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/> <source>Install Packages</source> <translation>Pakete installieren</translation> </message> @@ -48222,29 +48514,49 @@ <translation>Anforderungen erzeugen...</translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="942"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="955"/> <source>Edit User Configuration...</source> <translation>Nutzerkonfiguration bearbeiten...</translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="945"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="958"/> <source>Edit Environment Configuration...</source> <translation>Umgebungskonfiguration bearbeiten...</translation> </message> <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="963"/> + <source>Configure...</source> + <translation>Einstellungen...</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>Edit Configuration</source> + <translation>Konfiguration bearbeiten</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>No valid configuration path determined. Aborting</source> + <translation>Es konnte kein gültiger Konfigurationspfad ermittelt werden. Abbruch</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="941"/> + <source>Show Cache Info...</source> + <translation>Zwischenspeicherinfo...</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="944"/> + <source>Show Cached Files...</source> + <translation>Zwischengespeicherte Dateien...</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="947"/> + <source>Remove Cached Files...</source> + <translation>Zwischengespeicherte Dateien löschen...</translation> + </message> + <message> <location filename="../PipInterface/PipPackagesWidget.py" line="950"/> - <source>Configure...</source> - <translation>Einstellungen...</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>Edit Configuration</source> - <translation>Konfiguration bearbeiten</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>No valid configuration path determined. Aborting</source> - <translation>Es konnte kein gültiger Konfigurationspfad ermittelt werden. Abbruch</translation> + <source>Purge Cache...</source> + <translation>Zwischenspeicher leeren...</translation> </message> </context> <context> @@ -49510,17 +49822,17 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1640"/> + <location filename="../Preferences/__init__.py" line="1645"/> <source>Export Preferences</source> <translation>Einstellungen exportieren</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Import Preferences</source> <translation>Einstellungen importieren</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Properties File (*.ini);;All Files (*)</source> <translation>Properties-Dateien (*.ini);;Alle Dateien (*)</translation> </message> @@ -58631,17 +58943,17 @@ <translation><b>Qt-Einstellungen</b></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="90"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="85"/> <source>Qt Tools</source> <translation>Qt-Werkzeuge</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="169"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="164"/> <source>This gives an example of the complete tool name</source> <translation>Dies gibt ein Beispiel für den vollständigen Werkzeugnamen</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="172"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="167"/> <source>designer</source> <translation>designer</translation> </message> @@ -58651,7 +58963,7 @@ <translation><font color="#FF0000"><b>Hinweis:</b> Diese Einstellung wird erst beim nächsten Programmstart aktiv.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="123"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="118"/> <source>The tool executable is composed of the prefix, the tool name and the postfix. For win, the extension is added automatically.</source> <translation>Der Werkzeugname wird aus dem Präfix, dem Werkzeugnamen und dem Anhängsel gebildet. Bei Windows wird die Erweiterung automatisch angehängt.</translation> </message> @@ -58666,67 +58978,52 @@ <translation>Gib den Pfad des Qt-Übersetzungenverzeichnisses ein.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> - <source><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></source> - <translation><b>Hinweis:</b> Lassen Sie diesen Eintrag leer, um eine Umgebungsvariable oder den in die Qt Bibliothek eincompilierten Pfad zu verwenden. Unterstützte Umgebungsvariablen sind -<ul> -<li>QT4TRANSLATIONSDIR für Qt4</li> -<li>QT5TRANSLATIONSDIR für Qt5</li> -<li>QTTRANSLATIONSDIR für eine beliebige Qt Variante</li> -</ul></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="135"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="130"/> <source>Qt-Prefix:</source> <translation>Qt-Präfix:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="137"/> <source>Enter the prefix for the Qt tools name</source> <translation>Gib das Präfix für den Qt-Werkzeugnamen ein</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="144"/> <source>Qt-Postfix:</source> <translation>Qt-Anhängsel:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="151"/> <source>Enter the postfix for the Qt tools name</source> <translation>Gib das Anhängsel für den Qt-Werkzeugnamen ein</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="221"/> <source>Indent Width:</source> <translation>Einrückungstiefe:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="233"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="228"/> <source>Select the indent width (default: 4)</source> <translation>Wähle die Einrücktiefe (Standard: 4)</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="327"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="322"/> <source>Generate imports relative to '.'</source> <translation>Erzeuge Imports relativ zu '.'</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="296"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="291"/> <source>Tools Directory:</source> <translation>Verzeichnis:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="114"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="109"/> <source>Enter the path of the Qt tools directory, if they are not found.</source> <translation>Gib den Pfad des Verzeichnisses mit den Qt-Werkzeugen ein, falls sie nicht automatisch gefunden werden.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="211"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="206"/> <source>Enter the path of the PyQt tools directory, if they are not found.</source> <translation>Gib den Pfad des Verzeichnisses mit den PyQt-Werkzeugen ein, falls sie nicht automatisch gefunden werden.</translation> </message> @@ -58736,7 +59033,7 @@ <translation>Beispiel: {0}designer{1}</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="312"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="307"/> <source>Enter the path of the PySide2 tools directory, if they are not found.</source> <translation>Gib den Pfad des Verzeichnisses mit den PySide2-Werkzeugen ein, falls sie nicht automatisch gefunden werden.</translation> </message> @@ -58746,35 +59043,40 @@ <translation>Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="187"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="182"/> <source>PyQt</source> <translation>PyQt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="220"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="215"/> <source>pyuic Options</source> <translation>pyuic Optionen</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="272"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="267"/> <source>Select to generate extra code to test and display the form</source> <translation>Auswählen, um zusätzlichen Code zum Testen und Anzeigen des Formulars zu erzeugen</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="275"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="270"/> <source>Generate Extra Test Code</source> <translation>Zusätzlichen Testcode erzeugen</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="288"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="283"/> <source>PySide2</source> <translation>PySide2</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="316"/> <source>pyside2-uic Options</source> <translation>pyside2-uic Optionen</translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> + <source><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</source> + <translation><b>Hinweis:</b> Lassen Sie diesen Eintrag leer, um den in die Qt Bibliothek eincompilierten Pfad zu verwenden.</translation> + </message> </context> <context> <name>Queues</name> @@ -60595,6 +60897,334 @@ </message> </context> <context> + <name>Security</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="16"/> + <source>Use of 'assert' detected. The enclosed code will be removed when compiling to optimised byte code.</source> + <translation>Verwendung von 'assert' entdeckt. Diese Anweisung wird bei der Übersetzung zu optimiertem Bytecode entfernt.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="22"/> + <source>Use of 'exec' detected.</source> + <translation>Verwendung von 'exec' entdeckt.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="27"/> + <source>'chmod' setting a permissive mask {0} on file ({1}).</source> + <translation>'chmod' setzt eine großzügige Berechtigung {0} für die Datei ({1}).</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="32"/> + <source>Possible binding to all interfaces.</source> + <translation>Mögliche Bindung an alle Schnittstellen.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="43"/> + <source>Possible hardcoded password: '{0}'</source> + <translation>Mögliches einprogrammiertes Kennwort: '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="48"/> + <source>Probable insecure usage of temp file/directory.</source> + <translation>Mögliche unsichere Verwendung einer temporären Datei oder Verzeichnisses.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="53"/> + <source>Try, Except, Pass detected.</source> + <translation>Try, Except, Pass entdeckt.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="56"/> + <source>Try, Except, Continue detected.</source> + <translation>Try, Except, Continue entdeckt.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="61"/> + <source>A Flask app appears to be run with debug=True, which exposes the Werkzeug debugger and allows the execution of arbitrary code.</source> + <translation>Eine Flask Anwendung scheint mit debug=True ausgeführt zu werden. Dies öffnet den Werkzeug Debugger und erlaubt die Ausführung beliebigen Codes.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="67"/> + <source>Pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue.</source> + <translation>Pickle und Module, die es einbinden, können unsicher sein, wenn es verwendet wird, um nicht vertrauenswürdige Daten zu deserialisieren; mögliches Sicherheitsproblemk.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="71"/> + <source>Deserialization with the marshal module is possibly dangerous.</source> + <translation>Deserialisierung mit dem marshal Modul ist möglicherweise unsicher.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="74"/> + <source>Use of insecure MD2, MD4, MD5, or SHA1 hash function.</source> + <translation>Verwendung einer unsicheren MD2, MD4, MD5 oder SHA1 Hashfunktion.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="77"/> + <source>Use of insecure cipher '{0}'. Replace with a known secure cipher such as AES.</source> + <translation>Verwendung der unsicheren Verschlüsselung '{0}'. Ersetze sie durch eine bekannt sichere Verschlüsselung wie z.B. AES.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="81"/> + <source>Use of insecure cipher mode '{0}'.</source> + <translation>Verwendung des unsicheren Verschlüsselungsmodus '{0}'.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="84"/> + <source>Use of insecure and deprecated function (mktemp).</source> + <translation>Verwendung einer unsicher und abgekündigten Funktion (mktemp).</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="87"/> + <source>Use of possibly insecure function - consider using safer ast.literal_eval.</source> + <translation>Verwendung einer möglicherweise unsicheren Funktion - verwende besser ast.literal_eval.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="91"/> + <source>Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.</source> + <translation>Verwendung von mark_safe() kann eine Cross Site Scripting Schwäche eröffnen und sollte vermieden werden.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="95"/> + <source>Use of HTTPSConnection on older versions of Python prior to 2.7.9 and 3.4.3 do not provide security, see https://wiki.openstack.org/wiki/OSSN/OSSN-0033</source> + <translation>Verwendung von HTTPSConnection unter alten Python versionen vor 2.7.9 und 3.4.3 ist nicht sicher; siehe https://wiki.openstack.org/wiki/OSSN/OSSN-0033</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="100"/> + <source>Audit url open for permitted schemes. Allowing use of file:/ or custom schemes is often unexpected.</source> + <translation>Überprüfe 'url open' auf zugelassene Schemata. Das Zulassen von file:/ oder eigenen Schemata ist oft unerwartet.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="104"/> + <source>Standard pseudo-random generators are not suitable for security/cryptographic purposes.</source> + <translation>Standardzufallszahlengeneratoren sind ungeeignet für den Einsatz im Bereich Sicherheit/Kryptographie.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="108"/> + <source>Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation>Telnet-Funktionen werden verwendet. Telnet wird als unsicher angesehen. Verwende SSH oder ein anderes verschlüsseltes Protokoll.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="142"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called.</source> + <translation>Verwendung von '{0}', um nicht vertrauenswürdige XML Daten zu parsen, ist bekannt für XML Attacken. Ersetze '{0}' mit ihrer äquivalenten defusedxml Funktion oder stelle den Aufruf von defusedxml.defuse_stdlib() sicher.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="147"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function.</source> + <translation>Verwendung von '{0}', um nicht vertrauenswürdige XML Daten zu parsen, ist bekannt für XML Attacken. Ersetze '{0}' mit ihrer äquivalenten defusedxml Funktion.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="152"/> + <source>FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation>FTP-Funktionen werden verwendet. FTP wird als unsicher angesehen. Verwende SSH/SFTP/SCP oder ein anderes verschlüsseltes Protokoll.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="156"/> + <source>The input method in Python 2 will read from standard input, evaluate and run the resulting string as Python source code. This is similar, though in many ways worse, than using eval. On Python 2, use raw_input instead, input is safe in Python 3.</source> + <translation>Die input Method von Python 2 liest Eingaben von der Standardeingabe, verarbeitet sie und führt die resultierende Zeichenkette als Python Quelltext aus. Dies ist vergleichbat und in manchen Fällen schlimmer als die Verwendung von eval(). Verwende mit Python 2 raw_input(). input() ist in Python3 sicher.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="162"/> + <source>By default, Python will create a secure, verified SSL context for use in such classes as HTTPSConnection. However, it still allows using an insecure context via the _create_unverified_context that reverts to the previous behavior that does not validate certificates or perform hostname checks.</source> + <translation>Standardmäßig erzeugt Python einen sicheren, verifizierten SSL Kontext zur Verwendung in Klassen wie HTTPSConnection. Allerdings ist immer noch die Verwendung eines unsicheren Kontextes via _create_unverified_context() möglich. Dies kehrt zum alten Verhalten ohne Validierung von Zertifikaten und Prüfung des Hostnamens zurück.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="169"/> + <source>Use of os.tempnam() and os.tmpnam() is vulnerable to symlink attacks. Consider using tmpfile() instead.</source> + <translation>Verwendung von os.tempnam() und os.tmpnam() ist anfällig für Symlink Attacken. Verwende stattdessen tmpfile().</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="175"/> + <source>Use of insecure {0} hash function.</source> + <translation>Verwendung der unsicheren Hashfunktion {0}.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="180"/> + <source>A telnet-related module is being imported. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation>Ein telnet verwandtes Modul wird eingebunden. Telnet wird als unsicher angesehen. Verwende SSH oder ein anderes verschlüsseltes Protokoll.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="184"/> + <source>A FTP-related module is being imported. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation>Ein FTP verwandtes Modul wird eingebunden. FTP wird als unsicher angesehen. Verwende SSH/SFTP/SCP oder ein anderes verschlüsseltes Protokoll.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="192"/> + <source>Consider possible security implications associated with the '{0}' module.</source> + <translation>Überprüfe mögliche Sicherheitsauswirkungen, die mit dem '{0}' Modul verbunden sind.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="216"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.</source> + <translation>Verwendung von '{0}', um nicht vertrauenswürdige XML Daten zu parsen, ist bekannt für XML Attacken. Ersetze '{0}' mit ihrer äquivalenten defusedxml Paket oder stelle den Aufruf von defusedxml.defuse_stdlib() sicher.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="221"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package.</source> + <translation>Verwendung von '{0}', um nicht vertrauenswürdige XML Daten zu parsen, ist bekannt für XML Attacken. Ersetze '{0}' mit ihrer äquivalenten defusedxml Paket.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="226"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Use defused.xmlrpc.monkey_patch() function to monkey-patch xmlrpclib and mitigate XML vulnerabilities.</source> + <translation>Verwendung von '{0}', um nicht vertrauenswürdige XML Daten zu parsen, ist bekannt für XML Attacken. Verwende die defused.xmlrpc.monkey_patch().Funktion, um die xmlrpclib zu patchen und XML Verwundbarkeiten abzuschwächen.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="231"/> + <source>Consider possible security implications associated with '{0}' module.</source> + <translation>Überprüfe mögliche Sicherheitsauswirkungen, die mit dem '{0}' Modul verbunden sind.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="235"/> + <source>The pyCrypto library and its module '{0}' are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.</source> + <translation>Die pyCrypto Bibliothek und ihr Modul '{0}' werden nicht mehr länger gepflegt und sind veraltet. Setze die pyca/cryptography Bibliothek ein.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="242"/> + <source>'requests' call with verify=False disabling SSL certificate checks, security issue.</source> + <translation>'requests' Aufruf mit verify=False schaltet SSL Zertifikatsprüfungen aus; Sicherheitsproblem.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="248"/> + <source>'ssl.wrap_socket' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation>'ssl.wrap_socket' Aufruf mit unsicherer SSL/TLS Protokollversion erkannt; Sicherheitsproblem.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="252"/> + <source>'SSL.Context' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation>'SSL.Context' Aufruf mit unsicherer SSL/TLS Protokollversion erkannt; Sicherheitsproblem.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="256"/> + <source>Function call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation>Funktionsaufruf mit unsicherer SSL/TLS Protokollversion erkannt; Sicherheitsproblem.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="260"/> + <source>Function definition identified with insecure SSL/TLS protocol version by default, possible security issue.</source> + <translation>Funktionsdefinition mit unsicherer SSL/TLS Protokollversion als Standardwert; Sicherheitsproblem.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="264"/> + <source>'ssl.wrap_socket' call with no SSL/TLS protocol version specified, the default 'SSLv23' could be insecure, possible security issue.</source> + <translation>'ssl.wrap_socket' Aufruf mit keiner Angabe der SSL/TLS Protokollversion. Der Standardwert 'SSLv23' könnte unsicher sein. Mögliches Sicherheitsproblem.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="270"/> + <source>{0} key sizes below {1:d} bits are considered breakable.</source> + <translation>{0} Schlüssellängen kleiner {1:d} Bit werden als knackbar angesehen.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="275"/> + <source>Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary objects. Consider 'yaml.safe_load()'.</source> + <translation>Verwendung der unsicheren 'yaml.load()' Funktion. Sie erlaubt die Erzeugung beliebiger Objekte. Verwende 'yaml.safe_load()'.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="281"/> + <source>Paramiko call with policy set to automatically trust the unknown host key.</source> + <translation>Paramiko Aufruf mit einer gesetzte Policy, die automatisch einem unbekannten Host vertraut.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="287"/> + <source>Possible shell injection via 'Paramiko' call, check inputs are properly sanitized.</source> + <translation>Mögliche Shell Injection über einen 'Paramiko' Aufruf. Prüfe, dass Eingaben korrekt abgesichert werden.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="291"/> + <source>'subprocess' call with shell=True seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation>'subprocess' Aufruf mit shell=True erscheint sicher, mag sich aber zukünftig ändern. Schreibe ihn ohne shell um</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="295"/> + <source>'subprocess' call with shell=True identified, security issue.</source> + <translation>'subprocess' Aufruf mit shell=True erkannt; Sicherheitsproblem.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="298"/> + <source>'subprocess' call - check for execution of untrusted input.</source> + <translation>'subprocess' Aufruf - überprüfe auf Ausführung nicht vertrauenswürdiger Eingaben.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="301"/> + <source>Function call with shell=True parameter identified, possible security issue.</source> + <translation>Funktionsaufruf mit shell=True erkannt; mögliches Sicherheitsproblem.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="305"/> + <source>Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation>Erzeugung eines Prozesses mit einer Shell: erscheint sicher, mag sich aber in Zukunft ändern. Schreibe ihn ohne Shell Verwendung um</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="309"/> + <source>Starting a process with a shell, possible injection detected, security issue.</source> + <translation>Erzeugung eines Prozesses mit einer Shell, mögliche Injektion erkannt; Sicherheitsproblem.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="313"/> + <source>Starting a process without a shell.</source> + <translation>Starten eines Prozesses ohne Shell.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="316"/> + <source>Starting a process with a partial executable path.</source> + <translation>Starten eines Prozesses mit einem teilweisen Programmpfad.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="321"/> + <source>Possible SQL injection vector through string-based query construction.</source> + <translation>Mögliche SQL Injektion durch Zeichenketten basierten Aufbau einer Abfrage.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="327"/> + <source>Possible wildcard injection in call: {0}</source> + <translation>Mögliche Wildcard Injektion im Aufruf: {0}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="332"/> + <source>Use of 'extra()' opens a potential SQL attack vector.</source> + <translation>Verwendung von 'extra()' eröffnet einen möglichen SQL Angriffsvektor.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="335"/> + <source>Use of 'RawSQL()' opens a potential SQL attack vector.</source> + <translation>Verwendung von 'RawSQL()' eröffnet einen möglichen SQL Angriffsvektor.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="340"/> + <source>Using jinja2 templates with 'autoescape=False' is dangerous and can lead to XSS. Use 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation>Verwendung von Jinja Templates mit 'autoescape=False' ist gefährlich und führt zu XSS. Verwende 'autoescaoe=True' oder wähle die 'select_autoescape' Funktion zur Abschwächung von XSS Verwundbarkeiten.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="345"/> + <source>By default, jinja2 sets 'autoescape' to False. Consider using 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation>Als Standard setzt Jinja2 'autoescape' auf False. Verwende 'autoescaoe=True' oder wähle die 'select_autoescape' Funktion zur Abschwächung von XSS Verwundbarkeiten.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="352"/> + <source>Mako templates allow HTML/JS rendering by default and are inherently open to XSS attacks. Ensure variables in all templates are properly sanitized via the 'n', 'h' or 'x' flags (depending on context). For example, to HTML escape the variable 'data' do ${{ data |h }}.</source> + <translation>Mako Templates als Standard das Rendering von HTML/JS und sind damit offen für XSS Angriffe. Stelle sicher, dass alle in Templates verwendeten Variablen über die 'n', 'h' oder 'x' Flags abgesichert sind (abhängig vom Kontext). Verwende z.B. zur Absicherung der HTML Variablen 'data' den Ausdruck '${{ data |h }}.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="360"/> + <source>Potential XSS on 'mark_safe()' function.</source> + <translation>Potentielle XSS auf die 'mark_safe()' Funktion.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="365"/> + <source>Possible hardcoded AWS access key ID: {0:r}</source> + <translation>Mögliche einprogrammierte AWS Zugriffsschlüssel-ID: {0:r}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="368"/> + <source>Possible hardcoded AWS secret access key: {0:r}</source> + <translation>Möglicher einprogrammierter geheimer AWS Zugriffsschlüssel: {0:r}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="373"/> + <source>{0}: {1}</source> + <translation>{0}: {1}</translation> + </message> +</context> +<context> <name>SecurityPage</name> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="37"/> @@ -60636,6 +61266,21 @@ <source><b>Configure security settings</b></source> <translation><b>Sicherheitseinstellungen</b></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="96"/> + <source>Certificate Errors</source> + <translation>Zertifikatsfehler</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="102"/> + <source>Select to always reject web pages with certificate issues</source> + <translation>Auswählen, um alle Webseiten mit Zertifikatsfehlern abzulehnen</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="105"/> + <source>Always reject URLs with certificate errors</source> + <translation>URLs mit Zertifikatsfehlern immer ablehnen</translation> + </message> </context> <context> <name>SendRefererWhitelistDialog</name> @@ -62599,75 +63244,80 @@ <translation><b>Sicherheitsinformationen</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="168"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="171"/> <source>Media</source> <translation>Bilder</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="184"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="187"/> <source>Image</source> <translation>Bild</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="189"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="192"/> <source>Image Address</source> <translation>Bildadresse</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="197"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="200"/> <source><b>Preview</b></source> <translation><b>Vorschau</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="216"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="238"/> <source>Preview not available.</source> <translation>Vorschau nicht verfügbar.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="243"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="265"/> <source>Copy Image Location to Clipboard</source> <translation>Bildadresse in die Zwischenablage kopieren</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="246"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="268"/> <source>Copy Image Name to Clipboard</source> <translation>Bildbezeichnung in die Zwischenablage kopieren</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source>Save Image</source> <translation>Bild speichern</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="299"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="321"/> <source>All Files (*)</source> <translation>Alle Dateien (*)</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source><p>Cannot write to file <b>{0}</b>.</p></source> <translation><p>In die Datei <b>{0}</b> kann nicht geschrieben werden.</p></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="229"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="251"/> <source>Loading...</source> <translation>Lade...</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="287"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="309"/> <source><p>This preview is not available.</p></source> <translation><p>Diese Vorschau ist nicht verfügbar.</p></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="76"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="97"/> <source><b>Connection is encrypted.</b></source> <translation><b>Verbindung ist verschlüsselt.</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="80"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="102"/> <source><b>Connection is not encrypted.</b></source> <translation><b>Verbindung ist nicht verschlüsselt.</b></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="87"/> + <source><b>Connection is encrypted but may be insecure.</b></source> + <translation><b>Verbindung ist verschlüsselt aber möglicherweise unsicher.</b></translation> + </message> </context> <context> <name>SiteInfoWidget</name> @@ -62677,60 +63327,65 @@ <translation><b>Web-Site {0}</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="62"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="69"/> <source>Your connection to this site is <b>secure</b>.</source> <translation>Ihre Verbindung zu dieser Web-Site ist <b>sicher</b>.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="67"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="74"/> <source>Your connection to this site is <b>not secure</b>.</source> <translation>Ihre Verbindung zu dieser Web-Site ist <b>nicht sicher</b>.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="82"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="89"/> <source>This is your <b>{0}.</b> visit of this site.</source> <translation>Dies ist ihr <b>{0}.</b> Besuch dieser Web-Site.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="88"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="95"/> <source>You have <b>never</b> visited this site before.</source> <translation>Sie haben diese Web-Site <b>niemals</b> zuvor besucht.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="97"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="104"/> <source>first</source> <translation>erster</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="99"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="106"/> <source>second</source> <translation>zweiter</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="101"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="108"/> <source>third</source> <translation>dritter</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="102"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="109"/> <source>This is your <b>{0}</b> visit of this site.</source> <translation>Dies ist ihr <b>{0}</b> Besuch dieser Web-Site.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="123"/> - <source>Register as <b>{0}</b> links handler.</source> - <translation>Als <b>{0}</b> Links-Handler registrieren.</translation> - </message> - <message> <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="130"/> + <source>Register as <b>{0}</b> links handler.</source> + <translation>Als <b>{0}</b> Links-Handler registrieren.</translation> + </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="137"/> <source>Register</source> <translation>Registrieren</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="147"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="154"/> <source>More...</source> <translation>Mehr...</translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="63"/> + <source>Your connection to this site <b>may not be secure</b>.</source> + <translation>Ihre Verbindung zu dieser Web-Site ist <b>möglicherweise nicht sicher</b>.</translation> + </message> </context> <context> <name>SnapWidget</name> @@ -64705,7 +65360,7 @@ <message> <location filename="../Preferences/SubstyleDefinitionDialog.py" line="107"/> <source>Set Sub-Style Data to Default</source> - <translation>Unterstildaten auf Standartwerte setzen</translation> + <translation>Unterstildaten auf Standardwerte setzen</translation> </message> <message> <location filename="../Preferences/SubstyleDefinitionDialog.py" line="107"/> @@ -74499,7 +75154,7 @@ <translation>Werkzeuge</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Help</source> <translation>Hilfe</translation> </message> @@ -74509,7 +75164,7 @@ <translation>&Werkzeugleisten</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source>Problem</source> <translation>Problem</translation> </message> @@ -74529,7 +75184,7 @@ <translation>&Was ist das?</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source>Process Generation Error</source> <translation>Fehler beim Prozessstart</translation> </message> @@ -74619,7 +75274,7 @@ <translation><b>Fehler berichten...</b><p>Öffnet einen Dialog zum Senden eines Fehlerberichtes.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6327"/> + <location filename="../UI/UserInterface.py" line="6294"/> <source>Export Keyboard Shortcuts</source> <translation>Tastaturkurzbefehle exportieren</translation> </message> @@ -74639,7 +75294,7 @@ <translation><b>Tastaturkurzbefehle exportieren</b><p>Exportiert die Tastaturkurzbefehle der Applikation.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Import Keyboard Shortcuts</source> <translation>Tastaturkurzbefehle importieren</translation> </message> @@ -74794,7 +75449,7 @@ <translation><b>Dateien Seite an Seite vergleichen</b><p>Öffnet einen Dialog zum Vergleich zweier Dateien und zur Anzeige des Ergebnisse Seite an Seite.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source>Drop Error</source> <translation>Drop-Fehler</translation> </message> @@ -74864,32 +75519,32 @@ <translation><b>Ansichtenprofile</b><p>Ansichtenprofile konfigurieren. Mit diesem Dialog kann die Sichtbarkeit der verschiedenen Fenster für die vorbestimmten Ansichtenprofile eingestellt werden.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source><p>The file <b>{0}</b> does not exist or is zero length.</p></source> <translation><p>Die Datei <b>{0}</b> existiert nicht oder hat die Größe Null.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="4962"/> + <location filename="../UI/UserInterface.py" line="4935"/> <source><p>Could not start Qt-Designer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Qt-Designer konnte nicht gestartet werden.<br>Stellen Sie sicher, dass es als <b>{0}</b> verfügbar ist.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5034"/> + <location filename="../UI/UserInterface.py" line="5005"/> <source><p>Could not start Qt-Linguist.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Qt-Linguist konnte nicht gestartet werden.<br>Stellen Sie sicher, dass es als <b>{0}</b> verfügbar ist.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5087"/> + <location filename="../UI/UserInterface.py" line="5049"/> <source><p>Could not start Qt-Assistant.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Qt-Assistant konnte nicht gestartet werden.<br>Stellen Sie sicher, dass es als <b>{0}</b> verfügbar ist.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source><p>Could not start the tool entry <b>{0}</b>.<br>Ensure that it is available as <b>{1}</b>.</p></source> <translation><p>Der Werkzeugeeintrag <b>{0}</b> konnte nicht gestartet werden.<br>Stellen Sie sicher, dass er als <b>{1}</b> verfügbar ist.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> ist keine Datei.</p></translation> </message> @@ -74914,7 +75569,7 @@ <translation><b>UI-Vorschau</b><p>Starte die UI-Vorschau.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5199"/> + <location filename="../UI/UserInterface.py" line="5166"/> <source><p>Could not start UI Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Die UI-Vorschau konnte nicht gestartet werden.<br>Stellen Sie sicher, dass sie als <b>{0}</b> verfügbar ist.</p></translation> </message> @@ -74939,7 +75594,7 @@ <translation><b>Übersetzungsvorschau</b><p>Dies startet das Programm zur Vorschau von Übersetzungen.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5256"/> + <location filename="../UI/UserInterface.py" line="5223"/> <source><p>Could not start Translation Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Die Übersetzungsvorschau konnte nicht gestartet werden.<br>Stellen Sie sicher, dass sie als <b>{0}</b> verfügbar ist.</p></translation> </message> @@ -74979,42 +75634,42 @@ <translation>Aufgabenanzeige</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source>Save tasks</source> <translation>Aufgaben speichern</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation><p>Die Aufgabendatei <b>{0}</b> konnte nicht geschrieben werden.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source>Read tasks</source> <translation>Aufgaben lesen</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation><p>Die Aufgabendatei <b>{0}</b> konnte nicht gelesen werden.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source> <translation>Momentan ist kein Betrachter angegeben. Bitte benutzen Sie den Einstellungsdialog, um einen festzulegen.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5129"/> + <location filename="../UI/UserInterface.py" line="5096"/> <source><p>Could not start custom viewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Der Betrachter konnte nicht gestartet werden.<br>Stellen Sie sicher, dass er als <b>{0}</b> verfügbar ist.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source>Documentation Missing</source> <translation>Dokumentation fehlt</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source><p>The documentation starting point "<b>{0}</b>" could not be found.</p></source> <translation><p>Der Dokumentationsstartpunkt „<b>{0}</b>“ konnte nicht gefunden werden.</p></translation> </message> @@ -75114,7 +75769,7 @@ <translation>Öffne die Eric-API-Dokumentation</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5149"/> + <location filename="../UI/UserInterface.py" line="5116"/> <source><p>Could not start the help viewer.<br>Ensure that it is available as <b>hh</b>.</p></source> <translation><p>Die Hilfeanzeige konnte nicht gestartet werden.<br>Stellen Sie sicher, dass sie als <b>hh</b> verfügbar ist.</p></translation> </message> @@ -75195,41 +75850,41 @@ <translation>&Eingebaute Werkzeuge</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5422"/> + <location filename="../UI/UserInterface.py" line="5389"/> <source>Starting process '{0} {1}'. </source> <translation>Starte Prozess „{0} {1}“. </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5516"/> + <location filename="../UI/UserInterface.py" line="5483"/> <source>Process '{0}' has exited. </source> <translation>Prozess „{0}“ ist beendet. </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source>Documentation</source> <translation>Dokumentation</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5727"/> + <location filename="../UI/UserInterface.py" line="5694"/> <source><p>The PyQt4 documentation starting point has not been configured.</p></source> <translation><p>Der PyQt4-Dokumentations-Startpunkt ist nicht konfiguriert.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Error during updates check</source> <translation>Fehler während der Aktualisierungsprüfung</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>Update available</source> <translation>Aktualisierung verfügbar</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7324"/> + <location filename="../UI/UserInterface.py" line="7291"/> <source></table></source> <translation></table></translation> </message> @@ -75254,22 +75909,22 @@ <translation>Zeige externe &Werkzeuge</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Could not perform updates check.</source> <translation>Konnte keine Aktualisierungsprüfung durchführen.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>&Cancel</source> <translation>&Abbrechen</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7108"/> + <location filename="../UI/UserInterface.py" line="7075"/> <source>Trying host {0}</source> <translation>Prüfe Host {0}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>First time usage</source> <translation>Erstmalige Nutzung</translation> </message> @@ -75364,7 +76019,7 @@ <translation>Zeige die verfügbaren eric-Versionen</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7309"/> + <location filename="../UI/UserInterface.py" line="7276"/> <source><h3>Available versions</h3><table></source> <translation><h3>Verfügbare Versionen</h3><table></translation> </message> @@ -75449,17 +76104,17 @@ <translation>Externe Werkzeuge/{0}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>External Tools</source> <translation>Externe Werkzeuge</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5374"/> + <location filename="../UI/UserInterface.py" line="5341"/> <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source> <translation>Kein Eintrag für das externe Werkzeug „{0}“ in der Gruppe „{1}“ gefunden.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>No toolgroup entry '{0}' found.</source> <translation>Kein Werkzeuggruppeneintrag „{0}“ gefunden.</translation> </message> @@ -75474,22 +76129,22 @@ <translation>&Mehrfachprojektanzeige</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6646"/> + <location filename="../UI/UserInterface.py" line="6613"/> <source>Save session</source> <translation>Sitzung speichern</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6584"/> + <location filename="../UI/UserInterface.py" line="6551"/> <source><p>The session file <b>{0}</b> could not be written.</p></source> <translation><p>Die Sitzungsdatei <b>{0}</b> konnte nicht geschrieben werden.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source>Read session</source> <translation>Sitzung lesen</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source><p>The session file <b>{0}</b> could not be read.</p></source> <translation><p>Die Sitzungsdatei <b>{0}</b> konnte nicht gelesen werden.</p></translation> </message> @@ -75709,7 +76364,7 @@ <translation><b>SQL-Browser</b><p>Erforsche eine SQL-Datenbank.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5279"/> + <location filename="../UI/UserInterface.py" line="5246"/> <source><p>Could not start SQL Browser.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Der SQL-Browser konnte nicht gestartet werden.<br>Stellen Sie sicher, dass er als <b>{0}</b> verfügbar ist.</p></translation> </message> @@ -75724,11 +76379,6 @@ <translation>&Icon-Editor...</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt 3 support</source> - <translation>Qt3-Unterstützung</translation> - </message> - <message> <location filename="../UI/UserInterface.py" line="2870"/> <source>PySide Documentation</source> <translation>PySide-Dokumentation</translation> @@ -75774,7 +76424,7 @@ <translation>Alt+Shift+B</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Keyboard shortcut file (*.e4k)</source> <translation>Tastaturkurzbefehlsdatei (*.e4k)</translation> </message> @@ -75814,27 +76464,27 @@ <translation><b>Python 2-Dokumentation</b><p>Zeigt die Python 2-Dokumentation an. Ist kein Dokumentationsverzeichnis konfiguriert, so ist der Ort, an dem die Python 2-Dokumentation gesucht wird, unter Windows das Verzeichnis <i>doc</i> unter dem Verzeichnis, in dem der konfigurierte Python 2-Interpreter installiert ist, und unter Unix das Verzeichnis <i>/usr/share/doc/packages/python/html/python-docs-html</i>. Um dies zu überschreiben, können Sie die Umgebungsvariable PYTHON2DOCDIR setzen.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>Error getting versions information</source> <translation>Fehler beim Herunterladen der Versionsinformationen</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7167"/> + <location filename="../UI/UserInterface.py" line="7134"/> <source>The versions information could not be downloaded. Please go online and try again.</source> <translation>Die Versionsinformationen konnten nicht heruntergeladen werden. Bitte gehen Sie online und versuchen Sie es erneut.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Open Browser</source> <translation>Browser starten</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Could not start a web browser</source> <translation>Der Systemwebbrowser konnte nicht gestartet werden</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source> <translation>Die Versionsinformationen konnten seit 7 Tagen nicht heruntergeladen werden. Bitte gehen Sie online und versuchen Sie es erneut.</translation> </message> @@ -75920,12 +76570,12 @@ <translation><b>Bildschirmfoto</b><p>Dies öffnet einen Dialog, um ein Bildschirmfoto aufzunehmen.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5351"/> + <location filename="../UI/UserInterface.py" line="5318"/> <source><p>Could not start Snapshot tool.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Die Bildschirmfotoanwendung konnte nicht gestartet werden.<br>Stellen Sie sicher, dass sie als <b>{0}</b> verfügbar ist.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7380"/> + <location filename="../UI/UserInterface.py" line="7347"/> <source>Select Workspace Directory</source> <translation>Wähle Arbeitsverzeichnis</translation> </message> @@ -76290,7 +76940,7 @@ <translation>Öffne die PyQt5-Dokumentation</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5789"/> + <location filename="../UI/UserInterface.py" line="5756"/> <source><p>The PyQt5 documentation starting point has not been configured.</p></source> <translation><p>Der PyQt5-Dokumentations-Startpunkt ist nicht konfiguriert.</p></translation> </message> @@ -76300,7 +76950,7 @@ <translation><b>Python 3-Dokumentation</b><p>Zeigt die Python 3-Dokumentation an. Ist kein Dokumentationsverzeichnis konfiguriert, so ist der Ort, an dem die Python 3-Dokumentation gesucht wird, unter Windows das Verzeichnis <i>doc</i> unter dem Verzeichnis, in dem der Python 3-Interpreter installiert ist, und unter Unix das Verzeichnis <i>/usr/share/doc/packages/python/html</i>. Um dies zu überschreiben, können Sie die Umgebungsvariable PYTHON3DOCDIR setzen.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>%v/%m</source> <translation>%v/%m</translation> </message> @@ -76320,7 +76970,7 @@ <translation><b>Zeige Fehlerbericht...</b><p>Dies öffnet einen Dialog zur Anzeige des aktuellsten Fehlerberichtes.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7103"/> + <location filename="../UI/UserInterface.py" line="7070"/> <source>Version Check</source> <translation>Versionsprüfung</translation> </message> @@ -76391,27 +77041,22 @@ <translation><b>Eric-API-Dokumentation</b><p>Zeige die Eric-API-Dokumentation an. Der Pfad für die Dokumentation ist das Unterverzeichnis Documentation/Source im eric6-Installationverzeichnis.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt v.3 is not supported by eric6.</source> - <translation>Qt v.3 wird von eric6 nicht unterstützt.</translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>The update to <b>{0}</b> of eric6 is available at <b>{1}</b>. Would you like to get it?</source> <translation>Eine Aktualisierung auf <b>{0}</b> von Eric6 ist unter <b>{1}</b> verfügbar. Wollen Sie sie laden?</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>Eric6 is up to date</source> <translation>Eric6 ist aktuell</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>You are using the latest version of eric6</source> <translation>Sie verwenden die aktuellste Version von eric6</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>eric6 has not been configured yet. The configuration dialog will be started.</source> <translation>eric6 wurde noch nicht konfiguriert. Der Konfigurationsdialog wird nun gestartet.</translation> </message> @@ -76431,7 +77076,7 @@ <translation>Keine Benutzerwerkzeuge konfiguriert</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7119"/> + <location filename="../UI/UserInterface.py" line="7086"/> <source>The versions information cannot not be downloaded because you are <b>offline</b>. Please go online and try again.</source> <translation>Die Versionsinformationen konnten nicht heruntergeladen werden, da sie <b>nicht verbunden</b> sind. Bitte gehen Sie online und versuchen Sie es erneut.</translation> </message> @@ -76476,7 +77121,7 @@ <translation><b>Sitzung speichern...</b><p>Dies speichert die aktuelle Sitzung in eine Datei. Es wird ein Dialog zur Eingabe des Dateinamens geöffnet.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>Load session</source> <translation>Sitzung laden</translation> </message> @@ -76491,17 +77136,17 @@ <translation><b>Sitzung laden...</b><p>Dies lädt eine zuvor gesicherte Sitzung. Es wird ein Dialog zur Eingabe des Dateinamens geöffnet.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>eric6 Session Files (*.e5s)</source> <translation>eric6 Sitzungsdateien (*.e5s)</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>Crash Session found!</source> <translation>Absturzsitzung gefunden!</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>A session file of a crashed session was found. Shall this session be restored?</source> <translation>Eine Sitzungsdatei einer abgestürzten Sitzung wurde gefunden. Soll diese Sitzung wiederhergestellt werden?</translation> </message> @@ -76516,17 +77161,17 @@ <translation>Initialisiere Plugins...</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>Update Check</source> <translation>Aktualisierungsprüfung</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source> <translation>Eric wurde direkt von vom Quelltext installiert. Eine Aktualitätsprüfung ist daher nicht möglich.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7244"/> + <location filename="../UI/UserInterface.py" line="7211"/> <source>You are using a snapshot release of eric6. A more up-to-date stable release might be available.</source> <translation>Sie verwenden ein Snapshot-Release von eri6. Eine neueres, stabiles Release könnte verfügbar sein.</translation> </message> @@ -76581,7 +77226,7 @@ <translation><b>PySide2-Dokumentation</b><p>Zeige die PySide2-Dokumentation an. Abhängig von den Einstellungen wird Erics interner Hilfeanzeiger/Webbrowser, ein externer Webbrowser oder Qt Assistant verwendet.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source><p>The PySide{0} documentation starting point has not been configured.</p></source> <translation><p>Der PySide{0}-Dokumentations-Startpunkt ist nicht konfiguriert.</p></translation> </message> @@ -76657,17 +77302,17 @@ <translation><b>Neustart der Entwicklungsumgebung</b><p>Dies startet die Entwicklungsumgebung neu. Ungesicherte Änderungen können zuvor gesichert werden. Ein Python-Programm, das gerade debuggt wird, wird beendet und sämtliche Einstellungen werden gespeichert.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source>Start Web Browser</source> <translation>Webbrowser starten</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6015"/> + <location filename="../UI/UserInterface.py" line="5982"/> <source>The eric6 web browser could not be started.</source> <translation>Der eric6 Webbrowser konnte nicht gestartet werden.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source><p>The eric6 web browser is not started.</p><p>Reason: {0}</p></source> <translation><p>Der eric6 Webbrowser ist nicht gestartet.</p><p>Ursache: {0}</p></translation> </message> @@ -76766,6 +77411,21 @@ <source><h2>Version Numbers</h2><table></source> <translation><h2>Versionsnummern</h2><table></translation> </message> + <message> + <location filename="../UI/UserInterface.py" line="4944"/> + <source><p>Could not find the Qt-Designer executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation><p>Das Qt-Designer Programm konnte nicht gefunden werden.<br>Stelle sicher, dass es installiert und optional auf der Qt Konfigurationsseite konfiguriert ist.</p></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5014"/> + <source><p>Could not find the Qt-Linguist executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation><p>Das Qt-Linguist Programm konnte nicht gefunden werden.<br>Stelle sicher, dass es installiert und optional auf der Qt Konfigurationsseite konfiguriert ist.</p></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5058"/> + <source><p>Could not find the Qt-Assistant executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation><p>Das Qt-Assistant Programm konnte nicht gefunden werden.<br>Stelle sicher, dass es installiert und optional auf der Qt Konfigurationsseite konfiguriert ist.</p></translation> + </message> </context> <context> <name>UserPropertiesDialog</name> @@ -82501,47 +83161,47 @@ <translation>Minimale logische Schriftgröße:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="324"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="402"/> <source>Images</source> <translation>Grafiken</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="408"/> <source>Select to load images</source> <translation>Auswählen, um Grafiken zu laden</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="333"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="411"/> <source>Load images</source> <translation>Grafiken laden</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="343"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="421"/> <source>Style Sheet</source> <translation>Stylesheet</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="349"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="427"/> <source>User Style Sheet:</source> <translation>Benutzer-Stylesheet:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="365"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="443"/> <source>Enter the file name of a user style sheet</source> <translation>Gib den Namen einer Benutzer-Stylesheet-Datei ein</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="375"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="453"/> <source>Tabs</source> <translation>Tabs</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="381"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="459"/> <source>Select to issue a warning, if multiple tabs are about to be closed</source> <translation>Auswählen, um eine Warnung auszugeben, wenn mehrere Tabs geschlossen werden</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="384"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="462"/> <source>Warn, if multiple tabs are about to be closed</source> <translation>Warnen, wenn mehrere Tabs geschlossen werden</translation> </message> @@ -82561,37 +83221,37 @@ <translation>Wähle die Schriftart Pictograph aus</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="426"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="504"/> <source><font color="#FF0000"><b>Note:</b> All settings below are activated at the next startup of the application.</font></source> <translation><font color="#FF0000"><b>Hinweis:</b> Alle folgenden Einstellungen werden erst beim nächsten Programmstart aktiv.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="433"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="511"/> <source>Toolbars</source> <translation>Werkzeugleisten</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="439"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="517"/> <source>Select to show toolbars</source> <translation>Auswählen, um die Anzeige von Werkzeugleisten zu erlauben</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="520"/> <source>Show Toolbars</source> <translation>Zeige Werkzeugleisten</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="394"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="472"/> <source>Scrollbars</source> <translation>Scrollbalken</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="400"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="478"/> <source>Select to show scrollbars. Note: Scrolling is possible even without them.</source> <translation>Auswählen, um Scrollbalken anzuzeigen. Hinweis: Scrollen ist auch ohne sie möglich.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="403"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="481"/> <source>Show Scrollbars</source> <translation>Scrollbalken anzeigen</translation> </message> @@ -82601,15 +83261,50 @@ <translation>Farben</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> - <source>Background color of secure URLs:</source> - <translation>Hintergrundfarbe für sichere URLs:</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="298"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="304"/> <source>Select the background color for secure URLs.</source> <translation>Wähle die Hintergrundfarbe für sichere URLs.</translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> + <source>URL Entry Background</source> + <translation>Hintergrund der URL Eingabe</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="291"/> + <source>Secure URLs:</source> + <translation>Sichere URLs:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="327"/> + <source>Insecure URLs:</source> + <translation>Unsichere URLs:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="340"/> + <source>Select the background color for insecure URLs.</source> + <translation>Wähle die Hintergrundfarbe für unsichere URLs.</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="350"/> + <source>Malicious URLs:</source> + <translation>Bösartige URLs:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="363"/> + <source>Select the background color for malicious URLs.</source> + <translation>Wähle die Hintergrundfarbe für bösartige URLs.</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="373"/> + <source>Private Mode:</source> + <translation>Privatmodus:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="386"/> + <source>Select the background color for URLs in private mode.</source> + <translation>Wähle die Hintergrundfarbe für URLs im Privatmodus.</translation> + </message> </context> <context> <name>WebBrowserClearPrivateDataDialog</name> @@ -83893,27 +84588,27 @@ <translation>...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="892"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="913"/> <source>Loading...</source> <translation>Lade...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="912"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="922"/> <source>Finished loading</source> <translation>Seite geladen</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="914"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="889"/> <source>Failed to load</source> <translation>Fehler beim Laden</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window?</source> <translation>Möchten Sie das Fenster wirklich schließen?</translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation> @@ -83924,22 +84619,22 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="962"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="970"/> <source>&Quit</source> <translation>B&eenden</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="965"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="973"/> <source>C&lose Current Tab</source> <translation>A&ktuelles Unterfenster schließen</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1146"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1154"/> <source>Restore All Closed Tabs</source> <translation>Alle geschlossenen Tabs wiederherstellen</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1148"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1156"/> <source>Clear List</source> <translation>Liste löschen</translation> </message> @@ -86773,12 +87468,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="391"/> + <location filename="../eric6.py" line="399"/> <source>Starting...</source> <translation>Starte...</translation> </message> <message> - <location filename="../eric6.py" line="396"/> + <location filename="../eric6.py" line="404"/> <source>Generating Main Window...</source> <translation>Erzeuge das Hauptfenster...</translation> </message> @@ -86938,7 +87633,7 @@ <translation>Syntaxfehler in Doctest entdeckt.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="183"/> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="187"/> <source>no message defined for code '{0}'</source> <translation>keine Nachricht für '{0}' definiert</translation> </message> @@ -87122,421 +87817,426 @@ <source>'...' % ... `*` specifier requires sequence</source> <translation>'...' % ... '*' Angabe erfordert eine Sequenz</translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="165"/> + <source>'if tuple literal' is always true, perhaps remove accidental comma?</source> + <translation>'if tuple literal' ist immer wahr. Entferne möglicherweise fehlerhaftes Komma?</translation> + </message> </context> <context> <name>pycodestyle</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="21"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> <source>indentation contains mixed spaces and tabs</source> <translation>Einrückung enthält einen Mix aus Leerzeichen und Tabulatoren</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> - <source>indentation is not a multiple of four</source> - <translation>Einrückung ist kein Mehrfaches von Vier</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="27"/> - <source>expected an indented block</source> - <translation>ein eingerückter Block wurde erwartet</translation> + <source>indentation is not a multiple of four</source> + <translation>Einrückung ist kein Mehrfaches von Vier</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="30"/> - <source>unexpected indentation</source> - <translation>unerwartete Einrückung</translation> + <source>expected an indented block</source> + <translation>ein eingerückter Block wurde erwartet</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="33"/> - <source>indentation is not a multiple of four (comment)</source> - <translation>Einrückung ist kein Mehrfaches von Vier (Kommentar)</translation> + <source>unexpected indentation</source> + <translation>unerwartete Einrückung</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36"/> - <source>expected an indented block (comment)</source> - <translation>ein eingerückter Block wurde erwartet (Kommentar)</translation> + <source>indentation is not a multiple of four (comment)</source> + <translation>Einrückung ist kein Mehrfaches von Vier (Kommentar)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39"/> + <source>expected an indented block (comment)</source> + <translation>ein eingerückter Block wurde erwartet (Kommentar)</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> <source>unexpected indentation (comment)</source> <translation>unerwartete Einrückung (Kommentar)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> - <source>continuation line indentation is not a multiple of four</source> - <translation>Einrückung der Fortsetzungszeile ist kein Vielfaches von Vier</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="48"/> - <source>continuation line missing indentation or outdented</source> - <translation>fehlende Einrückung der Fortsetzungzeile oder sie wurde ausgerückt</translation> + <source>continuation line indentation is not a multiple of four</source> + <translation>Einrückung der Fortsetzungszeile ist kein Vielfaches von Vier</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="51"/> + <source>continuation line missing indentation or outdented</source> + <translation>fehlende Einrückung der Fortsetzungzeile oder sie wurde ausgerückt</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54"/> <source>closing bracket does not match indentation of opening bracket's line</source> <translation>Einrückung der schließenden Klammer ungleich der Zeile der öffnenden Klammer</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55"/> - <source>closing bracket does not match visual indentation</source> - <translation>schließende Klammer passt nicht zur visuellen Einrückung</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="58"/> - <source>continuation line with same indent as next logical line</source> - <translation>Einrückung der Fortsetzungszeile unterscheidet sich nicht von der nächsten logischen Zeile</translation> + <source>closing bracket does not match visual indentation</source> + <translation>schließende Klammer passt nicht zur visuellen Einrückung</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="61"/> - <source>continuation line over-indented for hanging indent</source> - <translation>Fortsetzungszeile zu weit eingerückt für hängende Einrückung</translation> + <source>continuation line with same indent as next logical line</source> + <translation>Einrückung der Fortsetzungszeile unterscheidet sich nicht von der nächsten logischen Zeile</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64"/> - <source>continuation line over-indented for visual indent</source> - <translation>Fortsetzungszeile zu weit eingerückt für visuelle Einrückung</translation> + <source>continuation line over-indented for hanging indent</source> + <translation>Fortsetzungszeile zu weit eingerückt für hängende Einrückung</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67"/> - <source>continuation line under-indented for visual indent</source> - <translation>Fortsetzungszeile zu wenig eingerückt für visuelle Einrückung</translation> + <source>continuation line over-indented for visual indent</source> + <translation>Fortsetzungszeile zu weit eingerückt für visuelle Einrückung</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70"/> - <source>visually indented line with same indent as next logical line</source> - <translation>visuelle Einrückung identisch mit der Einrückung der nächsten logischen Zeile</translation> + <source>continuation line under-indented for visual indent</source> + <translation>Fortsetzungszeile zu wenig eingerückt für visuelle Einrückung</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73"/> - <source>continuation line unaligned for hanging indent</source> - <translation>Fortsetzungszeile für hängenden Einrückung nicht richtig ausgerichtet</translation> + <source>visually indented line with same indent as next logical line</source> + <translation>visuelle Einrückung identisch mit der Einrückung der nächsten logischen Zeile</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76"/> - <source>closing bracket is missing indentation</source> - <translation>Einrückung bei schließender Klammer fehlt</translation> + <source>continuation line unaligned for hanging indent</source> + <translation>Fortsetzungszeile für hängenden Einrückung nicht richtig ausgerichtet</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79"/> - <source>indentation contains tabs</source> - <translation>Einrückung enthält Tabulatoren</translation> + <source>closing bracket is missing indentation</source> + <translation>Einrückung bei schließender Klammer fehlt</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82"/> + <source>indentation contains tabs</source> + <translation>Einrückung enthält Tabulatoren</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85"/> <source>whitespace after '{0}'</source> <translation>Leerzeichen nach „{0}“</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91"/> - <source>whitespace before '{0}'</source> - <translation>Leerzeichen vor „{0}“</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94"/> - <source>multiple spaces before operator</source> - <translation>mehrfache Leerzeichen vor Operator</translation> + <source>whitespace before '{0}'</source> + <translation>Leerzeichen vor „{0}“</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97"/> - <source>multiple spaces after operator</source> - <translation>mehrfache Leerzeichen nach Operator</translation> + <source>multiple spaces before operator</source> + <translation>mehrfache Leerzeichen vor Operator</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100"/> - <source>tab before operator</source> - <translation>Tabulator vor Operator</translation> + <source>multiple spaces after operator</source> + <translation>mehrfache Leerzeichen nach Operator</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103"/> - <source>tab after operator</source> - <translation>Tabulator nach Operator</translation> + <source>tab before operator</source> + <translation>Tabulator vor Operator</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106"/> - <source>missing whitespace around operator</source> - <translation>fehlende Leerzeichen um Operator</translation> + <source>tab after operator</source> + <translation>Tabulator nach Operator</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109"/> - <source>missing whitespace around arithmetic operator</source> - <translation>fehlende Leerzeichen um Arithmetikoperator</translation> + <source>missing whitespace around operator</source> + <translation>fehlende Leerzeichen um Operator</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112"/> - <source>missing whitespace around bitwise or shift operator</source> - <translation>fehlende Leerzeichen um Bit- oder Shiftoperator</translation> + <source>missing whitespace around arithmetic operator</source> + <translation>fehlende Leerzeichen um Arithmetikoperator</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115"/> - <source>missing whitespace around modulo operator</source> - <translation>fehlende Leerzeichen um Modulooperator</translation> + <source>missing whitespace around bitwise or shift operator</source> + <translation>fehlende Leerzeichen um Bit- oder Shiftoperator</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118"/> - <source>missing whitespace after '{0}'</source> - <translation>fehlende Leerzeichen nach „{0}“</translation> + <source>missing whitespace around modulo operator</source> + <translation>fehlende Leerzeichen um Modulooperator</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121"/> - <source>multiple spaces after '{0}'</source> - <translation>mehrfache Leerzeichen nach „{0}“</translation> + <source>missing whitespace after '{0}'</source> + <translation>fehlende Leerzeichen nach „{0}“</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124"/> - <source>tab after '{0}'</source> - <translation>Tabulator nach „{0}“</translation> + <source>multiple spaces after '{0}'</source> + <translation>mehrfache Leerzeichen nach „{0}“</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127"/> + <source>tab after '{0}'</source> + <translation>Tabulator nach „{0}“</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> <source>unexpected spaces around keyword / parameter equals</source> <translation>unerwartete Leerzeichen um Schlüsselwort- / Parameter-Gleichheitszeichen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> - <source>at least two spaces before inline comment</source> - <translation>mindestens zwei Leerzeichen vor einem Inline-Kommentar</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136"/> - <source>inline comment should start with '# '</source> - <translation>Inline-Kommentar sollte mit „# “ beginnen</translation> + <source>at least two spaces before inline comment</source> + <translation>mindestens zwei Leerzeichen vor einem Inline-Kommentar</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="139"/> - <source>block comment should start with '# '</source> - <translation>Blockkommentar soll mit '# ' beginnen</translation> + <source>inline comment should start with '# '</source> + <translation>Inline-Kommentar sollte mit „# “ beginnen</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="142"/> - <source>too many leading '#' for block comment</source> - <translation>zu viele führende '#' für einen Blockkommentar</translation> + <source>block comment should start with '# '</source> + <translation>Blockkommentar soll mit '# ' beginnen</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="145"/> - <source>multiple spaces after keyword</source> - <translation>mehrfache Leerzeichen nach Schlüsselwort</translation> + <source>too many leading '#' for block comment</source> + <translation>zu viele führende '#' für einen Blockkommentar</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="148"/> - <source>multiple spaces before keyword</source> - <translation>mehrfache Leerzeichen vor Schlüsselwort</translation> + <source>multiple spaces after keyword</source> + <translation>mehrfache Leerzeichen nach Schlüsselwort</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="151"/> - <source>tab after keyword</source> - <translation>Tabulator nach Schlüsselwort</translation> + <source>multiple spaces before keyword</source> + <translation>mehrfache Leerzeichen vor Schlüsselwort</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154"/> - <source>tab before keyword</source> - <translation>Tabulator vor Schlüsselwort</translation> + <source>tab after keyword</source> + <translation>Tabulator nach Schlüsselwort</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157"/> - <source>missing whitespace after keyword</source> - <translation>fehlende Leerzeichen nach Schlüsselwort</translation> + <source>tab before keyword</source> + <translation>Tabulator vor Schlüsselwort</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="160"/> - <source>trailing whitespace</source> - <translation>abschließende Leerzeichen</translation> + <source>missing whitespace after keyword</source> + <translation>fehlende Leerzeichen nach Schlüsselwort</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163"/> - <source>no newline at end of file</source> - <translation>kein Zeilenumbruch am Dateiende</translation> + <source>trailing whitespace</source> + <translation>abschließende Leerzeichen</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166"/> + <source>no newline at end of file</source> + <translation>kein Zeilenumbruch am Dateiende</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169"/> <source>blank line contains whitespace</source> <translation>leere Zeile enthält Leerzeichen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> - <source>too many blank lines ({0})</source> - <translation>zu viele leere Zeilen ({0})</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> - <source>blank lines found after function decorator</source> - <translation>leere Zeile nach Funktionsdekorator gefunden</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="194"/> - <source>blank line at end of file</source> - <translation>leere Zeile am Dateiende</translation> + <source>too many blank lines ({0})</source> + <translation>zu viele leere Zeilen ({0})</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <source>blank lines found after function decorator</source> + <translation>leere Zeile nach Funktionsdekorator gefunden</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="197"/> - <source>multiple imports on one line</source> - <translation>mehrfache Importe in einer Zeile</translation> + <source>blank line at end of file</source> + <translation>leere Zeile am Dateiende</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200"/> - <source>module level import not at top of file</source> - <translation>Modul Import nicht am Dateianfang</translation> + <source>multiple imports on one line</source> + <translation>mehrfache Importe in einer Zeile</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203"/> - <source>line too long ({0} > {1} characters)</source> - <translation>Zeile zu lang ({0} > {1} Zeichen)</translation> + <source>module level import not at top of file</source> + <translation>Modul Import nicht am Dateianfang</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206"/> - <source>the backslash is redundant between brackets</source> - <translation>Backslash ist redundant innerhalb von Klammern</translation> + <source>line too long ({0} > {1} characters)</source> + <translation>Zeile zu lang ({0} > {1} Zeichen)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209"/> + <source>the backslash is redundant between brackets</source> + <translation>Backslash ist redundant innerhalb von Klammern</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> <source>line break before binary operator</source> <translation>Zeilenumbruch vor Binäroperator</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> - <source>.has_key() is deprecated, use 'in'</source> - <translation>.has_key() ist veraltet, verwende „in“</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> - <source>deprecated form of raising exception</source> - <translation>veraltete Art Ausnahmen zu werfen</translation> + <source>.has_key() is deprecated, use 'in'</source> + <translation>.has_key() ist veraltet, verwende „in“</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> - <source>'<>' is deprecated, use '!='</source> - <translation>„<>“ is veraltet, verwende „!=“</translation> + <source>deprecated form of raising exception</source> + <translation>veraltete Art Ausnahmen zu werfen</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> + <source>'<>' is deprecated, use '!='</source> + <translation>„<>“ is veraltet, verwende „!=“</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>backticks are deprecated, use 'repr()'</source> <translation>Backticks sind ungültig, verwende „repr()“</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> - <source>multiple statements on one line (colon)</source> - <translation>mehrere Anweisungen in einer Zeile (Doppelpunkt)</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> - <source>multiple statements on one line (semicolon)</source> - <translation>mehrere Anweisungen in einer Zeile (Semikolon)</translation> + <source>multiple statements on one line (colon)</source> + <translation>mehrere Anweisungen in einer Zeile (Doppelpunkt)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> - <source>statement ends with a semicolon</source> - <translation>Anweisung endet mit einem Semikolon</translation> + <source>multiple statements on one line (semicolon)</source> + <translation>mehrere Anweisungen in einer Zeile (Semikolon)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> + <source>statement ends with a semicolon</source> + <translation>Anweisung endet mit einem Semikolon</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248"/> <source>multiple statements on one line (def)</source> <translation>mehrere Anweisungen in einer Zeile (def)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="251"/> - <source>comparison to {0} should be {1}</source> - <translation>Vergleich mit {0} sollte {1} sein</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> - <source>test for membership should be 'not in'</source> - <translation>Test auf Nicht-Mitgliederschaft soll mit 'not in' erfolgen</translation> + <source>comparison to {0} should be {1}</source> + <translation>Vergleich mit {0} sollte {1} sein</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> - <source>test for object identity should be 'is not'</source> - <translation>Test auf Ungleichheit der Objekte soll mit 'is not' erfolgen</translation> + <source>test for membership should be 'not in'</source> + <translation>Test auf Nicht-Mitgliederschaft soll mit 'not in' erfolgen</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> - <source>do not compare types, use 'isinstance()'</source> - <translation>vergleiche keine Typen, verwende 'isinstance()'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> - <source>do not assign a lambda expression, use a def</source> - <translation>weise keine Lambda Ausdrücke zu, nutze def</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> - <source>ambiguous variable name '{0}'</source> - <translation>mehrdeutiger Variablenname '{0}'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> - <source>ambiguous class definition '{0}'</source> - <translation>mehrdeutige Klassenbezeichnung '{0}'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> - <source>ambiguous function definition '{0}'</source> - <translation>mehrdeutige Funktionsbezeichnung '{0}'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> - <source>{0}: {1}</source> - <translation>{0}: {1}</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> - <source>{0}</source> - <translation>{0}</translation> + <source>test for object identity should be 'is not'</source> + <translation>Test auf Ungleichheit der Objekte soll mit 'is not' erfolgen</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> + <source>do not compare types, use 'isinstance()'</source> + <translation>vergleiche keine Typen, verwende 'isinstance()'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> + <source>do not assign a lambda expression, use a def</source> + <translation>weise keine Lambda Ausdrücke zu, nutze def</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> + <source>ambiguous variable name '{0}'</source> + <translation>mehrdeutiger Variablenname '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> + <source>ambiguous class definition '{0}'</source> + <translation>mehrdeutige Klassenbezeichnung '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> + <source>ambiguous function definition '{0}'</source> + <translation>mehrdeutige Funktionsbezeichnung '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> + <source>{0}: {1}</source> + <translation>{0}: {1}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284"/> + <source>{0}</source> + <translation>{0}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> <source>do not use bare except</source> <translation>verwende kein leeres 'except'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184"/> <source>expected {0} blank lines after class or function definition, found {1}</source> <translation>erwartete {0} Leerzeilen nach Klassen- oder Funktionsdefinition, {1} gefunden</translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> + <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> + <translation>'async' und 'await' sind ab Python 3.7 reservierte Schlüsselwörter</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> + <source>missing whitespace around parameter equals</source> + <translation>fehlende Leerzeichen um Parameter-Gleichheitszeichen</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <source>expected {0} blank lines, found {1}</source> + <translation>erwartete {0} leere Zeilen, {1} gefunden</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <source>expected {0} blank lines before a nested definition, found {1}</source> + <translation>erwartete {0} Leerzeilen vor einer geschachtelten Definition, {1} gefunden</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <source>line break after binary operator</source> + <translation>Zeilenumbruch nach Binäroperator</translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> - <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> - <translation>'async' und 'await' sind ab Python 3.7 reservierte Schlüsselwörter</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> - <source>missing whitespace around parameter equals</source> - <translation>fehlende Leerzeichen um Parameter-Gleichheitszeichen</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172"/> - <source>expected {0} blank lines, found {1}</source> - <translation>erwartete {0} leere Zeilen, {1} gefunden</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="185"/> - <source>expected {0} blank lines before a nested definition, found {1}</source> - <translation>erwartete {0} Leerzeilen vor einer geschachtelten Definition, {1} gefunden</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> - <source>line break after binary operator</source> - <translation>Zeilenumbruch nach Binäroperator</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>invalid escape sequence '\{0}'</source> <translation>ungültige Escape-Sequenz '\{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> <source>too many blank lines ({0}) before a nested definition, expected {1}</source> <translation>zu viele leere Zeilen ({0}) vor einer geschachtelten Definition, erwartete {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> <source>too many blank lines ({0}), expected {1}</source> <translation>zu viele leere Zeilen ({0}), erwartete {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> <source>over-indented</source> <translation>zu weit eingerückt</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> <source>doc line too long ({0} > {1} characters)</source> <translation>Dokumentationszeile zu lang ({0} > {1} Zeichen)</translation> </message>
--- a/eric6/i18n/eric6_empty.ts Sun May 03 13:42:52 2020 +0200 +++ b/eric6/i18n/eric6_empty.ts Wed Jun 17 17:14:12 2020 +0200 @@ -352,7 +352,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="200"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="201"/> <source>Add Bookmark</source> <translation type="unfinished"></translation> </message> @@ -1088,72 +1088,72 @@ <context> <name>AnnotationsChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="808"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> <source>missing type annotation for function argument '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> - <source>missing type annotation for '*{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="814"/> + <source>missing type annotation for '*{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> <source>missing type annotation for '**{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> - <source>missing return type annotation for public function</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="826"/> - <source>missing return type annotation for protected function</source> + <source>missing return type annotation for public function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="829"/> - <source>missing return type annotation for private function</source> + <source>missing return type annotation for protected function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="832"/> - <source>missing return type annotation for special method</source> + <source>missing return type annotation for private function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="835"/> - <source>missing return type annotation for staticmethod</source> + <source>missing return type annotation for special method</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="838"/> + <source>missing return type annotation for staticmethod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="841"/> <source>missing return type annotation for classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="850"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="853"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> - <source>missing type annotation for 'self' in method</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="820"/> + <source>missing type annotation for 'self' in method</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> <source>missing type annotation for 'cls' in classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="842"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="845"/> <source>type annotation coverage of {0}% is too low</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="846"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="849"/> <source>type annotation is too complex ({0} > {1})</source> <translation type="unfinished"></translation> </message> @@ -1791,7 +1791,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="174"/> <source>&Delete</source> <translation type="unfinished"></translation> </message> @@ -1806,50 +1806,65 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="154"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> <source>&Open</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> - <source>Open in New &Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="167"/> - <source>Edit &Name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="170"/> - <source>Edit &Address</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="176"/> - <source>&Properties...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="331"/> - <source>New Folder</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> + <source>Open in New &Tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> + <source>Edit &Name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <source>Edit &Address</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="178"/> + <source>&Properties...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="343"/> + <source>New Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="160"/> <source>Open in New &Background Tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="161"/> - <source>Open in New &Window</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="163"/> + <source>Open in New &Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="165"/> <source>Open in New Pri&vate Window</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="182"/> + <source>New &Folder...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>New Bookmark Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>Enter title for new bookmark folder:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>BookmarksImportDialog</name> @@ -2745,6 +2760,49 @@ </message> </context> <context> + <name>CheckerCategories</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="63"/> + <source>Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="66"/> + <source>Code Complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="69"/> + <source>Documentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="72"/> + <source>Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="75"/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="78"/> + <source>Naming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="84"/> + <source>Warnings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <source>Security</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ChromeImporter</name> <message> <location filename="../WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py" line="43"/> @@ -2879,15 +2937,20 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source>Select Path to Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source><p>The device volume <b>{0}</b> could not be found. Is the device in 'bootloader' mode and mounted?</p> <p>Alternatively select the "Manual Select" entry and enter the path to the device below.</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="52"/> + <source>Manual Select</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ClearPrivateDataDialog</name> @@ -3234,6 +3297,14 @@ </message> </context> <context> + <name>CodeStyleChecker</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1133"/> + <source>No message defined for code '{0}'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>CodeStyleCheckerDialog</name> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="14"/> @@ -3248,513 +3319,653 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="44"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="42"/> <source>Global Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="50"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="68"/> <source>Exclude Files:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="57"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="75"/> <source>Enter filename patterns of files to be excluded separated by a comma</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="82"/> <source>Exclude Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="71"/> - <source>Enter message codes or categories to be excluded separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="141"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="159"/> <source>Press to select the message codes from a list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="85"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="103"/> <source>Included Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="92"/> - <source>Enter message codes or categories to be included separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="106"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="124"/> <source>Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="113"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="131"/> <source>Enter message codes of issues to be fixed automatically (leave empty to fix all)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="127"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="145"/> <source>Don't Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="134"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="152"/> <source>Enter message codes of issues not to be fixed automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="150"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="168"/> <source>Select to repeat each message type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="153"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="171"/> <source>Repeat messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="163"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="181"/> <source>Select to fix some issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="166"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="184"/> <source>Fix issues automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="176"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="194"/> <source>Select to show ignored issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="179"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="197"/> <source>Show ignored</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="233"/> <source>Specific Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="257"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="275"/> <source>Source Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="265"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="283"/> <source>Max. Line Length:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="316"/> <source>Enter the maximum allowed line length (PEP-8: 79 characters)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="406"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="424"/> <source>Select to allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="409"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="427"/> <source>Allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="419"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="437"/> <source>Documentation Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="425"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="443"/> <source>Docstring Type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="450"/> <source>Select the rule set for docstrings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="455"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="473"/> <source>Coding Line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="461"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="479"/> <source>Valid Encodings:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="468"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="486"/> <source>Enter valid encodings separated by a comma (leave empty to use defaults)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="478"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="496"/> <source>Copyright</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="484"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="502"/> <source>Min. File Size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="491"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="509"/> <source>Enter the minimum size a file must have to be checked (0 for all files)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="517"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="535"/> <source>Author:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="524"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="542"/> <source>Enter a copyright author name to check for (leave empty to omit this check)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="534"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="552"/> <source>Future Imports</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="540"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="558"/> <source>Expected Imports:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="654"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="672"/> <source>Code Complexity</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="698"/> <source>Enter the maximum allowed code complexity (McCabe: 10)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="830"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1090"/> <source>Press to start the code style check run</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1093"/> + <source>&Start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1254"/> + <source>Press to fix the selected issues</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1257"/> + <source>&Fix Selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1113"/> + <source>Press to load the default values</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1116"/> + <source>&Load Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1123"/> + <source>Press to store the current values as defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1126"/> + <source>St&ore Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1133"/> + <source>Press to reset the default values</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1136"/> + <source>&Reset Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1167"/> + <source><b>Result List</b> +<p>This list shows the results of the code style check. Double clicking +an entry will open this entry in an editor window and position the cursor at +the respective line and position.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1183"/> + <source>File/Line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1188"/> + <source>Code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1193"/> + <source>Message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1214"/> + <source>Shows the progress of the code style check</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1223"/> + <source>%v/%m Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="117"/> + <source>PEP-257</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="118"/> + <source>Eric</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="144"/> + <source>Statistics...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="146"/> + <source>Press to show some statistics for the last run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="149"/> + <source>Show</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="151"/> + <source>Press to show all files containing an issue</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="214"/> + <source>Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="241"/> + <source>Error: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="820"/> + <source>Preparing files...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="859"/> + <source>Transferring data...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="927"/> + <source>{0} (ignored)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="982"/> + <source>No issues found.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="248"/> + <source>Fix: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="985"/> + <source>No files found (check your ignore list).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="584"/> + <source>Ignore Built-ins Assignment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="600"/> + <source>Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="605"/> + <source>Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="615"/> + <source>Press to add a built-in assignment to be ignored</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="625"/> + <source>Press to delete the selected entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="691"/> + <source>Max. McCabe Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="714"/> + <source>Max. Line Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="721"/> + <source>Enter the maximum complexity (number of nodes) for a line of code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="737"/> + <source>Max. Line Complexity Score:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="744"/> + <source>Enter the maximum allowed median for line complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="350"/> + <source>Blank Lines Before</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="356"/> + <source>Top Level Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="363"/> + <source>Enter the number of blank lines before top level classes and functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="395"/> + <source>Methods and Nested Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="402"/> + <source>Enter the number of blank lines before methods and nested classes or functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="309"/> + <source>Max. Documentation Line Length:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="653"/> + <source>Commented Code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="659"/> + <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="662"/> + <source>Search aggressively</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="763"/> + <source>Type Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="769"/> + <source>Min. Coverage:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="776"/> + <source>Enter the minimum percentage of type annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="779"/> + <source>off</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="782"/> + <source>%</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="805"/> + <source>Max. Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="812"/> + <source>Enter the maximum type annotation complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="32"/> + <source>Configure</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1146"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1244"/> + <source>Press to restart the code style check run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1247"/> + <source>Restart</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="48"/> + <source>Categories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="58"/> + <source>Select the categories of checks to be performed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="89"/> + <source>Enter message codes to be excluded separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="110"/> + <source>Enter message codes to be included separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="833"/> - <source>&Start</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="840"/> - <source>Press to fix the selected issues</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="843"/> - <source>&Fix Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="863"/> - <source>Press to load the default values</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="866"/> - <source>&Load Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="873"/> - <source>Press to store the current values as defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="876"/> - <source>St&ore Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="883"/> - <source>Press to reset the default values</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="886"/> - <source>&Reset Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="904"/> - <source><b>Result List</b> -<p>This list shows the results of the code style check. Double clicking -an entry will open this entry in an editor window and position the cursor at -the respective line and position.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="920"/> - <source>File/Line</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="925"/> - <source>Code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="930"/> - <source>Message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="951"/> - <source>Shows the progress of the code style check</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="960"/> - <source>%v/%m Files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="80"/> - <source>PEP-257</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> - <source>Eric</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="88"/> - <source>Statistics...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="90"/> - <source>Press to show some statistics for the last run</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93"/> - <source>Show</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95"/> - <source>Press to show all files containing an issue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="152"/> - <source>Errors</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="637"/> - <source>Error: {0}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="622"/> - <source>Preparing files...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="664"/> - <source>Transferring data...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="730"/> - <source>{0} (ignored)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="778"/> - <source>No issues found.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="244"/> - <source>Fix: {0}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="781"/> - <source>No files found (check your ignore list).</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="566"/> - <source>Ignore Built-ins Assignment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="582"/> - <source>Left</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="587"/> - <source>Right</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="597"/> - <source>Press to add a built-in assignment to be ignored</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="607"/> - <source>Press to delete the selected entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="673"/> - <source>Max. McCabe Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="696"/> - <source>Max. Line Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="703"/> - <source>Enter the maximum complexity (number of nodes) for a line of code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="719"/> - <source>Max. Line Complexity Score:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="726"/> - <source>Enter the maximum allowed median for line complexity</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="332"/> - <source>Blank Lines Before</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="338"/> - <source>Top Level Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="345"/> - <source>Enter the number of blank lines before top level classes and functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="377"/> - <source>Methods and Nested Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="384"/> - <source>Enter the number of blank lines before methods and nested classes or functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="291"/> - <source>Max. Documentation Line Length:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="635"/> - <source>Commented Code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="641"/> - <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="644"/> - <source>Search aggressively</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="745"/> - <source>Type Annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="751"/> - <source>Min. Coverage:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="758"/> - <source>Enter the minimum percentage of type annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="761"/> - <source>off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="764"/> - <source>%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="787"/> - <source>Max. Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="794"/> - <source>Enter the maximum type annotation complexity</source> + <source>Security Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="839"/> + <source>Hardcoded 'tmp' Directories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="849"/> + <source>Weak Cryptographic Keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="855"/> + <source>DSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="973"/> + <source>High Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="868"/> + <source>Select the bit length below which a DSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="990"/> + <source>Medium Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="885"/> + <source>Select the bit length below which a DSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="911"/> + <source>RSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="924"/> + <source>Select the bit length below which a RSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="941"/> + <source>Select the bit length below which a RSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="967"/> + <source>Elliptic Curves</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="980"/> + <source>Select the bit length below which an Elliptic Curve is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="997"/> + <source>Select the bit length below which an Elliptic Curve is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1026"/> + <source>Enter the names of insecure SSL protocols and methods (one per line)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1033"/> + <source>Insecure SSL Protocols:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1043"/> + <source>Insecure Hashes:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1050"/> + <source>Enter a list of hash methods to be considered insecure separated by comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1057"/> + <source>Select to also check for insecure exception handling for typed exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1060"/> + <source>Check Typed Exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1067"/> + <source>Enter directory names (one per line) to be checked for</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1154"/> + <source><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>CodeStyleCheckerPlugin</name> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="110"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="112"/> <source>Python 2 batch check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="126"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="128"/> <source>Python 3 batch check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>Check Code Style</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>&Code Style...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="262"/> - <source>Check code style.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>Check Code Style</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>&Code Style...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="266"/> + <source>Check code style.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="364"/> <source><b>Check Code Style...</b><p>This checks Python files for compliance to the code style conventions given in various PEPs.</p></source> <translation type="unfinished"></translation> </message> @@ -3790,229 +4001,224 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="857"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="861"/> <source>Triple single quotes converted to triple double quotes.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="860"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="864"/> <source>Introductory quotes corrected to be {0}"""</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="867"/> <source>Single line docstring put on one line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="866"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="870"/> <source>Period added to summary line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="893"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="897"/> <source>Blank line before function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="872"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="876"/> <source>Blank line inserted before class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="875"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="879"/> <source>Blank line inserted after class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="878"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="882"/> <source>Blank line inserted after docstring summary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="881"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="885"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="884"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="888"/> <source>Leading quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="887"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="891"/> <source>Trailing quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="890"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="894"/> <source>Blank line before class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="896"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="900"/> <source>Blank line after class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="899"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="903"/> <source>Blank line after function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="902"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="906"/> <source>Blank line after last paragraph removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="905"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="909"/> <source>Tab converted to 4 spaces.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="908"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="912"/> <source>Indentation adjusted to be a multiple of four.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="911"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="915"/> <source>Indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="914"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="918"/> <source>Indentation of closing bracket corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="917"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="921"/> <source>Missing indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="924"/> <source>Closing bracket aligned to opening bracket.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="923"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="927"/> <source>Indentation level changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="926"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="930"/> <source>Indentation level of hanging indentation changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="929"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="933"/> <source>Visual indentation corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="944"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="948"/> <source>Extraneous whitespace removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="941"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="945"/> <source>Missing whitespace added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="947"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> <source>Whitespace around comment sign corrected.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="955"/> <source>%n blank line(s) inserted.</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="954"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> <source>%n superfluous lines removed</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="962"/> <source>Superfluous blank lines removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="961"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="965"/> <source>Superfluous blank lines after function decorator removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="964"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="968"/> <source>Imports were put on separate lines.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="967"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="971"/> <source>Long lines have been shortened.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="970"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="974"/> <source>Redundant backslash in brackets removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="976"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="980"/> <source>Compound statement corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="979"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="983"/> <source>Comparison to None/True/False corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="982"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="986"/> <source>'{0}' argument added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="985"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="989"/> <source>'{0}' argument removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="988"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="992"/> <source>Whitespace stripped from end of line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="991"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="995"/> <source>newline added to end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="994"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="998"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="997"/> - <source>'<>' replaced by '!='.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1001"/> + <source>'<>' replaced by '!='.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1005"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1107"/> - <source> no message defined for code '{0}'</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>CodeStyleStatisticsDialog</name> @@ -4037,40 +4243,47 @@ <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="60"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="63"/> <source>%n issue(s) found</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="62"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="65"/> <source>%n issue(s) ignored</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="67"/> <source>%n issue(s) fixed</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="66"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="69"/> <source>%n file(s) checked</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="68"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="71"/> <source>%n file(s) with issues found</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="73"/> + <source>%n security issue(s) acknowledged</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> </context> <context> <name>CodingError</name> @@ -4482,22 +4695,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="479"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="482"/> <source>'{0}' is too complex ({1})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="481"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="484"/> <source>source code line is too complex ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="483"/> - <source>overall source code line complexity is too high ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="486"/> + <source>overall source code line complexity is too high ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="489"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> @@ -8210,242 +8423,242 @@ <context> <name>DocStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="288"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="291"/> <source>module is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290"/> - <source>public function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293"/> - <source>private function/method may be missing a docstring</source> + <source>public function/method is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296"/> + <source>private function/method may be missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299"/> <source>public class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301"/> <source>private class may be missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="300"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="303"/> <source>docstring not surrounded by """</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302"/> - <source>docstring containing \ not surrounded by r"""</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305"/> - <source>docstring containing unicode character not surrounded by u"""</source> + <source>docstring containing \ not surrounded by r"""</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308"/> + <source>docstring containing unicode character not surrounded by u"""</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311"/> <source>one-liner docstring on multiple lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313"/> <source>docstring has wrong indentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="312"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="315"/> <source>docstring does not contain a summary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> <source>docstring summary does not end with a period</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> <source>docstring summary is not in imperative mood (Does instead of Do)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320"/> - <source>docstring summary looks like a function's/method's signature</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> - <source>docstring does not mention the return value type</source> + <source>docstring summary looks like a function's/method's signature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> - <source>function/method docstring is separated by a blank line</source> + <source>docstring does not mention the return value type</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> - <source>class docstring is not preceded by a blank line</source> + <source>function/method docstring is separated by a blank line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> + <source>class docstring is not preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> <source>class docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> <source>docstring summary is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341"/> <source>last paragraph of docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> - <source>private function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> + <source>private function/method is missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352"/> <source>private class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> - <source>leading quotes of docstring not on separate line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <source>leading quotes of docstring not on separate line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> <source>trailing quotes of docstring not on separate line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>docstring summary does not start with '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="363"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="366"/> <source>docstring does not contain a @return line but function/method returns something</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370"/> <source>docstring contains a @return line but function/method doesn't return anything</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> - <source>docstring does not contain enough @param/@keyparam lines</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> - <source>docstring contains too many @param/@keyparam lines</source> + <source>docstring does not contain enough @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> - <source>keyword only arguments must be documented with @keyparam lines</source> + <source>docstring contains too many @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> - <source>order of @param/@keyparam lines does not match the function/method signature</source> + <source>keyword only arguments must be documented with @keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> + <source>order of @param/@keyparam lines does not match the function/method signature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="386"/> <source>class docstring is preceded by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> <source>class docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> - <source>function/method docstring is preceded by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> + <source>function/method docstring is preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> <source>function/method docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> - <source>last paragraph of docstring is followed by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="399"/> + <source>last paragraph of docstring is followed by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="402"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="403"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="406"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="426"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="429"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="407"/> - <source>raised exception '{0}' is not documented in docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="410"/> - <source>documented exception '{0}' is not raised</source> + <source>raised exception '{0}' is not documented in docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="413"/> - <source>docstring does not contain a @signal line but class defines signals</source> + <source>documented exception '{0}' is not raised</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="416"/> - <source>docstring contains a @signal line but class doesn't define signals</source> + <source>docstring does not contain a @signal line but class defines signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="419"/> - <source>defined signal '{0}' is not documented in docstring</source> + <source>docstring contains a @signal line but class doesn't define signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="422"/> + <source>defined signal '{0}' is not documented in docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="425"/> <source>documented signal '{0}' is not defined</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="354"/> <source>class docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347"/> <source>function docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>module docstring is still a default string</source> <translation type="unfinished"></translation> </message> @@ -10261,12 +10474,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Add Entry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Enter the entry to add to the list:</source> <translation type="unfinished"></translation> </message> @@ -10735,7 +10948,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7847"/> + <location filename="../QScintilla/Editor.py" line="7848"/> <source>Check spelling...</source> <translation type="unfinished"></translation> </message> @@ -11005,7 +11218,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5615"/> + <location filename="../QScintilla/Editor.py" line="5616"/> <source>Enable breakpoint</source> <translation type="unfinished"></translation> </message> @@ -11200,307 +11413,307 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>Call-Tips Provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5618"/> + <location filename="../QScintilla/Editor.py" line="5619"/> <source>Disable breakpoint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Code Coverage</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Please select a coverage file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>Show Code Coverage Annotations</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6049"/> + <location filename="../QScintilla/Editor.py" line="6050"/> <source>All lines have been covered.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>There is no coverage file available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Profile Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Please select a profile file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>Syntax Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>No syntax error message available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>Warning</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>No warning messages available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6611"/> + <location filename="../QScintilla/Editor.py" line="6612"/> <source>Style: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6614"/> + <location filename="../QScintilla/Editor.py" line="6615"/> <source>Warning: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6621"/> + <location filename="../QScintilla/Editor.py" line="6622"/> <source>Error: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Macro Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Select a macro name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6754"/> + <location filename="../QScintilla/Editor.py" line="6755"/> <source>Load macro file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Macro files (*.macro)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source>Error loading macro</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6768"/> + <location filename="../QScintilla/Editor.py" line="6769"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Save macro file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source>Save macro</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source>Error saving macro</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Start Macro Recording</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Macro recording is already active. Start new?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Macro Recording</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Enter name of the macro:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6999"/> + <location filename="../QScintilla/Editor.py" line="7000"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7005"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7009"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>File changed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7179"/> + <location filename="../QScintilla/Editor.py" line="7180"/> <source>{0} (ro)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source>Drop Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source><p><b>{0}</b> is not a file.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7341"/> + <location filename="../QScintilla/Editor.py" line="7342"/> <source>Resources</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7343"/> + <location filename="../QScintilla/Editor.py" line="7344"/> <source>Add file...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7345"/> + <location filename="../QScintilla/Editor.py" line="7346"/> <source>Add files...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7347"/> + <location filename="../QScintilla/Editor.py" line="7348"/> <source>Add aliased file...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7350"/> + <location filename="../QScintilla/Editor.py" line="7351"/> <source>Add localized resource...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7354"/> + <location filename="../QScintilla/Editor.py" line="7355"/> <source>Add resource frame</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7373"/> + <location filename="../QScintilla/Editor.py" line="7374"/> <source>Add file resource</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7389"/> + <location filename="../QScintilla/Editor.py" line="7390"/> <source>Add file resources</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Add aliased file resource</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Alias for file <b>{0}</b>:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Package Diagram</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Include class attributes?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Imports Diagram</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Include imports from external modules?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Application Diagram</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Include module names?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7850"/> + <location filename="../QScintilla/Editor.py" line="7851"/> <source>Add to dictionary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7852"/> + <location filename="../QScintilla/Editor.py" line="7853"/> <source>Ignore All</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>Sort Lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>The selection contains illegal data for a numerical sort.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>Register Mouse Click Handler</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation type="unfinished"></translation> </message> @@ -11525,12 +11738,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source>EditorConfig Properties</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation type="unfinished"></translation> </message> @@ -16878,17 +17091,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="66"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="71"/> <source>Firmware Files (*.img);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="72"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="77"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="76"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="82"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> @@ -16906,12 +17119,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="211"/> + <location filename="../MicroPython/EspDevices.py" line="217"/> <source>Flash MicroPython Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="236"/> + <location filename="../MicroPython/EspDevices.py" line="248"/> <source>Flash Additional Firmware</source> <translation type="unfinished"></translation> </message> @@ -16936,7 +17149,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>'esptool write_flash' Output</source> <translation type="unfinished"></translation> </message> @@ -16946,47 +17159,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>Show Chip ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>Show Flash ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>Show MAC Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>'esptool read_flash' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>'esptool chip_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>'esptool flash_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>'esptool read_mac' Output</source> <translation type="unfinished"></translation> </message> @@ -17019,20 +17232,35 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="72"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="96"/> <source>Address:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="79"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="103"/> <source>Enter the flash addres in the hexadecimal form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="43"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="51"/> <source>Firmware Files (*.bin);;All Files (*)</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="75"/> + <source>Flash Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="82"/> + <source>Select the flash mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="89"/> + <source>Leave empty to use the default mode.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ExceptionLogger</name> @@ -37339,6 +37567,14 @@ </message> </context> <context> + <name>IgnoredDevicesDialog</name> + <message> + <location filename="../MicroPython/IgnoredDevicesDialog.ui" line="14"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImageMarkupDialog</name> <message> <location filename="../QScintilla/MarkupProviders/ImageMarkupDialog.py" line="52"/> @@ -43122,27 +43358,27 @@ <context> <name>MicroPythonDevice</name> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="214"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="223"/> <source>Unsupported Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="224"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="233"/> <source>REPL is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="243"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="252"/> <source>Plotter is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="262"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="271"/> <source>Running scripts is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="282"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="291"/> <source>File Manager is not supported by this device.</source> <translation type="unfinished"></translation> </message> @@ -43700,7 +43936,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="460"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="493"/> <source>Press to connect the selected device</source> <translation type="unfinished"></translation> </message> @@ -43727,32 +43963,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="430"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="463"/> <source>Clear</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="432"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="465"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="433"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="466"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="455"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="488"/> <source>Press to disconnect the current device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>No device attached</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -43761,212 +43997,212 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source>Start REPL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source>Serial Device Connect</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source>Run Script</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="921"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="954"/> <source>There is no editor open. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="929"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="962"/> <source>The current editor does not contain a script. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source><p>Cannot run script.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Open Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Python3 Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source>Start Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>Unsaved Chart Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>The chart contains unsaved data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source>Start File Manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1136"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169"/> <source>Show Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1139"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1172"/> <source>Show Implementation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source>Synchronize Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1147"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1180"/> <source>Show Device Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1150"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1183"/> <source>Show Local Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1461"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1497"/> <source>Compile Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1481"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1517"/> <source>Compile Current Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1188"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224"/> <source><h3>Device Version Information</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1197"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1233"/> <source>No version information available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1199"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1235"/> <source>Device Version Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1258"/> <source>unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source>Device Implementation Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source><p>The time of the connected device was synchronized with the local time.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1272"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308"/> <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1280"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1316"/> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1294"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1330"/> <source>Device Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source>Local Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source>Error handling device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1413"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1449"/> <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1467"/> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1441"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1477"/> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1451"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1487"/> <source>'mpy-cross' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1474"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1510"/> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished"></translation> </message> @@ -43981,50 +44217,70 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1018"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051"/> <source>µPy Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1098"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1131"/> <source>µPy Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1174"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1207"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1178"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1214"/> <source>Configure</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1153"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186"/> <source>Show Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1170"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1203"/> <source>Download Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source>Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1333"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1369"/> <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>Unknown MicroPython Device</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:eric-bugs@eric-ide.python-projects.org"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>{0} ({1:04x}/{2:04x})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1211"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -44825,463 +45081,463 @@ <context> <name>MiscellaneousChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="492"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> <source>coding magic comment not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> - <source>unknown encoding ({0}) found in coding magic comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="498"/> - <source>copyright notice not present</source> + <source>unknown encoding ({0}) found in coding magic comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="501"/> - <source>copyright notice contains invalid author</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="702"/> - <source>found {0} formatter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> - <source>format string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> - <source>docstring does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> - <source>other string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> - <source>format call uses too large index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> - <source>format call uses missing keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> - <source>format call uses keyword arguments but no named entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> - <source>format call uses variable arguments but no numbered entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> - <source>format call uses implicit and explicit indexes together</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> - <source>format call provides unused index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> - <source>format call provides unused keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="751"/> - <source>expected these __future__ imports: {0}; but only got: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> - <source>expected these __future__ imports: {0}; but got none</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="761"/> - <source>print statement found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> - <source>one element tuple found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="800"/> - <source>{0}: {1}</source> + <source>copyright notice not present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> + <source>copyright notice contains invalid author</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> + <source>found {0} formatter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> + <source>format string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> + <source>docstring does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> + <source>other string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> + <source>format call uses too large index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> + <source>format call uses missing keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> + <source>format call uses keyword arguments but no named entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> + <source>format call uses variable arguments but no numbered entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> + <source>format call uses implicit and explicit indexes together</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> + <source>format call provides unused index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <source>format call provides unused keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> + <source>expected these __future__ imports: {0}; but only got: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <source>expected these __future__ imports: {0}; but got none</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> + <source>print statement found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="767"/> + <source>one element tuple found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="803"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="507"/> <source>"{0}" is a Python builtin and is being shadowed; consider renaming the variable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="508"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="511"/> <source>"{0}" is used as an argument and thus shadows a Python builtin; consider renaming the argument</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="512"/> - <source>unnecessary generator - rewrite as a list comprehension</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="515"/> - <source>unnecessary generator - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a list comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="518"/> - <source>unnecessary generator - rewrite as a dict comprehension</source> + <source>unnecessary generator - rewrite as a set comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="521"/> - <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="524"/> + <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> <source>unnecessary list comprehension - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> <source>unnecessary list comprehension - "{0}" can take a generator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="770"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> <source>mutable default argument of type {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> <source>sort keys - '{0}' should be before '{1}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> <source>logging statement uses '%'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> - <source>logging statement uses f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> + <source>logging statement uses f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="750"/> <source>logging statement uses 'warn' instead of 'warning'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> <source>logging statement uses string.format()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> <source>logging statement uses '+'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="760"/> <source>gettext import with alias _ found: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="648"/> - <source>Python does not support the unary prefix increment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> - <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> - <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> - <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> - <source>Python 3 does not include '.iter*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> - <source>Python 3 does not include '.view*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> - <source>'.next()' does not exist in Python 3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> - <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> - <source>mutable default argument of function call '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> - <source>using .strip() with multi-character strings is misleading</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> - <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> - <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <source>Python does not support the unary prefix increment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> + <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="663"/> + <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> + <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> + <source>Python 3 does not include '.iter*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> + <source>Python 3 does not include '.view*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> + <source>'.next()' does not exist in Python 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="700"/> + <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="776"/> - <source>None should not be added at any return if function has no return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="780"/> - <source>an explicit value at every return should be added if function has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="784"/> - <source>an explicit return at the end of the function should be added if it has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="788"/> - <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <source>mutable default argument of function call '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> + <source>using .strip() with multi-character strings is misleading</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="681"/> + <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="671"/> + <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <source>None should not be added at any return if function has no return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="783"/> + <source>an explicit value at every return should be added if function has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="787"/> + <source>an explicit return at the end of the function should be added if it has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="791"/> + <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> <source>do not call assert False since python -O removes these calls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="672"/> - <source>unncessary f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="675"/> + <source>unncessary f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> <source>cannot use 'self.__class__' as first argument of 'super()' call</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> - <source>do not call getattr with a constant attribute value</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> + <source>do not call getattr with a constant attribute value</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>do not call setattr with a constant attribute value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="796"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="799"/> <source>commented code lines should be removed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="792"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="795"/> <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="559"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="562"/> <source>use of 'datetime.datetime()' without 'tzinfo' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="566"/> <source>use of 'datetime.datetime.today()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> <source>use of 'datetime.datetime.utcnow()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="571"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="574"/> <source>use of 'datetime.datetime.utcfromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(, tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>use of 'datetime.datetime.now()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> <source>use of 'datetime.datetime.fromtimestamp()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="583"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="586"/> <source>use of 'datetime.datetime.strptime()' should be followed by '.replace(tzinfo=)'</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> + <source>use of 'datetime.date()' should be avoided. +Use 'datetime.datetime(, tzinfo=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> + <source>use of 'datetime.date.today()' should be avoided. +Use 'datetime.datetime.now(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="601"/> + <source>use of 'datetime.date.fromtimestamp()' should be avoided. +Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> + <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> - <source>use of 'datetime.date()' should be avoided. -Use 'datetime.datetime(, tzinfo=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> - <source>use of 'datetime.date.today()' should be avoided. -Use 'datetime.datetime.now(tz=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="598"/> - <source>use of 'datetime.date.fromtimestamp()' should be avoided. -Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> + <source>use of 'datetime.date.fromordinal()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> - <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> - <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> - <source>use of 'datetime.date.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> <source>use of 'datetime.date.fromisoformat()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> <source>unnecessary {0} call - rewrite as a literal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> - <source>unnecessary {0} literal - rewrite as a {1} literal</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="536"/> - <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> + <source>unnecessary {0} literal - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="539"/> - <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> + <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="542"/> - <source>unnecessary list call - remove the outer call to list()</source> + <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="545"/> - <source>unnecessary list comprehension - "in" can take a generator</source> + <source>unnecessary list call - remove the outer call to list()</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="548"/> - <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <source>unnecessary list comprehension - "in" can take a generator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="551"/> + <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>unnecessary {0} passed to list() - remove the outer call to {1}()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="613"/> - <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="616"/> - <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="619"/> + <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="622"/> <source>'sys.version' compared to string (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> - <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> - <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="629"/> + <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="632"/> <source>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="633"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> <source>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="637"/> - <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="640"/> + <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="643"/> <source>'sys.version' compared to string (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>'sys.version[:1]' referenced (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> @@ -45737,72 +45993,72 @@ <context> <name>NamingStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> <source>class names should use CapWords convention</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> - <source>function name should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="438"/> - <source>argument name should be lowercase</source> + <source>function name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> - <source>first argument of a class method should be named 'cls'</source> + <source>argument name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="444"/> - <source>first argument of a method should be named 'self'</source> + <source>first argument of a class method should be named 'cls'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> + <source>first argument of a method should be named 'self'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>first argument of a static method should not be named 'self' or 'cls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="451"/> - <source>module names should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="454"/> - <source>package names should be lowercase</source> + <source>module names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="457"/> - <source>constant imported as non constant</source> + <source>package names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="460"/> - <source>lowercase imported as non lowercase</source> + <source>constant imported as non constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="463"/> - <source>camelcase imported as lowercase</source> + <source>lowercase imported as non lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="466"/> - <source>camelcase imported as constant</source> + <source>camelcase imported as lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="469"/> - <source>variable in function should be lowercase</source> + <source>camelcase imported as constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="472"/> + <source>variable in function should be lowercase</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="475"/> <source>names 'l', 'O' and 'I' should be avoided</source> <translation type="unfinished"></translation> </message> @@ -45843,50 +46099,50 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="201"/> <source>SSL Certificate Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> - <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="205"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="212"/> <source>&Permanent accept</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="207"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="214"/> <source>&Temporary accept</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="209"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="216"/> <source>&Reject</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="243"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="284"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="247"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="288"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="295"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="336"/> <source>Authentication required</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="296"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="337"/> <source>Authentication is required to access:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="202"/> + <source><b>{0}</b><p>The host <b>{1}</b> you are trying to access has errors in the SSL certificate.</p><ul><li>{2}</li></ul><p>Would you like to make an exception?</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>NetworkPage</name> @@ -47200,6 +47456,41 @@ <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../PipInterface/Pip.py" line="679"/> + <source>Cache Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="704"/> + <source>List Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="694"/> + <source>Enter a file pattern (empty for all):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="728"/> + <source>Remove Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="720"/> + <source>Enter a file pattern:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="751"/> + <source>Purge Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="744"/> + <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PipDialog</name> @@ -47952,7 +48243,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/> <source>Install Packages</source> <translation type="unfinished"></translation> </message> @@ -47977,28 +48268,48 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="942"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="955"/> <source>Edit User Configuration...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="945"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="958"/> <source>Edit Environment Configuration...</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="963"/> + <source>Configure...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>Edit Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>No valid configuration path determined. Aborting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="941"/> + <source>Show Cache Info...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="944"/> + <source>Show Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="947"/> + <source>Remove Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../PipInterface/PipPackagesWidget.py" line="950"/> - <source>Configure...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>Edit Configuration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>No valid configuration path determined. Aborting</source> + <source>Purge Cache...</source> <translation type="unfinished"></translation> </message> </context> @@ -49260,17 +49571,17 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1640"/> + <location filename="../Preferences/__init__.py" line="1645"/> <source>Export Preferences</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Properties File (*.ini);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Import Preferences</source> <translation type="unfinished"></translation> </message> @@ -58205,82 +58516,72 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> - <source><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="90"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="85"/> <source>Qt Tools</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="296"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="291"/> <source>Tools Directory:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="114"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="109"/> <source>Enter the path of the Qt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="123"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="118"/> <source>The tool executable is composed of the prefix, the tool name and the postfix. For win, the extension is added automatically.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="135"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="130"/> <source>Qt-Prefix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="137"/> <source>Enter the prefix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="144"/> <source>Qt-Postfix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="151"/> <source>Enter the postfix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="169"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="164"/> <source>This gives an example of the complete tool name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="172"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="167"/> <source>designer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="221"/> <source>Indent Width:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="233"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="228"/> <source>Select the indent width (default: 4)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="327"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="322"/> <source>Generate imports relative to '.'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="211"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="206"/> <source>Enter the path of the PyQt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -58290,7 +58591,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="312"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="307"/> <source>Enter the path of the PySide2 tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -58300,35 +58601,40 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="187"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="182"/> <source>PyQt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="220"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="215"/> <source>pyuic Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="272"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="267"/> <source>Select to generate extra code to test and display the form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="275"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="270"/> <source>Generate Extra Test Code</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="288"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="283"/> <source>PySide2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="316"/> <source>pyside2-uic Options</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> + <source><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Queues</name> @@ -60109,6 +60415,334 @@ </message> </context> <context> + <name>Security</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="16"/> + <source>Use of 'assert' detected. The enclosed code will be removed when compiling to optimised byte code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="22"/> + <source>Use of 'exec' detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="27"/> + <source>'chmod' setting a permissive mask {0} on file ({1}).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="32"/> + <source>Possible binding to all interfaces.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="43"/> + <source>Possible hardcoded password: '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="48"/> + <source>Probable insecure usage of temp file/directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="53"/> + <source>Try, Except, Pass detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="56"/> + <source>Try, Except, Continue detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="61"/> + <source>A Flask app appears to be run with debug=True, which exposes the Werkzeug debugger and allows the execution of arbitrary code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="67"/> + <source>Pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="71"/> + <source>Deserialization with the marshal module is possibly dangerous.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="74"/> + <source>Use of insecure MD2, MD4, MD5, or SHA1 hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="77"/> + <source>Use of insecure cipher '{0}'. Replace with a known secure cipher such as AES.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="81"/> + <source>Use of insecure cipher mode '{0}'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="84"/> + <source>Use of insecure and deprecated function (mktemp).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="87"/> + <source>Use of possibly insecure function - consider using safer ast.literal_eval.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="91"/> + <source>Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="95"/> + <source>Use of HTTPSConnection on older versions of Python prior to 2.7.9 and 3.4.3 do not provide security, see https://wiki.openstack.org/wiki/OSSN/OSSN-0033</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="100"/> + <source>Audit url open for permitted schemes. Allowing use of file:/ or custom schemes is often unexpected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="104"/> + <source>Standard pseudo-random generators are not suitable for security/cryptographic purposes.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="108"/> + <source>Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="142"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="147"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="152"/> + <source>FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="156"/> + <source>The input method in Python 2 will read from standard input, evaluate and run the resulting string as Python source code. This is similar, though in many ways worse, than using eval. On Python 2, use raw_input instead, input is safe in Python 3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="162"/> + <source>By default, Python will create a secure, verified SSL context for use in such classes as HTTPSConnection. However, it still allows using an insecure context via the _create_unverified_context that reverts to the previous behavior that does not validate certificates or perform hostname checks.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="169"/> + <source>Use of os.tempnam() and os.tmpnam() is vulnerable to symlink attacks. Consider using tmpfile() instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="175"/> + <source>Use of insecure {0} hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="180"/> + <source>A telnet-related module is being imported. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="184"/> + <source>A FTP-related module is being imported. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="192"/> + <source>Consider possible security implications associated with the '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="216"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="221"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="226"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Use defused.xmlrpc.monkey_patch() function to monkey-patch xmlrpclib and mitigate XML vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="231"/> + <source>Consider possible security implications associated with '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="235"/> + <source>The pyCrypto library and its module '{0}' are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="242"/> + <source>'requests' call with verify=False disabling SSL certificate checks, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="248"/> + <source>'ssl.wrap_socket' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="252"/> + <source>'SSL.Context' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="256"/> + <source>Function call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="260"/> + <source>Function definition identified with insecure SSL/TLS protocol version by default, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="264"/> + <source>'ssl.wrap_socket' call with no SSL/TLS protocol version specified, the default 'SSLv23' could be insecure, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="270"/> + <source>{0} key sizes below {1:d} bits are considered breakable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="275"/> + <source>Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary objects. Consider 'yaml.safe_load()'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="281"/> + <source>Paramiko call with policy set to automatically trust the unknown host key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="287"/> + <source>Possible shell injection via 'Paramiko' call, check inputs are properly sanitized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="291"/> + <source>'subprocess' call with shell=True seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="295"/> + <source>'subprocess' call with shell=True identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="298"/> + <source>'subprocess' call - check for execution of untrusted input.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="301"/> + <source>Function call with shell=True parameter identified, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="305"/> + <source>Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="309"/> + <source>Starting a process with a shell, possible injection detected, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="313"/> + <source>Starting a process without a shell.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="316"/> + <source>Starting a process with a partial executable path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="321"/> + <source>Possible SQL injection vector through string-based query construction.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="327"/> + <source>Possible wildcard injection in call: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="332"/> + <source>Use of 'extra()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="335"/> + <source>Use of 'RawSQL()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="340"/> + <source>Using jinja2 templates with 'autoescape=False' is dangerous and can lead to XSS. Use 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="345"/> + <source>By default, jinja2 sets 'autoescape' to False. Consider using 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="352"/> + <source>Mako templates allow HTML/JS rendering by default and are inherently open to XSS attacks. Ensure variables in all templates are properly sanitized via the 'n', 'h' or 'x' flags (depending on context). For example, to HTML escape the variable 'data' do ${{ data |h }}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="360"/> + <source>Potential XSS on 'mark_safe()' function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="365"/> + <source>Possible hardcoded AWS access key ID: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="368"/> + <source>Possible hardcoded AWS secret access key: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="373"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>SecurityPage</name> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="17"/> @@ -60150,6 +60784,21 @@ <source>Change Master Password...</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="96"/> + <source>Certificate Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="102"/> + <source>Select to always reject web pages with certificate issues</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="105"/> + <source>Always reject URLs with certificate errors</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SendRefererWhitelistDialog</name> @@ -62099,75 +62748,80 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="168"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="171"/> <source>Media</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="184"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="187"/> <source>Image</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="189"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="192"/> <source>Image Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="197"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="200"/> <source><b>Preview</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="216"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="238"/> <source>Preview not available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="243"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="265"/> <source>Copy Image Location to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="246"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="268"/> <source>Copy Image Name to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source>Save Image</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="299"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="321"/> <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source><p>Cannot write to file <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="229"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="251"/> <source>Loading...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="287"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="309"/> <source><p>This preview is not available.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="76"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="97"/> <source><b>Connection is encrypted.</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="80"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="102"/> <source><b>Connection is not encrypted.</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="87"/> + <source><b>Connection is encrypted but may be insecure.</b></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SiteInfoWidget</name> @@ -62177,60 +62831,65 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="62"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="69"/> <source>Your connection to this site is <b>secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="67"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="74"/> <source>Your connection to this site is <b>not secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="82"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="89"/> <source>This is your <b>{0}.</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="88"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="95"/> <source>You have <b>never</b> visited this site before.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="97"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="104"/> <source>first</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="99"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="106"/> <source>second</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="101"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="108"/> <source>third</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="102"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="109"/> <source>This is your <b>{0}</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="123"/> - <source>Register as <b>{0}</b> links handler.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="130"/> + <source>Register as <b>{0}</b> links handler.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="137"/> <source>Register</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="147"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="154"/> <source>More...</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="63"/> + <source>Your connection to this site <b>may not be secure</b>.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SnapWidget</name> @@ -75037,7 +75696,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6327"/> + <location filename="../UI/UserInterface.py" line="6294"/> <source>Export Keyboard Shortcuts</source> <translation type="unfinished"></translation> </message> @@ -75057,7 +75716,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Import Keyboard Shortcuts</source> <translation type="unfinished"></translation> </message> @@ -75437,7 +76096,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Help</source> <translation type="unfinished"></translation> </message> @@ -75487,7 +76146,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7324"/> + <location filename="../UI/UserInterface.py" line="7291"/> <source></table></source> <translation type="unfinished"></translation> </message> @@ -75547,289 +76206,279 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt 3 support</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt v.3 is not supported by eric6.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source>Problem</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source><p>The file <b>{0}</b> does not exist or is zero length.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source>Process Generation Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="4962"/> + <location filename="../UI/UserInterface.py" line="4935"/> <source><p>Could not start Qt-Designer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5034"/> + <location filename="../UI/UserInterface.py" line="5005"/> <source><p>Could not start Qt-Linguist.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5087"/> + <location filename="../UI/UserInterface.py" line="5049"/> <source><p>Could not start Qt-Assistant.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5129"/> + <location filename="../UI/UserInterface.py" line="5096"/> <source><p>Could not start custom viewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5149"/> + <location filename="../UI/UserInterface.py" line="5116"/> <source><p>Could not start the help viewer.<br>Ensure that it is available as <b>hh</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5199"/> + <location filename="../UI/UserInterface.py" line="5166"/> <source><p>Could not start UI Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5256"/> + <location filename="../UI/UserInterface.py" line="5223"/> <source><p>Could not start Translation Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5279"/> + <location filename="../UI/UserInterface.py" line="5246"/> <source><p>Could not start SQL Browser.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5351"/> + <location filename="../UI/UserInterface.py" line="5318"/> <source><p>Could not start Snapshot tool.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>External Tools</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5374"/> + <location filename="../UI/UserInterface.py" line="5341"/> <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>No toolgroup entry '{0}' found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5422"/> + <location filename="../UI/UserInterface.py" line="5389"/> <source>Starting process '{0} {1}'. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source><p>Could not start the tool entry <b>{0}</b>.<br>Ensure that it is available as <b>{1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5516"/> + <location filename="../UI/UserInterface.py" line="5483"/> <source>Process '{0}' has exited. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source>Documentation Missing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source><p>The documentation starting point "<b>{0}</b>" could not be found.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source>Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5727"/> + <location filename="../UI/UserInterface.py" line="5694"/> <source><p>The PyQt4 documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5789"/> + <location filename="../UI/UserInterface.py" line="5756"/> <source><p>The PyQt5 documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Open Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Could not start a web browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Keyboard shortcut file (*.e4k)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source>Save tasks</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source>Read tasks</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6646"/> + <location filename="../UI/UserInterface.py" line="6613"/> <source>Save session</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6584"/> + <location filename="../UI/UserInterface.py" line="6551"/> <source><p>The session file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source>Read session</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source><p>The session file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source>Drop Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source><p><b>{0}</b> is not a file.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>%v/%m</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7103"/> + <location filename="../UI/UserInterface.py" line="7070"/> <source>Version Check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7108"/> + <location filename="../UI/UserInterface.py" line="7075"/> <source>Trying host {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>Error getting versions information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7119"/> + <location filename="../UI/UserInterface.py" line="7086"/> <source>The versions information cannot not be downloaded because you are <b>offline</b>. Please go online and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7167"/> + <location filename="../UI/UserInterface.py" line="7134"/> <source>The versions information could not be downloaded. Please go online and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>Update available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>The update to <b>{0}</b> of eric6 is available at <b>{1}</b>. Would you like to get it?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>Eric6 is up to date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>You are using the latest version of eric6</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Error during updates check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Could not perform updates check.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7309"/> + <location filename="../UI/UserInterface.py" line="7276"/> <source><h3>Available versions</h3><table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>First time usage</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>eric6 has not been configured yet. The configuration dialog will be started.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7380"/> + <location filename="../UI/UserInterface.py" line="7347"/> <source>Select Workspace Directory</source> <translation type="unfinished"></translation> </message> @@ -75844,7 +76493,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>Load session</source> <translation type="unfinished"></translation> </message> @@ -75859,17 +76508,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>eric6 Session Files (*.e5s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>Crash Session found!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>A session file of a crashed session was found. Shall this session be restored?</source> <translation type="unfinished"></translation> </message> @@ -75884,17 +76533,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>Update Check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7244"/> + <location filename="../UI/UserInterface.py" line="7211"/> <source>You are using a snapshot release of eric6. A more up-to-date stable release might be available.</source> <translation type="unfinished"></translation> </message> @@ -75949,7 +76598,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source><p>The PySide{0} documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> @@ -76025,17 +76674,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source>Start Web Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6015"/> + <location filename="../UI/UserInterface.py" line="5982"/> <source>The eric6 web browser could not be started.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source><p>The eric6 web browser is not started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> @@ -76134,6 +76783,21 @@ <source><h2>Version Numbers</h2><table></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../UI/UserInterface.py" line="4944"/> + <source><p>Could not find the Qt-Designer executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5014"/> + <source><p>Could not find the Qt-Linguist executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5058"/> + <source><p>Could not find the Qt-Assistant executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>UserPropertiesDialog</name> @@ -81839,47 +82503,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="324"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="402"/> <source>Images</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="408"/> <source>Select to load images</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="333"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="411"/> <source>Load images</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="343"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="421"/> <source>Style Sheet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="349"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="427"/> <source>User Style Sheet:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="365"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="443"/> <source>Enter the file name of a user style sheet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="375"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="453"/> <source>Tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="381"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="459"/> <source>Select to issue a warning, if multiple tabs are about to be closed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="384"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="462"/> <source>Warn, if multiple tabs are about to be closed</source> <translation type="unfinished"></translation> </message> @@ -81889,37 +82553,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="426"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="504"/> <source><font color="#FF0000"><b>Note:</b> All settings below are activated at the next startup of the application.</font></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="433"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="511"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="439"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="517"/> <source>Select to show toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="520"/> <source>Show Toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="394"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="472"/> <source>Scrollbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="400"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="478"/> <source>Select to show scrollbars. Note: Scrolling is possible even without them.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="403"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="481"/> <source>Show Scrollbars</source> <translation type="unfinished"></translation> </message> @@ -81929,13 +82593,48 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="304"/> + <source>Select the background color for secure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> - <source>Background color of secure URLs:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="298"/> - <source>Select the background color for secure URLs.</source> + <source>URL Entry Background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="291"/> + <source>Secure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="327"/> + <source>Insecure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="340"/> + <source>Select the background color for insecure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="350"/> + <source>Malicious URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="363"/> + <source>Select the background color for malicious URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="373"/> + <source>Private Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="386"/> + <source>Select the background color for URLs in private mode.</source> <translation type="unfinished"></translation> </message> </context> @@ -83227,27 +83926,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="892"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="913"/> <source>Loading...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="912"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="922"/> <source>Finished loading</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="914"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="889"/> <source>Failed to load</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window?</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation type="unfinished"> @@ -83255,22 +83954,22 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="962"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="970"/> <source>&Quit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="965"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="973"/> <source>C&lose Current Tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1146"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1154"/> <source>Restore All Closed Tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1148"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1156"/> <source>Clear List</source> <translation type="unfinished"></translation> </message> @@ -86073,12 +86772,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="391"/> + <location filename="../eric6.py" line="399"/> <source>Starting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../eric6.py" line="396"/> + <location filename="../eric6.py" line="404"/> <source>Generating Main Window...</source> <translation type="unfinished"></translation> </message> @@ -86304,7 +87003,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="183"/> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="187"/> <source>no message defined for code '{0}'</source> <translation type="unfinished"></translation> </message> @@ -86413,421 +87112,426 @@ <source>'...' % ... `*` specifier requires sequence</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="165"/> + <source>'if tuple literal' is always true, perhaps remove accidental comma?</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>pycodestyle</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="21"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> <source>indentation contains mixed spaces and tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> - <source>indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="27"/> - <source>expected an indented block</source> + <source>indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="30"/> - <source>unexpected indentation</source> + <source>expected an indented block</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="33"/> - <source>indentation is not a multiple of four (comment)</source> + <source>unexpected indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36"/> - <source>expected an indented block (comment)</source> + <source>indentation is not a multiple of four (comment)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39"/> + <source>expected an indented block (comment)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> <source>unexpected indentation (comment)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> - <source>continuation line indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="48"/> - <source>continuation line missing indentation or outdented</source> + <source>continuation line indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="51"/> + <source>continuation line missing indentation or outdented</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54"/> <source>closing bracket does not match indentation of opening bracket's line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55"/> - <source>closing bracket does not match visual indentation</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="58"/> - <source>continuation line with same indent as next logical line</source> + <source>closing bracket does not match visual indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="61"/> - <source>continuation line over-indented for hanging indent</source> + <source>continuation line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64"/> - <source>continuation line over-indented for visual indent</source> + <source>continuation line over-indented for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67"/> - <source>continuation line under-indented for visual indent</source> + <source>continuation line over-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70"/> - <source>visually indented line with same indent as next logical line</source> + <source>continuation line under-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73"/> - <source>continuation line unaligned for hanging indent</source> + <source>visually indented line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76"/> - <source>closing bracket is missing indentation</source> + <source>continuation line unaligned for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79"/> - <source>indentation contains tabs</source> + <source>closing bracket is missing indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82"/> + <source>indentation contains tabs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85"/> <source>whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91"/> - <source>whitespace before '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94"/> - <source>multiple spaces before operator</source> + <source>whitespace before '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97"/> - <source>multiple spaces after operator</source> + <source>multiple spaces before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100"/> - <source>tab before operator</source> + <source>multiple spaces after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103"/> - <source>tab after operator</source> + <source>tab before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106"/> - <source>missing whitespace around operator</source> + <source>tab after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109"/> - <source>missing whitespace around arithmetic operator</source> + <source>missing whitespace around operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112"/> - <source>missing whitespace around bitwise or shift operator</source> + <source>missing whitespace around arithmetic operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115"/> - <source>missing whitespace around modulo operator</source> + <source>missing whitespace around bitwise or shift operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118"/> - <source>missing whitespace after '{0}'</source> + <source>missing whitespace around modulo operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121"/> - <source>multiple spaces after '{0}'</source> + <source>missing whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124"/> - <source>tab after '{0}'</source> + <source>multiple spaces after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127"/> + <source>tab after '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> <source>unexpected spaces around keyword / parameter equals</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> - <source>at least two spaces before inline comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136"/> - <source>inline comment should start with '# '</source> + <source>at least two spaces before inline comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="139"/> - <source>block comment should start with '# '</source> + <source>inline comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="142"/> - <source>too many leading '#' for block comment</source> + <source>block comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="145"/> - <source>multiple spaces after keyword</source> + <source>too many leading '#' for block comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="148"/> - <source>multiple spaces before keyword</source> + <source>multiple spaces after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="151"/> - <source>tab after keyword</source> + <source>multiple spaces before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154"/> - <source>tab before keyword</source> + <source>tab after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157"/> - <source>missing whitespace after keyword</source> + <source>tab before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="160"/> - <source>trailing whitespace</source> + <source>missing whitespace after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163"/> - <source>no newline at end of file</source> + <source>trailing whitespace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166"/> + <source>no newline at end of file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169"/> <source>blank line contains whitespace</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> - <source>too many blank lines ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> - <source>blank lines found after function decorator</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="194"/> - <source>blank line at end of file</source> + <source>too many blank lines ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <source>blank lines found after function decorator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="197"/> - <source>multiple imports on one line</source> + <source>blank line at end of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200"/> - <source>module level import not at top of file</source> + <source>multiple imports on one line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203"/> - <source>line too long ({0} > {1} characters)</source> + <source>module level import not at top of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206"/> - <source>the backslash is redundant between brackets</source> + <source>line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209"/> + <source>the backslash is redundant between brackets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> <source>line break before binary operator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> - <source>.has_key() is deprecated, use 'in'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> - <source>deprecated form of raising exception</source> + <source>.has_key() is deprecated, use 'in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> - <source>'<>' is deprecated, use '!='</source> + <source>deprecated form of raising exception</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> + <source>'<>' is deprecated, use '!='</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>backticks are deprecated, use 'repr()'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> - <source>multiple statements on one line (colon)</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> - <source>multiple statements on one line (semicolon)</source> + <source>multiple statements on one line (colon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> - <source>statement ends with a semicolon</source> + <source>multiple statements on one line (semicolon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> + <source>statement ends with a semicolon</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248"/> <source>multiple statements on one line (def)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="251"/> - <source>comparison to {0} should be {1}</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> - <source>test for membership should be 'not in'</source> + <source>comparison to {0} should be {1}</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> - <source>test for object identity should be 'is not'</source> + <source>test for membership should be 'not in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> - <source>do not compare types, use 'isinstance()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> - <source>do not assign a lambda expression, use a def</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> - <source>ambiguous variable name '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> - <source>ambiguous class definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> - <source>ambiguous function definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> - <source>{0}: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> - <source>{0}</source> + <source>test for object identity should be 'is not'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> + <source>do not compare types, use 'isinstance()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> + <source>do not assign a lambda expression, use a def</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> + <source>ambiguous variable name '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> + <source>ambiguous class definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> + <source>ambiguous function definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284"/> + <source>{0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> <source>do not use bare except</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184"/> <source>expected {0} blank lines after class or function definition, found {1}</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> + <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> + <source>missing whitespace around parameter equals</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <source>expected {0} blank lines, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <source>expected {0} blank lines before a nested definition, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <source>line break after binary operator</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> - <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> - <source>missing whitespace around parameter equals</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172"/> - <source>expected {0} blank lines, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="185"/> - <source>expected {0} blank lines before a nested definition, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> - <source>line break after binary operator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>invalid escape sequence '\{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> <source>too many blank lines ({0}) before a nested definition, expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> <source>too many blank lines ({0}), expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> <source>over-indented</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> <source>doc line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message>
--- a/eric6/i18n/eric6_en.ts Sun May 03 13:42:52 2020 +0200 +++ b/eric6/i18n/eric6_en.ts Wed Jun 17 17:14:12 2020 +0200 @@ -352,7 +352,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="200"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="201"/> <source>Add Bookmark</source> <translation type="unfinished"></translation> </message> @@ -1088,72 +1088,72 @@ <context> <name>AnnotationsChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="808"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> <source>missing type annotation for function argument '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> - <source>missing type annotation for '*{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="814"/> + <source>missing type annotation for '*{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> <source>missing type annotation for '**{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> - <source>missing return type annotation for public function</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="826"/> - <source>missing return type annotation for protected function</source> + <source>missing return type annotation for public function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="829"/> - <source>missing return type annotation for private function</source> + <source>missing return type annotation for protected function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="832"/> - <source>missing return type annotation for special method</source> + <source>missing return type annotation for private function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="835"/> - <source>missing return type annotation for staticmethod</source> + <source>missing return type annotation for special method</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="838"/> + <source>missing return type annotation for staticmethod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="841"/> <source>missing return type annotation for classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="850"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="853"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> - <source>missing type annotation for 'self' in method</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="820"/> + <source>missing type annotation for 'self' in method</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> <source>missing type annotation for 'cls' in classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="842"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="845"/> <source>type annotation coverage of {0}% is too low</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="846"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="849"/> <source>type annotation is too complex ({0} > {1})</source> <translation type="unfinished"></translation> </message> @@ -1791,7 +1791,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="174"/> <source>&Delete</source> <translation type="unfinished"></translation> </message> @@ -1806,50 +1806,65 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="154"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> <source>&Open</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> <source>Open in New &Tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="167"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> <source>Edit &Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="170"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> <source>Edit &Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="331"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="343"/> <source>New Folder</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="176"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="178"/> <source>&Properties...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="161"/> - <source>Open in New &Window</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="163"/> + <source>Open in New &Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="165"/> <source>Open in New Pri&vate Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="160"/> <source>Open in New &Background Tab</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="182"/> + <source>New &Folder...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>New Bookmark Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>Enter title for new bookmark folder:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>BookmarksImportDialog</name> @@ -2745,6 +2760,49 @@ </message> </context> <context> + <name>CheckerCategories</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="63"/> + <source>Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="66"/> + <source>Code Complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="69"/> + <source>Documentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="72"/> + <source>Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="75"/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="78"/> + <source>Naming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="84"/> + <source>Warnings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <source>Security</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ChromeImporter</name> <message> <location filename="../WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py" line="43"/> @@ -2879,15 +2937,20 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source>Select Path to Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source><p>The device volume <b>{0}</b> could not be found. Is the device in 'bootloader' mode and mounted?</p> <p>Alternatively select the "Manual Select" entry and enter the path to the device below.</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="52"/> + <source>Manual Select</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ClearPrivateDataDialog</name> @@ -3234,6 +3297,14 @@ </message> </context> <context> + <name>CodeStyleChecker</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1133"/> + <source>No message defined for code '{0}'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>CodeStyleCheckerDialog</name> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="14"/> @@ -3248,137 +3319,127 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="50"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="68"/> <source>Exclude Files:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="57"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="75"/> <source>Enter filename patterns of files to be excluded separated by a comma</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="830"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1090"/> <source>Press to start the code style check run</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="840"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1254"/> <source>Press to fix the selected issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1113"/> <source>Press to load the default values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="873"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1123"/> <source>Press to store the current values as defaults</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="883"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1133"/> <source>Press to reset the default values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="82"/> <source>Exclude Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="71"/> - <source>Enter message codes or categories to be excluded separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="141"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="159"/> <source>Press to select the message codes from a list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="85"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="103"/> <source>Included Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="92"/> - <source>Enter message codes or categories to be included separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="106"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="124"/> <source>Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="113"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="131"/> <source>Enter message codes of issues to be fixed automatically (leave empty to fix all)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="127"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="145"/> <source>Don't Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="134"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="152"/> <source>Enter message codes of issues not to be fixed automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="265"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="283"/> <source>Max. Line Length:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="316"/> <source>Enter the maximum allowed line length (PEP-8: 79 characters)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="425"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="443"/> <source>Docstring Type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="450"/> <source>Select the rule set for docstrings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="406"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="424"/> <source>Select to allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="409"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="427"/> <source>Allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="150"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="168"/> <source>Select to repeat each message type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="153"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="171"/> <source>Repeat messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="163"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="181"/> <source>Select to fix some issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="166"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="184"/> <source>Fix issues automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="904"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1167"/> <source><b>Result List</b> <p>This list shows the results of the code style check. Double clicking an entry will open this entry in an editor window and position the cursor at @@ -3386,375 +3447,525 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1183"/> <source>File/Line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="925"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1188"/> <source>Code</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="930"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1193"/> <source>Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="80"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="117"/> <source>PEP-257</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="118"/> <source>Eric</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="88"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="144"/> <source>Statistics...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="90"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="146"/> <source>Press to show some statistics for the last run</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="149"/> <source>Show</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="151"/> <source>Press to show all files containing an issue</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="637"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="241"/> <source>Error: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="244"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="248"/> <source>Fix: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="778"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="982"/> <source>No issues found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1214"/> <source>Shows the progress of the code style check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="960"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1223"/> <source>%v/%m Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="176"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="194"/> <source>Select to show ignored issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="179"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="197"/> <source>Show ignored</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="730"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="927"/> <source>{0} (ignored)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="622"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="820"/> <source>Preparing files...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="698"/> <source>Enter the maximum allowed code complexity (McCabe: 10)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="152"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="214"/> <source>Errors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="664"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="859"/> <source>Transferring data...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="44"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="42"/> <source>Global Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="233"/> <source>Specific Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="257"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="275"/> <source>Source Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="419"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="437"/> <source>Documentation Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="455"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="473"/> <source>Coding Line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="461"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="479"/> <source>Valid Encodings:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="468"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="486"/> <source>Enter valid encodings separated by a comma (leave empty to use defaults)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="478"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="496"/> <source>Copyright</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="484"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="502"/> <source>Min. File Size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="491"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="509"/> <source>Enter the minimum size a file must have to be checked (0 for all files)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="517"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="535"/> <source>Author:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="524"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="542"/> <source>Enter a copyright author name to check for (leave empty to omit this check)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="534"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="552"/> <source>Future Imports</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="540"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="558"/> <source>Expected Imports:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="654"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="672"/> <source>Code Complexity</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1093"/> + <source>&Start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1257"/> + <source>&Fix Selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1116"/> + <source>&Load Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1126"/> + <source>St&ore Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1136"/> + <source>&Reset Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="985"/> + <source>No files found (check your ignore list).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="584"/> + <source>Ignore Built-ins Assignment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="600"/> + <source>Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="605"/> + <source>Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="615"/> + <source>Press to add a built-in assignment to be ignored</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="625"/> + <source>Press to delete the selected entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="691"/> + <source>Max. McCabe Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="714"/> + <source>Max. Line Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="721"/> + <source>Enter the maximum complexity (number of nodes) for a line of code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="737"/> + <source>Max. Line Complexity Score:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="744"/> + <source>Enter the maximum allowed median for line complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="350"/> + <source>Blank Lines Before</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="356"/> + <source>Top Level Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="363"/> + <source>Enter the number of blank lines before top level classes and functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="395"/> + <source>Methods and Nested Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="402"/> + <source>Enter the number of blank lines before methods and nested classes or functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="309"/> + <source>Max. Documentation Line Length:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="653"/> + <source>Commented Code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="659"/> + <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="662"/> + <source>Search aggressively</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="763"/> + <source>Type Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="769"/> + <source>Min. Coverage:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="776"/> + <source>Enter the minimum percentage of type annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="779"/> + <source>off</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="782"/> + <source>%</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="805"/> + <source>Max. Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="812"/> + <source>Enter the maximum type annotation complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="32"/> + <source>Configure</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1146"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1244"/> + <source>Press to restart the code style check run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1247"/> + <source>Restart</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="48"/> + <source>Categories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="58"/> + <source>Select the categories of checks to be performed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="89"/> + <source>Enter message codes to be excluded separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="110"/> + <source>Enter message codes to be included separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="833"/> - <source>&Start</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="843"/> - <source>&Fix Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="866"/> - <source>&Load Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="876"/> - <source>St&ore Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="886"/> - <source>&Reset Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="781"/> - <source>No files found (check your ignore list).</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="566"/> - <source>Ignore Built-ins Assignment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="582"/> - <source>Left</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="587"/> - <source>Right</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="597"/> - <source>Press to add a built-in assignment to be ignored</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="607"/> - <source>Press to delete the selected entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="673"/> - <source>Max. McCabe Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="696"/> - <source>Max. Line Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="703"/> - <source>Enter the maximum complexity (number of nodes) for a line of code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="719"/> - <source>Max. Line Complexity Score:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="726"/> - <source>Enter the maximum allowed median for line complexity</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="332"/> - <source>Blank Lines Before</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="338"/> - <source>Top Level Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="345"/> - <source>Enter the number of blank lines before top level classes and functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="377"/> - <source>Methods and Nested Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="384"/> - <source>Enter the number of blank lines before methods and nested classes or functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="291"/> - <source>Max. Documentation Line Length:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="635"/> - <source>Commented Code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="641"/> - <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="644"/> - <source>Search aggressively</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="745"/> - <source>Type Annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="751"/> - <source>Min. Coverage:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="758"/> - <source>Enter the minimum percentage of type annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="761"/> - <source>off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="764"/> - <source>%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="787"/> - <source>Max. Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="794"/> - <source>Enter the maximum type annotation complexity</source> + <source>Security Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="839"/> + <source>Hardcoded 'tmp' Directories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="849"/> + <source>Weak Cryptographic Keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="855"/> + <source>DSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="973"/> + <source>High Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="868"/> + <source>Select the bit length below which a DSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="990"/> + <source>Medium Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="885"/> + <source>Select the bit length below which a DSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="911"/> + <source>RSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="924"/> + <source>Select the bit length below which a RSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="941"/> + <source>Select the bit length below which a RSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="967"/> + <source>Elliptic Curves</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="980"/> + <source>Select the bit length below which an Elliptic Curve is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="997"/> + <source>Select the bit length below which an Elliptic Curve is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1026"/> + <source>Enter the names of insecure SSL protocols and methods (one per line)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1033"/> + <source>Insecure SSL Protocols:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1043"/> + <source>Insecure Hashes:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1050"/> + <source>Enter a list of hash methods to be considered insecure separated by comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1057"/> + <source>Select to also check for insecure exception handling for typed exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1060"/> + <source>Check Typed Exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1067"/> + <source>Enter directory names (one per line) to be checked for</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1154"/> + <source><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>CodeStyleCheckerPlugin</name> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> <source>Check Code Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>&Code Style...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="262"/> - <source>Check code style.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>&Code Style...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="266"/> + <source>Check code style.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="364"/> <source><b>Check Code Style...</b><p>This checks Python files for compliance to the code style conventions given in various PEPs.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="110"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="112"/> <source>Python 2 batch check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="126"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="128"/> <source>Python 3 batch check</source> <translation type="unfinished"></translation> </message> @@ -3790,142 +4001,142 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="857"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="861"/> <source>Triple single quotes converted to triple double quotes.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="860"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="864"/> <source>Introductory quotes corrected to be {0}"""</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="867"/> <source>Single line docstring put on one line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="866"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="870"/> <source>Period added to summary line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="893"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="897"/> <source>Blank line before function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="872"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="876"/> <source>Blank line inserted before class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="875"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="879"/> <source>Blank line inserted after class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="878"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="882"/> <source>Blank line inserted after docstring summary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="881"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="885"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="884"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="888"/> <source>Leading quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="887"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="891"/> <source>Trailing quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="890"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="894"/> <source>Blank line before class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="896"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="900"/> <source>Blank line after class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="899"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="903"/> <source>Blank line after function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="902"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="906"/> <source>Blank line after last paragraph removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="905"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="909"/> <source>Tab converted to 4 spaces.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="908"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="912"/> <source>Indentation adjusted to be a multiple of four.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="911"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="915"/> <source>Indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="914"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="918"/> <source>Indentation of closing bracket corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="917"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="921"/> <source>Missing indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="924"/> <source>Closing bracket aligned to opening bracket.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="923"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="927"/> <source>Indentation level changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="926"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="930"/> <source>Indentation level of hanging indentation changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="929"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="933"/> <source>Visual indentation corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="944"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="948"/> <source>Extraneous whitespace removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="941"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="945"/> <source>Missing whitespace added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="947"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> <source>Whitespace around comment sign corrected.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="955"/> <source>%n blank line(s) inserted.</source> <translation> <numerusform>%n blank line inserted.</numerusform> @@ -3933,7 +4144,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="954"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> <source>%n superfluous lines removed</source> <translation> <numerusform>%n superfluous line removed</numerusform> @@ -3941,80 +4152,75 @@ </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="962"/> <source>Superfluous blank lines removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="961"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="965"/> <source>Superfluous blank lines after function decorator removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="964"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="968"/> <source>Imports were put on separate lines.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="967"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="971"/> <source>Long lines have been shortened.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="970"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="974"/> <source>Redundant backslash in brackets removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="976"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="980"/> <source>Compound statement corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="979"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="983"/> <source>Comparison to None/True/False corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="982"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="986"/> <source>'{0}' argument added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="985"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="989"/> <source>'{0}' argument removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="988"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="992"/> <source>Whitespace stripped from end of line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="991"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="995"/> <source>newline added to end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="994"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="998"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="997"/> - <source>'<>' replaced by '!='.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1001"/> + <source>'<>' replaced by '!='.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1005"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1107"/> - <source> no message defined for code '{0}'</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>CodeStyleStatisticsDialog</name> @@ -4039,7 +4245,7 @@ <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="60"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="63"/> <source>%n issue(s) found</source> <translation> <numerusform>%n issue found</numerusform> @@ -4047,7 +4253,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="67"/> <source>%n issue(s) fixed</source> <translation> <numerusform>%n issue fixed</numerusform> @@ -4055,7 +4261,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="66"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="69"/> <source>%n file(s) checked</source> <translation> <numerusform>%n file checked</numerusform> @@ -4063,7 +4269,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="68"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="71"/> <source>%n file(s) with issues found</source> <translation> <numerusform>%n file with issues found</numerusform> @@ -4071,13 +4277,21 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="62"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="65"/> <source>%n issue(s) ignored</source> <translation> <numerusform>%n issue ignored</numerusform> <numerusform>%n issues ignored</numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="73"/> + <source>%n security issue(s) acknowledged</source> + <translation> + <numerusform>%n security issue acknowledged</numerusform> + <numerusform>%n security issues acknowledged</numerusform> + </translation> + </message> </context> <context> <name>CodingError</name> @@ -4489,22 +4703,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="479"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="482"/> <source>'{0}' is too complex ({1})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="481"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="484"/> <source>source code line is too complex ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="483"/> - <source>overall source code line complexity is too high ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="486"/> + <source>overall source code line complexity is too high ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="489"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> @@ -8217,242 +8431,242 @@ <context> <name>DocStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="288"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="291"/> <source>module is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290"/> - <source>public function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293"/> - <source>private function/method may be missing a docstring</source> + <source>public function/method is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296"/> + <source>private function/method may be missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299"/> <source>public class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301"/> <source>private class may be missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="300"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="303"/> <source>docstring not surrounded by """</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302"/> - <source>docstring containing \ not surrounded by r"""</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305"/> - <source>docstring containing unicode character not surrounded by u"""</source> + <source>docstring containing \ not surrounded by r"""</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308"/> + <source>docstring containing unicode character not surrounded by u"""</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311"/> <source>one-liner docstring on multiple lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313"/> <source>docstring has wrong indentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> <source>docstring summary does not end with a period</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> <source>docstring summary is not in imperative mood (Does instead of Do)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320"/> - <source>docstring summary looks like a function's/method's signature</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> - <source>docstring does not mention the return value type</source> + <source>docstring summary looks like a function's/method's signature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> - <source>function/method docstring is separated by a blank line</source> + <source>docstring does not mention the return value type</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> - <source>class docstring is not preceded by a blank line</source> + <source>function/method docstring is separated by a blank line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> + <source>class docstring is not preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> <source>class docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> <source>docstring summary is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341"/> <source>last paragraph of docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> - <source>private function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> + <source>private function/method is missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352"/> <source>private class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> - <source>leading quotes of docstring not on separate line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <source>leading quotes of docstring not on separate line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> <source>trailing quotes of docstring not on separate line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="363"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="366"/> <source>docstring does not contain a @return line but function/method returns something</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370"/> <source>docstring contains a @return line but function/method doesn't return anything</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> - <source>docstring does not contain enough @param/@keyparam lines</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> - <source>docstring contains too many @param/@keyparam lines</source> + <source>docstring does not contain enough @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> - <source>keyword only arguments must be documented with @keyparam lines</source> + <source>docstring contains too many @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> - <source>order of @param/@keyparam lines does not match the function/method signature</source> + <source>keyword only arguments must be documented with @keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> + <source>order of @param/@keyparam lines does not match the function/method signature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="386"/> <source>class docstring is preceded by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> <source>class docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> - <source>function/method docstring is preceded by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> + <source>function/method docstring is preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> <source>function/method docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> - <source>last paragraph of docstring is followed by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="399"/> + <source>last paragraph of docstring is followed by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="402"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="403"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="406"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="426"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="429"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="312"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="315"/> <source>docstring does not contain a summary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>docstring summary does not start with '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="407"/> - <source>raised exception '{0}' is not documented in docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="410"/> - <source>documented exception '{0}' is not raised</source> + <source>raised exception '{0}' is not documented in docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="413"/> - <source>docstring does not contain a @signal line but class defines signals</source> + <source>documented exception '{0}' is not raised</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="416"/> - <source>docstring contains a @signal line but class doesn't define signals</source> + <source>docstring does not contain a @signal line but class defines signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="419"/> - <source>defined signal '{0}' is not documented in docstring</source> + <source>docstring contains a @signal line but class doesn't define signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="422"/> + <source>defined signal '{0}' is not documented in docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="425"/> <source>documented signal '{0}' is not defined</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="354"/> <source>class docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347"/> <source>function docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>module docstring is still a default string</source> <translation type="unfinished"></translation> </message> @@ -10275,12 +10489,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Add Entry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Enter the entry to add to the list:</source> <translation type="unfinished"></translation> </message> @@ -10749,7 +10963,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7847"/> + <location filename="../QScintilla/Editor.py" line="7848"/> <source>Check spelling...</source> <translation type="unfinished"></translation> </message> @@ -10974,7 +11188,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5615"/> + <location filename="../QScintilla/Editor.py" line="5616"/> <source>Enable breakpoint</source> <translation type="unfinished"></translation> </message> @@ -11149,257 +11363,257 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5618"/> + <location filename="../QScintilla/Editor.py" line="5619"/> <source>Disable breakpoint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Code Coverage</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Please select a coverage file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>Show Code Coverage Annotations</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6049"/> + <location filename="../QScintilla/Editor.py" line="6050"/> <source>All lines have been covered.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>There is no coverage file available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Profile Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Please select a profile file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>Syntax Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>No syntax error message available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Macro Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Select a macro name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6754"/> + <location filename="../QScintilla/Editor.py" line="6755"/> <source>Load macro file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Macro files (*.macro)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source>Error loading macro</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6768"/> + <location filename="../QScintilla/Editor.py" line="6769"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Save macro file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source>Save macro</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source>Error saving macro</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Start Macro Recording</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Macro recording is already active. Start new?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Macro Recording</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Enter name of the macro:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7009"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>File changed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7179"/> + <location filename="../QScintilla/Editor.py" line="7180"/> <source>{0} (ro)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source>Drop Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source><p><b>{0}</b> is not a file.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7341"/> + <location filename="../QScintilla/Editor.py" line="7342"/> <source>Resources</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7343"/> + <location filename="../QScintilla/Editor.py" line="7344"/> <source>Add file...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7345"/> + <location filename="../QScintilla/Editor.py" line="7346"/> <source>Add files...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7347"/> + <location filename="../QScintilla/Editor.py" line="7348"/> <source>Add aliased file...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7350"/> + <location filename="../QScintilla/Editor.py" line="7351"/> <source>Add localized resource...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7354"/> + <location filename="../QScintilla/Editor.py" line="7355"/> <source>Add resource frame</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7373"/> + <location filename="../QScintilla/Editor.py" line="7374"/> <source>Add file resource</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7389"/> + <location filename="../QScintilla/Editor.py" line="7390"/> <source>Add file resources</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Add aliased file resource</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Alias for file <b>{0}</b>:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Package Diagram</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Include class attributes?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Imports Diagram</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Include imports from external modules?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Application Diagram</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Include module names?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7850"/> + <location filename="../QScintilla/Editor.py" line="7851"/> <source>Add to dictionary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7852"/> + <location filename="../QScintilla/Editor.py" line="7853"/> <source>Ignore All</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6614"/> + <location filename="../QScintilla/Editor.py" line="6615"/> <source>Warning: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6621"/> + <location filename="../QScintilla/Editor.py" line="6622"/> <source>Error: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7005"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation type="unfinished"></translation> </message> @@ -11424,27 +11638,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>Sort Lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>The selection contains illegal data for a numerical sort.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>Warning</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>No warning messages available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6611"/> + <location filename="../QScintilla/Editor.py" line="6612"/> <source>Style: {0}</source> <translation type="unfinished"></translation> </message> @@ -11469,7 +11683,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6999"/> + <location filename="../QScintilla/Editor.py" line="7000"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation type="unfinished"></translation> </message> @@ -11494,22 +11708,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>Call-Tips Provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>Register Mouse Click Handler</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation type="unfinished"></translation> </message> @@ -11539,12 +11753,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source>EditorConfig Properties</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation type="unfinished"></translation> </message> @@ -16892,17 +17106,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="66"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="71"/> <source>Firmware Files (*.img);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="72"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="77"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="76"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="82"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> @@ -16920,12 +17134,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="211"/> + <location filename="../MicroPython/EspDevices.py" line="217"/> <source>Flash MicroPython Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="236"/> + <location filename="../MicroPython/EspDevices.py" line="248"/> <source>Flash Additional Firmware</source> <translation type="unfinished"></translation> </message> @@ -16950,7 +17164,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>'esptool write_flash' Output</source> <translation type="unfinished"></translation> </message> @@ -16960,47 +17174,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>Show Chip ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>Show Flash ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>Show MAC Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>'esptool read_flash' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>'esptool chip_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>'esptool flash_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>'esptool read_mac' Output</source> <translation type="unfinished"></translation> </message> @@ -17033,20 +17247,35 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="72"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="96"/> <source>Address:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="79"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="103"/> <source>Enter the flash addres in the hexadecimal form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="43"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="51"/> <source>Firmware Files (*.bin);;All Files (*)</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="75"/> + <source>Flash Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="82"/> + <source>Select the flash mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="89"/> + <source>Leave empty to use the default mode.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ExceptionLogger</name> @@ -37371,6 +37600,14 @@ </message> </context> <context> + <name>IgnoredDevicesDialog</name> + <message> + <location filename="../MicroPython/IgnoredDevicesDialog.ui" line="14"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImageMarkupDialog</name> <message> <location filename="../QScintilla/MarkupProviders/ImageMarkupDialog.py" line="52"/> @@ -43161,27 +43398,27 @@ <context> <name>MicroPythonDevice</name> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="214"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="223"/> <source>Unsupported Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="224"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="233"/> <source>REPL is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="243"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="252"/> <source>Plotter is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="262"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="271"/> <source>Running scripts is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="282"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="291"/> <source>File Manager is not supported by this device.</source> <translation type="unfinished"></translation> </message> @@ -43739,7 +43976,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="460"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="493"/> <source>Press to connect the selected device</source> <translation type="unfinished"></translation> </message> @@ -43767,32 +44004,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="430"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="463"/> <source>Clear</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="432"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="465"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="433"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="466"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="455"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="488"/> <source>Press to disconnect the current device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>No device attached</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -43801,212 +44038,212 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source>Start REPL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source>Serial Device Connect</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source>Run Script</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="921"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="954"/> <source>There is no editor open. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="929"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="962"/> <source>The current editor does not contain a script. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source><p>Cannot run script.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Open Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Python3 Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source>Start Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>Unsaved Chart Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>The chart contains unsaved data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source>Start File Manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1136"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169"/> <source>Show Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1139"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1172"/> <source>Show Implementation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source>Synchronize Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1147"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1180"/> <source>Show Device Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1150"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1183"/> <source>Show Local Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1461"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1497"/> <source>Compile Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1481"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1517"/> <source>Compile Current Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1188"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224"/> <source><h3>Device Version Information</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1197"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1233"/> <source>No version information available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1199"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1235"/> <source>Device Version Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1258"/> <source>unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source>Device Implementation Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source><p>The time of the connected device was synchronized with the local time.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1272"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308"/> <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1280"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1316"/> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1294"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1330"/> <source>Device Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source>Local Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source>Error handling device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1413"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1449"/> <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1467"/> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1441"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1477"/> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1451"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1487"/> <source>'mpy-cross' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1474"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1510"/> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished"></translation> </message> @@ -44021,50 +44258,70 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1018"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051"/> <source>µPy Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1098"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1131"/> <source>µPy Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1174"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1207"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1178"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1214"/> <source>Configure</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1153"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186"/> <source>Show Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1170"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1203"/> <source>Download Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source>Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1333"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1369"/> <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>Unknown MicroPython Device</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:eric-bugs@eric-ide.python-projects.org"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>{0} ({1:04x}/{2:04x})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1211"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -44865,463 +45122,463 @@ <context> <name>MiscellaneousChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="492"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> <source>coding magic comment not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> - <source>unknown encoding ({0}) found in coding magic comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="498"/> - <source>copyright notice not present</source> + <source>unknown encoding ({0}) found in coding magic comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="501"/> - <source>copyright notice contains invalid author</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="702"/> - <source>found {0} formatter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> - <source>format string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> - <source>docstring does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> - <source>other string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> - <source>format call uses too large index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> - <source>format call uses missing keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> - <source>format call uses keyword arguments but no named entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> - <source>format call uses variable arguments but no numbered entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> - <source>format call uses implicit and explicit indexes together</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> - <source>format call provides unused index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> - <source>format call provides unused keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="751"/> - <source>expected these __future__ imports: {0}; but only got: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> - <source>expected these __future__ imports: {0}; but got none</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="761"/> - <source>print statement found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> - <source>one element tuple found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="800"/> - <source>{0}: {1}</source> + <source>copyright notice not present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> + <source>copyright notice contains invalid author</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> + <source>found {0} formatter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> + <source>format string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> + <source>docstring does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> + <source>other string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> + <source>format call uses too large index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> + <source>format call uses missing keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> + <source>format call uses keyword arguments but no named entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> + <source>format call uses variable arguments but no numbered entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> + <source>format call uses implicit and explicit indexes together</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> + <source>format call provides unused index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <source>format call provides unused keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> + <source>expected these __future__ imports: {0}; but only got: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <source>expected these __future__ imports: {0}; but got none</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> + <source>print statement found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="767"/> + <source>one element tuple found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="803"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="507"/> <source>"{0}" is a Python builtin and is being shadowed; consider renaming the variable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="508"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="511"/> <source>"{0}" is used as an argument and thus shadows a Python builtin; consider renaming the argument</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="512"/> - <source>unnecessary generator - rewrite as a list comprehension</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="515"/> - <source>unnecessary generator - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a list comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="518"/> - <source>unnecessary generator - rewrite as a dict comprehension</source> + <source>unnecessary generator - rewrite as a set comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="521"/> - <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="524"/> + <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> <source>unnecessary list comprehension - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> <source>unnecessary list comprehension - "{0}" can take a generator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="770"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> <source>mutable default argument of type {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> <source>sort keys - '{0}' should be before '{1}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> <source>logging statement uses '%'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> - <source>logging statement uses f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> + <source>logging statement uses f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="750"/> <source>logging statement uses 'warn' instead of 'warning'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> <source>logging statement uses string.format()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> <source>logging statement uses '+'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="760"/> <source>gettext import with alias _ found: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="648"/> - <source>Python does not support the unary prefix increment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> - <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> - <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> - <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> - <source>Python 3 does not include '.iter*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> - <source>Python 3 does not include '.view*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> - <source>'.next()' does not exist in Python 3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> - <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> - <source>mutable default argument of function call '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> - <source>using .strip() with multi-character strings is misleading</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> - <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> - <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <source>Python does not support the unary prefix increment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> + <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="663"/> + <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> + <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> + <source>Python 3 does not include '.iter*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> + <source>Python 3 does not include '.view*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> + <source>'.next()' does not exist in Python 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="700"/> + <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="776"/> - <source>None should not be added at any return if function has no return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="780"/> - <source>an explicit value at every return should be added if function has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="784"/> - <source>an explicit return at the end of the function should be added if it has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="788"/> - <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <source>mutable default argument of function call '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> + <source>using .strip() with multi-character strings is misleading</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="681"/> + <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="671"/> + <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <source>None should not be added at any return if function has no return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="783"/> + <source>an explicit value at every return should be added if function has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="787"/> + <source>an explicit return at the end of the function should be added if it has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="791"/> + <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> <source>do not call assert False since python -O removes these calls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="672"/> - <source>unncessary f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="675"/> + <source>unncessary f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> <source>cannot use 'self.__class__' as first argument of 'super()' call</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> - <source>do not call getattr with a constant attribute value</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> + <source>do not call getattr with a constant attribute value</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>do not call setattr with a constant attribute value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="796"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="799"/> <source>commented code lines should be removed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="792"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="795"/> <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="559"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="562"/> <source>use of 'datetime.datetime()' without 'tzinfo' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="566"/> <source>use of 'datetime.datetime.today()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> <source>use of 'datetime.datetime.utcnow()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="571"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="574"/> <source>use of 'datetime.datetime.utcfromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(, tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>use of 'datetime.datetime.now()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> <source>use of 'datetime.datetime.fromtimestamp()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="583"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="586"/> <source>use of 'datetime.datetime.strptime()' should be followed by '.replace(tzinfo=)'</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> + <source>use of 'datetime.date()' should be avoided. +Use 'datetime.datetime(, tzinfo=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> + <source>use of 'datetime.date.today()' should be avoided. +Use 'datetime.datetime.now(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="601"/> + <source>use of 'datetime.date.fromtimestamp()' should be avoided. +Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> + <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> - <source>use of 'datetime.date()' should be avoided. -Use 'datetime.datetime(, tzinfo=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> - <source>use of 'datetime.date.today()' should be avoided. -Use 'datetime.datetime.now(tz=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="598"/> - <source>use of 'datetime.date.fromtimestamp()' should be avoided. -Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> + <source>use of 'datetime.date.fromordinal()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> - <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> - <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> - <source>use of 'datetime.date.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> <source>use of 'datetime.date.fromisoformat()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> <source>unnecessary {0} call - rewrite as a literal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> - <source>unnecessary {0} literal - rewrite as a {1} literal</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="536"/> - <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> + <source>unnecessary {0} literal - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="539"/> - <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> + <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="542"/> - <source>unnecessary list call - remove the outer call to list()</source> + <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="545"/> - <source>unnecessary list comprehension - "in" can take a generator</source> + <source>unnecessary list call - remove the outer call to list()</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="548"/> - <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <source>unnecessary list comprehension - "in" can take a generator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="551"/> + <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>unnecessary {0} passed to list() - remove the outer call to {1}()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="613"/> - <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="616"/> - <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="619"/> + <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="622"/> <source>'sys.version' compared to string (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> - <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> - <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="629"/> + <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="632"/> <source>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="633"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> <source>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="637"/> - <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="640"/> + <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="643"/> <source>'sys.version' compared to string (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>'sys.version[:1]' referenced (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> @@ -45777,72 +46034,72 @@ <context> <name>NamingStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> <source>class names should use CapWords convention</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> - <source>function name should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="438"/> - <source>argument name should be lowercase</source> + <source>function name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> - <source>first argument of a class method should be named 'cls'</source> + <source>argument name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="444"/> - <source>first argument of a method should be named 'self'</source> + <source>first argument of a class method should be named 'cls'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> + <source>first argument of a method should be named 'self'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>first argument of a static method should not be named 'self' or 'cls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="451"/> - <source>module names should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="454"/> - <source>package names should be lowercase</source> + <source>module names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="457"/> - <source>constant imported as non constant</source> + <source>package names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="460"/> - <source>lowercase imported as non lowercase</source> + <source>constant imported as non constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="463"/> - <source>camelcase imported as lowercase</source> + <source>lowercase imported as non lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="466"/> - <source>camelcase imported as constant</source> + <source>camelcase imported as lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="469"/> - <source>variable in function should be lowercase</source> + <source>camelcase imported as constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="472"/> + <source>variable in function should be lowercase</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="475"/> <source>names 'l', 'O' and 'I' should be avoided</source> <translation type="unfinished"></translation> </message> @@ -45883,50 +46140,50 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="201"/> <source>SSL Certificate Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> - <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="205"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="212"/> <source>&Permanent accept</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="207"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="214"/> <source>&Temporary accept</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="209"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="216"/> <source>&Reject</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="243"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="284"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="247"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="288"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="295"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="336"/> <source>Authentication required</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="296"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="337"/> <source>Authentication is required to access:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="202"/> + <source><b>{0}</b><p>The host <b>{1}</b> you are trying to access has errors in the SSL certificate.</p><ul><li>{2}</li></ul><p>Would you like to make an exception?</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>NetworkPage</name> @@ -47240,6 +47497,41 @@ <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../PipInterface/Pip.py" line="679"/> + <source>Cache Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="704"/> + <source>List Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="694"/> + <source>Enter a file pattern (empty for all):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="728"/> + <source>Remove Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="720"/> + <source>Enter a file pattern:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="751"/> + <source>Purge Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="744"/> + <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PipDialog</name> @@ -47993,7 +48285,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/> <source>Install Packages</source> <translation type="unfinished"></translation> </message> @@ -48018,28 +48310,48 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="942"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="955"/> <source>Edit User Configuration...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="945"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="958"/> <source>Edit Environment Configuration...</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="963"/> + <source>Configure...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>Edit Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>No valid configuration path determined. Aborting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="941"/> + <source>Show Cache Info...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="944"/> + <source>Show Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="947"/> + <source>Remove Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../PipInterface/PipPackagesWidget.py" line="950"/> - <source>Configure...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>Edit Configuration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>No valid configuration path determined. Aborting</source> + <source>Purge Cache...</source> <translation type="unfinished"></translation> </message> </context> @@ -49301,17 +49613,17 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1640"/> + <location filename="../Preferences/__init__.py" line="1645"/> <source>Export Preferences</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Import Preferences</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Properties File (*.ini);;All Files (*)</source> <translation type="unfinished"></translation> </message> @@ -58238,22 +58550,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="90"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="85"/> <source>Qt Tools</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="123"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="118"/> <source>The tool executable is composed of the prefix, the tool name and the postfix. For win, the extension is added automatically.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="169"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="164"/> <source>This gives an example of the complete tool name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="172"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="167"/> <source>designer</source> <translation type="unfinished"></translation> </message> @@ -58268,62 +58580,52 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> - <source><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="135"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="130"/> <source>Qt-Prefix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="137"/> <source>Enter the prefix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="144"/> <source>Qt-Postfix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="151"/> <source>Enter the postfix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="221"/> <source>Indent Width:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="233"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="228"/> <source>Select the indent width (default: 4)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="327"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="322"/> <source>Generate imports relative to '.'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="296"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="291"/> <source>Tools Directory:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="114"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="109"/> <source>Enter the path of the Qt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="211"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="206"/> <source>Enter the path of the PyQt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -58333,7 +58635,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="312"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="307"/> <source>Enter the path of the PySide2 tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -58343,35 +58645,40 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="187"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="182"/> <source>PyQt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="220"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="215"/> <source>pyuic Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="272"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="267"/> <source>Select to generate extra code to test and display the form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="275"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="270"/> <source>Generate Extra Test Code</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="288"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="283"/> <source>PySide2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="316"/> <source>pyside2-uic Options</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> + <source><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Queues</name> @@ -60152,6 +60459,334 @@ </message> </context> <context> + <name>Security</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="16"/> + <source>Use of 'assert' detected. The enclosed code will be removed when compiling to optimised byte code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="22"/> + <source>Use of 'exec' detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="27"/> + <source>'chmod' setting a permissive mask {0} on file ({1}).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="32"/> + <source>Possible binding to all interfaces.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="43"/> + <source>Possible hardcoded password: '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="48"/> + <source>Probable insecure usage of temp file/directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="53"/> + <source>Try, Except, Pass detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="56"/> + <source>Try, Except, Continue detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="61"/> + <source>A Flask app appears to be run with debug=True, which exposes the Werkzeug debugger and allows the execution of arbitrary code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="67"/> + <source>Pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="71"/> + <source>Deserialization with the marshal module is possibly dangerous.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="74"/> + <source>Use of insecure MD2, MD4, MD5, or SHA1 hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="77"/> + <source>Use of insecure cipher '{0}'. Replace with a known secure cipher such as AES.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="81"/> + <source>Use of insecure cipher mode '{0}'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="84"/> + <source>Use of insecure and deprecated function (mktemp).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="87"/> + <source>Use of possibly insecure function - consider using safer ast.literal_eval.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="91"/> + <source>Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="95"/> + <source>Use of HTTPSConnection on older versions of Python prior to 2.7.9 and 3.4.3 do not provide security, see https://wiki.openstack.org/wiki/OSSN/OSSN-0033</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="100"/> + <source>Audit url open for permitted schemes. Allowing use of file:/ or custom schemes is often unexpected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="104"/> + <source>Standard pseudo-random generators are not suitable for security/cryptographic purposes.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="108"/> + <source>Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="142"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="147"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="152"/> + <source>FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="156"/> + <source>The input method in Python 2 will read from standard input, evaluate and run the resulting string as Python source code. This is similar, though in many ways worse, than using eval. On Python 2, use raw_input instead, input is safe in Python 3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="162"/> + <source>By default, Python will create a secure, verified SSL context for use in such classes as HTTPSConnection. However, it still allows using an insecure context via the _create_unverified_context that reverts to the previous behavior that does not validate certificates or perform hostname checks.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="169"/> + <source>Use of os.tempnam() and os.tmpnam() is vulnerable to symlink attacks. Consider using tmpfile() instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="175"/> + <source>Use of insecure {0} hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="180"/> + <source>A telnet-related module is being imported. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="184"/> + <source>A FTP-related module is being imported. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="192"/> + <source>Consider possible security implications associated with the '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="216"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="221"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="226"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Use defused.xmlrpc.monkey_patch() function to monkey-patch xmlrpclib and mitigate XML vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="231"/> + <source>Consider possible security implications associated with '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="235"/> + <source>The pyCrypto library and its module '{0}' are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="242"/> + <source>'requests' call with verify=False disabling SSL certificate checks, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="248"/> + <source>'ssl.wrap_socket' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="252"/> + <source>'SSL.Context' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="256"/> + <source>Function call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="260"/> + <source>Function definition identified with insecure SSL/TLS protocol version by default, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="264"/> + <source>'ssl.wrap_socket' call with no SSL/TLS protocol version specified, the default 'SSLv23' could be insecure, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="270"/> + <source>{0} key sizes below {1:d} bits are considered breakable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="275"/> + <source>Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary objects. Consider 'yaml.safe_load()'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="281"/> + <source>Paramiko call with policy set to automatically trust the unknown host key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="287"/> + <source>Possible shell injection via 'Paramiko' call, check inputs are properly sanitized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="291"/> + <source>'subprocess' call with shell=True seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="295"/> + <source>'subprocess' call with shell=True identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="298"/> + <source>'subprocess' call - check for execution of untrusted input.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="301"/> + <source>Function call with shell=True parameter identified, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="305"/> + <source>Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="309"/> + <source>Starting a process with a shell, possible injection detected, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="313"/> + <source>Starting a process without a shell.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="316"/> + <source>Starting a process with a partial executable path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="321"/> + <source>Possible SQL injection vector through string-based query construction.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="327"/> + <source>Possible wildcard injection in call: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="332"/> + <source>Use of 'extra()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="335"/> + <source>Use of 'RawSQL()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="340"/> + <source>Using jinja2 templates with 'autoescape=False' is dangerous and can lead to XSS. Use 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="345"/> + <source>By default, jinja2 sets 'autoescape' to False. Consider using 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="352"/> + <source>Mako templates allow HTML/JS rendering by default and are inherently open to XSS attacks. Ensure variables in all templates are properly sanitized via the 'n', 'h' or 'x' flags (depending on context). For example, to HTML escape the variable 'data' do ${{ data |h }}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="360"/> + <source>Potential XSS on 'mark_safe()' function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="365"/> + <source>Possible hardcoded AWS access key ID: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="368"/> + <source>Possible hardcoded AWS secret access key: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="373"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>SecurityPage</name> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="37"/> @@ -60193,6 +60828,21 @@ <source><b>Configure security settings</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="96"/> + <source>Certificate Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="102"/> + <source>Select to always reject web pages with certificate issues</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="105"/> + <source>Always reject URLs with certificate errors</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SendRefererWhitelistDialog</name> @@ -62142,75 +62792,80 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="168"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="171"/> <source>Media</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="184"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="187"/> <source>Image</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="189"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="192"/> <source>Image Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="197"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="200"/> <source><b>Preview</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="216"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="238"/> <source>Preview not available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="243"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="265"/> <source>Copy Image Location to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="246"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="268"/> <source>Copy Image Name to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source>Save Image</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="299"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="321"/> <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source><p>Cannot write to file <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="229"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="251"/> <source>Loading...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="287"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="309"/> <source><p>This preview is not available.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="76"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="97"/> <source><b>Connection is encrypted.</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="80"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="102"/> <source><b>Connection is not encrypted.</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="87"/> + <source><b>Connection is encrypted but may be insecure.</b></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SiteInfoWidget</name> @@ -62220,60 +62875,65 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="62"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="69"/> <source>Your connection to this site is <b>secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="67"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="74"/> <source>Your connection to this site is <b>not secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="82"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="89"/> <source>This is your <b>{0}.</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="88"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="95"/> <source>You have <b>never</b> visited this site before.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="97"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="104"/> <source>first</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="99"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="106"/> <source>second</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="101"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="108"/> <source>third</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="102"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="109"/> <source>This is your <b>{0}</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="123"/> - <source>Register as <b>{0}</b> links handler.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="130"/> + <source>Register as <b>{0}</b> links handler.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="137"/> <source>Register</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="147"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="154"/> <source>More...</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="63"/> + <source>Your connection to this site <b>may not be secure</b>.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SnapWidget</name> @@ -74622,7 +75282,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6327"/> + <location filename="../UI/UserInterface.py" line="6294"/> <source>Export Keyboard Shortcuts</source> <translation type="unfinished"></translation> </message> @@ -74642,7 +75302,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Import Keyboard Shortcuts</source> <translation type="unfinished"></translation> </message> @@ -74887,7 +75547,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Help</source> <translation type="unfinished"></translation> </message> @@ -74937,7 +75597,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7324"/> + <location filename="../UI/UserInterface.py" line="7291"/> <source></table></source> <translation type="unfinished"></translation> </message> @@ -74987,209 +75647,204 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt 3 support</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source>Problem</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source><p>The file <b>{0}</b> does not exist or is zero length.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source>Process Generation Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="4962"/> + <location filename="../UI/UserInterface.py" line="4935"/> <source><p>Could not start Qt-Designer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5034"/> + <location filename="../UI/UserInterface.py" line="5005"/> <source><p>Could not start Qt-Linguist.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5087"/> + <location filename="../UI/UserInterface.py" line="5049"/> <source><p>Could not start Qt-Assistant.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5129"/> + <location filename="../UI/UserInterface.py" line="5096"/> <source><p>Could not start custom viewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5149"/> + <location filename="../UI/UserInterface.py" line="5116"/> <source><p>Could not start the help viewer.<br>Ensure that it is available as <b>hh</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5199"/> + <location filename="../UI/UserInterface.py" line="5166"/> <source><p>Could not start UI Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5256"/> + <location filename="../UI/UserInterface.py" line="5223"/> <source><p>Could not start Translation Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5279"/> + <location filename="../UI/UserInterface.py" line="5246"/> <source><p>Could not start SQL Browser.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>External Tools</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5374"/> + <location filename="../UI/UserInterface.py" line="5341"/> <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>No toolgroup entry '{0}' found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5422"/> + <location filename="../UI/UserInterface.py" line="5389"/> <source>Starting process '{0} {1}'. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source><p>Could not start the tool entry <b>{0}</b>.<br>Ensure that it is available as <b>{1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5516"/> + <location filename="../UI/UserInterface.py" line="5483"/> <source>Process '{0}' has exited. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source>Documentation Missing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source><p>The documentation starting point "<b>{0}</b>" could not be found.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source>Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5727"/> + <location filename="../UI/UserInterface.py" line="5694"/> <source><p>The PyQt4 documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Keyboard shortcut file (*.e4k)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source>Save tasks</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source>Read tasks</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6646"/> + <location filename="../UI/UserInterface.py" line="6613"/> <source>Save session</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6584"/> + <location filename="../UI/UserInterface.py" line="6551"/> <source><p>The session file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source>Read session</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source><p>The session file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source>Drop Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source><p><b>{0}</b> is not a file.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>&Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7108"/> + <location filename="../UI/UserInterface.py" line="7075"/> <source>Trying host {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>Update available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Error during updates check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Could not perform updates check.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7309"/> + <location filename="../UI/UserInterface.py" line="7276"/> <source><h3>Available versions</h3><table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>First time usage</source> <translation type="unfinished"></translation> </message> @@ -75229,27 +75884,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>Error getting versions information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7167"/> + <location filename="../UI/UserInterface.py" line="7134"/> <source>The versions information could not be downloaded. Please go online and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Open Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Could not start a web browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -75335,12 +75990,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5351"/> + <location filename="../UI/UserInterface.py" line="5318"/> <source><p>Could not start Snapshot tool.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7380"/> + <location filename="../UI/UserInterface.py" line="7347"/> <source>Select Workspace Directory</source> <translation type="unfinished"></translation> </message> @@ -75705,7 +76360,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5789"/> + <location filename="../UI/UserInterface.py" line="5756"/> <source><p>The PyQt5 documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> @@ -75715,7 +76370,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>%v/%m</source> <translation type="unfinished"></translation> </message> @@ -75735,7 +76390,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7103"/> + <location filename="../UI/UserInterface.py" line="7070"/> <source>Version Check</source> <translation type="unfinished"></translation> </message> @@ -75805,27 +76460,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt v.3 is not supported by eric6.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>The update to <b>{0}</b> of eric6 is available at <b>{1}</b>. Would you like to get it?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>Eric6 is up to date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>You are using the latest version of eric6</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>eric6 has not been configured yet. The configuration dialog will be started.</source> <translation type="unfinished"></translation> </message> @@ -75845,7 +76495,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7119"/> + <location filename="../UI/UserInterface.py" line="7086"/> <source>The versions information cannot not be downloaded because you are <b>offline</b>. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -75890,7 +76540,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>Load session</source> <translation type="unfinished"></translation> </message> @@ -75905,17 +76555,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>eric6 Session Files (*.e5s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>Crash Session found!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>A session file of a crashed session was found. Shall this session be restored?</source> <translation type="unfinished"></translation> </message> @@ -75930,17 +76580,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>Update Check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7244"/> + <location filename="../UI/UserInterface.py" line="7211"/> <source>You are using a snapshot release of eric6. A more up-to-date stable release might be available.</source> <translation type="unfinished"></translation> </message> @@ -75995,7 +76645,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source><p>The PySide{0} documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> @@ -76071,17 +76721,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source>Start Web Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6015"/> + <location filename="../UI/UserInterface.py" line="5982"/> <source>The eric6 web browser could not be started.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source><p>The eric6 web browser is not started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> @@ -76180,6 +76830,21 @@ <source><h2>Version Numbers</h2><table></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../UI/UserInterface.py" line="4944"/> + <source><p>Could not find the Qt-Designer executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5014"/> + <source><p>Could not find the Qt-Linguist executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5058"/> + <source><p>Could not find the Qt-Assistant executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>UserPropertiesDialog</name> @@ -81875,47 +82540,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="324"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="402"/> <source>Images</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="408"/> <source>Select to load images</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="333"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="411"/> <source>Load images</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="343"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="421"/> <source>Style Sheet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="349"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="427"/> <source>User Style Sheet:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="365"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="443"/> <source>Enter the file name of a user style sheet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="375"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="453"/> <source>Tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="381"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="459"/> <source>Select to issue a warning, if multiple tabs are about to be closed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="384"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="462"/> <source>Warn, if multiple tabs are about to be closed</source> <translation type="unfinished"></translation> </message> @@ -81935,37 +82600,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="426"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="504"/> <source><font color="#FF0000"><b>Note:</b> All settings below are activated at the next startup of the application.</font></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="433"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="511"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="439"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="517"/> <source>Select to show toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="520"/> <source>Show Toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="394"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="472"/> <source>Scrollbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="400"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="478"/> <source>Select to show scrollbars. Note: Scrolling is possible even without them.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="403"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="481"/> <source>Show Scrollbars</source> <translation type="unfinished"></translation> </message> @@ -81975,13 +82640,48 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="304"/> + <source>Select the background color for secure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> - <source>Background color of secure URLs:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="298"/> - <source>Select the background color for secure URLs.</source> + <source>URL Entry Background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="291"/> + <source>Secure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="327"/> + <source>Insecure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="340"/> + <source>Select the background color for insecure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="350"/> + <source>Malicious URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="363"/> + <source>Select the background color for malicious URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="373"/> + <source>Private Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="386"/> + <source>Select the background color for URLs in private mode.</source> <translation type="unfinished"></translation> </message> </context> @@ -83248,27 +83948,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="892"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="913"/> <source>Loading...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="912"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="922"/> <source>Finished loading</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="914"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="889"/> <source>Failed to load</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window?</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation> @@ -83279,22 +83979,22 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="962"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="970"/> <source>&Quit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="965"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="973"/> <source>C&lose Current Tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1146"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1154"/> <source>Restore All Closed Tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1148"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1156"/> <source>Clear List</source> <translation type="unfinished"></translation> </message> @@ -86122,12 +86822,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="391"/> + <location filename="../eric6.py" line="399"/> <source>Starting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../eric6.py" line="396"/> + <location filename="../eric6.py" line="404"/> <source>Generating Main Window...</source> <translation type="unfinished"></translation> </message> @@ -86278,7 +86978,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="183"/> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="187"/> <source>no message defined for code '{0}'</source> <translation type="unfinished"></translation> </message> @@ -86462,421 +87162,426 @@ <source>'...' % ... `*` specifier requires sequence</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="165"/> + <source>'if tuple literal' is always true, perhaps remove accidental comma?</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>pycodestyle</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="21"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> <source>indentation contains mixed spaces and tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> - <source>indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="27"/> - <source>expected an indented block</source> + <source>indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="30"/> - <source>unexpected indentation</source> + <source>expected an indented block</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="33"/> - <source>indentation is not a multiple of four (comment)</source> + <source>unexpected indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36"/> - <source>expected an indented block (comment)</source> + <source>indentation is not a multiple of four (comment)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39"/> + <source>expected an indented block (comment)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> <source>unexpected indentation (comment)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> - <source>continuation line indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="48"/> - <source>continuation line missing indentation or outdented</source> + <source>continuation line indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="51"/> + <source>continuation line missing indentation or outdented</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54"/> <source>closing bracket does not match indentation of opening bracket's line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55"/> - <source>closing bracket does not match visual indentation</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="58"/> - <source>continuation line with same indent as next logical line</source> + <source>closing bracket does not match visual indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="61"/> - <source>continuation line over-indented for hanging indent</source> + <source>continuation line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64"/> - <source>continuation line over-indented for visual indent</source> + <source>continuation line over-indented for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67"/> - <source>continuation line under-indented for visual indent</source> + <source>continuation line over-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70"/> - <source>visually indented line with same indent as next logical line</source> + <source>continuation line under-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73"/> - <source>continuation line unaligned for hanging indent</source> + <source>visually indented line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76"/> - <source>closing bracket is missing indentation</source> + <source>continuation line unaligned for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79"/> - <source>indentation contains tabs</source> + <source>closing bracket is missing indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82"/> + <source>indentation contains tabs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85"/> <source>whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91"/> - <source>whitespace before '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94"/> - <source>multiple spaces before operator</source> + <source>whitespace before '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97"/> - <source>multiple spaces after operator</source> + <source>multiple spaces before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100"/> - <source>tab before operator</source> + <source>multiple spaces after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103"/> - <source>tab after operator</source> + <source>tab before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106"/> - <source>missing whitespace around operator</source> + <source>tab after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109"/> - <source>missing whitespace around arithmetic operator</source> + <source>missing whitespace around operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112"/> - <source>missing whitespace around bitwise or shift operator</source> + <source>missing whitespace around arithmetic operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115"/> - <source>missing whitespace around modulo operator</source> + <source>missing whitespace around bitwise or shift operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118"/> - <source>missing whitespace after '{0}'</source> + <source>missing whitespace around modulo operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121"/> - <source>multiple spaces after '{0}'</source> + <source>missing whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124"/> - <source>tab after '{0}'</source> + <source>multiple spaces after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127"/> + <source>tab after '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> <source>unexpected spaces around keyword / parameter equals</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> - <source>at least two spaces before inline comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136"/> - <source>inline comment should start with '# '</source> + <source>at least two spaces before inline comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="139"/> - <source>block comment should start with '# '</source> + <source>inline comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="142"/> - <source>too many leading '#' for block comment</source> + <source>block comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="145"/> - <source>multiple spaces after keyword</source> + <source>too many leading '#' for block comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="148"/> - <source>multiple spaces before keyword</source> + <source>multiple spaces after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="151"/> - <source>tab after keyword</source> + <source>multiple spaces before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154"/> - <source>tab before keyword</source> + <source>tab after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157"/> - <source>missing whitespace after keyword</source> + <source>tab before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="160"/> - <source>trailing whitespace</source> + <source>missing whitespace after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163"/> - <source>no newline at end of file</source> + <source>trailing whitespace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166"/> + <source>no newline at end of file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169"/> <source>blank line contains whitespace</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> - <source>too many blank lines ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> - <source>blank lines found after function decorator</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="194"/> - <source>blank line at end of file</source> + <source>too many blank lines ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <source>blank lines found after function decorator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="197"/> - <source>multiple imports on one line</source> + <source>blank line at end of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200"/> - <source>module level import not at top of file</source> + <source>multiple imports on one line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203"/> - <source>line too long ({0} > {1} characters)</source> + <source>module level import not at top of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206"/> - <source>the backslash is redundant between brackets</source> + <source>line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209"/> + <source>the backslash is redundant between brackets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> <source>line break before binary operator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> - <source>.has_key() is deprecated, use 'in'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> - <source>deprecated form of raising exception</source> + <source>.has_key() is deprecated, use 'in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> - <source>'<>' is deprecated, use '!='</source> + <source>deprecated form of raising exception</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> + <source>'<>' is deprecated, use '!='</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>backticks are deprecated, use 'repr()'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> - <source>multiple statements on one line (colon)</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> - <source>multiple statements on one line (semicolon)</source> + <source>multiple statements on one line (colon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> - <source>statement ends with a semicolon</source> + <source>multiple statements on one line (semicolon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> + <source>statement ends with a semicolon</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248"/> <source>multiple statements on one line (def)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="251"/> - <source>comparison to {0} should be {1}</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> - <source>test for membership should be 'not in'</source> + <source>comparison to {0} should be {1}</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> - <source>test for object identity should be 'is not'</source> + <source>test for membership should be 'not in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> - <source>do not compare types, use 'isinstance()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> - <source>do not assign a lambda expression, use a def</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> - <source>ambiguous variable name '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> - <source>ambiguous class definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> - <source>ambiguous function definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> - <source>{0}: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> - <source>{0}</source> + <source>test for object identity should be 'is not'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> + <source>do not compare types, use 'isinstance()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> + <source>do not assign a lambda expression, use a def</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> + <source>ambiguous variable name '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> + <source>ambiguous class definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> + <source>ambiguous function definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284"/> + <source>{0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> <source>do not use bare except</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184"/> <source>expected {0} blank lines after class or function definition, found {1}</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> + <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> + <source>missing whitespace around parameter equals</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <source>expected {0} blank lines, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <source>expected {0} blank lines before a nested definition, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <source>line break after binary operator</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> - <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> - <source>missing whitespace around parameter equals</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172"/> - <source>expected {0} blank lines, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="185"/> - <source>expected {0} blank lines before a nested definition, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> - <source>line break after binary operator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>invalid escape sequence '\{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> <source>too many blank lines ({0}) before a nested definition, expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> <source>too many blank lines ({0}), expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> <source>over-indented</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> <source>doc line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message>
--- a/eric6/i18n/eric6_es.ts Sun May 03 13:42:52 2020 +0200 +++ b/eric6/i18n/eric6_es.ts Wed Jun 17 17:14:12 2020 +0200 @@ -352,7 +352,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="200"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="201"/> <source>Add Bookmark</source> <translation>Añadir Marcador</translation> </message> @@ -1101,72 +1101,72 @@ <context> <name>AnnotationsChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="808"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> <source>missing type annotation for function argument '{0}'</source> <translation>falta anotación de tipo para el argumento '{0}' de la función</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> - <source>missing type annotation for '*{0}'</source> - <translation>falta anotación de tipo para '*{0}'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="814"/> + <source>missing type annotation for '*{0}'</source> + <translation>falta anotación de tipo para '*{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> <source>missing type annotation for '**{0}'</source> <translation>falta anotación de tipo para '**{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> - <source>missing return type annotation for public function</source> - <translation>falta anotación de tipo para valor de retorno de función pública</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="826"/> - <source>missing return type annotation for protected function</source> - <translation>falta anotación de tipo para valor de retorno de función protegida</translation> + <source>missing return type annotation for public function</source> + <translation>falta anotación de tipo para valor de retorno de función pública</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="829"/> - <source>missing return type annotation for private function</source> - <translation>falta anotación de tipo para valor de retorno de función privada</translation> + <source>missing return type annotation for protected function</source> + <translation>falta anotación de tipo para valor de retorno de función protegida</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="832"/> - <source>missing return type annotation for special method</source> - <translation>falta anotación de tipo para valor de retorno de método especial</translation> + <source>missing return type annotation for private function</source> + <translation>falta anotación de tipo para valor de retorno de función privada</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="835"/> - <source>missing return type annotation for staticmethod</source> - <translation>falta anotación de tipo para valor de retorno de método estático</translation> + <source>missing return type annotation for special method</source> + <translation>falta anotación de tipo para valor de retorno de método especial</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="838"/> + <source>missing return type annotation for staticmethod</source> + <translation>falta anotación de tipo para valor de retorno de método estático</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="841"/> <source>missing return type annotation for classmethod</source> <translation>falta anotación de tipo para valor de retorno de método de clase</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="850"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="853"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> - <source>missing type annotation for 'self' in method</source> - <translation>falta anotación de tipo para 'self' en método</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="820"/> + <source>missing type annotation for 'self' in method</source> + <translation>falta anotación de tipo para 'self' en método</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> <source>missing type annotation for 'cls' in classmethod</source> <translation>falta anotación de tipo para 'cls' en método de clase</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="842"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="845"/> <source>type annotation coverage of {0}% is too low</source> <translation>cobertura de anotaciones de tipo de {0} demasiado baja</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="846"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="849"/> <source>type annotation is too complex ({0} > {1})</source> <translation>anotaciones de tipo demasiado complejas ({0} > {1})</translation> </message> @@ -1814,32 +1814,32 @@ <translation>Añadir &Carpeta</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="154"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> <source>&Open</source> <translation>&Abrir</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> <source>Open in New &Tab</source> <translation>Abrir en Nueva Pes&taña</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="167"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> <source>Edit &Name</source> <translation>Editar &Nombre</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="170"/> - <source>Edit &Address</source> - <translation>Editar &Dirección</translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <source>Edit &Address</source> + <translation>Editar &Dirección</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="174"/> <source>&Delete</source> <translation>&Borrar</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="331"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="343"/> <source>New Folder</source> <translation>Nueva carpeta</translation> </message> @@ -1849,25 +1849,40 @@ <translation>Pulse para eliminar las entradas seleccionadas</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="176"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="178"/> <source>&Properties...</source> <translation>&Propiedades...</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="161"/> - <source>Open in New &Window</source> - <translation>Abrir en Nueva &Ventana</translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="163"/> + <source>Open in New &Window</source> + <translation>Abrir en Nueva &Ventana</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="165"/> <source>Open in New Pri&vate Window</source> <translation>Abrir en Nueva Ventana &Privada</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="160"/> <source>Open in New &Background Tab</source> <translation>Abrir en Nueva Pes&taña en Segundo Plano</translation> </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="182"/> + <source>New &Folder...</source> + <translation>Nueva C&arpeta</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>New Bookmark Folder</source> + <translation>Nueva Carpeta de Marcadores</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>Enter title for new bookmark folder:</source> + <translation>Introducir título para la nueva carpeta de marcadores:</translation> + </message> </context> <context> <name>BookmarksImportDialog</name> @@ -2774,6 +2789,49 @@ </message> </context> <context> + <name>CheckerCategories</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="63"/> + <source>Annotations</source> + <translation type="unfinished">Anotaciones</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="66"/> + <source>Code Complexity</source> + <translation type="unfinished">Complejidad del Código</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="69"/> + <source>Documentation</source> + <translation type="unfinished">Documentación</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="72"/> + <source>Errors</source> + <translation type="unfinished">Errores</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="75"/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="78"/> + <source>Naming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="84"/> + <source>Warnings</source> + <translation type="unfinished">Advertencias</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <source>Security</source> + <translation type="unfinished">Seguridad</translation> + </message> +</context> +<context> <name>ChromeImporter</name> <message> <location filename="../WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py" line="43"/> @@ -2909,15 +2967,20 @@ <translation>Archivos de Firmware CircuitPython (*.uf2);;Todos los Archivos (*)</translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source>Select Path to Device</source> <translation>Seleccionar Ruta al Dispositivo</translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source><p>The device volume <b>{0}</b> could not be found. Is the device in 'bootloader' mode and mounted?</p> <p>Alternatively select the "Manual Select" entry and enter the path to the device below.</p></source> <translation><p>El volumen de dispositivo <b>{0}</b> no se puede encontrar. ¿Está dicho dispositivo en modo 'cargador de arranque' y montado?</p> <p>Alternativamente, seleccionar la opción "Selección Manuale introducir la ruta al dispositivo más abajo.</p></translation> </message> + <message> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="52"/> + <source>Manual Select</source> + <translation>Selección Manual</translation> + </message> </context> <context> <name>ClearPrivateDataDialog</name> @@ -3267,6 +3330,14 @@ </message> </context> <context> + <name>CodeStyleChecker</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1133"/> + <source>No message defined for code '{0}'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>CodeStyleCheckerDialog</name> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="14"/> @@ -3283,137 +3354,137 @@ sobre una entrada, la abrirá en una ventana de edición posicionando el cursor en la línea y posición correspondiente.</p></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="50"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="68"/> <source>Exclude Files:</source> <translation>Excluir Archivos:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="57"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="75"/> <source>Enter filename patterns of files to be excluded separated by a comma</source> <translation>Introducir patrones de nombre de archivo de los archivos a ser excluidos, separados por comas</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="830"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1090"/> <source>Press to start the code style check run</source> <translation>Pulsar para iniciar la comprobación de estilo de código</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="840"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1254"/> <source>Press to fix the selected issues</source> <translation>Pulsar para arreglar los problemas seleccionados</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1113"/> <source>Press to load the default values</source> <translation>Pulsar para cargar los valores por defecto</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="873"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1123"/> <source>Press to store the current values as defaults</source> <translation>Pulsar para almacenar los valores actuales como valores por defecto</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="883"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1133"/> <source>Press to reset the default values</source> <translation>Pulsar para resetear los valores por defecto</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="82"/> <source>Exclude Messages:</source> <translation>Excluir Mensajes:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="71"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="69"/> <source>Enter message codes or categories to be excluded separated by a comma</source> - <translation>Introduzca códigos de mensaje o categorías a excluir separados por comas</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="141"/> + <translation type="obsolete">Introduzca códigos de mensaje o categorías a excluir separados por comas</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="159"/> <source>Press to select the message codes from a list</source> <translation>Pulsar para seleccionar los códigos de mensaje de una lista</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="85"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="103"/> <source>Included Messages:</source> <translation>Mensajes Incluidos:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="92"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="90"/> <source>Enter message codes or categories to be included separated by a comma</source> - <translation>Introducir códigos de mensaje o categorías a incluir separados por comas</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="106"/> + <translation type="obsolete">Introducir códigos de mensaje o categorías a incluir separados por comas</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="124"/> <source>Fix Issues:</source> <translation>Arreglar Problemas:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="113"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="131"/> <source>Enter message codes of issues to be fixed automatically (leave empty to fix all)</source> <translation>Introducir los códigos de mensaje de los problemas que se desea arreglar automáticamente (dejar en blanco para arreglar todos)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="127"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="145"/> <source>Don't Fix Issues:</source> <translation>No Arreglar Problemas:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="134"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="152"/> <source>Enter message codes of issues not to be fixed automatically</source> <translation>Introducir los códigos de mensaje de los problemas que se se van a arreglar automáticamente</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="265"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="283"/> <source>Max. Line Length:</source> <translation>Máxima Longitud de Línea:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="316"/> <source>Enter the maximum allowed line length (PEP-8: 79 characters)</source> <translation>Introducir el máximo permitido para longitud de línea (PEP-8: 79 caracteres)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="425"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="443"/> <source>Docstring Type:</source> <translation>Tipo de Docstring:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="450"/> <source>Select the rule set for docstrings</source> <translation>Seleccionar conjunto de reglas para docstrings</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="406"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="424"/> <source>Select to allow hanging closing brackets</source> <translation>Seleccionar para permitir hanging closing brackets</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="409"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="427"/> <source>Allow hanging closing brackets</source> <translation>Permitir hanging closing brackets</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="150"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="168"/> <source>Select to repeat each message type</source> <translation>Seleccionar para repetir cada tipo de mensaje</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="153"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="171"/> <source>Repeat messages</source> <translation>Repetir mensajes</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="163"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="181"/> <source>Select to fix some issues</source> <translation>Seleccionar para arreglar problemas</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="166"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="184"/> <source>Fix issues automatically</source> <translation>Arreglar problemas automaticamente</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="904"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1167"/> <source><b>Result List</b> <p>This list shows the results of the code style check. Double clicking an entry will open this entry in an editor window and position the cursor at @@ -3423,375 +3494,525 @@ sobre una entrada, la abrirá en una ventana de edición posicionando el cursor en la línea y posición correspondiente.</p></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1183"/> <source>File/Line</source> <translation>Archivo/Línea</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="925"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1188"/> <source>Code</source> <translation>Código</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="930"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1193"/> <source>Message</source> <translation>Mensaje</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="80"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="117"/> <source>PEP-257</source> <translation>Muestra el progreso de la comprobación del estilo de código</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="118"/> <source>Eric</source> <translation>Eric</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="88"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="144"/> <source>Statistics...</source> <translation>Estadísticas...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="90"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="146"/> <source>Press to show some statistics for the last run</source> <translation>Pulsar para mostrar algunas estadísticas de la última ejecución</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="149"/> <source>Show</source> <translation>Mostrar</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="151"/> <source>Press to show all files containing an issue</source> <translation>Pulsar para mostrar todos los archivos con algún problema</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="637"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="241"/> <source>Error: {0}</source> <translation>Error: {0}</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="244"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="248"/> <source>Fix: {0}</source> <translation>Arreglar: {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="778"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="982"/> <source>No issues found.</source> <translation>No se han encontrado problemas.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1214"/> <source>Shows the progress of the code style check</source> <translation>Muestra el progreso de la revisión de estilo de código</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="960"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1223"/> <source>%v/%m Files</source> <translation>%v/%m Archivos</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="176"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="194"/> <source>Select to show ignored issues</source> <translation>Seleccionar para mostrar problemas ignorados</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="179"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="197"/> <source>Show ignored</source> <translation>Mostrar ignorados</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="730"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="927"/> <source>{0} (ignored)</source> <translation>{0} (ignorado)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="622"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="820"/> <source>Preparing files...</source> <translation>Preparando archivos...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="698"/> <source>Enter the maximum allowed code complexity (McCabe: 10)</source> <translation>Introducir la máxima complejidad de código permitida (McCabe: 10)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="152"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="214"/> <source>Errors</source> <translation>Errores</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="664"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="859"/> <source>Transferring data...</source> <translation>Transfiriendo datos...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="44"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="42"/> <source>Global Options</source> <translation>Opciones Globales</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="233"/> <source>Specific Options</source> <translation>Opciones Específicas</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="257"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="275"/> <source>Source Style</source> <translation>Estilo de Fuente</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="419"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="437"/> <source>Documentation Style</source> <translation>Estilo de Documentación</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="455"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="473"/> <source>Coding Line</source> <translation>Línea de Código</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="461"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="479"/> <source>Valid Encodings:</source> <translation>Codificaciones Válidas:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="468"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="486"/> <source>Enter valid encodings separated by a comma (leave empty to use defaults)</source> <translation>Introducir codificaciones válidas separadas por comas (dejar en blanco para utilizar valores por defecto)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="478"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="496"/> <source>Copyright</source> <translation>Copyright</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="484"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="502"/> <source>Min. File Size:</source> <translation>Tamaño de Archivo Mínimo:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="491"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="509"/> <source>Enter the minimum size a file must have to be checked (0 for all files)</source> <translation>Introducir el tamaño mínimo que un archivo debe tener para ser comprobado (0 para todos los archivos)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="517"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="535"/> <source>Author:</source> <translation>Autor:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="524"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="542"/> <source>Enter a copyright author name to check for (leave empty to omit this check)</source> <translation>Introducir un nombre de autor de copyright para comprobar (dejar en blanco para omitir esta comprobación)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="534"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="552"/> <source>Future Imports</source> <translation>Future Imports</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="540"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="558"/> <source>Expected Imports:</source> <translation>Imports Esperados:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="654"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="672"/> <source>Code Complexity</source> <translation>Complejidad del Código</translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1093"/> + <source>&Start</source> + <translation>&Iniciar</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1257"/> + <source>&Fix Selected</source> + <translation>&Arreglar seleccionados</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1116"/> + <source>&Load Defaults</source> + <translation>Cargar Va&lores por Defecto</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1126"/> + <source>St&ore Defaults</source> + <translation>Almacenar val&ores por defecto</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1136"/> + <source>&Reset Defaults</source> + <translation>&Restablecer Valores por Defecto</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="985"/> + <source>No files found (check your ignore list).</source> + <translation>No se han encontrado archivos (comprobar lista de ignorados).</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="584"/> + <source>Ignore Built-ins Assignment</source> + <translation>Ignorar Asignaciones Incorporadas</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="600"/> + <source>Left</source> + <translation>Izquierda</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="605"/> + <source>Right</source> + <translation>Derecha</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="615"/> + <source>Press to add a built-in assignment to be ignored</source> + <translation>Pulsar para añadir una asignación incorporada a ignorar</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="625"/> + <source>Press to delete the selected entries</source> + <translation>Pulsar para eliminar las entradas seleccionadas</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="691"/> + <source>Max. McCabe Complexity:</source> + <translation>Máx. Complejidad de McCabe:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="714"/> + <source>Max. Line Complexity:</source> + <translation>Máx. Complejidad de Línea:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="721"/> + <source>Enter the maximum complexity (number of nodes) for a line of code</source> + <translation>Introducir la máxima complejidad (número de nodos) para una línea de código</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="737"/> + <source>Max. Line Complexity Score:</source> + <translation>Puntuación de Máx. Complejidad de Línea:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="744"/> + <source>Enter the maximum allowed median for line complexity</source> + <translation>Introducir el máximo permitido para la mediana de complejidad de línea</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="350"/> + <source>Blank Lines Before</source> + <translation>Líneas en Blanco Antes</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="356"/> + <source>Top Level Classes and Functions:</source> + <translation>Clases y Funciones de Primer Nivel:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="363"/> + <source>Enter the number of blank lines before top level classes and functions</source> + <translation>Introducir el número de líneas en blanco antes de clases y funciones de primer nivel</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="395"/> + <source>Methods and Nested Classes and Functions:</source> + <translation>Métodos, Clases Anidadas y Funciones:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="402"/> + <source>Enter the number of blank lines before methods and nested classes or functions</source> + <translation>Introducir el número de líneas en blanco antes de métodos, clases anidadas o funciones</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="309"/> + <source>Max. Documentation Line Length:</source> + <translation>Máx. Longitud Línea Documentación:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="653"/> + <source>Commented Code</source> + <translation>Código Comentado</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="659"/> + <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> + <translation>Seleccionar para buscar el código en comentarios más agresivamente. Puede incrementar el número de falsos positivos.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="662"/> + <source>Search aggressively</source> + <translation>Búsqueda agresiva</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="763"/> + <source>Type Annotations</source> + <translation>Anotaciones de Tipo</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="769"/> + <source>Min. Coverage:</source> + <translation>Cobert. Mínima:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="776"/> + <source>Enter the minimum percentage of type annotations</source> + <translation>Introducir el porcentaje mínimo de anotaciones de tipo</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="779"/> + <source>off</source> + <translation>deshabilitado</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="782"/> + <source>%</source> + <translation>%</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="805"/> + <source>Max. Complexity:</source> + <translation>Complej. Máxima:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="812"/> + <source>Enter the maximum type annotation complexity</source> + <translation>Introducir la complejidad máxima para anotaciones de tipo</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="32"/> + <source>Configure</source> + <translation>Configurar</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1146"/> + <source>Run</source> + <translation>Ejecutar</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1244"/> + <source>Press to restart the code style check run</source> + <translation>Pulsar para reiniciar la ejecución de comprobación de estilo de código</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1247"/> + <source>Restart</source> + <translation>Reiniciar</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="48"/> + <source>Categories:</source> + <translation type="unfinished">Categorías:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="58"/> + <source>Select the categories of checks to be performed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="89"/> + <source>Enter message codes to be excluded separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="110"/> + <source>Enter message codes to be included separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="833"/> - <source>&Start</source> - <translation>&Iniciar</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="843"/> - <source>&Fix Selected</source> - <translation>&Arreglar seleccionados</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="866"/> - <source>&Load Defaults</source> - <translation>Cargar Va&lores por Defecto</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="876"/> - <source>St&ore Defaults</source> - <translation>Almacenar val&ores por defecto</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="886"/> - <source>&Reset Defaults</source> - <translation>&Restablecer Valores por Defecto</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="781"/> - <source>No files found (check your ignore list).</source> - <translation>No se han encontrado archivos (comprobar lista de ignorados).</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="566"/> - <source>Ignore Built-ins Assignment</source> - <translation>Ignorar Asignaciones Incorporadas</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="582"/> - <source>Left</source> - <translation>Izquierda</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="587"/> - <source>Right</source> - <translation>Derecha</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="597"/> - <source>Press to add a built-in assignment to be ignored</source> - <translation>Pulsar para añadir una asignación incorporada a ignorar</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="607"/> - <source>Press to delete the selected entries</source> - <translation>Pulsar para eliminar las entradas seleccionadas</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="673"/> - <source>Max. McCabe Complexity:</source> - <translation>Máx. Complejidad de McCabe:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="696"/> - <source>Max. Line Complexity:</source> - <translation>Máx. Complejidad de Línea:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="703"/> - <source>Enter the maximum complexity (number of nodes) for a line of code</source> - <translation>Introducir la máxima complejidad (número de nodos) para una línea de código</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="719"/> - <source>Max. Line Complexity Score:</source> - <translation>Puntuación de Máx. Complejidad de Línea:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="726"/> - <source>Enter the maximum allowed median for line complexity</source> - <translation>Introducir el máximo permitido para la mediana de complejidad de línea</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="332"/> - <source>Blank Lines Before</source> - <translation>Líneas en Blanco Antes</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="338"/> - <source>Top Level Classes and Functions:</source> - <translation>Clases y Funciones de Primer Nivel:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="345"/> - <source>Enter the number of blank lines before top level classes and functions</source> - <translation>Introducir el número de líneas en blanco antes de clases y funciones de primer nivel</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="377"/> - <source>Methods and Nested Classes and Functions:</source> - <translation>Métodos, Clases Anidadas y Funciones:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="384"/> - <source>Enter the number of blank lines before methods and nested classes or functions</source> - <translation>Introducir el número de líneas en blanco antes de métodos, clases anidadas o funciones</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="291"/> - <source>Max. Documentation Line Length:</source> - <translation>Máx. Longitud Línea Documentación:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="635"/> - <source>Commented Code</source> - <translation>Código Comentado</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="641"/> - <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> - <translation>Seleccionar para buscar el código en comentarios más agresivamente. Puede incrementar el número de falsos positivos.</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="644"/> - <source>Search aggressively</source> - <translation>Búsqueda agresiva</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="745"/> - <source>Type Annotations</source> - <translation>Anotaciones de Tipo</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="751"/> - <source>Min. Coverage:</source> - <translation>Cobert. Mínima:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="758"/> - <source>Enter the minimum percentage of type annotations</source> - <translation>Introducir el porcentaje mínimo de anotaciones de tipo</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="761"/> - <source>off</source> - <translation>deshabilitado</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="764"/> - <source>%</source> - <translation>%</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="787"/> - <source>Max. Complexity:</source> - <translation>Complej. Máxima:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="794"/> - <source>Enter the maximum type annotation complexity</source> - <translation>Introducir la complejidad máxima para anotaciones de tipo</translation> + <source>Security Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="839"/> + <source>Hardcoded 'tmp' Directories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="849"/> + <source>Weak Cryptographic Keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="855"/> + <source>DSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="973"/> + <source>High Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="868"/> + <source>Select the bit length below which a DSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="990"/> + <source>Medium Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="885"/> + <source>Select the bit length below which a DSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="911"/> + <source>RSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="924"/> + <source>Select the bit length below which a RSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="941"/> + <source>Select the bit length below which a RSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="967"/> + <source>Elliptic Curves</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="980"/> + <source>Select the bit length below which an Elliptic Curve is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="997"/> + <source>Select the bit length below which an Elliptic Curve is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1026"/> + <source>Enter the names of insecure SSL protocols and methods (one per line)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1033"/> + <source>Insecure SSL Protocols:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1043"/> + <source>Insecure Hashes:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1050"/> + <source>Enter a list of hash methods to be considered insecure separated by comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1057"/> + <source>Select to also check for insecure exception handling for typed exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1060"/> + <source>Check Typed Exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1067"/> + <source>Enter directory names (one per line) to be checked for</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1154"/> + <source><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>CodeStyleCheckerPlugin</name> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> <source>Check Code Style</source> <translation>Comprobar Estilo del Código</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>&Code Style...</source> - <translation>Estilo del &Código...</translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="262"/> - <source>Check code style.</source> - <translation>Comprobar estilo código.</translation> - </message> - <message> <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>&Code Style...</source> + <translation>Estilo del &Código...</translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="266"/> + <source>Check code style.</source> + <translation>Comprobar estilo código.</translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="364"/> <source><b>Check Code Style...</b><p>This checks Python files for compliance to the code style conventions given in various PEPs.</p></source> <translation><b>Comprobar Estilo del Código....</b><p>Chequea archivos de Python en cuanto al cumplimiento de las convenciones de estilo de código tal como vienen dadas en varios PEPs.</p></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="110"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="112"/> <source>Python 2 batch check</source> <translation>Python 2 comprobación por lotes</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="126"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="128"/> <source>Python 3 batch check</source> <translation>Python 3 comprobación por lotes</translation> </message> @@ -3827,142 +4048,142 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="857"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="861"/> <source>Triple single quotes converted to triple double quotes.</source> <translation>Triple comilla simple convertida a triple comilla doble.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="860"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="864"/> <source>Introductory quotes corrected to be {0}"""</source> <translation>Comillas introductorias corregidas para ser {0}"""</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="867"/> <source>Single line docstring put on one line.</source> <translation>Docstrings de una sola línea puestos en una sola línea.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="866"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="870"/> <source>Period added to summary line.</source> <translation>Coma añadida a la línea de resumen.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="893"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="897"/> <source>Blank line before function/method docstring removed.</source> <translation>Línea en blanco antes de docstring de función/método eliminada.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="872"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="876"/> <source>Blank line inserted before class docstring.</source> <translation>Linea en blanco insertada delante de docstring de clase.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="875"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="879"/> <source>Blank line inserted after class docstring.</source> <translation>Linea en blanco insertada detrás de docstring.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="878"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="882"/> <source>Blank line inserted after docstring summary.</source> <translation>Linea en blanco insertada detrás de docstring de resumen.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="881"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="885"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation>Linea en blanco insertada detrás de último párrafo de docstring.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="884"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="888"/> <source>Leading quotes put on separate line.</source> <translation>Comillas iniciales puestas en línea separada.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="887"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="891"/> <source>Trailing quotes put on separate line.</source> <translation>Comillas finales puestas en línea separada.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="890"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="894"/> <source>Blank line before class docstring removed.</source> <translation>Línea en blanco antes de docstring de clase eliminada.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="896"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="900"/> <source>Blank line after class docstring removed.</source> <translation>Línea en blanco detrás de docstring eliminada.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="899"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="903"/> <source>Blank line after function/method docstring removed.</source> <translation>Línea en blanco detrás de docstring de función/método eliminada.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="902"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="906"/> <source>Blank line after last paragraph removed.</source> <translation>Linea en blanco detrás de último párrafo eliminada.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="905"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="909"/> <source>Tab converted to 4 spaces.</source> <translation>Tabulador convertido a 4 espacios.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="908"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="912"/> <source>Indentation adjusted to be a multiple of four.</source> <translation>Indentación ajustada para ser un múltiplo de cuatro.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="911"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="915"/> <source>Indentation of continuation line corrected.</source> <translation>Indentación de línea de continuación corregida.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="914"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="918"/> <source>Indentation of closing bracket corrected.</source> <translation>Indentación de llave de cierre corregida.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="917"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="921"/> <source>Missing indentation of continuation line corrected.</source> <translation>Indentación inexistente en línea de continuación corregida.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="924"/> <source>Closing bracket aligned to opening bracket.</source> <translation>Llave de cierre alineada a llave de apertura.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="923"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="927"/> <source>Indentation level changed.</source> <translation>Nivel de indentación corregida.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="926"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="930"/> <source>Indentation level of hanging indentation changed.</source> <translation>Nivel de indentación de indentación colgante corregida.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="929"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="933"/> <source>Visual indentation corrected.</source> <translation>Indentación visual corregida.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="944"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="948"/> <source>Extraneous whitespace removed.</source> <translation>Eliminado espacio en blanco extraño.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="941"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="945"/> <source>Missing whitespace added.</source> <translation>Añadido espacio en blanco que faltaba.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="947"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> <source>Whitespace around comment sign corrected.</source> <translation>Espacio en blanco alrededor de signo de comentario corregido.</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="955"/> <source>%n blank line(s) inserted.</source> <translation> <numerusform>Insertada %n línea en blanco.</numerusform> @@ -3970,7 +4191,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="954"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> <source>%n superfluous lines removed</source> <translation> <numerusform>Eliminada %n línea en blanco sobrante</numerusform> @@ -3978,79 +4199,79 @@ </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="962"/> <source>Superfluous blank lines removed.</source> <translation>Eliminadas líneas en blanco sobrantes.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="961"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="965"/> <source>Superfluous blank lines after function decorator removed.</source> <translation>Eliminadas líneas en blanco sobrantes después de decorador de función.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="964"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="968"/> <source>Imports were put on separate lines.</source> <translation>Imports estaban puestos en líneas separadas.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="967"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="971"/> <source>Long lines have been shortened.</source> <translation>Líneas largas se han acortado.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="970"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="974"/> <source>Redundant backslash in brackets removed.</source> <translation>Backslash redundante en llaves eliminado.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="976"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="980"/> <source>Compound statement corrected.</source> <translation>Sentencia compuesta corregida.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="979"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="983"/> <source>Comparison to None/True/False corrected.</source> <translation>Comparación a None/True/False corregida.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="982"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="986"/> <source>'{0}' argument added.</source> <translation>Añadido el argumento '{0}'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="985"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="989"/> <source>'{0}' argument removed.</source> <translation>Eliminado el argumento '{0}'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="988"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="992"/> <source>Whitespace stripped from end of line.</source> <translation>Espacio eliminado del final de la línea.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="991"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="995"/> <source>newline added to end of file.</source> <translation>Carácter de nueva línea añadido al final del archivo.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="994"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="998"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation>Eliminadas líneas en blanco sobrantes de final de archivo.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="997"/> - <source>'<>' replaced by '!='.</source> - <translation>'<>' reemplazado por '!='.</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1001"/> + <source>'<>' replaced by '!='.</source> + <translation>'<>' reemplazado por '!='.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1005"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation>¡No se ha podido guardar el archivo! Va a ser omitido. Razón: {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1107"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1110"/> <source> no message defined for code '{0}'</source> - <translation> sin mensaje definido para el código '{0}'</translation> + <translation type="obsolete"> sin mensaje definido para el código '{0}'</translation> </message> </context> <context> @@ -4076,7 +4297,7 @@ <translation>Mensaje</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="60"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="63"/> <source>%n issue(s) found</source> <translation> <numerusform>%n problema encontrado</numerusform> @@ -4084,7 +4305,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="67"/> <source>%n issue(s) fixed</source> <translation> <numerusform>%n problema solucionado</numerusform> @@ -4092,7 +4313,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="66"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="69"/> <source>%n file(s) checked</source> <translation> <numerusform>%n archivo revisado</numerusform> @@ -4100,7 +4321,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="68"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="71"/> <source>%n file(s) with issues found</source> <translation> <numerusform>Encontrado %n archivo con problemas</numerusform> @@ -4108,13 +4329,21 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="62"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="65"/> <source>%n issue(s) ignored</source> <translation> <numerusform>%n problema ignorado</numerusform> <numerusform>%n problemas ignorados</numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="73"/> + <source>%n security issue(s) acknowledged</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> </context> <context> <name>CodingError</name> @@ -4526,22 +4755,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="479"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="482"/> <source>'{0}' is too complex ({1})</source> <translation>'{0}' es demasiado complejo ({1})</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="481"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="484"/> <source>source code line is too complex ({0})</source> <translation>la línea de código fuente es demasiado compleja ({0})</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="483"/> - <source>overall source code line complexity is too high ({0})</source> - <translation>la complejidad global de línea de código fuente es demasiado elevada({0})</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="486"/> + <source>overall source code line complexity is too high ({0})</source> + <translation>la complejidad global de línea de código fuente es demasiado elevada({0})</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="489"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> @@ -8288,242 +8517,242 @@ <context> <name>DocStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="288"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="291"/> <source>module is missing a docstring</source> <translation>al módulo le falta un docstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290"/> - <source>public function/method is missing a docstring</source> - <translation>a la función/método le falta un docstring</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293"/> - <source>private function/method may be missing a docstring</source> - <translation>a la función/método privado le podría estar faltando un docstring</translation> + <source>public function/method is missing a docstring</source> + <translation>a la función/método le falta un docstring</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296"/> + <source>private function/method may be missing a docstring</source> + <translation>a la función/método privado le podría estar faltando un docstring</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299"/> <source>public class is missing a docstring</source> <translation>a la clase pública le falta un docstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301"/> <source>private class may be missing a docstring</source> <translation>a la clase privada le podría estar faltando un docstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="300"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="303"/> <source>docstring not surrounded by """</source> <translation>docstring no rodeado de """</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302"/> - <source>docstring containing \ not surrounded by r"""</source> - <translation>docstring contiene \ no rodeado de r"""</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305"/> - <source>docstring containing unicode character not surrounded by u"""</source> - <translation>docstring contiene carácter unicode no rodeado de u"""</translation> + <source>docstring containing \ not surrounded by r"""</source> + <translation>docstring contiene \ no rodeado de r"""</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308"/> + <source>docstring containing unicode character not surrounded by u"""</source> + <translation>docstring contiene carácter unicode no rodeado de u"""</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311"/> <source>one-liner docstring on multiple lines</source> <translation>docstring de una línea en múltiples líneas</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313"/> <source>docstring has wrong indentation</source> <translation>docstring tiene indentación errónea</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> <source>docstring summary does not end with a period</source> <translation>docstring de resumen no termina en punto</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> <source>docstring summary is not in imperative mood (Does instead of Do)</source> <translation>docstring de resumen no expresado en forma imperativa (Hace en lugar de Hacer)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320"/> - <source>docstring summary looks like a function's/method's signature</source> - <translation>docstring de resumen parece una firma de función/método</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> - <source>docstring does not mention the return value type</source> - <translation>docstring no menciona el tipo de valor de retorno</translation> + <source>docstring summary looks like a function's/method's signature</source> + <translation>docstring de resumen parece una firma de función/método</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> - <source>function/method docstring is separated by a blank line</source> - <translation>docstring de función/método separado por línea en blanco</translation> + <source>docstring does not mention the return value type</source> + <translation>docstring no menciona el tipo de valor de retorno</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> - <source>class docstring is not preceded by a blank line</source> - <translation>docstring de clase no precedido de línea en blanco</translation> + <source>function/method docstring is separated by a blank line</source> + <translation>docstring de función/método separado por línea en blanco</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> + <source>class docstring is not preceded by a blank line</source> + <translation>docstring de clase no precedido de línea en blanco</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> <source>class docstring is not followed by a blank line</source> <translation>docstring de clase no seguido de línea en blanco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> <source>docstring summary is not followed by a blank line</source> <translation>docstring de resumen no seguido de línea en blanco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341"/> <source>last paragraph of docstring is not followed by a blank line</source> <translation>último párrafo de docstring no seguido de línea en blanco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> - <source>private function/method is missing a docstring</source> - <translation>función/método privado al que le falta docstring</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> + <source>private function/method is missing a docstring</source> + <translation>función/método privado al que le falta docstring</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352"/> <source>private class is missing a docstring</source> <translation>clase privada a la que falta un docstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> - <source>leading quotes of docstring not on separate line</source> - <translation>comillas iniciales de docstring no están en línea separada</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <source>leading quotes of docstring not on separate line</source> + <translation>comillas iniciales de docstring no están en línea separada</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> <source>trailing quotes of docstring not on separate line</source> <translation>comillas finales de docstring no están en línea separada</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="363"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="366"/> <source>docstring does not contain a @return line but function/method returns something</source> <translation>docstring no contiene una línea @return pero la función/método retorna algo</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370"/> <source>docstring contains a @return line but function/method doesn't return anything</source> <translation>docstring contiene una línea @return pero la función/método no retorna nada</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> - <source>docstring does not contain enough @param/@keyparam lines</source> - <translation>docstring no contiene suficientes líneas @param/@keyparam</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> - <source>docstring contains too many @param/@keyparam lines</source> - <translation>docstring contiene demasiadas líneas @param/@keyparam</translation> + <source>docstring does not contain enough @param/@keyparam lines</source> + <translation>docstring no contiene suficientes líneas @param/@keyparam</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> - <source>keyword only arguments must be documented with @keyparam lines</source> - <translation>los argumentos de solo palabra clave deben estar documentados con líneas @keyparam</translation> + <source>docstring contains too many @param/@keyparam lines</source> + <translation>docstring contiene demasiadas líneas @param/@keyparam</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> - <source>order of @param/@keyparam lines does not match the function/method signature</source> - <translation>orden de líneas @param/@keyparam no coincide con la firma de la función/método</translation> + <source>keyword only arguments must be documented with @keyparam lines</source> + <translation>los argumentos de solo palabra clave deben estar documentados con líneas @keyparam</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> + <source>order of @param/@keyparam lines does not match the function/method signature</source> + <translation>orden de líneas @param/@keyparam no coincide con la firma de la función/método</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="386"/> <source>class docstring is preceded by a blank line</source> <translation>docstring de clase precedida de línea en blanco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> <source>class docstring is followed by a blank line</source> <translation>docstring de clase seguida de línea en blanco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> - <source>function/method docstring is preceded by a blank line</source> - <translation>docstring de función/método precedido de línea en blanco</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> + <source>function/method docstring is preceded by a blank line</source> + <translation>docstring de función/método precedido de línea en blanco</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> <source>function/method docstring is followed by a blank line</source> <translation>docstring de función/método seguido de línea en blanco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> - <source>last paragraph of docstring is followed by a blank line</source> - <translation>último párrafo de docstring seguido de línea en blanco</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="399"/> + <source>last paragraph of docstring is followed by a blank line</source> + <translation>último párrafo de docstring seguido de línea en blanco</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="402"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation>docstring no contiene una línea @exception pero la función/método lanza una excepción</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="403"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="406"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation>docstring contiene una línea @exception pero la función/método no lanza una excepción</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="426"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="429"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="312"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="315"/> <source>docstring does not contain a summary</source> <translation>docstring no contiene un resumen</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>docstring summary does not start with '{0}'</source> <translation>docstring de resumen no empieza con '{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="407"/> - <source>raised exception '{0}' is not documented in docstring</source> - <translation>la excepción '{0}' no está documentada en una docstring</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="410"/> - <source>documented exception '{0}' is not raised</source> - <translation>la excepción documentada '{0}' no se utiliza</translation> + <source>raised exception '{0}' is not documented in docstring</source> + <translation>la excepción '{0}' no está documentada en una docstring</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="413"/> - <source>docstring does not contain a @signal line but class defines signals</source> - <translation>docstring no contiene una línea @signal pero la clase define signals</translation> + <source>documented exception '{0}' is not raised</source> + <translation>la excepción documentada '{0}' no se utiliza</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="416"/> - <source>docstring contains a @signal line but class doesn't define signals</source> - <translation>docstring contiene una línea @signal pero la clase no define signals</translation> + <source>docstring does not contain a @signal line but class defines signals</source> + <translation>docstring no contiene una línea @signal pero la clase define signals</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="419"/> - <source>defined signal '{0}' is not documented in docstring</source> - <translation>la signal definida '{0}' no está documentada en una docstring</translation> + <source>docstring contains a @signal line but class doesn't define signals</source> + <translation>docstring contiene una línea @signal pero la clase no define signals</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="422"/> + <source>defined signal '{0}' is not documented in docstring</source> + <translation>la signal definida '{0}' no está documentada en una docstring</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="425"/> <source>documented signal '{0}' is not defined</source> <translation>la signal documentada '{0}' no está definida</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="354"/> <source>class docstring is still a default string</source> <translation>docstring de clase es todavía una cadena por defecto</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347"/> <source>function docstring is still a default string</source> <translation>docstring de función es todavía una cadena por defecto</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>module docstring is still a default string</source> <translation>docstring de módulo es todavía una cadena por defecto</translation> </message> @@ -10363,12 +10592,12 @@ <translation>&Eliminar Todas</translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Add Entry</source> <translation>Añadir entrada</translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Enter the entry to add to the list:</source> <translation>Introducir la entrada a añadir a la lista:</translation> </message> @@ -11002,7 +11231,7 @@ <translation>Editar punto de interrupción...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5615"/> + <location filename="../QScintilla/Editor.py" line="5616"/> <source>Enable breakpoint</source> <translation>Activar punto de interrupción</translation> </message> @@ -11102,197 +11331,197 @@ <translation>Autocompletar no está disponible porque no hay origen de datos para autocompletar.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5618"/> + <location filename="../QScintilla/Editor.py" line="5619"/> <source>Disable breakpoint</source> <translation>Deshabilitar punto de interrupción</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Code Coverage</source> <translation>Cobertura de codigo</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Please select a coverage file</source> <translation>Por favor seleccione un archivo de cobertura</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>Show Code Coverage Annotations</source> <translation>Mostrar Anotaciones de Cobertura de Código</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6049"/> + <location filename="../QScintilla/Editor.py" line="6050"/> <source>All lines have been covered.</source> <translation>Todas las líneas han sido cubiertas.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>There is no coverage file available.</source> <translation>No hay archivo de cobertura disponible.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Profile Data</source> <translation>Datos de profiling</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Please select a profile file</source> <translation>Por favor seleccione un archivo de profiling</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>Syntax Error</source> <translation>Error de sintaxis</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>No syntax error message available.</source> <translation>No hay mensajes de error de sintaxis disponibles.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Macro Name</source> <translation>Nombre de macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Select a macro name:</source> <translation>Seleccione un nombre de macro:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6754"/> + <location filename="../QScintilla/Editor.py" line="6755"/> <source>Load macro file</source> <translation>Cargar archivo de macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Macro files (*.macro)</source> <translation>Archivos de Macro (*.macro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source>Error loading macro</source> <translation>Error al cargar macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Save macro file</source> <translation>Guardar archivo de macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source>Save macro</source> <translation>Guardar macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source>Error saving macro</source> <translation>Error al guardar macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Start Macro Recording</source> <translation>Comenzar grabación de macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Macro recording is already active. Start new?</source> <translation>Grabación de macro ya está activada. ¿Comenzar una nueva?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Macro Recording</source> <translation>Grabando macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Enter name of the macro:</source> <translation>Introduzca el nombre de la macro:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7009"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>File changed</source> <translation>Archivo modificado</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source>Drop Error</source> <translation>Error al soltar</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7341"/> + <location filename="../QScintilla/Editor.py" line="7342"/> <source>Resources</source> <translation>Recursos</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7343"/> + <location filename="../QScintilla/Editor.py" line="7344"/> <source>Add file...</source> <translation>Añadir archivo...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7345"/> + <location filename="../QScintilla/Editor.py" line="7346"/> <source>Add files...</source> <translation>Añadir archivos...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7347"/> + <location filename="../QScintilla/Editor.py" line="7348"/> <source>Add aliased file...</source> <translation>Añadir archivo con un alias...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7350"/> + <location filename="../QScintilla/Editor.py" line="7351"/> <source>Add localized resource...</source> <translation>Añadir recursos localizados...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7354"/> + <location filename="../QScintilla/Editor.py" line="7355"/> <source>Add resource frame</source> <translation>Añadir ventana de recursos</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7373"/> + <location filename="../QScintilla/Editor.py" line="7374"/> <source>Add file resource</source> <translation>Añadir archivo de recursos</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7389"/> + <location filename="../QScintilla/Editor.py" line="7390"/> <source>Add file resources</source> <translation>Añadir archivo de recursos</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Add aliased file resource</source> <translation>Añadir archivo de recursos con un alias</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Package Diagram</source> <translation>Digrama de paquetes</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Include class attributes?</source> <translation>¿Incluir atributos de clase?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Imports Diagram</source> <translation>Diagrama de imports</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Include imports from external modules?</source> <translation>¿Incluir los imports de módulos externos?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Application Diagram</source> <translation>Diagrama de aplicación</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Include module names?</source> <translation>¿Incluir nombres de módulos?</translation> </message> @@ -11362,7 +11591,7 @@ <translation>Seleccionar el Analizador Léxico de Pygments.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7847"/> + <location filename="../QScintilla/Editor.py" line="7848"/> <source>Check spelling...</source> <translation>Corrección ortográfica...</translation> </message> @@ -11372,12 +11601,12 @@ <translation>Corrección ortográfica de la selección...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7850"/> + <location filename="../QScintilla/Editor.py" line="7851"/> <source>Add to dictionary</source> <translation>Añadir al diccionario</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7852"/> + <location filename="../QScintilla/Editor.py" line="7853"/> <source>Ignore All</source> <translation>Ignorar Todo</translation> </message> @@ -11417,32 +11646,32 @@ <translation><p>El archivo <b>{0}</b> no puede ser guardado.<br>Causa: {1}</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6768"/> + <location filename="../QScintilla/Editor.py" line="6769"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation><p>El archivo de macro <b>{0}</b> no se puede leer.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation><p>El archivo de macro <b>{0}</b> está dañado</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation><p>El archivo de macro <b>{0}</b> no se puede escribir.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7179"/> + <location filename="../QScintilla/Editor.py" line="7180"/> <source>{0} (ro)</source> <translation>{0} (ro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> no es un archivo.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Alias for file <b>{0}</b>:</source> <translation>Alias para el archivo <b>{0}</b>:</translation> </message> @@ -11472,22 +11701,22 @@ <translation><p>El archivo <b>{0}</b> ya existe. ¿Desea sobreescribirlo?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation><p>El archivo de macro <b>{0}</b> ya existe. ¿Desea sobreescribirlo?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6614"/> + <location filename="../QScintilla/Editor.py" line="6615"/> <source>Warning: {0}</source> <translation>Advertencia: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6621"/> + <location filename="../QScintilla/Editor.py" line="6622"/> <source>Error: {0}</source> <translation>Error: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7005"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation><br><b>Advertencia:</b> Perderá los cambios si lo reabre.</translation> </message> @@ -11512,27 +11741,27 @@ <translation>Cambio anterior</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>Sort Lines</source> <translation>Ordenar Líneas</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>The selection contains illegal data for a numerical sort.</source> <translation>La selección contiene datos ilegales para una ordenación numérica.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>Warning</source> <translation>Advertencia</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>No warning messages available.</source> <translation>No hay mensajes de advertencia disponibles.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6611"/> + <location filename="../QScintilla/Editor.py" line="6612"/> <source>Style: {0}</source> <translation>Estilo: {0}</translation> </message> @@ -11557,7 +11786,7 @@ <translation>Reabrir Con Codificación</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6999"/> + <location filename="../QScintilla/Editor.py" line="7000"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation><p>El archivo <b>{0}</b> ha cambiado mientras estaba abierto en eric6. ¿Desea volver a cargarlo?</p></translation> </message> @@ -11582,22 +11811,22 @@ <translation>El proveedor de lista de completado'{0}' ya está registrado. Se ignora la solicitud duplicada.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>Call-Tips Provider</source> <translation>Proveedor de Call-Tips</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation>El proveedor de call-tips'{0}' ya está registrado. Se ignora la solicitud duplicada.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>Register Mouse Click Handler</source> <translation>Registrar Manejador de Clicks de Ratón</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation>Un manejador de clicks de ratón para "{0}" ya está registrado por "{1}". Abortando solicitud por "{2}"...</translation> </message> @@ -11627,12 +11856,12 @@ <translation>Ejecutar Selección en Consola</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source>EditorConfig Properties</source> <translation>Propiedades de EditorConfig</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation><p>Las propiedades de EditorConfig para el archivo <b>{0}</b> no se ha podido cargar.</p></translation> </message> @@ -17003,17 +17232,17 @@ <translation>Introducir la ruta del archivo de firmware</translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="66"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="71"/> <source>Firmware Files (*.img);;All Files (*)</source> <translation>Archivos de Firmware (*.img);;Todos los Archivos (*)</translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="72"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="77"/> <source>Backup Firmware</source> <translation>Copia de Seguridad de Firmware</translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="76"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="82"/> <source>Restore Firmware</source> <translation>Restaurar Firmware</translation> </message> @@ -17031,12 +17260,12 @@ <translation>Borrar Flash</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="211"/> + <location filename="../MicroPython/EspDevices.py" line="217"/> <source>Flash MicroPython Firmware</source> <translation>Flash MicroPython Firmware</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="236"/> + <location filename="../MicroPython/EspDevices.py" line="248"/> <source>Flash Additional Firmware</source> <translation>Flash Additional Firmware</translation> </message> @@ -17061,7 +17290,7 @@ <translation>Tipo de chip no soportado '{0}'.</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>'esptool write_flash' Output</source> <translation>Salida de 'esptool write_flash'</translation> </message> @@ -17071,47 +17300,47 @@ <translation>Resetear Dispositivo</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>Backup Firmware</source> <translation>Copia de Seguridad de Firmware</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>Restore Firmware</source> <translation>Restaurar Firmware</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>Show Chip ID</source> <translation>Mostrar ID de Chip</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>Show Flash ID</source> <translation>Mostrar ID de Flash</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>Show MAC Address</source> <translation>Mostrar dirección MAC</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>'esptool read_flash' Output</source> <translation>Salida de 'esptool read_flash'</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>'esptool chip_id' Output</source> <translation>Salida de 'esptool chip_id'</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>'esptool flash_id' Output</source> <translation>Salida de 'esptool flash_id'</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>'esptool read_mac' Output</source> <translation>Salida de 'esptool read_mac'</translation> </message> @@ -17144,20 +17373,35 @@ <translation>Introducir la ruta del archivo patch</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="72"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="96"/> <source>Address:</source> <translation>Dirección:</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="79"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="103"/> <source>Enter the flash addres in the hexadecimal form</source> <translation>Introducir la dirección del flash en forma hexadecimal</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="43"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="51"/> <source>Firmware Files (*.bin);;All Files (*)</source> <translation>Archivos de Firmware (*.bin);;Todos los Archivos (*)</translation> </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="75"/> + <source>Flash Mode:</source> + <translation>Flash Mode:</translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="82"/> + <source>Select the flash mode</source> + <translation>Seleccionar el modo de flash</translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="89"/> + <source>Leave empty to use the default mode.</source> + <translation>Dejar en blanco para usar el modo por defecto.</translation> + </message> </context> <context> <name>ExceptionLogger</name> @@ -37561,6 +37805,14 @@ </message> </context> <context> + <name>IgnoredDevicesDialog</name> + <message> + <location filename="../MicroPython/IgnoredDevicesDialog.ui" line="14"/> + <source>Ignored Serial Devices</source> + <translation>Dispositivos de Serie Ignorados</translation> + </message> +</context> +<context> <name>ImageMarkupDialog</name> <message> <location filename="../QScintilla/MarkupProviders/ImageMarkupDialog.py" line="52"/> @@ -43353,27 +43605,27 @@ <context> <name>MicroPythonDevice</name> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="214"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="223"/> <source>Unsupported Device</source> <translation>Dispositivo no soportado</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="224"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="233"/> <source>REPL is not supported by this device.</source> <translation>REPL no soportado por este dispositivo.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="243"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="252"/> <source>Plotter is not supported by this device.</source> <translation>Plotter no soportado por este dispositivo.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="262"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="271"/> <source>Running scripts is not supported by this device.</source> <translation>La ejecución de scripts no está soportada por este dispositivo.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="282"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="291"/> <source>File Manager is not supported by this device.</source> <translation>El Gestor de Archovos no está soportado por este dispositivo.</translation> </message> @@ -43931,7 +44183,7 @@ <translation>Pulsar para abrir una ventana de gráfica para mostrar datos recibidos desde el dispositivo seleccionado</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="460"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="493"/> <source>Press to connect the selected device</source> <translation>Pulsar para conectar el dispositivo seleccionado</translation> </message> @@ -43959,32 +44211,32 @@ <translation>No se han detectado dispositivos soportados.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="430"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="463"/> <source>Clear</source> <translation>Limpiar</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="432"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="465"/> <source>Copy</source> <translation>Copiar</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="433"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="466"/> <source>Paste</source> <translation>Pegar</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="455"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="488"/> <source>Press to disconnect the current device</source> <translation>Pulsar para desconectar el dispositivo seleccionado</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>No device attached</source> <translation>No hay dispositivo conectado</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -43997,212 +44249,212 @@ Finalmente, pulsar el botón de reset del dispositivo y esperar unos pocos segundos antes de intentar de nuevo.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source>Start REPL</source> <translation>Iniciar REPL</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation><p>El REPL no se puede iniciar.</p><p>Razón: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source>Serial Device Connect</source> <translation>Conexión de Dispositivo en Serie</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation><p>No se puede conectar el dispositovo en el puerto de serie <b>{0}</b>.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source>Run Script</source> <translation>Ejecutar Script</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="921"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="954"/> <source>There is no editor open. Abort...</source> <translation>No hay editor abierto. Abortando...</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="929"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="962"/> <source>The current editor does not contain a script. Abort...</source> <translation>El editor actual no contiene un script. Abortando...</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source><p>Cannot run script.</p><p>Reason: {0}</p></source> <translation><p>No se puede ejecutar el script.</p><p>Razón: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Open Python File</source> <translation>Abrir Archivo de Python</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Python3 Files (*.py);;All Files (*)</source> <translation>Archivos de Python3 (*.py);;Todos los Archivos (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source>Start Chart</source> <translation>Iniciar Gráfica</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> <translation><p>No se puede iniciar la gráfica.</p><p>Razón: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>Unsaved Chart Data</source> <translation>Datos de Gráfica sin Guardar</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>The chart contains unsaved data.</source> <translation>La gráfica contiene datos sin guardar.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source>Start File Manager</source> <translation>Comenzar Gestor de Archivos</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> <translation><p>El Gestor de Archivos no se puede iniciar.</p><p>Razón: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1136"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169"/> <source>Show Version</source> <translation>Mostrar Versión</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1139"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1172"/> <source>Show Implementation</source> <translation>Mostrar Implementación</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source>Synchronize Time</source> <translation>Sincronizar Hora</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1147"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1180"/> <source>Show Device Time</source> <translation>Mostrar Hora del Dispositivo</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1150"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1183"/> <source>Show Local Time</source> <translation>Mostrar Hora Local</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1461"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1497"/> <source>Compile Python File</source> <translation>Compilar Archivo de Python</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1481"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1517"/> <source>Compile Current Editor</source> <translation>Compilar Editor Actual</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1188"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224"/> <source><h3>Device Version Information</h3></source> <translation><h3>Información de Versión de Dispositivo</h3></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1197"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1233"/> <source>No version information available.</source> <translation>No hay información de versión disponible.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1199"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1235"/> <source>Device Version Information</source> <translation>Información de Versión de Dispositivo</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1258"/> <source>unknown</source> <translation>desconocido</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source>Device Implementation Information</source> <translation>Información de Implementación de Dispositivo</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}</b>.</p></source> <translation><h3>Información de Implementación de Dispositivo </h3><p>Este dispositivo contiene <b>{0} {1}</b>.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source><p>The time of the connected device was synchronized with the local time.</p></source> <translation><p>La hora del dispositivo conectado está sincronizada con la hora local.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1272"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308"/> <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation><h3>Fecha y Hora del Dispositivo</h3><table><tr><td><b>Fecha</b></td><td>{0}</td></tr><tr><td><b>Hora</b></td><td>{1}</td></tr></table></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1280"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1316"/> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation><h3>Fecha y Hora del Dispositivo</h3><p>{0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1294"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1330"/> <source>Device Date and Time</source> <translation>Fecha y Hora del Dispositivo</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source>Local Date and Time</source> <translation>Fecha y Hora Local</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation><h3>Fecha y Hora del Local</h3><table><tr><td><b>Fecha</b></td><td>{0}</td></tr><tr><td><b>Hora</b></td><td>{1}</td></tr></table></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source>Error handling device</source> <translation>Error de gestión del dispositivo</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> <translation><p>Ha ocurrido un error al comunicar con el dispositivo conectado.</p><p>Método: {0}</p><p>Mensaje: {1}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1413"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1449"/> <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> <translation>El compilador multiplataforma de MicroPython <b>mpy-cross</b> no se encuentra. Asegúrese de que está en la ruta de búsqueda o configurarlo en la página de configuración de MicroPython.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1467"/> <source>Python Files (*.py);;All Files (*)</source> <translation>Archivos Python (*.py);;Todos los Archivos (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1441"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1477"/> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation>El archivo de Python <b>{0}</b> no existe. Abortando...</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1451"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1487"/> <source>'mpy-cross' Output</source> <translation>Salida de 'mpy-cross'</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1474"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1510"/> <source>The current editor does not contain a Python file. Aborting...</source> <translation>El editor actual no contiene un archivo de Python. Abortando...</translation> </message> @@ -44217,50 +44469,70 @@ <translation>Pulsar para abrir un gestor de archivos en el dispositivo seleccionado</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1018"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051"/> <source>µPy Chart</source> <translation>Gráfica µPy</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1098"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1131"/> <source>µPy Files</source> <translation>Archivos µPy</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1174"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1207"/> <source>Show Documentation</source> <translation>Mostrar Documentación</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1178"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1214"/> <source>Configure</source> <translation>Configurar</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1153"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186"/> <source>Show Time</source> <translation>Mostrar Tiempo</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1170"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1203"/> <source>Download Firmware</source> <translation>Descargar Firmware</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source>Date and Time</source> <translation>Fecha y Hora</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1333"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1369"/> <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> <translation><table><tr><th></th><th>Fecha y Hora Local</th><th>Fecha y Hora del Dispositivo</th></tr><tr><td><b>Fecha</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Hora</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> <translation><table><tr><th>Fecha y Hora Local</th><th>Fecha y Hora del Dispositivo</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></translation> </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>Unknown MicroPython Device</source> + <translation>Dispositivo MicroPython Desconocido</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:eric-bugs@eric-ide.python-projects.org"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> + <translation><p>Se han detectado los siguientes dispositivos de serie desconocidos</p><ul><li>{0}</li></ul><p>Por favor, informe de ésto junto con el nombre de la placa y una descripción corta a <a href="mailto:eric-bugs@eric-ide.python-projects.org"> la dirección de informes de errores</a> si se trata de una placa MicroPython board.</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>{0} ({1:04x}/{2:04x})</source> + <translation>{0} ({1:04x}/{2:04x})</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1211"/> + <source>Ignored Serial Devices</source> + <translation>Dispositivos de Serie Ignorados</translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -45063,469 +45335,469 @@ <context> <name>MiscellaneousChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="492"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> <source>coding magic comment not found</source> <translation>comentario mágico de codificación no encontrado</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> - <source>unknown encoding ({0}) found in coding magic comment</source> - <translation>codificación desconocida ({0}) encontrada en comentario mágico de codificación</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="498"/> - <source>copyright notice not present</source> - <translation>nota de copyright no presente</translation> + <source>unknown encoding ({0}) found in coding magic comment</source> + <translation>codificación desconocida ({0}) encontrada en comentario mágico de codificación</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="501"/> + <source>copyright notice not present</source> + <translation>nota de copyright no presente</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> <source>copyright notice contains invalid author</source> <translation>la nota de copyright contiene un autor no válido</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="702"/> - <source>found {0} formatter</source> - <translation>encontrado formateador {0}</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> - <source>format string does contain unindexed parameters</source> - <translation>cadena de formato que contiene parámetros sin indexar</translation> + <source>found {0} formatter</source> + <translation>encontrado formateador {0}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> - <source>docstring does contain unindexed parameters</source> - <translation>docstring cque contiene parámetros sin indexar</translation> + <source>format string does contain unindexed parameters</source> + <translation>cadena de formato que contiene parámetros sin indexar</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> - <source>other string does contain unindexed parameters</source> - <translation>otra cadena contiene parámetros sin indexar</translation> + <source>docstring does contain unindexed parameters</source> + <translation>docstring cque contiene parámetros sin indexar</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> - <source>format call uses too large index ({0})</source> - <translation>llamada de formato usa un índice demasiado largo ({0})</translation> + <source>other string does contain unindexed parameters</source> + <translation>otra cadena contiene parámetros sin indexar</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> - <source>format call uses missing keyword ({0})</source> - <translation>llamada de formato usa una palabra clave desaparecida ({0})</translation> + <source>format call uses too large index ({0})</source> + <translation>llamada de formato usa un índice demasiado largo ({0})</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> - <source>format call uses keyword arguments but no named entries</source> - <translation>llamada de formato usa argumentos de palabra clave pero sin entradas con nombre</translation> + <source>format call uses missing keyword ({0})</source> + <translation>llamada de formato usa una palabra clave desaparecida ({0})</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> - <source>format call uses variable arguments but no numbered entries</source> - <translation>llamada de formato usa argumentos de variable pero sin entradas numeradas</translation> + <source>format call uses keyword arguments but no named entries</source> + <translation>llamada de formato usa argumentos de palabra clave pero sin entradas con nombre</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> - <source>format call uses implicit and explicit indexes together</source> - <translation>llamada de formato usa juntos índices implícitos y explícitos</translation> + <source>format call uses variable arguments but no numbered entries</source> + <translation>llamada de formato usa argumentos de variable pero sin entradas numeradas</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> - <source>format call provides unused index ({0})</source> - <translation>llamada de formato proporciona índice que no se usa ({0})</translation> + <source>format call uses implicit and explicit indexes together</source> + <translation>llamada de formato usa juntos índices implícitos y explícitos</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> + <source>format call provides unused index ({0})</source> + <translation>llamada de formato proporciona índice que no se usa ({0})</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> <source>format call provides unused keyword ({0})</source> <translation>llamada de formato proporciona palabra clave que no se usa ({0})</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="751"/> - <source>expected these __future__ imports: {0}; but only got: {1}</source> - <translation>se esperaban estos __future__ imports: {0} pero solamente hay: {1}</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> + <source>expected these __future__ imports: {0}; but only got: {1}</source> + <translation>se esperaban estos __future__ imports: {0} pero solamente hay: {1}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> <source>expected these __future__ imports: {0}; but got none</source> <translation>se esperaban estos __future__ imports: {0}; but no hay ninguno</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="761"/> - <source>print statement found</source> - <translation>encontrada sentencia print</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> + <source>print statement found</source> + <translation>encontrada sentencia print</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="767"/> <source>one element tuple found</source> <translation>tupla de un elemento encontrada</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="800"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="803"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="507"/> <source>"{0}" is a Python builtin and is being shadowed; consider renaming the variable</source> <translation>"{0}" es una variable nativa de Python a la que se está ocultando; considere renombrar la variable</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="508"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="511"/> <source>"{0}" is used as an argument and thus shadows a Python builtin; consider renaming the argument</source> <translation>"{0}" se está usando como un argumento pero oculta un argumento nativo de Python; considere renombrar el argumento</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="512"/> - <source>unnecessary generator - rewrite as a list comprehension</source> - <translation>generador innecesario - reescribir como lista de comprehensión</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="515"/> - <source>unnecessary generator - rewrite as a set comprehension</source> - <translation>generador innecesario - reescribir como conjunto de comprehensión</translation> + <source>unnecessary generator - rewrite as a list comprehension</source> + <translation>generador innecesario - reescribir como lista de comprehensión</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="518"/> - <source>unnecessary generator - rewrite as a dict comprehension</source> - <translation>generador innecesario - reescribir como diccionario de comprehensión</translation> + <source>unnecessary generator - rewrite as a set comprehension</source> + <translation>generador innecesario - reescribir como conjunto de comprehensión</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="521"/> - <source>unnecessary list comprehension - rewrite as a set comprehension</source> - <translation>lista de comprehensión innecesaria - reescribir como conjunto de comprehensión</translation> + <source>unnecessary generator - rewrite as a dict comprehension</source> + <translation>generador innecesario - reescribir como diccionario de comprehensión</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="524"/> + <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <translation>lista de comprehensión innecesaria - reescribir como conjunto de comprehensión</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> <source>unnecessary list comprehension - rewrite as a dict comprehension</source> <translation>lista de comprehensión innecesaria - reescribir como diccionario de comprehensión</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> <source>unnecessary list comprehension - "{0}" can take a generator</source> <translation>lista de comprehensión innecesaria - "{0}" puede aceptar un generador</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="770"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> <source>mutable default argument of type {0}</source> <translation>argumento por defecto mutable de tipo {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> <source>sort keys - '{0}' should be before '{1}'</source> <translation>ordenar claves - '{0}' debeía ser antes de '{1}'</translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> + <source>logging statement uses '%'</source> + <translation>la sentencia de log usa '%'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> + <source>logging statement uses f-string</source> + <translation>la sentencia de log usa f-string</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="750"/> + <source>logging statement uses 'warn' instead of 'warning'</source> + <translation>la sentencia de log usa 'warn' en lugar de 'warning'</translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> - <source>logging statement uses '%'</source> - <translation>la sentencia de log usa '%'</translation> + <source>logging statement uses string.format()</source> + <translation>la sentencia de log usa string.format()</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> - <source>logging statement uses f-string</source> - <translation>la sentencia de log usa f-string</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> - <source>logging statement uses 'warn' instead of 'warning'</source> - <translation>la sentencia de log usa 'warn' en lugar de 'warning'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> - <source>logging statement uses string.format()</source> - <translation>la sentencia de log usa string.format()</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> <source>logging statement uses '+'</source> <translation>la sentencia de log usa '+'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="760"/> <source>gettext import with alias _ found: {0}</source> <translation>encontrado gettext import con alias _ : {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="648"/> - <source>Python does not support the unary prefix increment</source> - <translation>Python no soporta el prefijo unario de incremento</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> - <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> - <translation>'sys.maxint' no está definido en Python 3 - usar 'sys.maxsize'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> - <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> - <translation>'BaseException.message' está marcada como deprecada en Python 2.6 y se ha eliminado en Python 3 - usar 'str(e)'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> - <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> - <translation>asignaciones a 'os.environ' no limpian el entorno - usar 'os.environ.clear()'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> - <source>Python 3 does not include '.iter*' methods on dictionaries</source> - <translation>Python 3 no incluye métodos '.iter*' en diccionarios</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> - <source>Python 3 does not include '.view*' methods on dictionaries</source> - <translation>Python 3 no incluye métodos '.view*' en diccionarios</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> - <source>'.next()' does not exist in Python 3</source> - <translation>'.next()' no existe en Python 3</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> - <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> - <translation>'__metaclass__' no hace nada en Python 3 - usar 'class MyClass(BaseClass, metaclass=...)'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> - <source>mutable default argument of function call '{0}'</source> - <translation>argumento por defecto mutable de llamada a función {0}</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> - <source>using .strip() with multi-character strings is misleading</source> - <translation>usar .strip() cpm cadenas multicarácter es engañoso</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> - <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> - <translation>usar 'hasattr(x, "__call__")' para probar si 'x' is invocable no es fiable</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> - <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> - <translation>variable de control de bucle {0} no usada dentro del cuerpo del bucle - iniciar nombre con guión bajo</translation> + <source>Python does not support the unary prefix increment</source> + <translation>Python no soporta el prefijo unario de incremento</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> + <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> + <translation>'sys.maxint' no está definido en Python 3 - usar 'sys.maxsize'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="663"/> + <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> + <translation>'BaseException.message' está marcada como deprecada en Python 2.6 y se ha eliminado en Python 3 - usar 'str(e)'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> + <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> + <translation>asignaciones a 'os.environ' no limpian el entorno - usar 'os.environ.clear()'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> + <source>Python 3 does not include '.iter*' methods on dictionaries</source> + <translation>Python 3 no incluye métodos '.iter*' en diccionarios</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> + <source>Python 3 does not include '.view*' methods on dictionaries</source> + <translation>Python 3 no incluye métodos '.view*' en diccionarios</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> + <source>'.next()' does not exist in Python 3</source> + <translation>'.next()' no existe en Python 3</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="700"/> + <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> + <translation>'__metaclass__' no hace nada en Python 3 - usar 'class MyClass(BaseClass, metaclass=...)'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="776"/> - <source>None should not be added at any return if function has no return value except None</source> - <translation>None no se debería añadir a ningún return si la función no tiene valor de retorno excepto None</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="780"/> - <source>an explicit value at every return should be added if function has a return value except None</source> - <translation>un valor explícito se debería añadir a cada return si la función tiene un valor de retorno excepto None</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="784"/> - <source>an explicit return at the end of the function should be added if it has a return value except None</source> - <translation>un return explícito se debería añadir al final de cada función si tiene un valor de retorno excepto None</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="788"/> - <source>a value should not be assigned to a variable if it will be used as a return value only</source> - <translation>no se debería añadir un valor a una variable si se va a usar como valor de retorno solamente</translation> + <source>mutable default argument of function call '{0}'</source> + <translation>argumento por defecto mutable de llamada a función {0}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> + <source>using .strip() with multi-character strings is misleading</source> + <translation>usar .strip() cpm cadenas multicarácter es engañoso</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="681"/> + <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> + <translation>usar 'hasattr(x, "__call__")' para probar si 'x' is invocable no es fiable</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="671"/> + <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <translation>variable de control de bucle {0} no usada dentro del cuerpo del bucle - iniciar nombre con guión bajo</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <source>None should not be added at any return if function has no return value except None</source> + <translation>None no se debería añadir a ningún return si la función no tiene valor de retorno excepto None</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="783"/> + <source>an explicit value at every return should be added if function has a return value except None</source> + <translation>un valor explícito se debería añadir a cada return si la función tiene un valor de retorno excepto None</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="787"/> + <source>an explicit return at the end of the function should be added if it has a return value except None</source> + <translation>un return explícito se debería añadir al final de cada función si tiene un valor de retorno excepto None</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="791"/> + <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <translation>no se debería añadir un valor a una variable si se va a usar como valor de retorno solamente</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> <source>do not call assert False since python -O removes these calls</source> <translation>no llamar assert False dado que python -O elimina dichas llamadas</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="672"/> - <source>unncessary f-string</source> - <translation>f-string innecesaria</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="675"/> + <source>unncessary f-string</source> + <translation>f-string innecesaria</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> <source>cannot use 'self.__class__' as first argument of 'super()' call</source> <translation>no se puede usar 'self.__class__' como primer argumento de la llamada 'super()'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> - <source>do not call getattr with a constant attribute value</source> - <translation>no invocar getattr con un valor de atributo constante</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> + <source>do not call getattr with a constant attribute value</source> + <translation>no invocar getattr con un valor de atributo constante</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>do not call setattr with a constant attribute value</source> <translation>no invocar setattr con un valor de atributo constante</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="796"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="799"/> <source>commented code lines should be removed</source> <translation>las líneas de código comentadas se deberían eliminar</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="792"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="795"/> <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source> <translation>es preferible la continuación implícita de la línea entre paréntesis, corchetes y llaves al uso de la barra invertida</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="559"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="562"/> <source>use of 'datetime.datetime()' without 'tzinfo' argument should be avoided</source> <translation>debe evitarse el uso de 'datetime.datetime()' sin argumento 'tzinfo'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="566"/> <source>use of 'datetime.datetime.today()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation>debe evitarse el uso de 'datetime.datetime.today()'. Usar 'datetime.datetime.now(tz=)' en su lugar.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> <source>use of 'datetime.datetime.utcnow()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation>debe evitarse el uso de 'datetime.datetime.utcnow()'. Usar 'datetime.datetime.now(tz=)' en su lugar.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="571"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="574"/> <source>use of 'datetime.datetime.utcfromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(, tz=)' instead.</source> <translation>debe evitarse el uso de 'datetime.datetime.utcfromtimestamp()'. Usar 'datetime.datetime.fromtimestamp(, tz=)' en su lugar.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>use of 'datetime.datetime.now()' without 'tz' argument should be avoided</source> <translation>debe evitarse el uso de 'datetime.datetime.now()' sin argumento 'tz'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> <source>use of 'datetime.datetime.fromtimestamp()' without 'tz' argument should be avoided</source> <translation>debe evitarse el uso de 'datetime.datetime.fromtimestamp()' sin argumento 'tz'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="583"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="586"/> <source>use of 'datetime.datetime.strptime()' should be followed by '.replace(tzinfo=)'</source> <translation>el uso de 'datetime.datetime.strptime()' debe ser continuado con '.replace(tzinfo=)'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> <source>use of 'datetime.date()' should be avoided. Use 'datetime.datetime(, tzinfo=).date()' instead.</source> <translation>debe evitarse el uso de 'datetime.date()'. Usar 'datetime.datetime(, tzinfo=).date()' en su lugar.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> <source>use of 'datetime.date.today()' should be avoided. Use 'datetime.datetime.now(tz=).date()' instead.</source> <translation>debe evitarse el uso de 'datetime.date.today()'. Usar 'datetime.datetime.now(tz=).date()' en su lugar.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="598"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="601"/> <source>use of 'datetime.date.fromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> <translation>debe evitarse el uso de 'datetime.date.fromtimestamp()'. Usar 'datetime.datetime.fromtimestamp(tz=).date()' en su lugar.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> <translation>debe evitarse el uso de 'datetime.time()' sin argumento 'tzinfo'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> <translation>debe evitarse el uso de 'datetime.datetime.fromordinal()'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> - <source>use of 'datetime.date.fromordinal()' should be avoided</source> - <translation>debe evitarse el uso de 'datetime.date.fromordinal()'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> + <source>use of 'datetime.date.fromordinal()' should be avoided</source> + <translation>debe evitarse el uso de 'datetime.date.fromordinal()'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> <source>use of 'datetime.date.fromisoformat()' should be avoided</source> <translation>debe evitarse el uso de 'datetime.date.fromisoformat()'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> <source>unnecessary {0} call - rewrite as a literal</source> <translation>llamada {0} innecesaria - reescribir como un literal</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> - <source>unnecessary {0} literal - rewrite as a {1} literal</source> - <translation>literal {0} innecesario - reescribir como un literal {1}</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="536"/> - <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> - <translation>innecesario {0} pasado a tuple() - reescribir como un literal {1}</translation> + <source>unnecessary {0} literal - rewrite as a {1} literal</source> + <translation>literal {0} innecesario - reescribir como un literal {1}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="539"/> - <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> - <translation>innecesario {0} pasado a list() - reescribir como un literal {1}</translation> + <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> + <translation>innecesario {0} pasado a tuple() - reescribir como un literal {1}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="542"/> - <source>unnecessary list call - remove the outer call to list()</source> - <translation>llamada a lista innecesaria - eliminar la llamada más externa a list()</translation> + <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> + <translation>innecesario {0} pasado a list() - reescribir como un literal {1}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="545"/> - <source>unnecessary list comprehension - "in" can take a generator</source> - <translation>list comprehension innecesaria - "in" puede aceptar un generator</translation> + <source>unnecessary list call - remove the outer call to list()</source> + <translation>llamada a lista innecesaria - eliminar la llamada más externa a list()</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="548"/> - <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> - <translation>innecesario {0} pasado a tuple() - eliminar la llamada más externa a {1}()</translation> + <source>unnecessary list comprehension - "in" can take a generator</source> + <translation>list comprehension innecesaria - "in" puede aceptar un generator</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="551"/> + <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <translation>innecesario {0} pasado a tuple() - eliminar la llamada más externa a {1}()</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>unnecessary {0} passed to list() - remove the outer call to {1}()</source> <translation>innecesario {0} pasado a list() - eliminar la llamada más externa a {1}()</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="613"/> - <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation>'sys.version[:3]' referenciado (Python 3.10), usar 'sys.version_info'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="616"/> - <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation>'sys.version[2]' referenciado (Python 3.10), usar 'sys.version_info'</translation> + <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation>'sys.version[:3]' referenciado (Python 3.10), usar 'sys.version_info'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="619"/> + <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation>'sys.version[2]' referenciado (Python 3.10), usar 'sys.version_info'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="622"/> <source>'sys.version' compared to string (Python 3.10), use 'sys.version_info'</source> <translation>'sys.version' comparado a cadena (Python 3.10), usar 'sys.version_info'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> - <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> - <translation>'sys.version_info[0] == 3' referenciado (Python 4), usar '>='</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> - <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> - <translation>'six.PY3' referencicado (Python 4), usar 'not six.PY2'</translation> + <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> + <translation>'sys.version_info[0] == 3' referenciado (Python 4), usar '>='</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="629"/> + <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <translation>'six.PY3' referencicado (Python 4), usar 'not six.PY2'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="632"/> <source>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation>'sys.version_info[1]' comparado a entero (Python 4), comparar 'sys.version_info' con tupla</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="633"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> <source>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation>'sys.version_info.minor' comparado a entero (Python 4), comparar 'sys.version_info' con tupla</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="637"/> - <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> - <translation>'sys.version[0]' referenciado (Python 10), usar 'sys.version_info'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="640"/> + <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> + <translation>'sys.version[0]' referenciado (Python 10), usar 'sys.version_info'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="643"/> <source>'sys.version' compared to string (Python 10), use 'sys.version_info'</source> <translation>'sys.version' comparado a cadena (Python 10), usar 'sys.version_info'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>'sys.version[:1]' referenced (Python 10), use 'sys.version_info'</source> <translation>'sys.version[:1]' referenciado (Python 10), usar 'sys.version_info'</translation> </message> @@ -45981,72 +46253,72 @@ <context> <name>NamingStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> <source>class names should use CapWords convention</source> <translation>nombres de clase deben usar la convención de CapWords</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> - <source>function name should be lowercase</source> - <translation>nombres de función deben ser en minúsculas</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="438"/> - <source>argument name should be lowercase</source> - <translation>nombre de argumento debe ser en minúsculas</translation> + <source>function name should be lowercase</source> + <translation>nombres de función deben ser en minúsculas</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> - <source>first argument of a class method should be named 'cls'</source> - <translation>primer argumento de método de clase debe ser nombrado 'cls'</translation> + <source>argument name should be lowercase</source> + <translation>nombre de argumento debe ser en minúsculas</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="444"/> - <source>first argument of a method should be named 'self'</source> - <translation>primer argumento de un método debe ser nombrado 'self'</translation> + <source>first argument of a class method should be named 'cls'</source> + <translation>primer argumento de método de clase debe ser nombrado 'cls'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> + <source>first argument of a method should be named 'self'</source> + <translation>primer argumento de un método debe ser nombrado 'self'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>first argument of a static method should not be named 'self' or 'cls</source> <translation>primer argumento de método estático no debe ser llamado 'self' o 'cls'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="451"/> - <source>module names should be lowercase</source> - <translation>nombres de módulo deben ser en minúsculas</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="454"/> - <source>package names should be lowercase</source> - <translation>nombres de package deben ser en minúsculas</translation> + <source>module names should be lowercase</source> + <translation>nombres de módulo deben ser en minúsculas</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="457"/> - <source>constant imported as non constant</source> - <translation>constante importada como no constante</translation> + <source>package names should be lowercase</source> + <translation>nombres de package deben ser en minúsculas</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="460"/> - <source>lowercase imported as non lowercase</source> - <translation>minúscula importada como no minúscula</translation> + <source>constant imported as non constant</source> + <translation>constante importada como no constante</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="463"/> - <source>camelcase imported as lowercase</source> - <translation>camelcase importado como minúsculas</translation> + <source>lowercase imported as non lowercase</source> + <translation>minúscula importada como no minúscula</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="466"/> - <source>camelcase imported as constant</source> - <translation>camelcase importado como constante</translation> + <source>camelcase imported as lowercase</source> + <translation>camelcase importado como minúsculas</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="469"/> - <source>variable in function should be lowercase</source> - <translation>variable en función debe ser en minúsculas</translation> + <source>camelcase imported as constant</source> + <translation>camelcase importado como constante</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="472"/> + <source>variable in function should be lowercase</source> + <translation>variable en función debe ser en minúsculas</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="475"/> <source>names 'l', 'O' and 'I' should be avoided</source> <translation>nombres 'l', 'O' y 'I' deben ser evitados</translation> </message> @@ -46087,50 +46359,50 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="201"/> <source>SSL Certificate Error</source> <translation>Error de Certificado SSL</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> - <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> - <translation><b>{0}</b><p>La página a la que se intenta acceder tiene errores en el certificado SSL.</p><ul><li>{1}</li></ul><p>¿Quiere añadir una excepción?</p></translation> - </message> - <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="205"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="212"/> <source>&Permanent accept</source> <translation>Aceptar &Permanentemente</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="207"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="214"/> <source>&Temporary accept</source> <translation>Aceptar &temporalmente</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="209"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="216"/> <source>&Reject</source> <translation>&Rechazar</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="243"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="284"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation><b>Introducir nombre de usuario y contraseña para '{0}', reino {1}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="247"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="288"/> <source><b>Enter username and password for '{0}'</b></source> <translation><b>Introducir nombre de usuario y contraseña para '{0}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="295"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="336"/> <source>Authentication required</source> <translation>Autenticación necesaria</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="296"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="337"/> <source>Authentication is required to access:</source> <translation>Es necesaria autenticación para acceder:</translation> </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="202"/> + <source><b>{0}</b><p>The host <b>{1}</b> you are trying to access has errors in the SSL certificate.</p><ul><li>{2}</li></ul><p>Would you like to make an exception?</p></source> + <translation><b>{0}</b><p>El host <b>{1}</b> que trata de visitar tiene errores en el certificado SSL.</p><ul><li>{2}</li></ul><p>¿Desea hacer una excepción?</p></translation> + </message> </context> <context> <name>NetworkPage</name> @@ -47447,6 +47719,41 @@ <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source> <translation>Se está intentando actualizar a nueva versión de packages PyQt. Esto podría no funcionar para la instancia actual de Python ({0}). ¿Desea continuar?</translation> </message> + <message> + <location filename="../PipInterface/Pip.py" line="679"/> + <source>Cache Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="704"/> + <source>List Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="694"/> + <source>Enter a file pattern (empty for all):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="728"/> + <source>Remove Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="720"/> + <source>Enter a file pattern:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="751"/> + <source>Purge Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="744"/> + <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PipDialog</name> @@ -48200,7 +48507,7 @@ <translation>Reparar Pip</translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/> <source>Install Packages</source> <translation>Instalar Packages</translation> </message> @@ -48225,29 +48532,49 @@ <translation>Generar Requisitos...</translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="942"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="955"/> <source>Edit User Configuration...</source> <translation>Editar Configuración de Usuario...</translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="945"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="958"/> <source>Edit Environment Configuration...</source> <translation>Editar Configuración de Entorno...</translation> </message> <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="963"/> + <source>Configure...</source> + <translation>Configurar...</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>Edit Configuration</source> + <translation>Editar Configuración</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>No valid configuration path determined. Aborting</source> + <translation>No hay una ruta válida de configuración determinada. Abortando</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="941"/> + <source>Show Cache Info...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="944"/> + <source>Show Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="947"/> + <source>Remove Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../PipInterface/PipPackagesWidget.py" line="950"/> - <source>Configure...</source> - <translation>Configurar...</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>Edit Configuration</source> - <translation>Editar Configuración</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>No valid configuration path determined. Aborting</source> - <translation>No hay una ruta válida de configuración determinada. Abortando</translation> + <source>Purge Cache...</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -49512,17 +49839,17 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1640"/> + <location filename="../Preferences/__init__.py" line="1645"/> <source>Export Preferences</source> <translation>Exportar Preferencias</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Import Preferences</source> <translation>Importar Preferencias</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Properties File (*.ini);;All Files (*)</source> <translation>Archivo de Propiedades (*.ini);;Todos los archivos (*)</translation> </message> @@ -58597,17 +58924,17 @@ <translation><b>Configurar Qt</b></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="90"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="85"/> <source>Qt Tools</source> <translation>Herramientas Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="169"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="164"/> <source>This gives an example of the complete tool name</source> <translation>Proporciona un ejemplo del nombre completo de la herramienta</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="172"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="167"/> <source>designer</source> <translation>designer</translation> </message> @@ -58617,7 +58944,7 @@ <translation><font color="#FF0000"><b>Nota:</b> Estas opciones de configuración serán activadas la siguiente vez que se inicie la aplicación.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="123"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="118"/> <source>The tool executable is composed of the prefix, the tool name and the postfix. For win, the extension is added automatically.</source> <translation>El ejecutable de la herramienta se compone del prefijo, el nombre de la herramienta y el postfijo. Para win, la extensión se añade automáticamente.</translation> </message> @@ -58632,67 +58959,52 @@ <translation>Introeucir la ruta del directorio de traducciones de Qt.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> - <source><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></source> - <translation><b>Nota:</b> Dejar vací esta entrada para utilizar una variable de entorno o la ruta compilada dentro de la biblioteca Qt. Las variables de entorno soportadas son -<ul> -<li>QT4TRANSLATIONSDIR para Qt4</li> -<li>QT5TRANSLATIONSDIR para Qt5</li> -<li>QTTRANSLATIONSDIR para cualquier variante de Qt</li> -</ul></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="135"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="130"/> <source>Qt-Prefix:</source> <translation>Prefijo de Qt:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="137"/> <source>Enter the prefix for the Qt tools name</source> <translation>Introducir el prefijo para nombre de las herramientas Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="144"/> <source>Qt-Postfix:</source> <translation>Postfijo de Qt:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="151"/> <source>Enter the postfix for the Qt tools name</source> <translation>Introducir el postfijo para nombre de las herramientas Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="221"/> <source>Indent Width:</source> <translation>Ancho de indentación:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="233"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="228"/> <source>Select the indent width (default: 4)</source> <translation>Seleccionar el ancho de indentación (valor por defecto: 4)</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="327"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="322"/> <source>Generate imports relative to '.'</source> <translation>Generar imports relativos a '.'</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="296"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="291"/> <source>Tools Directory:</source> <translation>Directorio de las Herramientas:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="114"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="109"/> <source>Enter the path of the Qt tools directory, if they are not found.</source> <translation>Introducir la ruta del directorio de las herramientas Qt, si no se encuentran automáticamente.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="211"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="206"/> <source>Enter the path of the PyQt tools directory, if they are not found.</source> <translation>Introducir la ruta del directorio de las herramientas PyQt, si no se encuentran automáticamente.</translation> </message> @@ -58702,7 +59014,7 @@ <translation>Muestra: {0}designer{1}</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="312"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="307"/> <source>Enter the path of the PySide2 tools directory, if they are not found.</source> <translation>Introducir la ruta del directorio de las herramientas PySide2, si no se encuentran automáticamente.</translation> </message> @@ -58712,35 +59024,40 @@ <translation>Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="187"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="182"/> <source>PyQt</source> <translation>PyQt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="220"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="215"/> <source>pyuic Options</source> <translation>Opciones de pyuic</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="272"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="267"/> <source>Select to generate extra code to test and display the form</source> <translation>Seleccionar para generar el código extra para probar y mostrar el formulario</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="275"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="270"/> <source>Generate Extra Test Code</source> <translation>Gemerar Código Extra de Prueba</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="288"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="283"/> <source>PySide2</source> <translation>PySide2</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="316"/> <source>pyside2-uic Options</source> <translation>Opciones de pyside2-uic</translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> + <source><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</source> + <translation><b>Nota:</b> Dejar esta entrada vacía para usar la ruta compilada en la biblioteca Qt.</translation> + </message> </context> <context> <name>Queues</name> @@ -60572,6 +60889,334 @@ </message> </context> <context> + <name>Security</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="16"/> + <source>Use of 'assert' detected. The enclosed code will be removed when compiling to optimised byte code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="22"/> + <source>Use of 'exec' detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="27"/> + <source>'chmod' setting a permissive mask {0} on file ({1}).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="32"/> + <source>Possible binding to all interfaces.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="43"/> + <source>Possible hardcoded password: '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="48"/> + <source>Probable insecure usage of temp file/directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="53"/> + <source>Try, Except, Pass detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="56"/> + <source>Try, Except, Continue detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="61"/> + <source>A Flask app appears to be run with debug=True, which exposes the Werkzeug debugger and allows the execution of arbitrary code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="67"/> + <source>Pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="71"/> + <source>Deserialization with the marshal module is possibly dangerous.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="74"/> + <source>Use of insecure MD2, MD4, MD5, or SHA1 hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="77"/> + <source>Use of insecure cipher '{0}'. Replace with a known secure cipher such as AES.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="81"/> + <source>Use of insecure cipher mode '{0}'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="84"/> + <source>Use of insecure and deprecated function (mktemp).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="87"/> + <source>Use of possibly insecure function - consider using safer ast.literal_eval.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="91"/> + <source>Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="95"/> + <source>Use of HTTPSConnection on older versions of Python prior to 2.7.9 and 3.4.3 do not provide security, see https://wiki.openstack.org/wiki/OSSN/OSSN-0033</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="100"/> + <source>Audit url open for permitted schemes. Allowing use of file:/ or custom schemes is often unexpected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="104"/> + <source>Standard pseudo-random generators are not suitable for security/cryptographic purposes.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="108"/> + <source>Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="142"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="147"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="152"/> + <source>FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="156"/> + <source>The input method in Python 2 will read from standard input, evaluate and run the resulting string as Python source code. This is similar, though in many ways worse, than using eval. On Python 2, use raw_input instead, input is safe in Python 3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="162"/> + <source>By default, Python will create a secure, verified SSL context for use in such classes as HTTPSConnection. However, it still allows using an insecure context via the _create_unverified_context that reverts to the previous behavior that does not validate certificates or perform hostname checks.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="169"/> + <source>Use of os.tempnam() and os.tmpnam() is vulnerable to symlink attacks. Consider using tmpfile() instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="175"/> + <source>Use of insecure {0} hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="180"/> + <source>A telnet-related module is being imported. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="184"/> + <source>A FTP-related module is being imported. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="192"/> + <source>Consider possible security implications associated with the '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="216"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="221"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="226"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Use defused.xmlrpc.monkey_patch() function to monkey-patch xmlrpclib and mitigate XML vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="231"/> + <source>Consider possible security implications associated with '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="235"/> + <source>The pyCrypto library and its module '{0}' are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="242"/> + <source>'requests' call with verify=False disabling SSL certificate checks, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="248"/> + <source>'ssl.wrap_socket' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="252"/> + <source>'SSL.Context' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="256"/> + <source>Function call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="260"/> + <source>Function definition identified with insecure SSL/TLS protocol version by default, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="264"/> + <source>'ssl.wrap_socket' call with no SSL/TLS protocol version specified, the default 'SSLv23' could be insecure, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="270"/> + <source>{0} key sizes below {1:d} bits are considered breakable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="275"/> + <source>Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary objects. Consider 'yaml.safe_load()'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="281"/> + <source>Paramiko call with policy set to automatically trust the unknown host key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="287"/> + <source>Possible shell injection via 'Paramiko' call, check inputs are properly sanitized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="291"/> + <source>'subprocess' call with shell=True seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="295"/> + <source>'subprocess' call with shell=True identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="298"/> + <source>'subprocess' call - check for execution of untrusted input.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="301"/> + <source>Function call with shell=True parameter identified, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="305"/> + <source>Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="309"/> + <source>Starting a process with a shell, possible injection detected, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="313"/> + <source>Starting a process without a shell.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="316"/> + <source>Starting a process with a partial executable path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="321"/> + <source>Possible SQL injection vector through string-based query construction.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="327"/> + <source>Possible wildcard injection in call: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="332"/> + <source>Use of 'extra()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="335"/> + <source>Use of 'RawSQL()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="340"/> + <source>Using jinja2 templates with 'autoescape=False' is dangerous and can lead to XSS. Use 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="345"/> + <source>By default, jinja2 sets 'autoescape' to False. Consider using 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="352"/> + <source>Mako templates allow HTML/JS rendering by default and are inherently open to XSS attacks. Ensure variables in all templates are properly sanitized via the 'n', 'h' or 'x' flags (depending on context). For example, to HTML escape the variable 'data' do ${{ data |h }}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="360"/> + <source>Potential XSS on 'mark_safe()' function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="365"/> + <source>Possible hardcoded AWS access key ID: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="368"/> + <source>Possible hardcoded AWS secret access key: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="373"/> + <source>{0}: {1}</source> + <translation type="unfinished">{0}: {1}</translation> + </message> +</context> +<context> <name>SecurityPage</name> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="37"/> @@ -60613,6 +61258,21 @@ <source><b>Configure security settings</b></source> <translation><b>Configurar ajustes de seguridad</b></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="96"/> + <source>Certificate Errors</source> + <translation>Errores en Certificados</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="102"/> + <source>Select to always reject web pages with certificate issues</source> + <translation>Seleccionar para rechazar siempre páginas web con problemas en sus certificados</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="105"/> + <source>Always reject URLs with certificate errors</source> + <translation>Rechazar siempre páginas web con errores en sus certificados</translation> + </message> </context> <context> <name>SendRefererWhitelistDialog</name> @@ -62576,75 +63236,80 @@ <translation><b>Información de Seguridad</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="168"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="171"/> <source>Media</source> <translation>Media</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="184"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="187"/> <source>Image</source> <translation>Imagen</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="189"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="192"/> <source>Image Address</source> <translation>Dirección de la Imagen</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="197"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="200"/> <source><b>Preview</b></source> <translation><b>Vista preliminar</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="216"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="238"/> <source>Preview not available.</source> <translation>Vista preliminar no disponible.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="243"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="265"/> <source>Copy Image Location to Clipboard</source> <translation>Copiar Ubicación de la Imagen al Portapapeles</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="246"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="268"/> <source>Copy Image Name to Clipboard</source> <translation>Copiar Nombre de la Imagen al Portapapeles</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source>Save Image</source> <translation>Guardar imagen</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="299"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="321"/> <source>All Files (*)</source> <translation>Todos los archivos (*)</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source><p>Cannot write to file <b>{0}</b>.</p></source> <translation><p>No es posible escribir en el archivo <b>{0}</b>.</p></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="229"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="251"/> <source>Loading...</source> <translation>Cargando...</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="287"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="309"/> <source><p>This preview is not available.</p></source> <translation><p>Esta vista previa no está disponible.</p></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="76"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="97"/> <source><b>Connection is encrypted.</b></source> <translation><b>La Conexión está encriptada.</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="80"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="102"/> <source><b>Connection is not encrypted.</b></source> <translation><b>La Conexión no está encriptada.</b></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="87"/> + <source><b>Connection is encrypted but may be insecure.</b></source> + <translation><b>La connection está encriptada pero puede ser insegura.</b></translation> + </message> </context> <context> <name>SiteInfoWidget</name> @@ -62654,60 +63319,65 @@ <translation><b>Site {0}</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="62"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="69"/> <source>Your connection to this site is <b>secure</b>.</source> <translation>La conexión a este site es <b>segura</b>.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="67"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="74"/> <source>Your connection to this site is <b>not secure</b>.</source> <translation>La conexión a este site es <b>no segura</b>.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="82"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="89"/> <source>This is your <b>{0}.</b> visit of this site.</source> <translation>Esta es su <b>{0}.</b> visita a este site.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="88"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="95"/> <source>You have <b>never</b> visited this site before.</source> <translation><b>Nunca</b> ha visitado este sitio anteriormente.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="97"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="104"/> <source>first</source> <translation>primera</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="99"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="106"/> <source>second</source> <translation>segunda</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="101"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="108"/> <source>third</source> <translation>tercera</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="102"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="109"/> <source>This is your <b>{0}</b> visit of this site.</source> <translation>Ésta es su <b>{0}</b> visita a este site.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="123"/> - <source>Register as <b>{0}</b> links handler.</source> - <translation>Regisrar como <b>{0}</b> gestor de enlaces.</translation> - </message> - <message> <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="130"/> + <source>Register as <b>{0}</b> links handler.</source> + <translation>Regisrar como <b>{0}</b> gestor de enlaces.</translation> + </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="137"/> <source>Register</source> <translation>Registrar</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="147"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="154"/> <source>More...</source> <translation>Más...</translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="63"/> + <source>Your connection to this site <b>may not be secure</b>.</source> + <translation>La conexión a este site <b>podría no ser segura</b>.</translation> + </message> </context> <context> <name>SnapWidget</name> @@ -74911,7 +75581,7 @@ <translation><b>Atajos de Teclado</b><p>Establezca los atajos de teclado para la aplicación con sus valores preferidos.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6327"/> + <location filename="../UI/UserInterface.py" line="6294"/> <source>Export Keyboard Shortcuts</source> <translation>Exportar Atajos de Teclado</translation> </message> @@ -74931,7 +75601,7 @@ <translation><b>Exportar Atajos de Teclado</b><p>Exporte los atajos de teclado de la aplicación.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Import Keyboard Shortcuts</source> <translation>Importar Atajos de Teclado</translation> </message> @@ -75121,7 +75791,7 @@ <translation>Ajustes</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Help</source> <translation>Ayuda</translation> </message> @@ -75136,7 +75806,7 @@ <translation>Plugins</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7324"/> + <location filename="../UI/UserInterface.py" line="7291"/> <source></table></source> <translation></table></translation> </message> @@ -75176,82 +75846,82 @@ <translation>&Ocultar todo</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source>Problem</source> <translation>Problema</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source>Process Generation Error</source> <translation>Error de Generación de Proceso</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source> <translation>No hay visor personalizado seleccionado actualmente. Por favor, especifique uno en el diálogo de preferencias.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5149"/> + <location filename="../UI/UserInterface.py" line="5116"/> <source><p>Could not start the help viewer.<br>Ensure that it is available as <b>hh</b>.</p></source> <translation><p>No se ha podido ejecutar el visor de ayuda.<br>Asegúrese de que esta disponible como <b>hh</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source>Documentation Missing</source> <translation>Falta documentación</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source>Documentation</source> <translation>Documentación</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5727"/> + <location filename="../UI/UserInterface.py" line="5694"/> <source><p>The PyQt4 documentation starting point has not been configured.</p></source> <translation><P>El punto de entrada de documentación de PyQt4 no ha sido configurado.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source>Save tasks</source> <translation>Guardar tareas</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source>Read tasks</source> <translation>Leer tareas</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source>Drop Error</source> <translation>Error de volcado</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Error during updates check</source> <translation>Error durante la verificación de actualización</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>&Cancel</source> <translation>&Cancelar</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>Update available</source> <translation>Actualizaciones disponibles</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Could not perform updates check.</source> <translation>No se puede llevar a cabo la verificación de actualizaciones.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7309"/> + <location filename="../UI/UserInterface.py" line="7276"/> <source><h3>Available versions</h3><table></source> <translation><h3>Versiones disponibles</h3><table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>First time usage</source> <translation>Usado por primera vez</translation> </message> @@ -75311,7 +75981,7 @@ <translation>Restaurando Gestor de Barras de Herramientas...</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>External Tools</source> <translation>Herramientas Externas</translation> </message> @@ -75326,12 +75996,12 @@ <translation>Visor de &Multiproyecto</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6646"/> + <location filename="../UI/UserInterface.py" line="6613"/> <source>Save session</source> <translation>Guardar sesión</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source>Read session</source> <translation>Cargar sesión</translation> </message> @@ -75561,11 +76231,6 @@ <translation>Editor de &Iconos...</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt 3 support</source> - <translation>Soporte para Qt 3</translation> - </message> - <message> <location filename="../UI/UserInterface.py" line="2870"/> <source>PySide Documentation</source> <translation>Documentación de PySide</translation> @@ -75601,106 +76266,106 @@ <translation>Herramientas Externas/{0}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source><p>The file <b>{0}</b> does not exist or is zero length.</p></source> <translation><p>El archivo <b>{0}</b> no existe o tiene longitud nula. </p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="4962"/> + <location filename="../UI/UserInterface.py" line="4935"/> <source><p>Could not start Qt-Designer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>No se ha podido ejecutar Qt-Designer.<br>Asegúrese de que esta disponible como <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5034"/> + <location filename="../UI/UserInterface.py" line="5005"/> <source><p>Could not start Qt-Linguist.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>No se ha podido ejecutar Qt-Linguist.<br>Asegúrese de que esta disponible como <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5087"/> + <location filename="../UI/UserInterface.py" line="5049"/> <source><p>Could not start Qt-Assistant.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>No se ha podido ejecutar Qt-Assistant.<br>Asegúrese de que esta disponible como <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5129"/> + <location filename="../UI/UserInterface.py" line="5096"/> <source><p>Could not start custom viewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>No se ha podido ejecutar el visor personalizado.<br>Asegúrese de que esta disponible como <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5199"/> + <location filename="../UI/UserInterface.py" line="5166"/> <source><p>Could not start UI Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>No se ha podido ejecutar el Previsualizador de UI.<br>Asegúrese de que esta disponible como <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5256"/> + <location filename="../UI/UserInterface.py" line="5223"/> <source><p>Could not start Translation Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>No se ha podido ejecutar el Previsualizador de Traducciones.<br>Asegúrese de que esta disponible como <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5279"/> + <location filename="../UI/UserInterface.py" line="5246"/> <source><p>Could not start SQL Browser.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>No se ha podido iniciar el navegador SQL.<br>Asegúrese de que está disponible como <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5374"/> + <location filename="../UI/UserInterface.py" line="5341"/> <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source> <translation>No se ha encontrado la entrada para la herramienta externa '{0}' en el grupo de herramientas '{1}'.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>No toolgroup entry '{0}' found.</source> <translation>No se ha encontrado la entrada para el grupo de herramientas '{0}'.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5422"/> + <location filename="../UI/UserInterface.py" line="5389"/> <source>Starting process '{0} {1}'. </source> <translation>Comenzando proceso '{0} {1}'. </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source><p>Could not start the tool entry <b>{0}</b>.<br>Ensure that it is available as <b>{1}</b>.</p></source> <translation><p>No se ha podido ejecutar la entrada de herramienta <b>{0}</b>.<br>Asegúrese de que esta disponible como <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5516"/> + <location filename="../UI/UserInterface.py" line="5483"/> <source>Process '{0}' has exited. </source> <translation>El proceso '{0}' ha finalizado. </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source><p>The documentation starting point "<b>{0}</b>" could not be found.</p></source> <translation><P>El punto de entrada de documentación "<b>{0}</b>" no ha podido encontrarse.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation><p>El archivo de tareas <b>{0}</b> no pudo ser guardado.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation><p>El archivo de tareas <b>{0}</b> no puede leerse.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6584"/> + <location filename="../UI/UserInterface.py" line="6551"/> <source><p>The session file <b>{0}</b> could not be written.</p></source> <translation><p>El archivo de sesión <b>{0}</b> no ha podido guardarse.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source><p>The session file <b>{0}</b> could not be read.</p></source> <translation><p>El archivo de sesión <b></b> no ha podido ser leído.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> no es un archivo.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7108"/> + <location filename="../UI/UserInterface.py" line="7075"/> <source>Trying host {0}</source> <translation>Probando host {0}</translation> </message> @@ -75735,7 +76400,7 @@ <translation>Alt+Shift+B</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Keyboard shortcut file (*.e4k)</source> <translation>Archivo de atajos de teclado (*.e4k)</translation> </message> @@ -75775,27 +76440,27 @@ <translation><b>Documentación de Python 2</b><p>Mostrar la documentación de Python 2. Si no se ha configurado un directorio con esta documentación, la ubicación de la documentación de Python 2 se asumirá en el directorio de documentación bajo la ubicación del ejecutable configurado de Python 2 en Windows, y en <i>/usr/share/doc/packages/python/html/python-docs-html</i> para Unix. Establezca el valor de la variable de entorno PYTHON2DOCDIR para sobreescribir estas opciones. </p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>Error getting versions information</source> <translation>Error al obtener información de versiones</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7167"/> + <location filename="../UI/UserInterface.py" line="7134"/> <source>The versions information could not be downloaded. Please go online and try again.</source> <translation>La información de versiones no se ha podido descargar. Póngase online por favor e inténtelo de nuevo.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Open Browser</source> <translation>Abrir Navegador</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Could not start a web browser</source> <translation>No se ha podido iniciar el navegador web</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source> <translation>La información de versiones no se ha podido descargar en los últimos 7 días. Póngase por favor online e inténtelo de nuevo.</translation> </message> @@ -75881,12 +76546,12 @@ <translation><b>Captura de Pantalla</b><p>Abre un diálogo para tomar capturas de pantalla de una región de la pantalla.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5351"/> + <location filename="../UI/UserInterface.py" line="5318"/> <source><p>Could not start Snapshot tool.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>No se ha podido ejecutar la herramienta de Captura de Pantalla.<br>Asegúrese de que esta disponible como <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7380"/> + <location filename="../UI/UserInterface.py" line="7347"/> <source>Select Workspace Directory</source> <translation>Seleccionar Directorio para el Espacio de Trabajo</translation> </message> @@ -76251,7 +76916,7 @@ <translation>Abrir Documentación de PyQt5</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5789"/> + <location filename="../UI/UserInterface.py" line="5756"/> <source><p>The PyQt5 documentation starting point has not been configured.</p></source> <translation><P>El punto de entrada de documentación de PyQt5 no ha sido configurado.</p></translation> </message> @@ -76261,7 +76926,7 @@ <translation><b>Documentación de Python 3</b><p>Mostrar la documentación de Python 3. Si no se ha configurado un directorio con lesta documentación, la ubicación de la documentación de Python 3 se asumirá en el directorio de documentación bajo la ubicación del ejecutable de Python 3 en Windows, y en <i>/usr/share/doc/packages/python/html</i> para Unix. Establezca el valor de la variable de entorno PYTHON3DOCDIR para sobreescribir estas opciones. </p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>%v/%m</source> <translation>%v/%m</translation> </message> @@ -76281,7 +76946,7 @@ <translation><b>Mostrar registro de errores...</b><p>Abre un diálogo mostrando el registro más reciente de errores.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7103"/> + <location filename="../UI/UserInterface.py" line="7070"/> <source>Version Check</source> <translation>Verificación de Versión</translation> </message> @@ -76351,27 +77016,22 @@ <translation><b>Documentación de API de Eric</b><p>Muestra la documentación de API de Eric. La ubicación de la documentación es el subdirectorio Documentation/Source del directorio de instalación de eric6.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt v.3 is not supported by eric6.</source> - <translation>Qt v.3 no está soportado por eric6.</translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>The update to <b>{0}</b> of eric6 is available at <b>{1}</b>. Would you like to get it?</source> <translation>La actualización para <b>{0}</b> de eric6 está disponible en <b>{1}</b>. ¿Le gustaría obtenerla?</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>Eric6 is up to date</source> <translation>Eric6 está actualizado</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>You are using the latest version of eric6</source> <translation>Está utilizando la última versión de eric6</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>eric6 has not been configured yet. The configuration dialog will be started.</source> <translation>Eric6 todavía no está configurado. El diálogo de configuración va a ser iniciado.</translation> </message> @@ -76391,7 +77051,7 @@ <translation>No se han Configurado Herramientas de Usuario</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7119"/> + <location filename="../UI/UserInterface.py" line="7086"/> <source>The versions information cannot not be downloaded because you are <b>offline</b>. Please go online and try again.</source> <translation>La información de versiones no se puede descargar porque está <b>sin línea</b>. Por favor, póngase en línea e inténtelo de nuevo.</translation> </message> @@ -76436,7 +77096,7 @@ <translation><b>Guardar sesión...</b><p>Guarda la sesión actual a disco. Se muestra un diálogo para seleccionar el nombre de archivo.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>Load session</source> <translation>Cargar sesión</translation> </message> @@ -76451,17 +77111,17 @@ <translation><b>Cargar sesión...</b><p>Carga una sesión guardada en disco anteriormente. Se muestra un diálogo para seleccionar el nombre de archivo.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>eric6 Session Files (*.e5s)</source> <translation>Archivos de Sesión de eric6 (*.e5s)</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>Crash Session found!</source> <translation>¡Se ha hallado una sesión perdida!</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>A session file of a crashed session was found. Shall this session be restored?</source> <translation>Se ha encontrado un archivo de sesió para una sesión perdida. ¿Desea restaurar esta sesión?</translation> </message> @@ -76476,17 +77136,17 @@ <translation>Inicializando Plugins...</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>Update Check</source> <translation>Comprobación Actualización</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source> <translation>Ha instalado eric directamente a partir del código fuente. No es posible comprobar la disponibilidad de una actuación.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7244"/> + <location filename="../UI/UserInterface.py" line="7211"/> <source>You are using a snapshot release of eric6. A more up-to-date stable release might be available.</source> <translation>Ésta es una snapshot release the eric6. Una release estable más reciente podría estar disponible.</translation> </message> @@ -76541,7 +77201,7 @@ <translation><b>Documentación de PySide2</b><p>Muestra la Documentación de PySide2. Dependiendo de la configuración, esta documentación será mostrará en el visor de ayuda interno de Eric, o se ejecutará en un navegador web, o Qt Assistant.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source><p>The PySide{0} documentation starting point has not been configured.</p></source> <translation><P>El punto de entrada de documentación de PySide{0} no ha sido configurado.</p></translation> </message> @@ -76617,17 +77277,17 @@ <translation><b>Reiniciar la IDE</b><p>Reinicia la IDE. Todos los cambios sin guardar pueden ser guardados primero. Cualquier programa de Python que esté en depuración será detenido, y las preferencias se guardarán en disco.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source>Start Web Browser</source> <translation>Iniciar Navegador Web</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6015"/> + <location filename="../UI/UserInterface.py" line="5982"/> <source>The eric6 web browser could not be started.</source> <translation>El navegador web de eric 6 no se ha podido iniciar.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source><p>The eric6 web browser is not started.</p><p>Reason: {0}</p></source> <translation><p>El navegador web de eric6 no se ha iniciado.</p><p>Razón: {0}</p></translation> </message> @@ -76726,6 +77386,21 @@ <source><h2>Version Numbers</h2><table></source> <translation><h2>Números de Versiones</h2><table></translation> </message> + <message> + <location filename="../UI/UserInterface.py" line="4944"/> + <source><p>Could not find the Qt-Designer executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation><p>No se ha podido encontrar el ejecutable de Qt-Designer.<br>Asegúrese de que está instalado y opcionalmente configurado en la página de configuración de Qt.</p></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5014"/> + <source><p>Could not find the Qt-Linguist executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation><p>No se ha podido encontrar el ejecutable de Qt-Linguist.<br>Asegúrese de que está instalado y opcionalmente configurado en la página de configuración de Qt.</p></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5058"/> + <source><p>Could not find the Qt-Assistant executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation><p>No se ha podido encontrar el ejecutable de Qt-Assistant.<br>Asegúrese de que está instalado y opcionalmente configurado en la página de configuración de Qt.</p></translation> + </message> </context> <context> <name>UserPropertiesDialog</name> @@ -82461,47 +83136,47 @@ <translation>Tamaño Mínimo Lógico de Fuente:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="324"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="402"/> <source>Images</source> <translation>Imágenes</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="408"/> <source>Select to load images</source> <translation>Seleccione para cargar imágenes</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="333"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="411"/> <source>Load images</source> <translation>Cargar imágenes</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="343"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="421"/> <source>Style Sheet</source> <translation>Hoja de Estilo</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="349"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="427"/> <source>User Style Sheet:</source> <translation>Hoja de Estilo de Usuario:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="365"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="443"/> <source>Enter the file name of a user style sheet</source> <translation>Introduzca el nombre del archivo de la hoja de estilos de usuario</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="375"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="453"/> <source>Tabs</source> <translation>Pestañas</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="381"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="459"/> <source>Select to issue a warning, if multiple tabs are about to be closed</source> <translation>Seleccionar para generar un aviso cuando estén a punto de cerrarse múltiples pestañas</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="384"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="462"/> <source>Warn, if multiple tabs are about to be closed</source> <translation>Avisar cuando se vayan a cerrar múltiples pestañas</translation> </message> @@ -82521,37 +83196,37 @@ <translation>Seleccionar la fuente pictográfica</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="426"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="504"/> <source><font color="#FF0000"><b>Note:</b> All settings below are activated at the next startup of the application.</font></source> <translation><font color="#FF0000"><b>Nota:</b> Estas opciones de configuración se activarán la siguiente vez que se ejecute la aplicacion.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="433"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="511"/> <source>Toolbars</source> <translation>Barras de Herramientas</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="439"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="517"/> <source>Select to show toolbars</source> <translation>Seleccionar para mostrar las barras de herramientas</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="520"/> <source>Show Toolbars</source> <translation>Mostrar Barras de Herramientas</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="394"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="472"/> <source>Scrollbars</source> <translation>Barras de Desplazamiento</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="400"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="478"/> <source>Select to show scrollbars. Note: Scrolling is possible even without them.</source> <translation>Seleccionar mostrar barras de desplazamiento. Nota: el desplazamiento es posible aún sin ellas.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="403"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="481"/> <source>Show Scrollbars</source> <translation>Mostrar Barras de Herramientas</translation> </message> @@ -82561,15 +83236,50 @@ <translation>Colores</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> - <source>Background color of secure URLs:</source> - <translation>Color de fondo de URLs seguras:</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="298"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="304"/> <source>Select the background color for secure URLs.</source> <translation>Seleccione el color de fondo para las URLs seguras.</translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> + <source>URL Entry Background</source> + <translation>Color de fondo para Entradas URL</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="291"/> + <source>Secure URLs:</source> + <translation>URLs Seguras:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="327"/> + <source>Insecure URLs:</source> + <translation>URLs Inseguras:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="340"/> + <source>Select the background color for insecure URLs.</source> + <translation>Seleccionar el color de fondo para URLs inseguras.</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="350"/> + <source>Malicious URLs:</source> + <translation>URLs Maliciosas:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="363"/> + <source>Select the background color for malicious URLs.</source> + <translation>Seleccionar el color de fondo para URLs maliciosas.</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="373"/> + <source>Private Mode:</source> + <translation>Modo Privado:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="386"/> + <source>Select the background color for URLs in private mode.</source> + <translation>Seleccionar el color de fondo para URLs en modo privado.</translation> + </message> </context> <context> <name>WebBrowserClearPrivateDataDialog</name> @@ -83853,27 +84563,27 @@ <translation>...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="892"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="913"/> <source>Loading...</source> <translation>Cargando...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="912"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="922"/> <source>Finished loading</source> <translation>Carga terminada</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="914"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="889"/> <source>Failed to load</source> <translation>Ha fallado la carga</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window?</source> <translation>¿Realmente desea cerrar la ventana?</translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation> @@ -83884,22 +84594,22 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="962"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="970"/> <source>&Quit</source> <translation>&Salir</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="965"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="973"/> <source>C&lose Current Tab</source> <translation>Cerrar Pestaña Actua&l</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1146"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1154"/> <source>Restore All Closed Tabs</source> <translation>Restaurar Todas las Pestañas Cerradas</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1148"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1156"/> <source>Clear List</source> <translation>Borrar Lista</translation> </message> @@ -86732,12 +87442,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="391"/> + <location filename="../eric6.py" line="399"/> <source>Starting...</source> <translation>Comenzando...</translation> </message> <message> - <location filename="../eric6.py" line="396"/> + <location filename="../eric6.py" line="404"/> <source>Generating Main Window...</source> <translation>Generando Ventana Principal...</translation> </message> @@ -86888,7 +87598,7 @@ <translation>La variable local {0!r} está asignada pero nunca es utilizada.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="183"/> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="187"/> <source>no message defined for code '{0}'</source> <translation>sin mensaje definido para el código '{0}'</translation> </message> @@ -87087,421 +87797,426 @@ <source>'...' % ... `*` specifier requires sequence</source> <translation>el especificador '...' % ... `*` necesita una secuencia</translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="165"/> + <source>'if tuple literal' is always true, perhaps remove accidental comma?</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>pycodestyle</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="21"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> <source>indentation contains mixed spaces and tabs</source> <translation>la indentación contiene espacios y tabuladores mezclados</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> - <source>indentation is not a multiple of four</source> - <translation>la indentación no es un múltiplo de cuatro</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="27"/> - <source>expected an indented block</source> - <translation>se esperaba un bloque indentado</translation> + <source>indentation is not a multiple of four</source> + <translation>la indentación no es un múltiplo de cuatro</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="30"/> - <source>unexpected indentation</source> - <translation>indentación inesperada</translation> + <source>expected an indented block</source> + <translation>se esperaba un bloque indentado</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="33"/> - <source>indentation is not a multiple of four (comment)</source> - <translation>la indentación no es un múltiplo de cuatro (comentario)</translation> + <source>unexpected indentation</source> + <translation>indentación inesperada</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36"/> - <source>expected an indented block (comment)</source> - <translation>se esperaba un bloque indentado (comentario)</translation> + <source>indentation is not a multiple of four (comment)</source> + <translation>la indentación no es un múltiplo de cuatro (comentario)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39"/> + <source>expected an indented block (comment)</source> + <translation>se esperaba un bloque indentado (comentario)</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> <source>unexpected indentation (comment)</source> <translation>indentación inesperada (comentario)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> - <source>continuation line indentation is not a multiple of four</source> - <translation>indentación de línea de continuación no es múltiplo de cuatro</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="48"/> - <source>continuation line missing indentation or outdented</source> - <translation>línea de continuación sin indentación o bien con indentación inversa</translation> + <source>continuation line indentation is not a multiple of four</source> + <translation>indentación de línea de continuación no es múltiplo de cuatro</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="51"/> + <source>continuation line missing indentation or outdented</source> + <translation>línea de continuación sin indentación o bien con indentación inversa</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54"/> <source>closing bracket does not match indentation of opening bracket's line</source> <translation>llave de cierre no coincide con la indentación de la línea de la llave de apertura</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55"/> - <source>closing bracket does not match visual indentation</source> - <translation>llave de cierre no coincide con indentación visual</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="58"/> - <source>continuation line with same indent as next logical line</source> - <translation>indentación de línea de continuación como la siguiente línea lógica</translation> + <source>closing bracket does not match visual indentation</source> + <translation>llave de cierre no coincide con indentación visual</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="61"/> - <source>continuation line over-indented for hanging indent</source> - <translation>línea de continuación sobre-indentada por indentación colgada</translation> + <source>continuation line with same indent as next logical line</source> + <translation>indentación de línea de continuación como la siguiente línea lógica</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64"/> - <source>continuation line over-indented for visual indent</source> - <translation>línea de continuación sobre indentada para indentación visual</translation> + <source>continuation line over-indented for hanging indent</source> + <translation>línea de continuación sobre-indentada por indentación colgada</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67"/> - <source>continuation line under-indented for visual indent</source> - <translation>línea de continuación poco indentada para indentación visual</translation> + <source>continuation line over-indented for visual indent</source> + <translation>línea de continuación sobre indentada para indentación visual</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70"/> - <source>visually indented line with same indent as next logical line</source> - <translation>línea visualmente indentada con la misma indentación que la siguiente línea lógica</translation> + <source>continuation line under-indented for visual indent</source> + <translation>línea de continuación poco indentada para indentación visual</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73"/> - <source>continuation line unaligned for hanging indent</source> - <translation>línea de continuación sin alinear debido a indentación pendiente</translation> + <source>visually indented line with same indent as next logical line</source> + <translation>línea visualmente indentada con la misma indentación que la siguiente línea lógica</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76"/> - <source>closing bracket is missing indentation</source> - <translation>llave de cierre a la que falta indentación</translation> + <source>continuation line unaligned for hanging indent</source> + <translation>línea de continuación sin alinear debido a indentación pendiente</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79"/> - <source>indentation contains tabs</source> - <translation>la indentación contiene tabuladores</translation> + <source>closing bracket is missing indentation</source> + <translation>llave de cierre a la que falta indentación</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82"/> + <source>indentation contains tabs</source> + <translation>la indentación contiene tabuladores</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85"/> <source>whitespace after '{0}'</source> <translation>espacio en blanco después de'{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91"/> - <source>whitespace before '{0}'</source> - <translation>espacio en blanco antes de'{0}'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94"/> - <source>multiple spaces before operator</source> - <translation>múltiples espacios antes de operador</translation> + <source>whitespace before '{0}'</source> + <translation>espacio en blanco antes de'{0}'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97"/> - <source>multiple spaces after operator</source> - <translation>múltiples espacios después de operador</translation> + <source>multiple spaces before operator</source> + <translation>múltiples espacios antes de operador</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100"/> - <source>tab before operator</source> - <translation>tabulador antes de operador</translation> + <source>multiple spaces after operator</source> + <translation>múltiples espacios después de operador</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103"/> - <source>tab after operator</source> - <translation>tabulador después de operador</translation> + <source>tab before operator</source> + <translation>tabulador antes de operador</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106"/> - <source>missing whitespace around operator</source> - <translation>falta espacio en blanco alrededor de un operador</translation> + <source>tab after operator</source> + <translation>tabulador después de operador</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109"/> - <source>missing whitespace around arithmetic operator</source> - <translation>falta espacio en blanco alrededor de operador aritmético</translation> + <source>missing whitespace around operator</source> + <translation>falta espacio en blanco alrededor de un operador</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112"/> - <source>missing whitespace around bitwise or shift operator</source> - <translation>falta espacio en blanco alrededor de operador a nivel de bit o shift</translation> + <source>missing whitespace around arithmetic operator</source> + <translation>falta espacio en blanco alrededor de operador aritmético</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115"/> - <source>missing whitespace around modulo operator</source> - <translation>falta espacio en blanco alrededor de operador módulo</translation> + <source>missing whitespace around bitwise or shift operator</source> + <translation>falta espacio en blanco alrededor de operador a nivel de bit o shift</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118"/> - <source>missing whitespace after '{0}'</source> - <translation>falta espacio en blanco después de {0}</translation> + <source>missing whitespace around modulo operator</source> + <translation>falta espacio en blanco alrededor de operador módulo</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121"/> - <source>multiple spaces after '{0}'</source> - <translation>múltiples espacios en blanco después de '{0}'</translation> + <source>missing whitespace after '{0}'</source> + <translation>falta espacio en blanco después de {0}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124"/> - <source>tab after '{0}'</source> - <translation>tabulador después de '{0}'</translation> + <source>multiple spaces after '{0}'</source> + <translation>múltiples espacios en blanco después de '{0}'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127"/> + <source>tab after '{0}'</source> + <translation>tabulador después de '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> <source>unexpected spaces around keyword / parameter equals</source> <translation>espacios inesperados alrededor de palabra clave / parámetro igual a</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> - <source>at least two spaces before inline comment</source> - <translation>al menos dos espacios antes de comentario inline</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136"/> - <source>inline comment should start with '# '</source> - <translation>un comentario inline debe comenzar con '#'</translation> + <source>at least two spaces before inline comment</source> + <translation>al menos dos espacios antes de comentario inline</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="139"/> - <source>block comment should start with '# '</source> - <translation>comentarios de bloque debería comenzar con '# '</translation> + <source>inline comment should start with '# '</source> + <translation>un comentario inline debe comenzar con '#'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="142"/> - <source>too many leading '#' for block comment</source> - <translation>demasiados '#' al principio para comentario de bloque</translation> + <source>block comment should start with '# '</source> + <translation>comentarios de bloque debería comenzar con '# '</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="145"/> - <source>multiple spaces after keyword</source> - <translation>múltiples espacios después de palabra clave</translation> + <source>too many leading '#' for block comment</source> + <translation>demasiados '#' al principio para comentario de bloque</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="148"/> - <source>multiple spaces before keyword</source> - <translation>múltiples espacios antes de palabra clave</translation> + <source>multiple spaces after keyword</source> + <translation>múltiples espacios después de palabra clave</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="151"/> - <source>tab after keyword</source> - <translation>tabulador despues de palabra clave</translation> + <source>multiple spaces before keyword</source> + <translation>múltiples espacios antes de palabra clave</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154"/> - <source>tab before keyword</source> - <translation>tabulador antes de palabra clave</translation> + <source>tab after keyword</source> + <translation>tabulador despues de palabra clave</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157"/> - <source>missing whitespace after keyword</source> - <translation></translation> + <source>tab before keyword</source> + <translation>tabulador antes de palabra clave</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="160"/> - <source>trailing whitespace</source> - <translation>espacio en blanco por detrás</translation> + <source>missing whitespace after keyword</source> + <translation></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163"/> - <source>no newline at end of file</source> - <translation>no hay carácter de nueva línea al final del archivo</translation> + <source>trailing whitespace</source> + <translation>espacio en blanco por detrás</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166"/> + <source>no newline at end of file</source> + <translation>no hay carácter de nueva línea al final del archivo</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169"/> <source>blank line contains whitespace</source> <translation>línea en blanco con espacios en blanco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> - <source>too many blank lines ({0})</source> - <translation>demasiadas líneas en blanco ({0})</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> - <source>blank lines found after function decorator</source> - <translation>líneas en blanco encontradas después de decorador de función</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="194"/> - <source>blank line at end of file</source> - <translation>línea en blanco al final del archivo</translation> + <source>too many blank lines ({0})</source> + <translation>demasiadas líneas en blanco ({0})</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <source>blank lines found after function decorator</source> + <translation>líneas en blanco encontradas después de decorador de función</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="197"/> - <source>multiple imports on one line</source> - <translation>múltiples import en una línea</translation> + <source>blank line at end of file</source> + <translation>línea en blanco al final del archivo</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200"/> - <source>module level import not at top of file</source> - <translation>import a nivel de módulo no al principio del archivo</translation> + <source>multiple imports on one line</source> + <translation>múltiples import en una línea</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203"/> - <source>line too long ({0} > {1} characters)</source> - <translation>línea demasiado larga ({0} > {1} caracteres)</translation> + <source>module level import not at top of file</source> + <translation>import a nivel de módulo no al principio del archivo</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206"/> - <source>the backslash is redundant between brackets</source> - <translation>el backslash es redundante entre llaves</translation> + <source>line too long ({0} > {1} characters)</source> + <translation>línea demasiado larga ({0} > {1} caracteres)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209"/> + <source>the backslash is redundant between brackets</source> + <translation>el backslash es redundante entre llaves</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> <source>line break before binary operator</source> <translation>nueva línea antes de operador binario</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> - <source>.has_key() is deprecated, use 'in'</source> - <translation>.has_key()está obsoleto, use 'in'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> - <source>deprecated form of raising exception</source> - <translation>forma obsoleta de lanzar una excepción</translation> + <source>.has_key() is deprecated, use 'in'</source> + <translation>.has_key()está obsoleto, use 'in'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> - <source>'<>' is deprecated, use '!='</source> - <translation>'<>' está obsoleto, use '!='</translation> + <source>deprecated form of raising exception</source> + <translation>forma obsoleta de lanzar una excepción</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> + <source>'<>' is deprecated, use '!='</source> + <translation>'<>' está obsoleto, use '!='</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>backticks are deprecated, use 'repr()'</source> <translation>las comillas hacia atrás están obsoletas, use 'repr()'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> - <source>multiple statements on one line (colon)</source> - <translation>múltiples sentencias en una línea (dos puntos)</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> - <source>multiple statements on one line (semicolon)</source> - <translation>múltiples sentencias en una línea (punto y coma)</translation> + <source>multiple statements on one line (colon)</source> + <translation>múltiples sentencias en una línea (dos puntos)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> - <source>statement ends with a semicolon</source> - <translation>sentencia termina en punto y coma</translation> + <source>multiple statements on one line (semicolon)</source> + <translation>múltiples sentencias en una línea (punto y coma)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> + <source>statement ends with a semicolon</source> + <translation>sentencia termina en punto y coma</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248"/> <source>multiple statements on one line (def)</source> <translation>múltiples sentencias en una línea (def)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="251"/> - <source>comparison to {0} should be {1}</source> - <translation>comparación con {0} debe ser {1}</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> - <source>test for membership should be 'not in'</source> - <translation>comprobación de 'miembro de' debería ser 'not in'</translation> + <source>comparison to {0} should be {1}</source> + <translation>comparación con {0} debe ser {1}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> - <source>test for object identity should be 'is not'</source> - <translation>comprobación para identidad del objeto debería ser 'is not'</translation> + <source>test for membership should be 'not in'</source> + <translation>comprobación de 'miembro de' debería ser 'not in'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> - <source>do not compare types, use 'isinstance()'</source> - <translation>no comparar tipos, usar 'isinstance()'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> - <source>do not assign a lambda expression, use a def</source> - <translation>no asignar una expresión lambda, utilizar un def</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> - <source>ambiguous variable name '{0}'</source> - <translation>nombre de variable ambiguo '{0}'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> - <source>ambiguous class definition '{0}'</source> - <translation>definición ambigua de clase '{0}'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> - <source>ambiguous function definition '{0}'</source> - <translation>definición ambigua de función '{0}'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> - <source>{0}: {1}</source> - <translation>{0}: {1}</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> - <source>{0}</source> - <translation>{0}</translation> + <source>test for object identity should be 'is not'</source> + <translation>comprobación para identidad del objeto debería ser 'is not'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> + <source>do not compare types, use 'isinstance()'</source> + <translation>no comparar tipos, usar 'isinstance()'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> + <source>do not assign a lambda expression, use a def</source> + <translation>no asignar una expresión lambda, utilizar un def</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> + <source>ambiguous variable name '{0}'</source> + <translation>nombre de variable ambiguo '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> + <source>ambiguous class definition '{0}'</source> + <translation>definición ambigua de clase '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> + <source>ambiguous function definition '{0}'</source> + <translation>definición ambigua de función '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> + <source>{0}: {1}</source> + <translation>{0}: {1}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284"/> + <source>{0}</source> + <translation>{0}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> <source>do not use bare except</source> <translation>no usar except sin tipo</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184"/> <source>expected {0} blank lines after class or function definition, found {1}</source> <translation>se esperaban {0} líneas en blanco después de definición de clase o función, se han encontrado {1}</translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> + <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> + <translation>'async' y 'await' son palabras reservadas a partir de Python 3.7</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> + <source>missing whitespace around parameter equals</source> + <translation>faltan espacios en blanco alrededor de igual en parámetros</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <source>expected {0} blank lines, found {1}</source> + <translation>se esperaban {0} líneas en blanco, se han encontrado {1}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <source>expected {0} blank lines before a nested definition, found {1}</source> + <translation>se esperaban {0} líneas en blanco antes de una definición anidada, se han encontrado {1}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <source>line break after binary operator</source> + <translation>nueva línea después de operador binario</translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> - <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> - <translation>'async' y 'await' son palabras reservadas a partir de Python 3.7</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> - <source>missing whitespace around parameter equals</source> - <translation>faltan espacios en blanco alrededor de igual en parámetros</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172"/> - <source>expected {0} blank lines, found {1}</source> - <translation>se esperaban {0} líneas en blanco, se han encontrado {1}</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="185"/> - <source>expected {0} blank lines before a nested definition, found {1}</source> - <translation>se esperaban {0} líneas en blanco antes de una definición anidada, se han encontrado {1}</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> - <source>line break after binary operator</source> - <translation>nueva línea después de operador binario</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>invalid escape sequence '\{0}'</source> <translation>secuencia de escape no válida'\{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> <source>too many blank lines ({0}) before a nested definition, expected {1}</source> <translation>demasiadas líneas en blanco ({0}) antes de definición anidada, se esperaban {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> <source>too many blank lines ({0}), expected {1}</source> <translation>demasiadas líneas en blanco ({0}), se esperaban {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> <source>over-indented</source> <translation>sobre-indentado</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> <source>doc line too long ({0} > {1} characters)</source> <translation>doc line demasiado larga ({0} > {1} carácteres)</translation> </message>
--- a/eric6/i18n/eric6_fr.ts Sun May 03 13:42:52 2020 +0200 +++ b/eric6/i18n/eric6_fr.ts Wed Jun 17 17:14:12 2020 +0200 @@ -390,7 +390,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="200"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="201"/> <source>Add Bookmark</source> <translation>Ajouter un signet</translation> </message> @@ -1136,72 +1136,72 @@ <context> <name>AnnotationsChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="808"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> <source>missing type annotation for function argument '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> - <source>missing type annotation for '*{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="814"/> + <source>missing type annotation for '*{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> <source>missing type annotation for '**{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> - <source>missing return type annotation for public function</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="826"/> - <source>missing return type annotation for protected function</source> + <source>missing return type annotation for public function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="829"/> - <source>missing return type annotation for private function</source> + <source>missing return type annotation for protected function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="832"/> - <source>missing return type annotation for special method</source> + <source>missing return type annotation for private function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="835"/> - <source>missing return type annotation for staticmethod</source> + <source>missing return type annotation for special method</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="838"/> + <source>missing return type annotation for staticmethod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="841"/> <source>missing return type annotation for classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="850"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="853"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> - <source>missing type annotation for 'self' in method</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="820"/> + <source>missing type annotation for 'self' in method</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> <source>missing type annotation for 'cls' in classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="842"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="845"/> <source>type annotation coverage of {0}% is too low</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="846"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="849"/> <source>type annotation is too complex ({0} > {1})</source> <translation type="unfinished"></translation> </message> @@ -1850,32 +1850,32 @@ <translation>Ajouter &Répertoire</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="154"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> <source>&Open</source> <translation>&Ouvrir</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> <source>Open in New &Tab</source> <translation>Ouvrir dans un nouvel &onglet</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="167"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> <source>Edit &Name</source> <translation>Éditer &Nom</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="170"/> - <source>Edit &Address</source> - <translation>Éditer &Adresse</translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <source>Edit &Address</source> + <translation>Éditer &Adresse</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="174"/> <source>&Delete</source> <translation>&Supprimer</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="331"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="343"/> <source>New Folder</source> <translation>Nouveau répertoire</translation> </message> @@ -1885,25 +1885,40 @@ <translation>Cliquer pour supprimer les entrées sélectionnées</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="176"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="178"/> <source>&Properties...</source> <translation>&Propriétés...</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="161"/> - <source>Open in New &Window</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="163"/> + <source>Open in New &Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="165"/> <source>Open in New Pri&vate Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="160"/> <source>Open in New &Background Tab</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="182"/> + <source>New &Folder...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>New Bookmark Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>Enter title for new bookmark folder:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>BookmarksImportDialog</name> @@ -2824,6 +2839,49 @@ </message> </context> <context> + <name>CheckerCategories</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="63"/> + <source>Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="66"/> + <source>Code Complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="69"/> + <source>Documentation</source> + <translation type="unfinished">Documentation</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="72"/> + <source>Errors</source> + <translation type="unfinished">Erreurs</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="75"/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="78"/> + <source>Naming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="84"/> + <source>Warnings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <source>Security</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ChromeImporter</name> <message> <location filename="../WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py" line="43"/> @@ -2958,15 +3016,20 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source>Select Path to Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source><p>The device volume <b>{0}</b> could not be found. Is the device in 'bootloader' mode and mounted?</p> <p>Alternatively select the "Manual Select" entry and enter the path to the device below.</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="52"/> + <source>Manual Select</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ClearPrivateDataDialog</name> @@ -3347,6 +3410,14 @@ </message> </context> <context> + <name>CodeStyleChecker</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1133"/> + <source>No message defined for code '{0}'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>CodeStyleCheckerDialog</name> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="14"/> @@ -3361,137 +3432,127 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="50"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="68"/> <source>Exclude Files:</source> <translation type="unfinished">Fichiers exclus:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="57"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="75"/> <source>Enter filename patterns of files to be excluded separated by a comma</source> <translation type="unfinished">Entrer les filtres de noms de fichiers à exclure, séparés par des virgules</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="830"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1090"/> <source>Press to start the code style check run</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="840"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1254"/> <source>Press to fix the selected issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1113"/> <source>Press to load the default values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="873"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1123"/> <source>Press to store the current values as defaults</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="883"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1133"/> <source>Press to reset the default values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="82"/> <source>Exclude Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="71"/> - <source>Enter message codes or categories to be excluded separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="141"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="159"/> <source>Press to select the message codes from a list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="85"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="103"/> <source>Included Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="92"/> - <source>Enter message codes or categories to be included separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="106"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="124"/> <source>Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="113"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="131"/> <source>Enter message codes of issues to be fixed automatically (leave empty to fix all)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="127"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="145"/> <source>Don't Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="134"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="152"/> <source>Enter message codes of issues not to be fixed automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="265"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="283"/> <source>Max. Line Length:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="316"/> <source>Enter the maximum allowed line length (PEP-8: 79 characters)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="425"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="443"/> <source>Docstring Type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="450"/> <source>Select the rule set for docstrings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="406"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="424"/> <source>Select to allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="409"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="427"/> <source>Allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="150"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="168"/> <source>Select to repeat each message type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="153"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="171"/> <source>Repeat messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="163"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="181"/> <source>Select to fix some issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="166"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="184"/> <source>Fix issues automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="904"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1167"/> <source><b>Result List</b> <p>This list shows the results of the code style check. Double clicking an entry will open this entry in an editor window and position the cursor at @@ -3499,375 +3560,525 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1183"/> <source>File/Line</source> <translation type="unfinished">Fichier/ligne</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="925"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1188"/> <source>Code</source> <translation type="unfinished">Code</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="930"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1193"/> <source>Message</source> <translation type="unfinished">Message</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="80"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="117"/> <source>PEP-257</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="118"/> <source>Eric</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="88"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="144"/> <source>Statistics...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="90"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="146"/> <source>Press to show some statistics for the last run</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="149"/> <source>Show</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="151"/> <source>Press to show all files containing an issue</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="637"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="241"/> <source>Error: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="244"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="248"/> <source>Fix: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="778"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="982"/> <source>No issues found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1214"/> <source>Shows the progress of the code style check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="960"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1223"/> <source>%v/%m Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="176"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="194"/> <source>Select to show ignored issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="179"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="197"/> <source>Show ignored</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="730"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="927"/> <source>{0} (ignored)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="622"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="820"/> <source>Preparing files...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="698"/> <source>Enter the maximum allowed code complexity (McCabe: 10)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="152"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="214"/> <source>Errors</source> <translation type="unfinished">Erreurs</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="664"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="859"/> <source>Transferring data...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="44"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="42"/> <source>Global Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="233"/> <source>Specific Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="257"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="275"/> <source>Source Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="419"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="437"/> <source>Documentation Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="455"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="473"/> <source>Coding Line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="461"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="479"/> <source>Valid Encodings:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="468"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="486"/> <source>Enter valid encodings separated by a comma (leave empty to use defaults)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="478"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="496"/> <source>Copyright</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="484"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="502"/> <source>Min. File Size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="491"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="509"/> <source>Enter the minimum size a file must have to be checked (0 for all files)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="517"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="535"/> <source>Author:</source> <translation type="unfinished">Auteur:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="524"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="542"/> <source>Enter a copyright author name to check for (leave empty to omit this check)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="534"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="552"/> <source>Future Imports</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="540"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="558"/> <source>Expected Imports:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="654"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="672"/> <source>Code Complexity</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1093"/> + <source>&Start</source> + <translation type="unfinished">&Lancer</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1257"/> + <source>&Fix Selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1116"/> + <source>&Load Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1126"/> + <source>St&ore Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1136"/> + <source>&Reset Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="985"/> + <source>No files found (check your ignore list).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="584"/> + <source>Ignore Built-ins Assignment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="600"/> + <source>Left</source> + <translation type="unfinished">Left</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="605"/> + <source>Right</source> + <translation type="unfinished">Right</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="615"/> + <source>Press to add a built-in assignment to be ignored</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="625"/> + <source>Press to delete the selected entries</source> + <translation type="unfinished">Cliquer pour supprimer les entrées sélectionnées</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="691"/> + <source>Max. McCabe Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="714"/> + <source>Max. Line Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="721"/> + <source>Enter the maximum complexity (number of nodes) for a line of code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="737"/> + <source>Max. Line Complexity Score:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="744"/> + <source>Enter the maximum allowed median for line complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="350"/> + <source>Blank Lines Before</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="356"/> + <source>Top Level Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="363"/> + <source>Enter the number of blank lines before top level classes and functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="395"/> + <source>Methods and Nested Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="402"/> + <source>Enter the number of blank lines before methods and nested classes or functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="309"/> + <source>Max. Documentation Line Length:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="653"/> + <source>Commented Code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="659"/> + <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="662"/> + <source>Search aggressively</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="763"/> + <source>Type Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="769"/> + <source>Min. Coverage:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="776"/> + <source>Enter the minimum percentage of type annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="779"/> + <source>off</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="782"/> + <source>%</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="805"/> + <source>Max. Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="812"/> + <source>Enter the maximum type annotation complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="32"/> + <source>Configure</source> + <translation type="unfinished">Configuration</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1146"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1244"/> + <source>Press to restart the code style check run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1247"/> + <source>Restart</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="48"/> + <source>Categories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="58"/> + <source>Select the categories of checks to be performed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="89"/> + <source>Enter message codes to be excluded separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="110"/> + <source>Enter message codes to be included separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="833"/> - <source>&Start</source> - <translation type="unfinished">&Lancer</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="843"/> - <source>&Fix Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="866"/> - <source>&Load Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="876"/> - <source>St&ore Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="886"/> - <source>&Reset Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="781"/> - <source>No files found (check your ignore list).</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="566"/> - <source>Ignore Built-ins Assignment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="582"/> - <source>Left</source> - <translation type="unfinished">Left</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="587"/> - <source>Right</source> - <translation type="unfinished">Right</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="597"/> - <source>Press to add a built-in assignment to be ignored</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="607"/> - <source>Press to delete the selected entries</source> - <translation type="unfinished">Cliquer pour supprimer les entrées sélectionnées</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="673"/> - <source>Max. McCabe Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="696"/> - <source>Max. Line Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="703"/> - <source>Enter the maximum complexity (number of nodes) for a line of code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="719"/> - <source>Max. Line Complexity Score:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="726"/> - <source>Enter the maximum allowed median for line complexity</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="332"/> - <source>Blank Lines Before</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="338"/> - <source>Top Level Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="345"/> - <source>Enter the number of blank lines before top level classes and functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="377"/> - <source>Methods and Nested Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="384"/> - <source>Enter the number of blank lines before methods and nested classes or functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="291"/> - <source>Max. Documentation Line Length:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="635"/> - <source>Commented Code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="641"/> - <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="644"/> - <source>Search aggressively</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="745"/> - <source>Type Annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="751"/> - <source>Min. Coverage:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="758"/> - <source>Enter the minimum percentage of type annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="761"/> - <source>off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="764"/> - <source>%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="787"/> - <source>Max. Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="794"/> - <source>Enter the maximum type annotation complexity</source> + <source>Security Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="839"/> + <source>Hardcoded 'tmp' Directories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="849"/> + <source>Weak Cryptographic Keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="855"/> + <source>DSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="973"/> + <source>High Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="868"/> + <source>Select the bit length below which a DSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="990"/> + <source>Medium Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="885"/> + <source>Select the bit length below which a DSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="911"/> + <source>RSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="924"/> + <source>Select the bit length below which a RSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="941"/> + <source>Select the bit length below which a RSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="967"/> + <source>Elliptic Curves</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="980"/> + <source>Select the bit length below which an Elliptic Curve is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="997"/> + <source>Select the bit length below which an Elliptic Curve is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1026"/> + <source>Enter the names of insecure SSL protocols and methods (one per line)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1033"/> + <source>Insecure SSL Protocols:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1043"/> + <source>Insecure Hashes:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1050"/> + <source>Enter a list of hash methods to be considered insecure separated by comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1057"/> + <source>Select to also check for insecure exception handling for typed exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1060"/> + <source>Check Typed Exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1067"/> + <source>Enter directory names (one per line) to be checked for</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1154"/> + <source><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>CodeStyleCheckerPlugin</name> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> <source>Check Code Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>&Code Style...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="262"/> - <source>Check code style.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>&Code Style...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="266"/> + <source>Check code style.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="364"/> <source><b>Check Code Style...</b><p>This checks Python files for compliance to the code style conventions given in various PEPs.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="110"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="112"/> <source>Python 2 batch check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="126"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="128"/> <source>Python 3 batch check</source> <translation type="unfinished"></translation> </message> @@ -3903,142 +4114,142 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="857"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="861"/> <source>Triple single quotes converted to triple double quotes.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="860"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="864"/> <source>Introductory quotes corrected to be {0}"""</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="867"/> <source>Single line docstring put on one line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="866"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="870"/> <source>Period added to summary line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="893"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="897"/> <source>Blank line before function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="872"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="876"/> <source>Blank line inserted before class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="875"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="879"/> <source>Blank line inserted after class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="878"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="882"/> <source>Blank line inserted after docstring summary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="881"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="885"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="884"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="888"/> <source>Leading quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="887"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="891"/> <source>Trailing quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="890"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="894"/> <source>Blank line before class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="896"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="900"/> <source>Blank line after class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="899"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="903"/> <source>Blank line after function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="902"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="906"/> <source>Blank line after last paragraph removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="905"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="909"/> <source>Tab converted to 4 spaces.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="908"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="912"/> <source>Indentation adjusted to be a multiple of four.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="911"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="915"/> <source>Indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="914"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="918"/> <source>Indentation of closing bracket corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="917"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="921"/> <source>Missing indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="924"/> <source>Closing bracket aligned to opening bracket.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="923"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="927"/> <source>Indentation level changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="926"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="930"/> <source>Indentation level of hanging indentation changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="929"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="933"/> <source>Visual indentation corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="944"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="948"/> <source>Extraneous whitespace removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="941"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="945"/> <source>Missing whitespace added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="947"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> <source>Whitespace around comment sign corrected.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="955"/> <source>%n blank line(s) inserted.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4046,7 +4257,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="954"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> <source>%n superfluous lines removed</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4054,80 +4265,75 @@ </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="962"/> <source>Superfluous blank lines removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="961"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="965"/> <source>Superfluous blank lines after function decorator removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="964"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="968"/> <source>Imports were put on separate lines.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="967"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="971"/> <source>Long lines have been shortened.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="970"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="974"/> <source>Redundant backslash in brackets removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="976"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="980"/> <source>Compound statement corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="979"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="983"/> <source>Comparison to None/True/False corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="982"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="986"/> <source>'{0}' argument added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="985"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="989"/> <source>'{0}' argument removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="988"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="992"/> <source>Whitespace stripped from end of line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="991"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="995"/> <source>newline added to end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="994"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="998"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="997"/> - <source>'<>' replaced by '!='.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1001"/> + <source>'<>' replaced by '!='.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1005"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1107"/> - <source> no message defined for code '{0}'</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>CodeStyleStatisticsDialog</name> @@ -4152,7 +4358,7 @@ <translation type="unfinished">Message</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="60"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="63"/> <source>%n issue(s) found</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4160,7 +4366,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="67"/> <source>%n issue(s) fixed</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4168,7 +4374,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="66"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="69"/> <source>%n file(s) checked</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4176,7 +4382,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="68"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="71"/> <source>%n file(s) with issues found</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4184,13 +4390,21 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="62"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="65"/> <source>%n issue(s) ignored</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="73"/> + <source>%n security issue(s) acknowledged</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> </context> <context> <name>CodingError</name> @@ -4617,22 +4831,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="479"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="482"/> <source>'{0}' is too complex ({1})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="481"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="484"/> <source>source code line is too complex ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="483"/> - <source>overall source code line complexity is too high ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="486"/> + <source>overall source code line complexity is too high ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="489"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> @@ -8409,242 +8623,242 @@ <context> <name>DocStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="288"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="291"/> <source>module is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290"/> - <source>public function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293"/> - <source>private function/method may be missing a docstring</source> + <source>public function/method is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296"/> + <source>private function/method may be missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299"/> <source>public class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301"/> <source>private class may be missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="300"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="303"/> <source>docstring not surrounded by """</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302"/> - <source>docstring containing \ not surrounded by r"""</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305"/> - <source>docstring containing unicode character not surrounded by u"""</source> + <source>docstring containing \ not surrounded by r"""</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308"/> + <source>docstring containing unicode character not surrounded by u"""</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311"/> <source>one-liner docstring on multiple lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313"/> <source>docstring has wrong indentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> <source>docstring summary does not end with a period</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> <source>docstring summary is not in imperative mood (Does instead of Do)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320"/> - <source>docstring summary looks like a function's/method's signature</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> - <source>docstring does not mention the return value type</source> + <source>docstring summary looks like a function's/method's signature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> - <source>function/method docstring is separated by a blank line</source> + <source>docstring does not mention the return value type</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> - <source>class docstring is not preceded by a blank line</source> + <source>function/method docstring is separated by a blank line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> + <source>class docstring is not preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> <source>class docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> <source>docstring summary is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341"/> <source>last paragraph of docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> - <source>private function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> + <source>private function/method is missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352"/> <source>private class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> - <source>leading quotes of docstring not on separate line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <source>leading quotes of docstring not on separate line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> <source>trailing quotes of docstring not on separate line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="363"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="366"/> <source>docstring does not contain a @return line but function/method returns something</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370"/> <source>docstring contains a @return line but function/method doesn't return anything</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> - <source>docstring does not contain enough @param/@keyparam lines</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> - <source>docstring contains too many @param/@keyparam lines</source> + <source>docstring does not contain enough @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> - <source>keyword only arguments must be documented with @keyparam lines</source> + <source>docstring contains too many @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> - <source>order of @param/@keyparam lines does not match the function/method signature</source> + <source>keyword only arguments must be documented with @keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> + <source>order of @param/@keyparam lines does not match the function/method signature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="386"/> <source>class docstring is preceded by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> <source>class docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> - <source>function/method docstring is preceded by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> + <source>function/method docstring is preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> <source>function/method docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> - <source>last paragraph of docstring is followed by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="399"/> + <source>last paragraph of docstring is followed by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="402"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="403"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="406"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="426"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="429"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="312"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="315"/> <source>docstring does not contain a summary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>docstring summary does not start with '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="407"/> - <source>raised exception '{0}' is not documented in docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="410"/> - <source>documented exception '{0}' is not raised</source> + <source>raised exception '{0}' is not documented in docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="413"/> - <source>docstring does not contain a @signal line but class defines signals</source> + <source>documented exception '{0}' is not raised</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="416"/> - <source>docstring contains a @signal line but class doesn't define signals</source> + <source>docstring does not contain a @signal line but class defines signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="419"/> - <source>defined signal '{0}' is not documented in docstring</source> + <source>docstring contains a @signal line but class doesn't define signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="422"/> + <source>defined signal '{0}' is not documented in docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="425"/> <source>documented signal '{0}' is not defined</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="354"/> <source>class docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347"/> <source>function docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>module docstring is still a default string</source> <translation type="unfinished"></translation> </message> @@ -10519,12 +10733,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Add Entry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Enter the entry to add to the list:</source> <translation type="unfinished"></translation> </message> @@ -11068,7 +11282,7 @@ <translation>Éditer le point d'arrêt...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5615"/> + <location filename="../QScintilla/Editor.py" line="5616"/> <source>Enable breakpoint</source> <translation>Activer le point d'arrêt</translation> </message> @@ -11143,87 +11357,87 @@ <translation>L'autocompletion n'est pas disponible car aucune source d'autocomplétion n'est définie.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5618"/> + <location filename="../QScintilla/Editor.py" line="5619"/> <source>Disable breakpoint</source> <translation>Désactiver le point d'arrêt</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Code Coverage</source> <translation>Code Coverage</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Please select a coverage file</source> <translation>Sélectionner un fichier coverage</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Profile Data</source> <translation>Profiler de données</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Please select a profile file</source> <translation>Sélectionner un fichier profile</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Macro Name</source> <translation>Nom de la macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Select a macro name:</source> <translation>Sélectionner un nom de macro:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Macro files (*.macro)</source> <translation>Fichier Macro (*.macro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6754"/> + <location filename="../QScintilla/Editor.py" line="6755"/> <source>Load macro file</source> <translation>Charger un fichier macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source>Error loading macro</source> <translation>Erreur lors du chargement de la macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Save macro file</source> <translation>Enregistrer le fichier macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source>Save macro</source> <translation>Enregistrer la macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source>Error saving macro</source> <translation>Erreur lors de l'enregistrement de la macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Start Macro Recording</source> <translation>Démarrer l'enregistrement de la macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Macro Recording</source> <translation>Enregistrement de macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Enter name of the macro:</source> <translation>Entrer le nom de la macro:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7009"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>File changed</source> <translation>Fichier modifié</translation> </message> @@ -11243,7 +11457,7 @@ <translation>Supprimer les flags d'erreurs de syntaxe</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source>Drop Error</source> <translation>Erreur de suppression</translation> </message> @@ -11253,12 +11467,12 @@ <translation>Afficher le message d'erreur de syntaxe</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>Syntax Error</source> <translation>Erreur de syntaxe</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>No syntax error message available.</source> <translation>Aucun message d'erreur de syntaxe..</translation> </message> @@ -11288,17 +11502,17 @@ <translation>Ligne non executée précédente</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>Show Code Coverage Annotations</source> <translation>Afficher les annotations de Code Coverage</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6049"/> + <location filename="../QScintilla/Editor.py" line="6050"/> <source>All lines have been covered.</source> <translation>Toutes les lignes ont été executées.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>There is no coverage file available.</source> <translation>Impossible de trouver le fichier de coverage.</translation> </message> @@ -11333,72 +11547,72 @@ <translation>Pas de langage</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7341"/> + <location filename="../QScintilla/Editor.py" line="7342"/> <source>Resources</source> <translation>Ressources</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7343"/> + <location filename="../QScintilla/Editor.py" line="7344"/> <source>Add file...</source> <translation>Ajouter un fichier...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7345"/> + <location filename="../QScintilla/Editor.py" line="7346"/> <source>Add files...</source> <translation>Ajouter des fichiers...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7347"/> + <location filename="../QScintilla/Editor.py" line="7348"/> <source>Add aliased file...</source> <translation>Ajouter un fichier alias...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7350"/> + <location filename="../QScintilla/Editor.py" line="7351"/> <source>Add localized resource...</source> <translation>Ajouter une ressource localisée...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7373"/> + <location filename="../QScintilla/Editor.py" line="7374"/> <source>Add file resource</source> <translation>Ajoute un fichier ressource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7389"/> + <location filename="../QScintilla/Editor.py" line="7390"/> <source>Add file resources</source> <translation>Ajoute des fichiers ressources</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Add aliased file resource</source> <translation>Ajoute un alias de fichier ressource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Package Diagram</source> <translation>Diagramme de package</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Include class attributes?</source> <translation>Inclure les attributs de classes ?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Application Diagram</source> <translation>Diagramme de l'application</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Include module names?</source> <translation>Inclure les noms de modules ?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7354"/> + <location filename="../QScintilla/Editor.py" line="7355"/> <source>Add resource frame</source> <translation>Ajouter un cadre ressource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Macro recording is already active. Start new?</source> <translation>L'enregistrement de macro est déjà actif. En démarrer une nouvelle ?</translation> </message> @@ -11443,12 +11657,12 @@ <translation>Aucun format d'exportation indiqué. Abandon...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Imports Diagram</source> <translation>Diagramme des modules</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Include imports from external modules?</source> <translation>Inclure l'importation de modules externes?</translation> </message> @@ -11518,7 +11732,7 @@ <translation>Sélectionne l'analyseur Pygments à appliquer.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7847"/> + <location filename="../QScintilla/Editor.py" line="7848"/> <source>Check spelling...</source> <translation>Correction orthographique...</translation> </message> @@ -11528,12 +11742,12 @@ <translation>Correction orthographique de la sélection...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7850"/> + <location filename="../QScintilla/Editor.py" line="7851"/> <source>Add to dictionary</source> <translation>Ajouter au dictionnaire</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7852"/> + <location filename="../QScintilla/Editor.py" line="7853"/> <source>Ignore All</source> <translation>Tout ignorer</translation> </message> @@ -11573,32 +11787,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6768"/> + <location filename="../QScintilla/Editor.py" line="6769"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7179"/> + <location filename="../QScintilla/Editor.py" line="7180"/> <source>{0} (ro)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source><p><b>{0}</b> is not a file.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Alias for file <b>{0}</b>:</source> <translation type="unfinished"></translation> </message> @@ -11628,22 +11842,22 @@ <translation type="unfinished"><p>Le fichier <b>{0}</b>existe déjà. Écraser ?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6614"/> + <location filename="../QScintilla/Editor.py" line="6615"/> <source>Warning: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6621"/> + <location filename="../QScintilla/Editor.py" line="6622"/> <source>Error: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7005"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation type="unfinished"></translation> </message> @@ -11668,27 +11882,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>Sort Lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>The selection contains illegal data for a numerical sort.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>Warning</source> <translation type="unfinished">Warning</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>No warning messages available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6611"/> + <location filename="../QScintilla/Editor.py" line="6612"/> <source>Style: {0}</source> <translation type="unfinished"></translation> </message> @@ -11713,7 +11927,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6999"/> + <location filename="../QScintilla/Editor.py" line="7000"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation type="unfinished"></translation> </message> @@ -11738,22 +11952,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>Call-Tips Provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>Register Mouse Click Handler</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation type="unfinished"></translation> </message> @@ -11783,12 +11997,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source>EditorConfig Properties</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation type="unfinished"></translation> </message> @@ -17476,17 +17690,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="66"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="71"/> <source>Firmware Files (*.img);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="72"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="77"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="76"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="82"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> @@ -17504,12 +17718,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="211"/> + <location filename="../MicroPython/EspDevices.py" line="217"/> <source>Flash MicroPython Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="236"/> + <location filename="../MicroPython/EspDevices.py" line="248"/> <source>Flash Additional Firmware</source> <translation type="unfinished"></translation> </message> @@ -17534,7 +17748,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>'esptool write_flash' Output</source> <translation type="unfinished"></translation> </message> @@ -17544,47 +17758,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>Show Chip ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>Show Flash ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>Show MAC Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>'esptool read_flash' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>'esptool chip_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>'esptool flash_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>'esptool read_mac' Output</source> <translation type="unfinished"></translation> </message> @@ -17617,20 +17831,35 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="72"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="96"/> <source>Address:</source> <translation type="unfinished">Adresse:</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="79"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="103"/> <source>Enter the flash addres in the hexadecimal form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="43"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="51"/> <source>Firmware Files (*.bin);;All Files (*)</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="75"/> + <source>Flash Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="82"/> + <source>Select the flash mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="89"/> + <source>Leave empty to use the default mode.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ExceptionLogger</name> @@ -39626,6 +39855,14 @@ </message> </context> <context> + <name>IgnoredDevicesDialog</name> + <message> + <location filename="../MicroPython/IgnoredDevicesDialog.ui" line="14"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImageMarkupDialog</name> <message> <location filename="../QScintilla/MarkupProviders/ImageMarkupDialog.py" line="52"/> @@ -45519,27 +45756,27 @@ <context> <name>MicroPythonDevice</name> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="214"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="223"/> <source>Unsupported Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="224"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="233"/> <source>REPL is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="243"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="252"/> <source>Plotter is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="262"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="271"/> <source>Running scripts is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="282"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="291"/> <source>File Manager is not supported by this device.</source> <translation type="unfinished"></translation> </message> @@ -46097,7 +46334,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="460"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="493"/> <source>Press to connect the selected device</source> <translation type="unfinished"></translation> </message> @@ -46125,32 +46362,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="430"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="463"/> <source>Clear</source> <translation type="unfinished">Effacer</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="432"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="465"/> <source>Copy</source> <translation type="unfinished">Copier</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="433"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="466"/> <source>Paste</source> <translation type="unfinished">Coller</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="455"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="488"/> <source>Press to disconnect the current device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>No device attached</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -46159,212 +46396,212 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source>Start REPL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source>Serial Device Connect</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source>Run Script</source> <translation type="unfinished">Lancer le script</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="921"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="954"/> <source>There is no editor open. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="929"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="962"/> <source>The current editor does not contain a script. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source><p>Cannot run script.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Open Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Python3 Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source>Start Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>Unsaved Chart Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>The chart contains unsaved data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source>Start File Manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1136"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169"/> <source>Show Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1139"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1172"/> <source>Show Implementation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source>Synchronize Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1147"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1180"/> <source>Show Device Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1150"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1183"/> <source>Show Local Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1461"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1497"/> <source>Compile Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1481"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1517"/> <source>Compile Current Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1188"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224"/> <source><h3>Device Version Information</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1197"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1233"/> <source>No version information available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1199"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1235"/> <source>Device Version Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1258"/> <source>unknown</source> <translation type="unfinished">inconnu</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source>Device Implementation Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source><p>The time of the connected device was synchronized with the local time.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1272"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308"/> <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1280"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1316"/> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1294"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1330"/> <source>Device Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source>Local Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source>Error handling device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1413"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1449"/> <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1467"/> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1441"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1477"/> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1451"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1487"/> <source>'mpy-cross' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1474"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1510"/> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished"></translation> </message> @@ -46379,50 +46616,70 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1018"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051"/> <source>µPy Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1098"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1131"/> <source>µPy Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1174"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1207"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1178"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1214"/> <source>Configure</source> <translation type="unfinished">Configuration</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1153"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186"/> <source>Show Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1170"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1203"/> <source>Download Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source>Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1333"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1369"/> <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>Unknown MicroPython Device</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:eric-bugs@eric-ide.python-projects.org"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>{0} ({1:04x}/{2:04x})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1211"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -47223,463 +47480,463 @@ <context> <name>MiscellaneousChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="492"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> <source>coding magic comment not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> - <source>unknown encoding ({0}) found in coding magic comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="498"/> - <source>copyright notice not present</source> + <source>unknown encoding ({0}) found in coding magic comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="501"/> - <source>copyright notice contains invalid author</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="702"/> - <source>found {0} formatter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> - <source>format string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> - <source>docstring does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> - <source>other string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> - <source>format call uses too large index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> - <source>format call uses missing keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> - <source>format call uses keyword arguments but no named entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> - <source>format call uses variable arguments but no numbered entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> - <source>format call uses implicit and explicit indexes together</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> - <source>format call provides unused index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> - <source>format call provides unused keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="751"/> - <source>expected these __future__ imports: {0}; but only got: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> - <source>expected these __future__ imports: {0}; but got none</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="761"/> - <source>print statement found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> - <source>one element tuple found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="800"/> - <source>{0}: {1}</source> + <source>copyright notice not present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> + <source>copyright notice contains invalid author</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> + <source>found {0} formatter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> + <source>format string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> + <source>docstring does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> + <source>other string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> + <source>format call uses too large index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> + <source>format call uses missing keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> + <source>format call uses keyword arguments but no named entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> + <source>format call uses variable arguments but no numbered entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> + <source>format call uses implicit and explicit indexes together</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> + <source>format call provides unused index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <source>format call provides unused keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> + <source>expected these __future__ imports: {0}; but only got: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <source>expected these __future__ imports: {0}; but got none</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> + <source>print statement found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="767"/> + <source>one element tuple found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="803"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="507"/> <source>"{0}" is a Python builtin and is being shadowed; consider renaming the variable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="508"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="511"/> <source>"{0}" is used as an argument and thus shadows a Python builtin; consider renaming the argument</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="512"/> - <source>unnecessary generator - rewrite as a list comprehension</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="515"/> - <source>unnecessary generator - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a list comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="518"/> - <source>unnecessary generator - rewrite as a dict comprehension</source> + <source>unnecessary generator - rewrite as a set comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="521"/> - <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="524"/> + <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> <source>unnecessary list comprehension - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> <source>unnecessary list comprehension - "{0}" can take a generator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="770"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> <source>mutable default argument of type {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> <source>sort keys - '{0}' should be before '{1}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> <source>logging statement uses '%'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> - <source>logging statement uses f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> + <source>logging statement uses f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="750"/> <source>logging statement uses 'warn' instead of 'warning'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> <source>logging statement uses string.format()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> <source>logging statement uses '+'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="760"/> <source>gettext import with alias _ found: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="648"/> - <source>Python does not support the unary prefix increment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> - <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> - <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> - <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> - <source>Python 3 does not include '.iter*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> - <source>Python 3 does not include '.view*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> - <source>'.next()' does not exist in Python 3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> - <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> - <source>mutable default argument of function call '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> - <source>using .strip() with multi-character strings is misleading</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> - <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> - <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <source>Python does not support the unary prefix increment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> + <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="663"/> + <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> + <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> + <source>Python 3 does not include '.iter*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> + <source>Python 3 does not include '.view*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> + <source>'.next()' does not exist in Python 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="700"/> + <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="776"/> - <source>None should not be added at any return if function has no return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="780"/> - <source>an explicit value at every return should be added if function has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="784"/> - <source>an explicit return at the end of the function should be added if it has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="788"/> - <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <source>mutable default argument of function call '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> + <source>using .strip() with multi-character strings is misleading</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="681"/> + <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="671"/> + <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <source>None should not be added at any return if function has no return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="783"/> + <source>an explicit value at every return should be added if function has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="787"/> + <source>an explicit return at the end of the function should be added if it has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="791"/> + <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> <source>do not call assert False since python -O removes these calls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="672"/> - <source>unncessary f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="675"/> + <source>unncessary f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> <source>cannot use 'self.__class__' as first argument of 'super()' call</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> - <source>do not call getattr with a constant attribute value</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> + <source>do not call getattr with a constant attribute value</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>do not call setattr with a constant attribute value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="796"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="799"/> <source>commented code lines should be removed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="792"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="795"/> <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="559"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="562"/> <source>use of 'datetime.datetime()' without 'tzinfo' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="566"/> <source>use of 'datetime.datetime.today()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> <source>use of 'datetime.datetime.utcnow()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="571"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="574"/> <source>use of 'datetime.datetime.utcfromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(, tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>use of 'datetime.datetime.now()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> <source>use of 'datetime.datetime.fromtimestamp()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="583"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="586"/> <source>use of 'datetime.datetime.strptime()' should be followed by '.replace(tzinfo=)'</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> + <source>use of 'datetime.date()' should be avoided. +Use 'datetime.datetime(, tzinfo=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> + <source>use of 'datetime.date.today()' should be avoided. +Use 'datetime.datetime.now(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="601"/> + <source>use of 'datetime.date.fromtimestamp()' should be avoided. +Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> + <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> - <source>use of 'datetime.date()' should be avoided. -Use 'datetime.datetime(, tzinfo=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> - <source>use of 'datetime.date.today()' should be avoided. -Use 'datetime.datetime.now(tz=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="598"/> - <source>use of 'datetime.date.fromtimestamp()' should be avoided. -Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> + <source>use of 'datetime.date.fromordinal()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> - <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> - <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> - <source>use of 'datetime.date.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> <source>use of 'datetime.date.fromisoformat()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> <source>unnecessary {0} call - rewrite as a literal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> - <source>unnecessary {0} literal - rewrite as a {1} literal</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="536"/> - <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> + <source>unnecessary {0} literal - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="539"/> - <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> + <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="542"/> - <source>unnecessary list call - remove the outer call to list()</source> + <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="545"/> - <source>unnecessary list comprehension - "in" can take a generator</source> + <source>unnecessary list call - remove the outer call to list()</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="548"/> - <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <source>unnecessary list comprehension - "in" can take a generator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="551"/> + <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>unnecessary {0} passed to list() - remove the outer call to {1}()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="613"/> - <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="616"/> - <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="619"/> + <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="622"/> <source>'sys.version' compared to string (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> - <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> - <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="629"/> + <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="632"/> <source>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="633"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> <source>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="637"/> - <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="640"/> + <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="643"/> <source>'sys.version' compared to string (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>'sys.version[:1]' referenced (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> @@ -48135,72 +48392,72 @@ <context> <name>NamingStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> <source>class names should use CapWords convention</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> - <source>function name should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="438"/> - <source>argument name should be lowercase</source> + <source>function name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> - <source>first argument of a class method should be named 'cls'</source> + <source>argument name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="444"/> - <source>first argument of a method should be named 'self'</source> + <source>first argument of a class method should be named 'cls'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> + <source>first argument of a method should be named 'self'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>first argument of a static method should not be named 'self' or 'cls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="451"/> - <source>module names should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="454"/> - <source>package names should be lowercase</source> + <source>module names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="457"/> - <source>constant imported as non constant</source> + <source>package names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="460"/> - <source>lowercase imported as non lowercase</source> + <source>constant imported as non constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="463"/> - <source>camelcase imported as lowercase</source> + <source>lowercase imported as non lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="466"/> - <source>camelcase imported as constant</source> + <source>camelcase imported as lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="469"/> - <source>variable in function should be lowercase</source> + <source>camelcase imported as constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="472"/> + <source>variable in function should be lowercase</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="475"/> <source>names 'l', 'O' and 'I' should be avoided</source> <translation type="unfinished"></translation> </message> @@ -48241,50 +48498,50 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="201"/> <source>SSL Certificate Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> - <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="205"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="212"/> <source>&Permanent accept</source> <translation type="unfinished">Accepter &définitivement</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="207"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="214"/> <source>&Temporary accept</source> <translation type="unfinished">Accepter &temporairement</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="209"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="216"/> <source>&Reject</source> <translation type="unfinished">&Refuser</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="243"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="284"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="247"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="288"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="295"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="336"/> <source>Authentication required</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="296"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="337"/> <source>Authentication is required to access:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="202"/> + <source><b>{0}</b><p>The host <b>{1}</b> you are trying to access has errors in the SSL certificate.</p><ul><li>{2}</li></ul><p>Would you like to make an exception?</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>NetworkPage</name> @@ -49639,6 +49896,41 @@ <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../PipInterface/Pip.py" line="679"/> + <source>Cache Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="704"/> + <source>List Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="694"/> + <source>Enter a file pattern (empty for all):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="728"/> + <source>Remove Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="720"/> + <source>Enter a file pattern:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="751"/> + <source>Purge Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="744"/> + <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PipDialog</name> @@ -50420,7 +50712,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/> <source>Install Packages</source> <translation type="unfinished"></translation> </message> @@ -50445,28 +50737,48 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="942"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="955"/> <source>Edit User Configuration...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="945"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="958"/> <source>Edit Environment Configuration...</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="963"/> + <source>Configure...</source> + <translation type="unfinished">Configuration...</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>Edit Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>No valid configuration path determined. Aborting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="941"/> + <source>Show Cache Info...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="944"/> + <source>Show Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="947"/> + <source>Remove Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../PipInterface/PipPackagesWidget.py" line="950"/> - <source>Configure...</source> - <translation type="unfinished">Configuration...</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>Edit Configuration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>No valid configuration path determined. Aborting</source> + <source>Purge Cache...</source> <translation type="unfinished"></translation> </message> </context> @@ -51742,17 +52054,17 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1640"/> + <location filename="../Preferences/__init__.py" line="1645"/> <source>Export Preferences</source> <translation>Export des préférences</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Import Preferences</source> <translation>Import des préférences</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Properties File (*.ini);;All Files (*)</source> <translation type="unfinished"></translation> </message> @@ -60871,17 +61183,17 @@ <translation><b>Configuration de Qt</b></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="90"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="85"/> <source>Qt Tools</source> <translation>Outils Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="169"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="164"/> <source>This gives an example of the complete tool name</source> <translation>Ceci donne un exemple d'un nom complet d'outil Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="172"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="167"/> <source>designer</source> <translation>designer</translation> </message> @@ -60891,7 +61203,7 @@ <translation><font color="#FF0000"><b>Note:</b> Cette propriété sera activée au prochain démarrage de l'application.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="123"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="118"/> <source>The tool executable is composed of the prefix, the tool name and the postfix. For win, the extension is added automatically.</source> <translation type="unfinished"></translation> </message> @@ -60906,62 +61218,52 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> - <source><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="135"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="130"/> <source>Qt-Prefix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="137"/> <source>Enter the prefix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="144"/> <source>Qt-Postfix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="151"/> <source>Enter the postfix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="221"/> <source>Indent Width:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="233"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="228"/> <source>Select the indent width (default: 4)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="327"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="322"/> <source>Generate imports relative to '.'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="296"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="291"/> <source>Tools Directory:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="114"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="109"/> <source>Enter the path of the Qt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="211"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="206"/> <source>Enter the path of the PyQt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -60971,7 +61273,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="312"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="307"/> <source>Enter the path of the PySide2 tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -60981,35 +61283,40 @@ <translation type="unfinished">Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="187"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="182"/> <source>PyQt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="220"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="215"/> <source>pyuic Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="272"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="267"/> <source>Select to generate extra code to test and display the form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="275"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="270"/> <source>Generate Extra Test Code</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="288"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="283"/> <source>PySide2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="316"/> <source>pyside2-uic Options</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> + <source><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Queues</name> @@ -62790,6 +63097,334 @@ </message> </context> <context> + <name>Security</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="16"/> + <source>Use of 'assert' detected. The enclosed code will be removed when compiling to optimised byte code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="22"/> + <source>Use of 'exec' detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="27"/> + <source>'chmod' setting a permissive mask {0} on file ({1}).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="32"/> + <source>Possible binding to all interfaces.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="43"/> + <source>Possible hardcoded password: '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="48"/> + <source>Probable insecure usage of temp file/directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="53"/> + <source>Try, Except, Pass detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="56"/> + <source>Try, Except, Continue detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="61"/> + <source>A Flask app appears to be run with debug=True, which exposes the Werkzeug debugger and allows the execution of arbitrary code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="67"/> + <source>Pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="71"/> + <source>Deserialization with the marshal module is possibly dangerous.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="74"/> + <source>Use of insecure MD2, MD4, MD5, or SHA1 hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="77"/> + <source>Use of insecure cipher '{0}'. Replace with a known secure cipher such as AES.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="81"/> + <source>Use of insecure cipher mode '{0}'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="84"/> + <source>Use of insecure and deprecated function (mktemp).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="87"/> + <source>Use of possibly insecure function - consider using safer ast.literal_eval.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="91"/> + <source>Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="95"/> + <source>Use of HTTPSConnection on older versions of Python prior to 2.7.9 and 3.4.3 do not provide security, see https://wiki.openstack.org/wiki/OSSN/OSSN-0033</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="100"/> + <source>Audit url open for permitted schemes. Allowing use of file:/ or custom schemes is often unexpected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="104"/> + <source>Standard pseudo-random generators are not suitable for security/cryptographic purposes.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="108"/> + <source>Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="142"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="147"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="152"/> + <source>FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="156"/> + <source>The input method in Python 2 will read from standard input, evaluate and run the resulting string as Python source code. This is similar, though in many ways worse, than using eval. On Python 2, use raw_input instead, input is safe in Python 3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="162"/> + <source>By default, Python will create a secure, verified SSL context for use in such classes as HTTPSConnection. However, it still allows using an insecure context via the _create_unverified_context that reverts to the previous behavior that does not validate certificates or perform hostname checks.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="169"/> + <source>Use of os.tempnam() and os.tmpnam() is vulnerable to symlink attacks. Consider using tmpfile() instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="175"/> + <source>Use of insecure {0} hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="180"/> + <source>A telnet-related module is being imported. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="184"/> + <source>A FTP-related module is being imported. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="192"/> + <source>Consider possible security implications associated with the '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="216"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="221"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="226"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Use defused.xmlrpc.monkey_patch() function to monkey-patch xmlrpclib and mitigate XML vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="231"/> + <source>Consider possible security implications associated with '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="235"/> + <source>The pyCrypto library and its module '{0}' are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="242"/> + <source>'requests' call with verify=False disabling SSL certificate checks, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="248"/> + <source>'ssl.wrap_socket' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="252"/> + <source>'SSL.Context' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="256"/> + <source>Function call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="260"/> + <source>Function definition identified with insecure SSL/TLS protocol version by default, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="264"/> + <source>'ssl.wrap_socket' call with no SSL/TLS protocol version specified, the default 'SSLv23' could be insecure, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="270"/> + <source>{0} key sizes below {1:d} bits are considered breakable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="275"/> + <source>Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary objects. Consider 'yaml.safe_load()'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="281"/> + <source>Paramiko call with policy set to automatically trust the unknown host key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="287"/> + <source>Possible shell injection via 'Paramiko' call, check inputs are properly sanitized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="291"/> + <source>'subprocess' call with shell=True seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="295"/> + <source>'subprocess' call with shell=True identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="298"/> + <source>'subprocess' call - check for execution of untrusted input.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="301"/> + <source>Function call with shell=True parameter identified, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="305"/> + <source>Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="309"/> + <source>Starting a process with a shell, possible injection detected, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="313"/> + <source>Starting a process without a shell.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="316"/> + <source>Starting a process with a partial executable path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="321"/> + <source>Possible SQL injection vector through string-based query construction.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="327"/> + <source>Possible wildcard injection in call: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="332"/> + <source>Use of 'extra()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="335"/> + <source>Use of 'RawSQL()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="340"/> + <source>Using jinja2 templates with 'autoescape=False' is dangerous and can lead to XSS. Use 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="345"/> + <source>By default, jinja2 sets 'autoescape' to False. Consider using 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="352"/> + <source>Mako templates allow HTML/JS rendering by default and are inherently open to XSS attacks. Ensure variables in all templates are properly sanitized via the 'n', 'h' or 'x' flags (depending on context). For example, to HTML escape the variable 'data' do ${{ data |h }}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="360"/> + <source>Potential XSS on 'mark_safe()' function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="365"/> + <source>Possible hardcoded AWS access key ID: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="368"/> + <source>Possible hardcoded AWS secret access key: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="373"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>SecurityPage</name> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="37"/> @@ -62831,6 +63466,21 @@ <source><b>Configure security settings</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="96"/> + <source>Certificate Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="102"/> + <source>Select to always reject web pages with certificate issues</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="105"/> + <source>Always reject URLs with certificate errors</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SendRefererWhitelistDialog</name> @@ -64786,52 +65436,52 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="168"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="171"/> <source>Media</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="184"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="187"/> <source>Image</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="189"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="192"/> <source>Image Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="197"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="200"/> <source><b>Preview</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="216"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="238"/> <source>Preview not available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="243"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="265"/> <source>Copy Image Location to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="246"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="268"/> <source>Copy Image Name to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source>Save Image</source> <translation type="unfinished">Enregistrer l'image</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="299"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="321"/> <source>All Files (*)</source> <translation type="unfinished">Tous fichiers (*)</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source><p>Cannot write to file <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> @@ -64841,25 +65491,30 @@ <translation type="obsolete">Nom:</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="229"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="251"/> <source>Loading...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="287"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="309"/> <source><p>This preview is not available.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="76"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="97"/> <source><b>Connection is encrypted.</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="80"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="102"/> <source><b>Connection is not encrypted.</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="87"/> + <source><b>Connection is encrypted but may be insecure.</b></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SiteInfoWidget</name> @@ -64869,60 +65524,65 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="62"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="69"/> <source>Your connection to this site is <b>secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="67"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="74"/> <source>Your connection to this site is <b>not secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="82"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="89"/> <source>This is your <b>{0}.</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="88"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="95"/> <source>You have <b>never</b> visited this site before.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="97"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="104"/> <source>first</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="99"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="106"/> <source>second</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="101"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="108"/> <source>third</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="102"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="109"/> <source>This is your <b>{0}</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="123"/> - <source>Register as <b>{0}</b> links handler.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="130"/> + <source>Register as <b>{0}</b> links handler.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="137"/> <source>Register</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="147"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="154"/> <source>More...</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="63"/> + <source>Your connection to this site <b>may not be secure</b>.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SnapWidget</name> @@ -76798,7 +77458,7 @@ <translation><b>Raccourcis claviers</b><p>Edite les raccourcis claviers pour l'application.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6327"/> + <location filename="../UI/UserInterface.py" line="6294"/> <source>Export Keyboard Shortcuts</source> <translation>Exporter les raccourcis clavier</translation> </message> @@ -76818,7 +77478,7 @@ <translation><b>Exporter les raccourcis clavier</b><p>Exporte les raccourcis claviers de l'application.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Import Keyboard Shortcuts</source> <translation>Importer des raccourcis clavier</translation> </message> @@ -76858,7 +77518,7 @@ <translation>Outils</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Help</source> <translation>Aide</translation> </message> @@ -76873,12 +77533,12 @@ <translation>&Barres d'Outils</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source>Problem</source> <translation>Problème</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source>Process Generation Error</source> <translation>Erreur du processus</translation> </message> @@ -76994,7 +77654,7 @@ <translation type="obsolete">Il n'y a pas de script principal défini dans le projet en cours. Abandon</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source>Drop Error</source> <translation>Erreur de suppression</translation> </message> @@ -77129,22 +77789,22 @@ <translation>Visualisueur de tâches</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source>Save tasks</source> <translation>Enregistrement des tâches</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source>Read tasks</source> <translation>Lecture des tâches</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source> <translation>Aucun visualiseur personalisé n'est sélectionné. Prière d'en spécifier un dans les préférences.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source>Documentation Missing</source> <translation>Documentation Manquante</translation> </message> @@ -77244,7 +77904,7 @@ <translation>Ouvre la documentation sur les APIs Eric</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5149"/> + <location filename="../UI/UserInterface.py" line="5116"/> <source><p>Could not start the help viewer.<br>Ensure that it is available as <b>hh</b>.</p></source> <translation><p>Impossible de démarrer le visualiseur d'aide.<br>Assurez-vous qu'il est bien ici <b>hh</b>.</p></translation> </message> @@ -77325,22 +77985,22 @@ <translation>Outils &internes</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source>Documentation</source> <translation>Documentation</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5727"/> + <location filename="../UI/UserInterface.py" line="5694"/> <source><p>The PyQt4 documentation starting point has not been configured.</p></source> <translation><p>L'emplacement de la documentation PyQt4 n'a pas été configuré.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Error during updates check</source> <translation>Erreur durant la recherche de mises à jour</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>Update available</source> <translation>Mise à jour disponible</translation> </message> @@ -77350,17 +78010,17 @@ <translation type="obsolete"><h3>Numéros de version</h3><table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7324"/> + <location filename="../UI/UserInterface.py" line="7291"/> <source></table></source> <translation></table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Open Browser</source> <translation type="unfinished">Ouverture du navigateur</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Could not start a web browser</source> <translation type="unfinished">Impossible de lancer le navigateur web</translation> </message> @@ -77385,17 +78045,17 @@ <translation>Afficher les &outils externes</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>&Cancel</source> <translation>&Annuler</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Could not perform updates check.</source> <translation>Impossible de vérifier les mises à jour.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>First time usage</source> <translation>Première utilisation</translation> </message> @@ -77490,7 +78150,7 @@ <translation>Affiche les versions disponibles pour le téléchargement</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7309"/> + <location filename="../UI/UserInterface.py" line="7276"/> <source><h3>Available versions</h3><table></source> <translation><h3>Versions disponibles</h3><table></translation> </message> @@ -77580,17 +78240,17 @@ <translation>Gestionnaire de &multi-projet</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>External Tools</source> <translation>Outils externes</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6646"/> + <location filename="../UI/UserInterface.py" line="6613"/> <source>Save session</source> <translation>Enregistrer la session</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source>Read session</source> <translation>Chargement de session</translation> </message> @@ -77820,11 +78480,6 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt 3 support</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../UI/UserInterface.py" line="2870"/> <source>PySide Documentation</source> <translation type="unfinished"></translation> @@ -77860,104 +78515,104 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source><p>The file <b>{0}</b> does not exist or is zero length.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="4962"/> + <location filename="../UI/UserInterface.py" line="4935"/> <source><p>Could not start Qt-Designer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5034"/> + <location filename="../UI/UserInterface.py" line="5005"/> <source><p>Could not start Qt-Linguist.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5087"/> + <location filename="../UI/UserInterface.py" line="5049"/> <source><p>Could not start Qt-Assistant.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5129"/> + <location filename="../UI/UserInterface.py" line="5096"/> <source><p>Could not start custom viewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5199"/> + <location filename="../UI/UserInterface.py" line="5166"/> <source><p>Could not start UI Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5256"/> + <location filename="../UI/UserInterface.py" line="5223"/> <source><p>Could not start Translation Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5279"/> + <location filename="../UI/UserInterface.py" line="5246"/> <source><p>Could not start SQL Browser.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5374"/> + <location filename="../UI/UserInterface.py" line="5341"/> <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>No toolgroup entry '{0}' found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5422"/> + <location filename="../UI/UserInterface.py" line="5389"/> <source>Starting process '{0} {1}'. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source><p>Could not start the tool entry <b>{0}</b>.<br>Ensure that it is available as <b>{1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5516"/> + <location filename="../UI/UserInterface.py" line="5483"/> <source>Process '{0}' has exited. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source><p>The documentation starting point "<b>{0}</b>" could not be found.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6584"/> + <location filename="../UI/UserInterface.py" line="6551"/> <source><p>The session file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source><p>The session file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source><p><b>{0}</b> is not a file.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7108"/> + <location filename="../UI/UserInterface.py" line="7075"/> <source>Trying host {0}</source> <translation type="unfinished"></translation> </message> @@ -77992,7 +78647,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Keyboard shortcut file (*.e4k)</source> <translation type="unfinished"></translation> </message> @@ -78032,17 +78687,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>Error getting versions information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7167"/> + <location filename="../UI/UserInterface.py" line="7134"/> <source>The versions information could not be downloaded. Please go online and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -78128,12 +78783,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5351"/> + <location filename="../UI/UserInterface.py" line="5318"/> <source><p>Could not start Snapshot tool.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7380"/> + <location filename="../UI/UserInterface.py" line="7347"/> <source>Select Workspace Directory</source> <translation type="unfinished"></translation> </message> @@ -78498,7 +79153,7 @@ <translation type="unfinished">Lance la documentation PyQt4 {5 ?}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5789"/> + <location filename="../UI/UserInterface.py" line="5756"/> <source><p>The PyQt5 documentation starting point has not been configured.</p></source> <translation type="unfinished"><p>L'emplacement de la documentation PyQt4 n'a pas été configuré.</p> {5 ?}</translation> </message> @@ -78508,7 +79163,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>%v/%m</source> <translation type="unfinished"></translation> </message> @@ -78528,7 +79183,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7103"/> + <location filename="../UI/UserInterface.py" line="7070"/> <source>Version Check</source> <translation type="unfinished"></translation> </message> @@ -78598,27 +79253,22 @@ <translation type="unfinished"><b>Documentation de l'API Eric</b><p>Affiche la do. The location for the documentation is the Documentation/Source subdirectory of the eric4 installation directory.</p> {5 ?} {6 ?}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt v.3 is not supported by eric6.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>The update to <b>{0}</b> of eric6 is available at <b>{1}</b>. Would you like to get it?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>Eric6 is up to date</source> <translation type="unfinished">Eric4 est à jour {5 ?} {6 ?}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>You are using the latest version of eric6</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>eric6 has not been configured yet. The configuration dialog will be started.</source> <translation type="unfinished">eric4 n'a pas encore été configuré. La fenêtre de configuration va être ouverte. {5 ?} {6 ?}</translation> </message> @@ -78638,7 +79288,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7119"/> + <location filename="../UI/UserInterface.py" line="7086"/> <source>The versions information cannot not be downloaded because you are <b>offline</b>. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -78683,7 +79333,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>Load session</source> <translation type="unfinished">Charger la session</translation> </message> @@ -78698,17 +79348,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>eric6 Session Files (*.e5s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>Crash Session found!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>A session file of a crashed session was found. Shall this session be restored?</source> <translation type="unfinished"></translation> </message> @@ -78723,17 +79373,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>Update Check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7244"/> + <location filename="../UI/UserInterface.py" line="7211"/> <source>You are using a snapshot release of eric6. A more up-to-date stable release might be available.</source> <translation type="unfinished"></translation> </message> @@ -78788,7 +79438,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source><p>The PySide{0} documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> @@ -78864,17 +79514,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source>Start Web Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6015"/> + <location filename="../UI/UserInterface.py" line="5982"/> <source>The eric6 web browser could not be started.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source><p>The eric6 web browser is not started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> @@ -78973,6 +79623,21 @@ <source><h2>Version Numbers</h2><table></source> <translation type="unfinished"><h3>Numéros de version</h3><table> {2>?} {2>?}</translation> </message> + <message> + <location filename="../UI/UserInterface.py" line="4944"/> + <source><p>Could not find the Qt-Designer executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5014"/> + <source><p>Could not find the Qt-Linguist executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5058"/> + <source><p>Could not find the Qt-Assistant executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>UserPropertiesDialog</name> @@ -84789,47 +85454,47 @@ <translation type="obsolete">Sélectionne une couleur de fond pour les URLs sécurisées.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="324"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="402"/> <source>Images</source> <translation type="unfinished">Images</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="408"/> <source>Select to load images</source> <translation type="unfinished">Cocher pour charger les images</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="333"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="411"/> <source>Load images</source> <translation type="unfinished">Charger les images</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="343"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="421"/> <source>Style Sheet</source> <translation type="unfinished">Feuille de style</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="349"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="427"/> <source>User Style Sheet:</source> <translation type="unfinished">Feuille de style utilisateur:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="365"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="443"/> <source>Enter the file name of a user style sheet</source> <translation type="unfinished">Entrer le nom d'une feuille de styles</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="375"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="453"/> <source>Tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="381"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="459"/> <source>Select to issue a warning, if multiple tabs are about to be closed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="384"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="462"/> <source>Warn, if multiple tabs are about to be closed</source> <translation type="unfinished"></translation> </message> @@ -84849,37 +85514,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="426"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="504"/> <source><font color="#FF0000"><b>Note:</b> All settings below are activated at the next startup of the application.</font></source> <translation type="unfinished"><font color="#FF0000"><b>Note:</b> Les paramètres seront activés au prochain lancement de l'application.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="433"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="511"/> <source>Toolbars</source> <translation type="unfinished">Barres d'outils</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="439"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="517"/> <source>Select to show toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="520"/> <source>Show Toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="394"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="472"/> <source>Scrollbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="400"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="478"/> <source>Select to show scrollbars. Note: Scrolling is possible even without them.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="403"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="481"/> <source>Show Scrollbars</source> <translation type="unfinished"></translation> </message> @@ -84889,13 +85554,48 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="304"/> + <source>Select the background color for secure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> - <source>Background color of secure URLs:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="298"/> - <source>Select the background color for secure URLs.</source> + <source>URL Entry Background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="291"/> + <source>Secure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="327"/> + <source>Insecure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="340"/> + <source>Select the background color for insecure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="350"/> + <source>Malicious URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="363"/> + <source>Select the background color for malicious URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="373"/> + <source>Private Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="386"/> + <source>Select the background color for URLs in private mode.</source> <translation type="unfinished"></translation> </message> </context> @@ -86167,27 +86867,27 @@ <translation type="unfinished">...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="892"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="913"/> <source>Loading...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="912"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="922"/> <source>Finished loading</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="914"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="889"/> <source>Failed to load</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window?</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation type="unfinished"> @@ -86196,22 +86896,22 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="962"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="970"/> <source>&Quit</source> <translation type="unfinished">&Quitter</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="965"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="973"/> <source>C&lose Current Tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1146"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1154"/> <source>Restore All Closed Tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1148"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1156"/> <source>Clear List</source> <translation type="unfinished"></translation> </message> @@ -89115,12 +89815,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="391"/> + <location filename="../eric6.py" line="399"/> <source>Starting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../eric6.py" line="396"/> + <location filename="../eric6.py" line="404"/> <source>Generating Main Window...</source> <translation type="unfinished">Création de la fenêtre principale...</translation> </message> @@ -89277,7 +89977,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="183"/> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="187"/> <source>no message defined for code '{0}'</source> <translation type="unfinished"></translation> </message> @@ -89461,421 +90161,426 @@ <source>'...' % ... `*` specifier requires sequence</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="165"/> + <source>'if tuple literal' is always true, perhaps remove accidental comma?</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>pycodestyle</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="21"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> <source>indentation contains mixed spaces and tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> - <source>indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="27"/> - <source>expected an indented block</source> + <source>indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="30"/> - <source>unexpected indentation</source> + <source>expected an indented block</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="33"/> - <source>indentation is not a multiple of four (comment)</source> + <source>unexpected indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36"/> - <source>expected an indented block (comment)</source> + <source>indentation is not a multiple of four (comment)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39"/> + <source>expected an indented block (comment)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> <source>unexpected indentation (comment)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> - <source>continuation line indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="48"/> - <source>continuation line missing indentation or outdented</source> + <source>continuation line indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="51"/> + <source>continuation line missing indentation or outdented</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54"/> <source>closing bracket does not match indentation of opening bracket's line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55"/> - <source>closing bracket does not match visual indentation</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="58"/> - <source>continuation line with same indent as next logical line</source> + <source>closing bracket does not match visual indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="61"/> - <source>continuation line over-indented for hanging indent</source> + <source>continuation line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64"/> - <source>continuation line over-indented for visual indent</source> + <source>continuation line over-indented for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67"/> - <source>continuation line under-indented for visual indent</source> + <source>continuation line over-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70"/> - <source>visually indented line with same indent as next logical line</source> + <source>continuation line under-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73"/> - <source>continuation line unaligned for hanging indent</source> + <source>visually indented line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76"/> - <source>closing bracket is missing indentation</source> + <source>continuation line unaligned for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79"/> - <source>indentation contains tabs</source> + <source>closing bracket is missing indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82"/> + <source>indentation contains tabs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85"/> <source>whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91"/> - <source>whitespace before '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94"/> - <source>multiple spaces before operator</source> + <source>whitespace before '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97"/> - <source>multiple spaces after operator</source> + <source>multiple spaces before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100"/> - <source>tab before operator</source> + <source>multiple spaces after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103"/> - <source>tab after operator</source> + <source>tab before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106"/> - <source>missing whitespace around operator</source> + <source>tab after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109"/> - <source>missing whitespace around arithmetic operator</source> + <source>missing whitespace around operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112"/> - <source>missing whitespace around bitwise or shift operator</source> + <source>missing whitespace around arithmetic operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115"/> - <source>missing whitespace around modulo operator</source> + <source>missing whitespace around bitwise or shift operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118"/> - <source>missing whitespace after '{0}'</source> + <source>missing whitespace around modulo operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121"/> - <source>multiple spaces after '{0}'</source> + <source>missing whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124"/> - <source>tab after '{0}'</source> + <source>multiple spaces after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127"/> + <source>tab after '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> <source>unexpected spaces around keyword / parameter equals</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> - <source>at least two spaces before inline comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136"/> - <source>inline comment should start with '# '</source> + <source>at least two spaces before inline comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="139"/> - <source>block comment should start with '# '</source> + <source>inline comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="142"/> - <source>too many leading '#' for block comment</source> + <source>block comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="145"/> - <source>multiple spaces after keyword</source> + <source>too many leading '#' for block comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="148"/> - <source>multiple spaces before keyword</source> + <source>multiple spaces after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="151"/> - <source>tab after keyword</source> + <source>multiple spaces before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154"/> - <source>tab before keyword</source> + <source>tab after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157"/> - <source>missing whitespace after keyword</source> + <source>tab before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="160"/> - <source>trailing whitespace</source> + <source>missing whitespace after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163"/> - <source>no newline at end of file</source> + <source>trailing whitespace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166"/> + <source>no newline at end of file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169"/> <source>blank line contains whitespace</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> - <source>too many blank lines ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> - <source>blank lines found after function decorator</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="194"/> - <source>blank line at end of file</source> + <source>too many blank lines ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <source>blank lines found after function decorator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="197"/> - <source>multiple imports on one line</source> + <source>blank line at end of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200"/> - <source>module level import not at top of file</source> + <source>multiple imports on one line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203"/> - <source>line too long ({0} > {1} characters)</source> + <source>module level import not at top of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206"/> - <source>the backslash is redundant between brackets</source> + <source>line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209"/> + <source>the backslash is redundant between brackets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> <source>line break before binary operator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> - <source>.has_key() is deprecated, use 'in'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> - <source>deprecated form of raising exception</source> + <source>.has_key() is deprecated, use 'in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> - <source>'<>' is deprecated, use '!='</source> + <source>deprecated form of raising exception</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> + <source>'<>' is deprecated, use '!='</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>backticks are deprecated, use 'repr()'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> - <source>multiple statements on one line (colon)</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> - <source>multiple statements on one line (semicolon)</source> + <source>multiple statements on one line (colon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> - <source>statement ends with a semicolon</source> + <source>multiple statements on one line (semicolon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> + <source>statement ends with a semicolon</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248"/> <source>multiple statements on one line (def)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="251"/> - <source>comparison to {0} should be {1}</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> - <source>test for membership should be 'not in'</source> + <source>comparison to {0} should be {1}</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> - <source>test for object identity should be 'is not'</source> + <source>test for membership should be 'not in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> - <source>do not compare types, use 'isinstance()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> - <source>do not assign a lambda expression, use a def</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> - <source>ambiguous variable name '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> - <source>ambiguous class definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> - <source>ambiguous function definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> - <source>{0}: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> - <source>{0}</source> + <source>test for object identity should be 'is not'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> + <source>do not compare types, use 'isinstance()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> + <source>do not assign a lambda expression, use a def</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> + <source>ambiguous variable name '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> + <source>ambiguous class definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> + <source>ambiguous function definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284"/> + <source>{0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> <source>do not use bare except</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184"/> <source>expected {0} blank lines after class or function definition, found {1}</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> + <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> + <source>missing whitespace around parameter equals</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <source>expected {0} blank lines, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <source>expected {0} blank lines before a nested definition, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <source>line break after binary operator</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> - <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> - <source>missing whitespace around parameter equals</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172"/> - <source>expected {0} blank lines, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="185"/> - <source>expected {0} blank lines before a nested definition, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> - <source>line break after binary operator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>invalid escape sequence '\{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> <source>too many blank lines ({0}) before a nested definition, expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> <source>too many blank lines ({0}), expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> <source>over-indented</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> <source>doc line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message>
--- a/eric6/i18n/eric6_it.ts Sun May 03 13:42:52 2020 +0200 +++ b/eric6/i18n/eric6_it.ts Wed Jun 17 17:14:12 2020 +0200 @@ -390,7 +390,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="200"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="201"/> <source>Add Bookmark</source> <translation>Aggiungere segnalibro</translation> </message> @@ -1136,72 +1136,72 @@ <context> <name>AnnotationsChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="808"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> <source>missing type annotation for function argument '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> - <source>missing type annotation for '*{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="814"/> + <source>missing type annotation for '*{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> <source>missing type annotation for '**{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> - <source>missing return type annotation for public function</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="826"/> - <source>missing return type annotation for protected function</source> + <source>missing return type annotation for public function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="829"/> - <source>missing return type annotation for private function</source> + <source>missing return type annotation for protected function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="832"/> - <source>missing return type annotation for special method</source> + <source>missing return type annotation for private function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="835"/> - <source>missing return type annotation for staticmethod</source> + <source>missing return type annotation for special method</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="838"/> + <source>missing return type annotation for staticmethod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="841"/> <source>missing return type annotation for classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="850"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="853"/> <source>{0}: {1}</source> <translation type="unfinished">{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> - <source>missing type annotation for 'self' in method</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="820"/> + <source>missing type annotation for 'self' in method</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> <source>missing type annotation for 'cls' in classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="842"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="845"/> <source>type annotation coverage of {0}% is too low</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="846"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="849"/> <source>type annotation is too complex ({0} > {1})</source> <translation type="unfinished"></translation> </message> @@ -1850,32 +1850,32 @@ <translation>Aggiungi &Cartella</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="154"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> <source>&Open</source> <translation>&Apri</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> <source>Open in New &Tab</source> <translation>Apri in una nuova linguet&ta</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="167"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> <source>Edit &Name</source> <translation>Modifica &Nome</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="170"/> - <source>Edit &Address</source> - <translation>Modifica &Indirizzo</translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <source>Edit &Address</source> + <translation>Modifica &Indirizzo</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="174"/> <source>&Delete</source> <translation>Can&cella</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="331"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="343"/> <source>New Folder</source> <translation>Nuova Cartella</translation> </message> @@ -1885,25 +1885,40 @@ <translation></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="176"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="178"/> <source>&Properties...</source> <translation>&Proprietà...</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="161"/> - <source>Open in New &Window</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="163"/> + <source>Open in New &Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="165"/> <source>Open in New Pri&vate Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="160"/> <source>Open in New &Background Tab</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="182"/> + <source>New &Folder...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>New Bookmark Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>Enter title for new bookmark folder:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>BookmarksImportDialog</name> @@ -2833,6 +2848,49 @@ </message> </context> <context> + <name>CheckerCategories</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="63"/> + <source>Annotations</source> + <translation type="unfinished">Annotazioni</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="66"/> + <source>Code Complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="69"/> + <source>Documentation</source> + <translation type="unfinished">Documentazione</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="72"/> + <source>Errors</source> + <translation type="unfinished">Errori</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="75"/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="78"/> + <source>Naming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="84"/> + <source>Warnings</source> + <translation type="unfinished">Warnings</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <source>Security</source> + <translation type="unfinished">Sicurezza</translation> + </message> +</context> +<context> <name>ChromeImporter</name> <message> <location filename="../WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py" line="43"/> @@ -2968,15 +3026,20 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source>Select Path to Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source><p>The device volume <b>{0}</b> could not be found. Is the device in 'bootloader' mode and mounted?</p> <p>Alternatively select the "Manual Select" entry and enter the path to the device below.</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="52"/> + <source>Manual Select</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ClearPrivateDataDialog</name> @@ -3437,6 +3500,14 @@ </message> </context> <context> + <name>CodeStyleChecker</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1133"/> + <source>No message defined for code '{0}'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>CodeStyleCheckerDialog</name> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="14"/> @@ -3453,137 +3524,137 @@ aprirà una finestra per editare e posizionerà il cursore alla rispettiva riga e colonna.</p></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="50"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="68"/> <source>Exclude Files:</source> <translation>Escludi file:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="57"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="75"/> <source>Enter filename patterns of files to be excluded separated by a comma</source> <translation>Inserisci una stringa per il nome file dei file da escludere separati da una virgola</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="830"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1090"/> <source>Press to start the code style check run</source> <translation>Premi per iniziare l'esecuzione del controllo dello stile di codifica</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="840"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1254"/> <source>Press to fix the selected issues</source> <translation>Premi per correggere le problemi selezionati</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1113"/> <source>Press to load the default values</source> <translation>Premi per caricare i valori di default</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="873"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1123"/> <source>Press to store the current values as defaults</source> <translation>Premi per salvare i valori corrente come predefiniti</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="883"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1133"/> <source>Press to reset the default values</source> <translation>Premi per resettare i valori predefiniti</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="82"/> <source>Exclude Messages:</source> <translation>Escludi Messaggi:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="71"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="69"/> <source>Enter message codes or categories to be excluded separated by a comma</source> - <translation>Inserici il codice del messaggio o le categorie da escludere separate da una virgola</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="141"/> + <translation type="obsolete">Inserici il codice del messaggio o le categorie da escludere separate da una virgola</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="159"/> <source>Press to select the message codes from a list</source> <translation>Premi per selezionare il codice messaggi da una lista</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="85"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="103"/> <source>Included Messages:</source> <translation>Includi Messaggi:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="92"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="90"/> <source>Enter message codes or categories to be included separated by a comma</source> - <translation>Inserisci i codici messaggio o le categorie da includere separati da una virgola</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="106"/> + <translation type="obsolete">Inserisci i codici messaggio o le categorie da includere separati da una virgola</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="124"/> <source>Fix Issues:</source> <translation>Problemi risolti:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="113"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="131"/> <source>Enter message codes of issues to be fixed automatically (leave empty to fix all)</source> <translation>Inserisci i codici messaggio dei problemi da correggere in automatico (lascia vuoto per correggerli tutti)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="127"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="145"/> <source>Don't Fix Issues:</source> <translation>Problemi non risolti:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="134"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="152"/> <source>Enter message codes of issues not to be fixed automatically</source> <translation>Inserisci i codici messaggio dei problemi da non correggere in automatico</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="265"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="283"/> <source>Max. Line Length:</source> <translation>Max. lunghezza riga:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="316"/> <source>Enter the maximum allowed line length (PEP-8: 79 characters)</source> <translation>Inserisci la lunghezza massima di riga consentita (PEP-8: 79 caratteri)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="425"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="443"/> <source>Docstring Type:</source> <translation>Tipo stringa doc.:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="450"/> <source>Select the rule set for docstrings</source> <translation>Seleziona l'insieme di regole per la stringa doc</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="406"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="424"/> <source>Select to allow hanging closing brackets</source> <translation>Seleziona per permettere l'apposizione delle parentesi di chiusura</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="409"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="427"/> <source>Allow hanging closing brackets</source> <translation>permette l'apposizione delle parentesi di chiusura</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="150"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="168"/> <source>Select to repeat each message type</source> <translation>Seleziona per ripetere ogni tipo di messaggio</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="153"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="171"/> <source>Repeat messages</source> <translation>Ripeti messaggio</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="163"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="181"/> <source>Select to fix some issues</source> <translation>Seleziona per correggere alcuni problemi</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="166"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="184"/> <source>Fix issues automatically</source> <translation>Correggi automanticamente i problemi</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="904"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1167"/> <source><b>Result List</b> <p>This list shows the results of the code style check. Double clicking an entry will open this entry in an editor window and position the cursor at @@ -3593,375 +3664,525 @@ aprirà una finestra per le modifiche posizionando il cursore alla rispettiva riga e colonna.</p></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1183"/> <source>File/Line</source> <translation>File/Linea</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="925"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1188"/> <source>Code</source> <translation>Codice</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="930"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1193"/> <source>Message</source> <translation>Messaggio</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="80"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="117"/> <source>PEP-257</source> <translation>PEP-257</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="118"/> <source>Eric</source> <translation>Eric</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="88"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="144"/> <source>Statistics...</source> <translation>Statistiche...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="90"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="146"/> <source>Press to show some statistics for the last run</source> <translation>Premi per mostrare alcune statistiche dell'ultima esecuzione</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="149"/> <source>Show</source> <translation>Mostra</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="151"/> <source>Press to show all files containing an issue</source> <translation>Premi per mostrare tutti i file che contengono problematiche</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="637"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="241"/> <source>Error: {0}</source> <translation>Errore: {0}</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="244"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="248"/> <source>Fix: {0}</source> <translation>Corregge:{0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="778"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="982"/> <source>No issues found.</source> <translation>Nessun problema trovato.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1214"/> <source>Shows the progress of the code style check</source> <translation>Mostra l'avanzamento del controllo dello stile di codifica</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="960"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1223"/> <source>%v/%m Files</source> <translation>File %v/%m</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="176"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="194"/> <source>Select to show ignored issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="179"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="197"/> <source>Show ignored</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="730"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="927"/> <source>{0} (ignored)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="622"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="820"/> <source>Preparing files...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="698"/> <source>Enter the maximum allowed code complexity (McCabe: 10)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="152"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="214"/> <source>Errors</source> <translation type="unfinished">Errori</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="664"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="859"/> <source>Transferring data...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="44"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="42"/> <source>Global Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="233"/> <source>Specific Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="257"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="275"/> <source>Source Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="419"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="437"/> <source>Documentation Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="455"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="473"/> <source>Coding Line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="461"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="479"/> <source>Valid Encodings:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="468"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="486"/> <source>Enter valid encodings separated by a comma (leave empty to use defaults)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="478"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="496"/> <source>Copyright</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="484"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="502"/> <source>Min. File Size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="491"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="509"/> <source>Enter the minimum size a file must have to be checked (0 for all files)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="517"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="535"/> <source>Author:</source> <translation type="unfinished">Autore:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="524"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="542"/> <source>Enter a copyright author name to check for (leave empty to omit this check)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="534"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="552"/> <source>Future Imports</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="540"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="558"/> <source>Expected Imports:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="654"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="672"/> <source>Code Complexity</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1093"/> + <source>&Start</source> + <translation type="unfinished">&Avvia</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1257"/> + <source>&Fix Selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1116"/> + <source>&Load Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1126"/> + <source>St&ore Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1136"/> + <source>&Reset Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="985"/> + <source>No files found (check your ignore list).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="584"/> + <source>Ignore Built-ins Assignment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="600"/> + <source>Left</source> + <translation type="unfinished">Sinistra</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="605"/> + <source>Right</source> + <translation type="unfinished">Destra</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="615"/> + <source>Press to add a built-in assignment to be ignored</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="625"/> + <source>Press to delete the selected entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="691"/> + <source>Max. McCabe Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="714"/> + <source>Max. Line Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="721"/> + <source>Enter the maximum complexity (number of nodes) for a line of code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="737"/> + <source>Max. Line Complexity Score:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="744"/> + <source>Enter the maximum allowed median for line complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="350"/> + <source>Blank Lines Before</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="356"/> + <source>Top Level Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="363"/> + <source>Enter the number of blank lines before top level classes and functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="395"/> + <source>Methods and Nested Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="402"/> + <source>Enter the number of blank lines before methods and nested classes or functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="309"/> + <source>Max. Documentation Line Length:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="653"/> + <source>Commented Code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="659"/> + <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="662"/> + <source>Search aggressively</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="763"/> + <source>Type Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="769"/> + <source>Min. Coverage:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="776"/> + <source>Enter the minimum percentage of type annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="779"/> + <source>off</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="782"/> + <source>%</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="805"/> + <source>Max. Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="812"/> + <source>Enter the maximum type annotation complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="32"/> + <source>Configure</source> + <translation type="unfinished">Configura</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1146"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1244"/> + <source>Press to restart the code style check run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1247"/> + <source>Restart</source> + <translation type="unfinished">Riavvio</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="48"/> + <source>Categories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="58"/> + <source>Select the categories of checks to be performed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="89"/> + <source>Enter message codes to be excluded separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="110"/> + <source>Enter message codes to be included separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="833"/> - <source>&Start</source> - <translation type="unfinished">&Avvia</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="843"/> - <source>&Fix Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="866"/> - <source>&Load Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="876"/> - <source>St&ore Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="886"/> - <source>&Reset Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="781"/> - <source>No files found (check your ignore list).</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="566"/> - <source>Ignore Built-ins Assignment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="582"/> - <source>Left</source> - <translation type="unfinished">Sinistra</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="587"/> - <source>Right</source> - <translation type="unfinished">Destra</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="597"/> - <source>Press to add a built-in assignment to be ignored</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="607"/> - <source>Press to delete the selected entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="673"/> - <source>Max. McCabe Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="696"/> - <source>Max. Line Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="703"/> - <source>Enter the maximum complexity (number of nodes) for a line of code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="719"/> - <source>Max. Line Complexity Score:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="726"/> - <source>Enter the maximum allowed median for line complexity</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="332"/> - <source>Blank Lines Before</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="338"/> - <source>Top Level Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="345"/> - <source>Enter the number of blank lines before top level classes and functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="377"/> - <source>Methods and Nested Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="384"/> - <source>Enter the number of blank lines before methods and nested classes or functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="291"/> - <source>Max. Documentation Line Length:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="635"/> - <source>Commented Code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="641"/> - <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="644"/> - <source>Search aggressively</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="745"/> - <source>Type Annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="751"/> - <source>Min. Coverage:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="758"/> - <source>Enter the minimum percentage of type annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="761"/> - <source>off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="764"/> - <source>%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="787"/> - <source>Max. Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="794"/> - <source>Enter the maximum type annotation complexity</source> + <source>Security Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="839"/> + <source>Hardcoded 'tmp' Directories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="849"/> + <source>Weak Cryptographic Keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="855"/> + <source>DSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="973"/> + <source>High Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="868"/> + <source>Select the bit length below which a DSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="990"/> + <source>Medium Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="885"/> + <source>Select the bit length below which a DSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="911"/> + <source>RSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="924"/> + <source>Select the bit length below which a RSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="941"/> + <source>Select the bit length below which a RSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="967"/> + <source>Elliptic Curves</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="980"/> + <source>Select the bit length below which an Elliptic Curve is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="997"/> + <source>Select the bit length below which an Elliptic Curve is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1026"/> + <source>Enter the names of insecure SSL protocols and methods (one per line)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1033"/> + <source>Insecure SSL Protocols:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1043"/> + <source>Insecure Hashes:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1050"/> + <source>Enter a list of hash methods to be considered insecure separated by comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1057"/> + <source>Select to also check for insecure exception handling for typed exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1060"/> + <source>Check Typed Exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1067"/> + <source>Enter directory names (one per line) to be checked for</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1154"/> + <source><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>CodeStyleCheckerPlugin</name> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> <source>Check Code Style</source> <translation>Controllo dello stile di codifica</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>&Code Style...</source> - <translation>Stile &Codifica...</translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="262"/> - <source>Check code style.</source> - <translation></translation> - </message> - <message> <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>&Code Style...</source> + <translation>Stile &Codifica...</translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="266"/> + <source>Check code style.</source> + <translation></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="364"/> <source><b>Check Code Style...</b><p>This checks Python files for compliance to the code style conventions given in various PEPs.</p></source> <translation><b>Controlla lo stile di codifica...</b><p>Controlla che i file Python siano aderenti alle varie convenzioni PEP.</p></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="110"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="112"/> <source>Python 2 batch check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="126"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="128"/> <source>Python 3 batch check</source> <translation type="unfinished"></translation> </message> @@ -3997,142 +4218,142 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="857"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="861"/> <source>Triple single quotes converted to triple double quotes.</source> <translation>Triple virgolette singole convertite in triple virgolette doppie.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="860"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="864"/> <source>Introductory quotes corrected to be {0}"""</source> <translation>Virgolette introduttive corrette in {0}"""</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="867"/> <source>Single line docstring put on one line.</source> <translation>Singole righe documentazione raggruppate su una sola.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="866"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="870"/> <source>Period added to summary line.</source> <translation>Aggiunto punto alla riga sommario.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="893"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="897"/> <source>Blank line before function/method docstring removed.</source> <translation>Riga vuota prima della stringa di documentazione funzione/metodo rimossa.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="872"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="876"/> <source>Blank line inserted before class docstring.</source> <translation>Riga vuota inserita prima della stringa di documentazione della classe.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="875"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="879"/> <source>Blank line inserted after class docstring.</source> <translation>Linea vuota inserita dopo la stringa di documentazione della classe.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="878"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="882"/> <source>Blank line inserted after docstring summary.</source> <translation>Linea vuota inserita dopo la stringa di documentazione del sommario.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="881"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="885"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation>Linea vuota inserita dopo l'ultimo paragrafo della stringa di documentazione.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="884"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="888"/> <source>Leading quotes put on separate line.</source> <translation>Le virgolette di testa messe su una riga separata.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="887"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="891"/> <source>Trailing quotes put on separate line.</source> <translation>Le virgolette di coda messe su una riga separata.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="890"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="894"/> <source>Blank line before class docstring removed.</source> <translation>Rimossa riga vuota prima della stringa di documentazione.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="896"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="900"/> <source>Blank line after class docstring removed.</source> <translation>Rimossa riga vuota dopo della stringa di documentazione.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="899"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="903"/> <source>Blank line after function/method docstring removed.</source> <translation>Riga vuota dopo la stringa di documentazione funzione/metodo rimossa.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="902"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="906"/> <source>Blank line after last paragraph removed.</source> <translation>Rimossa riga vuota dopo l'ultimo paragrafo.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="905"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="909"/> <source>Tab converted to 4 spaces.</source> <translation>Convertita Tabulazione in 4 spazi.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="908"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="912"/> <source>Indentation adjusted to be a multiple of four.</source> <translation>Identazione portata ad un multiplo di quattro.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="911"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="915"/> <source>Indentation of continuation line corrected.</source> <translation>Identazione di continuazione riga corretta.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="914"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="918"/> <source>Indentation of closing bracket corrected.</source> <translation>Identazione di parentesi chiusa corretta.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="917"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="921"/> <source>Missing indentation of continuation line corrected.</source> <translation>Corretta la mancanza di indentazione della continuazione riga.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="924"/> <source>Closing bracket aligned to opening bracket.</source> <translation>Parentesi chiusa allineata con quella d'apertura.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="923"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="927"/> <source>Indentation level changed.</source> <translation>Livello di indentazione modificato.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="926"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="930"/> <source>Indentation level of hanging indentation changed.</source> <translation>Modificato il livello di indentazione dell'indentazione pendente.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="929"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="933"/> <source>Visual indentation corrected.</source> <translation></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="944"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="948"/> <source>Extraneous whitespace removed.</source> <translation>Spazio non pertinente eliminato.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="941"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="945"/> <source>Missing whitespace added.</source> <translation>Spazi mancanti aggiunti.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="947"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> <source>Whitespace around comment sign corrected.</source> <translation>Corretto spazio vicino al segno di commento.</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="955"/> <source>%n blank line(s) inserted.</source> <translation type="unfinished"> <numerusform>%n riga vuota inserita.</numerusform> @@ -4140,7 +4361,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="954"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> <source>%n superfluous lines removed</source> <translation type="unfinished"> <numerusform>%n riga superflua eliminata</numerusform> @@ -4148,80 +4369,75 @@ </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="962"/> <source>Superfluous blank lines removed.</source> <translation>Righe vuote superflue eliminate.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="961"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="965"/> <source>Superfluous blank lines after function decorator removed.</source> <translation>Righe vuote superflue eliminate dopo a dichiarazione della funzione.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="964"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="968"/> <source>Imports were put on separate lines.</source> <translation>Import messi su righe separate.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="967"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="971"/> <source>Long lines have been shortened.</source> <translation>Accorciate righe lughe.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="970"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="974"/> <source>Redundant backslash in brackets removed.</source> <translation>Rimossi barre rovesciate ridondanti.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="976"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="980"/> <source>Compound statement corrected.</source> <translation>Corretta istruzione composta.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="979"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="983"/> <source>Comparison to None/True/False corrected.</source> <translation>Corretta comparazione con None/True/False.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="982"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="986"/> <source>'{0}' argument added.</source> <translation>'{0}' argumento aggiunto.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="985"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="989"/> <source>'{0}' argument removed.</source> <translation>'{0}' argumento rimosso.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="988"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="992"/> <source>Whitespace stripped from end of line.</source> <translation>Eliminati gli spazi alla fine della linea.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="991"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="995"/> <source>newline added to end of file.</source> <translation>Aggiunta una nuova riga alla fine del file.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="994"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="998"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation>Rghe vuote superflue eliminate dalla fine del file.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="997"/> - <source>'<>' replaced by '!='.</source> - <translation>'<>' sostituito da '!='.</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1001"/> + <source>'<>' replaced by '!='.</source> + <translation>'<>' sostituito da '!='.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1005"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1107"/> - <source> no message defined for code '{0}'</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>CodeStyleStatisticsDialog</name> @@ -4246,7 +4462,7 @@ <translation>Messaggio</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="60"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="63"/> <source>%n issue(s) found</source> <translation> <numerusform>%n problema trovato</numerusform> @@ -4254,7 +4470,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="67"/> <source>%n issue(s) fixed</source> <translation> <numerusform>%n problema corretto</numerusform> @@ -4262,7 +4478,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="66"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="69"/> <source>%n file(s) checked</source> <translation> <numerusform>%n file controllato</numerusform> @@ -4270,7 +4486,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="68"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="71"/> <source>%n file(s) with issues found</source> <translation> <numerusform>%n file con problemi trovato</numerusform> @@ -4278,13 +4494,21 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="62"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="65"/> <source>%n issue(s) ignored</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="73"/> + <source>%n security issue(s) acknowledged</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> </context> <context> <name>CodingError</name> @@ -4716,22 +4940,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="479"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="482"/> <source>'{0}' is too complex ({1})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="481"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="484"/> <source>source code line is too complex ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="483"/> - <source>overall source code line complexity is too high ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="486"/> + <source>overall source code line complexity is too high ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="489"/> <source>{0}: {1}</source> <translation type="unfinished">{0}: {1}</translation> </message> @@ -8536,242 +8760,242 @@ <context> <name>DocStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="288"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="291"/> <source>module is missing a docstring</source> <translation>Modulo mancante di docstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290"/> - <source>public function/method is missing a docstring</source> - <translation>Funzione/metodo pubblico mancante di docstring</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293"/> - <source>private function/method may be missing a docstring</source> - <translation>Funzione/metodo pubblico con possibile mancanza di docstring</translation> + <source>public function/method is missing a docstring</source> + <translation>Funzione/metodo pubblico mancante di docstring</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296"/> + <source>private function/method may be missing a docstring</source> + <translation>Funzione/metodo pubblico con possibile mancanza di docstring</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299"/> <source>public class is missing a docstring</source> <translation>Classe pubblica mancante di docstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301"/> <source>private class may be missing a docstring</source> <translation>Classe privata con possibile mancanza di docstring</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="300"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="303"/> <source>docstring not surrounded by """</source> <translation>docstring non inserita fra """</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302"/> - <source>docstring containing \ not surrounded by r"""</source> - <translation>docstring contenente \ non inserita fra r"""</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305"/> - <source>docstring containing unicode character not surrounded by u"""</source> - <translation>docstring contenente carattere unicode non inserito fra u"""</translation> + <source>docstring containing \ not surrounded by r"""</source> + <translation>docstring contenente \ non inserita fra r"""</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308"/> + <source>docstring containing unicode character not surrounded by u"""</source> + <translation>docstring contenente carattere unicode non inserito fra u"""</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311"/> <source>one-liner docstring on multiple lines</source> <translation>docstring in linea su righe multiple</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313"/> <source>docstring has wrong indentation</source> <translation>docstring ha un'indentazione errata</translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> + <source>docstring summary does not end with a period</source> + <translation>docstring sommario non si conclude con un punto</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> + <source>docstring summary is not in imperative mood (Does instead of Do)</source> + <translation>docstring sommario non è in modo imperativo (farebbe invece di fa)</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> + <source>docstring summary looks like a function's/method's signature</source> + <translation>docstring sommario sembra una firma di funzione/metodo</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> + <source>docstring does not mention the return value type</source> + <translation>docstring non indica il tipo di valore di ritorno</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> + <source>function/method docstring is separated by a blank line</source> + <translation>docstring funzione/metodo è separato da una riga vuota</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> + <source>class docstring is not preceded by a blank line</source> + <translation>docstring della classe non è preceduta da una riga vuota</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> + <source>class docstring is not followed by a blank line</source> + <translation>docstring della classe non è seguita da una riga vuota</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> + <source>docstring summary is not followed by a blank line</source> + <translation>docstring sommario non è seguito da una riga vuota</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341"/> + <source>last paragraph of docstring is not followed by a blank line</source> + <translation>L'ultimo paragrafo della docstring non è seguito da una riga vuota</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> + <source>private function/method is missing a docstring</source> + <translation>Funzione/metodo privato mancante di docstring</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352"/> + <source>private class is missing a docstring</source> + <translation>Classe privata mancante di docstring</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <source>leading quotes of docstring not on separate line</source> + <translation>Virgolette iniziali della docstring non sono su riga separata</translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> - <source>docstring summary does not end with a period</source> - <translation>docstring sommario non si conclude con un punto</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316"/> - <source>docstring summary is not in imperative mood (Does instead of Do)</source> - <translation>docstring sommario non è in modo imperativo (farebbe invece di fa)</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320"/> - <source>docstring summary looks like a function's/method's signature</source> - <translation>docstring sommario sembra una firma di funzione/metodo</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> - <source>docstring does not mention the return value type</source> - <translation>docstring non indica il tipo di valore di ritorno</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> - <source>function/method docstring is separated by a blank line</source> - <translation>docstring funzione/metodo è separato da una riga vuota</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> - <source>class docstring is not preceded by a blank line</source> - <translation>docstring della classe non è preceduta da una riga vuota</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> - <source>class docstring is not followed by a blank line</source> - <translation>docstring della classe non è seguita da una riga vuota</translation> + <source>trailing quotes of docstring not on separate line</source> + <translation>Virgolette finali della docstring non sono su riga separata</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="366"/> + <source>docstring does not contain a @return line but function/method returns something</source> + <translation>docstring non contiene una riga @return ma la funzione/metodo ritorna dei valori</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370"/> + <source>docstring contains a @return line but function/method doesn't return anything</source> + <translation>docstring contiene una riga @return ma la funzione/metodo non ritorna dei valori</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> + <source>docstring does not contain enough @param/@keyparam lines</source> + <translation>docstring non contiene sufficienti righe @param/@keyparam</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> + <source>docstring contains too many @param/@keyparam lines</source> + <translation>docstring contiene troppe righe @param/@keyparam</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> + <source>keyword only arguments must be documented with @keyparam lines</source> + <translation>Argomenti con una sola parola-chiave devono essere documentati con righe @keyparam</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> + <source>order of @param/@keyparam lines does not match the function/method signature</source> + <translation>La sequenza di righe @param/@keyparam non si raccorda con le definizioni funzione/metodo</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="386"/> + <source>class docstring is preceded by a blank line</source> + <translation>docstring della classe è preceduta da una riga vuota</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> + <source>class docstring is followed by a blank line</source> + <translation>docstring della classe è seguita da una riga vuota</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> + <source>function/method docstring is preceded by a blank line</source> + <translation>docstring funzione/metodo è preceduto da una riga vuota</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> - <source>docstring summary is not followed by a blank line</source> - <translation>docstring sommario non è seguito da una riga vuota</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338"/> - <source>last paragraph of docstring is not followed by a blank line</source> - <translation>L'ultimo paragrafo della docstring non è seguito da una riga vuota</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> - <source>private function/method is missing a docstring</source> - <translation>Funzione/metodo privato mancante di docstring</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> - <source>private class is missing a docstring</source> - <translation>Classe privata mancante di docstring</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> - <source>leading quotes of docstring not on separate line</source> - <translation>Virgolette iniziali della docstring non sono su riga separata</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> - <source>trailing quotes of docstring not on separate line</source> - <translation>Virgolette finali della docstring non sono su riga separata</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="363"/> - <source>docstring does not contain a @return line but function/method returns something</source> - <translation>docstring non contiene una riga @return ma la funzione/metodo ritorna dei valori</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> - <source>docstring contains a @return line but function/method doesn't return anything</source> - <translation>docstring contiene una riga @return ma la funzione/metodo non ritorna dei valori</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> - <source>docstring does not contain enough @param/@keyparam lines</source> - <translation>docstring non contiene sufficienti righe @param/@keyparam</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> - <source>docstring contains too many @param/@keyparam lines</source> - <translation>docstring contiene troppe righe @param/@keyparam</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> - <source>keyword only arguments must be documented with @keyparam lines</source> - <translation>Argomenti con una sola parola-chiave devono essere documentati con righe @keyparam</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> - <source>order of @param/@keyparam lines does not match the function/method signature</source> - <translation>La sequenza di righe @param/@keyparam non si raccorda con le definizioni funzione/metodo</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> - <source>class docstring is preceded by a blank line</source> - <translation>docstring della classe è preceduta da una riga vuota</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> - <source>class docstring is followed by a blank line</source> - <translation>docstring della classe è seguita da una riga vuota</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> - <source>function/method docstring is preceded by a blank line</source> - <translation>docstring funzione/metodo è preceduto da una riga vuota</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> <source>function/method docstring is followed by a blank line</source> <translation>docstring funzione/metodo è seguito da una riga vuota</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> - <source>last paragraph of docstring is followed by a blank line</source> - <translation>L'ultimo paragrafo della docstring è seguito da una riga vuota</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="399"/> + <source>last paragraph of docstring is followed by a blank line</source> + <translation>L'ultimo paragrafo della docstring è seguito da una riga vuota</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="402"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation>docstring non contiene una riga @exception ma la funzione/metodo causa un'eccezione</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="403"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="406"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation>docstring contiene una riga @return ma la funzione/metodo non causa un'eccezione</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="426"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="429"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="312"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="315"/> <source>docstring does not contain a summary</source> <translation>docstring non contiene un sommario</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>docstring summary does not start with '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="407"/> - <source>raised exception '{0}' is not documented in docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="410"/> - <source>documented exception '{0}' is not raised</source> + <source>raised exception '{0}' is not documented in docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="413"/> - <source>docstring does not contain a @signal line but class defines signals</source> + <source>documented exception '{0}' is not raised</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="416"/> - <source>docstring contains a @signal line but class doesn't define signals</source> + <source>docstring does not contain a @signal line but class defines signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="419"/> - <source>defined signal '{0}' is not documented in docstring</source> + <source>docstring contains a @signal line but class doesn't define signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="422"/> + <source>defined signal '{0}' is not documented in docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="425"/> <source>documented signal '{0}' is not defined</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="354"/> <source>class docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347"/> <source>function docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>module docstring is still a default string</source> <translation type="unfinished"></translation> </message> @@ -10806,12 +11030,12 @@ <translation type="unfinished">Rimozione global&e</translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Add Entry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Enter the entry to add to the list:</source> <translation type="unfinished"></translation> </message> @@ -11355,7 +11579,7 @@ <translation>Modifica Breakpoint...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5615"/> + <location filename="../QScintilla/Editor.py" line="5616"/> <source>Enable breakpoint</source> <translation>Abilita breakpoint</translation> </message> @@ -11430,87 +11654,87 @@ <translation>L'autocomplentamento non è disponibile perchè non ci sono fonti impostate.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5618"/> + <location filename="../QScintilla/Editor.py" line="5619"/> <source>Disable breakpoint</source> <translation>Disabilita breakpoint</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Code Coverage</source> <translation>Analisi codice</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Please select a coverage file</source> <translation>Per favore seleziona un file per l'analisi</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Profile Data</source> <translation>Profilazione dati</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Please select a profile file</source> <translation>Per favore seleziona un file per la profilazione</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Macro Name</source> <translation>Nome Macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Select a macro name:</source> <translation>Seleziona un nome per la macro:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Macro files (*.macro)</source> <translation>File Macro (*.macro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6754"/> + <location filename="../QScintilla/Editor.py" line="6755"/> <source>Load macro file</source> <translation>Carica un file di macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source>Error loading macro</source> <translation>Errore nel caricamento della macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Save macro file</source> <translation>Salva un file di macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source>Save macro</source> <translation>Salva macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source>Error saving macro</source> <translation>Errore nel salvataggio della macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Start Macro Recording</source> <translation>Avvia registrazione della macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Macro Recording</source> <translation>Registrazione Macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Enter name of the macro:</source> <translation>Inserisci un nome per la macro:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7009"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>File changed</source> <translation>File modificato</translation> </message> @@ -11530,7 +11754,7 @@ <translation>Elimina errori di sintassi</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source>Drop Error</source> <translation>Errore Drop</translation> </message> @@ -11540,12 +11764,12 @@ <translation>Mostra i messaggi degli errori di sintassi</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>Syntax Error</source> <translation>Errore di sintassi</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>No syntax error message available.</source> <translation>Nessun messaggio degli errori di sintassi disponibile.</translation> </message> @@ -11575,17 +11799,17 @@ <translation>File non analizzato precedente</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>Show Code Coverage Annotations</source> <translation>Mostra le annotazioni dell'analisi del codice</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6049"/> + <location filename="../QScintilla/Editor.py" line="6050"/> <source>All lines have been covered.</source> <translation>Tutte le linee sono state analizzate.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>There is no coverage file available.</source> <translation>Non ci sono file di analisi disponibili.</translation> </message> @@ -11620,72 +11844,72 @@ <translation>Nessun linguaggio</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7341"/> + <location filename="../QScintilla/Editor.py" line="7342"/> <source>Resources</source> <translation>Risorse</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7343"/> + <location filename="../QScintilla/Editor.py" line="7344"/> <source>Add file...</source> <translation>Aggiungi file...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7345"/> + <location filename="../QScintilla/Editor.py" line="7346"/> <source>Add files...</source> <translation>Aggiungi files...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7347"/> + <location filename="../QScintilla/Editor.py" line="7348"/> <source>Add aliased file...</source> <translation>Aggiungi file sinonimo...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7350"/> + <location filename="../QScintilla/Editor.py" line="7351"/> <source>Add localized resource...</source> <translation>Aggiungi una risorsa localizzata...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7373"/> + <location filename="../QScintilla/Editor.py" line="7374"/> <source>Add file resource</source> <translation>Aggiungi un file risorse</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7389"/> + <location filename="../QScintilla/Editor.py" line="7390"/> <source>Add file resources</source> <translation>Aggiundi dei file risorse</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Add aliased file resource</source> <translation>Aggiungi file sinonimo delle risorse</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Package Diagram</source> <translation>Diagrammi del package</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Include class attributes?</source> <translation>Includi gli attributi della classe ?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Application Diagram</source> <translation>Diagrammi dell'applicazione</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Include module names?</source> <translation>Includi i nomi dei moduli ?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7354"/> + <location filename="../QScintilla/Editor.py" line="7355"/> <source>Add resource frame</source> <translation>Aggiungi riquadro delle risorse</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Macro recording is already active. Start new?</source> <translation>Registrazione macro già attiva. Avvia nuovamente ?</translation> </message> @@ -11730,12 +11954,12 @@ <translation>Nessun formato di export impostato. Annullamento...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Imports Diagram</source> <translation>Importa diagrammi</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Include imports from external modules?</source> <translation>Includi gli import dai moduli esterni ?</translation> </message> @@ -11805,7 +12029,7 @@ <translation>Selezione l'analizzatore lessicale di Pygments da applicare.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7847"/> + <location filename="../QScintilla/Editor.py" line="7848"/> <source>Check spelling...</source> <translation>Controllo sillabazione...</translation> </message> @@ -11815,12 +12039,12 @@ <translation>Controllo sillabazione della selezione...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7850"/> + <location filename="../QScintilla/Editor.py" line="7851"/> <source>Add to dictionary</source> <translation>Aggiungi al dizionario</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7852"/> + <location filename="../QScintilla/Editor.py" line="7853"/> <source>Ignore All</source> <translation>Ignora tutto</translation> </message> @@ -11860,32 +12084,32 @@ <translation><p>Il file <b>{0}</b> non può essere salvato.<br />Motivo: {1}</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6768"/> + <location filename="../QScintilla/Editor.py" line="6769"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation><p>Il file macro <b>{0}</b> non può essere letto.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation><p>Il file macro <b>{0}</b> è danneggiato.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation><p>Il file macro <b>{0}</b> non può essere scritto.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7179"/> + <location filename="../QScintilla/Editor.py" line="7180"/> <source>{0} (ro)</source> <translation>{0} (ro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> non è un file.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Alias for file <b>{0}</b>:</source> <translation>Alias per il file <b>{0}</b>:</translation> </message> @@ -11915,22 +12139,22 @@ <translation><p>Il file <b>{0}</b> esiste già. Sovrascriverlo ?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation><p>Il file delle macro <b>{0}</b> esiste già.Sovrascriverlo ?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6614"/> + <location filename="../QScintilla/Editor.py" line="6615"/> <source>Warning: {0}</source> <translation>Attenzione: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6621"/> + <location filename="../QScintilla/Editor.py" line="6622"/> <source>Error: {0}</source> <translation>Errore: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7005"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation><br><b>Attenzione:</b> con la riapertura le modifiche andranno perse.</translation> </message> @@ -11955,27 +12179,27 @@ <translation>Modifica precedente</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>Sort Lines</source> <translation>Righe ordinate</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>The selection contains illegal data for a numerical sort.</source> <translation>La selezione contiene dati non validi per un ordinamento numerico.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>Warning</source> <translation>Attenzione</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>No warning messages available.</source> <translation>Nessun messaggio di attenzione disponibile.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6611"/> + <location filename="../QScintilla/Editor.py" line="6612"/> <source>Style: {0}</source> <translation>Stile: {0}</translation> </message> @@ -12000,7 +12224,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6999"/> + <location filename="../QScintilla/Editor.py" line="7000"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation type="unfinished"><p>Il file <b>{0}</b> è stato modificato mentre era aperto in eric6. Rileggerlo ?</p></translation> </message> @@ -12025,22 +12249,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>Call-Tips Provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>Register Mouse Click Handler</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation type="unfinished"></translation> </message> @@ -12070,12 +12294,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source>EditorConfig Properties</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation type="unfinished"></translation> </message> @@ -17881,17 +18105,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="66"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="71"/> <source>Firmware Files (*.img);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="72"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="77"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="76"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="82"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> @@ -17909,12 +18133,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="211"/> + <location filename="../MicroPython/EspDevices.py" line="217"/> <source>Flash MicroPython Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="236"/> + <location filename="../MicroPython/EspDevices.py" line="248"/> <source>Flash Additional Firmware</source> <translation type="unfinished"></translation> </message> @@ -17939,7 +18163,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>'esptool write_flash' Output</source> <translation type="unfinished"></translation> </message> @@ -17949,47 +18173,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>Show Chip ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>Show Flash ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>Show MAC Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>'esptool read_flash' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>'esptool chip_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>'esptool flash_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>'esptool read_mac' Output</source> <translation type="unfinished"></translation> </message> @@ -18022,20 +18246,35 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="72"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="96"/> <source>Address:</source> <translation type="unfinished">Indirizzo:</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="79"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="103"/> <source>Enter the flash addres in the hexadecimal form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="43"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="51"/> <source>Firmware Files (*.bin);;All Files (*)</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="75"/> + <source>Flash Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="82"/> + <source>Select the flash mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="89"/> + <source>Leave empty to use the default mode.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ExceptionLogger</name> @@ -41904,6 +42143,14 @@ </message> </context> <context> + <name>IgnoredDevicesDialog</name> + <message> + <location filename="../MicroPython/IgnoredDevicesDialog.ui" line="14"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImageMarkupDialog</name> <message> <location filename="../QScintilla/MarkupProviders/ImageMarkupDialog.py" line="52"/> @@ -47827,27 +48074,27 @@ <context> <name>MicroPythonDevice</name> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="214"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="223"/> <source>Unsupported Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="224"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="233"/> <source>REPL is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="243"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="252"/> <source>Plotter is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="262"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="271"/> <source>Running scripts is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="282"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="291"/> <source>File Manager is not supported by this device.</source> <translation type="unfinished"></translation> </message> @@ -48405,7 +48652,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="460"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="493"/> <source>Press to connect the selected device</source> <translation type="unfinished"></translation> </message> @@ -48433,32 +48680,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="430"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="463"/> <source>Clear</source> <translation type="unfinished">Pulisci</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="432"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="465"/> <source>Copy</source> <translation type="unfinished">Copia</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="433"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="466"/> <source>Paste</source> <translation type="unfinished">Incolla</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="455"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="488"/> <source>Press to disconnect the current device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>No device attached</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -48467,212 +48714,212 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source>Start REPL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source>Serial Device Connect</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source>Run Script</source> <translation type="unfinished">Esegui Script</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="921"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="954"/> <source>There is no editor open. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="929"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="962"/> <source>The current editor does not contain a script. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source><p>Cannot run script.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Open Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Python3 Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source>Start Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>Unsaved Chart Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>The chart contains unsaved data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source>Start File Manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1136"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169"/> <source>Show Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1139"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1172"/> <source>Show Implementation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source>Synchronize Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1147"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1180"/> <source>Show Device Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1150"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1183"/> <source>Show Local Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1461"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1497"/> <source>Compile Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1481"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1517"/> <source>Compile Current Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1188"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224"/> <source><h3>Device Version Information</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1197"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1233"/> <source>No version information available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1199"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1235"/> <source>Device Version Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1258"/> <source>unknown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source>Device Implementation Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source><p>The time of the connected device was synchronized with the local time.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1272"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308"/> <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1280"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1316"/> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1294"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1330"/> <source>Device Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source>Local Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source>Error handling device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1413"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1449"/> <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1467"/> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished">File Python (*.py);;Tutti i File (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1441"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1477"/> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1451"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1487"/> <source>'mpy-cross' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1474"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1510"/> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished"></translation> </message> @@ -48687,50 +48934,70 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1018"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051"/> <source>µPy Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1098"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1131"/> <source>µPy Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1174"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1207"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1178"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1214"/> <source>Configure</source> <translation type="unfinished">Configura</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1153"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186"/> <source>Show Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1170"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1203"/> <source>Download Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source>Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1333"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1369"/> <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>Unknown MicroPython Device</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:eric-bugs@eric-ide.python-projects.org"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>{0} ({1:04x}/{2:04x})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1211"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -49531,463 +49798,463 @@ <context> <name>MiscellaneousChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="492"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> <source>coding magic comment not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> - <source>unknown encoding ({0}) found in coding magic comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="498"/> - <source>copyright notice not present</source> + <source>unknown encoding ({0}) found in coding magic comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="501"/> + <source>copyright notice not present</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> <source>copyright notice contains invalid author</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="702"/> - <source>found {0} formatter</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> - <source>format string does contain unindexed parameters</source> + <source>found {0} formatter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> - <source>docstring does contain unindexed parameters</source> + <source>format string does contain unindexed parameters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> - <source>other string does contain unindexed parameters</source> + <source>docstring does contain unindexed parameters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> - <source>format call uses too large index ({0})</source> + <source>other string does contain unindexed parameters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> - <source>format call uses missing keyword ({0})</source> + <source>format call uses too large index ({0})</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> - <source>format call uses keyword arguments but no named entries</source> + <source>format call uses missing keyword ({0})</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> - <source>format call uses variable arguments but no numbered entries</source> + <source>format call uses keyword arguments but no named entries</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> - <source>format call uses implicit and explicit indexes together</source> + <source>format call uses variable arguments but no numbered entries</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> - <source>format call provides unused index ({0})</source> + <source>format call uses implicit and explicit indexes together</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> + <source>format call provides unused index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> <source>format call provides unused keyword ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="751"/> - <source>expected these __future__ imports: {0}; but only got: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> + <source>expected these __future__ imports: {0}; but only got: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> <source>expected these __future__ imports: {0}; but got none</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="761"/> - <source>print statement found</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> + <source>print statement found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="767"/> <source>one element tuple found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="800"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="803"/> <source>{0}: {1}</source> <translation type="unfinished">{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="507"/> <source>"{0}" is a Python builtin and is being shadowed; consider renaming the variable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="508"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="511"/> <source>"{0}" is used as an argument and thus shadows a Python builtin; consider renaming the argument</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="512"/> - <source>unnecessary generator - rewrite as a list comprehension</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="515"/> - <source>unnecessary generator - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a list comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="518"/> - <source>unnecessary generator - rewrite as a dict comprehension</source> + <source>unnecessary generator - rewrite as a set comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="521"/> - <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="524"/> + <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> <source>unnecessary list comprehension - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> <source>unnecessary list comprehension - "{0}" can take a generator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="770"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> <source>mutable default argument of type {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> <source>sort keys - '{0}' should be before '{1}'</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> + <source>logging statement uses '%'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> + <source>logging statement uses f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="750"/> + <source>logging statement uses 'warn' instead of 'warning'</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> - <source>logging statement uses '%'</source> + <source>logging statement uses string.format()</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> - <source>logging statement uses f-string</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> - <source>logging statement uses 'warn' instead of 'warning'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> - <source>logging statement uses string.format()</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> <source>logging statement uses '+'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="760"/> <source>gettext import with alias _ found: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="648"/> - <source>Python does not support the unary prefix increment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> - <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> - <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> - <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> - <source>Python 3 does not include '.iter*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> - <source>Python 3 does not include '.view*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> - <source>'.next()' does not exist in Python 3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> - <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> - <source>mutable default argument of function call '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> - <source>using .strip() with multi-character strings is misleading</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> - <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> - <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <source>Python does not support the unary prefix increment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> + <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="663"/> + <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> + <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> + <source>Python 3 does not include '.iter*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> + <source>Python 3 does not include '.view*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> + <source>'.next()' does not exist in Python 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="700"/> + <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="776"/> - <source>None should not be added at any return if function has no return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="780"/> - <source>an explicit value at every return should be added if function has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="784"/> - <source>an explicit return at the end of the function should be added if it has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="788"/> - <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <source>mutable default argument of function call '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> + <source>using .strip() with multi-character strings is misleading</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="681"/> + <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="671"/> + <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <source>None should not be added at any return if function has no return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="783"/> + <source>an explicit value at every return should be added if function has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="787"/> + <source>an explicit return at the end of the function should be added if it has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="791"/> + <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> <source>do not call assert False since python -O removes these calls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="672"/> - <source>unncessary f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="675"/> + <source>unncessary f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> <source>cannot use 'self.__class__' as first argument of 'super()' call</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> - <source>do not call getattr with a constant attribute value</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> + <source>do not call getattr with a constant attribute value</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>do not call setattr with a constant attribute value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="796"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="799"/> <source>commented code lines should be removed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="792"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="795"/> <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="559"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="562"/> <source>use of 'datetime.datetime()' without 'tzinfo' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="566"/> <source>use of 'datetime.datetime.today()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> <source>use of 'datetime.datetime.utcnow()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="571"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="574"/> <source>use of 'datetime.datetime.utcfromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(, tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>use of 'datetime.datetime.now()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> <source>use of 'datetime.datetime.fromtimestamp()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="583"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="586"/> <source>use of 'datetime.datetime.strptime()' should be followed by '.replace(tzinfo=)'</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> + <source>use of 'datetime.date()' should be avoided. +Use 'datetime.datetime(, tzinfo=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> + <source>use of 'datetime.date.today()' should be avoided. +Use 'datetime.datetime.now(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="601"/> + <source>use of 'datetime.date.fromtimestamp()' should be avoided. +Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> + <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> - <source>use of 'datetime.date()' should be avoided. -Use 'datetime.datetime(, tzinfo=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> - <source>use of 'datetime.date.today()' should be avoided. -Use 'datetime.datetime.now(tz=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="598"/> - <source>use of 'datetime.date.fromtimestamp()' should be avoided. -Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> + <source>use of 'datetime.date.fromordinal()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> - <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> - <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> - <source>use of 'datetime.date.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> <source>use of 'datetime.date.fromisoformat()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> <source>unnecessary {0} call - rewrite as a literal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> - <source>unnecessary {0} literal - rewrite as a {1} literal</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="536"/> - <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> + <source>unnecessary {0} literal - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="539"/> - <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> + <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="542"/> - <source>unnecessary list call - remove the outer call to list()</source> + <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="545"/> - <source>unnecessary list comprehension - "in" can take a generator</source> + <source>unnecessary list call - remove the outer call to list()</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="548"/> - <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <source>unnecessary list comprehension - "in" can take a generator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="551"/> + <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>unnecessary {0} passed to list() - remove the outer call to {1}()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="613"/> - <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="616"/> - <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="619"/> + <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="622"/> <source>'sys.version' compared to string (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> - <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> - <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="629"/> + <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="632"/> <source>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="633"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> <source>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="637"/> - <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="640"/> + <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="643"/> <source>'sys.version' compared to string (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>'sys.version[:1]' referenced (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> @@ -50443,72 +50710,72 @@ <context> <name>NamingStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> <source>class names should use CapWords convention</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> - <source>function name should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="438"/> - <source>argument name should be lowercase</source> + <source>function name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> - <source>first argument of a class method should be named 'cls'</source> + <source>argument name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="444"/> - <source>first argument of a method should be named 'self'</source> + <source>first argument of a class method should be named 'cls'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> + <source>first argument of a method should be named 'self'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>first argument of a static method should not be named 'self' or 'cls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="451"/> - <source>module names should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="454"/> - <source>package names should be lowercase</source> + <source>module names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="457"/> - <source>constant imported as non constant</source> + <source>package names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="460"/> - <source>lowercase imported as non lowercase</source> + <source>constant imported as non constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="463"/> - <source>camelcase imported as lowercase</source> + <source>lowercase imported as non lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="466"/> - <source>camelcase imported as constant</source> + <source>camelcase imported as lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="469"/> - <source>variable in function should be lowercase</source> + <source>camelcase imported as constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="472"/> + <source>variable in function should be lowercase</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="475"/> <source>names 'l', 'O' and 'I' should be avoided</source> <translation type="unfinished"></translation> </message> @@ -50562,50 +50829,50 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="201"/> <source>SSL Certificate Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> - <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="205"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="212"/> <source>&Permanent accept</source> <translation type="unfinished">Accetta &Permanentemente</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="207"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="214"/> <source>&Temporary accept</source> <translation type="unfinished">Accetta &Temporaneamente</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="209"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="216"/> <source>&Reject</source> <translation type="unfinished">&Rigetta</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="243"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="284"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"><b>Inserisci utente e password per '{0}', dominio '{1}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="247"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="288"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"><b>Inserisci utente e password per '{0}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="295"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="336"/> <source>Authentication required</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="296"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="337"/> <source>Authentication is required to access:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="202"/> + <source><b>{0}</b><p>The host <b>{1}</b> you are trying to access has errors in the SSL certificate.</p><ul><li>{2}</li></ul><p>Would you like to make an exception?</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>NetworkPage</name> @@ -52095,6 +52362,41 @@ <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../PipInterface/Pip.py" line="679"/> + <source>Cache Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="704"/> + <source>List Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="694"/> + <source>Enter a file pattern (empty for all):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="728"/> + <source>Remove Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="720"/> + <source>Enter a file pattern:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="751"/> + <source>Purge Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="744"/> + <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PipDialog</name> @@ -52876,7 +53178,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/> <source>Install Packages</source> <translation type="unfinished"></translation> </message> @@ -52901,28 +53203,48 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="942"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="955"/> <source>Edit User Configuration...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="945"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="958"/> <source>Edit Environment Configuration...</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="963"/> + <source>Configure...</source> + <translation type="unfinished">Configura...</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>Edit Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>No valid configuration path determined. Aborting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="941"/> + <source>Show Cache Info...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="944"/> + <source>Show Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="947"/> + <source>Remove Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../PipInterface/PipPackagesWidget.py" line="950"/> - <source>Configure...</source> - <translation type="unfinished">Configura...</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>Edit Configuration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>No valid configuration path determined. Aborting</source> + <source>Purge Cache...</source> <translation type="unfinished"></translation> </message> </context> @@ -54202,17 +54524,17 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1640"/> + <location filename="../Preferences/__init__.py" line="1645"/> <source>Export Preferences</source> <translation>Esporta Preferenze</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Import Preferences</source> <translation>Importa Preferenze</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Properties File (*.ini);;All Files (*)</source> <translation>File proprietà (*.ini);;Tutti i file(*)</translation> </message> @@ -63368,17 +63690,17 @@ <translation><b>Configura Qt</b></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="90"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="85"/> <source>Qt Tools</source> <translation>Qt Tools</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="169"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="164"/> <source>This gives an example of the complete tool name</source> <translation>Fa un esempio del nome completo del tool</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="172"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="167"/> <source>designer</source> <translation>designer</translation> </message> @@ -63388,7 +63710,7 @@ <translation><font color="#FF0000"><b>Nota:</b> Queste impostazioni saranno attivate al prossimo avvio dell'applicazione.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="123"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="118"/> <source>The tool executable is composed of the prefix, the tool name and the postfix. For win, the extension is added automatically.</source> <translation>L'eseguibile del tool e' composto dal predisso, il nome del tool e il suffizzo. Per win, l'estensione è aggiunta automaticamente.</translation> </message> @@ -63403,62 +63725,52 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> - <source><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="135"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="130"/> <source>Qt-Prefix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="137"/> <source>Enter the prefix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="144"/> <source>Qt-Postfix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="151"/> <source>Enter the postfix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="221"/> <source>Indent Width:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="233"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="228"/> <source>Select the indent width (default: 4)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="327"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="322"/> <source>Generate imports relative to '.'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="296"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="291"/> <source>Tools Directory:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="114"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="109"/> <source>Enter the path of the Qt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="211"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="206"/> <source>Enter the path of the PyQt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -63468,7 +63780,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="312"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="307"/> <source>Enter the path of the PySide2 tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -63478,35 +63790,40 @@ <translation type="unfinished">Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="187"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="182"/> <source>PyQt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="220"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="215"/> <source>pyuic Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="272"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="267"/> <source>Select to generate extra code to test and display the form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="275"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="270"/> <source>Generate Extra Test Code</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="288"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="283"/> <source>PySide2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="316"/> <source>pyside2-uic Options</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> + <source><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Queues</name> @@ -65297,6 +65614,334 @@ </message> </context> <context> + <name>Security</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="16"/> + <source>Use of 'assert' detected. The enclosed code will be removed when compiling to optimised byte code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="22"/> + <source>Use of 'exec' detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="27"/> + <source>'chmod' setting a permissive mask {0} on file ({1}).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="32"/> + <source>Possible binding to all interfaces.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="43"/> + <source>Possible hardcoded password: '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="48"/> + <source>Probable insecure usage of temp file/directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="53"/> + <source>Try, Except, Pass detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="56"/> + <source>Try, Except, Continue detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="61"/> + <source>A Flask app appears to be run with debug=True, which exposes the Werkzeug debugger and allows the execution of arbitrary code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="67"/> + <source>Pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="71"/> + <source>Deserialization with the marshal module is possibly dangerous.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="74"/> + <source>Use of insecure MD2, MD4, MD5, or SHA1 hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="77"/> + <source>Use of insecure cipher '{0}'. Replace with a known secure cipher such as AES.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="81"/> + <source>Use of insecure cipher mode '{0}'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="84"/> + <source>Use of insecure and deprecated function (mktemp).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="87"/> + <source>Use of possibly insecure function - consider using safer ast.literal_eval.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="91"/> + <source>Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="95"/> + <source>Use of HTTPSConnection on older versions of Python prior to 2.7.9 and 3.4.3 do not provide security, see https://wiki.openstack.org/wiki/OSSN/OSSN-0033</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="100"/> + <source>Audit url open for permitted schemes. Allowing use of file:/ or custom schemes is often unexpected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="104"/> + <source>Standard pseudo-random generators are not suitable for security/cryptographic purposes.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="108"/> + <source>Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="142"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="147"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="152"/> + <source>FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="156"/> + <source>The input method in Python 2 will read from standard input, evaluate and run the resulting string as Python source code. This is similar, though in many ways worse, than using eval. On Python 2, use raw_input instead, input is safe in Python 3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="162"/> + <source>By default, Python will create a secure, verified SSL context for use in such classes as HTTPSConnection. However, it still allows using an insecure context via the _create_unverified_context that reverts to the previous behavior that does not validate certificates or perform hostname checks.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="169"/> + <source>Use of os.tempnam() and os.tmpnam() is vulnerable to symlink attacks. Consider using tmpfile() instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="175"/> + <source>Use of insecure {0} hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="180"/> + <source>A telnet-related module is being imported. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="184"/> + <source>A FTP-related module is being imported. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="192"/> + <source>Consider possible security implications associated with the '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="216"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="221"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="226"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Use defused.xmlrpc.monkey_patch() function to monkey-patch xmlrpclib and mitigate XML vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="231"/> + <source>Consider possible security implications associated with '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="235"/> + <source>The pyCrypto library and its module '{0}' are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="242"/> + <source>'requests' call with verify=False disabling SSL certificate checks, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="248"/> + <source>'ssl.wrap_socket' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="252"/> + <source>'SSL.Context' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="256"/> + <source>Function call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="260"/> + <source>Function definition identified with insecure SSL/TLS protocol version by default, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="264"/> + <source>'ssl.wrap_socket' call with no SSL/TLS protocol version specified, the default 'SSLv23' could be insecure, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="270"/> + <source>{0} key sizes below {1:d} bits are considered breakable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="275"/> + <source>Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary objects. Consider 'yaml.safe_load()'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="281"/> + <source>Paramiko call with policy set to automatically trust the unknown host key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="287"/> + <source>Possible shell injection via 'Paramiko' call, check inputs are properly sanitized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="291"/> + <source>'subprocess' call with shell=True seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="295"/> + <source>'subprocess' call with shell=True identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="298"/> + <source>'subprocess' call - check for execution of untrusted input.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="301"/> + <source>Function call with shell=True parameter identified, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="305"/> + <source>Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="309"/> + <source>Starting a process with a shell, possible injection detected, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="313"/> + <source>Starting a process without a shell.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="316"/> + <source>Starting a process with a partial executable path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="321"/> + <source>Possible SQL injection vector through string-based query construction.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="327"/> + <source>Possible wildcard injection in call: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="332"/> + <source>Use of 'extra()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="335"/> + <source>Use of 'RawSQL()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="340"/> + <source>Using jinja2 templates with 'autoescape=False' is dangerous and can lead to XSS. Use 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="345"/> + <source>By default, jinja2 sets 'autoescape' to False. Consider using 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="352"/> + <source>Mako templates allow HTML/JS rendering by default and are inherently open to XSS attacks. Ensure variables in all templates are properly sanitized via the 'n', 'h' or 'x' flags (depending on context). For example, to HTML escape the variable 'data' do ${{ data |h }}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="360"/> + <source>Potential XSS on 'mark_safe()' function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="365"/> + <source>Possible hardcoded AWS access key ID: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="368"/> + <source>Possible hardcoded AWS secret access key: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="373"/> + <source>{0}: {1}</source> + <translation type="unfinished">{0}: {1}</translation> + </message> +</context> +<context> <name>SecurityPage</name> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="37"/> @@ -65348,6 +65993,21 @@ <source><b>Configure security settings</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="96"/> + <source>Certificate Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="102"/> + <source>Select to always reject web pages with certificate issues</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="105"/> + <source>Always reject URLs with certificate errors</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SendRefererWhitelistDialog</name> @@ -67304,22 +67964,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="168"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="171"/> <source>Media</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="184"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="187"/> <source>Image</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="189"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="192"/> <source>Image Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="197"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="200"/> <source><b>Preview</b></source> <translation type="unfinished"></translation> </message> @@ -67329,32 +67989,32 @@ <translation type="obsolete">Sicurezza</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="216"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="238"/> <source>Preview not available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="243"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="265"/> <source>Copy Image Location to Clipboard</source> <translation type="unfinished">Copia la posizione dell'immagine nella Clipboard</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="246"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="268"/> <source>Copy Image Name to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source>Save Image</source> <translation type="unfinished">Salva immagine</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="299"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="321"/> <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source><p>Cannot write to file <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> @@ -67369,25 +68029,30 @@ <translation type="obsolete">Percorso:</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="229"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="251"/> <source>Loading...</source> <translation type="unfinished">Caricamento...</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="287"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="309"/> <source><p>This preview is not available.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="76"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="97"/> <source><b>Connection is encrypted.</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="80"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="102"/> <source><b>Connection is not encrypted.</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="87"/> + <source><b>Connection is encrypted but may be insecure.</b></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SiteInfoWidget</name> @@ -67397,60 +68062,65 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="62"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="69"/> <source>Your connection to this site is <b>secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="67"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="74"/> <source>Your connection to this site is <b>not secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="82"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="89"/> <source>This is your <b>{0}.</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="88"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="95"/> <source>You have <b>never</b> visited this site before.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="97"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="104"/> <source>first</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="99"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="106"/> <source>second</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="101"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="108"/> <source>third</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="102"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="109"/> <source>This is your <b>{0}</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="123"/> - <source>Register as <b>{0}</b> links handler.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="130"/> + <source>Register as <b>{0}</b> links handler.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="137"/> <source>Register</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="147"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="154"/> <source>More...</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="63"/> + <source>Your connection to this site <b>may not be secure</b>.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SnapWidget</name> @@ -79369,7 +80039,7 @@ <translation><b>Scorciatoie da tastiera</b><p>Imposta le scorciatoie da tastiera dell'applicazione con i valori personalizzati.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6327"/> + <location filename="../UI/UserInterface.py" line="6294"/> <source>Export Keyboard Shortcuts</source> <translation>Esporta scorciatoie da tastiera</translation> </message> @@ -79389,7 +80059,7 @@ <translation><b>Esporta scorciatoie da tastiera</b><p>Esporta le scorciatoie da tastiera dell'applicazione.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Import Keyboard Shortcuts</source> <translation>Importa scorciatoie da tastiera</translation> </message> @@ -79429,7 +80099,7 @@ <translation>Strumenti</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Help</source> <translation>Aiuto</translation> </message> @@ -79444,12 +80114,12 @@ <translation>&Toolbar</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source>Problem</source> <translation>Problema</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source>Process Generation Error</source> <translation>Errore Generazione Processo</translation> </message> @@ -79564,7 +80234,7 @@ <translation type="obsolete">Non c'è uno script principale definito per il progetto. Esco</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source>Drop Error</source> <translation>Errore Drop</translation> </message> @@ -79699,22 +80369,22 @@ <translation>Task-Viewer</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source>Save tasks</source> <translation>Salva task</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source>Read tasks</source> <translation>Leggi task</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source> <translation>Attualmente nessun visualizzatore personalizzato è selezionato. Per favore usa il dialogo delle preferenze per specificarne uno.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source>Documentation Missing</source> <translation>Documentazione mancante</translation> </message> @@ -79814,7 +80484,7 @@ <translation>Apri documentazione API di Eric</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5149"/> + <location filename="../UI/UserInterface.py" line="5116"/> <source><p>Could not start the help viewer.<br>Ensure that it is available as <b>hh</b>.</p></source> <translation><p>Non posso avviare il visualizzatore di help.<br>Assicurarsi che sia disponibile come <b>hh</b>.</p></translation> </message> @@ -79895,22 +80565,22 @@ <translation>Tool &Builtin</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source>Documentation</source> <translation>Documentazione</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5727"/> + <location filename="../UI/UserInterface.py" line="5694"/> <source><p>The PyQt4 documentation starting point has not been configured.</p></source> <translation type="unfinished"><p>L'inizio della documentazione di PySide non è stato configurato.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Error during updates check</source> <translation>Errore nel controllo per gli update</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>Update available</source> <translation>Aggiornamento disponibile</translation> </message> @@ -79920,7 +80590,7 @@ <translation type="obsolete"><h3>Numeri di versione</h3><table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7324"/> + <location filename="../UI/UserInterface.py" line="7291"/> <source></table></source> <translation></table></translation> </message> @@ -79945,17 +80615,17 @@ <translation>Mostra toll &esterni</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>&Cancel</source> <translation>&Cancella</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Could not perform updates check.</source> <translation>Non posso controllare per gli update.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>First time usage</source> <translation>Primo avvio</translation> </message> @@ -80050,7 +80720,7 @@ <translation>Mostra le versioni disponibili per il download</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7309"/> + <location filename="../UI/UserInterface.py" line="7276"/> <source><h3>Available versions</h3><table></source> <translation><h3>Versioni disponibili</h3><table></translation> </message> @@ -80140,17 +80810,17 @@ <translation>&Multiproject-Viewer</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>External Tools</source> <translation>Tool esterni</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6646"/> + <location filename="../UI/UserInterface.py" line="6613"/> <source>Save session</source> <translation>Salva sessione</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source>Read session</source> <translation>Leggi sessione</translation> </message> @@ -80382,7 +81052,7 @@ <message> <location filename="../UI/UserInterface.py" line="5062"/> <source>Qt 3 support</source> - <translation>Supporto Qt3</translation> + <translation type="obsolete">Supporto Qt3</translation> </message> <message> <location filename="../UI/UserInterface.py" line="2870"/> @@ -80420,105 +81090,105 @@ <translation>Tool Esterni/{0}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source><p>The file <b>{0}</b> does not exist or is zero length.</p></source> <translation><p>Il file <b>{0}</b> non esiste o ha lunghezza zero.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="4962"/> + <location filename="../UI/UserInterface.py" line="4935"/> <source><p>Could not start Qt-Designer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Non posso avviare Qt-Designer.<br>Assicurarsi che sia disponibile come <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5034"/> + <location filename="../UI/UserInterface.py" line="5005"/> <source><p>Could not start Qt-Linguist.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Non posso avviare Qt-Linguist.<br>Assicurarsi che sia disponibile come <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5087"/> + <location filename="../UI/UserInterface.py" line="5049"/> <source><p>Could not start Qt-Assistant.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Non posso avviare Qt-Assistant.<br>Assicurarsi che sia disponibile come <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5129"/> + <location filename="../UI/UserInterface.py" line="5096"/> <source><p>Could not start custom viewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Non posso avviare il visualizzatore personalizzato.<br>Assicurarsi che sia disponibile come <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5199"/> + <location filename="../UI/UserInterface.py" line="5166"/> <source><p>Could not start UI Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Non posso avviare UI Previewer.<br>Assicurarsi che sia disponibile come <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5256"/> + <location filename="../UI/UserInterface.py" line="5223"/> <source><p>Could not start Translation Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Non posso avviare l'anteprima delle traduzioni.<br>Assicurarsi che sia disponibile come <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5279"/> + <location filename="../UI/UserInterface.py" line="5246"/> <source><p>Could not start SQL Browser.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Non posso avviare SQL Browser.<br>Assicurarsi che sia disponibile come <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5374"/> + <location filename="../UI/UserInterface.py" line="5341"/> <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source> <translation>Nessun elemento per il tool esterno '{0}' trovato nel gruppo '{1}'.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>No toolgroup entry '{0}' found.</source> <translation>Nessun gruppo '{0}' trovato.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5422"/> + <location filename="../UI/UserInterface.py" line="5389"/> <source>Starting process '{0} {1}'. </source> <translation>Avvio processo '{0} {1}'. </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source><p>Could not start the tool entry <b>{0}</b>.<br>Ensure that it is available as <b>{1}</b>.</p></source> <translation><p>Non posso avviare l'elemento degli strumenti <b>{0}</b>.<br>Assicurarsi che sia disponibile come <b>{1}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5516"/> + <location filename="../UI/UserInterface.py" line="5483"/> <source>Process '{0}' has exited. </source> <translation>Il processo '{0}' è terminato.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source><p>The documentation starting point "<b>{0}</b>" could not be found.</p></source> <translation><p>L'inizio della documentazione "<b>{0}</b>" non viene trovato.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation><p>Il file task <b>{0}</b> non può essere scritto.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation><p>Il file task <b>{0}</b> non può essere letto.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6584"/> + <location filename="../UI/UserInterface.py" line="6551"/> <source><p>The session file <b>{0}</b> could not be written.</p></source> <translation><p>Il file sessione <b>{0}</b> non può essere scritto.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source><p>The session file <b>{0}</b> could not be read.</p></source> <translation><p>Il file sessione <b>{0}</b> non può essere letto.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> non è un file.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7108"/> + <location filename="../UI/UserInterface.py" line="7075"/> <source>Trying host {0}</source> <translation>Tento su host {0}</translation> </message> @@ -80553,7 +81223,7 @@ <translation>Alt+Shift+B</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Keyboard shortcut file (*.e4k)</source> <translation>File scorciatoi tastiera (*.e4k)</translation> </message> @@ -80593,27 +81263,27 @@ <translation><b>Documentazione Python 2</b><p>Mostra la documentazione Python 2. Se non è configurata una directory per la documentazione, viene assunto che la posizione della documentazione sia nella directory doc nella locazione dell'eseguibile Python 2 su Windows e <i>/usr/share/doc/packages/python/html</i> su Unix. Imposta PYTHONDOCDIR2 nel tuo ambiente per sovrascrivere questi valori.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>Error getting versions information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7167"/> + <location filename="../UI/UserInterface.py" line="7134"/> <source>The versions information could not be downloaded. Please go online and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Open Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Could not start a web browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -80699,12 +81369,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5351"/> + <location filename="../UI/UserInterface.py" line="5318"/> <source><p>Could not start Snapshot tool.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7380"/> + <location filename="../UI/UserInterface.py" line="7347"/> <source>Select Workspace Directory</source> <translation type="unfinished">Seleziona cartella di lavoro</translation> </message> @@ -81069,7 +81739,7 @@ <translation type="unfinished">Apri documentazione su PyQt4 {5 ?}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5789"/> + <location filename="../UI/UserInterface.py" line="5756"/> <source><p>The PyQt5 documentation starting point has not been configured.</p></source> <translation type="unfinished"><p>L'inizio della documentazione di PyQt4 non è stato configurato.</p> {5 ?}</translation> </message> @@ -81079,7 +81749,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>%v/%m</source> <translation type="unfinished"></translation> </message> @@ -81099,7 +81769,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7103"/> + <location filename="../UI/UserInterface.py" line="7070"/> <source>Version Check</source> <translation type="unfinished"></translation> </message> @@ -81171,25 +81841,25 @@ <message> <location filename="../UI/UserInterface.py" line="5062"/> <source>Qt v.3 is not supported by eric6.</source> - <translation type="unfinished">Le Qt v.3 non sono supportate da eric6.</translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <translation type="obsolete">Le Qt v.3 non sono supportate da eric6.</translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="7233"/> <source>The update to <b>{0}</b> of eric6 is available at <b>{1}</b>. Would you like to get it?</source> <translation type="unfinished">L'update alla versione <b>{0}</b> di eric6 è disponibile presso <b>{1}</b>. Vuoi prenderlo?</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>Eric6 is up to date</source> <translation type="unfinished">Eric6 è aggiornato</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>You are using the latest version of eric6</source> <translation type="unfinished">Stai usando l'ultima versione di eric6</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>eric6 has not been configured yet. The configuration dialog will be started.</source> <translation type="unfinished">eric6 non è ancora stato configurato. Il dialogo di configurazione verrà avviato.</translation> </message> @@ -81209,7 +81879,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7119"/> + <location filename="../UI/UserInterface.py" line="7086"/> <source>The versions information cannot not be downloaded because you are <b>offline</b>. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -81254,7 +81924,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>Load session</source> <translation type="unfinished">Carica sessione</translation> </message> @@ -81269,17 +81939,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>eric6 Session Files (*.e5s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>Crash Session found!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>A session file of a crashed session was found. Shall this session be restored?</source> <translation type="unfinished"></translation> </message> @@ -81294,17 +81964,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>Update Check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7244"/> + <location filename="../UI/UserInterface.py" line="7211"/> <source>You are using a snapshot release of eric6. A more up-to-date stable release might be available.</source> <translation type="unfinished"></translation> </message> @@ -81359,7 +82029,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source><p>The PySide{0} documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> @@ -81435,17 +82105,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source>Start Web Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6015"/> + <location filename="../UI/UserInterface.py" line="5982"/> <source>The eric6 web browser could not be started.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source><p>The eric6 web browser is not started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> @@ -81544,6 +82214,21 @@ <source><h2>Version Numbers</h2><table></source> <translation type="unfinished"><h3>Numeri di versione</h3><table> {2>?} {2>?}</translation> </message> + <message> + <location filename="../UI/UserInterface.py" line="4944"/> + <source><p>Could not find the Qt-Designer executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5014"/> + <source><p>Could not find the Qt-Linguist executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5058"/> + <source><p>Could not find the Qt-Assistant executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>UserPropertiesDialog</name> @@ -87359,37 +88044,37 @@ <translation type="obsolete">Seleziona lo sfondo per gli URL sicuri.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="324"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="402"/> <source>Images</source> <translation type="unfinished">Immagini</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="408"/> <source>Select to load images</source> <translation type="unfinished">Seleziona per caricare le immagini</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="333"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="411"/> <source>Load images</source> <translation type="unfinished">Carica immagini</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="343"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="421"/> <source>Style Sheet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="349"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="427"/> <source>User Style Sheet:</source> <translation type="unfinished">Fogli di stile dell'utente:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="365"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="443"/> <source>Enter the file name of a user style sheet</source> <translation type="unfinished">Inserisci il nome del foglio di stile dell'utente</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="375"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="453"/> <source>Tabs</source> <translation type="unfinished">Schede</translation> </message> @@ -87399,12 +88084,12 @@ <translation type="obsolete">Mostra solo un pulsante di chiusura invece di uno per ogni linguetta</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="381"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="459"/> <source>Select to issue a warning, if multiple tabs are about to be closed</source> <translation type="unfinished">Seleziona per emettere un'attenzione, se schede multiple stanno per essere chiuse</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="384"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="462"/> <source>Warn, if multiple tabs are about to be closed</source> <translation type="unfinished">Attenzione, se schede multiple stanno per essere chiuse</translation> </message> @@ -87424,37 +88109,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="426"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="504"/> <source><font color="#FF0000"><b>Note:</b> All settings below are activated at the next startup of the application.</font></source> <translation type="unfinished"><font color="#FF0000"><b>Nota:</b> Tutte queste impostazioni saranno attivate al prossimo avvio dell'applicazione.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="433"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="511"/> <source>Toolbars</source> <translation type="unfinished">Toolbars</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="439"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="517"/> <source>Select to show toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="520"/> <source>Show Toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="394"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="472"/> <source>Scrollbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="400"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="478"/> <source>Select to show scrollbars. Note: Scrolling is possible even without them.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="403"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="481"/> <source>Show Scrollbars</source> <translation type="unfinished"></translation> </message> @@ -87464,13 +88149,48 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="304"/> + <source>Select the background color for secure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> - <source>Background color of secure URLs:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="298"/> - <source>Select the background color for secure URLs.</source> + <source>URL Entry Background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="291"/> + <source>Secure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="327"/> + <source>Insecure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="340"/> + <source>Select the background color for insecure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="350"/> + <source>Malicious URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="363"/> + <source>Select the background color for malicious URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="373"/> + <source>Private Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="386"/> + <source>Select the background color for URLs in private mode.</source> <translation type="unfinished"></translation> </message> </context> @@ -88743,27 +89463,27 @@ <translation type="unfinished">...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="892"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="913"/> <source>Loading...</source> <translation type="unfinished">Caricamento...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="912"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="922"/> <source>Finished loading</source> <translation type="unfinished">Caricamento terminato</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="914"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="889"/> <source>Failed to load</source> <translation type="unfinished">Caricamento fallito</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window?</source> <translation type="unfinished">Sei sicuro di voler chiudere la finestra ?</translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation type="unfinished"> @@ -88774,22 +89494,22 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="962"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="970"/> <source>&Quit</source> <translation type="unfinished">&Esci</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="965"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="973"/> <source>C&lose Current Tab</source> <translation type="unfinished">C&hiudi scheda corrente</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1146"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1154"/> <source>Restore All Closed Tabs</source> <translation type="unfinished">Ricarica tutte le schede chiuse</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1148"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1156"/> <source>Clear List</source> <translation type="unfinished">Pulisci lista</translation> </message> @@ -91711,12 +92431,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="391"/> + <location filename="../eric6.py" line="399"/> <source>Starting...</source> <translation type="unfinished">Inizio...</translation> </message> <message> - <location filename="../eric6.py" line="396"/> + <location filename="../eric6.py" line="404"/> <source>Generating Main Window...</source> <translation type="unfinished">Generazione Main Window...</translation> </message> @@ -91879,7 +92599,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="183"/> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="187"/> <source>no message defined for code '{0}'</source> <translation type="unfinished"></translation> </message> @@ -92063,421 +92783,426 @@ <source>'...' % ... `*` specifier requires sequence</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="165"/> + <source>'if tuple literal' is always true, perhaps remove accidental comma?</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>pycodestyle</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="21"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> <source>indentation contains mixed spaces and tabs</source> <translation type="unfinished">indentazione contiene spazi e tab mischiati</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> - <source>indentation is not a multiple of four</source> - <translation type="unfinished">identazione non è un multiplo di quattro</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="27"/> - <source>expected an indented block</source> - <translation type="unfinished">atteso un blocco identato</translation> + <source>indentation is not a multiple of four</source> + <translation type="unfinished">identazione non è un multiplo di quattro</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="30"/> - <source>unexpected indentation</source> - <translation type="unfinished">identazione non attesa</translation> + <source>expected an indented block</source> + <translation type="unfinished">atteso un blocco identato</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="33"/> - <source>indentation is not a multiple of four (comment)</source> - <translation type="unfinished"></translation> + <source>unexpected indentation</source> + <translation type="unfinished">identazione non attesa</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36"/> - <source>expected an indented block (comment)</source> + <source>indentation is not a multiple of four (comment)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39"/> + <source>expected an indented block (comment)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> <source>unexpected indentation (comment)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> - <source>continuation line indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="48"/> - <source>continuation line missing indentation or outdented</source> + <source>continuation line indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="51"/> + <source>continuation line missing indentation or outdented</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54"/> <source>closing bracket does not match indentation of opening bracket's line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55"/> - <source>closing bracket does not match visual indentation</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="58"/> - <source>continuation line with same indent as next logical line</source> + <source>closing bracket does not match visual indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="61"/> - <source>continuation line over-indented for hanging indent</source> + <source>continuation line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64"/> - <source>continuation line over-indented for visual indent</source> + <source>continuation line over-indented for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67"/> - <source>continuation line under-indented for visual indent</source> + <source>continuation line over-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70"/> - <source>visually indented line with same indent as next logical line</source> + <source>continuation line under-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73"/> - <source>continuation line unaligned for hanging indent</source> + <source>visually indented line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76"/> - <source>closing bracket is missing indentation</source> + <source>continuation line unaligned for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79"/> - <source>indentation contains tabs</source> - <translation type="unfinished">identazione contiene tab</translation> + <source>closing bracket is missing indentation</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82"/> + <source>indentation contains tabs</source> + <translation type="unfinished">identazione contiene tab</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85"/> <source>whitespace after '{0}'</source> <translation type="unfinished">spazio dopo '{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91"/> - <source>whitespace before '{0}'</source> - <translation type="unfinished">spazio prima '{0}'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94"/> - <source>multiple spaces before operator</source> - <translation type="unfinished">spazi multipli prima dell'operatore</translation> + <source>whitespace before '{0}'</source> + <translation type="unfinished">spazio prima '{0}'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97"/> - <source>multiple spaces after operator</source> - <translation type="unfinished">spazi multipli dopo l'operatore</translation> + <source>multiple spaces before operator</source> + <translation type="unfinished">spazi multipli prima dell'operatore</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100"/> - <source>tab before operator</source> - <translation type="unfinished">tab prima dell'operatore</translation> + <source>multiple spaces after operator</source> + <translation type="unfinished">spazi multipli dopo l'operatore</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103"/> - <source>tab after operator</source> - <translation type="unfinished">tab dopo l'operatore</translation> + <source>tab before operator</source> + <translation type="unfinished">tab prima dell'operatore</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106"/> - <source>missing whitespace around operator</source> - <translation type="unfinished">spazi intorno all'operatore mancanti</translation> + <source>tab after operator</source> + <translation type="unfinished">tab dopo l'operatore</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109"/> - <source>missing whitespace around arithmetic operator</source> - <translation type="unfinished"></translation> + <source>missing whitespace around operator</source> + <translation type="unfinished">spazi intorno all'operatore mancanti</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112"/> - <source>missing whitespace around bitwise or shift operator</source> + <source>missing whitespace around arithmetic operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115"/> - <source>missing whitespace around modulo operator</source> + <source>missing whitespace around bitwise or shift operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118"/> - <source>missing whitespace after '{0}'</source> - <translation type="unfinished">spazi dopo '{0}' mancanti</translation> + <source>missing whitespace around modulo operator</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121"/> - <source>multiple spaces after '{0}'</source> - <translation type="unfinished">spazi multipli dopo '{0}'</translation> + <source>missing whitespace after '{0}'</source> + <translation type="unfinished">spazi dopo '{0}' mancanti</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124"/> - <source>tab after '{0}'</source> - <translation type="unfinished">tab dopo '{0}'</translation> + <source>multiple spaces after '{0}'</source> + <translation type="unfinished">spazi multipli dopo '{0}'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127"/> + <source>tab after '{0}'</source> + <translation type="unfinished">tab dopo '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> <source>unexpected spaces around keyword / parameter equals</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> - <source>at least two spaces before inline comment</source> - <translation type="unfinished">al massimo due spazi prima di un commento inline</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136"/> - <source>inline comment should start with '# '</source> - <translation type="unfinished">commento inline deve iniziare con '#'</translation> + <source>at least two spaces before inline comment</source> + <translation type="unfinished">al massimo due spazi prima di un commento inline</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="139"/> - <source>block comment should start with '# '</source> - <translation type="unfinished"></translation> + <source>inline comment should start with '# '</source> + <translation type="unfinished">commento inline deve iniziare con '#'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="142"/> - <source>too many leading '#' for block comment</source> + <source>block comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="145"/> - <source>multiple spaces after keyword</source> + <source>too many leading '#' for block comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="148"/> - <source>multiple spaces before keyword</source> + <source>multiple spaces after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="151"/> - <source>tab after keyword</source> + <source>multiple spaces before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154"/> - <source>tab before keyword</source> + <source>tab after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157"/> - <source>missing whitespace after keyword</source> + <source>tab before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="160"/> - <source>trailing whitespace</source> - <translation type="unfinished">spazi all'inizio</translation> + <source>missing whitespace after keyword</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163"/> - <source>no newline at end of file</source> - <translation type="unfinished">nessun ritorno a capo alla fine del file</translation> + <source>trailing whitespace</source> + <translation type="unfinished">spazi all'inizio</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166"/> + <source>no newline at end of file</source> + <translation type="unfinished">nessun ritorno a capo alla fine del file</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169"/> <source>blank line contains whitespace</source> <translation type="unfinished">attesa 1 line vuota, 0 trovate</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> - <source>too many blank lines ({0})</source> - <translation type="unfinished">troppe linee vuote ({0})</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> - <source>blank lines found after function decorator</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="194"/> - <source>blank line at end of file</source> - <translation type="unfinished">linea vuota alla fine del file</translation> + <source>too many blank lines ({0})</source> + <translation type="unfinished">troppe linee vuote ({0})</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <source>blank lines found after function decorator</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="197"/> - <source>multiple imports on one line</source> - <translation type="unfinished">import multipli su una linea</translation> + <source>blank line at end of file</source> + <translation type="unfinished">linea vuota alla fine del file</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200"/> - <source>module level import not at top of file</source> - <translation type="unfinished"></translation> + <source>multiple imports on one line</source> + <translation type="unfinished">import multipli su una linea</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203"/> - <source>line too long ({0} > {1} characters)</source> + <source>module level import not at top of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206"/> - <source>the backslash is redundant between brackets</source> + <source>line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209"/> + <source>the backslash is redundant between brackets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> <source>line break before binary operator</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> + <source>.has_key() is deprecated, use 'in'</source> + <translation type="unfinished">.has_key è deprecato, usa 'in'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> + <source>deprecated form of raising exception</source> + <translation type="unfinished">forma di sollevamento eccezioni deprecata</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> + <source>'<>' is deprecated, use '!='</source> + <translation type="unfinished">'<>' è deprecato, usa '!='</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> + <source>backticks are deprecated, use 'repr()'</source> + <translation type="unfinished">virgolette rovesciare sono deprecate, usa 'repr()'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> + <source>multiple statements on one line (colon)</source> + <translation type="unfinished">istruzioni multiple su una linea (due punti)</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> + <source>multiple statements on one line (semicolon)</source> + <translation type="unfinished">istruzioni multiple su una linea (punto e virgola)</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> + <source>statement ends with a semicolon</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248"/> + <source>multiple statements on one line (def)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> + <source>comparison to {0} should be {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> + <source>test for membership should be 'not in'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> + <source>test for object identity should be 'is not'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> + <source>do not compare types, use 'isinstance()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> + <source>do not assign a lambda expression, use a def</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> + <source>ambiguous variable name '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> + <source>ambiguous class definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> + <source>ambiguous function definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> + <source>{0}: {1}</source> + <translation type="unfinished">{0}: {1}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284"/> + <source>{0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> + <source>do not use bare except</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184"/> + <source>expected {0} blank lines after class or function definition, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> + <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> + <source>missing whitespace around parameter equals</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <source>expected {0} blank lines, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <source>expected {0} blank lines before a nested definition, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <source>line break after binary operator</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> + <source>invalid escape sequence '\{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> + <source>too many blank lines ({0}) before a nested definition, expected {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> + <source>too many blank lines ({0}), expected {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> + <source>over-indented</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> - <source>.has_key() is deprecated, use 'in'</source> - <translation type="unfinished">.has_key è deprecato, usa 'in'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> - <source>deprecated form of raising exception</source> - <translation type="unfinished">forma di sollevamento eccezioni deprecata</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> - <source>'<>' is deprecated, use '!='</source> - <translation type="unfinished">'<>' è deprecato, usa '!='</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> - <source>backticks are deprecated, use 'repr()'</source> - <translation type="unfinished">virgolette rovesciare sono deprecate, usa 'repr()'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> - <source>multiple statements on one line (colon)</source> - <translation type="unfinished">istruzioni multiple su una linea (due punti)</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> - <source>multiple statements on one line (semicolon)</source> - <translation type="unfinished">istruzioni multiple su una linea (punto e virgola)</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> - <source>statement ends with a semicolon</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> - <source>multiple statements on one line (def)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="251"/> - <source>comparison to {0} should be {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> - <source>test for membership should be 'not in'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> - <source>test for object identity should be 'is not'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> - <source>do not compare types, use 'isinstance()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> - <source>do not assign a lambda expression, use a def</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> - <source>ambiguous variable name '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> - <source>ambiguous class definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> - <source>ambiguous function definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> - <source>{0}: {1}</source> - <translation type="unfinished">{0}: {1}</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> - <source>{0}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> - <source>do not use bare except</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> - <source>expected {0} blank lines after class or function definition, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> - <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> - <source>missing whitespace around parameter equals</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172"/> - <source>expected {0} blank lines, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="185"/> - <source>expected {0} blank lines before a nested definition, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> - <source>line break after binary operator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> - <source>invalid escape sequence '\{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> - <source>too many blank lines ({0}) before a nested definition, expected {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> - <source>too many blank lines ({0}), expected {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> - <source>over-indented</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> <source>doc line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message>
--- a/eric6/i18n/eric6_pt.ts Sun May 03 13:42:52 2020 +0200 +++ b/eric6/i18n/eric6_pt.ts Wed Jun 17 17:14:12 2020 +0200 @@ -390,7 +390,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="200"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="201"/> <source>Add Bookmark</source> <translation>Adicionar Marcador</translation> </message> @@ -1138,72 +1138,72 @@ <context> <name>AnnotationsChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="808"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> <source>missing type annotation for function argument '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> - <source>missing type annotation for '*{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="814"/> + <source>missing type annotation for '*{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> <source>missing type annotation for '**{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> - <source>missing return type annotation for public function</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="826"/> - <source>missing return type annotation for protected function</source> + <source>missing return type annotation for public function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="829"/> - <source>missing return type annotation for private function</source> + <source>missing return type annotation for protected function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="832"/> - <source>missing return type annotation for special method</source> + <source>missing return type annotation for private function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="835"/> - <source>missing return type annotation for staticmethod</source> + <source>missing return type annotation for special method</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="838"/> + <source>missing return type annotation for staticmethod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="841"/> <source>missing return type annotation for classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="850"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="853"/> <source>{0}: {1}</source> <translation type="unfinished">{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> - <source>missing type annotation for 'self' in method</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="820"/> + <source>missing type annotation for 'self' in method</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> <source>missing type annotation for 'cls' in classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="842"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="845"/> <source>type annotation coverage of {0}% is too low</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="846"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="849"/> <source>type annotation is too complex ({0} > {1})</source> <translation type="unfinished"></translation> </message> @@ -1847,7 +1847,7 @@ <translation>Pressionar para apagar as entradas selecionadas</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="174"/> <source>&Delete</source> <translation>&Apagar</translation> </message> @@ -1862,50 +1862,65 @@ <translation>Adicionar &Diretório</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="154"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> <source>&Open</source> <translation>A&brir</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> <source>Open in New &Tab</source> <translation>Abrir num &Separador Novo</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="167"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> <source>Edit &Name</source> <translation>Editar &Nome</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="170"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> <source>Edit &Address</source> <translation>Editar &Direção</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="331"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="343"/> <source>New Folder</source> <translation>Diretório Novo</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="176"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="178"/> <source>&Properties...</source> <translation>&Propriedades...</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="161"/> - <source>Open in New &Window</source> - <translation>Abrir numa Nova &Janela</translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="163"/> + <source>Open in New &Window</source> + <translation>Abrir numa Nova &Janela</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="165"/> <source>Open in New Pri&vate Window</source> <translation>Abrir numa Nova Janela Pri&vada</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="160"/> <source>Open in New &Background Tab</source> <translation>Abrir num Novo Separador de &Fundo</translation> </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="182"/> + <source>New &Folder...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>New Bookmark Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>Enter title for new bookmark folder:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>BookmarksImportDialog</name> @@ -2832,6 +2847,49 @@ </message> </context> <context> + <name>CheckerCategories</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="63"/> + <source>Annotations</source> + <translation type="unfinished">Anotações</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="66"/> + <source>Code Complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="69"/> + <source>Documentation</source> + <translation type="unfinished">Documentação</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="72"/> + <source>Errors</source> + <translation type="unfinished">Erros</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="75"/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="78"/> + <source>Naming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="84"/> + <source>Warnings</source> + <translation type="unfinished">Avisos</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <source>Security</source> + <translation type="unfinished">Segurança</translation> + </message> +</context> +<context> <name>ChromeImporter</name> <message> <location filename="../WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py" line="43"/> @@ -2966,15 +3024,20 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source>Select Path to Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source><p>The device volume <b>{0}</b> could not be found. Is the device in 'bootloader' mode and mounted?</p> <p>Alternatively select the "Manual Select" entry and enter the path to the device below.</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="52"/> + <source>Manual Select</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ClearPrivateDataDialog</name> @@ -3435,6 +3498,14 @@ </message> </context> <context> + <name>CodeStyleChecker</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1133"/> + <source>No message defined for code '{0}'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>CodeStyleCheckerDialog</name> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="14"/> @@ -3451,137 +3522,137 @@ numa entrada a abrirá a janela do editor e posiciona o cursor na respectiva linha e posição.</p></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="50"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="68"/> <source>Exclude Files:</source> <translation>Excluir Ficheiros:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="57"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="75"/> <source>Enter filename patterns of files to be excluded separated by a comma</source> <translation>Introduzir padrões dos nomes dos ficheiros a excluir separados por uma vírgula</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="830"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1090"/> <source>Press to start the code style check run</source> <translation>Pressionar para começar a verficação de estilo do código</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="840"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1254"/> <source>Press to fix the selected issues</source> <translation>Pressionar para corrigir os problemas selecionados</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1113"/> <source>Press to load the default values</source> <translation>Pressionar para carregar os valores padrão</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="873"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1123"/> <source>Press to store the current values as defaults</source> <translation>Pressionar para armazenar os valores atuais como padrão</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="883"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1133"/> <source>Press to reset the default values</source> <translation>Pressionar para repor os valores padrão</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="82"/> <source>Exclude Messages:</source> <translation>Excluir Mensagens:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="71"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="69"/> <source>Enter message codes or categories to be excluded separated by a comma</source> - <translation>Introduzir as categorias ou códigos de mensagens a excluir separados por uma vírgula</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="141"/> + <translation type="obsolete">Introduzir as categorias ou códigos de mensagens a excluir separados por uma vírgula</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="159"/> <source>Press to select the message codes from a list</source> <translation>Pressionar para selecionar os códigos de mensagem desde uma lista</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="85"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="103"/> <source>Included Messages:</source> <translation>Mensagens Incluídas:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="92"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="90"/> <source>Enter message codes or categories to be included separated by a comma</source> - <translation>Introduzir categorias ou códigos de mensagem a incluir separados por uma vírgula</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="106"/> + <translation type="obsolete">Introduzir categorias ou códigos de mensagem a incluir separados por uma vírgula</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="124"/> <source>Fix Issues:</source> <translation>Corrigir Problemas:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="113"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="131"/> <source>Enter message codes of issues to be fixed automatically (leave empty to fix all)</source> <translation>Introduzir códigos de mensagem dos problemas a reparar automaticamente (deixar vazio para reparar tudo)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="127"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="145"/> <source>Don't Fix Issues:</source> <translation>Não Corrigir Problemas:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="134"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="152"/> <source>Enter message codes of issues not to be fixed automatically</source> <translation>Introduzir códigos de mensagem dos problemas a não reparar automaticamente</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="265"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="283"/> <source>Max. Line Length:</source> <translation>Comprimento Max. Linha:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="316"/> <source>Enter the maximum allowed line length (PEP-8: 79 characters)</source> <translation>Introduzir o comprimento máximo de linha permitido (PEP-8: 79 caráteres)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="425"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="443"/> <source>Docstring Type:</source> <translation>Tipo de Docstring:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="450"/> <source>Select the rule set for docstrings</source> <translation>Selecionar o conjunto de regras para docstrings</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="406"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="424"/> <source>Select to allow hanging closing brackets</source> <translation>Selecionar para permitir colocação de parêntesis finais</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="409"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="427"/> <source>Allow hanging closing brackets</source> <translation>Permitir colocação de parêntesis finais</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="150"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="168"/> <source>Select to repeat each message type</source> <translation>Selecionar para repetir cada tipo de mensagem</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="153"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="171"/> <source>Repeat messages</source> <translation>Repetir Mensagens</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="163"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="181"/> <source>Select to fix some issues</source> <translation>Selecionar para corrigir algum problema</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="166"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="184"/> <source>Fix issues automatically</source> <translation>Corrigir problemas automaticamente</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="904"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1167"/> <source><b>Result List</b> <p>This list shows the results of the code style check. Double clicking an entry will open this entry in an editor window and position the cursor at @@ -3592,375 +3663,525 @@ linha e posição.</p></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1183"/> <source>File/Line</source> <translation>Ficheiro/Linha</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="925"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1188"/> <source>Code</source> <translation>Código</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="930"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1193"/> <source>Message</source> <translation>Mensagem</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="80"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="117"/> <source>PEP-257</source> <translation></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="118"/> <source>Eric</source> <translation></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="88"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="144"/> <source>Statistics...</source> <translation>Estatísticas...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="90"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="146"/> <source>Press to show some statistics for the last run</source> <translation>Pressionar para mostrar algumas estatísticas da última execução</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="149"/> <source>Show</source> <translation>Mostrar</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="151"/> <source>Press to show all files containing an issue</source> <translation>Pressionar para mostrar todos os ficheiros que tenham algum problema</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="637"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="241"/> <source>Error: {0}</source> <translation>Erro: {0}</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="244"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="248"/> <source>Fix: {0}</source> <translation>Corrigir: {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="778"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="982"/> <source>No issues found.</source> <translation>Não se encontraram problemas.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1214"/> <source>Shows the progress of the code style check</source> <translation>Mostra o progresso da verificação do estilo do código</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="960"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1223"/> <source>%v/%m Files</source> <translation>%v%m Ficheiros</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="176"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="194"/> <source>Select to show ignored issues</source> <translation>Selecionar para mostrar falhos ignorados</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="179"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="197"/> <source>Show ignored</source> <translation>Mostrar ignorado</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="730"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="927"/> <source>{0} (ignored)</source> <translation>{0} (ignorado)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="622"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="820"/> <source>Preparing files...</source> <translation>A preparar ficheiros...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="698"/> <source>Enter the maximum allowed code complexity (McCabe: 10)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="152"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="214"/> <source>Errors</source> <translation>Erros</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="664"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="859"/> <source>Transferring data...</source> <translation>A transferir dados...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="44"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="42"/> <source>Global Options</source> <translation>Opções Globais</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="233"/> <source>Specific Options</source> <translation>Opções Específicas</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="257"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="275"/> <source>Source Style</source> <translation>Estilo de Fonte</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="419"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="437"/> <source>Documentation Style</source> <translation type="unfinished">Estilo de Documentação</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="455"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="473"/> <source>Coding Line</source> <translation>Linha de Código</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="461"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="479"/> <source>Valid Encodings:</source> <translation>Documentações Válidas:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="468"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="486"/> <source>Enter valid encodings separated by a comma (leave empty to use defaults)</source> <translation>Introduzir codificações válidas separadas por uma vírgula (deixar vazio para usar o padrão)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="478"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="496"/> <source>Copyright</source> <translation>Direitos de Autor</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="484"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="502"/> <source>Min. File Size:</source> <translation>Tamanho Mín. de Ficheiro:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="491"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="509"/> <source>Enter the minimum size a file must have to be checked (0 for all files)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="517"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="535"/> <source>Author:</source> <translation>Autor:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="524"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="542"/> <source>Enter a copyright author name to check for (leave empty to omit this check)</source> <translation>Introduzir o nome do autor dos direitos de autor a verificar (vazio para omitir a verificação)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="534"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="552"/> <source>Future Imports</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="540"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="558"/> <source>Expected Imports:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="654"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="672"/> <source>Code Complexity</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1093"/> + <source>&Start</source> + <translation>&Iniciar</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1257"/> + <source>&Fix Selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1116"/> + <source>&Load Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1126"/> + <source>St&ore Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1136"/> + <source>&Reset Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="985"/> + <source>No files found (check your ignore list).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="584"/> + <source>Ignore Built-ins Assignment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="600"/> + <source>Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="605"/> + <source>Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="615"/> + <source>Press to add a built-in assignment to be ignored</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="625"/> + <source>Press to delete the selected entries</source> + <translation type="unfinished">Pressionar para apagar as entradas selecionadas</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="691"/> + <source>Max. McCabe Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="714"/> + <source>Max. Line Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="721"/> + <source>Enter the maximum complexity (number of nodes) for a line of code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="737"/> + <source>Max. Line Complexity Score:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="744"/> + <source>Enter the maximum allowed median for line complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="350"/> + <source>Blank Lines Before</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="356"/> + <source>Top Level Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="363"/> + <source>Enter the number of blank lines before top level classes and functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="395"/> + <source>Methods and Nested Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="402"/> + <source>Enter the number of blank lines before methods and nested classes or functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="309"/> + <source>Max. Documentation Line Length:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="653"/> + <source>Commented Code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="659"/> + <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="662"/> + <source>Search aggressively</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="763"/> + <source>Type Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="769"/> + <source>Min. Coverage:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="776"/> + <source>Enter the minimum percentage of type annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="779"/> + <source>off</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="782"/> + <source>%</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="805"/> + <source>Max. Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="812"/> + <source>Enter the maximum type annotation complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="32"/> + <source>Configure</source> + <translation type="unfinished">Configurar</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1146"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1244"/> + <source>Press to restart the code style check run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1247"/> + <source>Restart</source> + <translation type="unfinished">Reiniciar</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="48"/> + <source>Categories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="58"/> + <source>Select the categories of checks to be performed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="89"/> + <source>Enter message codes to be excluded separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="110"/> + <source>Enter message codes to be included separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="833"/> - <source>&Start</source> - <translation>&Iniciar</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="843"/> - <source>&Fix Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="866"/> - <source>&Load Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="876"/> - <source>St&ore Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="886"/> - <source>&Reset Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="781"/> - <source>No files found (check your ignore list).</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="566"/> - <source>Ignore Built-ins Assignment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="582"/> - <source>Left</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="587"/> - <source>Right</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="597"/> - <source>Press to add a built-in assignment to be ignored</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="607"/> - <source>Press to delete the selected entries</source> - <translation type="unfinished">Pressionar para apagar as entradas selecionadas</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="673"/> - <source>Max. McCabe Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="696"/> - <source>Max. Line Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="703"/> - <source>Enter the maximum complexity (number of nodes) for a line of code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="719"/> - <source>Max. Line Complexity Score:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="726"/> - <source>Enter the maximum allowed median for line complexity</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="332"/> - <source>Blank Lines Before</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="338"/> - <source>Top Level Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="345"/> - <source>Enter the number of blank lines before top level classes and functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="377"/> - <source>Methods and Nested Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="384"/> - <source>Enter the number of blank lines before methods and nested classes or functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="291"/> - <source>Max. Documentation Line Length:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="635"/> - <source>Commented Code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="641"/> - <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="644"/> - <source>Search aggressively</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="745"/> - <source>Type Annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="751"/> - <source>Min. Coverage:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="758"/> - <source>Enter the minimum percentage of type annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="761"/> - <source>off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="764"/> - <source>%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="787"/> - <source>Max. Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="794"/> - <source>Enter the maximum type annotation complexity</source> + <source>Security Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="839"/> + <source>Hardcoded 'tmp' Directories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="849"/> + <source>Weak Cryptographic Keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="855"/> + <source>DSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="973"/> + <source>High Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="868"/> + <source>Select the bit length below which a DSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="990"/> + <source>Medium Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="885"/> + <source>Select the bit length below which a DSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="911"/> + <source>RSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="924"/> + <source>Select the bit length below which a RSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="941"/> + <source>Select the bit length below which a RSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="967"/> + <source>Elliptic Curves</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="980"/> + <source>Select the bit length below which an Elliptic Curve is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="997"/> + <source>Select the bit length below which an Elliptic Curve is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1026"/> + <source>Enter the names of insecure SSL protocols and methods (one per line)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1033"/> + <source>Insecure SSL Protocols:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1043"/> + <source>Insecure Hashes:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1050"/> + <source>Enter a list of hash methods to be considered insecure separated by comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1057"/> + <source>Select to also check for insecure exception handling for typed exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1060"/> + <source>Check Typed Exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1067"/> + <source>Enter directory names (one per line) to be checked for</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1154"/> + <source><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>CodeStyleCheckerPlugin</name> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> <source>Check Code Style</source> <translation>Verificar Estilo do Código</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>&Code Style...</source> - <translation>Estilo do &Código...</translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="262"/> - <source>Check code style.</source> - <translation>Verificar o Estilo do código.</translation> - </message> - <message> <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>&Code Style...</source> + <translation>Estilo do &Código...</translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="266"/> + <source>Check code style.</source> + <translation>Verificar o Estilo do código.</translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="364"/> <source><b>Check Code Style...</b><p>This checks Python files for compliance to the code style conventions given in various PEPs.</p></source> <translation><b>Verificar Estilo do Código...</b><p>Verifica se os ficheiros Python cumprem com as convenções de estilo de código dadas em vários PEPs.</p></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="110"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="112"/> <source>Python 2 batch check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="126"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="128"/> <source>Python 3 batch check</source> <translation type="unfinished"></translation> </message> @@ -3996,142 +4217,142 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="857"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="861"/> <source>Triple single quotes converted to triple double quotes.</source> <translation>Três aspas simples convertidas a três aspas duplas.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="860"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="864"/> <source>Introductory quotes corrected to be {0}"""</source> <translation>Corrigidas as aspas introdutórias para ser {0}"""</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="867"/> <source>Single line docstring put on one line.</source> <translation>Docstring de linha única posta numa linha.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="866"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="870"/> <source>Period added to summary line.</source> <translation>Ponto adicionado à linha sumário.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="893"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="897"/> <source>Blank line before function/method docstring removed.</source> <translation>Retirada a linha vazia antes da docstring de função/método.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="872"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="876"/> <source>Blank line inserted before class docstring.</source> <translation>Linha branca inserida antes da docstring de classe.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="875"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="879"/> <source>Blank line inserted after class docstring.</source> <translation>Inserida linha vazia depois da docstring de classe.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="878"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="882"/> <source>Blank line inserted after docstring summary.</source> <translation>Inserida linha vazia depois da docstring de sumário.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="881"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="885"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation>Inserida linha vazia depois do último parágrafo da docstring.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="884"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="888"/> <source>Leading quotes put on separate line.</source> <translation>Aspas iniciais postas numa linha separada.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="887"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="891"/> <source>Trailing quotes put on separate line.</source> <translation>Aspas finais postas numa linha separada.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="890"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="894"/> <source>Blank line before class docstring removed.</source> <translation>Retirada linha vazia antes da docstring de classe.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="896"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="900"/> <source>Blank line after class docstring removed.</source> <translation>Retirada linha vazia depois da docstring de classe.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="899"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="903"/> <source>Blank line after function/method docstring removed.</source> <translation>Retirada a linha vazia depois da docstring de função/método.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="902"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="906"/> <source>Blank line after last paragraph removed.</source> <translation>Retirada linha vazia depois do último parágrafo.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="905"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="909"/> <source>Tab converted to 4 spaces.</source> <translation>Tabulação convertida a 4 espaços.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="908"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="912"/> <source>Indentation adjusted to be a multiple of four.</source> <translation>Ajustada a indentação a múltiplos de quatro.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="911"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="915"/> <source>Indentation of continuation line corrected.</source> <translation>Corrigida a indentação da linha de continuação.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="914"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="918"/> <source>Indentation of closing bracket corrected.</source> <translation>Corrigida a indentação de parêntesis de fecho.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="917"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="921"/> <source>Missing indentation of continuation line corrected.</source> <translation>Corrigida falta de indentação na linha de continuação.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="924"/> <source>Closing bracket aligned to opening bracket.</source> <translation>Parêntesis de fecho alinhado com parêntesis de abertura.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="923"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="927"/> <source>Indentation level changed.</source> <translation>Alterado o nível da indentação.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="926"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="930"/> <source>Indentation level of hanging indentation changed.</source> <translation>Alterado o nível da indentação pendente.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="929"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="933"/> <source>Visual indentation corrected.</source> <translation>Indentação visual corrigida.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="944"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="948"/> <source>Extraneous whitespace removed.</source> <translation>Espaço estranho retirado.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="941"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="945"/> <source>Missing whitespace added.</source> <translation>Adicionado espaço branco em falta.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="947"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> <source>Whitespace around comment sign corrected.</source> <translation>Corrigido espaço em volta do símbolo de comentário.</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="955"/> <source>%n blank line(s) inserted.</source> <translation> <numerusform>inserida uma linha vazia.</numerusform> @@ -4139,7 +4360,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="954"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> <source>%n superfluous lines removed</source> <translation> <numerusform>retirada uma linha desnecessária</numerusform> @@ -4147,79 +4368,79 @@ </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="962"/> <source>Superfluous blank lines removed.</source> <translation>Retiradas linhas vazias desnecessárias.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="961"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="965"/> <source>Superfluous blank lines after function decorator removed.</source> <translation>Retiradas linhas vazias desnecessárias após o decorador de função.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="964"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="968"/> <source>Imports were put on separate lines.</source> <translation>Imports foram postos em linhas separadas.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="967"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="971"/> <source>Long lines have been shortened.</source> <translation>Foram encolhidas as linhas compridas.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="970"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="974"/> <source>Redundant backslash in brackets removed.</source> <translation>Retirada barra invertida redundante entre parêntesis.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="976"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="980"/> <source>Compound statement corrected.</source> <translation>Instrução composta corrigida.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="979"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="983"/> <source>Comparison to None/True/False corrected.</source> <translation>Corrigida a comparação a None/True/False.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="982"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="986"/> <source>'{0}' argument added.</source> <translation>Adicionado o argumento '{0}'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="985"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="989"/> <source>'{0}' argument removed.</source> <translation>Removido o argumento '{0}'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="988"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="992"/> <source>Whitespace stripped from end of line.</source> <translation>Eliminado o espaço no fim de linha.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="991"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="995"/> <source>newline added to end of file.</source> <translation>adicionada uma linha nova ao fim do ficheiro.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="994"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="998"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation>Retiradas linhas vazias desnecessárias do fim do ficheiro.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="997"/> - <source>'<>' replaced by '!='.</source> - <translation>'<>' substituido por '!='.</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1001"/> + <source>'<>' replaced by '!='.</source> + <translation>'<>' substituido por '!='.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1005"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation>Não se pode gravar ficheiro! Saltando-o. Motivo: {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1107"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1110"/> <source> no message defined for code '{0}'</source> - <translation> sem mensagem definida para código '{0}'</translation> + <translation type="obsolete"> sem mensagem definida para código '{0}'</translation> </message> </context> <context> @@ -4245,7 +4466,7 @@ <translation>Mensagem</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="60"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="63"/> <source>%n issue(s) found</source> <translation> <numerusform>encontrado um falho</numerusform> @@ -4253,7 +4474,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="67"/> <source>%n issue(s) fixed</source> <translation> <numerusform>um falho reparado</numerusform> @@ -4261,7 +4482,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="66"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="69"/> <source>%n file(s) checked</source> <translation> <numerusform>um ficheiro verificado</numerusform> @@ -4269,7 +4490,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="68"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="71"/> <source>%n file(s) with issues found</source> <translation> <numerusform>encontrado um ficheiro com falhos</numerusform> @@ -4277,13 +4498,21 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="62"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="65"/> <source>%n issue(s) ignored</source> <translation> <numerusform>um falho ignorado</numerusform> <numerusform>%n falhos ignorados</numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="73"/> + <source>%n security issue(s) acknowledged</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> </context> <context> <name>CodingError</name> @@ -4715,22 +4944,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="479"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="482"/> <source>'{0}' is too complex ({1})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="481"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="484"/> <source>source code line is too complex ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="483"/> - <source>overall source code line complexity is too high ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="486"/> + <source>overall source code line complexity is too high ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="489"/> <source>{0}: {1}</source> <translation type="unfinished">{0}: {1}</translation> </message> @@ -8539,242 +8768,242 @@ <context> <name>DocStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="288"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="291"/> <source>module is missing a docstring</source> <translation>falta uma docstring ao modulo</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290"/> - <source>public function/method is missing a docstring</source> - <translation>falta uma docstring ao método/função pública</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293"/> - <source>private function/method may be missing a docstring</source> - <translation>pode faltar uma docstring ao método/função privada</translation> + <source>public function/method is missing a docstring</source> + <translation>falta uma docstring ao método/função pública</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296"/> + <source>private function/method may be missing a docstring</source> + <translation>pode faltar uma docstring ao método/função privada</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299"/> <source>public class is missing a docstring</source> <translation>falta uma docstring à classe pública</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301"/> <source>private class may be missing a docstring</source> <translation>pode faltar uma docstring à classe privada</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="300"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="303"/> <source>docstring not surrounded by """</source> <translation>docstring não envolvida por """</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302"/> - <source>docstring containing \ not surrounded by r"""</source> - <translation>docstring contém \ não envolvida por r"""</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305"/> - <source>docstring containing unicode character not surrounded by u"""</source> - <translation>docstring contém carácteres unicódigo não envolvida por u"""</translation> + <source>docstring containing \ not surrounded by r"""</source> + <translation>docstring contém \ não envolvida por r"""</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308"/> + <source>docstring containing unicode character not surrounded by u"""</source> + <translation>docstring contém carácteres unicódigo não envolvida por u"""</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311"/> <source>one-liner docstring on multiple lines</source> <translation>docstring de uma linha em múltiplas linhas</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313"/> <source>docstring has wrong indentation</source> <translation>docstring tem indentação errada</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> <source>docstring summary does not end with a period</source> <translation>sumário de docstring não termina com um ponto final</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> <source>docstring summary is not in imperative mood (Does instead of Do)</source> <translation>sumário de docstring não está no modo imperativo (Faz em vez de Faça)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320"/> - <source>docstring summary looks like a function's/method's signature</source> - <translation>sumário de docstring parece uma assinatura de método/função</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> - <source>docstring does not mention the return value type</source> - <translation>docstring não menciona o tipo de valor devolvido</translation> + <source>docstring summary looks like a function's/method's signature</source> + <translation>sumário de docstring parece uma assinatura de método/função</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> - <source>function/method docstring is separated by a blank line</source> - <translation>docstring de método/função está separada por uma linha em branco</translation> + <source>docstring does not mention the return value type</source> + <translation>docstring não menciona o tipo de valor devolvido</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> - <source>class docstring is not preceded by a blank line</source> - <translation>docstring de class não antecedida por uma linha em branco</translation> + <source>function/method docstring is separated by a blank line</source> + <translation>docstring de método/função está separada por uma linha em branco</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> + <source>class docstring is not preceded by a blank line</source> + <translation>docstring de class não antecedida por uma linha em branco</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> <source>class docstring is not followed by a blank line</source> <translation>docstring de classe não está seguida por uma linha em branco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> <source>docstring summary is not followed by a blank line</source> <translation>sumário de docstring não seguido por uma linha em branco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341"/> <source>last paragraph of docstring is not followed by a blank line</source> <translation>último parágrafo da docstring não está seguido por uma linha em branco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> - <source>private function/method is missing a docstring</source> - <translation>falta uma docstring ao método/função privado</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> + <source>private function/method is missing a docstring</source> + <translation>falta uma docstring ao método/função privado</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352"/> <source>private class is missing a docstring</source> <translation>falta uma docstring à classe privada</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> - <source>leading quotes of docstring not on separate line</source> - <translation>aspas iniciais da docstring não estão em linha separada</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <source>leading quotes of docstring not on separate line</source> + <translation>aspas iniciais da docstring não estão em linha separada</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> <source>trailing quotes of docstring not on separate line</source> <translation>aspas de fecho da docstring não estão numa linha separada</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="363"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="366"/> <source>docstring does not contain a @return line but function/method returns something</source> <translation>docstring sem linha @return mas a função/método devolve algo</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370"/> <source>docstring contains a @return line but function/method doesn't return anything</source> <translation>docstring com linha @return mas a função/método não devolve nada</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> - <source>docstring does not contain enough @param/@keyparam lines</source> - <translation>docstring sem linhas @param/@keyparam suficientes</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> - <source>docstring contains too many @param/@keyparam lines</source> - <translation>docstring com demasiadas linhas @param/@keyparam</translation> + <source>docstring does not contain enough @param/@keyparam lines</source> + <translation>docstring sem linhas @param/@keyparam suficientes</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> - <source>keyword only arguments must be documented with @keyparam lines</source> - <translation>argumentos de palavra chave devem de estar documentados com linhas @keyparam</translation> + <source>docstring contains too many @param/@keyparam lines</source> + <translation>docstring com demasiadas linhas @param/@keyparam</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> - <source>order of @param/@keyparam lines does not match the function/method signature</source> - <translation>ordem das linhas @param/@keyparam não coincidem com a assinatura de função/método</translation> + <source>keyword only arguments must be documented with @keyparam lines</source> + <translation>argumentos de palavra chave devem de estar documentados com linhas @keyparam</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> + <source>order of @param/@keyparam lines does not match the function/method signature</source> + <translation>ordem das linhas @param/@keyparam não coincidem com a assinatura de função/método</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="386"/> <source>class docstring is preceded by a blank line</source> <translation>docstring de classe está antecedida por uma linha em branco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> <source>class docstring is followed by a blank line</source> <translation>docstring de classe está seguida por uma linha em branco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> - <source>function/method docstring is preceded by a blank line</source> - <translation>docstring de função/método precedida por uma linha em branco</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> + <source>function/method docstring is preceded by a blank line</source> + <translation>docstring de função/método precedida por uma linha em branco</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> <source>function/method docstring is followed by a blank line</source> <translation>docstring de função/método seguida de uma linha em branco</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> - <source>last paragraph of docstring is followed by a blank line</source> - <translation>último parágrafo da docstring seguido de uma linha em branco</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="399"/> + <source>last paragraph of docstring is followed by a blank line</source> + <translation>último parágrafo da docstring seguido de uma linha em branco</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="402"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation>docstring sem linha @exception mas a função/método cria uma exceção</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="403"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="406"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation>docstring contém uma linha @exception mas o método/função não levanta uma exceção</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="426"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="429"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="312"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="315"/> <source>docstring does not contain a summary</source> <translation>docstring não contém um sumário</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>docstring summary does not start with '{0}'</source> <translation>sumário de docstring não começa com '{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="407"/> - <source>raised exception '{0}' is not documented in docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="410"/> - <source>documented exception '{0}' is not raised</source> + <source>raised exception '{0}' is not documented in docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="413"/> - <source>docstring does not contain a @signal line but class defines signals</source> + <source>documented exception '{0}' is not raised</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="416"/> - <source>docstring contains a @signal line but class doesn't define signals</source> + <source>docstring does not contain a @signal line but class defines signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="419"/> - <source>defined signal '{0}' is not documented in docstring</source> + <source>docstring contains a @signal line but class doesn't define signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="422"/> + <source>defined signal '{0}' is not documented in docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="425"/> <source>documented signal '{0}' is not defined</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="354"/> <source>class docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347"/> <source>function docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>module docstring is still a default string</source> <translation type="unfinished"></translation> </message> @@ -10789,12 +11018,12 @@ <translation>Retirar &Tudo</translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Add Entry</source> <translation>Adicionar Entrada</translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Enter the entry to add to the list:</source> <translation>Introduzir entrada a adicionar à lista:</translation> </message> @@ -11263,7 +11492,7 @@ <translation>Desselecionar tudo</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7847"/> + <location filename="../QScintilla/Editor.py" line="7848"/> <source>Check spelling...</source> <translation>Verificação ortográfica...</translation> </message> @@ -11488,7 +11717,7 @@ <translation>Editar ponto de interrupção...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5615"/> + <location filename="../QScintilla/Editor.py" line="5616"/> <source>Enable breakpoint</source> <translation>Habilitar pontos de interrupção</translation> </message> @@ -11663,262 +11892,262 @@ <translation>Autocompletar não está disponivel porque a fonte de autocompletar não está definida.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5618"/> + <location filename="../QScintilla/Editor.py" line="5619"/> <source>Disable breakpoint</source> <translation>Inabilitar ponto de interrupção</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Code Coverage</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Please select a coverage file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>Show Code Coverage Annotations</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6049"/> + <location filename="../QScintilla/Editor.py" line="6050"/> <source>All lines have been covered.</source> <translation>Foram cobertas as linhas todas.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>There is no coverage file available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Profile Data</source> <translation>Dados de Perfil</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Please select a profile file</source> <translation>Escolha um ficheiro de perfil por favor</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>Syntax Error</source> <translation>Erro de Sintaxe</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>No syntax error message available.</source> <translation>Não está disponível a mensagem de erro de sintaxe.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Macro Name</source> <translation>Nome de Macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Select a macro name:</source> <translation>Selecionar um nome de macro:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6754"/> + <location filename="../QScintilla/Editor.py" line="6755"/> <source>Load macro file</source> <translation>Carregar ficheiro macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Macro files (*.macro)</source> <translation>Ficheiros Macro (*.macro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source>Error loading macro</source> <translation>Erro ao carregar macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6768"/> + <location filename="../QScintilla/Editor.py" line="6769"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation><p>O ficheiro macro <b>{0}</b> não se pode ler.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation><p>O ficheiro macro <b>{0}</b> está corrompido.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Save macro file</source> <translation>Gravar ficheiro macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source>Save macro</source> <translation>Gravar macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation><p>O ficheiro macro <b>{0}</b> já existe. Sobreescrever-lo?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source>Error saving macro</source> <translation>Erro ao gravar macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation><p>O ficheiro macro <b>{0}</b> não pode ser escrito.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Start Macro Recording</source> <translation>Iniciar Registo de Macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Macro recording is already active. Start new?</source> <translation>A gravação de macro já está ativada. Começar nova?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Macro Recording</source> <translation>Gravação de Macro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Enter name of the macro:</source> <translation>Introduza o nome de macro:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7009"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>File changed</source> <translation>Ficheiro alterado</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7179"/> + <location filename="../QScintilla/Editor.py" line="7180"/> <source>{0} (ro)</source> <translation></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source>Drop Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> não é um ficheiro.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7341"/> + <location filename="../QScintilla/Editor.py" line="7342"/> <source>Resources</source> <translation>Recursos</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7343"/> + <location filename="../QScintilla/Editor.py" line="7344"/> <source>Add file...</source> <translation>Adicionar Ficheiro...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7345"/> + <location filename="../QScintilla/Editor.py" line="7346"/> <source>Add files...</source> <translation>Adicionar Ficheiros...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7347"/> + <location filename="../QScintilla/Editor.py" line="7348"/> <source>Add aliased file...</source> <translation>Adicionar ficheiro com pseudónimo...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7350"/> + <location filename="../QScintilla/Editor.py" line="7351"/> <source>Add localized resource...</source> <translation>Adicionar recursos localizado...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7354"/> + <location filename="../QScintilla/Editor.py" line="7355"/> <source>Add resource frame</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7373"/> + <location filename="../QScintilla/Editor.py" line="7374"/> <source>Add file resource</source> <translation>Adicionar recurso de ficheiro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7389"/> + <location filename="../QScintilla/Editor.py" line="7390"/> <source>Add file resources</source> <translation>Adicionar recursos de ficheiro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Add aliased file resource</source> <translation>Adicionar recurso de ficheiro com pseudónimo</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Alias for file <b>{0}</b>:</source> <translation>Pseudónimo para o ficheiro <b>{0}</b>:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Package Diagram</source> <translation>Diagrama do Pacote</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Include class attributes?</source> <translation>Incluir atributos de classes?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Imports Diagram</source> <translation>Diagrama de Imports</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Include imports from external modules?</source> <translation>Incluir imports de módulos externos?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Application Diagram</source> <translation>Diagrama da Aplicação</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Include module names?</source> <translation>Incluir nome dos módulos?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7850"/> + <location filename="../QScintilla/Editor.py" line="7851"/> <source>Add to dictionary</source> <translation>Adicionar dicionário</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7852"/> + <location filename="../QScintilla/Editor.py" line="7853"/> <source>Ignore All</source> <translation>Ignorar Tudo</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6614"/> + <location filename="../QScintilla/Editor.py" line="6615"/> <source>Warning: {0}</source> <translation>Aviso: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6621"/> + <location filename="../QScintilla/Editor.py" line="6622"/> <source>Error: {0}</source> <translation>Erro: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7005"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation><br><b>Aviso:</b> Perderá todas as alterações uma vez que o volte a abrir.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>Call-Tips Provider</source> <translation type="unfinished"></translation> </message> @@ -11943,27 +12172,27 @@ <translation>Alteração anterior</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>Sort Lines</source> <translation>Ordenar Linhas</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>The selection contains illegal data for a numerical sort.</source> <translation>A seleção contém dados ilegais para uma ordenação numérica.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>Warning</source> <translation>Aviso</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>No warning messages available.</source> <translation>Não estão disponíveis mensagens de aviso.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6611"/> + <location filename="../QScintilla/Editor.py" line="6612"/> <source>Style: {0}</source> <translation>Estilo: {0}</translation> </message> @@ -11988,7 +12217,7 @@ <translation>Reabrir Com Codificação</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6999"/> + <location filename="../QScintilla/Editor.py" line="7000"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation><p>O ficheiro <b>{0}</b> foi alterado enquanto estava aberto em eric6. Recarregar?</p></translation> </message> @@ -12013,17 +12242,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>Register Mouse Click Handler</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation type="unfinished"></translation> </message> @@ -12053,12 +12282,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source>EditorConfig Properties</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation type="unfinished"></translation> </message> @@ -17797,17 +18026,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="66"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="71"/> <source>Firmware Files (*.img);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="72"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="77"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="76"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="82"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> @@ -17825,12 +18054,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="211"/> + <location filename="../MicroPython/EspDevices.py" line="217"/> <source>Flash MicroPython Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="236"/> + <location filename="../MicroPython/EspDevices.py" line="248"/> <source>Flash Additional Firmware</source> <translation type="unfinished"></translation> </message> @@ -17855,7 +18084,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>'esptool write_flash' Output</source> <translation type="unfinished"></translation> </message> @@ -17865,47 +18094,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>Show Chip ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>Show Flash ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>Show MAC Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>'esptool read_flash' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>'esptool chip_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>'esptool flash_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>'esptool read_mac' Output</source> <translation type="unfinished"></translation> </message> @@ -17938,20 +18167,35 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="72"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="96"/> <source>Address:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="79"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="103"/> <source>Enter the flash addres in the hexadecimal form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="43"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="51"/> <source>Firmware Files (*.bin);;All Files (*)</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="75"/> + <source>Flash Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="82"/> + <source>Select the flash mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="89"/> + <source>Leave empty to use the default mode.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ExceptionLogger</name> @@ -41427,6 +41671,14 @@ </message> </context> <context> + <name>IgnoredDevicesDialog</name> + <message> + <location filename="../MicroPython/IgnoredDevicesDialog.ui" line="14"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImageMarkupDialog</name> <message> <location filename="../QScintilla/MarkupProviders/ImageMarkupDialog.py" line="52"/> @@ -47296,27 +47548,27 @@ <context> <name>MicroPythonDevice</name> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="214"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="223"/> <source>Unsupported Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="224"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="233"/> <source>REPL is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="243"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="252"/> <source>Plotter is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="262"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="271"/> <source>Running scripts is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="282"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="291"/> <source>File Manager is not supported by this device.</source> <translation type="unfinished"></translation> </message> @@ -47874,7 +48126,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="460"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="493"/> <source>Press to connect the selected device</source> <translation type="unfinished"></translation> </message> @@ -47902,32 +48154,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="430"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="463"/> <source>Clear</source> <translation type="unfinished">Limpar</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="432"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="465"/> <source>Copy</source> <translation type="unfinished">Copiar</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="433"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="466"/> <source>Paste</source> <translation type="unfinished">Colar</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="455"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="488"/> <source>Press to disconnect the current device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>No device attached</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -47936,212 +48188,212 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source>Start REPL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source>Serial Device Connect</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source>Run Script</source> <translation type="unfinished">Executar Script</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="921"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="954"/> <source>There is no editor open. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="929"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="962"/> <source>The current editor does not contain a script. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source><p>Cannot run script.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Open Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Python3 Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source>Start Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>Unsaved Chart Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>The chart contains unsaved data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source>Start File Manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1136"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169"/> <source>Show Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1139"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1172"/> <source>Show Implementation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source>Synchronize Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1147"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1180"/> <source>Show Device Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1150"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1183"/> <source>Show Local Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1461"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1497"/> <source>Compile Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1481"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1517"/> <source>Compile Current Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1188"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224"/> <source><h3>Device Version Information</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1197"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1233"/> <source>No version information available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1199"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1235"/> <source>Device Version Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1258"/> <source>unknown</source> <translation type="unfinished">desconhecido</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source>Device Implementation Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source><p>The time of the connected device was synchronized with the local time.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1272"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308"/> <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1280"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1316"/> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1294"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1330"/> <source>Device Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source>Local Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source>Error handling device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1413"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1449"/> <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1467"/> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished">Ficheiros Python (*.py);;Ficheiros Todos (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1441"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1477"/> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1451"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1487"/> <source>'mpy-cross' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1474"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1510"/> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished"></translation> </message> @@ -48156,50 +48408,70 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1018"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051"/> <source>µPy Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1098"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1131"/> <source>µPy Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1174"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1207"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1178"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1214"/> <source>Configure</source> <translation type="unfinished">Configurar</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1153"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186"/> <source>Show Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1170"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1203"/> <source>Download Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source>Date and Time</source> <translation type="unfinished">Data e Hora</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1333"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1369"/> <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>Unknown MicroPython Device</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:eric-bugs@eric-ide.python-projects.org"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>{0} ({1:04x}/{2:04x})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1211"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -49000,463 +49272,463 @@ <context> <name>MiscellaneousChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="492"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> <source>coding magic comment not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> - <source>unknown encoding ({0}) found in coding magic comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="498"/> - <source>copyright notice not present</source> + <source>unknown encoding ({0}) found in coding magic comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="501"/> + <source>copyright notice not present</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> <source>copyright notice contains invalid author</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="702"/> - <source>found {0} formatter</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> - <source>format string does contain unindexed parameters</source> + <source>found {0} formatter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> - <source>docstring does contain unindexed parameters</source> + <source>format string does contain unindexed parameters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> - <source>other string does contain unindexed parameters</source> + <source>docstring does contain unindexed parameters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> - <source>format call uses too large index ({0})</source> + <source>other string does contain unindexed parameters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> - <source>format call uses missing keyword ({0})</source> + <source>format call uses too large index ({0})</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> - <source>format call uses keyword arguments but no named entries</source> + <source>format call uses missing keyword ({0})</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> - <source>format call uses variable arguments but no numbered entries</source> + <source>format call uses keyword arguments but no named entries</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> - <source>format call uses implicit and explicit indexes together</source> + <source>format call uses variable arguments but no numbered entries</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> - <source>format call provides unused index ({0})</source> + <source>format call uses implicit and explicit indexes together</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> + <source>format call provides unused index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> <source>format call provides unused keyword ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="751"/> - <source>expected these __future__ imports: {0}; but only got: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> + <source>expected these __future__ imports: {0}; but only got: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> <source>expected these __future__ imports: {0}; but got none</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="761"/> - <source>print statement found</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> + <source>print statement found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="767"/> <source>one element tuple found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="800"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="803"/> <source>{0}: {1}</source> <translation type="unfinished">{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="507"/> <source>"{0}" is a Python builtin and is being shadowed; consider renaming the variable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="508"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="511"/> <source>"{0}" is used as an argument and thus shadows a Python builtin; consider renaming the argument</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="512"/> - <source>unnecessary generator - rewrite as a list comprehension</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="515"/> - <source>unnecessary generator - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a list comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="518"/> - <source>unnecessary generator - rewrite as a dict comprehension</source> + <source>unnecessary generator - rewrite as a set comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="521"/> - <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="524"/> + <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> <source>unnecessary list comprehension - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> <source>unnecessary list comprehension - "{0}" can take a generator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="770"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> <source>mutable default argument of type {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> <source>sort keys - '{0}' should be before '{1}'</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> + <source>logging statement uses '%'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> + <source>logging statement uses f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="750"/> + <source>logging statement uses 'warn' instead of 'warning'</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> - <source>logging statement uses '%'</source> + <source>logging statement uses string.format()</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> - <source>logging statement uses f-string</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> - <source>logging statement uses 'warn' instead of 'warning'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> - <source>logging statement uses string.format()</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> <source>logging statement uses '+'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="760"/> <source>gettext import with alias _ found: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="648"/> - <source>Python does not support the unary prefix increment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> - <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> - <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> - <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> - <source>Python 3 does not include '.iter*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> - <source>Python 3 does not include '.view*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> - <source>'.next()' does not exist in Python 3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> - <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> - <source>mutable default argument of function call '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> - <source>using .strip() with multi-character strings is misleading</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> - <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> - <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <source>Python does not support the unary prefix increment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> + <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="663"/> + <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> + <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> + <source>Python 3 does not include '.iter*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> + <source>Python 3 does not include '.view*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> + <source>'.next()' does not exist in Python 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="700"/> + <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="776"/> - <source>None should not be added at any return if function has no return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="780"/> - <source>an explicit value at every return should be added if function has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="784"/> - <source>an explicit return at the end of the function should be added if it has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="788"/> - <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <source>mutable default argument of function call '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> + <source>using .strip() with multi-character strings is misleading</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="681"/> + <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="671"/> + <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <source>None should not be added at any return if function has no return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="783"/> + <source>an explicit value at every return should be added if function has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="787"/> + <source>an explicit return at the end of the function should be added if it has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="791"/> + <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> <source>do not call assert False since python -O removes these calls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="672"/> - <source>unncessary f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="675"/> + <source>unncessary f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> <source>cannot use 'self.__class__' as first argument of 'super()' call</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> - <source>do not call getattr with a constant attribute value</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> + <source>do not call getattr with a constant attribute value</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>do not call setattr with a constant attribute value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="796"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="799"/> <source>commented code lines should be removed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="792"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="795"/> <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="559"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="562"/> <source>use of 'datetime.datetime()' without 'tzinfo' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="566"/> <source>use of 'datetime.datetime.today()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> <source>use of 'datetime.datetime.utcnow()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="571"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="574"/> <source>use of 'datetime.datetime.utcfromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(, tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>use of 'datetime.datetime.now()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> <source>use of 'datetime.datetime.fromtimestamp()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="583"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="586"/> <source>use of 'datetime.datetime.strptime()' should be followed by '.replace(tzinfo=)'</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> + <source>use of 'datetime.date()' should be avoided. +Use 'datetime.datetime(, tzinfo=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> + <source>use of 'datetime.date.today()' should be avoided. +Use 'datetime.datetime.now(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="601"/> + <source>use of 'datetime.date.fromtimestamp()' should be avoided. +Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> + <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> - <source>use of 'datetime.date()' should be avoided. -Use 'datetime.datetime(, tzinfo=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> - <source>use of 'datetime.date.today()' should be avoided. -Use 'datetime.datetime.now(tz=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="598"/> - <source>use of 'datetime.date.fromtimestamp()' should be avoided. -Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> + <source>use of 'datetime.date.fromordinal()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> - <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> - <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> - <source>use of 'datetime.date.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> <source>use of 'datetime.date.fromisoformat()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> <source>unnecessary {0} call - rewrite as a literal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> - <source>unnecessary {0} literal - rewrite as a {1} literal</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="536"/> - <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> + <source>unnecessary {0} literal - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="539"/> - <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> + <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="542"/> - <source>unnecessary list call - remove the outer call to list()</source> + <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="545"/> - <source>unnecessary list comprehension - "in" can take a generator</source> + <source>unnecessary list call - remove the outer call to list()</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="548"/> - <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <source>unnecessary list comprehension - "in" can take a generator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="551"/> + <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>unnecessary {0} passed to list() - remove the outer call to {1}()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="613"/> - <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="616"/> - <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="619"/> + <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="622"/> <source>'sys.version' compared to string (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> - <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> - <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="629"/> + <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="632"/> <source>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="633"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> <source>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="637"/> - <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="640"/> + <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="643"/> <source>'sys.version' compared to string (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>'sys.version[:1]' referenced (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> @@ -49912,72 +50184,72 @@ <context> <name>NamingStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> <source>class names should use CapWords convention</source> <translation>nomes de classes devem usar a convenção de Maiúsculas</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> - <source>function name should be lowercase</source> - <translation>nome de função deve estar em minúsculas</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="438"/> - <source>argument name should be lowercase</source> - <translation>nome do argumento deve ser em minúsculas</translation> + <source>function name should be lowercase</source> + <translation>nome de função deve estar em minúsculas</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> - <source>first argument of a class method should be named 'cls'</source> - <translation type="unfinished"></translation> + <source>argument name should be lowercase</source> + <translation>nome do argumento deve ser em minúsculas</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="444"/> - <source>first argument of a method should be named 'self'</source> - <translation>primeiro argumento de um método deve chamar-se 'self'</translation> + <source>first argument of a class method should be named 'cls'</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> + <source>first argument of a method should be named 'self'</source> + <translation>primeiro argumento de um método deve chamar-se 'self'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>first argument of a static method should not be named 'self' or 'cls</source> <translation>primeiro argumento de um método estático não deve chamar-se 'self' ou 'cls</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="451"/> - <source>module names should be lowercase</source> - <translation>nomes de módulos devem estar em minúsculas</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="454"/> - <source>package names should be lowercase</source> - <translation>nomes de pacotes devem ser em minúsculas</translation> + <source>module names should be lowercase</source> + <translation>nomes de módulos devem estar em minúsculas</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="457"/> - <source>constant imported as non constant</source> - <translation type="unfinished"></translation> + <source>package names should be lowercase</source> + <translation>nomes de pacotes devem ser em minúsculas</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="460"/> - <source>lowercase imported as non lowercase</source> + <source>constant imported as non constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="463"/> - <source>camelcase imported as lowercase</source> + <source>lowercase imported as non lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="466"/> - <source>camelcase imported as constant</source> + <source>camelcase imported as lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="469"/> - <source>variable in function should be lowercase</source> - <translation>variável na função deve estar em minúsculas</translation> + <source>camelcase imported as constant</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="472"/> + <source>variable in function should be lowercase</source> + <translation>variável na função deve estar em minúsculas</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="475"/> <source>names 'l', 'O' and 'I' should be avoided</source> <translation>nomes 'I', 'O' e 'l' devem ser evitados</translation> </message> @@ -50031,50 +50303,50 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="201"/> <source>SSL Certificate Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> - <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="205"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="212"/> <source>&Permanent accept</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="207"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="214"/> <source>&Temporary accept</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="209"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="216"/> <source>&Reject</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="243"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="284"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"><b>Introduzir nome de usuário e senha para '{0}, domínio '{1}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="247"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="288"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"><b>Introduzir nome de usuário e senha para '{0}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="295"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="336"/> <source>Authentication required</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="296"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="337"/> <source>Authentication is required to access:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="202"/> + <source><b>{0}</b><p>The host <b>{1}</b> you are trying to access has errors in the SSL certificate.</p><ul><li>{2}</li></ul><p>Would you like to make an exception?</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>NetworkPage</name> @@ -51452,6 +51724,41 @@ <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../PipInterface/Pip.py" line="679"/> + <source>Cache Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="704"/> + <source>List Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="694"/> + <source>Enter a file pattern (empty for all):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="728"/> + <source>Remove Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="720"/> + <source>Enter a file pattern:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="751"/> + <source>Purge Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="744"/> + <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PipDialog</name> @@ -52243,7 +52550,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/> <source>Install Packages</source> <translation type="unfinished"></translation> </message> @@ -52268,28 +52575,48 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="942"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="955"/> <source>Edit User Configuration...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="945"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="958"/> <source>Edit Environment Configuration...</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="963"/> + <source>Configure...</source> + <translation type="unfinished">Configurar...</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>Edit Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>No valid configuration path determined. Aborting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="941"/> + <source>Show Cache Info...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="944"/> + <source>Show Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="947"/> + <source>Remove Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../PipInterface/PipPackagesWidget.py" line="950"/> - <source>Configure...</source> - <translation type="unfinished">Configurar...</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>Edit Configuration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>No valid configuration path determined. Aborting</source> + <source>Purge Cache...</source> <translation type="unfinished"></translation> </message> </context> @@ -53583,17 +53910,17 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1640"/> + <location filename="../Preferences/__init__.py" line="1645"/> <source>Export Preferences</source> <translation>Exportar Preferências</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Import Preferences</source> <translation>Importar Preferências</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Properties File (*.ini);;All Files (*)</source> <translation>Ficheiro de Propriedades (*.ini);;Ficheiros Todos (*)</translation> </message> @@ -62621,22 +62948,22 @@ <translation><font color="#FF0000"><b>Nota:</b> Estas definições estarão activadas a próxima vez que arranque a aplicação.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="90"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="85"/> <source>Qt Tools</source> <translation>Ferramentas Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="123"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="118"/> <source>The tool executable is composed of the prefix, the tool name and the postfix. For win, the extension is added automatically.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="169"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="164"/> <source>This gives an example of the complete tool name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="172"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="167"/> <source>designer</source> <translation type="unfinished"></translation> </message> @@ -62651,62 +62978,52 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> - <source><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="135"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="130"/> <source>Qt-Prefix:</source> <translation>Prefixo de Qt:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="137"/> <source>Enter the prefix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="144"/> <source>Qt-Postfix:</source> <translation>Sufixo de Qt:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="151"/> <source>Enter the postfix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="221"/> <source>Indent Width:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="233"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="228"/> <source>Select the indent width (default: 4)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="327"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="322"/> <source>Generate imports relative to '.'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="296"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="291"/> <source>Tools Directory:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="114"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="109"/> <source>Enter the path of the Qt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="211"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="206"/> <source>Enter the path of the PyQt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -62716,7 +63033,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="312"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="307"/> <source>Enter the path of the PySide2 tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -62726,35 +63043,40 @@ <translation type="unfinished">Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="187"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="182"/> <source>PyQt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="220"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="215"/> <source>pyuic Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="272"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="267"/> <source>Select to generate extra code to test and display the form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="275"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="270"/> <source>Generate Extra Test Code</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="288"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="283"/> <source>PySide2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="316"/> <source>pyside2-uic Options</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> + <source><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Queues</name> @@ -64540,6 +64862,334 @@ </message> </context> <context> + <name>Security</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="16"/> + <source>Use of 'assert' detected. The enclosed code will be removed when compiling to optimised byte code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="22"/> + <source>Use of 'exec' detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="27"/> + <source>'chmod' setting a permissive mask {0} on file ({1}).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="32"/> + <source>Possible binding to all interfaces.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="43"/> + <source>Possible hardcoded password: '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="48"/> + <source>Probable insecure usage of temp file/directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="53"/> + <source>Try, Except, Pass detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="56"/> + <source>Try, Except, Continue detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="61"/> + <source>A Flask app appears to be run with debug=True, which exposes the Werkzeug debugger and allows the execution of arbitrary code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="67"/> + <source>Pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="71"/> + <source>Deserialization with the marshal module is possibly dangerous.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="74"/> + <source>Use of insecure MD2, MD4, MD5, or SHA1 hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="77"/> + <source>Use of insecure cipher '{0}'. Replace with a known secure cipher such as AES.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="81"/> + <source>Use of insecure cipher mode '{0}'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="84"/> + <source>Use of insecure and deprecated function (mktemp).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="87"/> + <source>Use of possibly insecure function - consider using safer ast.literal_eval.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="91"/> + <source>Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="95"/> + <source>Use of HTTPSConnection on older versions of Python prior to 2.7.9 and 3.4.3 do not provide security, see https://wiki.openstack.org/wiki/OSSN/OSSN-0033</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="100"/> + <source>Audit url open for permitted schemes. Allowing use of file:/ or custom schemes is often unexpected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="104"/> + <source>Standard pseudo-random generators are not suitable for security/cryptographic purposes.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="108"/> + <source>Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="142"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="147"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="152"/> + <source>FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="156"/> + <source>The input method in Python 2 will read from standard input, evaluate and run the resulting string as Python source code. This is similar, though in many ways worse, than using eval. On Python 2, use raw_input instead, input is safe in Python 3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="162"/> + <source>By default, Python will create a secure, verified SSL context for use in such classes as HTTPSConnection. However, it still allows using an insecure context via the _create_unverified_context that reverts to the previous behavior that does not validate certificates or perform hostname checks.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="169"/> + <source>Use of os.tempnam() and os.tmpnam() is vulnerable to symlink attacks. Consider using tmpfile() instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="175"/> + <source>Use of insecure {0} hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="180"/> + <source>A telnet-related module is being imported. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="184"/> + <source>A FTP-related module is being imported. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="192"/> + <source>Consider possible security implications associated with the '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="216"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="221"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="226"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Use defused.xmlrpc.monkey_patch() function to monkey-patch xmlrpclib and mitigate XML vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="231"/> + <source>Consider possible security implications associated with '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="235"/> + <source>The pyCrypto library and its module '{0}' are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="242"/> + <source>'requests' call with verify=False disabling SSL certificate checks, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="248"/> + <source>'ssl.wrap_socket' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="252"/> + <source>'SSL.Context' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="256"/> + <source>Function call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="260"/> + <source>Function definition identified with insecure SSL/TLS protocol version by default, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="264"/> + <source>'ssl.wrap_socket' call with no SSL/TLS protocol version specified, the default 'SSLv23' could be insecure, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="270"/> + <source>{0} key sizes below {1:d} bits are considered breakable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="275"/> + <source>Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary objects. Consider 'yaml.safe_load()'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="281"/> + <source>Paramiko call with policy set to automatically trust the unknown host key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="287"/> + <source>Possible shell injection via 'Paramiko' call, check inputs are properly sanitized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="291"/> + <source>'subprocess' call with shell=True seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="295"/> + <source>'subprocess' call with shell=True identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="298"/> + <source>'subprocess' call - check for execution of untrusted input.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="301"/> + <source>Function call with shell=True parameter identified, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="305"/> + <source>Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="309"/> + <source>Starting a process with a shell, possible injection detected, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="313"/> + <source>Starting a process without a shell.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="316"/> + <source>Starting a process with a partial executable path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="321"/> + <source>Possible SQL injection vector through string-based query construction.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="327"/> + <source>Possible wildcard injection in call: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="332"/> + <source>Use of 'extra()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="335"/> + <source>Use of 'RawSQL()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="340"/> + <source>Using jinja2 templates with 'autoescape=False' is dangerous and can lead to XSS. Use 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="345"/> + <source>By default, jinja2 sets 'autoescape' to False. Consider using 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="352"/> + <source>Mako templates allow HTML/JS rendering by default and are inherently open to XSS attacks. Ensure variables in all templates are properly sanitized via the 'n', 'h' or 'x' flags (depending on context). For example, to HTML escape the variable 'data' do ${{ data |h }}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="360"/> + <source>Potential XSS on 'mark_safe()' function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="365"/> + <source>Possible hardcoded AWS access key ID: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="368"/> + <source>Possible hardcoded AWS secret access key: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="373"/> + <source>{0}: {1}</source> + <translation type="unfinished">{0}: {1}</translation> + </message> +</context> +<context> <name>SecurityPage</name> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="37"/> @@ -64581,6 +65231,21 @@ <source><b>Configure security settings</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="96"/> + <source>Certificate Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="102"/> + <source>Select to always reject web pages with certificate issues</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="105"/> + <source>Always reject URLs with certificate errors</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SendRefererWhitelistDialog</name> @@ -66535,22 +67200,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="168"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="171"/> <source>Media</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="184"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="187"/> <source>Image</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="189"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="192"/> <source>Image Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="197"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="200"/> <source><b>Preview</b></source> <translation type="unfinished"></translation> </message> @@ -66560,32 +67225,32 @@ <translation type="obsolete">Segurança</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="216"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="238"/> <source>Preview not available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="243"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="265"/> <source>Copy Image Location to Clipboard</source> <translation type="unfinished">Copiar Localização da Imagem para a Área de Transferência</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="246"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="268"/> <source>Copy Image Name to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source>Save Image</source> <translation>Gravar Imagem</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="299"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="321"/> <source>All Files (*)</source> <translation>Ficheiros Todos (*)</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source><p>Cannot write to file <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> @@ -66600,25 +67265,30 @@ <translation type="obsolete">Rota:</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="229"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="251"/> <source>Loading...</source> <translation type="unfinished">Carregando...</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="287"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="309"/> <source><p>This preview is not available.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="76"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="97"/> <source><b>Connection is encrypted.</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="80"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="102"/> <source><b>Connection is not encrypted.</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="87"/> + <source><b>Connection is encrypted but may be insecure.</b></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SiteInfoWidget</name> @@ -66628,60 +67298,65 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="62"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="69"/> <source>Your connection to this site is <b>secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="67"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="74"/> <source>Your connection to this site is <b>not secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="82"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="89"/> <source>This is your <b>{0}.</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="88"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="95"/> <source>You have <b>never</b> visited this site before.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="97"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="104"/> <source>first</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="99"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="106"/> <source>second</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="101"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="108"/> <source>third</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="102"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="109"/> <source>This is your <b>{0}</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="123"/> - <source>Register as <b>{0}</b> links handler.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="130"/> + <source>Register as <b>{0}</b> links handler.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="137"/> <source>Register</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="147"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="154"/> <source>More...</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="63"/> + <source>Your connection to this site <b>may not be secure</b>.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SnapWidget</name> @@ -79125,7 +79800,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6327"/> + <location filename="../UI/UserInterface.py" line="6294"/> <source>Export Keyboard Shortcuts</source> <translation>Exportar Atalhos de Teclado</translation> </message> @@ -79145,7 +79820,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Import Keyboard Shortcuts</source> <translation>Importar Atalhos de Teclado</translation> </message> @@ -79390,7 +80065,7 @@ <translation>Definições</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Help</source> <translation>Ajuda</translation> </message> @@ -79445,7 +80120,7 @@ <translation type="obsolete"><h3>Números de Versão</h3><table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7324"/> + <location filename="../UI/UserInterface.py" line="7291"/> <source></table></source> <translation></translation> </message> @@ -79502,208 +80177,208 @@ <message> <location filename="../UI/UserInterface.py" line="5062"/> <source>Qt 3 support</source> - <translation>Suporte Qt3</translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <translation type="obsolete">Suporte Qt3</translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5210"/> <source>Problem</source> <translation>Problema</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source><p>The file <b>{0}</b> does not exist or is zero length.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source>Process Generation Error</source> <translation>Erro na Criação de Processo</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="4962"/> + <location filename="../UI/UserInterface.py" line="4935"/> <source><p>Could not start Qt-Designer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5034"/> + <location filename="../UI/UserInterface.py" line="5005"/> <source><p>Could not start Qt-Linguist.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5087"/> + <location filename="../UI/UserInterface.py" line="5049"/> <source><p>Could not start Qt-Assistant.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source> <translation>Não há nenhum visor personalizado selecionado. Por favor use a caixa de diálogo das preferências para escolher um.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5129"/> + <location filename="../UI/UserInterface.py" line="5096"/> <source><p>Could not start custom viewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5149"/> + <location filename="../UI/UserInterface.py" line="5116"/> <source><p>Could not start the help viewer.<br>Ensure that it is available as <b>hh</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5199"/> + <location filename="../UI/UserInterface.py" line="5166"/> <source><p>Could not start UI Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5256"/> + <location filename="../UI/UserInterface.py" line="5223"/> <source><p>Could not start Translation Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5279"/> + <location filename="../UI/UserInterface.py" line="5246"/> <source><p>Could not start SQL Browser.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>External Tools</source> <translation>Ferramentas Externas</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5374"/> + <location filename="../UI/UserInterface.py" line="5341"/> <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>No toolgroup entry '{0}' found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5422"/> + <location filename="../UI/UserInterface.py" line="5389"/> <source>Starting process '{0} {1}'. </source> <translation>A iniciar processo '{0} {1}'. </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source><p>Could not start the tool entry <b>{0}</b>.<br>Ensure that it is available as <b>{1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5516"/> + <location filename="../UI/UserInterface.py" line="5483"/> <source>Process '{0}' has exited. </source> <translation>Processo '{0}' saiu.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source>Documentation Missing</source> <translation>Falta a Documentação</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source><p>The documentation starting point "<b>{0}</b>" could not be found.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source>Documentation</source> <translation>Documentação</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5727"/> + <location filename="../UI/UserInterface.py" line="5694"/> <source><p>The PyQt4 documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Keyboard shortcut file (*.e4k)</source> <translation>Ficheiro de atalhos de teclado (*.e4k)</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source>Save tasks</source> <translation>Gravar tarefas</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source>Read tasks</source> <translation>Ler tarefas</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6646"/> + <location filename="../UI/UserInterface.py" line="6613"/> <source>Save session</source> <translation>Guargar sessão</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6584"/> + <location filename="../UI/UserInterface.py" line="6551"/> <source><p>The session file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source>Read session</source> <translation>Sessão de leitura</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source><p>The session file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source>Drop Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> não é um ficheiro.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>&Cancel</source> <translation>&Cancelar</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7108"/> + <location filename="../UI/UserInterface.py" line="7075"/> <source>Trying host {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>Update available</source> <translation>Atualização disponível</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Error during updates check</source> <translation>Erro na verificação de atualizações</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Could not perform updates check.</source> <translation>Não procurar atualizações.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7309"/> + <location filename="../UI/UserInterface.py" line="7276"/> <source><h3>Available versions</h3><table></source> <translation><h3>Versões Disponíveis</h3><table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>First time usage</source> <translation>Usado a primeira vez</translation> </message> @@ -79743,27 +80418,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>Error getting versions information</source> <translation>Erro na obtenção da informação de versões</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7167"/> + <location filename="../UI/UserInterface.py" line="7134"/> <source>The versions information could not be downloaded. Please go online and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Open Browser</source> <translation>Abrir Navegador</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Could not start a web browser</source> <translation>Não se pôde iniciar um navegador web</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -79849,12 +80524,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5351"/> + <location filename="../UI/UserInterface.py" line="5318"/> <source><p>Could not start Snapshot tool.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7380"/> + <location filename="../UI/UserInterface.py" line="7347"/> <source>Select Workspace Directory</source> <translation>Selecionar o Diretório de Trabalho</translation> </message> @@ -80219,7 +80894,7 @@ <translation>Abrir a Documentação de PyQt5</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5789"/> + <location filename="../UI/UserInterface.py" line="5756"/> <source><p>The PyQt5 documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> @@ -80229,7 +80904,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>%v/%m</source> <translation></translation> </message> @@ -80316,30 +80991,30 @@ <message> <location filename="../UI/UserInterface.py" line="5062"/> <source>Qt v.3 is not supported by eric6.</source> - <translation>Qt v.3 não está suportado por eric6.</translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="7103"/> + <translation type="obsolete">Qt v.3 não está suportado por eric6.</translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="7070"/> <source>Version Check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>The update to <b>{0}</b> of eric6 is available at <b>{1}</b>. Would you like to get it?</source> <translation>Atualização a <b>{0}</b> de eric6 já está disponível em <b>{1}</b>. Quere-a descarregar?</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>Eric6 is up to date</source> <translation>Eric6 está atualizado</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>You are using the latest version of eric6</source> <translation>Utiliza a última versão do eric6</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>eric6 has not been configured yet. The configuration dialog will be started.</source> <translation>eric6 ainda não foi configurado. A caixa de diálogo de configuração vai iniciar-se.</translation> </message> @@ -80359,7 +81034,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7119"/> + <location filename="../UI/UserInterface.py" line="7086"/> <source>The versions information cannot not be downloaded because you are <b>offline</b>. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -80404,7 +81079,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>Load session</source> <translation type="unfinished">Carregar sessão</translation> </message> @@ -80419,17 +81094,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>eric6 Session Files (*.e5s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>Crash Session found!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>A session file of a crashed session was found. Shall this session be restored?</source> <translation type="unfinished"></translation> </message> @@ -80444,17 +81119,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>Update Check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7244"/> + <location filename="../UI/UserInterface.py" line="7211"/> <source>You are using a snapshot release of eric6. A more up-to-date stable release might be available.</source> <translation type="unfinished"></translation> </message> @@ -80509,7 +81184,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source><p>The PySide{0} documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> @@ -80585,17 +81260,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source>Start Web Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6015"/> + <location filename="../UI/UserInterface.py" line="5982"/> <source>The eric6 web browser could not be started.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source><p>The eric6 web browser is not started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> @@ -80694,6 +81369,21 @@ <source><h2>Version Numbers</h2><table></source> <translation type="unfinished"><h3>Números de Versão</h3><table> {2>?} {2>?}</translation> </message> + <message> + <location filename="../UI/UserInterface.py" line="4944"/> + <source><p>Could not find the Qt-Designer executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5014"/> + <source><p>Could not find the Qt-Linguist executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5058"/> + <source><p>Could not find the Qt-Assistant executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>UserPropertiesDialog</name> @@ -86463,37 +87153,37 @@ <translation type="obsolete">Selecionar a cor de fundo para as URL seguras.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="324"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="402"/> <source>Images</source> <translation type="unfinished">Imagens</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="408"/> <source>Select to load images</source> <translation type="unfinished">Marcar para carregar imagens</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="333"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="411"/> <source>Load images</source> <translation type="unfinished">Carregar Imagens</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="343"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="421"/> <source>Style Sheet</source> <translation type="unfinished">Folha de Estilo</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="349"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="427"/> <source>User Style Sheet:</source> <translation type="unfinished">Folha de Estilo de Usuário:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="365"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="443"/> <source>Enter the file name of a user style sheet</source> <translation type="unfinished">Introduzir o nome de ficheiro de uma folha de estilo do usuário</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="375"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="453"/> <source>Tabs</source> <translation type="unfinished"></translation> </message> @@ -86503,12 +87193,12 @@ <translation type="obsolete">Apenas mostrar um botão de fechar em vez de um por separador</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="381"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="459"/> <source>Select to issue a warning, if multiple tabs are about to be closed</source> <translation type="unfinished">Selecionar para que avise quanto esteja prestes a fechar múltiplos separadores</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="384"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="462"/> <source>Warn, if multiple tabs are about to be closed</source> <translation type="unfinished">Avisar se está prestes a fechar múltiplos separadores</translation> </message> @@ -86528,37 +87218,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="426"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="504"/> <source><font color="#FF0000"><b>Note:</b> All settings below are activated at the next startup of the application.</font></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="433"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="511"/> <source>Toolbars</source> <translation type="unfinished">Barras de Ferramentas</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="439"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="517"/> <source>Select to show toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="520"/> <source>Show Toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="394"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="472"/> <source>Scrollbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="400"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="478"/> <source>Select to show scrollbars. Note: Scrolling is possible even without them.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="403"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="481"/> <source>Show Scrollbars</source> <translation type="unfinished"></translation> </message> @@ -86568,13 +87258,48 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="304"/> + <source>Select the background color for secure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> - <source>Background color of secure URLs:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="298"/> - <source>Select the background color for secure URLs.</source> + <source>URL Entry Background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="291"/> + <source>Secure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="327"/> + <source>Insecure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="340"/> + <source>Select the background color for insecure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="350"/> + <source>Malicious URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="363"/> + <source>Select the background color for malicious URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="373"/> + <source>Private Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="386"/> + <source>Select the background color for URLs in private mode.</source> <translation type="unfinished"></translation> </message> </context> @@ -87847,27 +88572,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="892"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="913"/> <source>Loading...</source> <translation type="unfinished">Carregando...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="912"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="922"/> <source>Finished loading</source> <translation type="unfinished">Acabou de carregar</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="914"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="889"/> <source>Failed to load</source> <translation type="unfinished">Falhou ao carregar</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window?</source> <translation type="unfinished">Tem a certeza de que quer fechar a janela?</translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation type="unfinished"> @@ -87878,22 +88603,22 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="962"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="970"/> <source>&Quit</source> <translation type="unfinished">Sai&r</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="965"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="973"/> <source>C&lose Current Tab</source> <translation type="unfinished">F&echar o Separador Atual</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1146"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1154"/> <source>Restore All Closed Tabs</source> <translation type="unfinished">Restaurar Todos os Separadores Fechados</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1148"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1156"/> <source>Clear List</source> <translation type="unfinished">Limpar Lista</translation> </message> @@ -90771,12 +91496,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="391"/> + <location filename="../eric6.py" line="399"/> <source>Starting...</source> <translation>A iniciar...</translation> </message> <message> - <location filename="../eric6.py" line="396"/> + <location filename="../eric6.py" line="404"/> <source>Generating Main Window...</source> <translation>A criar a Janela Principal...</translation> </message> @@ -90945,7 +91670,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="183"/> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="187"/> <source>no message defined for code '{0}'</source> <translation>sem mensagem definida para código '{0}'</translation> </message> @@ -91124,421 +91849,426 @@ <source>'...' % ... `*` specifier requires sequence</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="165"/> + <source>'if tuple literal' is always true, perhaps remove accidental comma?</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>pycodestyle</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="21"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> <source>indentation contains mixed spaces and tabs</source> <translation type="unfinished">indentação com espaços misturados com tabulações</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> - <source>indentation is not a multiple of four</source> - <translation type="unfinished">indentação não é multipla de quatro</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="27"/> - <source>expected an indented block</source> - <translation type="unfinished">esperado um bloque de indentação</translation> + <source>indentation is not a multiple of four</source> + <translation type="unfinished">indentação não é multipla de quatro</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="30"/> - <source>unexpected indentation</source> - <translation type="unfinished">indentação inesperada</translation> + <source>expected an indented block</source> + <translation type="unfinished">esperado um bloque de indentação</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="33"/> - <source>indentation is not a multiple of four (comment)</source> - <translation type="unfinished"></translation> + <source>unexpected indentation</source> + <translation type="unfinished">indentação inesperada</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36"/> - <source>expected an indented block (comment)</source> + <source>indentation is not a multiple of four (comment)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39"/> + <source>expected an indented block (comment)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> <source>unexpected indentation (comment)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> - <source>continuation line indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="48"/> - <source>continuation line missing indentation or outdented</source> + <source>continuation line indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="51"/> + <source>continuation line missing indentation or outdented</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54"/> <source>closing bracket does not match indentation of opening bracket's line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55"/> - <source>closing bracket does not match visual indentation</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="58"/> - <source>continuation line with same indent as next logical line</source> + <source>closing bracket does not match visual indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="61"/> - <source>continuation line over-indented for hanging indent</source> + <source>continuation line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64"/> - <source>continuation line over-indented for visual indent</source> + <source>continuation line over-indented for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67"/> - <source>continuation line under-indented for visual indent</source> + <source>continuation line over-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70"/> - <source>visually indented line with same indent as next logical line</source> + <source>continuation line under-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73"/> - <source>continuation line unaligned for hanging indent</source> + <source>visually indented line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76"/> - <source>closing bracket is missing indentation</source> + <source>continuation line unaligned for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79"/> - <source>indentation contains tabs</source> - <translation type="unfinished">indentação com tabluações</translation> + <source>closing bracket is missing indentation</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82"/> + <source>indentation contains tabs</source> + <translation type="unfinished">indentação com tabluações</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85"/> <source>whitespace after '{0}'</source> <translation type="unfinished">espaço depois de '{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91"/> - <source>whitespace before '{0}'</source> - <translation type="unfinished">espaço antes de '{0}</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94"/> - <source>multiple spaces before operator</source> - <translation type="unfinished">espaços múltiplos antes do operador</translation> + <source>whitespace before '{0}'</source> + <translation type="unfinished">espaço antes de '{0}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97"/> - <source>multiple spaces after operator</source> - <translation type="unfinished">espaços múltiplos depois do operador</translation> + <source>multiple spaces before operator</source> + <translation type="unfinished">espaços múltiplos antes do operador</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100"/> - <source>tab before operator</source> - <translation type="unfinished">tabulação antes do operador</translation> + <source>multiple spaces after operator</source> + <translation type="unfinished">espaços múltiplos depois do operador</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103"/> - <source>tab after operator</source> - <translation type="unfinished">tabulação depois do operador</translation> + <source>tab before operator</source> + <translation type="unfinished">tabulação antes do operador</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106"/> - <source>missing whitespace around operator</source> - <translation type="unfinished">falta espaço à volta do operador</translation> + <source>tab after operator</source> + <translation type="unfinished">tabulação depois do operador</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109"/> - <source>missing whitespace around arithmetic operator</source> - <translation type="unfinished">falta espaço à volta do operador aritmético</translation> + <source>missing whitespace around operator</source> + <translation type="unfinished">falta espaço à volta do operador</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112"/> - <source>missing whitespace around bitwise or shift operator</source> - <translation type="unfinished"></translation> + <source>missing whitespace around arithmetic operator</source> + <translation type="unfinished">falta espaço à volta do operador aritmético</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115"/> - <source>missing whitespace around modulo operator</source> + <source>missing whitespace around bitwise or shift operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118"/> - <source>missing whitespace after '{0}'</source> - <translation type="unfinished">falta espaço depois de '{0}'</translation> + <source>missing whitespace around modulo operator</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121"/> - <source>multiple spaces after '{0}'</source> - <translation type="unfinished">múltiplos espaços depois de '{0}'</translation> + <source>missing whitespace after '{0}'</source> + <translation type="unfinished">falta espaço depois de '{0}'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124"/> - <source>tab after '{0}'</source> - <translation type="unfinished">tabulação depois de '{0}'</translation> + <source>multiple spaces after '{0}'</source> + <translation type="unfinished">múltiplos espaços depois de '{0}'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127"/> + <source>tab after '{0}'</source> + <translation type="unfinished">tabulação depois de '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> <source>unexpected spaces around keyword / parameter equals</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> - <source>at least two spaces before inline comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136"/> - <source>inline comment should start with '# '</source> + <source>at least two spaces before inline comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="139"/> - <source>block comment should start with '# '</source> + <source>inline comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="142"/> - <source>too many leading '#' for block comment</source> + <source>block comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="145"/> - <source>multiple spaces after keyword</source> - <translation type="unfinished">múltiplos espaços depois da palavra-chave</translation> + <source>too many leading '#' for block comment</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="148"/> - <source>multiple spaces before keyword</source> - <translation type="unfinished">múltiplos espaços antes da palavra-chave</translation> + <source>multiple spaces after keyword</source> + <translation type="unfinished">múltiplos espaços depois da palavra-chave</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="151"/> - <source>tab after keyword</source> - <translation type="unfinished">tabulação depois da palavra-chave</translation> + <source>multiple spaces before keyword</source> + <translation type="unfinished">múltiplos espaços antes da palavra-chave</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154"/> - <source>tab before keyword</source> - <translation type="unfinished">tabulação antes da palavra-chave</translation> + <source>tab after keyword</source> + <translation type="unfinished">tabulação depois da palavra-chave</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157"/> - <source>missing whitespace after keyword</source> - <translation type="unfinished"></translation> + <source>tab before keyword</source> + <translation type="unfinished">tabulação antes da palavra-chave</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="160"/> - <source>trailing whitespace</source> - <translation type="unfinished">espaço ao final</translation> + <source>missing whitespace after keyword</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163"/> - <source>no newline at end of file</source> - <translation type="unfinished">não há linha nova no final do ficheiro</translation> + <source>trailing whitespace</source> + <translation type="unfinished">espaço ao final</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166"/> + <source>no newline at end of file</source> + <translation type="unfinished">não há linha nova no final do ficheiro</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169"/> <source>blank line contains whitespace</source> <translation type="unfinished">esperada 1 linha vazia, encontradas 0</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> - <source>too many blank lines ({0})</source> - <translation type="unfinished">demasiadas linhas vazias ({0})</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> - <source>blank lines found after function decorator</source> - <translation type="unfinished">encontradas linhas vazias depois do decorador de função</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="194"/> - <source>blank line at end of file</source> - <translation type="unfinished">linha vazia no fim do ficheiro</translation> + <source>too many blank lines ({0})</source> + <translation type="unfinished">demasiadas linhas vazias ({0})</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <source>blank lines found after function decorator</source> + <translation type="unfinished">encontradas linhas vazias depois do decorador de função</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="197"/> - <source>multiple imports on one line</source> - <translation type="unfinished">múltiplos imports numa linha</translation> + <source>blank line at end of file</source> + <translation type="unfinished">linha vazia no fim do ficheiro</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200"/> - <source>module level import not at top of file</source> - <translation type="unfinished"></translation> + <source>multiple imports on one line</source> + <translation type="unfinished">múltiplos imports numa linha</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203"/> - <source>line too long ({0} > {1} characters)</source> - <translation type="unfinished">linha demasiado comprida ({0} > {1} caráteres)</translation> + <source>module level import not at top of file</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206"/> - <source>the backslash is redundant between brackets</source> - <translation type="unfinished">barra invertida é redundante entre parêntesis</translation> + <source>line too long ({0} > {1} characters)</source> + <translation type="unfinished">linha demasiado comprida ({0} > {1} caráteres)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209"/> + <source>the backslash is redundant between brackets</source> + <translation type="unfinished">barra invertida é redundante entre parêntesis</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> <source>line break before binary operator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> - <source>.has_key() is deprecated, use 'in'</source> - <translation type="unfinished">.has_key está obsoleto, usar 'in'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> - <source>deprecated form of raising exception</source> - <translation type="unfinished"></translation> + <source>.has_key() is deprecated, use 'in'</source> + <translation type="unfinished">.has_key está obsoleto, usar 'in'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> - <source>'<>' is deprecated, use '!='</source> - <translation type="unfinished">'<>' está obsoleto, usar '!='</translation> + <source>deprecated form of raising exception</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> + <source>'<>' is deprecated, use '!='</source> + <translation type="unfinished">'<>' está obsoleto, usar '!='</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>backticks are deprecated, use 'repr()'</source> <translation type="unfinished">acentos graves estão obsoletos, usar 'repr()'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> - <source>multiple statements on one line (colon)</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> - <source>multiple statements on one line (semicolon)</source> + <source>multiple statements on one line (colon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> - <source>statement ends with a semicolon</source> + <source>multiple statements on one line (semicolon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> + <source>statement ends with a semicolon</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248"/> <source>multiple statements on one line (def)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="251"/> - <source>comparison to {0} should be {1}</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> - <source>test for membership should be 'not in'</source> + <source>comparison to {0} should be {1}</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> - <source>test for object identity should be 'is not'</source> + <source>test for membership should be 'not in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> + <source>test for object identity should be 'is not'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> <source>do not compare types, use 'isinstance()'</source> <translation type="unfinished">não comparar tipos, usar 'isinstance()'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> - <source>do not assign a lambda expression, use a def</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> - <source>ambiguous variable name '{0}'</source> + <source>do not assign a lambda expression, use a def</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> - <source>ambiguous class definition '{0}'</source> + <source>ambiguous variable name '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> - <source>ambiguous function definition '{0}'</source> + <source>ambiguous class definition '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> - <source>{0}: {1}</source> - <translation type="unfinished">{0}: {1}</translation> + <source>ambiguous function definition '{0}'</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> + <source>{0}: {1}</source> + <translation type="unfinished">{0}: {1}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284"/> <source>{0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> <source>do not use bare except</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184"/> <source>expected {0} blank lines after class or function definition, found {1}</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> + <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> + <source>missing whitespace around parameter equals</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <source>expected {0} blank lines, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <source>expected {0} blank lines before a nested definition, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <source>line break after binary operator</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> - <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> - <source>missing whitespace around parameter equals</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172"/> - <source>expected {0} blank lines, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="185"/> - <source>expected {0} blank lines before a nested definition, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> - <source>line break after binary operator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>invalid escape sequence '\{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> <source>too many blank lines ({0}) before a nested definition, expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> <source>too many blank lines ({0}), expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> <source>over-indented</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> <source>doc line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message>
--- a/eric6/i18n/eric6_ru.ts Sun May 03 13:42:52 2020 +0200 +++ b/eric6/i18n/eric6_ru.ts Wed Jun 17 17:14:12 2020 +0200 @@ -352,7 +352,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="200"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="201"/> <source>Add Bookmark</source> <translation>Добавить закладку</translation> </message> @@ -1101,72 +1101,72 @@ <context> <name>AnnotationsChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="808"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> <source>missing type annotation for function argument '{0}'</source> <translation>отсутствует аннотация типа для аргумента '{0}' функции</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> - <source>missing type annotation for '*{0}'</source> - <translation>отсутствует аннотация типа для '*{0}'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="814"/> + <source>missing type annotation for '*{0}'</source> + <translation>отсутствует аннотация типа для '*{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> <source>missing type annotation for '**{0}'</source> <translation>отсутствует аннотация типа для '**{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> - <source>missing return type annotation for public function</source> - <translation>отсутствует аннотация типа возвращаемого значения для public функции</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="826"/> - <source>missing return type annotation for protected function</source> - <translation>отсутствует аннотация типа возвращаемого значения для protected функции</translation> + <source>missing return type annotation for public function</source> + <translation>отсутствует аннотация типа возвращаемого значения для public функции</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="829"/> - <source>missing return type annotation for private function</source> - <translation>отсутствует аннотация типа возвращаемого значения для private функции</translation> + <source>missing return type annotation for protected function</source> + <translation>отсутствует аннотация типа возвращаемого значения для protected функции</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="832"/> - <source>missing return type annotation for special method</source> - <translation>отсутствует аннотация типа возвращаемого значения для special метода</translation> + <source>missing return type annotation for private function</source> + <translation>отсутствует аннотация типа возвращаемого значения для private функции</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="835"/> - <source>missing return type annotation for staticmethod</source> - <translation>отсутствует аннотация типа возвращаемого значения для static метода</translation> + <source>missing return type annotation for special method</source> + <translation>отсутствует аннотация типа возвращаемого значения для special метода</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="838"/> + <source>missing return type annotation for staticmethod</source> + <translation>отсутствует аннотация типа возвращаемого значения для static метода</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="841"/> <source>missing return type annotation for classmethod</source> <translation>отсутствует аннотация типа возвращаемого значения для class метода</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="850"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="853"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> - <source>missing type annotation for 'self' in method</source> - <translation>отсутствует аннотация типа для 'self' метода</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="820"/> + <source>missing type annotation for 'self' in method</source> + <translation>отсутствует аннотация типа для 'self' метода</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> <source>missing type annotation for 'cls' in classmethod</source> <translation>отсутствует аннотация типа для 'cls' в class методе</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="842"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="845"/> <source>type annotation coverage of {0}% is too low</source> <translation>покрытие аннотациями типа слишком мало - {0}%</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="846"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="849"/> <source>type annotation is too complex ({0} > {1})</source> <translation>слишком сложная аннотация типа - ({0}> {1})</translation> </message> @@ -1810,7 +1810,7 @@ <translation>Удалить выбранные элементы</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="174"/> <source>&Delete</source> <translation>&Удалить</translation> </message> @@ -1825,50 +1825,65 @@ <translation>Добавить &папку</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="154"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> <source>&Open</source> <translation>&Открыть</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> <source>Open in New &Tab</source> <translation>Открыть в новой &вкладке</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="167"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> <source>Edit &Name</source> <translation>Редактировать &имя</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="170"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> <source>Edit &Address</source> <translation>Редактировать &адрес</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="331"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="343"/> <source>New Folder</source> <translation>Новая папка</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="176"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="178"/> <source>&Properties...</source> <translation>&Свойства...</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="161"/> - <source>Open in New &Window</source> - <translation>Открыть в новом &окне</translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="163"/> + <source>Open in New &Window</source> + <translation>Открыть в новом &окне</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="165"/> <source>Open in New Pri&vate Window</source> <translation>Открыть в новом при&ватном окне</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="160"/> <source>Open in New &Background Tab</source> <translation>Открыть в новой &фоновой вкладке</translation> </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="182"/> + <source>New &Folder...</source> + <translation>Новая &папка...</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>New Bookmark Folder</source> + <translation>Новая папка закладок</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>Enter title for new bookmark folder:</source> + <translation>Введите заголовок новой папки закладок:</translation> + </message> </context> <context> <name>BookmarksImportDialog</name> @@ -2776,6 +2791,49 @@ </message> </context> <context> + <name>CheckerCategories</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="63"/> + <source>Annotations</source> + <translation type="unfinished">Аннотации</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="66"/> + <source>Code Complexity</source> + <translation type="unfinished">Сложность кода</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="69"/> + <source>Documentation</source> + <translation type="unfinished">Документация</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="72"/> + <source>Errors</source> + <translation type="unfinished">Ошибки</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="75"/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="78"/> + <source>Naming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="84"/> + <source>Warnings</source> + <translation type="unfinished">Предупреждения</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <source>Security</source> + <translation type="unfinished">Безопасность</translation> + </message> +</context> +<context> <name>ChromeImporter</name> <message> <location filename="../WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py" line="43"/> @@ -2911,15 +2969,20 @@ <translation>Файлы прошивки CircuitPython (*.uf2);;Все файлы (*)</translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source>Select Path to Device</source> <translation>Выберите путь к устройству</translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source><p>The device volume <b>{0}</b> could not be found. Is the device in 'bootloader' mode and mounted?</p> <p>Alternatively select the "Manual Select" entry and enter the path to the device below.</p></source> <translation><p>Не удается найти том устройства <b>{0}</b>. Находится ли устройство в режиме 'bootloader' и подмонтировано ли?</p><p>В качестве альтернативы, выберите пункт "Manual Select" и ниже введите путь к устройству.</p></translation> </message> + <message> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="52"/> + <source>Manual Select</source> + <translation>Manual Select</translation> + </message> </context> <context> <name>ClearPrivateDataDialog</name> @@ -3269,6 +3332,14 @@ </message> </context> <context> + <name>CodeStyleChecker</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1133"/> + <source>No message defined for code '{0}'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>CodeStyleCheckerDialog</name> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="14"/> @@ -3285,137 +3356,137 @@ записи откроет окно редактора и поместит курсор на соответствующую строку.</p></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="50"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="68"/> <source>Exclude Files:</source> <translation>Не включать файлы:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="57"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="75"/> <source>Enter filename patterns of files to be excluded separated by a comma</source> <translation>Задайте разделённые запятой маски файлов для исключения</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="830"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1090"/> <source>Press to start the code style check run</source> <translation>Запустить проверку стиля</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="840"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1254"/> <source>Press to fix the selected issues</source> <translation>Редактировать выбранные проблемы</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1113"/> <source>Press to load the default values</source> <translation>Восстановить значения по умолчанию</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="873"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1123"/> <source>Press to store the current values as defaults</source> <translation>Сохранить текущие значения как значения по умолчанию</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="883"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1133"/> <source>Press to reset the default values</source> <translation>Восстановить значения по умолчанию</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="82"/> <source>Exclude Messages:</source> <translation>Не включать сообщения:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="71"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="69"/> <source>Enter message codes or categories to be excluded separated by a comma</source> - <translation>Задайте через запятую коды сообщений или категорий, которые не нужно включать в проверку</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="141"/> + <translation type="obsolete">Задайте через запятую коды сообщений или категорий, которые не нужно включать в проверку</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="159"/> <source>Press to select the message codes from a list</source> <translation>Выбрать коды сообщений из списка</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="85"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="103"/> <source>Included Messages:</source> <translation>Включить сообщения:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="92"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="90"/> <source>Enter message codes or categories to be included separated by a comma</source> - <translation>Задайте через запятую коды сообщений или категорий, которые нужно включать в проверку</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="106"/> + <translation type="obsolete">Задайте через запятую коды сообщений или категорий, которые нужно включать в проверку</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="124"/> <source>Fix Issues:</source> <translation>Исправлять автоматически:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="113"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="131"/> <source>Enter message codes of issues to be fixed automatically (leave empty to fix all)</source> <translation>Задайте коды сообщений, которые нужно исправлять автоматически (если пусто, то исправлять всё)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="127"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="145"/> <source>Don't Fix Issues:</source> <translation>Не исправлять:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="134"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="152"/> <source>Enter message codes of issues not to be fixed automatically</source> <translation>Задайте коды сообщений которые не нужно исправлять автоматически</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="265"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="283"/> <source>Max. Line Length:</source> <translation>Максимальная длина строки:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="316"/> <source>Enter the maximum allowed line length (PEP-8: 79 characters)</source> <translation>Задайте максимально допустимую длину строки (PEP-8: 79 символов)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="425"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="443"/> <source>Docstring Type:</source> <translation>Тип строки документации (docstring):</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="450"/> <source>Select the rule set for docstrings</source> <translation>Задайте набор правил для строк документации (docstring)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="406"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="424"/> <source>Select to allow hanging closing brackets</source> <translation>Разрешить непарные закрывающие скобки</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="409"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="427"/> <source>Allow hanging closing brackets</source> <translation>Разрешить непарные закрывающие скобки</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="150"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="168"/> <source>Select to repeat each message type</source> <translation>Разрешить повтор каждого типа сообщений</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="153"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="171"/> <source>Repeat messages</source> <translation>Повторять сообщения</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="163"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="181"/> <source>Select to fix some issues</source> <translation>Разрешить исправление некоторых проблем</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="166"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="184"/> <source>Fix issues automatically</source> <translation>Автоматическое исправление ошибок</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="904"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1167"/> <source><b>Result List</b> <p>This list shows the results of the code style check. Double clicking an entry will open this entry in an editor window and position the cursor at @@ -3425,375 +3496,525 @@ по элементу откроет редактор с курсором на соответствующей строке и колонке.</p></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1183"/> <source>File/Line</source> <translation>Файл/Строка</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="925"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1188"/> <source>Code</source> <translation>Код</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="930"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1193"/> <source>Message</source> <translation>Сообщение</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="80"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="117"/> <source>PEP-257</source> <translation>PEP-257</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="118"/> <source>Eric</source> <translation>Eric</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="88"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="144"/> <source>Statistics...</source> <translation>Статистика...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="90"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="146"/> <source>Press to show some statistics for the last run</source> <translation>Показать результаты последней проверки</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="149"/> <source>Show</source> <translation>Показать</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="151"/> <source>Press to show all files containing an issue</source> <translation>Показать все файлы, содержащие ошибки</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="637"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="241"/> <source>Error: {0}</source> <translation>Ошибка: {0}</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="244"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="248"/> <source>Fix: {0}</source> <translation>Исправлено: {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="778"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="982"/> <source>No issues found.</source> <translation>Проблем со стилем не найдено.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1214"/> <source>Shows the progress of the code style check</source> <translation>Отображение выполнения проверки стиля</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="960"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1223"/> <source>%v/%m Files</source> <translation>%v из %m файла(ов)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="176"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="194"/> <source>Select to show ignored issues</source> - <translation>Показать проигнорированные проблемы</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="179"/> + <translation>Разрешить показывать проигнорированные проблемы</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="197"/> <source>Show ignored</source> <translation>Показывать проигнорированные</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="730"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="927"/> <source>{0} (ignored)</source> <translation>{0} (проигнорировано)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="622"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="820"/> <source>Preparing files...</source> <translation>Подготовка файлов...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="698"/> <source>Enter the maximum allowed code complexity (McCabe: 10)</source> <translation>Задайте максимально допустимую сложность кода (McCabe: 10)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="152"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="214"/> <source>Errors</source> <translation>Ошибки</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="664"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="859"/> <source>Transferring data...</source> <translation>Передача данных...</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="44"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="42"/> <source>Global Options</source> <translation>Глобальные параметры</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="233"/> <source>Specific Options</source> <translation>Особые параметры</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="257"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="275"/> <source>Source Style</source> <translation>Исходный стиль</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="419"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="437"/> <source>Documentation Style</source> <translation>Стиль документации</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="455"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="473"/> <source>Coding Line</source> <translation>Кодировки</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="461"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="479"/> <source>Valid Encodings:</source> <translation>Допустимые кодировки:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="468"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="486"/> <source>Enter valid encodings separated by a comma (leave empty to use defaults)</source> <translation>Введите через запятую допустимые кодировки (не вводите чтобы использовать значения по умолчанию)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="478"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="496"/> <source>Copyright</source> <translation>Авторское право (Copyright)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="484"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="502"/> <source>Min. File Size:</source> <translation>Мин. размер файла:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="491"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="509"/> <source>Enter the minimum size a file must have to be checked (0 for all files)</source> <translation>Укажите минимальный размер файла, которые должны быть проверены (0 для всех файлов)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="517"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="535"/> <source>Author:</source> <translation>Автор:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="524"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="542"/> <source>Enter a copyright author name to check for (leave empty to omit this check)</source> <translation>Введите имя автора для проверки авторского права (оставьте пустым чтобы не выполнять проверку)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="534"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="552"/> <source>Future Imports</source> <translation>Future Imports</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="540"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="558"/> <source>Expected Imports:</source> <translation>Ожидаемый импорт:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="654"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="672"/> <source>Code Complexity</source> <translation>Сложность кода</translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1093"/> + <source>&Start</source> + <translation>&Старт</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1257"/> + <source>&Fix Selected</source> + <translation>&Исправить выделенные</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1116"/> + <source>&Load Defaults</source> + <translation>&Загрузить стандартные</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1126"/> + <source>St&ore Defaults</source> + <translation>Со&хранить как стандартные</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1136"/> + <source>&Reset Defaults</source> + <translation>&Сброс к стандартным</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="985"/> + <source>No files found (check your ignore list).</source> + <translation>Файлы не найдены (проверьте ваш игнор-лист).</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="584"/> + <source>Ignore Built-ins Assignment</source> + <translation>Игнорировать встроенные присвоения</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="600"/> + <source>Left</source> + <translation>Левая</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="605"/> + <source>Right</source> + <translation>Правая</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="615"/> + <source>Press to add a built-in assignment to be ignored</source> + <translation>Добавить встроенное присвоение для его игнорирования</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="625"/> + <source>Press to delete the selected entries</source> + <translation>Удалить выбранные записи</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="691"/> + <source>Max. McCabe Complexity:</source> + <translation>Максимальная McCabe сложность:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="714"/> + <source>Max. Line Complexity:</source> + <translation>Максимальная сложность строки:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="721"/> + <source>Enter the maximum complexity (number of nodes) for a line of code</source> + <translation>Задайте максимальную сложность (количество узлов) для строки кода</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="737"/> + <source>Max. Line Complexity Score:</source> + <translation>Максимальное значение сложности строки:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="744"/> + <source>Enter the maximum allowed median for line complexity</source> + <translation>Задайте максимально разрешенную медиану сложности строки</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="350"/> + <source>Blank Lines Before</source> + <translation>Пустые строки</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="356"/> + <source>Top Level Classes and Functions:</source> + <translation>Классы и функции верхнего уровня:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="363"/> + <source>Enter the number of blank lines before top level classes and functions</source> + <translation>Задайте количество пустых строк перед классами и функциями верхнего уровня</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="395"/> + <source>Methods and Nested Classes and Functions:</source> + <translation>Методы и вложенные классы и функции:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="402"/> + <source>Enter the number of blank lines before methods and nested classes or functions</source> + <translation>Задайте количество пустых строк перед методами и вложенными классами и функциями</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="309"/> + <source>Max. Documentation Line Length:</source> + <translation>Максимальная длина строки документации:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="653"/> + <source>Commented Code</source> + <translation>Закомментированный код</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="659"/> + <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> + <translation>Разрешить более настойчивый поиск закомментированного кода. Это может увеличить количество ложных срабатываний.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="662"/> + <source>Search aggressively</source> + <translation>Настойчивый поиск</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="763"/> + <source>Type Annotations</source> + <translation>Аннотации типов</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="769"/> + <source>Min. Coverage:</source> + <translation>Минимальное покрытие:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="776"/> + <source>Enter the minimum percentage of type annotations</source> + <translation>Задайте минимальный процент аннотиций типов</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="779"/> + <source>off</source> + <translation>выкл</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="782"/> + <source>%</source> + <translation>%</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="805"/> + <source>Max. Complexity:</source> + <translation>Максимальная сложность:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="812"/> + <source>Enter the maximum type annotation complexity</source> + <translation>Задайте максимальную сложность аннотации типа</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="32"/> + <source>Configure</source> + <translation>Настройки</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1146"/> + <source>Run</source> + <translation>Выполнено</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1244"/> + <source>Press to restart the code style check run</source> + <translation>Перезапустить проверку стиля</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1247"/> + <source>Restart</source> + <translation>Рестарт</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="48"/> + <source>Categories:</source> + <translation type="unfinished">Категории:</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="58"/> + <source>Select the categories of checks to be performed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="89"/> + <source>Enter message codes to be excluded separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="110"/> + <source>Enter message codes to be included separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="833"/> - <source>&Start</source> - <translation>&Старт</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="843"/> - <source>&Fix Selected</source> - <translation>&Исправить выделенные</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="866"/> - <source>&Load Defaults</source> - <translation>&Загрузить стандартные</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="876"/> - <source>St&ore Defaults</source> - <translation>Со&хранить как стандартные</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="886"/> - <source>&Reset Defaults</source> - <translation>&Сброс к стандартным</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="781"/> - <source>No files found (check your ignore list).</source> - <translation>Файлы не найдены (проверьте ваш игнор-лист).</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="566"/> - <source>Ignore Built-ins Assignment</source> - <translation>Игнорировать встроенные присвоения</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="582"/> - <source>Left</source> - <translation>Левая</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="587"/> - <source>Right</source> - <translation>Правая</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="597"/> - <source>Press to add a built-in assignment to be ignored</source> - <translation>Добавить встроенное присвоение для его игнорирования</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="607"/> - <source>Press to delete the selected entries</source> - <translation>Удалить выбранные записи</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="673"/> - <source>Max. McCabe Complexity:</source> - <translation>Максимальная McCabe сложность:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="696"/> - <source>Max. Line Complexity:</source> - <translation>Максимальная сложность строки:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="703"/> - <source>Enter the maximum complexity (number of nodes) for a line of code</source> - <translation>Задайте максимальную сложность (количество узлов) для строки кода</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="719"/> - <source>Max. Line Complexity Score:</source> - <translation>Максимальное значение сложности строки:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="726"/> - <source>Enter the maximum allowed median for line complexity</source> - <translation>Задайте максимально разрешенную медиану сложности строки</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="332"/> - <source>Blank Lines Before</source> - <translation>Пустые строки</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="338"/> - <source>Top Level Classes and Functions:</source> - <translation>Классы и функции верхнего уровня:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="345"/> - <source>Enter the number of blank lines before top level classes and functions</source> - <translation>Задайте количество пустых строк перед классами и функциями верхнего уровня</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="377"/> - <source>Methods and Nested Classes and Functions:</source> - <translation>Методы и вложенные классы и функции:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="384"/> - <source>Enter the number of blank lines before methods and nested classes or functions</source> - <translation>Задайте количество пустых строк перед методами и вложенными классами и функциями</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="291"/> - <source>Max. Documentation Line Length:</source> - <translation>Максимальная длина строки документации:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="635"/> - <source>Commented Code</source> - <translation>Закомментированный код</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="641"/> - <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> - <translation>Разрешить более настойчивый поиск закомментированного кода. Это может увеличить количество ложных срабатываний.</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="644"/> - <source>Search aggressively</source> - <translation>Настойчивый поиск</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="745"/> - <source>Type Annotations</source> - <translation>Аннотации типов</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="751"/> - <source>Min. Coverage:</source> - <translation>Минимальное покрытие:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="758"/> - <source>Enter the minimum percentage of type annotations</source> - <translation>Задайте минимальный процент аннотиций типов</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="761"/> - <source>off</source> - <translation>выкл</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="764"/> - <source>%</source> - <translation>%</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="787"/> - <source>Max. Complexity:</source> - <translation>Максимальная сложность:</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="794"/> - <source>Enter the maximum type annotation complexity</source> - <translation>Задайте максимальную сложность аннотации типа</translation> + <source>Security Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="839"/> + <source>Hardcoded 'tmp' Directories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="849"/> + <source>Weak Cryptographic Keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="855"/> + <source>DSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="973"/> + <source>High Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="868"/> + <source>Select the bit length below which a DSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="990"/> + <source>Medium Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="885"/> + <source>Select the bit length below which a DSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="911"/> + <source>RSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="924"/> + <source>Select the bit length below which a RSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="941"/> + <source>Select the bit length below which a RSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="967"/> + <source>Elliptic Curves</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="980"/> + <source>Select the bit length below which an Elliptic Curve is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="997"/> + <source>Select the bit length below which an Elliptic Curve is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1026"/> + <source>Enter the names of insecure SSL protocols and methods (one per line)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1033"/> + <source>Insecure SSL Protocols:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1043"/> + <source>Insecure Hashes:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1050"/> + <source>Enter a list of hash methods to be considered insecure separated by comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1057"/> + <source>Select to also check for insecure exception handling for typed exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1060"/> + <source>Check Typed Exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1067"/> + <source>Enter directory names (one per line) to be checked for</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1154"/> + <source><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>CodeStyleCheckerPlugin</name> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> <source>Check Code Style</source> <translation>Проверить стиль кода</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>&Code Style...</source> - <translation>&Стиль кода...</translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="262"/> - <source>Check code style.</source> - <translation>Проверить стиль кода.</translation> - </message> - <message> <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>&Code Style...</source> + <translation>&Стиль кода...</translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="266"/> + <source>Check code style.</source> + <translation>Проверить стиль кода.</translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="364"/> <source><b>Check Code Style...</b><p>This checks Python files for compliance to the code style conventions given in various PEPs.</p></source> <translation><b>Проверить стиль кода...</b><p>Проверка файлов Python на соответствие стилю, рекомендованному в различных PEP.</p></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="110"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="112"/> <source>Python 2 batch check</source> <translation>Пакетная проверка Python 2</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="126"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="128"/> <source>Python 3 batch check</source> <translation>Пакетная проверка Python 3</translation> </message> @@ -3829,142 +4050,142 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="857"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="861"/> <source>Triple single quotes converted to triple double quotes.</source> <translation>Утроенные одинарные кавычки заменены утроенными двойными.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="860"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="864"/> <source>Introductory quotes corrected to be {0}"""</source> <translation>Кавычки во введении исправлены на {0}"""</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="867"/> <source>Single line docstring put on one line.</source> <translation>Одиночная строка документации располагается в одной строке.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="866"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="870"/> <source>Period added to summary line.</source> <translation>Добавлена точка в строке резюме.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="893"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="897"/> <source>Blank line before function/method docstring removed.</source> <translation>Удалена пустая строка перед строкой документации для function/method.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="872"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="876"/> <source>Blank line inserted before class docstring.</source> <translation>Добавлена пустая строка перед строкой документации для class.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="875"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="879"/> <source>Blank line inserted after class docstring.</source> <translation>Добавлена пустая строка после строки документации для class.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="878"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="882"/> <source>Blank line inserted after docstring summary.</source> <translation>Добавлена пустая строка после резюме строки документации.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="881"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="885"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation>Добавлена пустая строка после последнего абзаца строки документации.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="884"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="888"/> <source>Leading quotes put on separate line.</source> <translation>Открывающие кавычки размещены на отдельной строке.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="887"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="891"/> <source>Trailing quotes put on separate line.</source> <translation>Закрывающие кавычки размещены на отдельной строке.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="890"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="894"/> <source>Blank line before class docstring removed.</source> <translation>Удалена пустая строка перед строкой документации для class.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="896"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="900"/> <source>Blank line after class docstring removed.</source> <translation>Удалена пустая строка после строки документации для class.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="899"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="903"/> <source>Blank line after function/method docstring removed.</source> <translation>Удалена пустая строка после строки документации для function/method.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="902"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="906"/> <source>Blank line after last paragraph removed.</source> <translation>Удалена пустая строка после последнего абзаца.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="905"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="909"/> <source>Tab converted to 4 spaces.</source> <translation>Символы табуляции заменяются на 4 пробела.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="908"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="912"/> <source>Indentation adjusted to be a multiple of four.</source> <translation>Величина отступа задана кратной четырём.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="911"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="915"/> <source>Indentation of continuation line corrected.</source> <translation>Исправлен размер отступа строки продолжения.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="914"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="918"/> <source>Indentation of closing bracket corrected.</source> <translation>Исправлен размер отступа закрывающей скобки.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="917"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="921"/> <source>Missing indentation of continuation line corrected.</source> <translation>Добавлен отступ к строке продолжения.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="924"/> <source>Closing bracket aligned to opening bracket.</source> <translation>Закрывающая скобка выровнена с открывающей.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="923"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="927"/> <source>Indentation level changed.</source> <translation>Изменен размер отступа.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="926"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="930"/> <source>Indentation level of hanging indentation changed.</source> <translation>Изменен размер отступа для висячих отступов.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="929"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="933"/> <source>Visual indentation corrected.</source> <translation>Исправленена величина визуального отступа.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="944"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="948"/> <source>Extraneous whitespace removed.</source> <translation>Посторонние пробельные символы удалены.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="941"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="945"/> <source>Missing whitespace added.</source> <translation>Добавлены недостающие пробельные символы.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="947"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> <source>Whitespace around comment sign corrected.</source> <translation>Пробельные символы вокруг символа комментария откорректированы.</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="955"/> <source>%n blank line(s) inserted.</source> <translation> <numerusform>%n пустая строка вставлена.</numerusform> @@ -3973,7 +4194,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="954"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> <source>%n superfluous lines removed</source> <translation> <numerusform>%n лишняя пустая строка удалена</numerusform> @@ -3982,79 +4203,79 @@ </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="962"/> <source>Superfluous blank lines removed.</source> <translation>Удалены лишние пустые строки.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="961"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="965"/> <source>Superfluous blank lines after function decorator removed.</source> <translation>Удалены лишние пустые строки после декоратора функции.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="964"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="968"/> <source>Imports were put on separate lines.</source> <translation>Операторы импорта помещены на отдельных строках.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="967"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="971"/> <source>Long lines have been shortened.</source> <translation>Укорочены длинные строки.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="970"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="974"/> <source>Redundant backslash in brackets removed.</source> <translation>Удалены излишние символы '\'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="976"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="980"/> <source>Compound statement corrected.</source> <translation>Составная инструкция исправлена.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="979"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="983"/> <source>Comparison to None/True/False corrected.</source> <translation>Исправлено сравнение с None/True/False.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="982"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="986"/> <source>'{0}' argument added.</source> <translation>Добавлен '{0}' аргумент.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="985"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="989"/> <source>'{0}' argument removed.</source> <translation>Удалён '{0}' аргумент.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="988"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="992"/> <source>Whitespace stripped from end of line.</source> <translation>Завершающие пробельные символы обрезаны.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="991"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="995"/> <source>newline added to end of file.</source> <translation>символ новой строки добавлен в конец файла.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="994"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="998"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation>Удалены пустые строки в конце файла.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="997"/> - <source>'<>' replaced by '!='.</source> - <translation>'<>' заменен на '!='.</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1001"/> + <source>'<>' replaced by '!='.</source> + <translation>'<>' заменен на '!='.</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1005"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation>Не удалось сохранить файл! Пропускаем. Причина: {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1107"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1110"/> <source> no message defined for code '{0}'</source> - <translation> нет сообщения, определенного для кода '{0}'</translation> + <translation type="obsolete"> нет сообщения, определенного для кода '{0}'</translation> </message> </context> <context> @@ -4080,7 +4301,7 @@ <translation>Сообщение</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="60"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="63"/> <source>%n issue(s) found</source> <translation> <numerusform>%n проблема найдена</numerusform> @@ -4089,7 +4310,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="67"/> <source>%n issue(s) fixed</source> <translation> <numerusform>%n проблема решена</numerusform> @@ -4098,7 +4319,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="66"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="69"/> <source>%n file(s) checked</source> <translation> <numerusform>%n файл проверен</numerusform> @@ -4107,7 +4328,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="68"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="71"/> <source>%n file(s) with issues found</source> <translation> <numerusform>%n файл с проблемами найден</numerusform> @@ -4116,7 +4337,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="62"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="65"/> <source>%n issue(s) ignored</source> <translation> <numerusform>%n проблема проигнорирована</numerusform> @@ -4124,6 +4345,15 @@ <numerusform>%n проблем проигнорированы</numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="73"/> + <source>%n security issue(s) acknowledged</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> </context> <context> <name>CodingError</name> @@ -4536,22 +4766,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="479"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="482"/> <source>'{0}' is too complex ({1})</source> <translation>'{0}' слишком сложно ({1})</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="481"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="484"/> <source>source code line is too complex ({0})</source> <translation>строка исходного кода слишком сложная ({0})</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="483"/> - <source>overall source code line complexity is too high ({0})</source> - <translation>слишком большая общая сложность исходного кода ({0})</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="486"/> + <source>overall source code line complexity is too high ({0})</source> + <translation>слишком большая общая сложность исходного кода ({0})</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="489"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> @@ -4852,7 +5082,7 @@ <message> <location filename="../CondaInterface/CondaInfoDialog.ui" line="152"/> <source>Channel URLs:</source> - <translation>Каналы, URL'ы:</translation> + <translation>Каналы, URLs:</translation> </message> <message> <location filename="../CondaInterface/CondaInfoDialog.ui" line="165"/> @@ -8317,242 +8547,242 @@ <context> <name>DocStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="288"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="291"/> <source>module is missing a docstring</source> <translation>в модуле отсутствует строка документации</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290"/> - <source>public function/method is missing a docstring</source> - <translation>для public function/method отсутствует строка документации</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293"/> - <source>private function/method may be missing a docstring</source> - <translation>для private function/method возможно отсутствует строка документации</translation> + <source>public function/method is missing a docstring</source> + <translation>для public function/method отсутствует строка документации</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296"/> + <source>private function/method may be missing a docstring</source> + <translation>для private function/method возможно отсутствует строка документации</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299"/> <source>public class is missing a docstring</source> <translation>для public class отсутствует строка документации</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301"/> <source>private class may be missing a docstring</source> <translation>для private class возможно отсутствует строка документации</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="300"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="303"/> <source>docstring not surrounded by """</source> <translation>строка документации не заключена в """</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302"/> - <source>docstring containing \ not surrounded by r"""</source> - <translation>строка документации содержит \ не заключеный в r"""</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305"/> - <source>docstring containing unicode character not surrounded by u"""</source> - <translation>строка документации содержит unicode-символ не заключенный в u"""</translation> + <source>docstring containing \ not surrounded by r"""</source> + <translation>строка документации содержит \ не заключеный в r"""</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308"/> + <source>docstring containing unicode character not surrounded by u"""</source> + <translation>строка документации содержит unicode-символ не заключенный в u"""</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311"/> <source>one-liner docstring on multiple lines</source> <translation>однострочная строка документации размещается на нескольких строках</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313"/> <source>docstring has wrong indentation</source> <translation>строка документации с неправильным отступом</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> <source>docstring summary does not end with a period</source> <translation>резюме строки документации не заканчивается точкой</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> <source>docstring summary is not in imperative mood (Does instead of Do)</source> <translation>резюме строки документации не в повелительном наклонении</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320"/> - <source>docstring summary looks like a function's/method's signature</source> - <translation>резюме строки документации выглядит как описание функции</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> - <source>docstring does not mention the return value type</source> - <translation>строка документации не описывает тип возвращаемого значения</translation> + <source>docstring summary looks like a function's/method's signature</source> + <translation>резюме строки документации выглядит как описание функции</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> - <source>function/method docstring is separated by a blank line</source> - <translation>строка документации для function/method разделена пустыми строками</translation> + <source>docstring does not mention the return value type</source> + <translation>строка документации не описывает тип возвращаемого значения</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> - <source>class docstring is not preceded by a blank line</source> - <translation>строка документации для class не предваряется пустой строкой</translation> + <source>function/method docstring is separated by a blank line</source> + <translation>строка документации для function/method разделена пустыми строками</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> + <source>class docstring is not preceded by a blank line</source> + <translation>строка документации для class не предваряется пустой строкой</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> <source>class docstring is not followed by a blank line</source> <translation>строка документации для class не завершается пустой строкой</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> <source>docstring summary is not followed by a blank line</source> <translation>резюме строки документации не завершается пустой строкой</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341"/> <source>last paragraph of docstring is not followed by a blank line</source> <translation>отсутствует пустая строка после последнего абзаца строки документации</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> - <source>private function/method is missing a docstring</source> - <translation>для private function/method отсутствует строка документации</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> + <source>private function/method is missing a docstring</source> + <translation>для private function/method отсутствует строка документации</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352"/> <source>private class is missing a docstring</source> <translation>для private class отсутствует строка документации</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> - <source>leading quotes of docstring not on separate line</source> - <translation>открывающие кавычки строки документации размещены не в отдельной строке</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <source>leading quotes of docstring not on separate line</source> + <translation>открывающие кавычки строки документации размещены не в отдельной строке</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> <source>trailing quotes of docstring not on separate line</source> <translation>закрывающие кавычки строки документации размещены не в отдельной строке</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="363"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="366"/> <source>docstring does not contain a @return line but function/method returns something</source> <translation>строка документации не содержит строчки @return, но function/method что-то возвращает</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370"/> <source>docstring contains a @return line but function/method doesn't return anything</source> <translation>строка документации содержит строчку @return, но function/method ничего не возвращает</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> - <source>docstring does not contain enough @param/@keyparam lines</source> - <translation>в строке документации недостаточно строк с @param/@keyparam</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> - <source>docstring contains too many @param/@keyparam lines</source> - <translation>в строке документации слишком много строк с @param/@keyparam</translation> + <source>docstring does not contain enough @param/@keyparam lines</source> + <translation>в строке документации недостаточно строк с @param/@keyparam</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> - <source>keyword only arguments must be documented with @keyparam lines</source> - <translation>только аргументы ключевого слова должны быть описаны с помощью строк @keyparam</translation> + <source>docstring contains too many @param/@keyparam lines</source> + <translation>в строке документации слишком много строк с @param/@keyparam</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> - <source>order of @param/@keyparam lines does not match the function/method signature</source> - <translation>порядок следования строк @param/@keyparam не соответствует сигнатуре функции</translation> + <source>keyword only arguments must be documented with @keyparam lines</source> + <translation>только аргументы ключевого слова должны быть описаны с помощью строк @keyparam</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> + <source>order of @param/@keyparam lines does not match the function/method signature</source> + <translation>порядок следования строк @param/@keyparam не соответствует сигнатуре функции</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="386"/> <source>class docstring is preceded by a blank line</source> <translation>строке документации class предшествует пустая строка</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> <source>class docstring is followed by a blank line</source> <translation>за строкой документации для class следует пустая строка</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> - <source>function/method docstring is preceded by a blank line</source> - <translation>строке документации для function/method предшествует пустая строка</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> + <source>function/method docstring is preceded by a blank line</source> + <translation>строке документации для function/method предшествует пустая строка</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> <source>function/method docstring is followed by a blank line</source> <translation>за строкой документации для function/method следует пустая строка</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> - <source>last paragraph of docstring is followed by a blank line</source> - <translation>за последним абзацем строки документации следует пустая строка</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="399"/> + <source>last paragraph of docstring is followed by a blank line</source> + <translation>за последним абзацем строки документации следует пустая строка</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="402"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation>строка документации не содержит @exception, но function/method вызывает исключение</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="403"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="406"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation>строка документации содержит @exception, но function/method не вызывает исключение</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="426"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="429"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="312"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="315"/> <source>docstring does not contain a summary</source> <translation>строка документации не содержит резюме</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>docstring summary does not start with '{0}'</source> <translation>резюме строки документации не начинается с '{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="407"/> - <source>raised exception '{0}' is not documented in docstring</source> - <translation>вызванное исключение '{0}' не документировано в строке документации</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="410"/> - <source>documented exception '{0}' is not raised</source> - <translation>документированное исключение '{0}' не вызвано</translation> + <source>raised exception '{0}' is not documented in docstring</source> + <translation>вызванное исключение '{0}' не документировано в строке документации</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="413"/> - <source>docstring does not contain a @signal line but class defines signals</source> - <translation>строка документации не содержит строку @signal но сигналы определяет класс</translation> + <source>documented exception '{0}' is not raised</source> + <translation>документированное исключение '{0}' не вызвано</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="416"/> - <source>docstring contains a @signal line but class doesn't define signals</source> - <translation>строка документации содержит строку @signal но класс не определяет сигналы</translation> + <source>docstring does not contain a @signal line but class defines signals</source> + <translation>строка документации не содержит строку @signal но сигналы определяет класс</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="419"/> - <source>defined signal '{0}' is not documented in docstring</source> - <translation>определенный сигнал '{0}' не документирован в строке документации</translation> + <source>docstring contains a @signal line but class doesn't define signals</source> + <translation>строка документации содержит строку @signal но класс не определяет сигналы</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="422"/> + <source>defined signal '{0}' is not documented in docstring</source> + <translation>определенный сигнал '{0}' не документирован в строке документации</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="425"/> <source>documented signal '{0}' is not defined</source> <translation>документированный сигнал '{0}' не определен</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="354"/> <source>class docstring is still a default string</source> <translation>строка документации для class все же является строкой по умолчанию</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347"/> <source>function docstring is still a default string</source> <translation>строка документации для function docstring все же является строкой по умолчанию</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>module docstring is still a default string</source> <translation>строка документации для module все же является строкой по умолчанию</translation> </message> @@ -10397,12 +10627,12 @@ <translation>У&далить всё</translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Add Entry</source> <translation>Добавить запись</translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Enter the entry to add to the list:</source> <translation>Введите строку для добавления в список:</translation> </message> @@ -10871,7 +11101,7 @@ <translation>Снять выделение</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7847"/> + <location filename="../QScintilla/Editor.py" line="7848"/> <source>Check spelling...</source> <translation>Проверка орфографии...</translation> </message> @@ -11096,7 +11326,7 @@ <translation>Редактировать точку останова...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5615"/> + <location filename="../QScintilla/Editor.py" line="5616"/> <source>Enable breakpoint</source> <translation>Разрешить точку останова</translation> </message> @@ -11271,257 +11501,257 @@ <translation>Автодополнение недоступно, так как не задан источник автодополнения.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5618"/> + <location filename="../QScintilla/Editor.py" line="5619"/> <source>Disable breakpoint</source> <translation>Запретить точку останова</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Code Coverage</source> <translation>Покрытие кода</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Please select a coverage file</source> <translation>Пожалуйста, выберите файл покрытия</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>Show Code Coverage Annotations</source> <translation>Показать аннотации по покрытию кода</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6049"/> + <location filename="../QScintilla/Editor.py" line="6050"/> <source>All lines have been covered.</source> <translation>Все строки были охвачены.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>There is no coverage file available.</source> <translation>Нет доступного файла покрытия.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Profile Data</source> <translation>Данные профайлера</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Please select a profile file</source> <translation>Пожалуйста, выберите файл профиля</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>Syntax Error</source> <translation>Синтаксическая ошибка</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>No syntax error message available.</source> <translation>Нет сообщения о синтаксической ошибке.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Macro Name</source> <translation>Имя макроса</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Select a macro name:</source> <translation>Задайте имя макроса:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6754"/> + <location filename="../QScintilla/Editor.py" line="6755"/> <source>Load macro file</source> <translation>Загрузить макрос</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Macro files (*.macro)</source> <translation>Макросы (*.macro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source>Error loading macro</source> <translation>Ошибка при загрузке макроса</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6768"/> + <location filename="../QScintilla/Editor.py" line="6769"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation><p>Невозможно прочитать файл с макросами: <b>{0}</b>.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation><p>Файл с макросами <b>{0}</b> повреждён.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Save macro file</source> <translation>Сохранить файл с макросами</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source>Save macro</source> <translation>Сохранить макрос</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation><p>Макро <b>{0}</b> уже существует. Переписать?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source>Error saving macro</source> <translation>Ошибка при сохранении макроса</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation><p>Невозможно сохранить файл с макросами: <b>{0}</b>.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Start Macro Recording</source> <translation>Начать запись макроса</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Macro recording is already active. Start new?</source> <translation>Запись макроса уже идёт. Начать новую запись?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Macro Recording</source> <translation>Запись макроса</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Enter name of the macro:</source> <translation>Задайте имя макроса:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7009"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>File changed</source> <translation>Файл изменен</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7179"/> + <location filename="../QScintilla/Editor.py" line="7180"/> <source>{0} (ro)</source> <translation>{0} (только чтение)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source>Drop Error</source> <translation>Ошибка Drag&&Drop</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> не является файлом.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7341"/> + <location filename="../QScintilla/Editor.py" line="7342"/> <source>Resources</source> <translation>Ресурсы</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7343"/> + <location filename="../QScintilla/Editor.py" line="7344"/> <source>Add file...</source> <translation>Добавить файл...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7345"/> + <location filename="../QScintilla/Editor.py" line="7346"/> <source>Add files...</source> <translation>Добавить файлы...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7347"/> + <location filename="../QScintilla/Editor.py" line="7348"/> <source>Add aliased file...</source> <translation>Добавить файл под другим именем...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7350"/> + <location filename="../QScintilla/Editor.py" line="7351"/> <source>Add localized resource...</source> <translation>Добавить локализованный ресурс...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7354"/> + <location filename="../QScintilla/Editor.py" line="7355"/> <source>Add resource frame</source> <translation>Добавить фрагмент ресурсов</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7373"/> + <location filename="../QScintilla/Editor.py" line="7374"/> <source>Add file resource</source> <translation>Добавить файл ресурсов</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7389"/> + <location filename="../QScintilla/Editor.py" line="7390"/> <source>Add file resources</source> <translation>Добавить файлы ресурсов</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Add aliased file resource</source> <translation>Добавить файл ресурсов под другим именем</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Alias for file <b>{0}</b>:</source> <translation>Другое имя для файла <b>{0}</b>:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Package Diagram</source> <translation>Диаграмма пакетов</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Include class attributes?</source> <translation>Включать атрибуты класса?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Imports Diagram</source> <translation>Диаграмма импортов</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Include imports from external modules?</source> <translation>Включать импорты из внешних модулей?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Application Diagram</source> <translation>Диаграмма приложения</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Include module names?</source> <translation>Включать имена модулей?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7850"/> + <location filename="../QScintilla/Editor.py" line="7851"/> <source>Add to dictionary</source> <translation>Добавить в словарь</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7852"/> + <location filename="../QScintilla/Editor.py" line="7853"/> <source>Ignore All</source> <translation>Игнорировать всё</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6614"/> + <location filename="../QScintilla/Editor.py" line="6615"/> <source>Warning: {0}</source> <translation>Предупреждение: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6621"/> + <location filename="../QScintilla/Editor.py" line="6622"/> <source>Error: {0}</source> <translation>Ошибка: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7005"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation><br><b>Предупреждение:</b> При переоткрытии все изменения будут потеряны.</translation> </message> @@ -11546,27 +11776,27 @@ <translation>Предыдущее изменение</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>Sort Lines</source> <translation>Сортировать строки</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>The selection contains illegal data for a numerical sort.</source> <translation>Выборка содержит данные неподходящие для сортировки как числа.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>Warning</source> <translation>Предупреждение</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>No warning messages available.</source> <translation>Нет предупреждающего сообщения.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6611"/> + <location filename="../QScintilla/Editor.py" line="6612"/> <source>Style: {0}</source> <translation>Стиль: {0}</translation> </message> @@ -11591,7 +11821,7 @@ <translation>Открыть заново с кодировкой</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6999"/> + <location filename="../QScintilla/Editor.py" line="7000"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation><p>Файл <b>{0}</b> был изменён, будучи открытым в eric6. Перепрочесть?</p></translation> </message> @@ -11616,22 +11846,22 @@ <translation>Список дополнений источника '{0}' уже зарегистрирован. Повторный запрос проигнорирован.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>Call-Tips Provider</source> <translation>Источник всплывающих подсказок</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation>Источник всплывающих подсказок '{0}' уже зарегистрирован. Повторный запрос проигнорирован.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>Register Mouse Click Handler</source> <translation>Регистрация обработчика кликов мышки</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation>Обработчик кликов мышки для "{0}" уже зарегистрирован "{1}". Запрос прерван "{2}"...</translation> </message> @@ -11661,12 +11891,12 @@ <translation>Выполнить выбор в консоли</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source>EditorConfig Properties</source> <translation>Свойства EditorConfig</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation><p>Не удается загрузить свойства EditorConfig для файла <b>{0}</b>.</p></translation> </message> @@ -17038,17 +17268,17 @@ <translation>Введите путь к файлу прошивки</translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="66"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="71"/> <source>Firmware Files (*.img);;All Files (*)</source> <translation>Файлы прошивки (*.img);;Все файлы (*)</translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="72"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="77"/> <source>Backup Firmware</source> <translation>Резервное копирование прошивки</translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="76"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="82"/> <source>Restore Firmware</source> <translation>Восстановить прошивку</translation> </message> @@ -17066,12 +17296,12 @@ <translation>Очистить Flash-память</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="211"/> + <location filename="../MicroPython/EspDevices.py" line="217"/> <source>Flash MicroPython Firmware</source> <translation>Прошивка Flash MicroPython</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="236"/> + <location filename="../MicroPython/EspDevices.py" line="248"/> <source>Flash Additional Firmware</source> <translation>Дополнительная прошивка Flash</translation> </message> @@ -17096,7 +17326,7 @@ <translation>Неподдерживаемый тип чипа '{0}'.</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>'esptool write_flash' Output</source> <translation>Вывод команды 'esptool write_flash'</translation> </message> @@ -17106,47 +17336,47 @@ <translation>Сбросить устройство</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>Backup Firmware</source> <translation>Резервное копирование прошивки</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>Restore Firmware</source> <translation>Восстановить прошивку</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>Show Chip ID</source> <translation>Показать ID чипа</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>Show Flash ID</source> <translation>Показать ID Flash</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>Show MAC Address</source> <translation>Показать MAC-адрес</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>'esptool read_flash' Output</source> <translation>Вывод команды 'esptool read_flash'</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>'esptool chip_id' Output</source> <translation>Вывод команды 'esptool chip_id'</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>'esptool flash_id' Output</source> <translation>Вывод команды 'esptool flash_id'</translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>'esptool read_mac' Output</source> <translation>Вывод команды 'esptool read_mac'</translation> </message> @@ -17179,20 +17409,35 @@ <translation>Введите путь к файлу прошивки</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="72"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="96"/> <source>Address:</source> <translation>Адрес:</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="79"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="103"/> <source>Enter the flash addres in the hexadecimal form</source> <translation>Введите адрес flash-памяти в шестнадцатеричной форме</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="43"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="51"/> <source>Firmware Files (*.bin);;All Files (*)</source> <translation>Файлы прошивки (* .bin);;Все файлы (*)</translation> </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="75"/> + <source>Flash Mode:</source> + <translation>Режим прошивки:</translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="82"/> + <source>Select the flash mode</source> + <translation>Выберите режим прошивки</translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="89"/> + <source>Leave empty to use the default mode.</source> + <translation>Оставьте пустым для режима по умолчанию.</translation> + </message> </context> <context> <name>ExceptionLogger</name> @@ -37616,6 +37861,14 @@ </message> </context> <context> + <name>IgnoredDevicesDialog</name> + <message> + <location filename="../MicroPython/IgnoredDevicesDialog.ui" line="14"/> + <source>Ignored Serial Devices</source> + <translation>Проигнорированные последовательные устройства</translation> + </message> +</context> +<context> <name>ImageMarkupDialog</name> <message> <location filename="../QScintilla/MarkupProviders/ImageMarkupDialog.py" line="52"/> @@ -43417,27 +43670,27 @@ <context> <name>MicroPythonDevice</name> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="214"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="223"/> <source>Unsupported Device</source> <translation>Неподдерживаемое устройство</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="224"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="233"/> <source>REPL is not supported by this device.</source> <translation>REPL не поддерживается этим устройством.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="243"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="252"/> <source>Plotter is not supported by this device.</source> <translation>Плоттер не поддерживается этим устройством.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="262"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="271"/> <source>Running scripts is not supported by this device.</source> <translation>Выполнение скриптов не поддерживается этим устройством.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="282"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="291"/> <source>File Manager is not supported by this device.</source> <translation>Менеджер файлов не поддерживается этим устройством.</translation> </message> @@ -43995,7 +44248,7 @@ <translation>Открыть окно для отображения данных, полученных с выбранного устройства</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="460"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="493"/> <source>Press to connect the selected device</source> <translation>Подключить выбранное устройство</translation> </message> @@ -44024,32 +44277,32 @@ <translation>Поддерживаемые устройства не обнаружены.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="430"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="463"/> <source>Clear</source> <translation>Очистить</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="432"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="465"/> <source>Copy</source> <translation>Копировать</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="433"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="466"/> <source>Paste</source> <translation>Вставить</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="455"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="488"/> <source>Press to disconnect the current device</source> <translation>Отключить выбранное устройство</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>No device attached</source> <translation>Устройство не подключено</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -44062,212 +44315,212 @@ И наконец, нажмите кнопку сброса устройства и подождите несколько секунд, прежде чем повторить попытку.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source>Start REPL</source> <translation>Запустить REPL</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation><p>Неудается запустить REPL.</p><p>Причина:</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source>Serial Device Connect</source> <translation>Подсоединение последовательного устройства</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation><p>Не удается соединиться с устройством через последовательный порт <b>{0}</b>.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source>Run Script</source> <translation>Выполнить скрипт</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="921"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="954"/> <source>There is no editor open. Abort...</source> <translation>Редактор не открыт. Прервать...</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="929"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="962"/> <source>The current editor does not contain a script. Abort...</source> <translation>Текущий редактор не содержит скрипт. Прервать...</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source><p>Cannot run script.</p><p>Reason: {0}</p></source> <translation><p>Не удается выполнить скрипт.</p><p>Причина: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Open Python File</source> <translation>Открыть файл Python</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Python3 Files (*.py);;All Files (*)</source> <translation>Файлы Python3 (*.py);;Все файлы (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source>Start Chart</source> <translation>Построить диаграмму</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> <translation><p>Не удается построить диаграмму.</p><p>Причина: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>Unsaved Chart Data</source> <translation>Несохраненные данные диаграммы</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>The chart contains unsaved data.</source> <translation>Диаграмма содержит несохраненные данные.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source>Start File Manager</source> <translation>Запустить менеджер файлов</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> <translation><p>Не удается запустить менеджер файлов.</p><p>Причина: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1136"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169"/> <source>Show Version</source> <translation>Показать версию</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1139"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1172"/> <source>Show Implementation</source> <translation>Показать исполнение</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source>Synchronize Time</source> <translation>Синхронизировать время</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1147"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1180"/> <source>Show Device Time</source> <translation>Показать время устройства</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1150"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1183"/> <source>Show Local Time</source> <translation>Показать локальное время</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1461"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1497"/> <source>Compile Python File</source> <translation>Компилировать файл Python</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1481"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1517"/> <source>Compile Current Editor</source> <translation>Компилировать текущий редактор</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1188"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224"/> <source><h3>Device Version Information</h3></source> <translation><h3>Информация о версии устройства</h3></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1197"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1233"/> <source>No version information available.</source> <translation>Информация о версии недоступна.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1199"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1235"/> <source>Device Version Information</source> <translation>Информация о версии устройства</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1258"/> <source>unknown</source> <translation>unknown</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source>Device Implementation Information</source> <translation>Информация о исполнении устройства</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}</b>.</p></source> <translation><h3>Информация о исполнении устройства</h3><p>Это устройство содержит <b>{0} {1}</b>.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source><p>The time of the connected device was synchronized with the local time.</p></source> <translation><p>Время подключенного устройства было синхронизировано с локальным временем.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1272"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308"/> <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation><h3>Дата и время устройства</h3><table><tr><td><b>Дата</b></td><td>{0}</td></tr><tr><td><b>Время</b></td><td>{1}</td></tr></table></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1280"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1316"/> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation><h3>Дата и время устройства</h3><p>{0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1294"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1330"/> <source>Device Date and Time</source> <translation>Дата и время устройства</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source>Local Date and Time</source> <translation>Локальные дата и время</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation><h3>Локальные дата и время</h3><table><tr><td><b>Дата</b></td><td>{0}</td></tr><tr><td><b>Время</b></td><td>{1}</td></tr></table></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source>Error handling device</source> <translation>Ошибка обработки устройства</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> <translation><p>Произошла ошибка связи с подключенным устройством.</p><p>Метод: {0}</p><p>Сообщение: {1}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1413"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1449"/> <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> <translation>Кросс-компилятор MicroPython <b>mpy-cross</b> не найден. Убедитесь, что он находится в пути поиска, или настройте его на странице конфигурации MicroPython.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1467"/> <source>Python Files (*.py);;All Files (*)</source> <translation>Файлы Python (*.py);;Все файлы (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1441"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1477"/> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation>Файл Python <b>{0}</b> не существует. Отмена...</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1451"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1487"/> <source>'mpy-cross' Output</source> <translation>Вывод команды 'mpy-cross'</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1474"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1510"/> <source>The current editor does not contain a Python file. Aborting...</source> <translation>Текущий редактор не содержит файл Python. Отмена...</translation> </message> @@ -44282,50 +44535,70 @@ <translation>Открыть менеджер файлов на выбранном устройстве</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1018"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051"/> <source>µPy Chart</source> <translation>µPy диаграммы</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1098"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1131"/> <source>µPy Files</source> <translation>µPy файлы</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1174"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1207"/> <source>Show Documentation</source> <translation>Обзор документации</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1178"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1214"/> <source>Configure</source> <translation>Настройки</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1153"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186"/> <source>Show Time</source> <translation>Показать время</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1170"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1203"/> <source>Download Firmware</source> <translation>Загрузить прошивку</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source>Date and Time</source> <translation>Дата и время</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1333"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1369"/> <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> <translation><table><tr><th></th><th>Дата и время локальные</th><th>Дата и время устройства</th></tr><tr><td><b>Дата</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Время</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> <translation><table><tr><th>Дата и время локальные</th><th>Дата и время устройства</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></translation> </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>Unknown MicroPython Device</source> + <translation>Неизвестное устройство MicroPython</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:eric-bugs@eric-ide.python-projects.org"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> + <translation><p>Обнаружены следующие последовательные устройства</p><ul><li>{0}</li></ul><p>Если это платы MicroPython, то, пожалуйста, сообщите о них вместе с названием платы и их кратким описанием по адресу для<a href="mailto:eric-bugs@eric-ide.python-projects.org"> сообщений об ошибах eric </a>.</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>{0} ({1:04x}/{2:04x})</source> + <translation>{0} ({1:04x}/{2:04x})</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1211"/> + <source>Ignored Serial Devices</source> + <translation>Проигнорированные последовательные устройства</translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -45139,469 +45412,469 @@ <context> <name>MiscellaneousChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="492"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> <source>coding magic comment not found</source> <translation>кодирование magic компонентов не найдено</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> - <source>unknown encoding ({0}) found in coding magic comment</source> - <translation>неизвестный код ({0}) обнаружен в коде magic комментариев</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="498"/> - <source>copyright notice not present</source> - <translation>уведомление об авторских правах не предоставлено</translation> + <source>unknown encoding ({0}) found in coding magic comment</source> + <translation>неизвестный код ({0}) обнаружен в коде magic комментариев</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="501"/> + <source>copyright notice not present</source> + <translation>уведомление об авторских правах не предоставлено</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> <source>copyright notice contains invalid author</source> <translation>уведомление об авторских правах содержит недействительного автора</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="702"/> - <source>found {0} formatter</source> - <translation>найден {0} форматтер</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> - <source>format string does contain unindexed parameters</source> - <translation>строка формата действительно содержит неиндексированные параметры</translation> + <source>found {0} formatter</source> + <translation>найден {0} форматтер</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> - <source>docstring does contain unindexed parameters</source> - <translation>строка документации действительно содержит неиндексированные параметры</translation> + <source>format string does contain unindexed parameters</source> + <translation>строка формата действительно содержит неиндексированные параметры</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> - <source>other string does contain unindexed parameters</source> - <translation>другая строка действительно содержит неиндексированные параметры</translation> + <source>docstring does contain unindexed parameters</source> + <translation>строка документации действительно содержит неиндексированные параметры</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> - <source>format call uses too large index ({0})</source> - <translation>формат вызова использует слишком большой индекс ({0})</translation> + <source>other string does contain unindexed parameters</source> + <translation>другая строка действительно содержит неиндексированные параметры</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> - <source>format call uses missing keyword ({0})</source> - <translation>формат вызова использует отсутствующее ключевое слово ({0})</translation> + <source>format call uses too large index ({0})</source> + <translation>формат вызова использует слишком большой индекс ({0})</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> - <source>format call uses keyword arguments but no named entries</source> - <translation>формат вызова использует ключевые аргументы, но нет именованных записей</translation> + <source>format call uses missing keyword ({0})</source> + <translation>формат вызова использует отсутствующее ключевое слово ({0})</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> - <source>format call uses variable arguments but no numbered entries</source> - <translation>формат ячейки использует переменные аргументы, но нет пронумерованных записей</translation> + <source>format call uses keyword arguments but no named entries</source> + <translation>формат вызова использует ключевые аргументы, но нет именованных записей</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> - <source>format call uses implicit and explicit indexes together</source> - <translation>формат вызова использует скрытые и явные индексы вместе</translation> + <source>format call uses variable arguments but no numbered entries</source> + <translation>формат ячейки использует переменные аргументы, но нет пронумерованных записей</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> - <source>format call provides unused index ({0})</source> - <translation>формат вызова предоставляет неиспользованный индекс ({0})</translation> + <source>format call uses implicit and explicit indexes together</source> + <translation>формат вызова использует скрытые и явные индексы вместе</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> + <source>format call provides unused index ({0})</source> + <translation>формат вызова предоставляет неиспользованный индекс ({0})</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> <source>format call provides unused keyword ({0})</source> <translation>формат вызова предоставляет неиспользуемое ключевое слово ({0})</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="751"/> - <source>expected these __future__ imports: {0}; but only got: {1}</source> - <translation>ожидался __future__ imports: {0}; получены только: {1}</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> + <source>expected these __future__ imports: {0}; but only got: {1}</source> + <translation>ожидался __future__ imports: {0}; получены только: {1}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> <source>expected these __future__ imports: {0}; but got none</source> <translation>ожидался __future__ imports: {0}; не получено ничего</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="761"/> - <source>print statement found</source> - <translation>обнаружена инструкция печати</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> + <source>print statement found</source> + <translation>обнаружена инструкция печати</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="767"/> <source>one element tuple found</source> <translation>один элемент кортежа найден</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="800"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="803"/> <source>{0}: {1}</source> <translation>{0}: {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="507"/> <source>"{0}" is a Python builtin and is being shadowed; consider renaming the variable</source> <translation>"{0}" является встроенным именем Python и затеняется; рассмотрите возможность переименования переменной</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="508"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="511"/> <source>"{0}" is used as an argument and thus shadows a Python builtin; consider renaming the argument</source> <translation>"{0}" используется как аргумент и таким образом затеняет встроенные имена Python; рассмотрите возможность переименования аргумента</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="512"/> - <source>unnecessary generator - rewrite as a list comprehension</source> - <translation>неподходящий генератор - перепишите как списк выражений</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="515"/> - <source>unnecessary generator - rewrite as a set comprehension</source> - <translation>неподходящий генератор - перепишите как набор выражений</translation> + <source>unnecessary generator - rewrite as a list comprehension</source> + <translation>неподходящий генератор - перепишите как списк выражений</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="518"/> - <source>unnecessary generator - rewrite as a dict comprehension</source> - <translation>неподходящий генератор - перепишите как словарь выражений</translation> + <source>unnecessary generator - rewrite as a set comprehension</source> + <translation>неподходящий генератор - перепишите как набор выражений</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="521"/> - <source>unnecessary list comprehension - rewrite as a set comprehension</source> - <translation>неподходящий список выражений - перепишите как набор выражений</translation> + <source>unnecessary generator - rewrite as a dict comprehension</source> + <translation>неподходящий генератор - перепишите как словарь выражений</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="524"/> + <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <translation>неподходящий список выражений - перепишите как набор выражений</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> <source>unnecessary list comprehension - rewrite as a dict comprehension</source> <translation>неподходящий список выражений - перепишите как словарь выражений</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> <source>unnecessary list comprehension - "{0}" can take a generator</source> <translation>неподходящий список выражений - "{0}" может являться генератором</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="770"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> <source>mutable default argument of type {0}</source> <translation>изменяемый аргумент по умолчанию типа {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> <source>sort keys - '{0}' should be before '{1}'</source> <translation>ключи сортировки - '{0}' должны быть прежде чем '{1}'</translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> + <source>logging statement uses '%'</source> + <translation>инструкция ведения журнала использует '%'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> + <source>logging statement uses f-string</source> + <translation>инструкция ведения журнала использует f-string</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="750"/> + <source>logging statement uses 'warn' instead of 'warning'</source> + <translation>инструкция ведения журнала использует 'warn' вместо 'warning'</translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> - <source>logging statement uses '%'</source> - <translation>инструкция ведения журнала использует '%'</translation> + <source>logging statement uses string.format()</source> + <translation>инструкция ведения журнала использует string.format()</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> - <source>logging statement uses f-string</source> - <translation>инструкция ведения журнала использует f-string</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> - <source>logging statement uses 'warn' instead of 'warning'</source> - <translation>инструкция ведения журнала использует 'warn' вместо 'warning'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> - <source>logging statement uses string.format()</source> - <translation>инструкция ведения журнала использует string.format()</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> <source>logging statement uses '+'</source> <translation>инструкция ведения журнала использует '+'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="760"/> <source>gettext import with alias _ found: {0}</source> <translation>gettext import with alias _ found: {0}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="648"/> - <source>Python does not support the unary prefix increment</source> - <translation>Python не поддерживает инкремент унарного префикса</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> - <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> - <translation>'sys.maxint' не определен в Python 3 - используйте 'sys.maxsize'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> - <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> - <translation>'BaseException.message' устарел в Python 2.6 и удален в Python 3 - используйте 'str(e)'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> - <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> - <translation>назначение 'os.environ' не очищает среду окружения - используйте 'os.environ.clear()'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> - <source>Python 3 does not include '.iter*' methods on dictionaries</source> - <translation>Python 3 не включает методы '.iter*' в словарях</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> - <source>Python 3 does not include '.view*' methods on dictionaries</source> - <translation>Python 3 не включает методы '.view*' в словарях</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> - <source>'.next()' does not exist in Python 3</source> - <translation>'.next()' не существует в Python 3</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> - <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> - <translation>'__metaclass__' не работает в Python 3 - используйте 'class MyClass(BaseClass, metaclass=...)'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> - <source>mutable default argument of function call '{0}'</source> - <translation>измененный аргумент по умолчанию для вызова функции '{0}'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> - <source>using .strip() with multi-character strings is misleading</source> - <translation>использование .strip() с многосимвольными строками приводит к заблуждению</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> - <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> - <translation>использование 'hasattr(x, "__call__")' для проверки является ли 'x' вызываемым - ненадежно</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> - <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> - <translation>переменная {0} управления циклом не используется внутри цикла - начните имя символом подчеркивания</translation> + <source>Python does not support the unary prefix increment</source> + <translation>Python не поддерживает инкремент унарного префикса</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> + <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> + <translation>'sys.maxint' не определен в Python 3 - используйте 'sys.maxsize'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="663"/> + <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> + <translation>'BaseException.message' устарел в Python 2.6 и удален в Python 3 - используйте 'str(e)'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> + <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> + <translation>назначение 'os.environ' не очищает среду окружения - используйте 'os.environ.clear()'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> + <source>Python 3 does not include '.iter*' methods on dictionaries</source> + <translation>Python 3 не включает методы '.iter*' в словарях</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> + <source>Python 3 does not include '.view*' methods on dictionaries</source> + <translation>Python 3 не включает методы '.view*' в словарях</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> + <source>'.next()' does not exist in Python 3</source> + <translation>'.next()' не существует в Python 3</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="700"/> + <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> + <translation>'__metaclass__' не работает в Python 3 - используйте 'class MyClass(BaseClass, metaclass=...)'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="776"/> - <source>None should not be added at any return if function has no return value except None</source> - <translation>если функция не имеет возвращаемого значения, (кроме None), None не следует добавлять в каждый return</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="780"/> - <source>an explicit value at every return should be added if function has a return value except None</source> - <translation>если функция имеет возвращаемое значение, (кроме None), то явное значение должно быть добавлено каждому return</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="784"/> - <source>an explicit return at the end of the function should be added if it has a return value except None</source> - <translation>в конец функции, если она имеет возвращаемое значение, (кроме None), должен быть добавлен явный return</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="788"/> - <source>a value should not be assigned to a variable if it will be used as a return value only</source> - <translation>значение не должно присваиваться переменной, если оно будет использоваться только как возвращаемое значение</translation> + <source>mutable default argument of function call '{0}'</source> + <translation>измененный аргумент по умолчанию для вызова функции '{0}'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> + <source>using .strip() with multi-character strings is misleading</source> + <translation>использование .strip() с многосимвольными строками приводит к заблуждению</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="681"/> + <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> + <translation>использование 'hasattr(x, "__call__")' для проверки является ли 'x' вызываемым - ненадежно</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="671"/> + <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <translation>переменная {0} управления циклом не используется внутри цикла - начните имя символом подчеркивания</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <source>None should not be added at any return if function has no return value except None</source> + <translation>если функция не имеет возвращаемого значения, (кроме None), None не следует добавлять в каждый return</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="783"/> + <source>an explicit value at every return should be added if function has a return value except None</source> + <translation>если функция имеет возвращаемое значение, (кроме None), то явное значение должно быть добавлено каждому return</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="787"/> + <source>an explicit return at the end of the function should be added if it has a return value except None</source> + <translation>в конец функции, если она имеет возвращаемое значение, (кроме None), должен быть добавлен явный return</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="791"/> + <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <translation>значение не должно присваиваться переменной, если оно будет использоваться только как возвращаемое значение</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> <source>do not call assert False since python -O removes these calls</source> <translation>не используйте вызовы assert False, так как python -O удаляет эти вызовы</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="672"/> - <source>unncessary f-string</source> - <translation>ненужная f-string</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="675"/> + <source>unncessary f-string</source> + <translation>ненужная f-string</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> <source>cannot use 'self.__class__' as first argument of 'super()' call</source> <translation>не используйте 'self .__ class__' в качестве первого аргумента вызова 'super ()'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> - <source>do not call getattr with a constant attribute value</source> - <translation>не используйте вызовы getattr с постоянным значением атрибута</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> + <source>do not call getattr with a constant attribute value</source> + <translation>не используйте вызовы getattr с постоянным значением атрибута</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>do not call setattr with a constant attribute value</source> <translation>не используйте вызовы setattr с постоянным значением атрибута</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="796"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="799"/> <source>commented code lines should be removed</source> <translation>закомментированные строки кода должны быть удалены</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="792"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="795"/> <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source> <translation>для предполагаемого продолжения строки предпочтительнее использование круглых, квадратных или фигурных скобок, а не обратного слеша</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="559"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="562"/> <source>use of 'datetime.datetime()' without 'tzinfo' argument should be avoided</source> <translation>следует избегать использования 'datetime.datetime()' без аргумента 'tzinfo'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="566"/> <source>use of 'datetime.datetime.today()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation>следует избегать использования 'datetime.datetime.today()'. Взамен используйте 'datetime.datetime.now(tz=)'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> <source>use of 'datetime.datetime.utcnow()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation>следует избегать использования 'datetime.datetime.utcnow()'. Взамен используйте 'datetime.datetime.now(tz=)'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="571"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="574"/> <source>use of 'datetime.datetime.utcfromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(, tz=)' instead.</source> <translation>следует избегать использования 'datetime.datetime.utcfromtimestamp()'. Взамен используйте 'datetime.datetime.fromtimestamp(, tz=)'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>use of 'datetime.datetime.now()' without 'tz' argument should be avoided</source> <translation>следует избегать использования 'datetime.datetime.now()' без аргумента 'tz'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> <source>use of 'datetime.datetime.fromtimestamp()' without 'tz' argument should be avoided</source> <translation>следует избегать использования 'datetime.datetime.fromtimestamp()' без аргумента 'tz'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="583"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="586"/> <source>use of 'datetime.datetime.strptime()' should be followed by '.replace(tzinfo=)'</source> <translation>применение 'datetime.datetime.strptime()' должно сопровождаться '.replace(tzinfo=)'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> <source>use of 'datetime.date()' should be avoided. Use 'datetime.datetime(, tzinfo=).date()' instead.</source> <translation>следует избегать использования 'datetime.date()'. Взамен используйте 'datetime.datetime(, tzinfo=).date()'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> <source>use of 'datetime.date.today()' should be avoided. Use 'datetime.datetime.now(tz=).date()' instead.</source> <translation>следует избегать использования 'datetime.date.today()'. Взамен используйте 'datetime.datetime.now(tz=).date()'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="598"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="601"/> <source>use of 'datetime.date.fromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> <translation>следует избегать использования 'datetime.date.fromtimestamp()'. Взамен используйте 'datetime.datetime.fromtimestamp(tz=).date()'.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> <translation>следует избегать использования 'datetime.time()' без аргумента 'tzinfo'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> <translation>следует избегать использования 'datetime.datetime.fromordinal()'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> - <source>use of 'datetime.date.fromordinal()' should be avoided</source> - <translation>следует избегать использования 'datetime.date.fromordinal()'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> + <source>use of 'datetime.date.fromordinal()' should be avoided</source> + <translation>следует избегать использования 'datetime.date.fromordinal()'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> <source>use of 'datetime.date.fromisoformat()' should be avoided</source> <translation>следует избегать использования 'datetime.date.fromordinal()'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> <source>unnecessary {0} call - rewrite as a literal</source> <translation>неподходящий вызов {0} - перепишите как литерал</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> - <source>unnecessary {0} literal - rewrite as a {1} literal</source> - <translation>неподходящий литерал {0} - перепишите как литерал {1}</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="536"/> - <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> - <translation>неподходящий {0} передан в tuple() - перепишите как литерал {1}</translation> + <source>unnecessary {0} literal - rewrite as a {1} literal</source> + <translation>неподходящий литерал {0} - перепишите как литерал {1}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="539"/> - <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> - <translation>неподходящий {0} передан в list() - перепишите как литерал {1}</translation> + <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> + <translation>неподходящий {0} передан в tuple() - перепишите как литерал {1}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="542"/> - <source>unnecessary list call - remove the outer call to list()</source> - <translation>лишний вызов списка - удалите внешний вызов list()</translation> + <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> + <translation>неподходящий {0} передан в list() - перепишите как литерал {1}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="545"/> - <source>unnecessary list comprehension - "in" can take a generator</source> - <translation>неподходящий список выражений - "in" может take a generator</translation> + <source>unnecessary list call - remove the outer call to list()</source> + <translation>лишний вызов списка - удалите внешний вызов list()</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="548"/> - <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> - <translation>неподходящий {0} передан в tuple() - удалите внешний вызов в {1}()</translation> + <source>unnecessary list comprehension - "in" can take a generator</source> + <translation>неподходящий список выражений - "in" может take a generator</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="551"/> + <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <translation>неподходящий {0} передан в tuple() - удалите внешний вызов в {1}()</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>unnecessary {0} passed to list() - remove the outer call to {1}()</source> <translation>неподходящий {0} передан в list() - удалите внешний вызов в {1}()</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="613"/> - <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation>'sys.version[:3]' referenced (Python 3.10), используйте 'sys.version_info'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="616"/> - <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation>'sys.version[2]' referenced (Python 3.10), используйте 'sys.version_info'</translation> + <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation>'sys.version[:3]' referenced (Python 3.10), используйте 'sys.version_info'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="619"/> + <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation>'sys.version[2]' referenced (Python 3.10), используйте 'sys.version_info'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="622"/> <source>'sys.version' compared to string (Python 3.10), use 'sys.version_info'</source> <translation>'sys.version' compared to string (Python 3.10), используйте 'sys.version_info'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> - <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> - <translation>'sys.version_info[0] == 3' referenced (Python 4), используйте '>='</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> - <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> - <translation>'six.PY3' referenced (Python 4), используйте 'not six.PY2'</translation> + <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> + <translation>'sys.version_info[0] == 3' referenced (Python 4), используйте '>='</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="629"/> + <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <translation>'six.PY3' referenced (Python 4), используйте 'not six.PY2'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="632"/> <source>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="633"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> <source>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="637"/> - <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> - <translation>'sys.version[0]' referenced (Python 10), используйте 'sys.version_info'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="640"/> + <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> + <translation>'sys.version[0]' referenced (Python 10), используйте 'sys.version_info'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="643"/> <source>'sys.version' compared to string (Python 10), use 'sys.version_info'</source> <translation>'sys.version' compared to string (Python 10), используйте 'sys.version_info'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>'sys.version[:1]' referenced (Python 10), use 'sys.version_info'</source> <translation>'sys.version[:1]' referenced (Python 10), используйте 'sys.version_info'</translation> </message> @@ -46057,72 +46330,72 @@ <context> <name>NamingStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> <source>class names should use CapWords convention</source> <translation>имена классов должны использовать CapWords соглашение</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> - <source>function name should be lowercase</source> - <translation>имена функций должны быть в нижнем регистре</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="438"/> - <source>argument name should be lowercase</source> - <translation>имена парамеров должны быть в нижнем регистре</translation> + <source>function name should be lowercase</source> + <translation>имена функций должны быть в нижнем регистре</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> - <source>first argument of a class method should be named 'cls'</source> - <translation>первый параметр метода класса должен быть 'cls'</translation> + <source>argument name should be lowercase</source> + <translation>имена парамеров должны быть в нижнем регистре</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="444"/> - <source>first argument of a method should be named 'self'</source> - <translation>первый параметр метода должен быть 'self'</translation> + <source>first argument of a class method should be named 'cls'</source> + <translation>первый параметр метода класса должен быть 'cls'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> + <source>first argument of a method should be named 'self'</source> + <translation>первый параметр метода должен быть 'self'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>first argument of a static method should not be named 'self' or 'cls</source> <translation>первый параметр статического метода класса не должен быть 'cls' или 'self'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="451"/> - <source>module names should be lowercase</source> - <translation>имена модулей должны быть в нижнем регистре</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="454"/> - <source>package names should be lowercase</source> - <translation>имена пакетов должны быть в нижнем регистре</translation> + <source>module names should be lowercase</source> + <translation>имена модулей должны быть в нижнем регистре</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="457"/> - <source>constant imported as non constant</source> - <translation>константа импортирована как не константа</translation> + <source>package names should be lowercase</source> + <translation>имена пакетов должны быть в нижнем регистре</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="460"/> - <source>lowercase imported as non lowercase</source> - <translation>имена в нижнем регистре импортированы не в нижнем регистре</translation> + <source>constant imported as non constant</source> + <translation>константа импортирована как не константа</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="463"/> - <source>camelcase imported as lowercase</source> - <translation>имена в camelcase импортированы в нижнем регистре</translation> + <source>lowercase imported as non lowercase</source> + <translation>имена в нижнем регистре импортированы не в нижнем регистре</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="466"/> - <source>camelcase imported as constant</source> - <translation>имена в camelcase импортированы как константы</translation> + <source>camelcase imported as lowercase</source> + <translation>имена в camelcase импортированы в нижнем регистре</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="469"/> - <source>variable in function should be lowercase</source> - <translation>имена переменных в функции должны быть в нижнем регистре</translation> + <source>camelcase imported as constant</source> + <translation>имена в camelcase импортированы как константы</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="472"/> + <source>variable in function should be lowercase</source> + <translation>имена переменных в функции должны быть в нижнем регистре</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="475"/> <source>names 'l', 'O' and 'I' should be avoided</source> <translation>имена 'l', 'O' и 'I' следует избегать</translation> </message> @@ -46163,50 +46436,50 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="201"/> <source>SSL Certificate Error</source> <translation>Ошибка сертификата SSL</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> - <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> - <translation><b>{0}</b><p>Страница, к которой вы пытаетесь получить доступ, имет ошибки сертификата SSL.</p><ul><li>{1}</li></ul><p>Хотите сделать исключение?</p></translation> - </message> - <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="205"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="212"/> <source>&Permanent accept</source> <translation>Принимать &всегда</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="207"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="214"/> <source>&Temporary accept</source> <translation>Принимать вр&еменно</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="209"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="216"/> <source>&Reject</source> <translation>&Отвергать</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="243"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="284"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation><b>Введите имя пользователя и пароль для '{0}'; realm '{1}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="247"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="288"/> <source><b>Enter username and password for '{0}'</b></source> <translation><b>Введите имя пользователя и пароль для '{0}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="295"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="336"/> <source>Authentication required</source> <translation>Требуется аутентификация</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="296"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="337"/> <source>Authentication is required to access:</source> <translation>Для доступа требуется аутентификация:</translation> </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="202"/> + <source><b>{0}</b><p>The host <b>{1}</b> you are trying to access has errors in the SSL certificate.</p><ul><li>{2}</li></ul><p>Would you like to make an exception?</p></source> + <translation><b>{0}</b><p>Хост <b>{1}</b>, к которому вы пытаетесь обратиться, содержит ошибки сертификата SSL.</p><ul><li>{2}</li></ul><p>Хотите сделать исключение?</p></translation> + </message> </context> <context> <name>NetworkPage</name> @@ -47523,6 +47796,41 @@ <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source> <translation>Вы пытаетесь обновить PyQt пакеты. Это может не работать для текущего экземпляра Python ({0}). Вы хотите продолжить?</translation> </message> + <message> + <location filename="../PipInterface/Pip.py" line="679"/> + <source>Cache Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="704"/> + <source>List Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="694"/> + <source>Enter a file pattern (empty for all):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="728"/> + <source>Remove Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="720"/> + <source>Enter a file pattern:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="751"/> + <source>Purge Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="744"/> + <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PipDialog</name> @@ -48277,7 +48585,7 @@ <translation>Восстановить Pip</translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/> <source>Install Packages</source> <translation>Установить пакеты</translation> </message> @@ -48302,29 +48610,49 @@ <translation>Генерация зависимостей...</translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="942"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="955"/> <source>Edit User Configuration...</source> <translation>Правка конфигурации пользователя...</translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="945"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="958"/> <source>Edit Environment Configuration...</source> <translation>Правка конфигурации среды окружения...</translation> </message> <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="963"/> + <source>Configure...</source> + <translation>Настроить...</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>Edit Configuration</source> + <translation>Правка конфигурации</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>No valid configuration path determined. Aborting</source> + <translation>Не определен допустимый путь конфигурации. Прерывание</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="941"/> + <source>Show Cache Info...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="944"/> + <source>Show Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="947"/> + <source>Remove Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../PipInterface/PipPackagesWidget.py" line="950"/> - <source>Configure...</source> - <translation>Настроить...</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>Edit Configuration</source> - <translation>Правка конфигурации</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>No valid configuration path determined. Aborting</source> - <translation>Не определен допустимый путь конфигурации. Прерывание</translation> + <source>Purge Cache...</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -49591,17 +49919,17 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1640"/> + <location filename="../Preferences/__init__.py" line="1645"/> <source>Export Preferences</source> <translation>Экспорт предпочтений</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Import Preferences</source> <translation>Импорт предпочтений</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Properties File (*.ini);;All Files (*)</source> <translation>Файлы предпочтений (*.ini);;Все файлы (*)</translation> </message> @@ -58770,22 +59098,22 @@ <translation><font color="#FF0000"><b>Примечание:</b> Эти изменения вступят в силу при следующем запуске приложения.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="90"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="85"/> <source>Qt Tools</source> <translation>Инструменты Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="123"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="118"/> <source>The tool executable is composed of the prefix, the tool name and the postfix. For win, the extension is added automatically.</source> <translation>Имя исполняемого файла программы состоит из префикса, имени программы и постфикса. Для windows же расширение добавляется автоматически.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="169"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="164"/> <source>This gives an example of the complete tool name</source> <translation>Пример полного имени инструмента</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="172"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="167"/> <source>designer</source> <translation>designer</translation> </message> @@ -58800,67 +59128,52 @@ <translation>Задайте путь к директории переводов Qt.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> - <source><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></source> - <translation><b>Примечание:</b> Оставьте эту строку пустой, чтобы использовать переменную среды окружения или путь в библиотеку Qt. Поддерживаются переменные сред окружения -<ul> -<li>QT4TRANSLATIONSDIR для Qt4</li> -<li>QT5TRANSLATIONSDIR для Qt5</li> -<li>QTTRANSLATIONSDIR для любого варианта Qt</li> -</ul></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="135"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="130"/> <source>Qt-Prefix:</source> <translation>Qt-префикс:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="137"/> <source>Enter the prefix for the Qt tools name</source> <translation>Задайте префикс для инструментов Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="144"/> <source>Qt-Postfix:</source> <translation>Qt-постфикс:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="151"/> <source>Enter the postfix for the Qt tools name</source> <translation>Задайте постфикс для инструментов Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="221"/> <source>Indent Width:</source> <translation>Ширина отступа:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="233"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="228"/> <source>Select the indent width (default: 4)</source> <translation>Задайте ширину отступа (по умолчанию: 4)</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="327"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="322"/> <source>Generate imports relative to '.'</source> <translation>Генерировать импорт относительно '.'</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="296"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="291"/> <source>Tools Directory:</source> <translation>Директория инструментов:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="114"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="109"/> <source>Enter the path of the Qt tools directory, if they are not found.</source> <translation>Задайте путь к директории инструментов Qt, если они не найдены.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="211"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="206"/> <source>Enter the path of the PyQt tools directory, if they are not found.</source> <translation>Задайте путь к директории инструментов PyQT, если они не найдены.</translation> </message> @@ -58870,7 +59183,7 @@ <translation>Например: {0}designer{1}</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="312"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="307"/> <source>Enter the path of the PySide2 tools directory, if they are not found.</source> <translation>Задайте путь к директории инструментов PySide2, если они не найдены.</translation> </message> @@ -58880,35 +59193,40 @@ <translation>Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="187"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="182"/> <source>PyQt</source> <translation>PyQt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="220"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="215"/> <source>pyuic Options</source> <translation>Опции pyuic</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="272"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="267"/> <source>Select to generate extra code to test and display the form</source> <translation>Разрешить генерировать дополнительный код для тестирования и отображения формы</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="275"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="270"/> <source>Generate Extra Test Code</source> <translation>Генерировать дополнительный тестовый код</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="288"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="283"/> <source>PySide2</source> <translation>PySide2</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="316"/> <source>pyside2-uic Options</source> <translation>Опции pyside2-uic</translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> + <source><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</source> + <translation><b>Примечание:</b> Оставьте это поле пустым чтобы использовать подготовленный путь к библиотеке Qt.</translation> + </message> </context> <context> <name>Queues</name> @@ -60740,6 +61058,334 @@ </message> </context> <context> + <name>Security</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="16"/> + <source>Use of 'assert' detected. The enclosed code will be removed when compiling to optimised byte code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="22"/> + <source>Use of 'exec' detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="27"/> + <source>'chmod' setting a permissive mask {0} on file ({1}).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="32"/> + <source>Possible binding to all interfaces.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="43"/> + <source>Possible hardcoded password: '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="48"/> + <source>Probable insecure usage of temp file/directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="53"/> + <source>Try, Except, Pass detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="56"/> + <source>Try, Except, Continue detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="61"/> + <source>A Flask app appears to be run with debug=True, which exposes the Werkzeug debugger and allows the execution of arbitrary code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="67"/> + <source>Pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="71"/> + <source>Deserialization with the marshal module is possibly dangerous.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="74"/> + <source>Use of insecure MD2, MD4, MD5, or SHA1 hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="77"/> + <source>Use of insecure cipher '{0}'. Replace with a known secure cipher such as AES.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="81"/> + <source>Use of insecure cipher mode '{0}'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="84"/> + <source>Use of insecure and deprecated function (mktemp).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="87"/> + <source>Use of possibly insecure function - consider using safer ast.literal_eval.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="91"/> + <source>Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="95"/> + <source>Use of HTTPSConnection on older versions of Python prior to 2.7.9 and 3.4.3 do not provide security, see https://wiki.openstack.org/wiki/OSSN/OSSN-0033</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="100"/> + <source>Audit url open for permitted schemes. Allowing use of file:/ or custom schemes is often unexpected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="104"/> + <source>Standard pseudo-random generators are not suitable for security/cryptographic purposes.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="108"/> + <source>Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="142"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="147"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="152"/> + <source>FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="156"/> + <source>The input method in Python 2 will read from standard input, evaluate and run the resulting string as Python source code. This is similar, though in many ways worse, than using eval. On Python 2, use raw_input instead, input is safe in Python 3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="162"/> + <source>By default, Python will create a secure, verified SSL context for use in such classes as HTTPSConnection. However, it still allows using an insecure context via the _create_unverified_context that reverts to the previous behavior that does not validate certificates or perform hostname checks.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="169"/> + <source>Use of os.tempnam() and os.tmpnam() is vulnerable to symlink attacks. Consider using tmpfile() instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="175"/> + <source>Use of insecure {0} hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="180"/> + <source>A telnet-related module is being imported. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="184"/> + <source>A FTP-related module is being imported. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="192"/> + <source>Consider possible security implications associated with the '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="216"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="221"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="226"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Use defused.xmlrpc.monkey_patch() function to monkey-patch xmlrpclib and mitigate XML vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="231"/> + <source>Consider possible security implications associated with '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="235"/> + <source>The pyCrypto library and its module '{0}' are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="242"/> + <source>'requests' call with verify=False disabling SSL certificate checks, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="248"/> + <source>'ssl.wrap_socket' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="252"/> + <source>'SSL.Context' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="256"/> + <source>Function call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="260"/> + <source>Function definition identified with insecure SSL/TLS protocol version by default, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="264"/> + <source>'ssl.wrap_socket' call with no SSL/TLS protocol version specified, the default 'SSLv23' could be insecure, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="270"/> + <source>{0} key sizes below {1:d} bits are considered breakable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="275"/> + <source>Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary objects. Consider 'yaml.safe_load()'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="281"/> + <source>Paramiko call with policy set to automatically trust the unknown host key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="287"/> + <source>Possible shell injection via 'Paramiko' call, check inputs are properly sanitized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="291"/> + <source>'subprocess' call with shell=True seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="295"/> + <source>'subprocess' call with shell=True identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="298"/> + <source>'subprocess' call - check for execution of untrusted input.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="301"/> + <source>Function call with shell=True parameter identified, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="305"/> + <source>Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="309"/> + <source>Starting a process with a shell, possible injection detected, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="313"/> + <source>Starting a process without a shell.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="316"/> + <source>Starting a process with a partial executable path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="321"/> + <source>Possible SQL injection vector through string-based query construction.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="327"/> + <source>Possible wildcard injection in call: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="332"/> + <source>Use of 'extra()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="335"/> + <source>Use of 'RawSQL()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="340"/> + <source>Using jinja2 templates with 'autoescape=False' is dangerous and can lead to XSS. Use 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="345"/> + <source>By default, jinja2 sets 'autoescape' to False. Consider using 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="352"/> + <source>Mako templates allow HTML/JS rendering by default and are inherently open to XSS attacks. Ensure variables in all templates are properly sanitized via the 'n', 'h' or 'x' flags (depending on context). For example, to HTML escape the variable 'data' do ${{ data |h }}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="360"/> + <source>Potential XSS on 'mark_safe()' function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="365"/> + <source>Possible hardcoded AWS access key ID: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="368"/> + <source>Possible hardcoded AWS secret access key: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="373"/> + <source>{0}: {1}</source> + <translation type="unfinished">{0}: {1}</translation> + </message> +</context> +<context> <name>SecurityPage</name> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="37"/> @@ -60759,7 +61405,7 @@ <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="55"/> <source>Select to use a master password</source> - <translation>Использовать мастер-пароль</translation> + <translation>Разрешить использовать мастер-пароль</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="58"/> @@ -60781,6 +61427,21 @@ <source><b>Configure security settings</b></source> <translation><b>Настройка безопасности</b></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="96"/> + <source>Certificate Errors</source> + <translation>Ошибки сертификата</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="102"/> + <source>Select to always reject web pages with certificate issues</source> + <translation>Разрешить всегда отклонять вебстраницы с проблемами сертификаты</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="105"/> + <source>Always reject URLs with certificate errors</source> + <translation>Всегда отклонять URL-адреса с ошибками сертификата</translation> + </message> </context> <context> <name>SendRefererWhitelistDialog</name> @@ -62744,75 +63405,80 @@ <translation><b>Информация о безопасности</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="168"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="171"/> <source>Media</source> <translation>Мультимедиа</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="184"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="187"/> <source>Image</source> <translation>Изображение</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="189"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="192"/> <source>Image Address</source> <translation>Адрес изображения</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="197"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="200"/> <source><b>Preview</b></source> <translation><b>Предварительный просмотр</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="216"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="238"/> <source>Preview not available.</source> <translation>Предварительный просмотр не возможен.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="243"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="265"/> <source>Copy Image Location to Clipboard</source> <translation>Копировать адрес изображения в буфер</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="246"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="268"/> <source>Copy Image Name to Clipboard</source> <translation>Копировать имя изображения в буфер</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source>Save Image</source> <translation>Сохранить изображение</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="299"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="321"/> <source>All Files (*)</source> <translation>Все файлы (*)</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source><p>Cannot write to file <b>{0}</b>.</p></source> <translation><p>Невозможно записать в файл: <b>{0}</b></p></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="229"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="251"/> <source>Loading...</source> <translation>Загрузка...</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="287"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="309"/> <source><p>This preview is not available.</p></source> <translation><p>Предварительный просмотр недоступен.</p></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="76"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="97"/> <source><b>Connection is encrypted.</b></source> <translation><b>Соединение зашифровано.</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="80"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="102"/> <source><b>Connection is not encrypted.</b></source> <translation><b>Соединение не зашифровано.</b></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="87"/> + <source><b>Connection is encrypted but may be insecure.</b></source> + <translation><b>Соединение зашифровано, но может быть небезопасно.</b></translation> + </message> </context> <context> <name>SiteInfoWidget</name> @@ -62822,60 +63488,65 @@ <translation><b>Сайт {0}</b></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="62"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="69"/> <source>Your connection to this site is <b>secure</b>.</source> <translation>Ваше соединение с этим сайтом <b>защищено</b>.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="67"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="74"/> <source>Your connection to this site is <b>not secure</b>.</source> <translation>Ваше соединение с этим сайтом <b>не защищено</b>.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="82"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="89"/> <source>This is your <b>{0}.</b> visit of this site.</source> <translation>Это ваше <b>{0}.</b> посещение этого сайта.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="88"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="95"/> <source>You have <b>never</b> visited this site before.</source> <translation>Вы <b>никогда</b> не посещали этот сайт раньше.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="97"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="104"/> <source>first</source> <translation>первое</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="99"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="106"/> <source>second</source> <translation>второе</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="101"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="108"/> <source>third</source> <translation>третье</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="102"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="109"/> <source>This is your <b>{0}</b> visit of this site.</source> <translation>Это ваше <b>{0}</b> посещение этого сайта.</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="123"/> - <source>Register as <b>{0}</b> links handler.</source> - <translation>Регистрация как <b>{0}</b> обработчик ссылок.</translation> - </message> - <message> <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="130"/> + <source>Register as <b>{0}</b> links handler.</source> + <translation>Регистрация как <b>{0}</b> обработчик ссылок.</translation> + </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="137"/> <source>Register</source> <translation>Регистрация</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="147"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="154"/> <source>More...</source> <translation>Еще...</translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="63"/> + <source>Your connection to this site <b>may not be secure</b>.</source> + <translation>Ваше подключение к этому сайту <b> может быть небезопасным </b>.</translation> + </message> </context> <context> <name>SnapWidget</name> @@ -75356,7 +76027,7 @@ <translation><b>Горячие клавиши</b><p>Определите горячие клавиши приложения согласно вашим предпочтениям.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6327"/> + <location filename="../UI/UserInterface.py" line="6294"/> <source>Export Keyboard Shortcuts</source> <translation>Экспорт горячих клавиш</translation> </message> @@ -75377,7 +76048,7 @@ <p>Экспортировать горячие клавиши приложения.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Import Keyboard Shortcuts</source> <translation>Импорт горячих клавиш</translation> </message> @@ -75624,7 +76295,7 @@ <translation>Настройки</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Help</source> <translation>Справка</translation> </message> @@ -75674,7 +76345,7 @@ <translation>Внешние инструменты/{0}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7324"/> + <location filename="../UI/UserInterface.py" line="7291"/> <source></table></source> <translation></table></translation> </message> @@ -75724,211 +76395,206 @@ <translation>Ск&рыть всё</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt 3 support</source> - <translation>Поддержка Qt3</translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source>Problem</source> <translation>Проблема</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source><p>The file <b>{0}</b> does not exist or is zero length.</p></source> <translation><p>Файл <b>{0}</b> либо не существует, либо нулевой длины.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source>Process Generation Error</source> <translation>Ошибка при запуске процесса</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="4962"/> + <location filename="../UI/UserInterface.py" line="4935"/> <source><p>Could not start Qt-Designer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Невозможно запустить Qt-Designer.<br>Убедитесь, что он доступен в <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5034"/> + <location filename="../UI/UserInterface.py" line="5005"/> <source><p>Could not start Qt-Linguist.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Невозможно запустить Qt-Linguist.<br>Убедитесь, что он доступен в <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5087"/> + <location filename="../UI/UserInterface.py" line="5049"/> <source><p>Could not start Qt-Assistant.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Невозможно запустить Qt-Assistant.<br>Убедитесь, что он доступен в <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source> <translation>В настоящее время просмотрщик пользователя не выбран. Используйте диалог предпочтений для его выбора.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5129"/> + <location filename="../UI/UserInterface.py" line="5096"/> <source><p>Could not start custom viewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Невозможно запустить пользовательский просмотрщик.<br>Убедитесь, что он находится в <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5149"/> + <location filename="../UI/UserInterface.py" line="5116"/> <source><p>Could not start the help viewer.<br>Ensure that it is available as <b>hh</b>.</p></source> <translation><p>Невозможно запустить просмотрщик справки.<br>Убедитесь, что он доступен под именем <b>hh</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5199"/> + <location filename="../UI/UserInterface.py" line="5166"/> <source><p>Could not start UI Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Невозможно запустить UI Previewer (предпросмотр интерфейсов).<br>Убедитесь, что он находится в <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5256"/> + <location filename="../UI/UserInterface.py" line="5223"/> <source><p>Could not start Translation Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Невозможно запустить Translation Previewer (предпросмотр переводов).<br>Убедитесь, что он находится в <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5279"/> + <location filename="../UI/UserInterface.py" line="5246"/> <source><p>Could not start SQL Browser.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Невозможно запустить SQL браузер.<br>Убедитесь, что он доступен как <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>External Tools</source> <translation>Внешние инструменты</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5374"/> + <location filename="../UI/UserInterface.py" line="5341"/> <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source> <translation>Запись для внешнего инструмента '{0}' не найдена в группе инструментов '{1}'.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>No toolgroup entry '{0}' found.</source> <translation>Запись для группы инструментов '{0}' не найдена.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5422"/> + <location filename="../UI/UserInterface.py" line="5389"/> <source>Starting process '{0} {1}'. </source> <translation>Запускается процесс '{0} {1}'. </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source><p>Could not start the tool entry <b>{0}</b>.<br>Ensure that it is available as <b>{1}</b>.</p></source> <translation><p>Невозможно запустить инструмент <b>{0}</b>.<br>Убедитесь, что он доступен в <b>{1}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5516"/> + <location filename="../UI/UserInterface.py" line="5483"/> <source>Process '{0}' has exited. </source> <translation>Процесс '{0}' завершен. </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source>Documentation Missing</source> <translation>Документация отсутствует</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source><p>The documentation starting point "<b>{0}</b>" could not be found.</p></source> <translation><p>Стартовый каталог документации "<b>{0}</b>" не найден.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source>Documentation</source> <translation>Документация</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5727"/> + <location filename="../UI/UserInterface.py" line="5694"/> <source><p>The PyQt4 documentation starting point has not been configured.</p></source> <translation><p>Стартовый каталог документации PyQt4 не найден.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Keyboard shortcut file (*.e4k)</source> <translation>Файл горячих клавиш (*.e4k)</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source>Save tasks</source> <translation>Сохранить задачи</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation><p>Невозможно сохранить файл с задачами: <b>{0}</b></p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source>Read tasks</source> <translation>Прочитать задачи</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation><p>Невозможно прочитать файл задач: <b>{0}</b></p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6646"/> + <location filename="../UI/UserInterface.py" line="6613"/> <source>Save session</source> <translation>Сохранить сессию</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6584"/> + <location filename="../UI/UserInterface.py" line="6551"/> <source><p>The session file <b>{0}</b> could not be written.</p></source> <translation><p>Невозможно записать файл сессии <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source>Read session</source> <translation>Загрузить сессию</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source><p>The session file <b>{0}</b> could not be read.</p></source> <translation><p>Невозможно прочитать файл сессии <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source>Drop Error</source> <translation>Ошибка Drag&&Drop</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> не является файлом</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>&Cancel</source> <translation>От&мена</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7108"/> + <location filename="../UI/UserInterface.py" line="7075"/> <source>Trying host {0}</source> <translation>Подключение к хосту {0}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>Update available</source> <translation>Обновления доступны</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Error during updates check</source> <translation>Ошибка при проверке обновлений</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Could not perform updates check.</source> <translation>Невозможно запустить проверку обновлений.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7309"/> + <location filename="../UI/UserInterface.py" line="7276"/> <source><h3>Available versions</h3><table></source> <translation><h3>Доступные версии</h3><table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>First time usage</source> <translation>Первое использование</translation> </message> @@ -75968,27 +76634,27 @@ <translation><b>Документация Python 2</b><p>Показать документацию Python 2. Если местонахождение документации не было настроено, то искать в директории <i>doc</i> каталога где находится исполняемый файл Python 2 под Windows и в директории <i>/usr/share/doc/packages/python/html/python-docs-html</i> под UNIX. Местонахождение документации можно задать с помощью переменной среды окружения PYTHON2DOCDIR.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>Error getting versions information</source> <translation>Ошибка при получении информации о версии</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7167"/> + <location filename="../UI/UserInterface.py" line="7134"/> <source>The versions information could not be downloaded. Please go online and try again.</source> <translation>Невозможно загрузить информацию о версии. Пожалуйста попробуйте ещё раз.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Open Browser</source> <translation>Открыть браузер</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Could not start a web browser</source> <translation>Невозможно запустить web-браузер</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source> <translation>Невозможно загрузить информацию о версии в течении последних 7 дней. Пожалуйста попробуйте ещё раз.</translation> </message> @@ -76074,12 +76740,12 @@ <translation><b>Снимки</b><p>Сделать снимок области экрана.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5351"/> + <location filename="../UI/UserInterface.py" line="5318"/> <source><p>Could not start Snapshot tool.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>Невозможно запустить программу для создания снимка экрана.<br>Убедитесь что она установлена как <b>{0}</b>.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7380"/> + <location filename="../UI/UserInterface.py" line="7347"/> <source>Select Workspace Directory</source> <translation>Выбор директории рабочей области</translation> </message> @@ -76444,7 +77110,7 @@ <translation>Открыть документацию PyQt5</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5789"/> + <location filename="../UI/UserInterface.py" line="5756"/> <source><p>The PyQt5 documentation starting point has not been configured.</p></source> <translation><p>Стартовый каталог документации PyQt5 не задан.</p></translation> </message> @@ -76454,7 +77120,7 @@ <translation><b>Документация Python 3</b><p>Показать документацию Python 3. Если местонахождение документации не было настроено, то искать в директории <i>doc</i> каталога где находится исполняемый файл Python 3 под Windows и в директории <i>/usr/share/doc/packages/python/html/python-docs-html</i> под UNIX. Местонахождение документации можно задать с помощью переменной среды окружения PYTHON3DOCDIR.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>%v/%m</source> <translation>%v/%m</translation> </message> @@ -76474,7 +77140,7 @@ <translation><b>Показать журнал ошибок...</b><p>Показать журнал ошибок.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7103"/> + <location filename="../UI/UserInterface.py" line="7070"/> <source>Version Check</source> <translation>Проверка версии</translation> </message> @@ -76544,27 +77210,22 @@ <translation><b>Документация API eric</b><p>Показать документацию API eric. Местонахождение документации - каталог Documentation/Source, расположенный в директории инсталляции eric6.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5062"/> - <source>Qt v.3 is not supported by eric6.</source> - <translation>eric6 не поддерживает Qt3.</translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>The update to <b>{0}</b> of eric6 is available at <b>{1}</b>. Would you like to get it?</source> <translation>На сайте <b>{1}</b> доступно обновление eric6 до версии <b>{0}</b>. Загрузить?</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>Eric6 is up to date</source> <translation>Eric6 не требует обновлений</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>You are using the latest version of eric6</source> <translation>Вы используете самую последнюю версию eric6</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>eric6 has not been configured yet. The configuration dialog will be started.</source> <translation>Настройка eric6 ещё не выполнена. Сейчас будет запущен диалог конфигурации.</translation> </message> @@ -76584,7 +77245,7 @@ <translation>Инструменты пользователя не сконфигурированы</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7119"/> + <location filename="../UI/UserInterface.py" line="7086"/> <source>The versions information cannot not be downloaded because you are <b>offline</b>. Please go online and try again.</source> <translation>Невозможно загрузить информацию о версии потому что вы <b>не в сети</b>. Пожалуйста, подключитесь к интернету и повторите попытку.</translation> </message> @@ -76629,7 +77290,7 @@ <translation><b>Сохранить сессию...</b><p>Позволяет сохранить текущую сессию на диск. Открывается диалог для выбора имени файла.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>Load session</source> <translation>Загрузить сессию</translation> </message> @@ -76644,17 +77305,17 @@ <translation><b>Загрузить сессию...</b><p>Позволяет загрузить сессию, ранее сохраненную на диске. Открывается диалог для выбора имени файла.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>eric6 Session Files (*.e5s)</source> <translation>Файлы сессии eric6 (*.e5s)</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>Crash Session found!</source> <translation>Обнаружена crash-сессия!</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>A session file of a crashed session was found. Shall this session be restored?</source> <translation>Найден файл crashed-сессии. Должна ли эта сессия быть восстановлена?</translation> </message> @@ -76669,18 +77330,18 @@ <translation>Инициализация плагинов...</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>Update Check</source> <translation>Проверка обновлений</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source> <translation>Eric установлен непосредственно из исходного кода. Невозможно проверить наличие обновлений.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7244"/> + <location filename="../UI/UserInterface.py" line="7211"/> <source>You are using a snapshot release of eric6. A more up-to-date stable release might be available.</source> <translation>Вы используете промежуточный релиз eric6. Возможно на сайте доступна и более свежий стабильный релиз.</translation> </message> @@ -76735,7 +77396,7 @@ <translation><b>Документация PySide2</b><p>Отображение документации PySide2. В зависимости от ваших настроек это может быть отображение справки либо во встроенных средствах просмотра справки Eric-вьюере/web-браузере, либо в Qt Assistant, либо во внешнем web-браузере. </p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source><p>The PySide{0} documentation starting point has not been configured.</p></source> <translation><p>Просмотр документации PySide{0} не настроен.</p></translation> </message> @@ -76811,17 +77472,17 @@ <translation><b>Рестарт IDEE</b><p>Перезапуск среды IDE. Любые несохраненные изменения сохраняются в первую очередь. Любая программа Python, находящаяся в процессе отладки, будет остановлена, предпочтения будут записаны на диск.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source>Start Web Browser</source> <translation>Запуск web-браузера</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6015"/> + <location filename="../UI/UserInterface.py" line="5982"/> <source>The eric6 web browser could not be started.</source> <translation>Невозможно запустить eric6 web-браузер.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source><p>The eric6 web browser is not started.</p><p>Reason: {0}</p></source> <translation><p>Eric6 web-браузер не запущен.</p><p>Причина: {0}</p></translation> </message> @@ -76920,6 +77581,21 @@ <source><h2>Version Numbers</h2><table></source> <translation><h2>Номера версий</h2><table></translation> </message> + <message> + <location filename="../UI/UserInterface.py" line="4944"/> + <source><p>Could not find the Qt-Designer executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation><p>Не удается найти исполняемый файл Qt-Designer.<br>На странице настройки Qt убедитесь, что он установлен и дополнительно настроен.</p></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5014"/> + <source><p>Could not find the Qt-Linguist executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation><p>Не удается найти исполняемый файл Qt-Linguist.<br>На странице настройки Qt убедитесь, что он установлен и дополнительно настроен.</p></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5058"/> + <source><p>Could not find the Qt-Assistant executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation><p>Не удается найти исполняемый файл Qt-Assistant.<br>На странице настройки Qt убедитесь, что он установлен и дополнительно настроен.</p></translation> + </message> </context> <context> <name>UserPropertiesDialog</name> @@ -82702,47 +83378,47 @@ <translation>Минимальный размер логического шрифта:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="324"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="402"/> <source>Images</source> <translation>Изображения</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="408"/> <source>Select to load images</source> <translation>Разрешить загрузку изображений</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="333"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="411"/> <source>Load images</source> <translation>Загружать изображения</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="343"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="421"/> <source>Style Sheet</source> <translation>Страница стилей</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="349"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="427"/> <source>User Style Sheet:</source> <translation>Таблица стилей пользователя:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="365"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="443"/> <source>Enter the file name of a user style sheet</source> <translation>Задайте имя файла таблицы стилей пользователя</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="375"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="453"/> <source>Tabs</source> <translation>Вкладки</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="381"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="459"/> <source>Select to issue a warning, if multiple tabs are about to be closed</source> <translation>Разрешить предупреждения, если возможно закрытие нескольких вкладок</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="384"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="462"/> <source>Warn, if multiple tabs are about to be closed</source> <translation>Предупреждать, если возможно закрытие нескольких вкладок</translation> </message> @@ -82762,37 +83438,37 @@ <translation>Выбор пиктографического шрифта</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="426"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="504"/> <source><font color="#FF0000"><b>Note:</b> All settings below are activated at the next startup of the application.</font></source> <translation><font color="#FF0000"><b>Примечание:</b> Эти изменения вступят в силу при следующем запуске приложения.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="433"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="511"/> <source>Toolbars</source> <translation>Панели инструментов</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="439"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="517"/> <source>Select to show toolbars</source> <translation>Разрешить отображение панелей инструментов</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="520"/> <source>Show Toolbars</source> <translation>Показывать панели инструментов</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="394"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="472"/> <source>Scrollbars</source> <translation>Полосы прокрутки</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="400"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="478"/> <source>Select to show scrollbars. Note: Scrolling is possible even without them.</source> <translation>Разрешить показывать полосу прокрутки. Примечание: Прокрутка возможна даже без них.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="403"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="481"/> <source>Show Scrollbars</source> <translation>Показывать полосы прокрутки</translation> </message> @@ -82802,15 +83478,50 @@ <translation>Цвет</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> - <source>Background color of secure URLs:</source> - <translation>Цвет фона защищенных URL:</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="298"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="304"/> <source>Select the background color for secure URLs.</source> <translation>Выберите цвет фона безопасных URL-адресов.</translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> + <source>URL Entry Background</source> + <translation>Фон ввода URL-адресов</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="291"/> + <source>Secure URLs:</source> + <translation>Безопасные URL-адреса:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="327"/> + <source>Insecure URLs:</source> + <translation>Небезопасные URL-адреса:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="340"/> + <source>Select the background color for insecure URLs.</source> + <translation>Выберите цвет фона небезопасных URL-адресов.</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="350"/> + <source>Malicious URLs:</source> + <translation>Вредоносные URL-адреса:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="363"/> + <source>Select the background color for malicious URLs.</source> + <translation>Выберите цвет фона вредоносных URL-адресов.</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="373"/> + <source>Private Mode:</source> + <translation>Приватный режим:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="386"/> + <source>Select the background color for URLs in private mode.</source> + <translation>Выберите цвет фона URL-адресов для приватного режима.</translation> + </message> </context> <context> <name>WebBrowserClearPrivateDataDialog</name> @@ -84094,27 +84805,27 @@ <translation>...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="892"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="913"/> <source>Loading...</source> <translation>Загрузка...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="912"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="922"/> <source>Finished loading</source> <translation>Загрузка завершена</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="914"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="889"/> <source>Failed to load</source> <translation>Загрука не удалась</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window?</source> <translation>Вы действительно хотите закрыть окно?</translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation> @@ -84127,22 +84838,22 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="962"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="970"/> <source>&Quit</source> <translation>&Выход</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="965"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="973"/> <source>C&lose Current Tab</source> <translation>&Закрыть текущую вкладку</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1146"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1154"/> <source>Restore All Closed Tabs</source> <translation>Восстановить все закрытые вкладки</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1148"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1156"/> <source>Clear List</source> <translation>Очистить список</translation> </message> @@ -84335,7 +85046,7 @@ <message> <location filename="../WebBrowser/WebBrowserView.py" line="1025"/> <source>Google Translate</source> - <translation>Переводчик Гугл</translation> + <translation>Переводчик Google</translation> </message> <message> <location filename="../WebBrowser/WebBrowserView.py" line="909"/> @@ -86979,12 +87690,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="391"/> + <location filename="../eric6.py" line="399"/> <source>Starting...</source> <translation>Запуск...</translation> </message> <message> - <location filename="../eric6.py" line="396"/> + <location filename="../eric6.py" line="404"/> <source>Generating Main Window...</source> <translation>Создание главного окна...</translation> </message> @@ -87151,7 +87862,7 @@ <translation>Определены синтаксические ошибки в doctest.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="183"/> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="187"/> <source>no message defined for code '{0}'</source> <translation>нет сообщения, определенного для кода '{0}'</translation> </message> @@ -87335,421 +88046,426 @@ <source>'...' % ... `*` specifier requires sequence</source> <translation>'...' % ... `*` спецификатор требует sequence</translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="165"/> + <source>'if tuple literal' is always true, perhaps remove accidental comma?</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>pycodestyle</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="21"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> <source>indentation contains mixed spaces and tabs</source> <translation>отступ содержит смесь пробелов и табуляции</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> - <source>indentation is not a multiple of four</source> - <translation>размер отступа не кратен четырем</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="27"/> - <source>expected an indented block</source> - <translation>ожидался блок с отступом</translation> + <source>indentation is not a multiple of four</source> + <translation>размер отступа не кратен четырем</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="30"/> - <source>unexpected indentation</source> - <translation>неожиданный отступ</translation> + <source>expected an indented block</source> + <translation>ожидался блок с отступом</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="33"/> - <source>indentation is not a multiple of four (comment)</source> - <translation>размер отступа не кратен четырем (комментарий)</translation> + <source>unexpected indentation</source> + <translation>неожиданный отступ</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36"/> - <source>expected an indented block (comment)</source> - <translation>ожидался блок с отступом (комментарий)</translation> + <source>indentation is not a multiple of four (comment)</source> + <translation>размер отступа не кратен четырем (комментарий)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39"/> + <source>expected an indented block (comment)</source> + <translation>ожидался блок с отступом (комментарий)</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> <source>unexpected indentation (comment)</source> <translation>неожиданный отступ (комментарий)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> - <source>continuation line indentation is not a multiple of four</source> - <translation>отступ строки продолжения не кратен четырём</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="48"/> - <source>continuation line missing indentation or outdented</source> - <translation>строка продолжения не имеет отступа или выступа</translation> + <source>continuation line indentation is not a multiple of four</source> + <translation>отступ строки продолжения не кратен четырём</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="51"/> + <source>continuation line missing indentation or outdented</source> + <translation>строка продолжения не имеет отступа или выступа</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54"/> <source>closing bracket does not match indentation of opening bracket's line</source> <translation>закрывающая скобка не соответствует отступу скобки, открывающей строку</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55"/> - <source>closing bracket does not match visual indentation</source> - <translation>закрывающая скобка визуально не соответствует отступу</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="58"/> - <source>continuation line with same indent as next logical line</source> - <translation>отступ строки продолжения такой же как у следующей логической строки</translation> + <source>closing bracket does not match visual indentation</source> + <translation>закрывающая скобка визуально не соответствует отступу</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="61"/> - <source>continuation line over-indented for hanging indent</source> - <translation>строка продолжения с отступом для висящего отступа</translation> + <source>continuation line with same indent as next logical line</source> + <translation>отступ строки продолжения такой же как у следующей логической строки</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64"/> - <source>continuation line over-indented for visual indent</source> - <translation>строка продолжения с отступом для визуального отступа</translation> + <source>continuation line over-indented for hanging indent</source> + <translation>строка продолжения с отступом для висящего отступа</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67"/> - <source>continuation line under-indented for visual indent</source> - <translation>continuation line under-indented for visual indent</translation> + <source>continuation line over-indented for visual indent</source> + <translation>строка продолжения с отступом для визуального отступа</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70"/> - <source>visually indented line with same indent as next logical line</source> - <translation>визуально отступ строки такой же как у следующей логической строки</translation> + <source>continuation line under-indented for visual indent</source> + <translation>continuation line under-indented for visual indent</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73"/> - <source>continuation line unaligned for hanging indent</source> - <translation>у висячего отступа невыровненная строка продолжения</translation> + <source>visually indented line with same indent as next logical line</source> + <translation>визуально отступ строки такой же как у следующей логической строки</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76"/> - <source>closing bracket is missing indentation</source> - <translation>закрывающая скобка не имеет отступа</translation> + <source>continuation line unaligned for hanging indent</source> + <translation>у висячего отступа невыровненная строка продолжения</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79"/> - <source>indentation contains tabs</source> - <translation>отступ содержит табуляцию</translation> + <source>closing bracket is missing indentation</source> + <translation>закрывающая скобка не имеет отступа</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82"/> + <source>indentation contains tabs</source> + <translation>отступ содержит табуляцию</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85"/> <source>whitespace after '{0}'</source> <translation>символ пропуска после '{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91"/> - <source>whitespace before '{0}'</source> - <translation>символ пропуска перед '{0}'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94"/> - <source>multiple spaces before operator</source> - <translation>множественные пробелы перед оператором</translation> + <source>whitespace before '{0}'</source> + <translation>символ пропуска перед '{0}'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97"/> - <source>multiple spaces after operator</source> - <translation>множественные пробелы после оператора</translation> + <source>multiple spaces before operator</source> + <translation>множественные пробелы перед оператором</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100"/> - <source>tab before operator</source> - <translation>табуляция перед оператором</translation> + <source>multiple spaces after operator</source> + <translation>множественные пробелы после оператора</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103"/> - <source>tab after operator</source> - <translation>табуляция после оператора</translation> + <source>tab before operator</source> + <translation>табуляция перед оператором</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106"/> - <source>missing whitespace around operator</source> - <translation>отсутствуют символы пропуска вокруг оператора</translation> + <source>tab after operator</source> + <translation>табуляция после оператора</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109"/> - <source>missing whitespace around arithmetic operator</source> - <translation>отсутствуют символы пропуска вокруг арифметического оператора</translation> + <source>missing whitespace around operator</source> + <translation>отсутствуют символы пропуска вокруг оператора</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112"/> - <source>missing whitespace around bitwise or shift operator</source> - <translation>отсутствуют символы пропуска вокруг побитового оператора или оператора сдвига</translation> + <source>missing whitespace around arithmetic operator</source> + <translation>отсутствуют символы пропуска вокруг арифметического оператора</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115"/> - <source>missing whitespace around modulo operator</source> - <translation>отсутствуют символы пропуска вокруг оператора по модулю</translation> + <source>missing whitespace around bitwise or shift operator</source> + <translation>отсутствуют символы пропуска вокруг побитового оператора или оператора сдвига</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118"/> - <source>missing whitespace after '{0}'</source> - <translation>отсутствуют символы пропуска после '{0}'</translation> + <source>missing whitespace around modulo operator</source> + <translation>отсутствуют символы пропуска вокруг оператора по модулю</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121"/> - <source>multiple spaces after '{0}'</source> - <translation>множественные пробелы после '{0}'</translation> + <source>missing whitespace after '{0}'</source> + <translation>отсутствуют символы пропуска после '{0}'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124"/> - <source>tab after '{0}'</source> - <translation>табуляция после '{0}'</translation> + <source>multiple spaces after '{0}'</source> + <translation>множественные пробелы после '{0}'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127"/> + <source>tab after '{0}'</source> + <translation>табуляция после '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> <source>unexpected spaces around keyword / parameter equals</source> <translation>неожиданные пробелы вокруг ключевого слова / параметра equals</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> - <source>at least two spaces before inline comment</source> - <translation>по крайней мере два пробела перед комментарием в строке кода</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136"/> - <source>inline comment should start with '# '</source> - <translation>комментарий в строке кода должен начинаться с '# '</translation> + <source>at least two spaces before inline comment</source> + <translation>по крайней мере два пробела перед комментарием в строке кода</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="139"/> - <source>block comment should start with '# '</source> - <translation>блок комментариев должен начинаться с '# '</translation> + <source>inline comment should start with '# '</source> + <translation>комментарий в строке кода должен начинаться с '# '</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="142"/> - <source>too many leading '#' for block comment</source> - <translation>слишком много лидирующих '#' для блока комментария</translation> + <source>block comment should start with '# '</source> + <translation>блок комментариев должен начинаться с '# '</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="145"/> - <source>multiple spaces after keyword</source> - <translation>множественные пробелы после ключевого слова</translation> + <source>too many leading '#' for block comment</source> + <translation>слишком много лидирующих '#' для блока комментария</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="148"/> - <source>multiple spaces before keyword</source> - <translation>множественные пробелы перед ключевым словом</translation> + <source>multiple spaces after keyword</source> + <translation>множественные пробелы после ключевого слова</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="151"/> - <source>tab after keyword</source> - <translation>табуляция после ключевого слова</translation> + <source>multiple spaces before keyword</source> + <translation>множественные пробелы перед ключевым словом</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154"/> - <source>tab before keyword</source> - <translation>табуляция перед ключевым словом</translation> + <source>tab after keyword</source> + <translation>табуляция после ключевого слова</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157"/> - <source>missing whitespace after keyword</source> - <translation>отсутствует символ пропуска после ключевого слова</translation> + <source>tab before keyword</source> + <translation>табуляция перед ключевым словом</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="160"/> - <source>trailing whitespace</source> - <translation>завершающие символы пропуска</translation> + <source>missing whitespace after keyword</source> + <translation>отсутствует символ пропуска после ключевого слова</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163"/> - <source>no newline at end of file</source> - <translation>нет символа новой строки в конце файла</translation> + <source>trailing whitespace</source> + <translation>завершающие символы пропуска</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166"/> + <source>no newline at end of file</source> + <translation>нет символа новой строки в конце файла</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169"/> <source>blank line contains whitespace</source> <translation>пустая строка содержит символы пропуска</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> - <source>too many blank lines ({0})</source> - <translation>слишком много пустых строк ({0})</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> - <source>blank lines found after function decorator</source> - <translation>пустые строки после декоратора функции</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="194"/> - <source>blank line at end of file</source> - <translation>пустая строка в конце файла</translation> + <source>too many blank lines ({0})</source> + <translation>слишком много пустых строк ({0})</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <source>blank lines found after function decorator</source> + <translation>пустые строки после декоратора функции</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="197"/> - <source>multiple imports on one line</source> - <translation>множественный импорт в одной строке</translation> + <source>blank line at end of file</source> + <translation>пустая строка в конце файла</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200"/> - <source>module level import not at top of file</source> - <translation>импорт модуля не в начале файла</translation> + <source>multiple imports on one line</source> + <translation>множественный импорт в одной строке</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203"/> - <source>line too long ({0} > {1} characters)</source> - <translation>слишком длинная строка ({0} > {1} символов)</translation> + <source>module level import not at top of file</source> + <translation>импорт модуля не в начале файла</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206"/> - <source>the backslash is redundant between brackets</source> - <translation>символ '\' излишний внутри скобок</translation> + <source>line too long ({0} > {1} characters)</source> + <translation>слишком длинная строка ({0} > {1} символов)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209"/> + <source>the backslash is redundant between brackets</source> + <translation>символ '\' излишний внутри скобок</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> <source>line break before binary operator</source> <translation>перевод строки перед бинарным оператором</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> - <source>.has_key() is deprecated, use 'in'</source> - <translation>.has_key() устарел, используйте 'in'</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> - <source>deprecated form of raising exception</source> - <translation>устаревший метод возбуждения исключений</translation> + <source>.has_key() is deprecated, use 'in'</source> + <translation>.has_key() устарел, используйте 'in'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> - <source>'<>' is deprecated, use '!='</source> - <translation>оператор '<>' устарел, используйте '!='</translation> + <source>deprecated form of raising exception</source> + <translation>устаревший метод возбуждения исключений</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> + <source>'<>' is deprecated, use '!='</source> + <translation>оператор '<>' устарел, используйте '!='</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>backticks are deprecated, use 'repr()'</source> <translation>обратные апострофы устарели, используйте функцию 'repr()'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> - <source>multiple statements on one line (colon)</source> - <translation>несколько инструкций в одной строке (двоеточие)</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> - <source>multiple statements on one line (semicolon)</source> - <translation>несколько инструкций в одной строке (точка с запятой)</translation> + <source>multiple statements on one line (colon)</source> + <translation>несколько инструкций в одной строке (двоеточие)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> - <source>statement ends with a semicolon</source> - <translation>инструкция завершается точкой с запятой</translation> + <source>multiple statements on one line (semicolon)</source> + <translation>несколько инструкций в одной строке (точка с запятой)</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> + <source>statement ends with a semicolon</source> + <translation>инструкция завершается точкой с запятой</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248"/> <source>multiple statements on one line (def)</source> <translation>несколько инструкций в одной строке (def)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="251"/> - <source>comparison to {0} should be {1}</source> - <translation>сравнение с {0} должно быть {1}</translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> - <source>test for membership should be 'not in'</source> - <translation>проверка на членство должна быть 'not in'</translation> + <source>comparison to {0} should be {1}</source> + <translation>сравнение с {0} должно быть {1}</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> - <source>test for object identity should be 'is not'</source> - <translation>проверка на идентичность объекта должна быть 'is not'</translation> + <source>test for membership should be 'not in'</source> + <translation>проверка на членство должна быть 'not in'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> - <source>do not compare types, use 'isinstance()'</source> - <translation>используйте 'isinstance()' вместо сравнения типов</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> - <source>do not assign a lambda expression, use a def</source> - <translation>не назначайте лямбда-выражение, используйте def</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> - <source>ambiguous variable name '{0}'</source> - <translation>неоднозначное имя переменной '{0}'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> - <source>ambiguous class definition '{0}'</source> - <translation>неоднозначное определение класса '{0}'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> - <source>ambiguous function definition '{0}'</source> - <translation>неоднозначное определение функции '{0}'</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> - <source>{0}: {1}</source> - <translation>{0}: {1}</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> - <source>{0}</source> - <translation>{0}</translation> + <source>test for object identity should be 'is not'</source> + <translation>проверка на идентичность объекта должна быть 'is not'</translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> + <source>do not compare types, use 'isinstance()'</source> + <translation>используйте 'isinstance()' вместо сравнения типов</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> + <source>do not assign a lambda expression, use a def</source> + <translation>не назначайте лямбда-выражение, используйте def</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> + <source>ambiguous variable name '{0}'</source> + <translation>неоднозначное имя переменной '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> + <source>ambiguous class definition '{0}'</source> + <translation>неоднозначное определение класса '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> + <source>ambiguous function definition '{0}'</source> + <translation>неоднозначное определение функции '{0}'</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> + <source>{0}: {1}</source> + <translation>{0}: {1}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284"/> + <source>{0}</source> + <translation>{0}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> <source>do not use bare except</source> <translation>не используйте bare except</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184"/> <source>expected {0} blank lines after class or function definition, found {1}</source> <translation>ожидалось {0} пустых строк после определения класса или функции, найдено {1}</translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> + <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> + <translation>'async' и 'await' - зарезервированные ключевые слова начиная с Python 3.7</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> + <source>missing whitespace around parameter equals</source> + <translation>отсутствие символов пропуска вокруг параметра equals</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <source>expected {0} blank lines, found {1}</source> + <translation>ожидалось {0} пустых строк, найдено {1}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <source>expected {0} blank lines before a nested definition, found {1}</source> + <translation>ожидалось {0} пустых строк перед вложенным определением, найдено {1}</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <source>line break after binary operator</source> + <translation>перевод строки после бинарного оператора</translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> - <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> - <translation>'async' и 'await' - зарезервированные ключевые слова начиная с Python 3.7</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> - <source>missing whitespace around parameter equals</source> - <translation>отсутствие символов пропуска вокруг параметра equals</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172"/> - <source>expected {0} blank lines, found {1}</source> - <translation>ожидалось {0} пустых строк, найдено {1}</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="185"/> - <source>expected {0} blank lines before a nested definition, found {1}</source> - <translation>ожидалось {0} пустых строк перед вложенным определением, найдено {1}</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> - <source>line break after binary operator</source> - <translation>перевод строки после бинарного оператора</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>invalid escape sequence '\{0}'</source> <translation>недействительная escape-последовательность '\{0}'</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> <source>too many blank lines ({0}) before a nested definition, expected {1}</source> <translation>слишком много пустых строк ({0}) перед вложенным определением, ожидалось {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> <source>too many blank lines ({0}), expected {1}</source> <translation>слишком много пустых строк ({0}), ожидалось {1}</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> <source>over-indented</source> <translation>over-indented</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> <source>doc line too long ({0} > {1} characters)</source> <translation>слишком длинная строка документа ({0} > {1} символов)</translation> </message>
--- a/eric6/i18n/eric6_tr.ts Sun May 03 13:42:52 2020 +0200 +++ b/eric6/i18n/eric6_tr.ts Wed Jun 17 17:14:12 2020 +0200 @@ -375,7 +375,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="200"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="201"/> <source>Add Bookmark</source> <translation>Yerimi Ekle</translation> </message> @@ -1118,72 +1118,72 @@ <context> <name>AnnotationsChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="808"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> <source>missing type annotation for function argument '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> - <source>missing type annotation for '*{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="814"/> + <source>missing type annotation for '*{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> <source>missing type annotation for '**{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> - <source>missing return type annotation for public function</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="826"/> - <source>missing return type annotation for protected function</source> + <source>missing return type annotation for public function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="829"/> - <source>missing return type annotation for private function</source> + <source>missing return type annotation for protected function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="832"/> - <source>missing return type annotation for special method</source> + <source>missing return type annotation for private function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="835"/> - <source>missing return type annotation for staticmethod</source> + <source>missing return type annotation for special method</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="838"/> + <source>missing return type annotation for staticmethod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="841"/> <source>missing return type annotation for classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="850"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="853"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> - <source>missing type annotation for 'self' in method</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="820"/> + <source>missing type annotation for 'self' in method</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> <source>missing type annotation for 'cls' in classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="842"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="845"/> <source>type annotation coverage of {0}% is too low</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="846"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="849"/> <source>type annotation is too complex ({0} > {1})</source> <translation type="unfinished"></translation> </message> @@ -1825,7 +1825,7 @@ <translation>Seçilen girişi silmek için basınız</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="174"/> <source>&Delete</source> <translation>&Sil</translation> </message> @@ -1840,50 +1840,65 @@ <translation>Dizin &Ekle</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="154"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> <source>&Open</source> <translation>&Aç</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> <source>Open in New &Tab</source> <translation>Yeni Se&kmede Aç</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="167"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> <source>Edit &Name</source> <translation>Adı Düze&nle</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="170"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> <source>Edit &Address</source> <translation>&Adresi Düzenle</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="331"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="343"/> <source>New Folder</source> <translation>Yeni Dizin</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="176"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="178"/> <source>&Properties...</source> <translation type="unfinished">&Özellikler...</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="161"/> - <source>Open in New &Window</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="163"/> + <source>Open in New &Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="165"/> <source>Open in New Pri&vate Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="160"/> <source>Open in New &Background Tab</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="182"/> + <source>New &Folder...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>New Bookmark Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>Enter title for new bookmark folder:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>BookmarksImportDialog</name> @@ -2811,6 +2826,49 @@ </message> </context> <context> + <name>CheckerCategories</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="63"/> + <source>Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="66"/> + <source>Code Complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="69"/> + <source>Documentation</source> + <translation type="unfinished">Belgeleme</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="72"/> + <source>Errors</source> + <translation type="unfinished">Hatalar</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="75"/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="78"/> + <source>Naming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="84"/> + <source>Warnings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <source>Security</source> + <translation type="unfinished">Güvenlik</translation> + </message> +</context> +<context> <name>ChromeImporter</name> <message> <location filename="../WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py" line="43"/> @@ -2945,15 +3003,20 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source>Select Path to Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source><p>The device volume <b>{0}</b> could not be found. Is the device in 'bootloader' mode and mounted?</p> <p>Alternatively select the "Manual Select" entry and enter the path to the device below.</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="52"/> + <source>Manual Select</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ClearPrivateDataDialog</name> @@ -3333,6 +3396,14 @@ </message> </context> <context> + <name>CodeStyleChecker</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1133"/> + <source>No message defined for code '{0}'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>CodeStyleCheckerDialog</name> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="14"/> @@ -3347,137 +3418,127 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="50"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="68"/> <source>Exclude Files:</source> <translation type="unfinished">Dışarda Tutulan Dosyalar:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="57"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="75"/> <source>Enter filename patterns of files to be excluded separated by a comma</source> <translation type="unfinished">Dosyaadılarını virgül ile ayırarak giriniz</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="830"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1090"/> <source>Press to start the code style check run</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="840"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1254"/> <source>Press to fix the selected issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1113"/> <source>Press to load the default values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="873"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1123"/> <source>Press to store the current values as defaults</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="883"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1133"/> <source>Press to reset the default values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="82"/> <source>Exclude Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="71"/> - <source>Enter message codes or categories to be excluded separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="141"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="159"/> <source>Press to select the message codes from a list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="85"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="103"/> <source>Included Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="92"/> - <source>Enter message codes or categories to be included separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="106"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="124"/> <source>Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="113"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="131"/> <source>Enter message codes of issues to be fixed automatically (leave empty to fix all)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="127"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="145"/> <source>Don't Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="134"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="152"/> <source>Enter message codes of issues not to be fixed automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="265"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="283"/> <source>Max. Line Length:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="316"/> <source>Enter the maximum allowed line length (PEP-8: 79 characters)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="425"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="443"/> <source>Docstring Type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="450"/> <source>Select the rule set for docstrings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="406"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="424"/> <source>Select to allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="409"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="427"/> <source>Allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="150"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="168"/> <source>Select to repeat each message type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="153"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="171"/> <source>Repeat messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="163"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="181"/> <source>Select to fix some issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="166"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="184"/> <source>Fix issues automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="904"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1167"/> <source><b>Result List</b> <p>This list shows the results of the code style check. Double clicking an entry will open this entry in an editor window and position the cursor at @@ -3485,375 +3546,525 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1183"/> <source>File/Line</source> <translation type="unfinished">Dosya/Satır</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="925"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1188"/> <source>Code</source> <translation type="unfinished">Kod</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="930"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1193"/> <source>Message</source> <translation type="unfinished">Mesaj</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="80"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="117"/> <source>PEP-257</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="118"/> <source>Eric</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="88"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="144"/> <source>Statistics...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="90"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="146"/> <source>Press to show some statistics for the last run</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="149"/> <source>Show</source> <translation type="unfinished">Göster</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="151"/> <source>Press to show all files containing an issue</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="637"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="241"/> <source>Error: {0}</source> <translation type="unfinished">Hata: {0}</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="244"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="248"/> <source>Fix: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="778"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="982"/> <source>No issues found.</source> <translation type="unfinished">Sorun bulunamadı.</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1214"/> <source>Shows the progress of the code style check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="960"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1223"/> <source>%v/%m Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="176"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="194"/> <source>Select to show ignored issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="179"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="197"/> <source>Show ignored</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="730"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="927"/> <source>{0} (ignored)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="622"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="820"/> <source>Preparing files...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="698"/> <source>Enter the maximum allowed code complexity (McCabe: 10)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="152"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="214"/> <source>Errors</source> <translation type="unfinished">Hatalar</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="664"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="859"/> <source>Transferring data...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="44"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="42"/> <source>Global Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="233"/> <source>Specific Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="257"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="275"/> <source>Source Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="419"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="437"/> <source>Documentation Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="455"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="473"/> <source>Coding Line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="461"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="479"/> <source>Valid Encodings:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="468"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="486"/> <source>Enter valid encodings separated by a comma (leave empty to use defaults)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="478"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="496"/> <source>Copyright</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="484"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="502"/> <source>Min. File Size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="491"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="509"/> <source>Enter the minimum size a file must have to be checked (0 for all files)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="517"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="535"/> <source>Author:</source> <translation type="unfinished">Yazar:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="524"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="542"/> <source>Enter a copyright author name to check for (leave empty to omit this check)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="534"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="552"/> <source>Future Imports</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="540"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="558"/> <source>Expected Imports:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="654"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="672"/> <source>Code Complexity</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1093"/> + <source>&Start</source> + <translation type="unfinished">Ba&şlat</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1257"/> + <source>&Fix Selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1116"/> + <source>&Load Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1126"/> + <source>St&ore Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1136"/> + <source>&Reset Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="985"/> + <source>No files found (check your ignore list).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="584"/> + <source>Ignore Built-ins Assignment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="600"/> + <source>Left</source> + <translation type="unfinished">Left</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="605"/> + <source>Right</source> + <translation type="unfinished">Right</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="615"/> + <source>Press to add a built-in assignment to be ignored</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="625"/> + <source>Press to delete the selected entries</source> + <translation type="unfinished">Seçilen girişi silmek için basınız</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="691"/> + <source>Max. McCabe Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="714"/> + <source>Max. Line Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="721"/> + <source>Enter the maximum complexity (number of nodes) for a line of code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="737"/> + <source>Max. Line Complexity Score:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="744"/> + <source>Enter the maximum allowed median for line complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="350"/> + <source>Blank Lines Before</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="356"/> + <source>Top Level Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="363"/> + <source>Enter the number of blank lines before top level classes and functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="395"/> + <source>Methods and Nested Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="402"/> + <source>Enter the number of blank lines before methods and nested classes or functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="309"/> + <source>Max. Documentation Line Length:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="653"/> + <source>Commented Code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="659"/> + <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="662"/> + <source>Search aggressively</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="763"/> + <source>Type Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="769"/> + <source>Min. Coverage:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="776"/> + <source>Enter the minimum percentage of type annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="779"/> + <source>off</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="782"/> + <source>%</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="805"/> + <source>Max. Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="812"/> + <source>Enter the maximum type annotation complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="32"/> + <source>Configure</source> + <translation type="unfinished">Yapılandırma</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1146"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1244"/> + <source>Press to restart the code style check run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1247"/> + <source>Restart</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="48"/> + <source>Categories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="58"/> + <source>Select the categories of checks to be performed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="89"/> + <source>Enter message codes to be excluded separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="110"/> + <source>Enter message codes to be included separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="833"/> - <source>&Start</source> - <translation type="unfinished">Ba&şlat</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="843"/> - <source>&Fix Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="866"/> - <source>&Load Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="876"/> - <source>St&ore Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="886"/> - <source>&Reset Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="781"/> - <source>No files found (check your ignore list).</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="566"/> - <source>Ignore Built-ins Assignment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="582"/> - <source>Left</source> - <translation type="unfinished">Left</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="587"/> - <source>Right</source> - <translation type="unfinished">Right</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="597"/> - <source>Press to add a built-in assignment to be ignored</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="607"/> - <source>Press to delete the selected entries</source> - <translation type="unfinished">Seçilen girişi silmek için basınız</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="673"/> - <source>Max. McCabe Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="696"/> - <source>Max. Line Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="703"/> - <source>Enter the maximum complexity (number of nodes) for a line of code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="719"/> - <source>Max. Line Complexity Score:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="726"/> - <source>Enter the maximum allowed median for line complexity</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="332"/> - <source>Blank Lines Before</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="338"/> - <source>Top Level Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="345"/> - <source>Enter the number of blank lines before top level classes and functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="377"/> - <source>Methods and Nested Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="384"/> - <source>Enter the number of blank lines before methods and nested classes or functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="291"/> - <source>Max. Documentation Line Length:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="635"/> - <source>Commented Code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="641"/> - <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="644"/> - <source>Search aggressively</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="745"/> - <source>Type Annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="751"/> - <source>Min. Coverage:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="758"/> - <source>Enter the minimum percentage of type annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="761"/> - <source>off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="764"/> - <source>%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="787"/> - <source>Max. Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="794"/> - <source>Enter the maximum type annotation complexity</source> + <source>Security Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="839"/> + <source>Hardcoded 'tmp' Directories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="849"/> + <source>Weak Cryptographic Keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="855"/> + <source>DSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="973"/> + <source>High Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="868"/> + <source>Select the bit length below which a DSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="990"/> + <source>Medium Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="885"/> + <source>Select the bit length below which a DSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="911"/> + <source>RSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="924"/> + <source>Select the bit length below which a RSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="941"/> + <source>Select the bit length below which a RSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="967"/> + <source>Elliptic Curves</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="980"/> + <source>Select the bit length below which an Elliptic Curve is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="997"/> + <source>Select the bit length below which an Elliptic Curve is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1026"/> + <source>Enter the names of insecure SSL protocols and methods (one per line)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1033"/> + <source>Insecure SSL Protocols:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1043"/> + <source>Insecure Hashes:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1050"/> + <source>Enter a list of hash methods to be considered insecure separated by comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1057"/> + <source>Select to also check for insecure exception handling for typed exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1060"/> + <source>Check Typed Exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1067"/> + <source>Enter directory names (one per line) to be checked for</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1154"/> + <source><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>CodeStyleCheckerPlugin</name> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> <source>Check Code Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>&Code Style...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="262"/> - <source>Check code style.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>&Code Style...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="266"/> + <source>Check code style.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="364"/> <source><b>Check Code Style...</b><p>This checks Python files for compliance to the code style conventions given in various PEPs.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="110"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="112"/> <source>Python 2 batch check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="126"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="128"/> <source>Python 3 batch check</source> <translation type="unfinished"></translation> </message> @@ -3889,142 +4100,142 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="857"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="861"/> <source>Triple single quotes converted to triple double quotes.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="860"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="864"/> <source>Introductory quotes corrected to be {0}"""</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="867"/> <source>Single line docstring put on one line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="866"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="870"/> <source>Period added to summary line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="893"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="897"/> <source>Blank line before function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="872"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="876"/> <source>Blank line inserted before class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="875"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="879"/> <source>Blank line inserted after class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="878"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="882"/> <source>Blank line inserted after docstring summary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="881"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="885"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="884"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="888"/> <source>Leading quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="887"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="891"/> <source>Trailing quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="890"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="894"/> <source>Blank line before class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="896"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="900"/> <source>Blank line after class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="899"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="903"/> <source>Blank line after function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="902"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="906"/> <source>Blank line after last paragraph removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="905"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="909"/> <source>Tab converted to 4 spaces.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="908"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="912"/> <source>Indentation adjusted to be a multiple of four.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="911"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="915"/> <source>Indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="914"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="918"/> <source>Indentation of closing bracket corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="917"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="921"/> <source>Missing indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="924"/> <source>Closing bracket aligned to opening bracket.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="923"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="927"/> <source>Indentation level changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="926"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="930"/> <source>Indentation level of hanging indentation changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="929"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="933"/> <source>Visual indentation corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="944"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="948"/> <source>Extraneous whitespace removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="941"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="945"/> <source>Missing whitespace added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="947"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> <source>Whitespace around comment sign corrected.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="955"/> <source>%n blank line(s) inserted.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4032,7 +4243,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="954"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> <source>%n superfluous lines removed</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4040,80 +4251,75 @@ </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="962"/> <source>Superfluous blank lines removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="961"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="965"/> <source>Superfluous blank lines after function decorator removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="964"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="968"/> <source>Imports were put on separate lines.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="967"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="971"/> <source>Long lines have been shortened.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="970"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="974"/> <source>Redundant backslash in brackets removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="976"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="980"/> <source>Compound statement corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="979"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="983"/> <source>Comparison to None/True/False corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="982"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="986"/> <source>'{0}' argument added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="985"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="989"/> <source>'{0}' argument removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="988"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="992"/> <source>Whitespace stripped from end of line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="991"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="995"/> <source>newline added to end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="994"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="998"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="997"/> - <source>'<>' replaced by '!='.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1001"/> + <source>'<>' replaced by '!='.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1005"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1107"/> - <source> no message defined for code '{0}'</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>CodeStyleStatisticsDialog</name> @@ -4138,7 +4344,7 @@ <translation type="unfinished">Mesaj</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="60"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="63"/> <source>%n issue(s) found</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4146,7 +4352,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="67"/> <source>%n issue(s) fixed</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4154,7 +4360,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="66"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="69"/> <source>%n file(s) checked</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4162,7 +4368,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="68"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="71"/> <source>%n file(s) with issues found</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4170,13 +4376,21 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="62"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="65"/> <source>%n issue(s) ignored</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="73"/> + <source>%n security issue(s) acknowledged</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> </context> <context> <name>CodingError</name> @@ -4603,22 +4817,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="479"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="482"/> <source>'{0}' is too complex ({1})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="481"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="484"/> <source>source code line is too complex ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="483"/> - <source>overall source code line complexity is too high ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="486"/> + <source>overall source code line complexity is too high ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="489"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> @@ -8419,242 +8633,242 @@ <context> <name>DocStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="288"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="291"/> <source>module is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290"/> - <source>public function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293"/> - <source>private function/method may be missing a docstring</source> + <source>public function/method is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296"/> + <source>private function/method may be missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299"/> <source>public class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301"/> <source>private class may be missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="300"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="303"/> <source>docstring not surrounded by """</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302"/> - <source>docstring containing \ not surrounded by r"""</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305"/> - <source>docstring containing unicode character not surrounded by u"""</source> + <source>docstring containing \ not surrounded by r"""</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308"/> + <source>docstring containing unicode character not surrounded by u"""</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311"/> <source>one-liner docstring on multiple lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313"/> <source>docstring has wrong indentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> <source>docstring summary does not end with a period</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> <source>docstring summary is not in imperative mood (Does instead of Do)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320"/> - <source>docstring summary looks like a function's/method's signature</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> - <source>docstring does not mention the return value type</source> + <source>docstring summary looks like a function's/method's signature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> - <source>function/method docstring is separated by a blank line</source> + <source>docstring does not mention the return value type</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> - <source>class docstring is not preceded by a blank line</source> + <source>function/method docstring is separated by a blank line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> + <source>class docstring is not preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> <source>class docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> <source>docstring summary is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341"/> <source>last paragraph of docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> - <source>private function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> + <source>private function/method is missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352"/> <source>private class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> - <source>leading quotes of docstring not on separate line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <source>leading quotes of docstring not on separate line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> <source>trailing quotes of docstring not on separate line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="363"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="366"/> <source>docstring does not contain a @return line but function/method returns something</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370"/> <source>docstring contains a @return line but function/method doesn't return anything</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> - <source>docstring does not contain enough @param/@keyparam lines</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> - <source>docstring contains too many @param/@keyparam lines</source> + <source>docstring does not contain enough @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> - <source>keyword only arguments must be documented with @keyparam lines</source> + <source>docstring contains too many @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> - <source>order of @param/@keyparam lines does not match the function/method signature</source> + <source>keyword only arguments must be documented with @keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> + <source>order of @param/@keyparam lines does not match the function/method signature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="386"/> <source>class docstring is preceded by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> <source>class docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> - <source>function/method docstring is preceded by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> + <source>function/method docstring is preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> <source>function/method docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> - <source>last paragraph of docstring is followed by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="399"/> + <source>last paragraph of docstring is followed by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="402"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="403"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="406"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="426"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="429"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="312"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="315"/> <source>docstring does not contain a summary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>docstring summary does not start with '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="407"/> - <source>raised exception '{0}' is not documented in docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="410"/> - <source>documented exception '{0}' is not raised</source> + <source>raised exception '{0}' is not documented in docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="413"/> - <source>docstring does not contain a @signal line but class defines signals</source> + <source>documented exception '{0}' is not raised</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="416"/> - <source>docstring contains a @signal line but class doesn't define signals</source> + <source>docstring does not contain a @signal line but class defines signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="419"/> - <source>defined signal '{0}' is not documented in docstring</source> + <source>docstring contains a @signal line but class doesn't define signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="422"/> + <source>defined signal '{0}' is not documented in docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="425"/> <source>documented signal '{0}' is not defined</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="354"/> <source>class docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347"/> <source>function docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>module docstring is still a default string</source> <translation type="unfinished"></translation> </message> @@ -10635,12 +10849,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Add Entry</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Enter the entry to add to the list:</source> <translation type="unfinished"></translation> </message> @@ -11109,7 +11323,7 @@ <translation>Tüm seçimi iptal et</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7847"/> + <location filename="../QScintilla/Editor.py" line="7848"/> <source>Check spelling...</source> <translation>Yazım Kontrolü...</translation> </message> @@ -11334,7 +11548,7 @@ <translation>Bekleme noktasını düzenle...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5615"/> + <location filename="../QScintilla/Editor.py" line="5616"/> <source>Enable breakpoint</source> <translation>Beklemenoktasını etkinleştir</translation> </message> @@ -11504,237 +11718,237 @@ <translation>Otomatiktamamlama uygun değil çünkü bu otomatiktamamlama kaynağı değil.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5618"/> + <location filename="../QScintilla/Editor.py" line="5619"/> <source>Disable breakpoint</source> <translation>Durmanoktasını iptal et</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Code Coverage</source> <translation>Kod Koruyucu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Please select a coverage file</source> <translation>Lütfen bir koruyucu dosya seçiniz</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>Show Code Coverage Annotations</source> <translation>Kodların Dipnotunu Göster</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6049"/> + <location filename="../QScintilla/Editor.py" line="6050"/> <source>All lines have been covered.</source> <translation>Tüm satırlar korumaya alındı.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>There is no coverage file available.</source> <translation>Hazırda koruma dosyası yok.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Profile Data</source> <translation>Veri Kesiti</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Please select a profile file</source> <translation>Lütfen kesit dosyasını seçiniz</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>Syntax Error</source> <translation>Sözdizimi Hatası</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>No syntax error message available.</source> <translation>Uygun söz dizimi hata mesajı yok.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Macro Name</source> <translation>Makro Adı</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Select a macro name:</source> <translation>Bir makro ismi seç:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6754"/> + <location filename="../QScintilla/Editor.py" line="6755"/> <source>Load macro file</source> <translation>Makro dosyasını yükle</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Macro files (*.macro)</source> <translation>Makro dosyaları (*.macro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source>Error loading macro</source> <translation>Makronun yüklenmesinde hata</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6768"/> + <location filename="../QScintilla/Editor.py" line="6769"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation><p>Makro dosyası <b>{0}</b> okunamıyor.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation><p>Makro dosyası <b>{0}</b> bozuk.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Save macro file</source> <translation>Makro Dosyasını Kaydet</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source>Save macro</source> <translation>Makro Kaydet</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source>Error saving macro</source> <translation>Makronun kaydedilmesinde hata</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation><p>Makro dosyası <b>{0}</b> yazılamıyor.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Start Macro Recording</source> <translation>Makro Kaydı Başladı</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Macro recording is already active. Start new?</source> <translation>Makro kaydı şuan aktif. Yeniden başlasın mı?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Macro Recording</source> <translation>Makro Kaydediliyor</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Enter name of the macro:</source> <translation>Makronun ismini gir:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7009"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>File changed</source> <translation>Dosya değiştirilmiş</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7179"/> + <location filename="../QScintilla/Editor.py" line="7180"/> <source>{0} (ro)</source> <translation>{0} (ro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source>Drop Error</source> <translation>Düşme hatası</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> bir dosya değil.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7341"/> + <location filename="../QScintilla/Editor.py" line="7342"/> <source>Resources</source> <translation>Kaynaklar</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7343"/> + <location filename="../QScintilla/Editor.py" line="7344"/> <source>Add file...</source> <translation>Dosya ekle...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7345"/> + <location filename="../QScintilla/Editor.py" line="7346"/> <source>Add files...</source> <translation>Dosyaları ekle...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7347"/> + <location filename="../QScintilla/Editor.py" line="7348"/> <source>Add aliased file...</source> <translation>Kısaltmalar dosyasına ekle...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7350"/> + <location filename="../QScintilla/Editor.py" line="7351"/> <source>Add localized resource...</source> <translation>Yaral kaynak ekle...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7354"/> + <location filename="../QScintilla/Editor.py" line="7355"/> <source>Add resource frame</source> <translation>Çerçeve kaynağı ekle</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7373"/> + <location filename="../QScintilla/Editor.py" line="7374"/> <source>Add file resource</source> <translation>Dosya kaynağını ekle</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7389"/> + <location filename="../QScintilla/Editor.py" line="7390"/> <source>Add file resources</source> <translation>Dosya kaynaklarını ekle</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Add aliased file resource</source> <translation>Kısaltmalar dosyası kaynağını ekle</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Alias for file <b>{0}</b>:</source> <translation><b>{0} dosyası için takma ad</b>:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Package Diagram</source> <translation>Paket Şeması</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Include class attributes?</source> <translation>Sınıf nitelikleri dahil edilsin mi?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Imports Diagram</source> <translation>Şemayı İçe Aktar</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Include imports from external modules?</source> <translation>Harici modüllerdan içe aktarım dahil edilsin mi?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Application Diagram</source> <translation>Uygulama Şeması</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Include module names?</source> <translation>Modül isimleri dahil edilsin mi?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7850"/> + <location filename="../QScintilla/Editor.py" line="7851"/> <source>Add to dictionary</source> <translation>Sözlüğe ekle</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7852"/> + <location filename="../QScintilla/Editor.py" line="7853"/> <source>Ignore All</source> <translation>Hepsini Yoksay</translation> </message> @@ -11744,22 +11958,22 @@ <translation><p><b>{0}</b> dosyası halen mevcut. Üzerine yazılsın mı?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6614"/> + <location filename="../QScintilla/Editor.py" line="6615"/> <source>Warning: {0}</source> <translation>Dikkat: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6621"/> + <location filename="../QScintilla/Editor.py" line="6622"/> <source>Error: {0}</source> <translation>Hata: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation><p>Makro dosyası <b>{0}</b> zaten var. Üzerine yazılsın mı?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7005"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation type="unfinished"></translation> </message> @@ -11784,27 +11998,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>Sort Lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>The selection contains illegal data for a numerical sort.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>Warning</source> <translation type="unfinished">Dikkat</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>No warning messages available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6611"/> + <location filename="../QScintilla/Editor.py" line="6612"/> <source>Style: {0}</source> <translation type="unfinished"></translation> </message> @@ -11829,7 +12043,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6999"/> + <location filename="../QScintilla/Editor.py" line="7000"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation type="unfinished"><p>Eric5 ile açıldıktan sonra <b>{0}</b> dosyasında değişiklik olmuş. Yeniden açılsın mı?</p> {0}?} {6.?}</translation> </message> @@ -11854,22 +12068,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>Call-Tips Provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>Register Mouse Click Handler</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation type="unfinished"></translation> </message> @@ -11899,12 +12113,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source>EditorConfig Properties</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation type="unfinished"></translation> </message> @@ -17475,17 +17689,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="66"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="71"/> <source>Firmware Files (*.img);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="72"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="77"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="76"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="82"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> @@ -17503,12 +17717,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="211"/> + <location filename="../MicroPython/EspDevices.py" line="217"/> <source>Flash MicroPython Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="236"/> + <location filename="../MicroPython/EspDevices.py" line="248"/> <source>Flash Additional Firmware</source> <translation type="unfinished"></translation> </message> @@ -17533,7 +17747,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>'esptool write_flash' Output</source> <translation type="unfinished"></translation> </message> @@ -17543,47 +17757,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>Show Chip ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>Show Flash ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>Show MAC Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>'esptool read_flash' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>'esptool chip_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>'esptool flash_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>'esptool read_mac' Output</source> <translation type="unfinished"></translation> </message> @@ -17616,20 +17830,35 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="72"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="96"/> <source>Address:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="79"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="103"/> <source>Enter the flash addres in the hexadecimal form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="43"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="51"/> <source>Firmware Files (*.bin);;All Files (*)</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="75"/> + <source>Flash Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="82"/> + <source>Select the flash mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="89"/> + <source>Leave empty to use the default mode.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ExceptionLogger</name> @@ -40583,6 +40812,14 @@ </message> </context> <context> + <name>IgnoredDevicesDialog</name> + <message> + <location filename="../MicroPython/IgnoredDevicesDialog.ui" line="14"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImageMarkupDialog</name> <message> <location filename="../QScintilla/MarkupProviders/ImageMarkupDialog.py" line="52"/> @@ -46496,27 +46733,27 @@ <context> <name>MicroPythonDevice</name> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="214"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="223"/> <source>Unsupported Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="224"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="233"/> <source>REPL is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="243"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="252"/> <source>Plotter is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="262"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="271"/> <source>Running scripts is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="282"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="291"/> <source>File Manager is not supported by this device.</source> <translation type="unfinished"></translation> </message> @@ -47074,7 +47311,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="460"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="493"/> <source>Press to connect the selected device</source> <translation type="unfinished"></translation> </message> @@ -47102,32 +47339,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="430"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="463"/> <source>Clear</source> <translation type="unfinished">Temizle</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="432"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="465"/> <source>Copy</source> <translation type="unfinished">Kopyala</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="433"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="466"/> <source>Paste</source> <translation type="unfinished">Yapıştır</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="455"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="488"/> <source>Press to disconnect the current device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>No device attached</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -47136,212 +47373,212 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source>Start REPL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source>Serial Device Connect</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source>Run Script</source> <translation type="unfinished">Betiği Çalıştır</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="921"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="954"/> <source>There is no editor open. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="929"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="962"/> <source>The current editor does not contain a script. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source><p>Cannot run script.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Open Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Python3 Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source>Start Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>Unsaved Chart Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>The chart contains unsaved data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source>Start File Manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1136"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169"/> <source>Show Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1139"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1172"/> <source>Show Implementation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source>Synchronize Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1147"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1180"/> <source>Show Device Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1150"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1183"/> <source>Show Local Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1461"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1497"/> <source>Compile Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1481"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1517"/> <source>Compile Current Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1188"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224"/> <source><h3>Device Version Information</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1197"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1233"/> <source>No version information available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1199"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1235"/> <source>Device Version Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1258"/> <source>unknown</source> <translation type="unfinished">bilinmeyen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source>Device Implementation Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source><p>The time of the connected device was synchronized with the local time.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1272"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308"/> <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1280"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1316"/> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1294"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1330"/> <source>Device Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source>Local Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source>Error handling device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1413"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1449"/> <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1467"/> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished">Python Dosyaları (*.py);;Tüm Dosyalar (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1441"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1477"/> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1451"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1487"/> <source>'mpy-cross' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1474"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1510"/> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished"></translation> </message> @@ -47356,50 +47593,70 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1018"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051"/> <source>µPy Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1098"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1131"/> <source>µPy Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1174"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1207"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1178"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1214"/> <source>Configure</source> <translation type="unfinished">Yapılandırma</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1153"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186"/> <source>Show Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1170"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1203"/> <source>Download Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source>Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1333"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1369"/> <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>Unknown MicroPython Device</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:eric-bugs@eric-ide.python-projects.org"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>{0} ({1:04x}/{2:04x})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1211"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -48200,463 +48457,463 @@ <context> <name>MiscellaneousChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="492"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> <source>coding magic comment not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> - <source>unknown encoding ({0}) found in coding magic comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="498"/> - <source>copyright notice not present</source> + <source>unknown encoding ({0}) found in coding magic comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="501"/> - <source>copyright notice contains invalid author</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="702"/> - <source>found {0} formatter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> - <source>format string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> - <source>docstring does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> - <source>other string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> - <source>format call uses too large index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> - <source>format call uses missing keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> - <source>format call uses keyword arguments but no named entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> - <source>format call uses variable arguments but no numbered entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> - <source>format call uses implicit and explicit indexes together</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> - <source>format call provides unused index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> - <source>format call provides unused keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="751"/> - <source>expected these __future__ imports: {0}; but only got: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> - <source>expected these __future__ imports: {0}; but got none</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="761"/> - <source>print statement found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> - <source>one element tuple found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="800"/> - <source>{0}: {1}</source> + <source>copyright notice not present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> + <source>copyright notice contains invalid author</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> + <source>found {0} formatter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> + <source>format string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> + <source>docstring does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> + <source>other string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> + <source>format call uses too large index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> + <source>format call uses missing keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> + <source>format call uses keyword arguments but no named entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> + <source>format call uses variable arguments but no numbered entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> + <source>format call uses implicit and explicit indexes together</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> + <source>format call provides unused index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <source>format call provides unused keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> + <source>expected these __future__ imports: {0}; but only got: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <source>expected these __future__ imports: {0}; but got none</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> + <source>print statement found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="767"/> + <source>one element tuple found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="803"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="507"/> <source>"{0}" is a Python builtin and is being shadowed; consider renaming the variable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="508"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="511"/> <source>"{0}" is used as an argument and thus shadows a Python builtin; consider renaming the argument</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="512"/> - <source>unnecessary generator - rewrite as a list comprehension</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="515"/> - <source>unnecessary generator - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a list comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="518"/> - <source>unnecessary generator - rewrite as a dict comprehension</source> + <source>unnecessary generator - rewrite as a set comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="521"/> - <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="524"/> + <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> <source>unnecessary list comprehension - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> <source>unnecessary list comprehension - "{0}" can take a generator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="770"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> <source>mutable default argument of type {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> <source>sort keys - '{0}' should be before '{1}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> <source>logging statement uses '%'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> - <source>logging statement uses f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> + <source>logging statement uses f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="750"/> <source>logging statement uses 'warn' instead of 'warning'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> <source>logging statement uses string.format()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> <source>logging statement uses '+'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="760"/> <source>gettext import with alias _ found: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="648"/> - <source>Python does not support the unary prefix increment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> - <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> - <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> - <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> - <source>Python 3 does not include '.iter*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> - <source>Python 3 does not include '.view*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> - <source>'.next()' does not exist in Python 3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> - <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> - <source>mutable default argument of function call '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> - <source>using .strip() with multi-character strings is misleading</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> - <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> - <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <source>Python does not support the unary prefix increment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> + <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="663"/> + <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> + <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> + <source>Python 3 does not include '.iter*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> + <source>Python 3 does not include '.view*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> + <source>'.next()' does not exist in Python 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="700"/> + <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="776"/> - <source>None should not be added at any return if function has no return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="780"/> - <source>an explicit value at every return should be added if function has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="784"/> - <source>an explicit return at the end of the function should be added if it has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="788"/> - <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <source>mutable default argument of function call '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> + <source>using .strip() with multi-character strings is misleading</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="681"/> + <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="671"/> + <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <source>None should not be added at any return if function has no return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="783"/> + <source>an explicit value at every return should be added if function has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="787"/> + <source>an explicit return at the end of the function should be added if it has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="791"/> + <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> <source>do not call assert False since python -O removes these calls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="672"/> - <source>unncessary f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="675"/> + <source>unncessary f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> <source>cannot use 'self.__class__' as first argument of 'super()' call</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> - <source>do not call getattr with a constant attribute value</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> + <source>do not call getattr with a constant attribute value</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>do not call setattr with a constant attribute value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="796"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="799"/> <source>commented code lines should be removed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="792"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="795"/> <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="559"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="562"/> <source>use of 'datetime.datetime()' without 'tzinfo' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="566"/> <source>use of 'datetime.datetime.today()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> <source>use of 'datetime.datetime.utcnow()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="571"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="574"/> <source>use of 'datetime.datetime.utcfromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(, tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>use of 'datetime.datetime.now()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> <source>use of 'datetime.datetime.fromtimestamp()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="583"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="586"/> <source>use of 'datetime.datetime.strptime()' should be followed by '.replace(tzinfo=)'</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> + <source>use of 'datetime.date()' should be avoided. +Use 'datetime.datetime(, tzinfo=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> + <source>use of 'datetime.date.today()' should be avoided. +Use 'datetime.datetime.now(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="601"/> + <source>use of 'datetime.date.fromtimestamp()' should be avoided. +Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> + <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> - <source>use of 'datetime.date()' should be avoided. -Use 'datetime.datetime(, tzinfo=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> - <source>use of 'datetime.date.today()' should be avoided. -Use 'datetime.datetime.now(tz=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="598"/> - <source>use of 'datetime.date.fromtimestamp()' should be avoided. -Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> + <source>use of 'datetime.date.fromordinal()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> - <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> - <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> - <source>use of 'datetime.date.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> <source>use of 'datetime.date.fromisoformat()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> <source>unnecessary {0} call - rewrite as a literal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> - <source>unnecessary {0} literal - rewrite as a {1} literal</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="536"/> - <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> + <source>unnecessary {0} literal - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="539"/> - <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> + <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="542"/> - <source>unnecessary list call - remove the outer call to list()</source> + <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="545"/> - <source>unnecessary list comprehension - "in" can take a generator</source> + <source>unnecessary list call - remove the outer call to list()</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="548"/> - <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <source>unnecessary list comprehension - "in" can take a generator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="551"/> + <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>unnecessary {0} passed to list() - remove the outer call to {1}()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="613"/> - <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="616"/> - <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="619"/> + <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="622"/> <source>'sys.version' compared to string (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> - <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> - <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="629"/> + <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="632"/> <source>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="633"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> <source>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="637"/> - <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="640"/> + <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="643"/> <source>'sys.version' compared to string (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>'sys.version[:1]' referenced (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> @@ -49112,72 +49369,72 @@ <context> <name>NamingStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> <source>class names should use CapWords convention</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> - <source>function name should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="438"/> - <source>argument name should be lowercase</source> + <source>function name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> - <source>first argument of a class method should be named 'cls'</source> + <source>argument name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="444"/> - <source>first argument of a method should be named 'self'</source> + <source>first argument of a class method should be named 'cls'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> + <source>first argument of a method should be named 'self'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>first argument of a static method should not be named 'self' or 'cls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="451"/> - <source>module names should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="454"/> - <source>package names should be lowercase</source> + <source>module names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="457"/> - <source>constant imported as non constant</source> + <source>package names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="460"/> - <source>lowercase imported as non lowercase</source> + <source>constant imported as non constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="463"/> - <source>camelcase imported as lowercase</source> + <source>lowercase imported as non lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="466"/> - <source>camelcase imported as constant</source> + <source>camelcase imported as lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="469"/> - <source>variable in function should be lowercase</source> + <source>camelcase imported as constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="472"/> + <source>variable in function should be lowercase</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="475"/> <source>names 'l', 'O' and 'I' should be avoided</source> <translation type="unfinished"></translation> </message> @@ -49231,50 +49488,50 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="201"/> <source>SSL Certificate Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> - <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="205"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="212"/> <source>&Permanent accept</source> <translation type="unfinished">Sürekli kabul &P</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="207"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="214"/> <source>&Temporary accept</source> <translation type="unfinished">Geçicikabul &T</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="209"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="216"/> <source>&Reject</source> <translation type="unfinished">&Reddet</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="243"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="284"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"><b> '{1}' alanı, '{0}' için kullanıcı adı ve parola giriniz</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="247"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="288"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"><b> '{0}' için kullanıcı adını ve parolayı giriniz</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="295"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="336"/> <source>Authentication required</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="296"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="337"/> <source>Authentication is required to access:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="202"/> + <source><b>{0}</b><p>The host <b>{1}</b> you are trying to access has errors in the SSL certificate.</p><ul><li>{2}</li></ul><p>Would you like to make an exception?</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>NetworkPage</name> @@ -50648,6 +50905,41 @@ <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../PipInterface/Pip.py" line="679"/> + <source>Cache Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="704"/> + <source>List Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="694"/> + <source>Enter a file pattern (empty for all):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="728"/> + <source>Remove Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="720"/> + <source>Enter a file pattern:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="751"/> + <source>Purge Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="744"/> + <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PipDialog</name> @@ -51429,7 +51721,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/> <source>Install Packages</source> <translation type="unfinished"></translation> </message> @@ -51454,28 +51746,48 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="942"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="955"/> <source>Edit User Configuration...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="945"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="958"/> <source>Edit Environment Configuration...</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="963"/> + <source>Configure...</source> + <translation type="unfinished">Ayarlanıyor...</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>Edit Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>No valid configuration path determined. Aborting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="941"/> + <source>Show Cache Info...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="944"/> + <source>Show Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="947"/> + <source>Remove Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../PipInterface/PipPackagesWidget.py" line="950"/> - <source>Configure...</source> - <translation type="unfinished">Ayarlanıyor...</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>Edit Configuration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>No valid configuration path determined. Aborting</source> + <source>Purge Cache...</source> <translation type="unfinished"></translation> </message> </context> @@ -52755,17 +53067,17 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1640"/> + <location filename="../Preferences/__init__.py" line="1645"/> <source>Export Preferences</source> <translation>Seçenekleri Dışa Aktar</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Import Preferences</source> <translation>Seçenekleri İçe Aktar</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Properties File (*.ini);;All Files (*)</source> <translation type="unfinished"></translation> </message> @@ -61807,22 +62119,22 @@ <translation><font color="#FF0000"><b>Not:</b> Bu ayarlamalar uygulamanın bir sonraki çalıştırılmasında aktif hale geçecektir.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="90"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="85"/> <source>Qt Tools</source> <translation>QT Araçları</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="123"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="118"/> <source>The tool executable is composed of the prefix, the tool name and the postfix. For win, the extension is added automatically.</source> <translation>çalışabilen araçların kendiliğinden oluşan ön eki. başarı için, kendiliğinden eklenir.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="169"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="164"/> <source>This gives an example of the complete tool name</source> <translation>Bu tüm araç isimlerinin bir örneğini verir</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="172"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="167"/> <source>designer</source> <translation>dizayncı</translation> </message> @@ -61837,62 +62149,52 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> - <source><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="135"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="130"/> <source>Qt-Prefix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="137"/> <source>Enter the prefix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="144"/> <source>Qt-Postfix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="151"/> <source>Enter the postfix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="221"/> <source>Indent Width:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="233"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="228"/> <source>Select the indent width (default: 4)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="327"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="322"/> <source>Generate imports relative to '.'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="296"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="291"/> <source>Tools Directory:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="114"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="109"/> <source>Enter the path of the Qt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="211"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="206"/> <source>Enter the path of the PyQt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -61902,7 +62204,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="312"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="307"/> <source>Enter the path of the PySide2 tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -61912,35 +62214,40 @@ <translation type="unfinished">Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="187"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="182"/> <source>PyQt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="220"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="215"/> <source>pyuic Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="272"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="267"/> <source>Select to generate extra code to test and display the form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="275"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="270"/> <source>Generate Extra Test Code</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="288"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="283"/> <source>PySide2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="316"/> <source>pyside2-uic Options</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> + <source><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Queues</name> @@ -63726,6 +64033,334 @@ </message> </context> <context> + <name>Security</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="16"/> + <source>Use of 'assert' detected. The enclosed code will be removed when compiling to optimised byte code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="22"/> + <source>Use of 'exec' detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="27"/> + <source>'chmod' setting a permissive mask {0} on file ({1}).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="32"/> + <source>Possible binding to all interfaces.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="43"/> + <source>Possible hardcoded password: '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="48"/> + <source>Probable insecure usage of temp file/directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="53"/> + <source>Try, Except, Pass detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="56"/> + <source>Try, Except, Continue detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="61"/> + <source>A Flask app appears to be run with debug=True, which exposes the Werkzeug debugger and allows the execution of arbitrary code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="67"/> + <source>Pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="71"/> + <source>Deserialization with the marshal module is possibly dangerous.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="74"/> + <source>Use of insecure MD2, MD4, MD5, or SHA1 hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="77"/> + <source>Use of insecure cipher '{0}'. Replace with a known secure cipher such as AES.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="81"/> + <source>Use of insecure cipher mode '{0}'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="84"/> + <source>Use of insecure and deprecated function (mktemp).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="87"/> + <source>Use of possibly insecure function - consider using safer ast.literal_eval.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="91"/> + <source>Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="95"/> + <source>Use of HTTPSConnection on older versions of Python prior to 2.7.9 and 3.4.3 do not provide security, see https://wiki.openstack.org/wiki/OSSN/OSSN-0033</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="100"/> + <source>Audit url open for permitted schemes. Allowing use of file:/ or custom schemes is often unexpected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="104"/> + <source>Standard pseudo-random generators are not suitable for security/cryptographic purposes.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="108"/> + <source>Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="142"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="147"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="152"/> + <source>FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="156"/> + <source>The input method in Python 2 will read from standard input, evaluate and run the resulting string as Python source code. This is similar, though in many ways worse, than using eval. On Python 2, use raw_input instead, input is safe in Python 3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="162"/> + <source>By default, Python will create a secure, verified SSL context for use in such classes as HTTPSConnection. However, it still allows using an insecure context via the _create_unverified_context that reverts to the previous behavior that does not validate certificates or perform hostname checks.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="169"/> + <source>Use of os.tempnam() and os.tmpnam() is vulnerable to symlink attacks. Consider using tmpfile() instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="175"/> + <source>Use of insecure {0} hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="180"/> + <source>A telnet-related module is being imported. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="184"/> + <source>A FTP-related module is being imported. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="192"/> + <source>Consider possible security implications associated with the '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="216"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="221"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="226"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Use defused.xmlrpc.monkey_patch() function to monkey-patch xmlrpclib and mitigate XML vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="231"/> + <source>Consider possible security implications associated with '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="235"/> + <source>The pyCrypto library and its module '{0}' are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="242"/> + <source>'requests' call with verify=False disabling SSL certificate checks, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="248"/> + <source>'ssl.wrap_socket' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="252"/> + <source>'SSL.Context' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="256"/> + <source>Function call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="260"/> + <source>Function definition identified with insecure SSL/TLS protocol version by default, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="264"/> + <source>'ssl.wrap_socket' call with no SSL/TLS protocol version specified, the default 'SSLv23' could be insecure, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="270"/> + <source>{0} key sizes below {1:d} bits are considered breakable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="275"/> + <source>Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary objects. Consider 'yaml.safe_load()'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="281"/> + <source>Paramiko call with policy set to automatically trust the unknown host key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="287"/> + <source>Possible shell injection via 'Paramiko' call, check inputs are properly sanitized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="291"/> + <source>'subprocess' call with shell=True seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="295"/> + <source>'subprocess' call with shell=True identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="298"/> + <source>'subprocess' call - check for execution of untrusted input.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="301"/> + <source>Function call with shell=True parameter identified, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="305"/> + <source>Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="309"/> + <source>Starting a process with a shell, possible injection detected, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="313"/> + <source>Starting a process without a shell.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="316"/> + <source>Starting a process with a partial executable path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="321"/> + <source>Possible SQL injection vector through string-based query construction.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="327"/> + <source>Possible wildcard injection in call: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="332"/> + <source>Use of 'extra()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="335"/> + <source>Use of 'RawSQL()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="340"/> + <source>Using jinja2 templates with 'autoescape=False' is dangerous and can lead to XSS. Use 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="345"/> + <source>By default, jinja2 sets 'autoescape' to False. Consider using 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="352"/> + <source>Mako templates allow HTML/JS rendering by default and are inherently open to XSS attacks. Ensure variables in all templates are properly sanitized via the 'n', 'h' or 'x' flags (depending on context). For example, to HTML escape the variable 'data' do ${{ data |h }}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="360"/> + <source>Potential XSS on 'mark_safe()' function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="365"/> + <source>Possible hardcoded AWS access key ID: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="368"/> + <source>Possible hardcoded AWS secret access key: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="373"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>SecurityPage</name> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="37"/> @@ -63767,6 +64402,21 @@ <source><b>Configure security settings</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="96"/> + <source>Certificate Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="102"/> + <source>Select to always reject web pages with certificate issues</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="105"/> + <source>Always reject URLs with certificate errors</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SendRefererWhitelistDialog</name> @@ -65723,52 +66373,52 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="168"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="171"/> <source>Media</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="184"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="187"/> <source>Image</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="189"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="192"/> <source>Image Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="197"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="200"/> <source><b>Preview</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="216"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="238"/> <source>Preview not available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="243"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="265"/> <source>Copy Image Location to Clipboard</source> <translation type="unfinished">Görüntünün Yerini Panoya kopyala</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="246"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="268"/> <source>Copy Image Name to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source>Save Image</source> <translation type="unfinished">Görüntüyü Kaydet</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="299"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="321"/> <source>All Files (*)</source> <translation type="unfinished">Tüm Dosyalar (*)</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source><p>Cannot write to file <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> @@ -65783,25 +66433,30 @@ <translation type="obsolete">Yol:</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="229"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="251"/> <source>Loading...</source> <translation type="unfinished">Yükleniyor...</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="287"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="309"/> <source><p>This preview is not available.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="76"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="97"/> <source><b>Connection is encrypted.</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="80"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="102"/> <source><b>Connection is not encrypted.</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="87"/> + <source><b>Connection is encrypted but may be insecure.</b></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SiteInfoWidget</name> @@ -65811,60 +66466,65 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="62"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="69"/> <source>Your connection to this site is <b>secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="67"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="74"/> <source>Your connection to this site is <b>not secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="82"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="89"/> <source>This is your <b>{0}.</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="88"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="95"/> <source>You have <b>never</b> visited this site before.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="97"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="104"/> <source>first</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="99"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="106"/> <source>second</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="101"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="108"/> <source>third</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="102"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="109"/> <source>This is your <b>{0}</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="123"/> - <source>Register as <b>{0}</b> links handler.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="130"/> + <source>Register as <b>{0}</b> links handler.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="137"/> <source>Register</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="147"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="154"/> <source>More...</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="63"/> + <source>Your connection to this site <b>may not be secure</b>.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SnapWidget</name> @@ -78278,7 +78938,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6327"/> + <location filename="../UI/UserInterface.py" line="6294"/> <source>Export Keyboard Shortcuts</source> <translation>Kılavye Kısa Yollarını Dışa Aktar</translation> </message> @@ -78298,7 +78958,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Import Keyboard Shortcuts</source> <translation>Klavye kısayollarını İçe Aktar</translation> </message> @@ -78543,7 +79203,7 @@ <translation>Ayarlar</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Help</source> <translation>Yardım</translation> </message> @@ -78598,7 +79258,7 @@ <translation type="obsolete"><h3>Sürüm Numaraları</h3><table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7324"/> + <location filename="../UI/UserInterface.py" line="7291"/> <source></table></source> <translation></table></translation> </message> @@ -78655,202 +79315,202 @@ <message> <location filename="../UI/UserInterface.py" line="5062"/> <source>Qt 3 support</source> - <translation>Qt3 Desteği</translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <translation type="obsolete">Qt3 Desteği</translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5210"/> <source>Problem</source> <translation>Problem</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source><p>The file <b>{0}</b> does not exist or is zero length.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source>Process Generation Error</source> <translation>İşlem Üretecinde Hata</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="4962"/> + <location filename="../UI/UserInterface.py" line="4935"/> <source><p>Could not start Qt-Designer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5034"/> + <location filename="../UI/UserInterface.py" line="5005"/> <source><p>Could not start Qt-Linguist.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5087"/> + <location filename="../UI/UserInterface.py" line="5049"/> <source><p>Could not start Qt-Assistant.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source> <translation>Hali hazırda kullanıcı göstericisi seçilmedi. Lütfen .birini belirlemek için özellikler diyaloğunu kullanının.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5129"/> + <location filename="../UI/UserInterface.py" line="5096"/> <source><p>Could not start custom viewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5149"/> + <location filename="../UI/UserInterface.py" line="5116"/> <source><p>Could not start the help viewer.<br>Ensure that it is available as <b>hh</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5199"/> + <location filename="../UI/UserInterface.py" line="5166"/> <source><p>Could not start UI Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5256"/> + <location filename="../UI/UserInterface.py" line="5223"/> <source><p>Could not start Translation Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5279"/> + <location filename="../UI/UserInterface.py" line="5246"/> <source><p>Could not start SQL Browser.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>External Tools</source> <translation>Harici Araçlar</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5374"/> + <location filename="../UI/UserInterface.py" line="5341"/> <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>No toolgroup entry '{0}' found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5422"/> + <location filename="../UI/UserInterface.py" line="5389"/> <source>Starting process '{0} {1}'. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source><p>Could not start the tool entry <b>{0}</b>.<br>Ensure that it is available as <b>{1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5516"/> + <location filename="../UI/UserInterface.py" line="5483"/> <source>Process '{0}' has exited. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source>Documentation Missing</source> <translation>Eksik Belgeleme</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source><p>The documentation starting point "<b>{0}</b>" could not be found.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source>Documentation</source> <translation>Belgeleme</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5727"/> + <location filename="../UI/UserInterface.py" line="5694"/> <source><p>The PyQt4 documentation starting point has not been configured.</p></source> <translation><p>PyQt4 Belgelerinin başlama noktası ayarlanmamış.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source>Save tasks</source> <translation>Görevleri kaydet</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source>Read tasks</source> <translation>Görevler Okunuyor</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6646"/> + <location filename="../UI/UserInterface.py" line="6613"/> <source>Save session</source> <translation>Oturumu kaydet</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6584"/> + <location filename="../UI/UserInterface.py" line="6551"/> <source><p>The session file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source>Read session</source> <translation>Oturumu oku</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source><p>The session file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source>Drop Error</source> <translation>Düşme hatası</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> bir dosya değil.</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>&Cancel</source> <translation>&Vazgeç</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7108"/> + <location filename="../UI/UserInterface.py" line="7075"/> <source>Trying host {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>Update available</source> <translation>Güncelleme mümkün değil</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Error during updates check</source> <translation>Güncellemeleri kontrol esnasında hata</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Could not perform updates check.</source> <translation>Güncellemelere ulaşamıyorum.</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7309"/> + <location filename="../UI/UserInterface.py" line="7276"/> <source><h3>Available versions</h3><table></source> <translation><h3>Mümkün sürümler</h3><table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>First time usage</source> <translation>İlk kullanım</translation> </message> @@ -78910,32 +79570,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Keyboard shortcut file (*.e4k)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>Error getting versions information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7167"/> + <location filename="../UI/UserInterface.py" line="7134"/> <source>The versions information could not be downloaded. Please go online and try again.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Open Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Could not start a web browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -79021,12 +79681,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5351"/> + <location filename="../UI/UserInterface.py" line="5318"/> <source><p>Could not start Snapshot tool.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7380"/> + <location filename="../UI/UserInterface.py" line="7347"/> <source>Select Workspace Directory</source> <translation type="unfinished"></translation> </message> @@ -79391,7 +80051,7 @@ <translation type="unfinished">PyQt4 Begelerini aç {5 ?}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5789"/> + <location filename="../UI/UserInterface.py" line="5756"/> <source><p>The PyQt5 documentation starting point has not been configured.</p></source> <translation type="unfinished"><p>PyQt4 Belgelerinin başlama noktası ayarlanmamış.</p> {5 ?}</translation> </message> @@ -79401,7 +80061,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>%v/%m</source> <translation type="unfinished"></translation> </message> @@ -79421,7 +80081,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7103"/> + <location filename="../UI/UserInterface.py" line="7070"/> <source>Version Check</source> <translation type="unfinished"></translation> </message> @@ -79493,25 +80153,25 @@ <message> <location filename="../UI/UserInterface.py" line="5062"/> <source>Qt v.3 is not supported by eric6.</source> - <translation type="unfinished">Qt v.3 eric5 tarafından desteklenmiyor. {3 ?} {6.?}</translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <translation type="obsolete">Qt v.3 eric5 tarafından desteklenmiyor. {3 ?} {6.?}</translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="7233"/> <source>The update to <b>{0}</b> of eric6 is available at <b>{1}</b>. Would you like to get it?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>Eric6 is up to date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>You are using the latest version of eric6</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>eric6 has not been configured yet. The configuration dialog will be started.</source> <translation type="unfinished">Eric5 henüz ayarlanmadı. Ayarlar Diyaloğu başlatılıyor. {6 ?}</translation> </message> @@ -79531,7 +80191,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7119"/> + <location filename="../UI/UserInterface.py" line="7086"/> <source>The versions information cannot not be downloaded because you are <b>offline</b>. Please go online and try again.</source> <translation type="unfinished"></translation> </message> @@ -79576,7 +80236,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>Load session</source> <translation type="unfinished">Oturum yükleniyor</translation> </message> @@ -79591,17 +80251,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>eric6 Session Files (*.e5s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>Crash Session found!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>A session file of a crashed session was found. Shall this session be restored?</source> <translation type="unfinished"></translation> </message> @@ -79616,17 +80276,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>Update Check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7244"/> + <location filename="../UI/UserInterface.py" line="7211"/> <source>You are using a snapshot release of eric6. A more up-to-date stable release might be available.</source> <translation type="unfinished"></translation> </message> @@ -79681,7 +80341,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source><p>The PySide{0} documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> @@ -79757,17 +80417,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source>Start Web Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6015"/> + <location filename="../UI/UserInterface.py" line="5982"/> <source>The eric6 web browser could not be started.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source><p>The eric6 web browser is not started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> @@ -79866,6 +80526,21 @@ <source><h2>Version Numbers</h2><table></source> <translation type="unfinished"><h3>Sürüm Numaraları</h3><table> {2>?} {2>?}</translation> </message> + <message> + <location filename="../UI/UserInterface.py" line="4944"/> + <source><p>Could not find the Qt-Designer executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5014"/> + <source><p>Could not find the Qt-Linguist executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5058"/> + <source><p>Could not find the Qt-Assistant executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>UserPropertiesDialog</name> @@ -85653,37 +86328,37 @@ <translation type="obsolete">Güvenli URL'nin arkaalan rengini seçiniz.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="324"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="402"/> <source>Images</source> <translation type="unfinished">Görüntüler</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="408"/> <source>Select to load images</source> <translation type="unfinished">Yüklenecek görüntüleri seç</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="333"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="411"/> <source>Load images</source> <translation type="unfinished">Görüntüleri yükle</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="343"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="421"/> <source>Style Sheet</source> <translation type="unfinished">Sayfa Stili</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="349"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="427"/> <source>User Style Sheet:</source> <translation type="unfinished">Kullanıcı Sayfa Stili:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="365"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="443"/> <source>Enter the file name of a user style sheet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="375"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="453"/> <source>Tabs</source> <translation type="unfinished">Sekmeler</translation> </message> @@ -85693,12 +86368,12 @@ <translation type="obsolete">Her bir sekmede bir tane yerine tek bir kapatma düğmesi göster</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="381"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="459"/> <source>Select to issue a warning, if multiple tabs are about to be closed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="384"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="462"/> <source>Warn, if multiple tabs are about to be closed</source> <translation type="unfinished"></translation> </message> @@ -85718,37 +86393,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="426"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="504"/> <source><font color="#FF0000"><b>Note:</b> All settings below are activated at the next startup of the application.</font></source> <translation type="unfinished"><font color="#FF0000"><b>Not:</b> Bu ayarlamalar uygulamanın bir sonraki çalıştırılmasında aktif hale geçecektir.</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="433"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="511"/> <source>Toolbars</source> <translation type="unfinished">Araççubuğu</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="439"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="517"/> <source>Select to show toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="520"/> <source>Show Toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="394"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="472"/> <source>Scrollbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="400"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="478"/> <source>Select to show scrollbars. Note: Scrolling is possible even without them.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="403"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="481"/> <source>Show Scrollbars</source> <translation type="unfinished"></translation> </message> @@ -85758,13 +86433,48 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="304"/> + <source>Select the background color for secure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> - <source>Background color of secure URLs:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="298"/> - <source>Select the background color for secure URLs.</source> + <source>URL Entry Background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="291"/> + <source>Secure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="327"/> + <source>Insecure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="340"/> + <source>Select the background color for insecure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="350"/> + <source>Malicious URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="363"/> + <source>Select the background color for malicious URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="373"/> + <source>Private Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="386"/> + <source>Select the background color for URLs in private mode.</source> <translation type="unfinished"></translation> </message> </context> @@ -87036,27 +87746,27 @@ <translation type="unfinished">...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="892"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="913"/> <source>Loading...</source> <translation type="unfinished">Yükleniyor...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="912"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="922"/> <source>Finished loading</source> <translation type="unfinished">Yükleme bitirildi</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="914"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="889"/> <source>Failed to load</source> <translation type="unfinished">Yüklerken başarısız olundu</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window?</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation type="unfinished"> @@ -87065,22 +87775,22 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="962"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="970"/> <source>&Quit</source> <translation type="unfinished">&Çıkış</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="965"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="973"/> <source>C&lose Current Tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1146"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1154"/> <source>Restore All Closed Tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1148"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1156"/> <source>Clear List</source> <translation type="unfinished"></translation> </message> @@ -89979,12 +90689,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="391"/> + <location filename="../eric6.py" line="399"/> <source>Starting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../eric6.py" line="396"/> + <location filename="../eric6.py" line="404"/> <source>Generating Main Window...</source> <translation type="unfinished">Anapencere üretiliyor...</translation> </message> @@ -90141,7 +90851,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="183"/> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="187"/> <source>no message defined for code '{0}'</source> <translation type="unfinished"></translation> </message> @@ -90325,421 +91035,426 @@ <source>'...' % ... `*` specifier requires sequence</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="165"/> + <source>'if tuple literal' is always true, perhaps remove accidental comma?</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>pycodestyle</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="21"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> <source>indentation contains mixed spaces and tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> - <source>indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="27"/> - <source>expected an indented block</source> + <source>indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="30"/> - <source>unexpected indentation</source> + <source>expected an indented block</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="33"/> - <source>indentation is not a multiple of four (comment)</source> + <source>unexpected indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36"/> - <source>expected an indented block (comment)</source> + <source>indentation is not a multiple of four (comment)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39"/> + <source>expected an indented block (comment)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> <source>unexpected indentation (comment)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> - <source>continuation line indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="48"/> - <source>continuation line missing indentation or outdented</source> + <source>continuation line indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="51"/> + <source>continuation line missing indentation or outdented</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54"/> <source>closing bracket does not match indentation of opening bracket's line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55"/> - <source>closing bracket does not match visual indentation</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="58"/> - <source>continuation line with same indent as next logical line</source> + <source>closing bracket does not match visual indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="61"/> - <source>continuation line over-indented for hanging indent</source> + <source>continuation line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64"/> - <source>continuation line over-indented for visual indent</source> + <source>continuation line over-indented for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67"/> - <source>continuation line under-indented for visual indent</source> + <source>continuation line over-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70"/> - <source>visually indented line with same indent as next logical line</source> + <source>continuation line under-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73"/> - <source>continuation line unaligned for hanging indent</source> + <source>visually indented line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76"/> - <source>closing bracket is missing indentation</source> + <source>continuation line unaligned for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79"/> - <source>indentation contains tabs</source> + <source>closing bracket is missing indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82"/> + <source>indentation contains tabs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85"/> <source>whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91"/> - <source>whitespace before '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94"/> - <source>multiple spaces before operator</source> + <source>whitespace before '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97"/> - <source>multiple spaces after operator</source> + <source>multiple spaces before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100"/> - <source>tab before operator</source> + <source>multiple spaces after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103"/> - <source>tab after operator</source> + <source>tab before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106"/> - <source>missing whitespace around operator</source> + <source>tab after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109"/> - <source>missing whitespace around arithmetic operator</source> + <source>missing whitespace around operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112"/> - <source>missing whitespace around bitwise or shift operator</source> + <source>missing whitespace around arithmetic operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115"/> - <source>missing whitespace around modulo operator</source> + <source>missing whitespace around bitwise or shift operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118"/> - <source>missing whitespace after '{0}'</source> + <source>missing whitespace around modulo operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121"/> - <source>multiple spaces after '{0}'</source> + <source>missing whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124"/> - <source>tab after '{0}'</source> + <source>multiple spaces after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127"/> + <source>tab after '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> <source>unexpected spaces around keyword / parameter equals</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> - <source>at least two spaces before inline comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136"/> - <source>inline comment should start with '# '</source> + <source>at least two spaces before inline comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="139"/> - <source>block comment should start with '# '</source> + <source>inline comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="142"/> - <source>too many leading '#' for block comment</source> + <source>block comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="145"/> - <source>multiple spaces after keyword</source> + <source>too many leading '#' for block comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="148"/> - <source>multiple spaces before keyword</source> + <source>multiple spaces after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="151"/> - <source>tab after keyword</source> + <source>multiple spaces before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154"/> - <source>tab before keyword</source> + <source>tab after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157"/> - <source>missing whitespace after keyword</source> + <source>tab before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="160"/> - <source>trailing whitespace</source> + <source>missing whitespace after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163"/> - <source>no newline at end of file</source> + <source>trailing whitespace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166"/> + <source>no newline at end of file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169"/> <source>blank line contains whitespace</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> - <source>too many blank lines ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> - <source>blank lines found after function decorator</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="194"/> - <source>blank line at end of file</source> + <source>too many blank lines ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <source>blank lines found after function decorator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="197"/> - <source>multiple imports on one line</source> + <source>blank line at end of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200"/> - <source>module level import not at top of file</source> + <source>multiple imports on one line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203"/> - <source>line too long ({0} > {1} characters)</source> + <source>module level import not at top of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206"/> - <source>the backslash is redundant between brackets</source> + <source>line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209"/> + <source>the backslash is redundant between brackets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> <source>line break before binary operator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> - <source>.has_key() is deprecated, use 'in'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> - <source>deprecated form of raising exception</source> + <source>.has_key() is deprecated, use 'in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> - <source>'<>' is deprecated, use '!='</source> + <source>deprecated form of raising exception</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> + <source>'<>' is deprecated, use '!='</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>backticks are deprecated, use 'repr()'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> - <source>multiple statements on one line (colon)</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> - <source>multiple statements on one line (semicolon)</source> + <source>multiple statements on one line (colon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> - <source>statement ends with a semicolon</source> + <source>multiple statements on one line (semicolon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> + <source>statement ends with a semicolon</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248"/> <source>multiple statements on one line (def)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="251"/> - <source>comparison to {0} should be {1}</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> - <source>test for membership should be 'not in'</source> + <source>comparison to {0} should be {1}</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> - <source>test for object identity should be 'is not'</source> + <source>test for membership should be 'not in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> - <source>do not compare types, use 'isinstance()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> - <source>do not assign a lambda expression, use a def</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> - <source>ambiguous variable name '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> - <source>ambiguous class definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> - <source>ambiguous function definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> - <source>{0}: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> - <source>{0}</source> + <source>test for object identity should be 'is not'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> + <source>do not compare types, use 'isinstance()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> + <source>do not assign a lambda expression, use a def</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> + <source>ambiguous variable name '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> + <source>ambiguous class definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> + <source>ambiguous function definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284"/> + <source>{0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> <source>do not use bare except</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184"/> <source>expected {0} blank lines after class or function definition, found {1}</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> + <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> + <source>missing whitespace around parameter equals</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <source>expected {0} blank lines, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <source>expected {0} blank lines before a nested definition, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <source>line break after binary operator</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> - <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> - <source>missing whitespace around parameter equals</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172"/> - <source>expected {0} blank lines, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="185"/> - <source>expected {0} blank lines before a nested definition, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> - <source>line break after binary operator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>invalid escape sequence '\{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> <source>too many blank lines ({0}) before a nested definition, expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> <source>too many blank lines ({0}), expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> <source>over-indented</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> <source>doc line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message>
--- a/eric6/i18n/eric6_zh_CN.ts Sun May 03 13:42:52 2020 +0200 +++ b/eric6/i18n/eric6_zh_CN.ts Wed Jun 17 17:14:12 2020 +0200 @@ -385,7 +385,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="200"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="201"/> <source>Add Bookmark</source> <translation>添加书签</translation> </message> @@ -1132,72 +1132,72 @@ <context> <name>AnnotationsChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="808"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> <source>missing type annotation for function argument '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="811"/> - <source>missing type annotation for '*{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="814"/> + <source>missing type annotation for '*{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> <source>missing type annotation for '**{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> - <source>missing return type annotation for public function</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="826"/> - <source>missing return type annotation for protected function</source> + <source>missing return type annotation for public function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="829"/> - <source>missing return type annotation for private function</source> + <source>missing return type annotation for protected function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="832"/> - <source>missing return type annotation for special method</source> + <source>missing return type annotation for private function</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="835"/> - <source>missing return type annotation for staticmethod</source> + <source>missing return type annotation for special method</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="838"/> + <source>missing return type annotation for staticmethod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="841"/> <source>missing return type annotation for classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="850"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="853"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="817"/> - <source>missing type annotation for 'self' in method</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="820"/> + <source>missing type annotation for 'self' in method</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="823"/> <source>missing type annotation for 'cls' in classmethod</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="842"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="845"/> <source>type annotation coverage of {0}% is too low</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="846"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="849"/> <source>type annotation is too complex ({0} > {1})</source> <translation type="unfinished"></translation> </message> @@ -1845,32 +1845,32 @@ <translation>添加文件夹(&F)</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="154"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> <source>&Open</source> <translation>打开(&O)</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="156"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> <source>Open in New &Tab</source> <translation>在新选项卡中打开(&T)</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="167"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> <source>Edit &Name</source> <translation>编辑名称(&N)</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="170"/> - <source>Edit &Address</source> - <translation>编辑地址(&A)</translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="172"/> + <source>Edit &Address</source> + <translation>编辑地址(&A)</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="174"/> <source>&Delete</source> <translation>删除(&D)</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="331"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="343"/> <source>New Folder</source> <translation>新文件夹</translation> </message> @@ -1880,25 +1880,40 @@ <translation>点击删除选中的条目</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="176"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="178"/> <source>&Properties...</source> <translation>属性(&P)…</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="161"/> - <source>Open in New &Window</source> - <translation type="unfinished">在新窗口中打开(&W)</translation> - </message> - <message> <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="163"/> + <source>Open in New &Window</source> + <translation type="unfinished">在新窗口中打开(&W)</translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="165"/> <source>Open in New Pri&vate Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="158"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="160"/> <source>Open in New &Background Tab</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="182"/> + <source>New &Folder...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>New Bookmark Folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="335"/> + <source>Enter title for new bookmark folder:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>BookmarksImportDialog</name> @@ -2821,6 +2836,49 @@ </message> </context> <context> + <name>CheckerCategories</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="63"/> + <source>Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="66"/> + <source>Code Complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="69"/> + <source>Documentation</source> + <translation type="unfinished">文档</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="72"/> + <source>Errors</source> + <translation type="unfinished">错误</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="75"/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="78"/> + <source>Naming</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="84"/> + <source>Warnings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <source>Security</source> + <translation type="unfinished">安全</translation> + </message> +</context> +<context> <name>ChromeImporter</name> <message> <location filename="../WebBrowser/Bookmarks/BookmarksImporters/ChromeImporter.py" line="43"/> @@ -2956,15 +3014,20 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source>Select Path to Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="96"/> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="123"/> <source><p>The device volume <b>{0}</b> could not be found. Is the device in 'bootloader' mode and mounted?</p> <p>Alternatively select the "Manual Select" entry and enter the path to the device below.</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/CircuitPythonFirmwareSelectionDialog.py" line="52"/> + <source>Manual Select</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ClearPrivateDataDialog</name> @@ -3350,6 +3413,14 @@ </message> </context> <context> + <name>CodeStyleChecker</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1133"/> + <source>No message defined for code '{0}'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>CodeStyleCheckerDialog</name> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="14"/> @@ -3364,137 +3435,127 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="50"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="68"/> <source>Exclude Files:</source> <translation type="unfinished">排除文件:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="57"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="75"/> <source>Enter filename patterns of files to be excluded separated by a comma</source> <translation type="unfinished">输入要排除文件的文件名样式,用逗号分隔</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="830"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1090"/> <source>Press to start the code style check run</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="840"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1254"/> <source>Press to fix the selected issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1113"/> <source>Press to load the default values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="873"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1123"/> <source>Press to store the current values as defaults</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="883"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1133"/> <source>Press to reset the default values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="82"/> <source>Exclude Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="71"/> - <source>Enter message codes or categories to be excluded separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="141"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="159"/> <source>Press to select the message codes from a list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="85"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="103"/> <source>Included Messages:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="92"/> - <source>Enter message codes or categories to be included separated by a comma</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="106"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="124"/> <source>Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="113"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="131"/> <source>Enter message codes of issues to be fixed automatically (leave empty to fix all)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="127"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="145"/> <source>Don't Fix Issues:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="134"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="152"/> <source>Enter message codes of issues not to be fixed automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="265"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="283"/> <source>Max. Line Length:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="316"/> <source>Enter the maximum allowed line length (PEP-8: 79 characters)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="425"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="443"/> <source>Docstring Type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="450"/> <source>Select the rule set for docstrings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="406"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="424"/> <source>Select to allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="409"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="427"/> <source>Allow hanging closing brackets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="150"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="168"/> <source>Select to repeat each message type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="153"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="171"/> <source>Repeat messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="163"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="181"/> <source>Select to fix some issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="166"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="184"/> <source>Fix issues automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="904"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1167"/> <source><b>Result List</b> <p>This list shows the results of the code style check. Double clicking an entry will open this entry in an editor window and position the cursor at @@ -3502,375 +3563,525 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1183"/> <source>File/Line</source> <translation type="unfinished">文件/行</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="925"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1188"/> <source>Code</source> <translation type="unfinished">代码</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="930"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1193"/> <source>Message</source> <translation type="unfinished">消息</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="80"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="117"/> <source>PEP-257</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="81"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="118"/> <source>Eric</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="88"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="144"/> <source>Statistics...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="90"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="146"/> <source>Press to show some statistics for the last run</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="149"/> <source>Show</source> <translation type="unfinished">显示</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="151"/> <source>Press to show all files containing an issue</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="637"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="241"/> <source>Error: {0}</source> <translation type="unfinished">错误:{0}</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="244"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="248"/> <source>Fix: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="778"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="982"/> <source>No issues found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1214"/> <source>Shows the progress of the code style check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="960"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1223"/> <source>%v/%m Files</source> <translation type="unfinished">%v/%m 文件</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="176"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="194"/> <source>Select to show ignored issues</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="179"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="197"/> <source>Show ignored</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="730"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="927"/> <source>{0} (ignored)</source> <translation type="unfinished">{0}(已忽略)</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="622"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="820"/> <source>Preparing files...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="698"/> <source>Enter the maximum allowed code complexity (McCabe: 10)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="152"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="214"/> <source>Errors</source> <translation type="unfinished">错误</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="664"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="859"/> <source>Transferring data...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="44"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="42"/> <source>Global Options</source> <translation type="unfinished">全局选项</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="233"/> <source>Specific Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="257"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="275"/> <source>Source Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="419"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="437"/> <source>Documentation Style</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="455"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="473"/> <source>Coding Line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="461"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="479"/> <source>Valid Encodings:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="468"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="486"/> <source>Enter valid encodings separated by a comma (leave empty to use defaults)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="478"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="496"/> <source>Copyright</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="484"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="502"/> <source>Min. File Size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="491"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="509"/> <source>Enter the minimum size a file must have to be checked (0 for all files)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="517"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="535"/> <source>Author:</source> <translation type="unfinished">作者:</translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="524"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="542"/> <source>Enter a copyright author name to check for (leave empty to omit this check)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="534"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="552"/> <source>Future Imports</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="540"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="558"/> <source>Expected Imports:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="654"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="672"/> <source>Code Complexity</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1093"/> + <source>&Start</source> + <translation type="unfinished">开始(&S)</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1257"/> + <source>&Fix Selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1116"/> + <source>&Load Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1126"/> + <source>St&ore Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1136"/> + <source>&Reset Defaults</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="985"/> + <source>No files found (check your ignore list).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="584"/> + <source>Ignore Built-ins Assignment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="600"/> + <source>Left</source> + <translation type="unfinished">Left</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="605"/> + <source>Right</source> + <translation type="unfinished">Right</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="615"/> + <source>Press to add a built-in assignment to be ignored</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="625"/> + <source>Press to delete the selected entries</source> + <translation type="unfinished">点击删除选中的条目</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="691"/> + <source>Max. McCabe Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="714"/> + <source>Max. Line Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="721"/> + <source>Enter the maximum complexity (number of nodes) for a line of code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="737"/> + <source>Max. Line Complexity Score:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="744"/> + <source>Enter the maximum allowed median for line complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="350"/> + <source>Blank Lines Before</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="356"/> + <source>Top Level Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="363"/> + <source>Enter the number of blank lines before top level classes and functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="395"/> + <source>Methods and Nested Classes and Functions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="402"/> + <source>Enter the number of blank lines before methods and nested classes or functions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="309"/> + <source>Max. Documentation Line Length:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="653"/> + <source>Commented Code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="659"/> + <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="662"/> + <source>Search aggressively</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="763"/> + <source>Type Annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="769"/> + <source>Min. Coverage:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="776"/> + <source>Enter the minimum percentage of type annotations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="779"/> + <source>off</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="782"/> + <source>%</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="805"/> + <source>Max. Complexity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="812"/> + <source>Enter the maximum type annotation complexity</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="32"/> + <source>Configure</source> + <translation type="unfinished">配置</translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1146"/> + <source>Run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1244"/> + <source>Press to restart the code style check run</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1247"/> + <source>Restart</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="48"/> + <source>Categories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="58"/> + <source>Select the categories of checks to be performed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="89"/> + <source>Enter message codes to be excluded separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="110"/> + <source>Enter message codes to be included separated by a comma</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="833"/> - <source>&Start</source> - <translation type="unfinished">开始(&S)</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="843"/> - <source>&Fix Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="866"/> - <source>&Load Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="876"/> - <source>St&ore Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="886"/> - <source>&Reset Defaults</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="781"/> - <source>No files found (check your ignore list).</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="566"/> - <source>Ignore Built-ins Assignment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="582"/> - <source>Left</source> - <translation type="unfinished">Left</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="587"/> - <source>Right</source> - <translation type="unfinished">Right</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="597"/> - <source>Press to add a built-in assignment to be ignored</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="607"/> - <source>Press to delete the selected entries</source> - <translation type="unfinished">点击删除选中的条目</translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="673"/> - <source>Max. McCabe Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="696"/> - <source>Max. Line Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="703"/> - <source>Enter the maximum complexity (number of nodes) for a line of code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="719"/> - <source>Max. Line Complexity Score:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="726"/> - <source>Enter the maximum allowed median for line complexity</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="332"/> - <source>Blank Lines Before</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="338"/> - <source>Top Level Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="345"/> - <source>Enter the number of blank lines before top level classes and functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="377"/> - <source>Methods and Nested Classes and Functions:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="384"/> - <source>Enter the number of blank lines before methods and nested classes or functions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="291"/> - <source>Max. Documentation Line Length:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="635"/> - <source>Commented Code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="641"/> - <source>Select to search for commented code more aggressively. This may increase the number of false positives.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="644"/> - <source>Search aggressively</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="745"/> - <source>Type Annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="751"/> - <source>Min. Coverage:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="758"/> - <source>Enter the minimum percentage of type annotations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="761"/> - <source>off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="764"/> - <source>%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="787"/> - <source>Max. Complexity:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="794"/> - <source>Enter the maximum type annotation complexity</source> + <source>Security Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="839"/> + <source>Hardcoded 'tmp' Directories:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="849"/> + <source>Weak Cryptographic Keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="855"/> + <source>DSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="973"/> + <source>High Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="868"/> + <source>Select the bit length below which a DSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="990"/> + <source>Medium Risk:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="885"/> + <source>Select the bit length below which a DSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="911"/> + <source>RSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="924"/> + <source>Select the bit length below which a RSA key is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="941"/> + <source>Select the bit length below which a RSA key is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="967"/> + <source>Elliptic Curves</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="980"/> + <source>Select the bit length below which an Elliptic Curve is to be considered very weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="997"/> + <source>Select the bit length below which an Elliptic Curve is to be considered weak</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1026"/> + <source>Enter the names of insecure SSL protocols and methods (one per line)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1033"/> + <source>Insecure SSL Protocols:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1043"/> + <source>Insecure Hashes:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1050"/> + <source>Enter a list of hash methods to be considered insecure separated by comma</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1057"/> + <source>Select to also check for insecure exception handling for typed exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1060"/> + <source>Check Typed Exceptions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1067"/> + <source>Enter directory names (one per line) to be checked for</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="1154"/> + <source><b>Note:</b> Mark reviewed security issues with a "<b># secok</b>" comment.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>CodeStyleCheckerPlugin</name> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> <source>Check Code Style</source> <translation type="unfinished">检查代码格式</translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="356"/> - <source>&Code Style...</source> - <translation type="unfinished">代码格式(&C)…</translation> - </message> - <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="262"/> - <source>Check code style.</source> - <translation type="unfinished">检查代码格式。</translation> - </message> - <message> <location filename="../Plugins/PluginCodeStyleChecker.py" line="360"/> + <source>&Code Style...</source> + <translation type="unfinished">代码格式(&C)…</translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="266"/> + <source>Check code style.</source> + <translation type="unfinished">检查代码格式。</translation> + </message> + <message> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="364"/> <source><b>Check Code Style...</b><p>This checks Python files for compliance to the code style conventions given in various PEPs.</p></source> <translation><b>检查代码格式…</b>本插件对 Python 源文件进行检查,确保其符合各个 PEP 所规定的代码格式惯例。</[></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="110"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="112"/> <source>Python 2 batch check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/PluginCodeStyleChecker.py" line="126"/> + <location filename="../Plugins/PluginCodeStyleChecker.py" line="128"/> <source>Python 3 batch check</source> <translation type="unfinished"></translation> </message> @@ -3906,229 +4117,224 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="857"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="861"/> <source>Triple single quotes converted to triple double quotes.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="860"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="864"/> <source>Introductory quotes corrected to be {0}"""</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="863"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="867"/> <source>Single line docstring put on one line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="866"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="870"/> <source>Period added to summary line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="893"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="897"/> <source>Blank line before function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="872"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="876"/> <source>Blank line inserted before class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="875"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="879"/> <source>Blank line inserted after class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="878"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="882"/> <source>Blank line inserted after docstring summary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="881"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="885"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="884"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="888"/> <source>Leading quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="887"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="891"/> <source>Trailing quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="890"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="894"/> <source>Blank line before class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="896"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="900"/> <source>Blank line after class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="899"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="903"/> <source>Blank line after function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="902"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="906"/> <source>Blank line after last paragraph removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="905"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="909"/> <source>Tab converted to 4 spaces.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="908"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="912"/> <source>Indentation adjusted to be a multiple of four.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="911"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="915"/> <source>Indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="914"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="918"/> <source>Indentation of closing bracket corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="917"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="921"/> <source>Missing indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="920"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="924"/> <source>Closing bracket aligned to opening bracket.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="923"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="927"/> <source>Indentation level changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="926"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="930"/> <source>Indentation level of hanging indentation changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="929"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="933"/> <source>Visual indentation corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="944"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="948"/> <source>Extraneous whitespace removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="941"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="945"/> <source>Missing whitespace added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="947"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> <source>Whitespace around comment sign corrected.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="951"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="955"/> <source>%n blank line(s) inserted.</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="954"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> <source>%n superfluous lines removed</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="958"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="962"/> <source>Superfluous blank lines removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="961"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="965"/> <source>Superfluous blank lines after function decorator removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="964"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="968"/> <source>Imports were put on separate lines.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="967"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="971"/> <source>Long lines have been shortened.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="970"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="974"/> <source>Redundant backslash in brackets removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="976"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="980"/> <source>Compound statement corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="979"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="983"/> <source>Comparison to None/True/False corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="982"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="986"/> <source>'{0}' argument added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="985"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="989"/> <source>'{0}' argument removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="988"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="992"/> <source>Whitespace stripped from end of line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="991"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="995"/> <source>newline added to end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="994"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="998"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="997"/> - <source>'<>' replaced by '!='.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1001"/> + <source>'<>' replaced by '!='.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1005"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="1107"/> - <source> no message defined for code '{0}'</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>CodeStyleStatisticsDialog</name> @@ -4153,40 +4359,47 @@ <translation type="unfinished">消息</translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="60"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="63"/> <source>%n issue(s) found</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="64"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="67"/> <source>%n issue(s) fixed</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="66"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="69"/> <source>%n file(s) checked</source> <translation> <numerusform>%n 文件已检查</numerusform> </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="68"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="71"/> <source>%n file(s) with issues found</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="62"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="65"/> <source>%n issue(s) ignored</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleStatisticsDialog.py" line="73"/> + <source>%n security issue(s) acknowledged</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> </context> <context> <name>CodingError</name> @@ -4608,22 +4821,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="479"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="482"/> <source>'{0}' is too complex ({1})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="481"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="484"/> <source>source code line is too complex ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="483"/> - <source>overall source code line complexity is too high ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="486"/> + <source>overall source code line complexity is too high ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="489"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> @@ -8413,242 +8626,242 @@ <context> <name>DocStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="288"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="291"/> <source>module is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290"/> - <source>public function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293"/> - <source>private function/method may be missing a docstring</source> + <source>public function/method is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296"/> + <source>private function/method may be missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299"/> <source>public class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301"/> <source>private class may be missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="300"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="303"/> <source>docstring not surrounded by """</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302"/> - <source>docstring containing \ not surrounded by r"""</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305"/> - <source>docstring containing unicode character not surrounded by u"""</source> + <source>docstring containing \ not surrounded by r"""</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308"/> + <source>docstring containing unicode character not surrounded by u"""</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311"/> <source>one-liner docstring on multiple lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313"/> <source>docstring has wrong indentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> <source>docstring summary does not end with a period</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> <source>docstring summary is not in imperative mood (Does instead of Do)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320"/> - <source>docstring summary looks like a function's/method's signature</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323"/> - <source>docstring does not mention the return value type</source> + <source>docstring summary looks like a function's/method's signature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326"/> - <source>function/method docstring is separated by a blank line</source> + <source>docstring does not mention the return value type</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> - <source>class docstring is not preceded by a blank line</source> + <source>function/method docstring is separated by a blank line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332"/> + <source>class docstring is not preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> <source>class docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> <source>docstring summary is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341"/> <source>last paragraph of docstring is not followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> - <source>private function/method is missing a docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> + <source>private function/method is missing a docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352"/> <source>private class is missing a docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> - <source>leading quotes of docstring not on separate line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <source>leading quotes of docstring not on separate line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> <source>trailing quotes of docstring not on separate line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="363"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="366"/> <source>docstring does not contain a @return line but function/method returns something</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370"/> <source>docstring contains a @return line but function/method doesn't return anything</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> - <source>docstring does not contain enough @param/@keyparam lines</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374"/> - <source>docstring contains too many @param/@keyparam lines</source> + <source>docstring does not contain enough @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377"/> - <source>keyword only arguments must be documented with @keyparam lines</source> + <source>docstring contains too many @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380"/> - <source>order of @param/@keyparam lines does not match the function/method signature</source> + <source>keyword only arguments must be documented with @keyparam lines</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383"/> + <source>order of @param/@keyparam lines does not match the function/method signature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="386"/> <source>class docstring is preceded by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> <source>class docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> - <source>function/method docstring is preceded by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> + <source>function/method docstring is preceded by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393"/> <source>function/method docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="396"/> - <source>last paragraph of docstring is followed by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="399"/> + <source>last paragraph of docstring is followed by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="402"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="403"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="406"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="426"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="429"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="312"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="315"/> <source>docstring does not contain a summary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>docstring summary does not start with '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="407"/> - <source>raised exception '{0}' is not documented in docstring</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="410"/> - <source>documented exception '{0}' is not raised</source> + <source>raised exception '{0}' is not documented in docstring</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="413"/> - <source>docstring does not contain a @signal line but class defines signals</source> + <source>documented exception '{0}' is not raised</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="416"/> - <source>docstring contains a @signal line but class doesn't define signals</source> + <source>docstring does not contain a @signal line but class defines signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="419"/> - <source>defined signal '{0}' is not documented in docstring</source> + <source>docstring contains a @signal line but class doesn't define signals</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="422"/> + <source>defined signal '{0}' is not documented in docstring</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="425"/> <source>documented signal '{0}' is not defined</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="354"/> <source>class docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347"/> <source>function docstring is still a default string</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>module docstring is still a default string</source> <translation type="unfinished"></translation> </message> @@ -10570,12 +10783,12 @@ <translation>移除全部(&E)</translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Add Entry</source> <translation>添加条目</translation> </message> <message> - <location filename="../E5Gui/E5StringListEditWidget.py" line="90"/> + <location filename="../E5Gui/E5StringListEditWidget.py" line="100"/> <source>Enter the entry to add to the list:</source> <translation type="unfinished"></translation> </message> @@ -11039,7 +11252,7 @@ <translation>全部取消选择</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7847"/> + <location filename="../QScintilla/Editor.py" line="7848"/> <source>Check spelling...</source> <translation>正在进行拼写检查…</translation> </message> @@ -11259,7 +11472,7 @@ <translation>编辑断点…</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5615"/> + <location filename="../QScintilla/Editor.py" line="5616"/> <source>Enable breakpoint</source> <translation>允许断点</translation> </message> @@ -11384,207 +11597,207 @@ <translation>自动完成无效,没有设定自动完成源。</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5618"/> + <location filename="../QScintilla/Editor.py" line="5619"/> <source>Disable breakpoint</source> <translation>去除断点</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Code Coverage</source> <translation>代码覆盖率</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5993"/> + <location filename="../QScintilla/Editor.py" line="5994"/> <source>Please select a coverage file</source> <translation>请选择一个覆盖率文件</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>Show Code Coverage Annotations</source> <translation>显示代码覆盖率注解</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6049"/> + <location filename="../QScintilla/Editor.py" line="6050"/> <source>All lines have been covered.</source> <translation>所有行均被已覆盖。</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6056"/> + <location filename="../QScintilla/Editor.py" line="6057"/> <source>There is no coverage file available.</source> <translation>没有有效的覆盖率文件。</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Profile Data</source> <translation>剖析数据</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6173"/> + <location filename="../QScintilla/Editor.py" line="6174"/> <source>Please select a profile file</source> <translation>请选择一个剖析文件</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>Syntax Error</source> <translation>语法错误</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6335"/> + <location filename="../QScintilla/Editor.py" line="6336"/> <source>No syntax error message available.</source> <translation>语法错误消息无效。</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Macro Name</source> <translation>宏名称</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6726"/> + <location filename="../QScintilla/Editor.py" line="6727"/> <source>Select a macro name:</source> <translation>选择一个宏名称:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6754"/> + <location filename="../QScintilla/Editor.py" line="6755"/> <source>Load macro file</source> <translation>输入宏文件</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Macro files (*.macro)</source> <translation>宏文件 (*.macro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source>Error loading macro</source> <translation>载入宏文件出错</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6797"/> + <location filename="../QScintilla/Editor.py" line="6798"/> <source>Save macro file</source> <translation>保存宏文件</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source>Save macro</source> <translation>保存宏</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source>Error saving macro</source> <translation>保存宏出错</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Start Macro Recording</source> <translation>开始宏录制</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6843"/> + <location filename="../QScintilla/Editor.py" line="6844"/> <source>Macro recording is already active. Start new?</source> <translation>宏录制已激活。开始录制新宏?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Macro Recording</source> <translation>宏录制</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6869"/> + <location filename="../QScintilla/Editor.py" line="6870"/> <source>Enter name of the macro:</source> <translation>输入宏名称:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7009"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>File changed</source> <translation>文件已改变</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source>Drop Error</source> <translation>降落误差</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7341"/> + <location filename="../QScintilla/Editor.py" line="7342"/> <source>Resources</source> <translation>资源</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7343"/> + <location filename="../QScintilla/Editor.py" line="7344"/> <source>Add file...</source> <translation>添加文件…</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7345"/> + <location filename="../QScintilla/Editor.py" line="7346"/> <source>Add files...</source> <translation>添加文件…</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7347"/> + <location filename="../QScintilla/Editor.py" line="7348"/> <source>Add aliased file...</source> <translation>添加别名文件…</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7350"/> + <location filename="../QScintilla/Editor.py" line="7351"/> <source>Add localized resource...</source> <translation>添加本地资源…</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7354"/> + <location filename="../QScintilla/Editor.py" line="7355"/> <source>Add resource frame</source> <translation>添加资源结构</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7373"/> + <location filename="../QScintilla/Editor.py" line="7374"/> <source>Add file resource</source> <translation>添加文件资源</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7389"/> + <location filename="../QScintilla/Editor.py" line="7390"/> <source>Add file resources</source> <translation>添加多个文件资源</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Add aliased file resource</source> <translation>添加别名文件资源</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Package Diagram</source> <translation>程序包图</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7482"/> + <location filename="../QScintilla/Editor.py" line="7483"/> <source>Include class attributes?</source> <translation>包含类属性?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Imports Diagram</source> <translation>引用图</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7504"/> + <location filename="../QScintilla/Editor.py" line="7505"/> <source>Include imports from external modules?</source> <translation>从外部模块包含引用?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Application Diagram</source> <translation>应用程序图</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7518"/> + <location filename="../QScintilla/Editor.py" line="7519"/> <source>Include module names?</source> <translation>包含模块名?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7850"/> + <location filename="../QScintilla/Editor.py" line="7851"/> <source>Add to dictionary</source> <translation>添加到文件夹</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7852"/> + <location filename="../QScintilla/Editor.py" line="7853"/> <source>Ignore All</source> <translation>全部忽略</translation> </message> @@ -11624,32 +11837,32 @@ <translation><p>文件 <b>{0}</b> 无法保存。<br />原因:{1}</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6768"/> + <location filename="../QScintilla/Editor.py" line="6769"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6777"/> + <location filename="../QScintilla/Editor.py" line="6778"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6830"/> + <location filename="../QScintilla/Editor.py" line="6831"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7179"/> + <location filename="../QScintilla/Editor.py" line="7180"/> <source>{0} (ro)</source> <translation>{0}(只读)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7320"/> + <location filename="../QScintilla/Editor.py" line="7321"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> 不是一个文件。</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7416"/> + <location filename="../QScintilla/Editor.py" line="7417"/> <source>Alias for file <b>{0}</b>:</source> <translation type="unfinished"></translation> </message> @@ -11679,22 +11892,22 @@ <translation><p>文件 <b>{0}</b> 已经存在。是否覆盖?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6814"/> + <location filename="../QScintilla/Editor.py" line="6815"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation><p>宏文件 <b>{0}</b> 已经存在。是否覆盖?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6614"/> + <location filename="../QScintilla/Editor.py" line="6615"/> <source>Warning: {0}</source> <translation>警告:{0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6621"/> + <location filename="../QScintilla/Editor.py" line="6622"/> <source>Error: {0}</source> <translation>错误:{0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7005"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation><br><b>警告:</b>您在重新打开时将丢失所有更改。</translation> </message> @@ -11719,27 +11932,27 @@ <translation>上一个更改</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>Sort Lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8268"/> + <location filename="../QScintilla/Editor.py" line="8269"/> <source>The selection contains illegal data for a numerical sort.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>Warning</source> <translation>警告</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6549"/> + <location filename="../QScintilla/Editor.py" line="6550"/> <source>No warning messages available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6611"/> + <location filename="../QScintilla/Editor.py" line="6612"/> <source>Style: {0}</source> <translation type="unfinished"></translation> </message> @@ -11764,7 +11977,7 @@ <translation>使用指定编码重新打开</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6999"/> + <location filename="../QScintilla/Editor.py" line="7000"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation type="unfinished"></translation> </message> @@ -11789,22 +12002,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>Call-Tips Provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5185"/> + <location filename="../QScintilla/Editor.py" line="5186"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>Register Mouse Click Handler</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8357"/> + <location filename="../QScintilla/Editor.py" line="8358"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation type="unfinished"></translation> </message> @@ -11834,12 +12047,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source>EditorConfig Properties</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8478"/> + <location filename="../QScintilla/Editor.py" line="8479"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation type="unfinished"></translation> </message> @@ -17545,17 +17758,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="66"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="71"/> <source>Firmware Files (*.img);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="72"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="77"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="76"/> + <location filename="../MicroPython/EspBackupRestoreFirmwareDialog.py" line="82"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> @@ -17573,12 +17786,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="211"/> + <location filename="../MicroPython/EspDevices.py" line="217"/> <source>Flash MicroPython Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="236"/> + <location filename="../MicroPython/EspDevices.py" line="248"/> <source>Flash Additional Firmware</source> <translation type="unfinished"></translation> </message> @@ -17603,7 +17816,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>'esptool write_flash' Output</source> <translation type="unfinished"></translation> </message> @@ -17613,47 +17826,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>Backup Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="297"/> + <location filename="../MicroPython/EspDevices.py" line="309"/> <source>Restore Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>Show Chip ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>Show Flash ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>Show MAC Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="263"/> + <location filename="../MicroPython/EspDevices.py" line="275"/> <source>'esptool read_flash' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="315"/> + <location filename="../MicroPython/EspDevices.py" line="327"/> <source>'esptool chip_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="332"/> + <location filename="../MicroPython/EspDevices.py" line="344"/> <source>'esptool flash_id' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspDevices.py" line="349"/> + <location filename="../MicroPython/EspDevices.py" line="361"/> <source>'esptool read_mac' Output</source> <translation type="unfinished"></translation> </message> @@ -17686,20 +17899,35 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="72"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="96"/> <source>Address:</source> <translation type="unfinished">地址:</translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="79"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="103"/> <source>Enter the flash addres in the hexadecimal form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="43"/> + <location filename="../MicroPython/EspFirmwareSelectionDialog.py" line="51"/> <source>Firmware Files (*.bin);;All Files (*)</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="75"/> + <source>Flash Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="82"/> + <source>Select the flash mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/EspFirmwareSelectionDialog.ui" line="89"/> + <source>Leave empty to use the default mode.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ExceptionLogger</name> @@ -41066,6 +41294,14 @@ </message> </context> <context> + <name>IgnoredDevicesDialog</name> + <message> + <location filename="../MicroPython/IgnoredDevicesDialog.ui" line="14"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImageMarkupDialog</name> <message> <location filename="../QScintilla/MarkupProviders/ImageMarkupDialog.py" line="52"/> @@ -47042,27 +47278,27 @@ <context> <name>MicroPythonDevice</name> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="214"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="223"/> <source>Unsupported Device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="224"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="233"/> <source>REPL is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="243"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="252"/> <source>Plotter is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="262"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="271"/> <source>Running scripts is not supported by this device.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonDevices.py" line="282"/> + <location filename="../MicroPython/MicroPythonDevices.py" line="291"/> <source>File Manager is not supported by this device.</source> <translation type="unfinished"></translation> </message> @@ -47620,7 +47856,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="460"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="493"/> <source>Press to connect the selected device</source> <translation type="unfinished"></translation> </message> @@ -47647,32 +47883,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="430"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="463"/> <source>Clear</source> <translation type="unfinished">清除</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="432"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="465"/> <source>Copy</source> <translation type="unfinished">复制</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="433"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="466"/> <source>Paste</source> <translation type="unfinished">粘贴</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="455"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="488"/> <source>Press to disconnect the current device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>No device attached</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="476"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="509"/> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -47681,212 +47917,212 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source>Start REPL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="503"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="536"/> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source>Serial Device Connect</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="893"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="926"/> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source>Run Script</source> <translation type="unfinished">运行脚本</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="921"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="954"/> <source>There is no editor open. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="929"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="962"/> <source>The current editor does not contain a script. Abort...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="938"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="971"/> <source><p>Cannot run script.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Open Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="961"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="994"/> <source>Python3 Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source>Start Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1005"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038"/> <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>Unsaved Chart Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1034"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067"/> <source>The chart contains unsaved data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source>Start File Manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1085"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118"/> <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1136"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169"/> <source>Show Version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1139"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1172"/> <source>Show Implementation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source>Synchronize Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1147"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1180"/> <source>Show Device Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1150"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1183"/> <source>Show Local Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1461"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1497"/> <source>Compile Python File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1481"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1517"/> <source>Compile Current Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1188"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224"/> <source><h3>Device Version Information</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1197"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1233"/> <source>No version information available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1199"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1235"/> <source>Device Version Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1258"/> <source>unknown</source> <translation type="unfinished">未知</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source>Device Implementation Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1226"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1262"/> <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1250"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1286"/> <source><p>The time of the connected device was synchronized with the local time.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1272"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308"/> <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1280"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1316"/> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1294"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1330"/> <source>Device Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source>Local Date and Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1307"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1343"/> <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source>Error handling device</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1374"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1410"/> <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1413"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1449"/> <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1467"/> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1441"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1477"/> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1451"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1487"/> <source>'mpy-cross' Output</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1474"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1510"/> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished"></translation> </message> @@ -47901,50 +48137,70 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1018"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051"/> <source>µPy Chart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1098"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1131"/> <source>µPy Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1174"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1207"/> <source>Show Documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1178"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1214"/> <source>Configure</source> <translation type="unfinished">配置</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1153"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186"/> <source>Show Time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1170"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1203"/> <source>Download Firmware</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source>Date and Time</source> <translation type="unfinished">日期和时间</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1333"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1369"/> <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1350"/> + <location filename="../MicroPython/MicroPythonWidget.py" line="1386"/> <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>Unknown MicroPython Device</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:eric-bugs@eric-ide.python-projects.org"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="336"/> + <source>{0} ({1:04x}/{2:04x})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1211"/> + <source>Ignored Serial Devices</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -48745,463 +49001,463 @@ <context> <name>MiscellaneousChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="492"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> <source>coding magic comment not found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="495"/> - <source>unknown encoding ({0}) found in coding magic comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="498"/> - <source>copyright notice not present</source> + <source>unknown encoding ({0}) found in coding magic comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="501"/> - <source>copyright notice contains invalid author</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="702"/> - <source>found {0} formatter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> - <source>format string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> - <source>docstring does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> - <source>other string does contain unindexed parameters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> - <source>format call uses too large index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> - <source>format call uses missing keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> - <source>format call uses keyword arguments but no named entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> - <source>format call uses variable arguments but no numbered entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> - <source>format call uses implicit and explicit indexes together</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> - <source>format call provides unused index ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> - <source>format call provides unused keyword ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="751"/> - <source>expected these __future__ imports: {0}; but only got: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> - <source>expected these __future__ imports: {0}; but got none</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="761"/> - <source>print statement found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> - <source>one element tuple found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="800"/> - <source>{0}: {1}</source> + <source>copyright notice not present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="504"/> + <source>copyright notice contains invalid author</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="705"/> + <source>found {0} formatter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="708"/> + <source>format string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="711"/> + <source>docstring does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="714"/> + <source>other string does contain unindexed parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="717"/> + <source>format call uses too large index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="720"/> + <source>format call uses missing keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="723"/> + <source>format call uses keyword arguments but no named entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="726"/> + <source>format call uses variable arguments but no numbered entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="729"/> + <source>format call uses implicit and explicit indexes together</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="732"/> + <source>format call provides unused index ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <source>format call provides unused keyword ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="754"/> + <source>expected these __future__ imports: {0}; but only got: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <source>expected these __future__ imports: {0}; but got none</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="764"/> + <source>print statement found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="767"/> + <source>one element tuple found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="803"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="507"/> <source>"{0}" is a Python builtin and is being shadowed; consider renaming the variable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="508"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="511"/> <source>"{0}" is used as an argument and thus shadows a Python builtin; consider renaming the argument</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="512"/> - <source>unnecessary generator - rewrite as a list comprehension</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="515"/> - <source>unnecessary generator - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a list comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="518"/> - <source>unnecessary generator - rewrite as a dict comprehension</source> + <source>unnecessary generator - rewrite as a set comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="521"/> - <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <source>unnecessary generator - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="524"/> + <source>unnecessary list comprehension - rewrite as a set comprehension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> <source>unnecessary list comprehension - rewrite as a dict comprehension</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> <source>unnecessary list comprehension - "{0}" can take a generator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="770"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> <source>mutable default argument of type {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> <source>sort keys - '{0}' should be before '{1}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> <source>logging statement uses '%'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> - <source>logging statement uses f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="747"/> + <source>logging statement uses f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="750"/> <source>logging statement uses 'warn' instead of 'warning'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="735"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="738"/> <source>logging statement uses string.format()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="741"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="744"/> <source>logging statement uses '+'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="757"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="760"/> <source>gettext import with alias _ found: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="648"/> - <source>Python does not support the unary prefix increment</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> - <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> - <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> - <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> - <source>Python 3 does not include '.iter*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> - <source>Python 3 does not include '.view*' methods on dictionaries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> - <source>'.next()' does not exist in Python 3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> - <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="773"/> - <source>mutable default argument of function call '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> - <source>using .strip() with multi-character strings is misleading</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> - <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> - <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <source>Python does not support the unary prefix increment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="660"/> + <source>'sys.maxint' is not defined in Python 3 - use 'sys.maxsize'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="663"/> + <source>'BaseException.message' has been deprecated as of Python 2.6 and is removed in Python 3 - use 'str(e)'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> + <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> + <source>Python 3 does not include '.iter*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> + <source>Python 3 does not include '.view*' methods on dictionaries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> + <source>'.next()' does not exist in Python 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="700"/> + <source>'__metaclass__' does nothing on Python 3 - use 'class MyClass(BaseClass, metaclass=...)'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="776"/> - <source>None should not be added at any return if function has no return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="780"/> - <source>an explicit value at every return should be added if function has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="784"/> - <source>an explicit return at the end of the function should be added if it has a return value except None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="788"/> - <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <source>mutable default argument of function call '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> + <source>using .strip() with multi-character strings is misleading</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="681"/> + <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="671"/> + <source>loop control variable {0} not used within the loop body - start the name with an underscore</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <source>None should not be added at any return if function has no return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="783"/> + <source>an explicit value at every return should be added if function has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="787"/> + <source>an explicit return at the end of the function should be added if it has a return value except None</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="791"/> + <source>a value should not be assigned to a variable if it will be used as a return value only</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="657"/> <source>do not call assert False since python -O removes these calls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="672"/> - <source>unncessary f-string</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="675"/> + <source>unncessary f-string</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="678"/> <source>cannot use 'self.__class__' as first argument of 'super()' call</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> - <source>do not call getattr with a constant attribute value</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> + <source>do not call getattr with a constant attribute value</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>do not call setattr with a constant attribute value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="796"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="799"/> <source>commented code lines should be removed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="792"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="795"/> <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="559"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="562"/> <source>use of 'datetime.datetime()' without 'tzinfo' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="566"/> <source>use of 'datetime.datetime.today()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> <source>use of 'datetime.datetime.utcnow()' should be avoided. Use 'datetime.datetime.now(tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="571"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="574"/> <source>use of 'datetime.datetime.utcfromtimestamp()' should be avoided. Use 'datetime.datetime.fromtimestamp(, tz=)' instead.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>use of 'datetime.datetime.now()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> <source>use of 'datetime.datetime.fromtimestamp()' without 'tz' argument should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="583"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="586"/> <source>use of 'datetime.datetime.strptime()' should be followed by '.replace(tzinfo=)'</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> + <source>use of 'datetime.date()' should be avoided. +Use 'datetime.datetime(, tzinfo=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> + <source>use of 'datetime.date.today()' should be avoided. +Use 'datetime.datetime.now(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="601"/> + <source>use of 'datetime.date.fromtimestamp()' should be avoided. +Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> + <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> - <source>use of 'datetime.date()' should be avoided. -Use 'datetime.datetime(, tzinfo=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> - <source>use of 'datetime.date.today()' should be avoided. -Use 'datetime.datetime.now(tz=).date()' instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="598"/> - <source>use of 'datetime.date.fromtimestamp()' should be avoided. -Use 'datetime.datetime.fromtimestamp(tz=).date()' instead.</source> + <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> + <source>use of 'datetime.date.fromordinal()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> - <source>use of 'datetime.time()' without 'tzinfo' argument should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> - <source>use of 'datetime.datetime.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> - <source>use of 'datetime.date.fromordinal()' should be avoided</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> <source>use of 'datetime.date.fromisoformat()' should be avoided</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="527"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="530"/> <source>unnecessary {0} call - rewrite as a literal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="533"/> - <source>unnecessary {0} literal - rewrite as a {1} literal</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="536"/> - <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> + <source>unnecessary {0} literal - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="539"/> - <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> + <source>unnecessary {0} passed to tuple() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="542"/> - <source>unnecessary list call - remove the outer call to list()</source> + <source>unnecessary {0} passed to list() - rewrite as a {1} literal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="545"/> - <source>unnecessary list comprehension - "in" can take a generator</source> + <source>unnecessary list call - remove the outer call to list()</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="548"/> - <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <source>unnecessary list comprehension - "in" can take a generator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="551"/> + <source>unnecessary {0} passed to tuple() - remove the outer call to {1}()</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>unnecessary {0} passed to list() - remove the outer call to {1}()</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="613"/> - <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="616"/> - <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <source>'sys.version[:3]' referenced (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="619"/> + <source>'sys.version[2]' referenced (Python 3.10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="622"/> <source>'sys.version' compared to string (Python 3.10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> - <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> - <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <source>'sys.version_info[0] == 3' referenced (Python 4), use '>='</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="629"/> + <source>'six.PY3' referenced (Python 4), use 'not six.PY2'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="632"/> <source>'sys.version_info[1]' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="633"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> <source>'sys.version_info.minor' compared to integer (Python 4), compare 'sys.version_info' to tuple</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="637"/> - <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="640"/> + <source>'sys.version[0]' referenced (Python 10), use 'sys.version_info'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="643"/> <source>'sys.version' compared to string (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>'sys.version[:1]' referenced (Python 10), use 'sys.version_info'</source> <translation type="unfinished"></translation> </message> @@ -49657,72 +49913,72 @@ <context> <name>NamingStyleChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="432"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> <source>class names should use CapWords convention</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="435"/> - <source>function name should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="438"/> - <source>argument name should be lowercase</source> + <source>function name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> - <source>first argument of a class method should be named 'cls'</source> + <source>argument name should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="444"/> - <source>first argument of a method should be named 'self'</source> + <source>first argument of a class method should be named 'cls'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> + <source>first argument of a method should be named 'self'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>first argument of a static method should not be named 'self' or 'cls</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="451"/> - <source>module names should be lowercase</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="454"/> - <source>package names should be lowercase</source> + <source>module names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="457"/> - <source>constant imported as non constant</source> + <source>package names should be lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="460"/> - <source>lowercase imported as non lowercase</source> + <source>constant imported as non constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="463"/> - <source>camelcase imported as lowercase</source> + <source>lowercase imported as non lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="466"/> - <source>camelcase imported as constant</source> + <source>camelcase imported as lowercase</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="469"/> - <source>variable in function should be lowercase</source> + <source>camelcase imported as constant</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="472"/> + <source>variable in function should be lowercase</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="475"/> <source>names 'l', 'O' and 'I' should be avoided</source> <translation type="unfinished"></translation> </message> @@ -49771,50 +50027,50 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="201"/> <source>SSL Certificate Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> - <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="205"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="212"/> <source>&Permanent accept</source> <translation type="unfinished">永久接受(&P)</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="207"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="214"/> <source>&Temporary accept</source> <translation type="unfinished">临时接受(&T)</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="209"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="216"/> <source>&Reject</source> <translation type="unfinished">拒绝</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="243"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="284"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="247"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="288"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"><b>输入“{0}”的用户名和密码</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="295"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="336"/> <source>Authentication required</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="296"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="337"/> <source>Authentication is required to access:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="202"/> + <source><b>{0}</b><p>The host <b>{1}</b> you are trying to access has errors in the SSL certificate.</p><ul><li>{2}</li></ul><p>Would you like to make an exception?</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>NetworkPage</name> @@ -51284,6 +51540,41 @@ <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../PipInterface/Pip.py" line="679"/> + <source>Cache Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="704"/> + <source>List Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="694"/> + <source>Enter a file pattern (empty for all):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="728"/> + <source>Remove Cached Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="720"/> + <source>Enter a file pattern:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="751"/> + <source>Purge Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/Pip.py" line="744"/> + <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PipDialog</name> @@ -52069,7 +52360,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/> <source>Install Packages</source> <translation type="unfinished"></translation> </message> @@ -52094,28 +52385,48 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="942"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="955"/> <source>Edit User Configuration...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="945"/> + <location filename="../PipInterface/PipPackagesWidget.py" line="958"/> <source>Edit Environment Configuration...</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="963"/> + <source>Configure...</source> + <translation type="unfinished">配置…</translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>Edit Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/> + <source>No valid configuration path determined. Aborting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="941"/> + <source>Show Cache Info...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="944"/> + <source>Show Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../PipInterface/PipPackagesWidget.py" line="947"/> + <source>Remove Cached Files...</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../PipInterface/PipPackagesWidget.py" line="950"/> - <source>Configure...</source> - <translation type="unfinished">配置…</translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>Edit Configuration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/> - <source>No valid configuration path determined. Aborting</source> + <source>Purge Cache...</source> <translation type="unfinished"></translation> </message> </context> @@ -53406,17 +53717,17 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1640"/> + <location filename="../Preferences/__init__.py" line="1645"/> <source>Export Preferences</source> <translation>导出首选项</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Import Preferences</source> <translation>导入首选项</translation> </message> <message> - <location filename="../Preferences/__init__.py" line="1668"/> + <location filename="../Preferences/__init__.py" line="1673"/> <source>Properties File (*.ini);;All Files (*)</source> <translation>属性文件 (*.ini);;所有文件 (*)</translation> </message> @@ -62547,17 +62858,17 @@ <translation><b>配置 Qt</b></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="90"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="85"/> <source>Qt Tools</source> <translation>Qt 工具</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="169"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="164"/> <source>This gives an example of the complete tool name</source> <translation>这里给出了完整工具名称的一个范例</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="172"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="167"/> <source>designer</source> <translation>设计师</translation> </message> @@ -62567,7 +62878,7 @@ <translation><font color="#FF0000"><b>注意:</b> 该设置将在下次启动应用程序时生效。</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="123"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="118"/> <source>The tool executable is composed of the prefix, the tool name and the postfix. For win, the extension is added automatically.</source> <translation type="unfinished"></translation> </message> @@ -62582,32 +62893,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> - <source><b>Note:</b> Leave this entry empty to use an environment variable or the path compiled into the Qt library. Environment variables supported are -<ul> -<li>QT4TRANSLATIONSDIR for Qt4</li> -<li>QT5TRANSLATIONSDIR for Qt5</li> -<li>QTTRANSLATIONSDIR for any Qt variant</li> -</ul></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="135"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="130"/> <source>Qt-Prefix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="137"/> <source>Enter the prefix for the Qt tools name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="144"/> <source>Qt-Postfix:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="151"/> <source>Enter the postfix for the Qt tools name</source> <translation type="unfinished"></translation> </message> @@ -62617,32 +62918,32 @@ <translation type="obsolete">pyuic / pyside-uic 选项</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="226"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="221"/> <source>Indent Width:</source> <translation>缩进宽度:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="233"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="228"/> <source>Select the indent width (default: 4)</source> <translation>缩进宽度(默认值:4)</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="327"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="322"/> <source>Generate imports relative to '.'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="296"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="291"/> <source>Tools Directory:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="114"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="109"/> <source>Enter the path of the Qt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="211"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="206"/> <source>Enter the path of the PyQt tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -62652,7 +62953,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="312"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="307"/> <source>Enter the path of the PySide2 tools directory, if they are not found.</source> <translation type="unfinished"></translation> </message> @@ -62662,35 +62963,40 @@ <translation type="unfinished">Qt</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="187"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="182"/> <source>PyQt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="220"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="215"/> <source>pyuic Options</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="272"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="267"/> <source>Select to generate extra code to test and display the form</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="275"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="270"/> <source>Generate Extra Test Code</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="288"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="283"/> <source>PySide2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="321"/> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="316"/> <source>pyside2-uic Options</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/QtPage.ui" line="72"/> + <source><b>Note:</b> Leave this entry empty to use the path compiled into the Qt library.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Queues</name> @@ -64476,6 +64782,334 @@ </message> </context> <context> + <name>Security</name> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="16"/> + <source>Use of 'assert' detected. The enclosed code will be removed when compiling to optimised byte code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="22"/> + <source>Use of 'exec' detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="27"/> + <source>'chmod' setting a permissive mask {0} on file ({1}).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="32"/> + <source>Possible binding to all interfaces.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="43"/> + <source>Possible hardcoded password: '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="48"/> + <source>Probable insecure usage of temp file/directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="53"/> + <source>Try, Except, Pass detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="56"/> + <source>Try, Except, Continue detected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="61"/> + <source>A Flask app appears to be run with debug=True, which exposes the Werkzeug debugger and allows the execution of arbitrary code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="67"/> + <source>Pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="71"/> + <source>Deserialization with the marshal module is possibly dangerous.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="74"/> + <source>Use of insecure MD2, MD4, MD5, or SHA1 hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="77"/> + <source>Use of insecure cipher '{0}'. Replace with a known secure cipher such as AES.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="81"/> + <source>Use of insecure cipher mode '{0}'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="84"/> + <source>Use of insecure and deprecated function (mktemp).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="87"/> + <source>Use of possibly insecure function - consider using safer ast.literal_eval.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="91"/> + <source>Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="95"/> + <source>Use of HTTPSConnection on older versions of Python prior to 2.7.9 and 3.4.3 do not provide security, see https://wiki.openstack.org/wiki/OSSN/OSSN-0033</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="100"/> + <source>Audit url open for permitted schemes. Allowing use of file:/ or custom schemes is often unexpected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="104"/> + <source>Standard pseudo-random generators are not suitable for security/cryptographic purposes.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="108"/> + <source>Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="142"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="147"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with its defusedxml equivalent function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="152"/> + <source>FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="156"/> + <source>The input method in Python 2 will read from standard input, evaluate and run the resulting string as Python source code. This is similar, though in many ways worse, than using eval. On Python 2, use raw_input instead, input is safe in Python 3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="162"/> + <source>By default, Python will create a secure, verified SSL context for use in such classes as HTTPSConnection. However, it still allows using an insecure context via the _create_unverified_context that reverts to the previous behavior that does not validate certificates or perform hostname checks.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="169"/> + <source>Use of os.tempnam() and os.tmpnam() is vulnerable to symlink attacks. Consider using tmpfile() instead.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="175"/> + <source>Use of insecure {0} hash function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="180"/> + <source>A telnet-related module is being imported. Telnet is considered insecure. Use SSH or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="184"/> + <source>A FTP-related module is being imported. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="192"/> + <source>Consider possible security implications associated with the '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="216"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="221"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Replace '{0}' with the equivalent defusedxml package.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="226"/> + <source>Using '{0}' to parse untrusted XML data is known to be vulnerable to XML attacks. Use defused.xmlrpc.monkey_patch() function to monkey-patch xmlrpclib and mitigate XML vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="231"/> + <source>Consider possible security implications associated with '{0}' module.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="235"/> + <source>The pyCrypto library and its module '{0}' are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="242"/> + <source>'requests' call with verify=False disabling SSL certificate checks, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="248"/> + <source>'ssl.wrap_socket' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="252"/> + <source>'SSL.Context' call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="256"/> + <source>Function call with insecure SSL/TLS protocol version identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="260"/> + <source>Function definition identified with insecure SSL/TLS protocol version by default, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="264"/> + <source>'ssl.wrap_socket' call with no SSL/TLS protocol version specified, the default 'SSLv23' could be insecure, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="270"/> + <source>{0} key sizes below {1:d} bits are considered breakable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="275"/> + <source>Use of unsafe 'yaml.load()'. Allows instantiation of arbitrary objects. Consider 'yaml.safe_load()'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="281"/> + <source>Paramiko call with policy set to automatically trust the unknown host key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="287"/> + <source>Possible shell injection via 'Paramiko' call, check inputs are properly sanitized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="291"/> + <source>'subprocess' call with shell=True seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="295"/> + <source>'subprocess' call with shell=True identified, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="298"/> + <source>'subprocess' call - check for execution of untrusted input.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="301"/> + <source>Function call with shell=True parameter identified, possible security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="305"/> + <source>Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="309"/> + <source>Starting a process with a shell, possible injection detected, security issue.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="313"/> + <source>Starting a process without a shell.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="316"/> + <source>Starting a process with a partial executable path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="321"/> + <source>Possible SQL injection vector through string-based query construction.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="327"/> + <source>Possible wildcard injection in call: {0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="332"/> + <source>Use of 'extra()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="335"/> + <source>Use of 'RawSQL()' opens a potential SQL attack vector.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="340"/> + <source>Using jinja2 templates with 'autoescape=False' is dangerous and can lead to XSS. Use 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="345"/> + <source>By default, jinja2 sets 'autoescape' to False. Consider using 'autoescape=True' or use the 'select_autoescape' function to mitigate XSS vulnerabilities.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="352"/> + <source>Mako templates allow HTML/JS rendering by default and are inherently open to XSS attacks. Ensure variables in all templates are properly sanitized via the 'n', 'h' or 'x' flags (depending on context). For example, to HTML escape the variable 'data' do ${{ data |h }}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="360"/> + <source>Potential XSS on 'mark_safe()' function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="365"/> + <source>Possible hardcoded AWS access key ID: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="368"/> + <source>Possible hardcoded AWS secret access key: {0:r}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py" line="373"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>SecurityPage</name> <message> <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="37"/> @@ -64532,6 +65166,21 @@ <source><b>Configure security settings</b></source> <translation><b>配置安全设置</b></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="96"/> + <source>Certificate Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="102"/> + <source>Select to always reject web pages with certificate issues</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/SecurityPage.ui" line="105"/> + <source>Always reject URLs with certificate errors</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SendRefererWhitelistDialog</name> @@ -66492,22 +67141,22 @@ <translation type="obsolete">详情</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="168"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="171"/> <source>Media</source> <translation>媒体</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="184"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="187"/> <source>Image</source> <translation>图像</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="189"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="192"/> <source>Image Address</source> <translation>图像地址</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="197"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.ui" line="200"/> <source><b>Preview</b></source> <translation><b>预览</b></translation> </message> @@ -66517,22 +67166,22 @@ <translation type="obsolete">安全</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="216"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="238"/> <source>Preview not available.</source> <translation>预览不可用。</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="243"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="265"/> <source>Copy Image Location to Clipboard</source> <translation>将图像位置复制至剪贴板</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="246"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="268"/> <source>Copy Image Name to Clipboard</source> <translation>将图像名称复制至剪贴板</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source>Save Image</source> <translation>保存图像</translation> </message> @@ -66542,12 +67191,12 @@ <translation type="obsolete">图像不可用。</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="299"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="321"/> <source>All Files (*)</source> <translation>所有文件 (*)</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="310"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="332"/> <source><p>Cannot write to file <b>{0}</b>.</p></source> <translation><p>无法写入文件 <b>{0}</b>。</p></translation> </message> @@ -66587,25 +67236,30 @@ <translation type="obsolete">显示该站点使用的数据库的列表</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="229"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="251"/> <source>Loading...</source> <translation type="unfinished">正在加载…</translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="287"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="309"/> <source><p>This preview is not available.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="76"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="97"/> <source><b>Connection is encrypted.</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="80"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="102"/> <source><b>Connection is not encrypted.</b></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoDialog.py" line="87"/> + <source><b>Connection is encrypted but may be insecure.</b></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SiteInfoWidget</name> @@ -66615,60 +67269,65 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="62"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="69"/> <source>Your connection to this site is <b>secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="67"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="74"/> <source>Your connection to this site is <b>not secure</b>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="82"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="89"/> <source>This is your <b>{0}.</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="88"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="95"/> <source>You have <b>never</b> visited this site before.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="97"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="104"/> <source>first</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="99"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="106"/> <source>second</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="101"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="108"/> <source>third</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="102"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="109"/> <source>This is your <b>{0}</b> visit of this site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="123"/> - <source>Register as <b>{0}</b> links handler.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="130"/> + <source>Register as <b>{0}</b> links handler.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="137"/> <source>Register</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="147"/> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="154"/> <source>More...</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/SiteInfo/SiteInfoWidget.py" line="63"/> + <source>Your connection to this site <b>may not be secure</b>.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>SnapWidget</name> @@ -79047,7 +79706,7 @@ <translation><b>键盘快捷键</b><p>将程序的键盘快捷键设置成你喜欢的按键。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6327"/> + <location filename="../UI/UserInterface.py" line="6294"/> <source>Export Keyboard Shortcuts</source> <translation>导出键盘快捷键</translation> </message> @@ -79067,7 +79726,7 @@ <translation><b>导出键盘快捷键</b><p>导出程序的键盘快捷键。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Import Keyboard Shortcuts</source> <translation>导入键盘快捷键</translation> </message> @@ -79297,7 +79956,7 @@ <translation>设置</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Help</source> <translation>帮助</translation> </message> @@ -79347,7 +80006,7 @@ <translation type="obsolete"><h3>版本号</h3><table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7324"/> + <location filename="../UI/UserInterface.py" line="7291"/> <source></table></source> <translation></table></translation> </message> @@ -79402,107 +80061,107 @@ <translation type="obsolete">当前项目未定义主脚本。终止</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source>Problem</source> <translation>问题</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source>Process Generation Error</source> <translation>进程生成错误</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Open Browser</source> <translation>打开浏览器</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6119"/> + <location filename="../UI/UserInterface.py" line="6086"/> <source>Could not start a web browser</source> <translation>无法启动网络浏览器</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5115"/> + <location filename="../UI/UserInterface.py" line="5082"/> <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source> <translation>目前没有选择自定义浏览器。请使用首选项对话框指定一个。</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5149"/> + <location filename="../UI/UserInterface.py" line="5116"/> <source><p>Could not start the help viewer.<br>Ensure that it is available as <b>hh</b>.</p></source> <translation><p>无法开启帮助浏览器。<br>确保其有效如 <b>hh</b>。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>External Tools</source> <translation>外部工具</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source>Documentation Missing</source> <translation>文档缺失</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source>Documentation</source> <translation>文档</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5727"/> + <location filename="../UI/UserInterface.py" line="5694"/> <source><p>The PyQt4 documentation starting point has not been configured.</p></source> <translation><p>未配置 PyQt4 文档起点。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source>Save tasks</source> <translation>保存任务</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source>Read tasks</source> <translation>读取任务</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6646"/> + <location filename="../UI/UserInterface.py" line="6613"/> <source>Save session</source> <translation>保存会话</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source>Read session</source> <translation>读取会话</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source>Drop Error</source> <translation>降落误差</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Error during updates check</source> <translation>检查更新时出错</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>&Cancel</source> <translation>取消(&C)</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <location filename="../UI/UserInterface.py" line="7233"/> <source>Update available</source> <translation>可用更新</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7285"/> + <location filename="../UI/UserInterface.py" line="7252"/> <source>Could not perform updates check.</source> <translation>无法完成更新检查。</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7309"/> + <location filename="../UI/UserInterface.py" line="7276"/> <source><h3>Available versions</h3><table></source> <translation><h3>可用版本</h3><table></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>First time usage</source> <translation>第一次使用</translation> </message> @@ -79584,7 +80243,7 @@ <message> <location filename="../UI/UserInterface.py" line="5062"/> <source>Qt 3 support</source> - <translation>Qt 3 支持</translation> + <translation type="obsolete">Qt 3 支持</translation> </message> <message> <location filename="../UI/UserInterface.py" line="2870"/> @@ -79622,106 +80281,106 @@ <translation>外部工具/{0}</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5243"/> + <location filename="../UI/UserInterface.py" line="5210"/> <source><p>The file <b>{0}</b> does not exist or is zero length.</p></source> <translation><p>文件 <b>{0}</b> 不存在或者长度为零。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="4962"/> + <location filename="../UI/UserInterface.py" line="4935"/> <source><p>Could not start Qt-Designer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>无法启动 Qt 设计师。<br>请确保它作为 <b>{0}</b> 可用。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5034"/> + <location filename="../UI/UserInterface.py" line="5005"/> <source><p>Could not start Qt-Linguist.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>无法启动 Qt 语言家。<br>请确保它作为 <b>{0}</b> 可用。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5087"/> + <location filename="../UI/UserInterface.py" line="5049"/> <source><p>Could not start Qt-Assistant.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>无法启动 Qt 助手。<br>请确保它作为 <b>{0}</b> 可用。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5129"/> + <location filename="../UI/UserInterface.py" line="5096"/> <source><p>Could not start custom viewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>无法启动自定义的查看器。<br>请确保它作为 <b>{0}</b> 可用。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5199"/> + <location filename="../UI/UserInterface.py" line="5166"/> <source><p>Could not start UI Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>无法启动 UI 预览器。<br>请确保它作为 <b>{0}</b> 可用。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5256"/> + <location filename="../UI/UserInterface.py" line="5223"/> <source><p>Could not start Translation Previewer.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>无法启动翻译预览器。<br>请确保它作为 <b>{0}</b> 可用。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5279"/> + <location filename="../UI/UserInterface.py" line="5246"/> <source><p>Could not start SQL Browser.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>无法启动 SQL 浏览器。<br>请确保它作为 <b>{0}</b> 可用。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5374"/> + <location filename="../UI/UserInterface.py" line="5341"/> <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5383"/> + <location filename="../UI/UserInterface.py" line="5350"/> <source>No toolgroup entry '{0}' found.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5422"/> + <location filename="../UI/UserInterface.py" line="5389"/> <source>Starting process '{0} {1}'. </source> <translation>正在启动进程“{0} {1}”。 </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5438"/> + <location filename="../UI/UserInterface.py" line="5405"/> <source><p>Could not start the tool entry <b>{0}</b>.<br>Ensure that it is available as <b>{1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5516"/> + <location filename="../UI/UserInterface.py" line="5483"/> <source>Process '{0}' has exited. </source> <translation>进程“{0}”已退出。 </translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5919"/> + <location filename="../UI/UserInterface.py" line="5886"/> <source><p>The documentation starting point "<b>{0}</b>" could not be found.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6521"/> + <location filename="../UI/UserInterface.py" line="6488"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation><p>任务文件 <b>{0}</b> 无法写入。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6550"/> + <location filename="../UI/UserInterface.py" line="6517"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation><p>任务文件 <b>{0}</b> 无法读取。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6584"/> + <location filename="../UI/UserInterface.py" line="6551"/> <source><p>The session file <b>{0}</b> could not be written.</p></source> <translation><p>会话文件 <b>{0}</b> 无法写入。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6630"/> + <location filename="../UI/UserInterface.py" line="6597"/> <source><p>The session file <b>{0}</b> could not be read.</p></source> <translation><p>会话文件 <b>{0}</b> 无法读取。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6914"/> + <location filename="../UI/UserInterface.py" line="6881"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> 不是一个文件。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7108"/> + <location filename="../UI/UserInterface.py" line="7075"/> <source>Trying host {0}</source> <translation>正在尝试主机 {0}</translation> </message> @@ -79756,7 +80415,7 @@ <translation>Alt+Shift+B</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6351"/> + <location filename="../UI/UserInterface.py" line="6318"/> <source>Keyboard shortcut file (*.e4k)</source> <translation>键盘快捷键文件 (*.e4k)</translation> </message> @@ -79796,17 +80455,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>Error getting versions information</source> <translation>获取版本信息出错</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7167"/> + <location filename="../UI/UserInterface.py" line="7134"/> <source>The versions information could not be downloaded. Please go online and try again.</source> <translation>无法获取版本信息。请连线并再试一次。</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7174"/> + <location filename="../UI/UserInterface.py" line="7141"/> <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source> <translation>过去7天均无法获取版本信息。请连线并再试一次。</translation> </message> @@ -79892,12 +80551,12 @@ <translation><b>快照</b><p>打开一个对话框来截取屏幕一个区域的快照。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5351"/> + <location filename="../UI/UserInterface.py" line="5318"/> <source><p>Could not start Snapshot tool.<br>Ensure that it is available as <b>{0}</b>.</p></source> <translation><p>无法启动快照工具。<br>请确保它作为 <b>{0}</b> 可用。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7380"/> + <location filename="../UI/UserInterface.py" line="7347"/> <source>Select Workspace Directory</source> <translation>选择工作区目录</translation> </message> @@ -80272,7 +80931,7 @@ <translation>打开 PyQt5 文档</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5789"/> + <location filename="../UI/UserInterface.py" line="5756"/> <source><p>The PyQt5 documentation starting point has not been configured.</p></source> <translation><p>未配置 PyQt5 文档起始位置。</p></translation> </message> @@ -80287,7 +80946,7 @@ <translation><b>Python 3 文档</b><p>显示 Python 3 文档。如果尚未配置文档目录,则在 Windows 系统上,文档位置将默认为 Python 3 可执行文件所在目录下的 doc 目录;在类 Unix 系统上,则默认为 <i>/usr/share/doc/packages/python/html</i>。请在环境中设置 PYTHON3DOCDIR 以覆盖默认行为。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7099"/> + <location filename="../UI/UserInterface.py" line="7066"/> <source>%v/%m</source> <translation type="unfinished"></translation> </message> @@ -80307,7 +80966,7 @@ <translation><b>显示错误日志…</b><p>打开一个对话框显示最近的错误日志。</p></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7103"/> + <location filename="../UI/UserInterface.py" line="7070"/> <source>Version Check</source> <translation>版本检查</translation> </message> @@ -80379,25 +81038,25 @@ <message> <location filename="../UI/UserInterface.py" line="5062"/> <source>Qt v.3 is not supported by eric6.</source> - <translation>Qt 版本3 不被 eric6 支持。</translation> - </message> - <message> - <location filename="../UI/UserInterface.py" line="7266"/> + <translation type="obsolete">Qt 版本3 不被 eric6 支持。</translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="7233"/> <source>The update to <b>{0}</b> of eric6 is available at <b>{1}</b>. Would you like to get it?</source> <translation>eric6 的 <b>{0}</b> 更新已经可用,位于 <b>{1}</b>。您是否希望下载它?</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>Eric6 is up to date</source> <translation>Eric6 已是最新版本</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7278"/> + <location filename="../UI/UserInterface.py" line="7245"/> <source>You are using the latest version of eric6</source> <translation>您正在使用 eric6 的最新版本</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7361"/> + <location filename="../UI/UserInterface.py" line="7328"/> <source>eric6 has not been configured yet. The configuration dialog will be started.</source> <translation>尚未配置 eric6。将打开配置对话框。</translation> </message> @@ -80417,7 +81076,7 @@ <translation>没有配置的用户工具</translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7119"/> + <location filename="../UI/UserInterface.py" line="7086"/> <source>The versions information cannot not be downloaded because you are <b>offline</b>. Please go online and try again.</source> <translation>因为当前处在 <b>离线</b> 状态,无法获取版本信息。请连线并再试一次。</translation> </message> @@ -80462,7 +81121,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>Load session</source> <translation type="unfinished">载入会话</translation> </message> @@ -80477,17 +81136,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6668"/> + <location filename="../UI/UserInterface.py" line="6635"/> <source>eric6 Session Files (*.e5s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>Crash Session found!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6719"/> + <location filename="../UI/UserInterface.py" line="6686"/> <source>A session file of a crashed session was found. Shall this session be restored?</source> <translation type="unfinished"></translation> </message> @@ -80502,17 +81161,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>Update Check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7254"/> + <location filename="../UI/UserInterface.py" line="7221"/> <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="7244"/> + <location filename="../UI/UserInterface.py" line="7211"/> <source>You are using a snapshot release of eric6. A more up-to-date stable release might be available.</source> <translation type="unfinished"></translation> </message> @@ -80567,7 +81226,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="5902"/> + <location filename="../UI/UserInterface.py" line="5869"/> <source><p>The PySide{0} documentation starting point has not been configured.</p></source> <translation type="unfinished"></translation> </message> @@ -80638,17 +81297,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source>Start Web Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6015"/> + <location filename="../UI/UserInterface.py" line="5982"/> <source>The eric6 web browser could not be started.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/UserInterface.py" line="6076"/> + <location filename="../UI/UserInterface.py" line="6043"/> <source><p>The eric6 web browser is not started.</p><p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> @@ -80747,6 +81406,21 @@ <source><h2>Version Numbers</h2><table></source> <translation type="unfinished"><h3>版本号</h3><table> {2>?} {2>?}</translation> </message> + <message> + <location filename="../UI/UserInterface.py" line="4944"/> + <source><p>Could not find the Qt-Designer executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5014"/> + <source><p>Could not find the Qt-Linguist executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../UI/UserInterface.py" line="5058"/> + <source><p>Could not find the Qt-Assistant executable.<br>Ensure that it is installed and optionally configured on the Qt configuration page.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>UserPropertiesDialog</name> @@ -86562,37 +87236,37 @@ <translation type="obsolete">为安全的 URL 选择背景色。</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="324"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="402"/> <source>Images</source> <translation type="unfinished">图像</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="408"/> <source>Select to load images</source> <translation type="unfinished">选择输入图像</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="333"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="411"/> <source>Load images</source> <translation type="unfinished">输入图像</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="343"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="421"/> <source>Style Sheet</source> <translation type="unfinished">样式表</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="349"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="427"/> <source>User Style Sheet:</source> <translation type="unfinished">用户样式表:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="365"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="443"/> <source>Enter the file name of a user style sheet</source> <translation type="unfinished">输入用户样式表的文件名</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="375"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="453"/> <source>Tabs</source> <translation type="unfinished">选项卡</translation> </message> @@ -86602,12 +87276,12 @@ <translation type="obsolete">仅显示一个关闭按钮,而不是每个选项卡显示一个按钮</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="381"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="459"/> <source>Select to issue a warning, if multiple tabs are about to be closed</source> <translation type="unfinished">选择在多个选项卡将要被关闭时弹出警告</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="384"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="462"/> <source>Warn, if multiple tabs are about to be closed</source> <translation type="unfinished">如果将要关闭多个选项卡,发出警告</translation> </message> @@ -86627,37 +87301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="426"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="504"/> <source><font color="#FF0000"><b>Note:</b> All settings below are activated at the next startup of the application.</font></source> <translation type="unfinished"><font color="#FF0000"><b>注意:</b> 以上所有设置将在下次启动应用程序时生效。</font></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="433"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="511"/> <source>Toolbars</source> <translation type="unfinished">工具栏</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="439"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="517"/> <source>Select to show toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="520"/> <source>Show Toolbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="394"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="472"/> <source>Scrollbars</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="400"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="478"/> <source>Select to show scrollbars. Note: Scrolling is possible even without them.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="403"/> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="481"/> <source>Show Scrollbars</source> <translation type="unfinished"></translation> </message> @@ -86667,13 +87341,48 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="304"/> + <source>Select the background color for secure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="285"/> - <source>Background color of secure URLs:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="298"/> - <source>Select the background color for secure URLs.</source> + <source>URL Entry Background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="291"/> + <source>Secure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="327"/> + <source>Insecure URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="340"/> + <source>Select the background color for insecure URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="350"/> + <source>Malicious URLs:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="363"/> + <source>Select the background color for malicious URLs.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="373"/> + <source>Private Mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/WebBrowserAppearancePage.ui" line="386"/> + <source>Select the background color for URLs in private mode.</source> <translation type="unfinished"></translation> </message> </context> @@ -87945,27 +88654,27 @@ <translation type="unfinished">…</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="892"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="913"/> <source>Loading...</source> <translation type="unfinished">正在加载…</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="912"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="922"/> <source>Finished loading</source> <translation type="unfinished">加载完成</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="914"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="889"/> <source>Failed to load</source> <translation type="unfinished">加载失败</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window?</source> <translation type="unfinished">确定要关闭窗口?</translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="955"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="963"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation type="unfinished"> @@ -87974,22 +88683,22 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="962"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="970"/> <source>&Quit</source> <translation type="unfinished">退出(&Q)</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="965"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="973"/> <source>C&lose Current Tab</source> <translation type="unfinished">关闭当前选项卡(&C)</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1146"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1154"/> <source>Restore All Closed Tabs</source> <translation type="unfinished">恢复所有已关闭的选项卡</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1148"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1156"/> <source>Clear List</source> <translation type="unfinished">清空列表</translation> </message> @@ -90864,12 +91573,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="391"/> + <location filename="../eric6.py" line="399"/> <source>Starting...</source> <translation>正在启动…</translation> </message> <message> - <location filename="../eric6.py" line="396"/> + <location filename="../eric6.py" line="404"/> <source>Generating Main Window...</source> <translation>正在产生主窗口…</translation> </message> @@ -91020,7 +91729,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="183"/> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="187"/> <source>no message defined for code '{0}'</source> <translation type="unfinished"></translation> </message> @@ -91204,421 +91913,426 @@ <source>'...' % ... `*` specifier requires sequence</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py" line="165"/> + <source>'if tuple literal' is always true, perhaps remove accidental comma?</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>pycodestyle</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="21"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> <source>indentation contains mixed spaces and tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="24"/> - <source>indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="27"/> - <source>expected an indented block</source> + <source>indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="30"/> - <source>unexpected indentation</source> + <source>expected an indented block</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="33"/> - <source>indentation is not a multiple of four (comment)</source> + <source>unexpected indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36"/> - <source>expected an indented block (comment)</source> + <source>indentation is not a multiple of four (comment)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39"/> + <source>expected an indented block (comment)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> <source>unexpected indentation (comment)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> - <source>continuation line indentation is not a multiple of four</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="48"/> - <source>continuation line missing indentation or outdented</source> + <source>continuation line indentation is not a multiple of four</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="51"/> + <source>continuation line missing indentation or outdented</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54"/> <source>closing bracket does not match indentation of opening bracket's line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55"/> - <source>closing bracket does not match visual indentation</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="58"/> - <source>continuation line with same indent as next logical line</source> + <source>closing bracket does not match visual indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="61"/> - <source>continuation line over-indented for hanging indent</source> + <source>continuation line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64"/> - <source>continuation line over-indented for visual indent</source> + <source>continuation line over-indented for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67"/> - <source>continuation line under-indented for visual indent</source> + <source>continuation line over-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70"/> - <source>visually indented line with same indent as next logical line</source> + <source>continuation line under-indented for visual indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73"/> - <source>continuation line unaligned for hanging indent</source> + <source>visually indented line with same indent as next logical line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76"/> - <source>closing bracket is missing indentation</source> + <source>continuation line unaligned for hanging indent</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79"/> - <source>indentation contains tabs</source> + <source>closing bracket is missing indentation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82"/> + <source>indentation contains tabs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85"/> <source>whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91"/> - <source>whitespace before '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94"/> - <source>multiple spaces before operator</source> + <source>whitespace before '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97"/> - <source>multiple spaces after operator</source> + <source>multiple spaces before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100"/> - <source>tab before operator</source> + <source>multiple spaces after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103"/> - <source>tab after operator</source> + <source>tab before operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106"/> - <source>missing whitespace around operator</source> + <source>tab after operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109"/> - <source>missing whitespace around arithmetic operator</source> + <source>missing whitespace around operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112"/> - <source>missing whitespace around bitwise or shift operator</source> + <source>missing whitespace around arithmetic operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115"/> - <source>missing whitespace around modulo operator</source> + <source>missing whitespace around bitwise or shift operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118"/> - <source>missing whitespace after '{0}'</source> + <source>missing whitespace around modulo operator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121"/> - <source>multiple spaces after '{0}'</source> + <source>missing whitespace after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124"/> - <source>tab after '{0}'</source> + <source>multiple spaces after '{0}'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127"/> + <source>tab after '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> <source>unexpected spaces around keyword / parameter equals</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> - <source>at least two spaces before inline comment</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136"/> - <source>inline comment should start with '# '</source> + <source>at least two spaces before inline comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="139"/> - <source>block comment should start with '# '</source> + <source>inline comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="142"/> - <source>too many leading '#' for block comment</source> + <source>block comment should start with '# '</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="145"/> - <source>multiple spaces after keyword</source> + <source>too many leading '#' for block comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="148"/> - <source>multiple spaces before keyword</source> + <source>multiple spaces after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="151"/> - <source>tab after keyword</source> + <source>multiple spaces before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154"/> - <source>tab before keyword</source> + <source>tab after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157"/> - <source>missing whitespace after keyword</source> + <source>tab before keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="160"/> - <source>trailing whitespace</source> + <source>missing whitespace after keyword</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163"/> - <source>no newline at end of file</source> + <source>trailing whitespace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166"/> + <source>no newline at end of file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169"/> <source>blank line contains whitespace</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> - <source>too many blank lines ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> - <source>blank lines found after function decorator</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="194"/> - <source>blank line at end of file</source> + <source>too many blank lines ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <source>blank lines found after function decorator</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="197"/> - <source>multiple imports on one line</source> + <source>blank line at end of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200"/> - <source>module level import not at top of file</source> + <source>multiple imports on one line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203"/> - <source>line too long ({0} > {1} characters)</source> + <source>module level import not at top of file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206"/> - <source>the backslash is redundant between brackets</source> + <source>line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209"/> + <source>the backslash is redundant between brackets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> <source>line break before binary operator</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> - <source>.has_key() is deprecated, use 'in'</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221"/> - <source>deprecated form of raising exception</source> + <source>.has_key() is deprecated, use 'in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224"/> - <source>'<>' is deprecated, use '!='</source> + <source>deprecated form of raising exception</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227"/> + <source>'<>' is deprecated, use '!='</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>backticks are deprecated, use 'repr()'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> - <source>multiple statements on one line (colon)</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239"/> - <source>multiple statements on one line (semicolon)</source> + <source>multiple statements on one line (colon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242"/> - <source>statement ends with a semicolon</source> + <source>multiple statements on one line (semicolon)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245"/> + <source>statement ends with a semicolon</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248"/> <source>multiple statements on one line (def)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="251"/> - <source>comparison to {0} should be {1}</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="254"/> - <source>test for membership should be 'not in'</source> + <source>comparison to {0} should be {1}</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257"/> - <source>test for object identity should be 'is not'</source> + <source>test for membership should be 'not in'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260"/> - <source>do not compare types, use 'isinstance()'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> - <source>do not assign a lambda expression, use a def</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> - <source>ambiguous variable name '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> - <source>ambiguous class definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> - <source>ambiguous function definition '{0}'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> - <source>{0}: {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> - <source>{0}</source> + <source>test for object identity should be 'is not'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263"/> + <source>do not compare types, use 'isinstance()'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269"/> + <source>do not assign a lambda expression, use a def</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272"/> + <source>ambiguous variable name '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275"/> + <source>ambiguous class definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278"/> + <source>ambiguous function definition '{0}'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281"/> + <source>{0}: {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284"/> + <source>{0}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266"/> <source>do not use bare except</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184"/> <source>expected {0} blank lines after class or function definition, found {1}</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236"/> + <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133"/> + <source>missing whitespace around parameter equals</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <source>expected {0} blank lines, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <source>expected {0} blank lines before a nested definition, found {1}</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <source>line break after binary operator</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233"/> - <source>'async' and 'await' are reserved keywords starting with Python 3.7</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130"/> - <source>missing whitespace around parameter equals</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172"/> - <source>expected {0} blank lines, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="185"/> - <source>expected {0} blank lines before a nested definition, found {1}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212"/> - <source>line break after binary operator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230"/> <source>invalid escape sequence '\{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="188"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="191"/> <source>too many blank lines ({0}) before a nested definition, expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178"/> <source>too many blank lines ({0}), expected {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45"/> <source>over-indented</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="215"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="218"/> <source>doc line too long ({0} > {1} characters)</source> <translation type="unfinished"></translation> </message>
--- a/scripts/install.py Sun May 03 13:42:52 2020 +0200 +++ b/scripts/install.py Wed Jun 17 17:14:12 2020 +0200 @@ -48,6 +48,8 @@ defaultMacAppBundlePath = "/Applications" defaultMacPythonExe = "{0}/Resources/Python.app/Contents/MacOS/Python".format( sys.exec_prefix) +if not os.path.exists(defaultMacPythonExe): + defaultMacPythonExe = "" macAppBundleName = defaultMacAppBundleName macAppBundlePath = defaultMacAppBundlePath macPythonExe = defaultMacPythonExe @@ -1074,7 +1076,7 @@ if not os.path.exists(directory): os.makedirs(directory) - if macPythonExe == defaultMacPythonExe: + if macPythonExe == defaultMacPythonExe and macPythonExe: starter = os.path.join(directories["exe"], "eric") os.symlink(macPythonExe, starter) else: