Fri, 14 Oct 2016 23:02:38 +0200
Merge with default branch.
--- a/APIs/Python3/eric6.api Tue Oct 11 21:55:03 2016 +0200 +++ b/APIs/Python3/eric6.api Fri Oct 14 23:02:38 2016 +0200 @@ -251,25 +251,36 @@ eric6.DebugClients.Python2.DebugThread.DebugThread.trace_dispatch?4(frame, event, arg) eric6.DebugClients.Python2.DebugThread.DebugThread?1(dbgClient, targ=None, args=None, kwargs=None, mainThread=False) eric6.DebugClients.Python2.DebugUtilities.prepareJsonCommand?4(method, params) +eric6.DebugClients.Python2.DebugVariables.ArrayResolver.TypeCodeMap?7 +eric6.DebugClients.Python2.DebugVariables.ArrayResolver.getDictionary?4(var) +eric6.DebugClients.Python2.DebugVariables.ArrayResolver.resolve?4(var, attribute) eric6.DebugClients.Python2.DebugVariables.BaseResolver.getDictionary?4(var) eric6.DebugClients.Python2.DebugVariables.BaseResolver.resolve?4(var, attribute) eric6.DebugClients.Python2.DebugVariables.DefaultResolver.getDictionary?4(var) eric6.DebugClients.Python2.DebugVariables.DefaultResolver.resolve?4(var, attribute) eric6.DebugClients.Python2.DebugVariables.DictResolver.getDictionary?4(var) +eric6.DebugClients.Python2.DebugVariables.DictResolver.keyToStr?4(key) eric6.DebugClients.Python2.DebugVariables.DictResolver.resolve?4(var, attribute) eric6.DebugClients.Python2.DebugVariables.ListResolver.getDictionary?4(var) eric6.DebugClients.Python2.DebugVariables.ListResolver.resolve?4(var, attribute) eric6.DebugClients.Python2.DebugVariables.MaxItemsToHandle?7 +eric6.DebugClients.Python2.DebugVariables.MultiValueDictResolver.getDictionary?4(var) +eric6.DebugClients.Python2.DebugVariables.MultiValueDictResolver.resolve?4(var, attribute) +eric6.DebugClients.Python2.DebugVariables.NdArrayResolver.getDictionary?4(var) +eric6.DebugClients.Python2.DebugVariables.NdArrayResolver.resolve?4(var, attribute) eric6.DebugClients.Python2.DebugVariables.SetResolver.getDictionary?4(var) eric6.DebugClients.Python2.DebugVariables.SetResolver.resolve?4(var, attribute) eric6.DebugClients.Python2.DebugVariables.TooLargeAttribute?7 eric6.DebugClients.Python2.DebugVariables.TooLargeMessage?7 eric6.DebugClients.Python2.DebugVariables._TypeMap?8 eric6.DebugClients.Python2.DebugVariables._initTypeMap?5() +eric6.DebugClients.Python2.DebugVariables.arrayResolver?7 eric6.DebugClients.Python2.DebugVariables.defaultResolver?7 eric6.DebugClients.Python2.DebugVariables.dictResolver?7 eric6.DebugClients.Python2.DebugVariables.getType?4(obj) eric6.DebugClients.Python2.DebugVariables.listResolver?7 +eric6.DebugClients.Python2.DebugVariables.multiValueDictResolver?7 +eric6.DebugClients.Python2.DebugVariables.ndarrayResolver?7 eric6.DebugClients.Python2.DebugVariables.setResolver?7 eric6.DebugClients.Python2.FlexCompleter.Completer._callable_postfix?5(val, word) eric6.DebugClients.Python2.FlexCompleter.Completer.attr_matches?4(text) @@ -431,25 +442,36 @@ eric6.DebugClients.Python3.DebugUtilities.formatargvalues?4(args, varargs, varkw, locals, formatarg=str, formatvarargs=lambda name: '*' + name, formatvarkw=lambda name: '**' + name, formatvalue=lambda value: '=' + repr(value)) eric6.DebugClients.Python3.DebugUtilities.getargvalues?4(frame) eric6.DebugClients.Python3.DebugUtilities.prepareJsonCommand?4(method, params) +eric6.DebugClients.Python3.DebugVariables.ArrayResolver.TypeCodeMap?7 +eric6.DebugClients.Python3.DebugVariables.ArrayResolver.getDictionary?4(var) +eric6.DebugClients.Python3.DebugVariables.ArrayResolver.resolve?4(var, attribute) eric6.DebugClients.Python3.DebugVariables.BaseResolver.getDictionary?4(var) eric6.DebugClients.Python3.DebugVariables.BaseResolver.resolve?4(var, attribute) eric6.DebugClients.Python3.DebugVariables.DefaultResolver.getDictionary?4(var) eric6.DebugClients.Python3.DebugVariables.DefaultResolver.resolve?4(var, attribute) eric6.DebugClients.Python3.DebugVariables.DictResolver.getDictionary?4(var) +eric6.DebugClients.Python3.DebugVariables.DictResolver.keyToStr?4(key) eric6.DebugClients.Python3.DebugVariables.DictResolver.resolve?4(var, attribute) eric6.DebugClients.Python3.DebugVariables.ListResolver.getDictionary?4(var) eric6.DebugClients.Python3.DebugVariables.ListResolver.resolve?4(var, attribute) eric6.DebugClients.Python3.DebugVariables.MaxItemsToHandle?7 +eric6.DebugClients.Python3.DebugVariables.MultiValueDictResolver.getDictionary?4(var) +eric6.DebugClients.Python3.DebugVariables.MultiValueDictResolver.resolve?4(var, attribute) +eric6.DebugClients.Python3.DebugVariables.NdArrayResolver.getDictionary?4(var) +eric6.DebugClients.Python3.DebugVariables.NdArrayResolver.resolve?4(var, attribute) eric6.DebugClients.Python3.DebugVariables.SetResolver.getDictionary?4(var) eric6.DebugClients.Python3.DebugVariables.SetResolver.resolve?4(var, attribute) eric6.DebugClients.Python3.DebugVariables.TooLargeAttribute?7 eric6.DebugClients.Python3.DebugVariables.TooLargeMessage?7 eric6.DebugClients.Python3.DebugVariables._TypeMap?8 eric6.DebugClients.Python3.DebugVariables._initTypeMap?5() +eric6.DebugClients.Python3.DebugVariables.arrayResolver?7 eric6.DebugClients.Python3.DebugVariables.defaultResolver?7 eric6.DebugClients.Python3.DebugVariables.dictResolver?7 eric6.DebugClients.Python3.DebugVariables.getType?4(obj) eric6.DebugClients.Python3.DebugVariables.listResolver?7 +eric6.DebugClients.Python3.DebugVariables.multiValueDictResolver?7 +eric6.DebugClients.Python3.DebugVariables.ndarrayResolver?7 eric6.DebugClients.Python3.DebugVariables.setResolver?7 eric6.DebugClients.Python3.FlexCompleter.Completer._callable_postfix?5(val, word) eric6.DebugClients.Python3.FlexCompleter.Completer.attr_matches?4(text) @@ -2709,6 +2731,7 @@ eric6.Helpviewer.HelpWindow.HelpWindow._personalInformationManager?8 eric6.Helpviewer.HelpWindow.HelpWindow._speedDial?8 eric6.Helpviewer.HelpWindow.HelpWindow._syncManager?8 +eric6.Helpviewer.HelpWindow.HelpWindow._useQtHelp?8 eric6.Helpviewer.HelpWindow.HelpWindow._userAgentsManager?8 eric6.Helpviewer.HelpWindow.HelpWindow._zoomManager?8 eric6.Helpviewer.HelpWindow.HelpWindow.adBlockIcon?4() @@ -2727,6 +2750,7 @@ eric6.Helpviewer.HelpWindow.HelpWindow.feedsManager?4() eric6.Helpviewer.HelpWindow.HelpWindow.flashCookieManager?4() eric6.Helpviewer.HelpWindow.HelpWindow.getActions?4() +eric6.Helpviewer.HelpWindow.HelpWindow.getQtHelpCollectionFileName?4() eric6.Helpviewer.HelpWindow.HelpWindow.getSourceFileList?4() eric6.Helpviewer.HelpWindow.HelpWindow.getWindow?4() eric6.Helpviewer.HelpWindow.HelpWindow.greaseMonkeyManager?4() @@ -2766,7 +2790,6 @@ eric6.Helpviewer.HelpWindow.HelpWindow.shutdown?4() eric6.Helpviewer.HelpWindow.HelpWindow.speedDial?4() eric6.Helpviewer.HelpWindow.HelpWindow.syncManager?4() -eric6.Helpviewer.HelpWindow.HelpWindow.useQtHelp?7 eric6.Helpviewer.HelpWindow.HelpWindow.userAgentsManager?4() eric6.Helpviewer.HelpWindow.HelpWindow.zoomManager?4() eric6.Helpviewer.HelpWindow.HelpWindow.zoomTextOnlyChanged?7 @@ -3117,9 +3140,12 @@ eric6.Helpviewer.QtHelpDocumentationDialog.QtHelpDocumentationDialog.getTabsToClose?4() eric6.Helpviewer.QtHelpDocumentationDialog.QtHelpDocumentationDialog.hasChanges?4() eric6.Helpviewer.QtHelpDocumentationDialog.QtHelpDocumentationDialog.on_addButton_clicked?4() +eric6.Helpviewer.QtHelpDocumentationDialog.QtHelpDocumentationDialog.on_addPluginButton_clicked?4() eric6.Helpviewer.QtHelpDocumentationDialog.QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged?4() eric6.Helpviewer.QtHelpDocumentationDialog.QtHelpDocumentationDialog.on_removeButton_clicked?4() eric6.Helpviewer.QtHelpDocumentationDialog.QtHelpDocumentationDialog?1(engine, parent) +eric6.Helpviewer.QtHelpDocumentationSelectionDialog.QtHelpDocumentationSelectionDialog.getData?4() +eric6.Helpviewer.QtHelpDocumentationSelectionDialog.QtHelpDocumentationSelectionDialog?1(helpDocuments, parent=None) eric6.Helpviewer.QtHelpFiltersDialog.QtHelpFiltersDialog.on_addButton_clicked?4() eric6.Helpviewer.QtHelpFiltersDialog.QtHelpFiltersDialog.on_attributesList_itemChanged?4(item, column) eric6.Helpviewer.QtHelpFiltersDialog.QtHelpFiltersDialog.on_attributesList_itemSelectionChanged?4() @@ -3970,6 +3996,7 @@ eric6.PluginManager.PluginManager.PluginManager.getPluginModules?4(pluginPath) eric6.PluginManager.PluginManager.PluginManager.getPluginObject?4(type_, typename, maybeActive=False) eric6.PluginManager.PluginManager.PluginManager.getPluginPreviewPixmap?4(type_, name) +eric6.PluginManager.PluginManager.PluginManager.getPluginQtHelpFiles?4() eric6.PluginManager.PluginManager.PluginManager.getVcsSystemIndicators?4() eric6.PluginManager.PluginManager.PluginManager.initOnDemandPlugin?4(name) eric6.PluginManager.PluginManager.PluginManager.initOnDemandPlugins?4() @@ -10368,9 +10395,12 @@ eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.QtHelpDocumentationDialog.getTabsToClose?4() eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.QtHelpDocumentationDialog.hasChanges?4() eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.QtHelpDocumentationDialog.on_addButton_clicked?4() +eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.QtHelpDocumentationDialog.on_addPluginButton_clicked?4() eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged?4() eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.QtHelpDocumentationDialog.on_removeButton_clicked?4() eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.QtHelpDocumentationDialog?1(engine, parent) +eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.QtHelpDocumentationSelectionDialog.getData?4() +eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.QtHelpDocumentationSelectionDialog?1(helpDocuments, parent=None) eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.QtHelpFiltersDialog.on_addButton_clicked?4() eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.QtHelpFiltersDialog.on_attributesList_itemChanged?4(item, column) eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.QtHelpFiltersDialog.on_attributesList_itemSelectionChanged?4() @@ -10540,6 +10570,29 @@ eric6.WebBrowser.Tools.DelayedFileWatcher.DelayedFileWatcher.delayedDirectoryChanged?7 eric6.WebBrowser.Tools.DelayedFileWatcher.DelayedFileWatcher.delayedFileChanged?7 eric6.WebBrowser.Tools.DelayedFileWatcher.DelayedFileWatcher?1(paths=None, parent=None) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter.ApplicationDeletesFiles?7 +eric6.WebBrowser.Tools.FilePrinter.FilePrinter.ApplicationSelectsPages?7 +eric6.WebBrowser.Tools.FilePrinter.FilePrinter.SystemDeletesFiles?7 +eric6.WebBrowser.Tools.FilePrinter.FilePrinter.SystemSelectsPages?7 +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._copies?5(printer, variant) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._cupsOptions?5(printer) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._deleteFile?5(printer, fileDeletePolicy, variant) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._destination?5(printer, variant) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._doPrintFile?5(printer, fileName, fileDeletePolicy, pageSelectPolicy, pageRange) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._jobname?5(printer, variant) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._mediaPageSize?5(printer) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._mediaPaperSource?5(printer) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._optionCollateCopies?5(printer) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._optionCupsProperties?5(printer) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._optionDoubleSidedPrinting?5(printer) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._optionMedia?5(printer) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._optionPageOrder?5(printer) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._pages?5(printer, pageSelectPolicy, pageRange, useCupsOptions, variant) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter._printArguments?5(printer, fileDeletePolicy, pageSelectPolicy, useCupsOptions, pageRange, variant) +eric6.WebBrowser.Tools.FilePrinter.FilePrinter?1() +eric6.WebBrowser.Tools.FilePrinter._FilePrintJobs?8 +eric6.WebBrowser.Tools.FilePrinter.isCupsAvailable?4() +eric6.WebBrowser.Tools.FilePrinter.printFile?4(printer, fileName, fileDeletePolicy=FilePrinter.ApplicationDeletesFiles, pageSelectPolicy=FilePrinter.ApplicationSelectsPages, pageRange="") eric6.WebBrowser.Tools.PrintToPdfDialog.PrintToPdfDialog.getData?4() eric6.WebBrowser.Tools.PrintToPdfDialog.PrintToPdfDialog.on_pageLayoutButton_clicked?4() eric6.WebBrowser.Tools.PrintToPdfDialog.PrintToPdfDialog?1(filePath, parent=None) @@ -10835,7 +10888,6 @@ eric6.WebBrowser.WebBrowserWebSearchWidget.WebBrowserWebSearchWidget.search?7 eric6.WebBrowser.WebBrowserWebSearchWidget.WebBrowserWebSearchWidget?1(parent=None) eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.BrowserWindows?7 -eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.UseQtHelp?7 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._adblockManager?8 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._autoScroller?8 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._bookmarksManager?8 @@ -10857,6 +10909,7 @@ eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._speedDial?8 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._syncManager?8 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._tabManager?8 +eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._useQtHelp?8 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._userAgentsManager?8 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._webProfile?8 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.adBlockIcon?4() @@ -10880,6 +10933,7 @@ eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.flashCookieManager?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.fromEric?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getActions?4() +eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getQtHelpCollectionFileName?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getSourceFileList?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getWindow?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.greaseMonkeyManager?4() @@ -11064,6 +11118,7 @@ eric6.install.compileUiFiles?4() eric6.install.configLength?7 eric6.install.configName?7 +eric6.install.copyAppStreamFile?4(src, dst, marker) eric6.install.copyDesktopFile?4(src, dst, marker) eric6.install.copyToFile?4(name, text) eric6.install.copyTree?4(src, dst, filters, excludeDirs=[], excludePatterns=[])
--- a/APIs/Python3/eric6.bas Tue Oct 11 21:55:03 2016 +0200 +++ b/APIs/Python3/eric6.bas Fri Oct 14 23:02:38 2016 +0200 @@ -25,6 +25,7 @@ ApplicationPage ConfigurationPageBase Ui_ApplicationPage ArgumentsError RuntimeError ArrayElementVarItem VariableItem +ArrayResolver BaseResolver AssociationItem E5ArrowItem Attribute ClbrBaseClasses.Attribute VisibilityMixin AuthenticationDialog QDialog Ui_AuthenticationDialog @@ -513,7 +514,9 @@ MultiProjectPage ConfigurationPageBase Ui_MultiProjectPage MultiProjectReader XMLStreamReaderBase MultiProjectWriter XMLStreamWriterBase +MultiValueDictResolver DictResolver NannyNag Exception +NdArrayResolver BaseResolver NetworkAccessManager QNetworkAccessManager NetworkAccessManagerProxy QNetworkAccessManager NetworkDiskCache QNetworkDiskCache @@ -640,6 +643,7 @@ QsciScintillaCompat QsciScintilla QtHelpAccessHandler SchemeAccessHandler QtHelpDocumentationDialog QDialog Ui_QtHelpDocumentationDialog +QtHelpDocumentationSelectionDialog QDialog Ui_QtHelpDocumentationSelectionDialog QtHelpFiltersDialog QDialog Ui_QtHelpFiltersDialog QtHelpSchemeHandler QWebEngineUrlSchemeHandler QtHelpSchemeReply QIODevice
--- a/DebugClients/Python/DebugBase.py Tue Oct 11 21:55:03 2016 +0200 +++ b/DebugClients/Python/DebugBase.py Fri Oct 14 23:02:38 2016 +0200 @@ -827,6 +827,9 @@ filename = excval.filename lineno = excval.lineno charno = excval.offset + + if charno is None: + charno = 0 filename = os.path.abspath(filename) realSyntaxError = os.path.exists(filename)
--- a/DebugClients/Python/DebugClientBase.py Tue Oct 11 21:55:03 2016 +0200 +++ b/DebugClients/Python/DebugClientBase.py Fri Oct 14 23:02:38 2016 +0200 @@ -344,11 +344,15 @@ filename = excval.filename lineno = excval.lineno charno = excval.offset + if charno is None: + charno = 0 + except (AttributeError, ValueError): message = "" filename = "" lineno = 0 charno = 0 + self.sendSyntaxError(message, filename, lineno, charno) return None @@ -1413,18 +1417,23 @@ DebugVariables.getType(variable) if resolver: variable = resolver.resolve(variable, attribute) + if variable is None: + break + else: break - typeObject, typeName, typeStr, resolver = \ - DebugVariables.getType(variable) - if typeStr.startswith(("PyQt5.", "PyQt4.")): - vlist = self.__formatQtVariable(variable, typeName) - varlist.extend(vlist) - elif resolver: - dict = resolver.getDictionary(variable) - vlist = self.__formatVariablesList( - list(dict.keys()), dict, scope, filter) - varlist.extend(vlist) + + if variable is not None: + typeObject, typeName, typeStr, resolver = \ + DebugVariables.getType(variable) + if typeStr.startswith(("PyQt5.", "PyQt4.")): + vlist = self.__formatQtVariable(variable, typeName) + varlist.extend(vlist) + elif resolver: + dict = resolver.getDictionary(variable) + vlist = self.__formatVariablesList( + list(dict.keys()), dict, scope, filter) + varlist.extend(vlist) self.sendJsonCommand("ResponseVariable", { "scope": scope, @@ -1649,12 +1658,16 @@ else: value = dict_[key] valtypestr = str(type(value))[1:-1] - _, valtype = valtypestr.split(' ', 1) valtype = valtype[1:-1] + valtypename = type(value).__name__ if valtype not in ConfigVarTypeStrings: - if ConfigVarTypeStrings.index('instance') in filter: - continue + if valtype in ["numpy.ndarray", "array.array"]: + if ConfigVarTypeStrings.index('list') in filter: + continue + elif valtypename == "MultiValueDict": + if ConfigVarTypeStrings.index('dict') in filter: + continue elif valtype == "sip.methoddescriptor": if ConfigVarTypeStrings.index( 'method') in filter: @@ -1662,7 +1675,12 @@ elif valtype == "sip.enumtype": if ConfigVarTypeStrings.index('class') in filter: continue - valtype = valtypestr + elif ConfigVarTypeStrings.index('instance') in filter: + continue + + if valtypename not in ["ndarray", "MultiValueDict", + "array"]: + valtype = valtypestr else: try: if ConfigVarTypeStrings.index(valtype) in filter: @@ -1684,17 +1702,22 @@ continue try: - if valtype not in ['list', 'tuple', 'dict', 'set', - 'frozenset']: + if valtype in ['list', 'tuple', 'dict', 'set', + 'frozenset', 'array.array']: + if valtype == 'dict': + rvalue = "{0:d}".format(len(value.keys())) + else: + rvalue = "{0:d}".format(len(value)) + elif valtype == "numpy.ndarray": + rvalue = "{0:d}".format(value.size) + elif valtypename == "MultiValueDict": + rvalue = "{0:d}".format(len(value.keys())) + valtype = "django.MultiValueDict" # shortened type + else: rvalue = repr(value) if valtype.startswith('class') and \ rvalue[0] in ['{', '(', '[']: rvalue = "" - else: - if valtype == 'dict': - rvalue = "{0:d}".format(len(value.keys())) - else: - rvalue = "{0:d}".format(len(value)) except Exception: rvalue = ''
--- a/DebugClients/Python/DebugVariables.py Tue Oct 11 21:55:03 2016 +0200 +++ b/DebugClients/Python/DebugVariables.py Fri Oct 14 23:02:38 2016 +0200 @@ -54,6 +54,11 @@ raise NotImplementedError +############################################################ +## Default Resolver +############################################################ + + class DefaultResolver(BaseResolver): """ Class used to resolve the default way. @@ -69,7 +74,7 @@ @return value of the attribute @rtype any """ - return getattr(var, attribute) + return getattr(var, attribute, None) def getDictionary(self, var): """ @@ -95,6 +100,11 @@ return d +############################################################ +## Resolver for Dictionaries +############################################################ + + class DictResolver(BaseResolver): """ Class used to resolve from a dictionary. @@ -117,7 +127,7 @@ try: return var[attribute] except Exception: - return getattr(var, attribute) + return getattr(var, attribute, None) expectedID = int(attribute.split("(ID:")[-1][:-1]) for key, value in var.items(): @@ -126,9 +136,9 @@ return None - def __keyToStr(self, key): + def keyToStr(self, key): """ - Private method to get a string representation for a key. + Public method to get a string representation for a key. @param key key to be converted @type any @@ -153,7 +163,7 @@ count = 0 for key, value in var.items(): count += 1 - key = "{0} (ID:{1})".format(self.__keyToStr(key), id(key)) + key = "{0} (ID:{1})".format(self.keyToStr(key), id(key)) d[key] = value if count > MaxItemsToHandle: d[TooLargeAttribute] = TooLargeMessage @@ -168,6 +178,11 @@ return d +############################################################ +## Resolver for Lists and Tuples +############################################################ + + class ListResolver(BaseResolver): """ Class used to resolve from a tuple or list. @@ -189,7 +204,7 @@ try: return var[int(attribute)] except Exception: - return getattr(var, attribute) + return getattr(var, attribute, None) def getDictionary(self, var): """ @@ -218,6 +233,11 @@ return d +############################################################ +## Resolver for Sets and Frozensets +############################################################ + + class SetResolver(BaseResolver): """ Class used to resolve from a set or frozenset. @@ -236,12 +256,12 @@ if attribute in ('___len___', TooLargeAttribute): return None - if attribute.startswith("ID:"): + if attribute.startswith("ID: "): attribute = attribute.split(None, 1)[1] try: attribute = int(attribute) except Exception: - return getattr(var, attribute) + return getattr(var, attribute, None) for v in var: if id(v) == attribute: @@ -276,14 +296,278 @@ return d +############################################################ +## Resolver for Numpy Arrays +############################################################ + + +class NdArrayResolver(BaseResolver): + """ + Class used to resolve from numpy ndarray including some meta data. + """ + def __isNumeric(self, arr): + """ + Private method to check, if an array is of a numeric type. + + @param arr array to check + @type ndarray + @return flag indicating a numeric array + @rtype bool + """ + try: + return arr.dtype.kind in 'biufc' + except AttributeError: + return False + + def resolve(self, var, attribute): + """ + Public method to get an attribute from a variable. + + @param var variable to extract an attribute or value from + @type tuple or list + @param attribute id of the value to extract + @type str + @return value of the attribute + @rtype any + """ + if attribute == '__internals__': + return defaultResolver.getDictionary(var) + + if attribute == 'min': + if self.__isNumeric(var): + return var.min() + else: + return None + + if attribute == 'max': + if self.__isNumeric(var): + return var.max() + else: + return None + + if attribute == 'mean': + if self.__isNumeric(var): + return var.mean() + else: + return None + + if attribute == 'shape': + return var.shape + + if attribute == 'dtype': + return var.dtype + + if attribute == 'size': + return var.size + + if attribute.startswith('['): + container = NdArrayItemsContainer() + count = 0 + for element in var: + setattr(container, str(count), element) + count += 1 + if count > MaxItemsToHandle: + setattr(container, TooLargeAttribute, TooLargeMessage) + break + return container + + return None + + def getDictionary(self, var): + """ + Public method to get the attributes of a variable as a dictionary. + + @param var variable to be converted + @type any + @return dictionary containing the variable attributes + @rtype dict + """ + d = {} + d['__internals__'] = defaultResolver.getDictionary(var) + if var.size > 1024 * 1024: + d['min'] = 'ndarray too big, calculating min would slow down' \ + ' debugging' + d['max'] = 'ndarray too big, calculating max would slow down' \ + ' debugging' + else: + if self.__isNumeric(var): + d['min'] = var.min() + d['max'] = var.max() + d['mean'] = var.mean() + else: + d['min'] = 'not a numeric object' + d['max'] = 'not a numeric object' + d['mean'] = 'not a numeric object' + d['shape'] = var.shape + d['dtype'] = var.dtype + d['size'] = var.size + d['[0:{0}]'.format(len(var) - 1)] = list(var[0:MaxItemsToHandle]) + return d + + +class NdArrayItemsContainer: + """ + Class to store ndarray items. + """ + pass + + +############################################################ +## Resolver for Django Multi Value Dictionaries +############################################################ + + +class MultiValueDictResolver(DictResolver): + """ + Class used to resolve from Django multi value dictionaries. + """ + def resolve(self, var, attribute): + """ + Public method to get an attribute from a variable. + + @param var variable to extract an attribute or value from + @type dict + @param attribute name of the attribute to extract + @type str + @return value of the attribute + @rtype any + """ + if attribute in ('___len___', TooLargeAttribute): + return None + + if "(ID:" not in attribute: + try: + return var[attribute] + except Exception: + return getattr(var, attribute, None) + + expectedID = int(attribute.split("(ID:")[-1][:-1]) + for key in var.keys(): + if id(key) == expectedID: + value = var.getlist(key) + return value + + return None + + def getDictionary(self, var): + """ + Public method to get the attributes of a variable as a dictionary. + + @param var variable to be converted + @type any + @return dictionary containing the variable attributes + @rtype dict + """ + d = {} + count = 0 + for key in var.keys(): + count += 1 + value = var.getlist(key) + key = "{0} (ID:{1})".format(self.keyToStr(key), id(key)) + d[key] = value + if count > MaxItemsToHandle: + d[TooLargeAttribute] = TooLargeMessage + break + + d["___len___"] = len(var) + + return d + + +############################################################ +## Resolver for array.array +############################################################ + + +class ArrayResolver(BaseResolver): + """ + Class used to resolve from array.array including some meta data. + """ + TypeCodeMap = { + "b": "int (signed char)", + "B": "int (unsigned char)", + "u": "Unicode character (Py_UNICODE)", + "h": "int (signed short)", + "H": "int (unsigned short)", + "i": "int (signed int)", + "I": "int (unsigned int)", + "l": "int (signed long)", + "L": "int (unsigned long)", + "q": "int (signed long long)", + "Q": "int (unsigned long long)", + "f": "float (float)", + "d": "float (double)", + } + def resolve(self, var, attribute): + """ + Public method to get an attribute from a variable. + + @param var variable to extract an attribute or value from + @type tuple or list + @param attribute id of the value to extract + @type str + @return value of the attribute + @rtype any + """ + if attribute == 'itemsize': + return var.itemsize + + if attribute == 'typecode': + return var.typecode + + if attribute == 'type': + if var.typecode in ArrayResolver.TypeCodeMap: + return ArrayResolver.TypeCodeMap[var.typecode] + else: + return 'illegal type' + + if attribute.startswith('['): + container = ArrayItemsContainer() + count = 0 + for element in var: + setattr(container, str(count), element) + count += 1 + if count > MaxItemsToHandle: + setattr(container, TooLargeAttribute, TooLargeMessage) + break + return container + + return None + + def getDictionary(self, var): + """ + Public method to get the attributes of a variable as a dictionary. + + @param var variable to be converted + @type any + @return dictionary containing the variable attributes + @rtype dict + """ + d = {} + d['typecode'] = var.typecode + if var.typecode in ArrayResolver.TypeCodeMap: + d['type'] = ArrayResolver.TypeCodeMap[var.typecode] + else: + d['type'] = 'illegal type' + d['itemsize'] = var.itemsize + d['[0:{0}]'.format(len(var) - 1)] = var.tolist()[0:MaxItemsToHandle] + return d + + +class ArrayItemsContainer: + """ + Class to store array.array items. + """ + pass + + defaultResolver = DefaultResolver() dictResolver = DictResolver() listResolver = ListResolver() setResolver = SetResolver() - -# TODO: add resolver for numpy arrays -# TODO: add resolver for Django MultiValueDict -# TODO: add resolver for collections.deque +ndarrayResolver = NdArrayResolver() +multiValueDictResolver = MultiValueDictResolver() +arrayResolver = ArrayResolver() ############################################################ ## Methods to determine the type of a variable and the @@ -329,6 +613,25 @@ _TypeMap.append((frozenset, setResolver)) # __IGNORE_WARNING__ except Exception: pass # not available on all python versions + + try: + import array + _TypeMap.append((array.array, arrayResolver)) + except ImportError: + pass # array.array may not be available + + try: + import numpy + _TypeMap.append((numpy.ndarray, ndarrayResolver)) + except ImportError: + pass # numpy may not be installed + + try: + from django.utils.datastructures import MultiValueDict + _TypeMap.insert(0, (MultiValueDict, multiValueDictResolver)) + # it should go before dict + except ImportError: + pass # django may not be installed def getType(obj):
--- a/Debugger/VariablesViewer.py Tue Oct 11 21:55:03 2016 +0200 +++ b/Debugger/VariablesViewer.py Fri Oct 14 23:02:38 2016 +0200 @@ -327,14 +327,18 @@ self.__debugViewer = viewer self.__globalScope = globalScope + indicatorPattern = "|".join([QRegExp.escape(indicator) + for indicator in VariableItem.Indicators]) self.rx_class = QRegExp('<.*(instance|object) at 0x.*>') self.rx_class2 = QRegExp('class .*') self.rx_class3 = QRegExp('<class .* at 0x.*>') self.dvar_rx_class1 = QRegExp( - r'<.*(instance|object) at 0x.*>(\[\]|\{\}|\(\))') - self.dvar_rx_class2 = QRegExp(r'<class .* at 0x.*>(\[\]|\{\}|\(\))') + r'<.*(instance|object) at 0x.*>({0})'.format(indicatorPattern)) + self.dvar_rx_class2 = QRegExp( + r'<class .* at 0x.*>({0})'.format(indicatorPattern)) self.dvar_rx_array_element = QRegExp(r'^\d+$') - self.dvar_rx_special_array_element = QRegExp(r'^\d+(\[\]|\{\}|\(\))$') + self.dvar_rx_special_array_element = QRegExp( + r'^\d+({0})$'.format(indicatorPattern)) self.rx_nonprintable = QRegExp(r"""(\\x\d\d)+""") self.framenr = 0 @@ -588,6 +592,11 @@ else: return SpecialVarItem(parent, dvar, dvalue, dtype, self.framenr, self.__globalScope) + elif dtype in ["numpy.ndarray", "django.MultiValueDict", + "array.array"]: + return SpecialVarItem( + parent, dvar, self.tr("{0} items").format(dvalue), dtype, + self.framenr, self.__globalScope) else: if self.dvar_rx_array_element.exactMatch(dvar): return ArrayElementVarItem(parent, dvar, dvalue, dtype) @@ -699,7 +708,11 @@ name = VariableItem.extractIndicators(itm.text(0).strip())[0] par = itm.parent() - nlist = [name] + if name.startswith("["): # numpy.ndarray, array.array + nlist = [] + else: + nlist = [name] + # build up the fully qualified name while par is not None: pname, indicators = VariableItem.extractIndicators( @@ -709,9 +722,20 @@ nlist[0] = '[{0}].'.format(nlist[0][:-1]) else: nlist[0] = '[{0}]'.format(nlist[0]) - nlist.insert(0, pname) + if not pname.startswith("["): # numpy.ndarray, array.array + nlist.insert(0, pname) else: - nlist.insert(0, '{0}.'.format(pname)) + if par.text(2) == "django.MultiValueDict": + nlist[0] = 'getlist({0})'.format(nlist[0]) + elif par.text(2) == "numpy.ndarray": + if nlist[0][0].isalpha(): + if nlist[0] in ["min", "max", "mean"]: + nlist[0] = ".{0}()".format(nlist[0]) + else: + nlist[0] = ".{0}".format(nlist[0]) + nlist.insert(0, pname) + else: + nlist.insert(0, '{0}.'.format(pname)) par = par.parent() name = ''.join(nlist)
--- a/Documentation/Help/source.qhp Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Help/source.qhp Fri Oct 14 23:02:38 2016 +0200 @@ -432,6 +432,7 @@ <section title="eric6.Helpviewer.JavaScriptResources" ref="eric6.Helpviewer.JavaScriptResources.html" /> <section title="eric6.Helpviewer.PageScreenDialog" ref="eric6.Helpviewer.PageScreenDialog.html" /> <section title="eric6.Helpviewer.QtHelpDocumentationDialog" ref="eric6.Helpviewer.QtHelpDocumentationDialog.html" /> + <section title="eric6.Helpviewer.QtHelpDocumentationSelectionDialog" ref="eric6.Helpviewer.QtHelpDocumentationSelectionDialog.html" /> <section title="eric6.Helpviewer.QtHelpFiltersDialog" ref="eric6.Helpviewer.QtHelpFiltersDialog.html" /> <section title="eric6.Helpviewer.SearchWidget" ref="eric6.Helpviewer.SearchWidget.html" /> </section> @@ -1203,6 +1204,7 @@ <section title="eric6.WebBrowser.QtHelp.HelpTocWidget" ref="eric6.WebBrowser.QtHelp.HelpTocWidget.html" /> <section title="eric6.WebBrowser.QtHelp.HelpTopicDialog" ref="eric6.WebBrowser.QtHelp.HelpTopicDialog.html" /> <section title="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html" /> + <section title="eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html" /> <section title="eric6.WebBrowser.QtHelp.QtHelpFiltersDialog" ref="eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.html" /> </section> <section title="eric6.WebBrowser.SiteInfo" ref="index-eric6.WebBrowser.SiteInfo.html"> @@ -1240,6 +1242,7 @@ </section> <section title="eric6.WebBrowser.Tools" ref="index-eric6.WebBrowser.Tools.html"> <section title="eric6.WebBrowser.Tools.DelayedFileWatcher" ref="eric6.WebBrowser.Tools.DelayedFileWatcher.html" /> + <section title="eric6.WebBrowser.Tools.FilePrinter" ref="eric6.WebBrowser.Tools.FilePrinter.html" /> <section title="eric6.WebBrowser.Tools.PrintToPdfDialog" ref="eric6.WebBrowser.Tools.PrintToPdfDialog.html" /> <section title="eric6.WebBrowser.Tools.Scripts" ref="eric6.WebBrowser.Tools.Scripts.html" /> <section title="eric6.WebBrowser.Tools.WebBrowserTools" ref="eric6.WebBrowser.Tools.WebBrowserTools.html" /> @@ -1835,6 +1838,14 @@ <keyword name="ArgumentsError.__str__" id="ArgumentsError.__str__" ref="eric6.E5Gui.E5Action.html#ArgumentsError.__str__" /> <keyword name="ArrayElementVarItem" id="ArrayElementVarItem" ref="eric6.Debugger.VariablesViewer.html#ArrayElementVarItem" /> <keyword name="ArrayElementVarItem (Constructor)" id="ArrayElementVarItem (Constructor)" ref="eric6.Debugger.VariablesViewer.html#ArrayElementVarItem.__init__" /> + <keyword name="ArrayItemsContainer" id="ArrayItemsContainer" ref="eric6.DebugClients.Python2.DebugVariables.html#ArrayItemsContainer" /> + <keyword name="ArrayItemsContainer" id="ArrayItemsContainer" ref="eric6.DebugClients.Python3.DebugVariables.html#ArrayItemsContainer" /> + <keyword name="ArrayResolver" id="ArrayResolver" ref="eric6.DebugClients.Python2.DebugVariables.html#ArrayResolver" /> + <keyword name="ArrayResolver" id="ArrayResolver" ref="eric6.DebugClients.Python3.DebugVariables.html#ArrayResolver" /> + <keyword name="ArrayResolver.getDictionary" id="ArrayResolver.getDictionary" ref="eric6.DebugClients.Python2.DebugVariables.html#ArrayResolver.getDictionary" /> + <keyword name="ArrayResolver.getDictionary" id="ArrayResolver.getDictionary" ref="eric6.DebugClients.Python3.DebugVariables.html#ArrayResolver.getDictionary" /> + <keyword name="ArrayResolver.resolve" id="ArrayResolver.resolve" ref="eric6.DebugClients.Python2.DebugVariables.html#ArrayResolver.resolve" /> + <keyword name="ArrayResolver.resolve" id="ArrayResolver.resolve" ref="eric6.DebugClients.Python3.DebugVariables.html#ArrayResolver.resolve" /> <keyword name="AssociationItem" id="AssociationItem" ref="eric6.Graphics.AssociationItem.html#AssociationItem" /> <keyword name="AssociationItem (Constructor)" id="AssociationItem (Constructor)" ref="eric6.Graphics.AssociationItem.html#AssociationItem.__init__" /> <keyword name="AssociationItem (Module)" id="AssociationItem (Module)" ref="eric6.Graphics.AssociationItem.html" /> @@ -3931,10 +3942,10 @@ <keyword name="DeleteFilesConfirmationDialog.on_buttonBox_clicked" id="DeleteFilesConfirmationDialog.on_buttonBox_clicked" ref="eric6.UI.DeleteFilesConfirmationDialog.html#DeleteFilesConfirmationDialog.on_buttonBox_clicked" /> <keyword name="DictResolver" id="DictResolver" ref="eric6.DebugClients.Python2.DebugVariables.html#DictResolver" /> <keyword name="DictResolver" id="DictResolver" ref="eric6.DebugClients.Python3.DebugVariables.html#DictResolver" /> - <keyword name="DictResolver.__keyToStr" id="DictResolver.__keyToStr" ref="eric6.DebugClients.Python2.DebugVariables.html#DictResolver.__keyToStr" /> - <keyword name="DictResolver.__keyToStr" id="DictResolver.__keyToStr" ref="eric6.DebugClients.Python3.DebugVariables.html#DictResolver.__keyToStr" /> <keyword name="DictResolver.getDictionary" id="DictResolver.getDictionary" ref="eric6.DebugClients.Python2.DebugVariables.html#DictResolver.getDictionary" /> <keyword name="DictResolver.getDictionary" id="DictResolver.getDictionary" ref="eric6.DebugClients.Python3.DebugVariables.html#DictResolver.getDictionary" /> + <keyword name="DictResolver.keyToStr" id="DictResolver.keyToStr" ref="eric6.DebugClients.Python2.DebugVariables.html#DictResolver.keyToStr" /> + <keyword name="DictResolver.keyToStr" id="DictResolver.keyToStr" ref="eric6.DebugClients.Python3.DebugVariables.html#DictResolver.keyToStr" /> <keyword name="DictResolver.resolve" id="DictResolver.resolve" ref="eric6.DebugClients.Python2.DebugVariables.html#DictResolver.resolve" /> <keyword name="DictResolver.resolve" id="DictResolver.resolve" ref="eric6.DebugClients.Python3.DebugVariables.html#DictResolver.resolve" /> <keyword name="DiffDialog" id="DiffDialog" ref="eric6.UI.DiffDialog.html#DiffDialog" /> @@ -5849,6 +5860,27 @@ <keyword name="FileDialogWizardDialog.on_bTest_clicked" id="FileDialogWizardDialog.on_bTest_clicked" ref="eric6.Plugins.WizardPlugins.FileDialogWizard.FileDialogWizardDialog.html#FileDialogWizardDialog.on_bTest_clicked" /> <keyword name="FileDialogWizardDialog.on_buttonBox_clicked" id="FileDialogWizardDialog.on_buttonBox_clicked" ref="eric6.Plugins.WizardPlugins.FileDialogWizard.FileDialogWizardDialog.html#FileDialogWizardDialog.on_buttonBox_clicked" /> <keyword name="FileDialogWizardDialog.on_pyqtComboBox_currentIndexChanged" id="FileDialogWizardDialog.on_pyqtComboBox_currentIndexChanged" ref="eric6.Plugins.WizardPlugins.FileDialogWizard.FileDialogWizardDialog.html#FileDialogWizardDialog.on_pyqtComboBox_currentIndexChanged" /> + <keyword name="FilePrinter" id="FilePrinter" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter" /> + <keyword name="FilePrinter (Constructor)" id="FilePrinter (Constructor)" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter.__init__" /> + <keyword name="FilePrinter (Module)" id="FilePrinter (Module)" ref="eric6.WebBrowser.Tools.FilePrinter.html" /> + <keyword name="FilePrinter.__doCleanup" id="FilePrinter.__doCleanup" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter.__doCleanup" /> + <keyword name="FilePrinter.__processError" id="FilePrinter.__processError" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter.__processError" /> + <keyword name="FilePrinter.__processFinished" id="FilePrinter.__processFinished" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter.__processFinished" /> + <keyword name="FilePrinter._copies" id="FilePrinter._copies" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._copies" /> + <keyword name="FilePrinter._cupsOptions" id="FilePrinter._cupsOptions" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._cupsOptions" /> + <keyword name="FilePrinter._deleteFile" id="FilePrinter._deleteFile" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._deleteFile" /> + <keyword name="FilePrinter._destination" id="FilePrinter._destination" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._destination" /> + <keyword name="FilePrinter._doPrintFile" id="FilePrinter._doPrintFile" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._doPrintFile" /> + <keyword name="FilePrinter._jobname" id="FilePrinter._jobname" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._jobname" /> + <keyword name="FilePrinter._mediaPageSize" id="FilePrinter._mediaPageSize" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._mediaPageSize" /> + <keyword name="FilePrinter._mediaPaperSource" id="FilePrinter._mediaPaperSource" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._mediaPaperSource" /> + <keyword name="FilePrinter._optionCollateCopies" id="FilePrinter._optionCollateCopies" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._optionCollateCopies" /> + <keyword name="FilePrinter._optionCupsProperties" id="FilePrinter._optionCupsProperties" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._optionCupsProperties" /> + <keyword name="FilePrinter._optionDoubleSidedPrinting" id="FilePrinter._optionDoubleSidedPrinting" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._optionDoubleSidedPrinting" /> + <keyword name="FilePrinter._optionMedia" id="FilePrinter._optionMedia" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._optionMedia" /> + <keyword name="FilePrinter._optionPageOrder" id="FilePrinter._optionPageOrder" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._optionPageOrder" /> + <keyword name="FilePrinter._pages" id="FilePrinter._pages" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._pages" /> + <keyword name="FilePrinter._printArguments" id="FilePrinter._printArguments" ref="eric6.WebBrowser.Tools.FilePrinter.html#FilePrinter._printArguments" /> <keyword name="FileReply" id="FileReply" ref="eric6.Helpviewer.Network.FileReply.html#FileReply" /> <keyword name="FileReply (Constructor)" id="FileReply (Constructor)" ref="eric6.Helpviewer.Network.FileReply.html#FileReply.__init__" /> <keyword name="FileReply (Module)" id="FileReply (Module)" ref="eric6.Helpviewer.Network.FileReply.html" /> @@ -6883,6 +6915,7 @@ <keyword name="HelpWindow.feedsManager" id="HelpWindow.feedsManager" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.feedsManager" /> <keyword name="HelpWindow.flashCookieManager" id="HelpWindow.flashCookieManager" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.flashCookieManager" /> <keyword name="HelpWindow.getActions" id="HelpWindow.getActions" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.getActions" /> + <keyword name="HelpWindow.getQtHelpCollectionFileName" id="HelpWindow.getQtHelpCollectionFileName" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.getQtHelpCollectionFileName" /> <keyword name="HelpWindow.getSourceFileList" id="HelpWindow.getSourceFileList" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.getSourceFileList" /> <keyword name="HelpWindow.getWindow" id="HelpWindow.getWindow" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.getWindow" /> <keyword name="HelpWindow.greaseMonkeyManager" id="HelpWindow.greaseMonkeyManager" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.greaseMonkeyManager" /> @@ -9784,6 +9817,12 @@ <keyword name="MultiProjectWriter (Constructor)" id="MultiProjectWriter (Constructor)" ref="eric6.E5XML.MultiProjectWriter.html#MultiProjectWriter.__init__" /> <keyword name="MultiProjectWriter (Module)" id="MultiProjectWriter (Module)" ref="eric6.E5XML.MultiProjectWriter.html" /> <keyword name="MultiProjectWriter.writeXML" id="MultiProjectWriter.writeXML" ref="eric6.E5XML.MultiProjectWriter.html#MultiProjectWriter.writeXML" /> + <keyword name="MultiValueDictResolver" id="MultiValueDictResolver" ref="eric6.DebugClients.Python2.DebugVariables.html#MultiValueDictResolver" /> + <keyword name="MultiValueDictResolver" id="MultiValueDictResolver" ref="eric6.DebugClients.Python3.DebugVariables.html#MultiValueDictResolver" /> + <keyword name="MultiValueDictResolver.getDictionary" id="MultiValueDictResolver.getDictionary" ref="eric6.DebugClients.Python2.DebugVariables.html#MultiValueDictResolver.getDictionary" /> + <keyword name="MultiValueDictResolver.getDictionary" id="MultiValueDictResolver.getDictionary" ref="eric6.DebugClients.Python3.DebugVariables.html#MultiValueDictResolver.getDictionary" /> + <keyword name="MultiValueDictResolver.resolve" id="MultiValueDictResolver.resolve" ref="eric6.DebugClients.Python2.DebugVariables.html#MultiValueDictResolver.resolve" /> + <keyword name="MultiValueDictResolver.resolve" id="MultiValueDictResolver.resolve" ref="eric6.DebugClients.Python3.DebugVariables.html#MultiValueDictResolver.resolve" /> <keyword name="NamingStyleChecker" id="NamingStyleChecker" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html#NamingStyleChecker" /> <keyword name="NamingStyleChecker (Constructor)" id="NamingStyleChecker (Constructor)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html#NamingStyleChecker.__init__" /> <keyword name="NamingStyleChecker (Module)" id="NamingStyleChecker (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html" /> @@ -9808,6 +9847,16 @@ <keyword name="NannyNag.get_line" id="NannyNag.get_line" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_line" /> <keyword name="NannyNag.get_lineno" id="NannyNag.get_lineno" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_lineno" /> <keyword name="NannyNag.get_msg" id="NannyNag.get_msg" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_msg" /> + <keyword name="NdArrayItemsContainer" id="NdArrayItemsContainer" ref="eric6.DebugClients.Python2.DebugVariables.html#NdArrayItemsContainer" /> + <keyword name="NdArrayItemsContainer" id="NdArrayItemsContainer" ref="eric6.DebugClients.Python3.DebugVariables.html#NdArrayItemsContainer" /> + <keyword name="NdArrayResolver" id="NdArrayResolver" ref="eric6.DebugClients.Python2.DebugVariables.html#NdArrayResolver" /> + <keyword name="NdArrayResolver" id="NdArrayResolver" ref="eric6.DebugClients.Python3.DebugVariables.html#NdArrayResolver" /> + <keyword name="NdArrayResolver.__isNumeric" id="NdArrayResolver.__isNumeric" ref="eric6.DebugClients.Python2.DebugVariables.html#NdArrayResolver.__isNumeric" /> + <keyword name="NdArrayResolver.__isNumeric" id="NdArrayResolver.__isNumeric" ref="eric6.DebugClients.Python3.DebugVariables.html#NdArrayResolver.__isNumeric" /> + <keyword name="NdArrayResolver.getDictionary" id="NdArrayResolver.getDictionary" ref="eric6.DebugClients.Python2.DebugVariables.html#NdArrayResolver.getDictionary" /> + <keyword name="NdArrayResolver.getDictionary" id="NdArrayResolver.getDictionary" ref="eric6.DebugClients.Python3.DebugVariables.html#NdArrayResolver.getDictionary" /> + <keyword name="NdArrayResolver.resolve" id="NdArrayResolver.resolve" ref="eric6.DebugClients.Python2.DebugVariables.html#NdArrayResolver.resolve" /> + <keyword name="NdArrayResolver.resolve" id="NdArrayResolver.resolve" ref="eric6.DebugClients.Python3.DebugVariables.html#NdArrayResolver.resolve" /> <keyword name="Network (Package)" id="Network (Package)" ref="index-eric6.Helpviewer.Network.html" /> <keyword name="Network (Package)" id="Network (Package)" ref="index-eric6.Network.html" /> <keyword name="Network (Package)" id="Network (Package)" ref="index-eric6.WebBrowser.Network.html" /> @@ -10615,6 +10664,7 @@ <keyword name="PluginManager.getPluginModules" id="PluginManager.getPluginModules" ref="eric6.PluginManager.PluginManager.html#PluginManager.getPluginModules" /> <keyword name="PluginManager.getPluginObject" id="PluginManager.getPluginObject" ref="eric6.PluginManager.PluginManager.html#PluginManager.getPluginObject" /> <keyword name="PluginManager.getPluginPreviewPixmap" id="PluginManager.getPluginPreviewPixmap" ref="eric6.PluginManager.PluginManager.html#PluginManager.getPluginPreviewPixmap" /> + <keyword name="PluginManager.getPluginQtHelpFiles" id="PluginManager.getPluginQtHelpFiles" ref="eric6.PluginManager.PluginManager.html#PluginManager.getPluginQtHelpFiles" /> <keyword name="PluginManager.getVcsSystemIndicators" id="PluginManager.getVcsSystemIndicators" ref="eric6.PluginManager.PluginManager.html#PluginManager.getVcsSystemIndicators" /> <keyword name="PluginManager.initOnDemandPlugin" id="PluginManager.initOnDemandPlugin" ref="eric6.PluginManager.PluginManager.html#PluginManager.initOnDemandPlugin" /> <keyword name="PluginManager.initOnDemandPlugins" id="PluginManager.initOnDemandPlugins" ref="eric6.PluginManager.PluginManager.html#PluginManager.initOnDemandPlugins" /> @@ -11756,16 +11806,28 @@ <keyword name="QtHelpDocumentationDialog (Constructor)" id="QtHelpDocumentationDialog (Constructor)" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.__init__" /> <keyword name="QtHelpDocumentationDialog (Module)" id="QtHelpDocumentationDialog (Module)" ref="eric6.Helpviewer.QtHelpDocumentationDialog.html" /> <keyword name="QtHelpDocumentationDialog (Module)" id="QtHelpDocumentationDialog (Module)" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html" /> + <keyword name="QtHelpDocumentationDialog.__registerDocumentations" id="QtHelpDocumentationDialog.__registerDocumentations" ref="eric6.Helpviewer.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.__registerDocumentations" /> + <keyword name="QtHelpDocumentationDialog.__registerDocumentations" id="QtHelpDocumentationDialog.__registerDocumentations" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.__registerDocumentations" /> <keyword name="QtHelpDocumentationDialog.getTabsToClose" id="QtHelpDocumentationDialog.getTabsToClose" ref="eric6.Helpviewer.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.getTabsToClose" /> <keyword name="QtHelpDocumentationDialog.getTabsToClose" id="QtHelpDocumentationDialog.getTabsToClose" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.getTabsToClose" /> <keyword name="QtHelpDocumentationDialog.hasChanges" id="QtHelpDocumentationDialog.hasChanges" ref="eric6.Helpviewer.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.hasChanges" /> <keyword name="QtHelpDocumentationDialog.hasChanges" id="QtHelpDocumentationDialog.hasChanges" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.hasChanges" /> <keyword name="QtHelpDocumentationDialog.on_addButton_clicked" id="QtHelpDocumentationDialog.on_addButton_clicked" ref="eric6.Helpviewer.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.on_addButton_clicked" /> <keyword name="QtHelpDocumentationDialog.on_addButton_clicked" id="QtHelpDocumentationDialog.on_addButton_clicked" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.on_addButton_clicked" /> + <keyword name="QtHelpDocumentationDialog.on_addPluginButton_clicked" id="QtHelpDocumentationDialog.on_addPluginButton_clicked" ref="eric6.Helpviewer.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.on_addPluginButton_clicked" /> + <keyword name="QtHelpDocumentationDialog.on_addPluginButton_clicked" id="QtHelpDocumentationDialog.on_addPluginButton_clicked" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.on_addPluginButton_clicked" /> <keyword name="QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged" id="QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged" ref="eric6.Helpviewer.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged" /> <keyword name="QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged" id="QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged" /> <keyword name="QtHelpDocumentationDialog.on_removeButton_clicked" id="QtHelpDocumentationDialog.on_removeButton_clicked" ref="eric6.Helpviewer.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.on_removeButton_clicked" /> <keyword name="QtHelpDocumentationDialog.on_removeButton_clicked" id="QtHelpDocumentationDialog.on_removeButton_clicked" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html#QtHelpDocumentationDialog.on_removeButton_clicked" /> + <keyword name="QtHelpDocumentationSelectionDialog" id="QtHelpDocumentationSelectionDialog" ref="eric6.Helpviewer.QtHelpDocumentationSelectionDialog.html#QtHelpDocumentationSelectionDialog" /> + <keyword name="QtHelpDocumentationSelectionDialog" id="QtHelpDocumentationSelectionDialog" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html#QtHelpDocumentationSelectionDialog" /> + <keyword name="QtHelpDocumentationSelectionDialog (Constructor)" id="QtHelpDocumentationSelectionDialog (Constructor)" ref="eric6.Helpviewer.QtHelpDocumentationSelectionDialog.html#QtHelpDocumentationSelectionDialog.__init__" /> + <keyword name="QtHelpDocumentationSelectionDialog (Constructor)" id="QtHelpDocumentationSelectionDialog (Constructor)" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html#QtHelpDocumentationSelectionDialog.__init__" /> + <keyword name="QtHelpDocumentationSelectionDialog (Module)" id="QtHelpDocumentationSelectionDialog (Module)" ref="eric6.Helpviewer.QtHelpDocumentationSelectionDialog.html" /> + <keyword name="QtHelpDocumentationSelectionDialog (Module)" id="QtHelpDocumentationSelectionDialog (Module)" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html" /> + <keyword name="QtHelpDocumentationSelectionDialog.getData" id="QtHelpDocumentationSelectionDialog.getData" ref="eric6.Helpviewer.QtHelpDocumentationSelectionDialog.html#QtHelpDocumentationSelectionDialog.getData" /> + <keyword name="QtHelpDocumentationSelectionDialog.getData" id="QtHelpDocumentationSelectionDialog.getData" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html#QtHelpDocumentationSelectionDialog.getData" /> <keyword name="QtHelpFiltersDialog" id="QtHelpFiltersDialog" ref="eric6.Helpviewer.QtHelpFiltersDialog.html#QtHelpFiltersDialog" /> <keyword name="QtHelpFiltersDialog" id="QtHelpFiltersDialog" ref="eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.html#QtHelpFiltersDialog" /> <keyword name="QtHelpFiltersDialog (Constructor)" id="QtHelpFiltersDialog (Constructor)" ref="eric6.Helpviewer.QtHelpFiltersDialog.html#QtHelpFiltersDialog.__init__" /> @@ -15431,7 +15493,8 @@ <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" /> - <keyword name="WebBrowserTabWidget.__pdfGenerated" id="WebBrowserTabWidget.__pdfGenerated" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__pdfGenerated" /> + <keyword name="WebBrowserTabWidget.__pdfGeneratedForPrinting" id="WebBrowserTabWidget.__pdfGeneratedForPrinting" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__pdfGeneratedForPrinting" /> + <keyword name="WebBrowserTabWidget.__pdfGeneratedForSave" id="WebBrowserTabWidget.__pdfGeneratedForSave" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__pdfGeneratedForSave" /> <keyword name="WebBrowserTabWidget.__recentlyAudibleChanged" id="WebBrowserTabWidget.__recentlyAudibleChanged" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__recentlyAudibleChanged" /> <keyword name="WebBrowserTabWidget.__showContextMenu" id="WebBrowserTabWidget.__showContextMenu" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__showContextMenu" /> <keyword name="WebBrowserTabWidget.__showNavigationMenu" id="WebBrowserTabWidget.__showNavigationMenu" ref="eric6.WebBrowser.WebBrowserTabWidget.html#WebBrowserTabWidget.__showNavigationMenu" /> @@ -15726,6 +15789,7 @@ <keyword name="WebBrowserWindow.flashCookieManager" id="WebBrowserWindow.flashCookieManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.flashCookieManager" /> <keyword name="WebBrowserWindow.fromEric" id="WebBrowserWindow.fromEric" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.fromEric" /> <keyword name="WebBrowserWindow.getActions" id="WebBrowserWindow.getActions" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.getActions" /> + <keyword name="WebBrowserWindow.getQtHelpCollectionFileName" id="WebBrowserWindow.getQtHelpCollectionFileName" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.getQtHelpCollectionFileName" /> <keyword name="WebBrowserWindow.getSourceFileList" id="WebBrowserWindow.getSourceFileList" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.getSourceFileList" /> <keyword name="WebBrowserWindow.getWindow" id="WebBrowserWindow.getWindow" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.getWindow" /> <keyword name="WebBrowserWindow.greaseMonkeyManager" id="WebBrowserWindow.greaseMonkeyManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.greaseMonkeyManager" /> @@ -16113,6 +16177,7 @@ <keyword name="continued_indentation" id="continued_indentation" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#continued_indentation" /> <keyword name="convertLineEnds" id="convertLineEnds" ref="eric6.Utilities.__init__.html#convertLineEnds" /> <keyword name="convertPasswords" id="convertPasswords" ref="eric6.Preferences.__init__.html#convertPasswords" /> + <keyword name="copyAppStreamFile" id="copyAppStreamFile" ref="eric6.install.html#copyAppStreamFile" /> <keyword name="copyDesktopFile" id="copyDesktopFile" ref="eric6.install.html#copyDesktopFile" /> <keyword name="copyToFile" id="copyToFile" ref="eric6.install.html#copyToFile" /> <keyword name="copyTree" id="copyTree" ref="eric6.install-debugclients.html#copyTree" /> @@ -16501,6 +16566,7 @@ <keyword name="ircFilter" id="ircFilter" ref="eric6.Network.IRC.IrcUtilities.html#ircFilter" /> <keyword name="ircTimestamp" id="ircTimestamp" ref="eric6.Network.IRC.IrcUtilities.html#ircTimestamp" /> <keyword name="isConfigured" id="isConfigured" ref="eric6.Preferences.__init__.html#isConfigured" /> + <keyword name="isCupsAvailable" id="isCupsAvailable" ref="eric6.WebBrowser.Tools.FilePrinter.html#isCupsAvailable" /> <keyword name="isExecutable" id="isExecutable" ref="eric6.Utilities.__init__.html#isExecutable" /> <keyword name="isLinuxPlatform" id="isLinuxPlatform" ref="eric6.Globals.__init__.html#isLinuxPlatform" /> <keyword name="isMacPlatform" id="isMacPlatform" ref="eric6.Globals.__init__.html#isMacPlatform" /> @@ -16601,6 +16667,7 @@ <keyword name="prepareUninstall" id="prepareUninstall" ref="eric6.Plugins.PluginVcsSubversion.html#prepareUninstall" /> <keyword name="previewPix" id="previewPix" ref="eric6.Plugins.PluginVmListspace.html#previewPix" /> <keyword name="previewPix" id="previewPix" ref="eric6.Plugins.PluginVmTabview.html#previewPix" /> + <keyword name="printFile" id="printFile" ref="eric6.WebBrowser.Tools.FilePrinter.html#printFile" /> <keyword name="printerr" id="printerr" ref="eric6.DebugClients.Python2.DebugBase.html#printerr" /> <keyword name="printerr" id="printerr" ref="eric6.DebugClients.Python3.DebugBase.html#printerr" /> <keyword name="process_options" id="process_options" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#process_options" /> @@ -17113,6 +17180,7 @@ <file>eric6.Helpviewer.PersonalInformationManager.PersonalDataDialog.html</file> <file>eric6.Helpviewer.PersonalInformationManager.PersonalInformationManager.html</file> <file>eric6.Helpviewer.QtHelpDocumentationDialog.html</file> + <file>eric6.Helpviewer.QtHelpDocumentationSelectionDialog.html</file> <file>eric6.Helpviewer.QtHelpFiltersDialog.html</file> <file>eric6.Helpviewer.SearchWidget.html</file> <file>eric6.Helpviewer.SiteInfo.SiteInfoDialog.html</file> @@ -17759,6 +17827,7 @@ <file>eric6.WebBrowser.QtHelp.HelpTocWidget.html</file> <file>eric6.WebBrowser.QtHelp.HelpTopicDialog.html</file> <file>eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html</file> + <file>eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html</file> <file>eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.html</file> <file>eric6.WebBrowser.SearchWidget.html</file> <file>eric6.WebBrowser.SiteInfo.SiteInfoDialog.html</file> @@ -17785,6 +17854,7 @@ <file>eric6.WebBrowser.Sync.SyncManager.html</file> <file>eric6.WebBrowser.TabManager.TabManagerWidget.html</file> <file>eric6.WebBrowser.Tools.DelayedFileWatcher.html</file> + <file>eric6.WebBrowser.Tools.FilePrinter.html</file> <file>eric6.WebBrowser.Tools.PrintToPdfDialog.html</file> <file>eric6.WebBrowser.Tools.Scripts.html</file> <file>eric6.WebBrowser.Tools.WebBrowserTools.html</file>
--- a/Documentation/Source/eric6.DebugClients.Python2.DebugVariables.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/eric6.DebugClients.Python2.DebugVariables.html Fri Oct 14 23:02:38 2016 +0200 @@ -25,11 +25,17 @@ </p> <h3>Global Attributes</h3> <table> -<tr><td>MaxItemsToHandle</td></tr><tr><td>TooLargeAttribute</td></tr><tr><td>TooLargeMessage</td></tr><tr><td>_TypeMap</td></tr><tr><td>defaultResolver</td></tr><tr><td>dictResolver</td></tr><tr><td>listResolver</td></tr><tr><td>setResolver</td></tr> +<tr><td>MaxItemsToHandle</td></tr><tr><td>TooLargeAttribute</td></tr><tr><td>TooLargeMessage</td></tr><tr><td>_TypeMap</td></tr><tr><td>arrayResolver</td></tr><tr><td>defaultResolver</td></tr><tr><td>dictResolver</td></tr><tr><td>listResolver</td></tr><tr><td>multiValueDictResolver</td></tr><tr><td>ndarrayResolver</td></tr><tr><td>setResolver</td></tr> </table> <h3>Classes</h3> <table> <tr> +<td><a href="#ArrayItemsContainer">ArrayItemsContainer</a></td> +<td>Class to store array.array items.</td> +</tr><tr> +<td><a href="#ArrayResolver">ArrayResolver</a></td> +<td>Class used to resolve from array.array including some meta data.</td> +</tr><tr> <td><a href="#BaseResolver">BaseResolver</a></td> <td>Base class of the resolver class tree.</td> </tr><tr> @@ -42,6 +48,15 @@ <td><a href="#ListResolver">ListResolver</a></td> <td>Class used to resolve from a tuple or list.</td> </tr><tr> +<td><a href="#MultiValueDictResolver">MultiValueDictResolver</a></td> +<td>Class used to resolve from Django multi value dictionaries.</td> +</tr><tr> +<td><a href="#NdArrayItemsContainer">NdArrayItemsContainer</a></td> +<td>Class to store ndarray items.</td> +</tr><tr> +<td><a href="#NdArrayResolver">NdArrayResolver</a></td> +<td>Class used to resolve from numpy ndarray including some meta data.</td> +</tr><tr> <td><a href="#SetResolver">SetResolver</a></td> <td>Class used to resolve from a set or frozenset.</td> </tr> @@ -57,6 +72,107 @@ </tr> </table> <hr /><hr /> +<a NAME="ArrayItemsContainer" ID="ArrayItemsContainer"></a> +<h2>ArrayItemsContainer</h2> +<p> + Class to store array.array items. +</p> +<h3>Derived from</h3> +None +<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="ArrayResolver" ID="ArrayResolver"></a> +<h2>ArrayResolver</h2> +<p> + Class used to resolve from array.array including some meta data. +</p> +<h3>Derived from</h3> +BaseResolver +<h3>Class Attributes</h3> +<table> +<tr><td>TypeCodeMap</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#ArrayResolver.getDictionary">getDictionary</a></td> +<td>Public method to get the attributes of a variable as a dictionary.</td> +</tr><tr> +<td><a href="#ArrayResolver.resolve">resolve</a></td> +<td>Public method to get an attribute from a variable.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="ArrayResolver.getDictionary" ID="ArrayResolver.getDictionary"></a> +<h4>ArrayResolver.getDictionary</h4> +<b>getDictionary</b>(<i>var</i>) +<p> + Public method to get the attributes of a variable as a dictionary. +</p><dl> +<dt><i>var</i> (any)</dt> +<dd> +variable to be converted +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +dictionary containing the variable attributes +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl><a NAME="ArrayResolver.resolve" ID="ArrayResolver.resolve"></a> +<h4>ArrayResolver.resolve</h4> +<b>resolve</b>(<i>var, attribute</i>) +<p> + Public method to get an attribute from a variable. +</p><dl> +<dt><i>var</i> (tuple or list)</dt> +<dd> +variable to extract an attribute or value from +</dd><dt><i>attribute</i> (str)</dt> +<dd> +id of the value to extract +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +value of the attribute +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +any +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> <a NAME="BaseResolver" ID="BaseResolver"></a> <h2>BaseResolver</h2> <p> @@ -237,12 +353,12 @@ <h3>Methods</h3> <table> <tr> -<td><a href="#DictResolver.__keyToStr">__keyToStr</a></td> -<td>Private method to get a string representation for a key.</td> -</tr><tr> <td><a href="#DictResolver.getDictionary">getDictionary</a></td> <td>Public method to get the attributes of a variable as a dictionary.</td> </tr><tr> +<td><a href="#DictResolver.keyToStr">keyToStr</a></td> +<td>Public method to get a string representation for a key.</td> +</tr><tr> <td><a href="#DictResolver.resolve">resolve</a></td> <td>Public method to get an attribute from a variable.</td> </tr> @@ -251,27 +367,7 @@ <table> <tr><td>None</td></tr> </table> -<a NAME="DictResolver.__keyToStr" ID="DictResolver.__keyToStr"></a> -<h4>DictResolver.__keyToStr</h4> -<b>__keyToStr</b>(<i>key</i>) -<p> - Private method to get a string representation for a key. -</p><dl> -<dt><i>key</i> (any)</dt> -<dd> -key to be converted -</dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -string representation of the given key -</dd> -</dl><dl> -<dt>Return Type:</dt> -<dd> -str -</dd> -</dl><a NAME="DictResolver.getDictionary" ID="DictResolver.getDictionary"></a> +<a NAME="DictResolver.getDictionary" ID="DictResolver.getDictionary"></a> <h4>DictResolver.getDictionary</h4> <b>getDictionary</b>(<i>var</i>) <p> @@ -291,6 +387,26 @@ <dd> dict </dd> +</dl><a NAME="DictResolver.keyToStr" ID="DictResolver.keyToStr"></a> +<h4>DictResolver.keyToStr</h4> +<b>keyToStr</b>(<i>key</i>) +<p> + Public method to get a string representation for a key. +</p><dl> +<dt><i>key</i> (any)</dt> +<dd> +key to be converted +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +string representation of the given key +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> </dl><a NAME="DictResolver.resolve" ID="DictResolver.resolve"></a> <h4>DictResolver.resolve</h4> <b>resolve</b>(<i>var, attribute</i>) @@ -392,6 +508,205 @@ </dl> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> +<a NAME="MultiValueDictResolver" ID="MultiValueDictResolver"></a> +<h2>MultiValueDictResolver</h2> +<p> + Class used to resolve from Django multi value dictionaries. +</p> +<h3>Derived from</h3> +DictResolver +<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="#MultiValueDictResolver.getDictionary">getDictionary</a></td> +<td>Public method to get the attributes of a variable as a dictionary.</td> +</tr><tr> +<td><a href="#MultiValueDictResolver.resolve">resolve</a></td> +<td>Public method to get an attribute from a variable.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="MultiValueDictResolver.getDictionary" ID="MultiValueDictResolver.getDictionary"></a> +<h4>MultiValueDictResolver.getDictionary</h4> +<b>getDictionary</b>(<i>var</i>) +<p> + Public method to get the attributes of a variable as a dictionary. +</p><dl> +<dt><i>var</i> (any)</dt> +<dd> +variable to be converted +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +dictionary containing the variable attributes +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl><a NAME="MultiValueDictResolver.resolve" ID="MultiValueDictResolver.resolve"></a> +<h4>MultiValueDictResolver.resolve</h4> +<b>resolve</b>(<i>var, attribute</i>) +<p> + Public method to get an attribute from a variable. +</p><dl> +<dt><i>var</i> (dict)</dt> +<dd> +variable to extract an attribute or value from +</dd><dt><i>attribute</i> (str)</dt> +<dd> +name of the attribute to extract +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +value of the attribute +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +any +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="NdArrayItemsContainer" ID="NdArrayItemsContainer"></a> +<h2>NdArrayItemsContainer</h2> +<p> + Class to store ndarray items. +</p> +<h3>Derived from</h3> +None +<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="NdArrayResolver" ID="NdArrayResolver"></a> +<h2>NdArrayResolver</h2> +<p> + Class used to resolve from numpy ndarray including some meta data. +</p> +<h3>Derived from</h3> +BaseResolver +<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="#NdArrayResolver.__isNumeric">__isNumeric</a></td> +<td>Private method to check, if an array is of a numeric type.</td> +</tr><tr> +<td><a href="#NdArrayResolver.getDictionary">getDictionary</a></td> +<td>Public method to get the attributes of a variable as a dictionary.</td> +</tr><tr> +<td><a href="#NdArrayResolver.resolve">resolve</a></td> +<td>Public method to get an attribute from a variable.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="NdArrayResolver.__isNumeric" ID="NdArrayResolver.__isNumeric"></a> +<h4>NdArrayResolver.__isNumeric</h4> +<b>__isNumeric</b>(<i>arr</i>) +<p> + Private method to check, if an array is of a numeric type. +</p><dl> +<dt><i>arr</i> (ndarray)</dt> +<dd> +array to check +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating a numeric array +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl><a NAME="NdArrayResolver.getDictionary" ID="NdArrayResolver.getDictionary"></a> +<h4>NdArrayResolver.getDictionary</h4> +<b>getDictionary</b>(<i>var</i>) +<p> + Public method to get the attributes of a variable as a dictionary. +</p><dl> +<dt><i>var</i> (any)</dt> +<dd> +variable to be converted +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +dictionary containing the variable attributes +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl><a NAME="NdArrayResolver.resolve" ID="NdArrayResolver.resolve"></a> +<h4>NdArrayResolver.resolve</h4> +<b>resolve</b>(<i>var, attribute</i>) +<p> + Public method to get an attribute from a variable. +</p><dl> +<dt><i>var</i> (tuple or list)</dt> +<dd> +variable to extract an attribute or value from +</dd><dt><i>attribute</i> (str)</dt> +<dd> +id of the value to extract +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +value of the attribute +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +any +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> <a NAME="SetResolver" ID="SetResolver"></a> <h2>SetResolver</h2> <p>
--- a/Documentation/Source/eric6.DebugClients.Python3.DebugVariables.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/eric6.DebugClients.Python3.DebugVariables.html Fri Oct 14 23:02:38 2016 +0200 @@ -25,11 +25,17 @@ </p> <h3>Global Attributes</h3> <table> -<tr><td>MaxItemsToHandle</td></tr><tr><td>TooLargeAttribute</td></tr><tr><td>TooLargeMessage</td></tr><tr><td>_TypeMap</td></tr><tr><td>defaultResolver</td></tr><tr><td>dictResolver</td></tr><tr><td>listResolver</td></tr><tr><td>setResolver</td></tr> +<tr><td>MaxItemsToHandle</td></tr><tr><td>TooLargeAttribute</td></tr><tr><td>TooLargeMessage</td></tr><tr><td>_TypeMap</td></tr><tr><td>arrayResolver</td></tr><tr><td>defaultResolver</td></tr><tr><td>dictResolver</td></tr><tr><td>listResolver</td></tr><tr><td>multiValueDictResolver</td></tr><tr><td>ndarrayResolver</td></tr><tr><td>setResolver</td></tr> </table> <h3>Classes</h3> <table> <tr> +<td><a href="#ArrayItemsContainer">ArrayItemsContainer</a></td> +<td>Class to store array.array items.</td> +</tr><tr> +<td><a href="#ArrayResolver">ArrayResolver</a></td> +<td>Class used to resolve from array.array including some meta data.</td> +</tr><tr> <td><a href="#BaseResolver">BaseResolver</a></td> <td>Base class of the resolver class tree.</td> </tr><tr> @@ -42,6 +48,15 @@ <td><a href="#ListResolver">ListResolver</a></td> <td>Class used to resolve from a tuple or list.</td> </tr><tr> +<td><a href="#MultiValueDictResolver">MultiValueDictResolver</a></td> +<td>Class used to resolve from Django multi value dictionaries.</td> +</tr><tr> +<td><a href="#NdArrayItemsContainer">NdArrayItemsContainer</a></td> +<td>Class to store ndarray items.</td> +</tr><tr> +<td><a href="#NdArrayResolver">NdArrayResolver</a></td> +<td>Class used to resolve from numpy ndarray including some meta data.</td> +</tr><tr> <td><a href="#SetResolver">SetResolver</a></td> <td>Class used to resolve from a set or frozenset.</td> </tr> @@ -57,6 +72,107 @@ </tr> </table> <hr /><hr /> +<a NAME="ArrayItemsContainer" ID="ArrayItemsContainer"></a> +<h2>ArrayItemsContainer</h2> +<p> + Class to store array.array items. +</p> +<h3>Derived from</h3> +None +<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="ArrayResolver" ID="ArrayResolver"></a> +<h2>ArrayResolver</h2> +<p> + Class used to resolve from array.array including some meta data. +</p> +<h3>Derived from</h3> +BaseResolver +<h3>Class Attributes</h3> +<table> +<tr><td>TypeCodeMap</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#ArrayResolver.getDictionary">getDictionary</a></td> +<td>Public method to get the attributes of a variable as a dictionary.</td> +</tr><tr> +<td><a href="#ArrayResolver.resolve">resolve</a></td> +<td>Public method to get an attribute from a variable.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="ArrayResolver.getDictionary" ID="ArrayResolver.getDictionary"></a> +<h4>ArrayResolver.getDictionary</h4> +<b>getDictionary</b>(<i>var</i>) +<p> + Public method to get the attributes of a variable as a dictionary. +</p><dl> +<dt><i>var</i> (any)</dt> +<dd> +variable to be converted +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +dictionary containing the variable attributes +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl><a NAME="ArrayResolver.resolve" ID="ArrayResolver.resolve"></a> +<h4>ArrayResolver.resolve</h4> +<b>resolve</b>(<i>var, attribute</i>) +<p> + Public method to get an attribute from a variable. +</p><dl> +<dt><i>var</i> (tuple or list)</dt> +<dd> +variable to extract an attribute or value from +</dd><dt><i>attribute</i> (str)</dt> +<dd> +id of the value to extract +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +value of the attribute +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +any +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> <a NAME="BaseResolver" ID="BaseResolver"></a> <h2>BaseResolver</h2> <p> @@ -237,12 +353,12 @@ <h3>Methods</h3> <table> <tr> -<td><a href="#DictResolver.__keyToStr">__keyToStr</a></td> -<td>Private method to get a string representation for a key.</td> -</tr><tr> <td><a href="#DictResolver.getDictionary">getDictionary</a></td> <td>Public method to get the attributes of a variable as a dictionary.</td> </tr><tr> +<td><a href="#DictResolver.keyToStr">keyToStr</a></td> +<td>Public method to get a string representation for a key.</td> +</tr><tr> <td><a href="#DictResolver.resolve">resolve</a></td> <td>Public method to get an attribute from a variable.</td> </tr> @@ -251,27 +367,7 @@ <table> <tr><td>None</td></tr> </table> -<a NAME="DictResolver.__keyToStr" ID="DictResolver.__keyToStr"></a> -<h4>DictResolver.__keyToStr</h4> -<b>__keyToStr</b>(<i>key</i>) -<p> - Private method to get a string representation for a key. -</p><dl> -<dt><i>key</i> (any)</dt> -<dd> -key to be converted -</dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -string representation of the given key -</dd> -</dl><dl> -<dt>Return Type:</dt> -<dd> -str -</dd> -</dl><a NAME="DictResolver.getDictionary" ID="DictResolver.getDictionary"></a> +<a NAME="DictResolver.getDictionary" ID="DictResolver.getDictionary"></a> <h4>DictResolver.getDictionary</h4> <b>getDictionary</b>(<i>var</i>) <p> @@ -291,6 +387,26 @@ <dd> dict </dd> +</dl><a NAME="DictResolver.keyToStr" ID="DictResolver.keyToStr"></a> +<h4>DictResolver.keyToStr</h4> +<b>keyToStr</b>(<i>key</i>) +<p> + Public method to get a string representation for a key. +</p><dl> +<dt><i>key</i> (any)</dt> +<dd> +key to be converted +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +string representation of the given key +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> </dl><a NAME="DictResolver.resolve" ID="DictResolver.resolve"></a> <h4>DictResolver.resolve</h4> <b>resolve</b>(<i>var, attribute</i>) @@ -392,6 +508,205 @@ </dl> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> +<a NAME="MultiValueDictResolver" ID="MultiValueDictResolver"></a> +<h2>MultiValueDictResolver</h2> +<p> + Class used to resolve from Django multi value dictionaries. +</p> +<h3>Derived from</h3> +DictResolver +<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="#MultiValueDictResolver.getDictionary">getDictionary</a></td> +<td>Public method to get the attributes of a variable as a dictionary.</td> +</tr><tr> +<td><a href="#MultiValueDictResolver.resolve">resolve</a></td> +<td>Public method to get an attribute from a variable.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="MultiValueDictResolver.getDictionary" ID="MultiValueDictResolver.getDictionary"></a> +<h4>MultiValueDictResolver.getDictionary</h4> +<b>getDictionary</b>(<i>var</i>) +<p> + Public method to get the attributes of a variable as a dictionary. +</p><dl> +<dt><i>var</i> (any)</dt> +<dd> +variable to be converted +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +dictionary containing the variable attributes +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl><a NAME="MultiValueDictResolver.resolve" ID="MultiValueDictResolver.resolve"></a> +<h4>MultiValueDictResolver.resolve</h4> +<b>resolve</b>(<i>var, attribute</i>) +<p> + Public method to get an attribute from a variable. +</p><dl> +<dt><i>var</i> (dict)</dt> +<dd> +variable to extract an attribute or value from +</dd><dt><i>attribute</i> (str)</dt> +<dd> +name of the attribute to extract +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +value of the attribute +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +any +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="NdArrayItemsContainer" ID="NdArrayItemsContainer"></a> +<h2>NdArrayItemsContainer</h2> +<p> + Class to store ndarray items. +</p> +<h3>Derived from</h3> +None +<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="NdArrayResolver" ID="NdArrayResolver"></a> +<h2>NdArrayResolver</h2> +<p> + Class used to resolve from numpy ndarray including some meta data. +</p> +<h3>Derived from</h3> +BaseResolver +<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="#NdArrayResolver.__isNumeric">__isNumeric</a></td> +<td>Private method to check, if an array is of a numeric type.</td> +</tr><tr> +<td><a href="#NdArrayResolver.getDictionary">getDictionary</a></td> +<td>Public method to get the attributes of a variable as a dictionary.</td> +</tr><tr> +<td><a href="#NdArrayResolver.resolve">resolve</a></td> +<td>Public method to get an attribute from a variable.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="NdArrayResolver.__isNumeric" ID="NdArrayResolver.__isNumeric"></a> +<h4>NdArrayResolver.__isNumeric</h4> +<b>__isNumeric</b>(<i>arr</i>) +<p> + Private method to check, if an array is of a numeric type. +</p><dl> +<dt><i>arr</i> (ndarray)</dt> +<dd> +array to check +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating a numeric array +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl><a NAME="NdArrayResolver.getDictionary" ID="NdArrayResolver.getDictionary"></a> +<h4>NdArrayResolver.getDictionary</h4> +<b>getDictionary</b>(<i>var</i>) +<p> + Public method to get the attributes of a variable as a dictionary. +</p><dl> +<dt><i>var</i> (any)</dt> +<dd> +variable to be converted +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +dictionary containing the variable attributes +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl><a NAME="NdArrayResolver.resolve" ID="NdArrayResolver.resolve"></a> +<h4>NdArrayResolver.resolve</h4> +<b>resolve</b>(<i>var, attribute</i>) +<p> + Public method to get an attribute from a variable. +</p><dl> +<dt><i>var</i> (tuple or list)</dt> +<dd> +variable to extract an attribute or value from +</dd><dt><i>attribute</i> (str)</dt> +<dd> +id of the value to extract +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +value of the attribute +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +any +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> <a NAME="SetResolver" ID="SetResolver"></a> <h2>SetResolver</h2> <p>
--- a/Documentation/Source/eric6.Helpviewer.HelpWindow.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/eric6.Helpviewer.HelpWindow.html Fri Oct 14 23:02:38 2016 +0200 @@ -58,7 +58,7 @@ E5MainWindow <h3>Class Attributes</h3> <table> -<tr><td>_adblockManager</td></tr><tr><td>_bookmarksManager</td></tr><tr><td>_cookieJar</td></tr><tr><td>_downloadManager</td></tr><tr><td>_featurePermissionManager</td></tr><tr><td>_feedsManager</td></tr><tr><td>_flashCookieManager</td></tr><tr><td>_fromEric</td></tr><tr><td>_greaseMonkeyManager</td></tr><tr><td>_helpEngine</td></tr><tr><td>_historyManager</td></tr><tr><td>_networkAccessManager</td></tr><tr><td>_notification</td></tr><tr><td>_passwordManager</td></tr><tr><td>_personalInformationManager</td></tr><tr><td>_speedDial</td></tr><tr><td>_syncManager</td></tr><tr><td>_userAgentsManager</td></tr><tr><td>_zoomManager</td></tr><tr><td>helpwindows</td></tr><tr><td>useQtHelp</td></tr> +<tr><td>_adblockManager</td></tr><tr><td>_bookmarksManager</td></tr><tr><td>_cookieJar</td></tr><tr><td>_downloadManager</td></tr><tr><td>_featurePermissionManager</td></tr><tr><td>_feedsManager</td></tr><tr><td>_flashCookieManager</td></tr><tr><td>_fromEric</td></tr><tr><td>_greaseMonkeyManager</td></tr><tr><td>_helpEngine</td></tr><tr><td>_historyManager</td></tr><tr><td>_networkAccessManager</td></tr><tr><td>_notification</td></tr><tr><td>_passwordManager</td></tr><tr><td>_personalInformationManager</td></tr><tr><td>_speedDial</td></tr><tr><td>_syncManager</td></tr><tr><td>_useQtHelp</td></tr><tr><td>_userAgentsManager</td></tr><tr><td>_zoomManager</td></tr><tr><td>helpwindows</td></tr> </table> <h3>Class Methods</h3> <table> @@ -84,6 +84,9 @@ <td><a href="#HelpWindow.flashCookieManager">flashCookieManager</a></td> <td>Class method to get a reference to the flash cookies manager.</td> </tr><tr> +<td><a href="#HelpWindow.getQtHelpCollectionFileName">getQtHelpCollectionFileName</a></td> +<td>Class method to determine the name of the QtHelp collection file.</td> +</tr><tr> <td><a href="#HelpWindow.greaseMonkeyManager">greaseMonkeyManager</a></td> <td>Class method to get a reference to the GreaseMonkey manager.</td> </tr><tr> @@ -623,6 +626,21 @@ <dd> FlashCookieManager </dd> +</dl><a NAME="HelpWindow.getQtHelpCollectionFileName" ID="HelpWindow.getQtHelpCollectionFileName"></a> +<h4>HelpWindow.getQtHelpCollectionFileName (class method)</h4> +<b>getQtHelpCollectionFileName</b>(<i></i>) +<p> + Class method to determine the name of the QtHelp collection file. +</p><dl> +<dt>Returns:</dt> +<dd> +path of the QtHelp collection file +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> </dl><a NAME="HelpWindow.greaseMonkeyManager" ID="HelpWindow.greaseMonkeyManager"></a> <h4>HelpWindow.greaseMonkeyManager (class method)</h4> <b>greaseMonkeyManager</b>(<i></i>)
--- a/Documentation/Source/eric6.Helpviewer.QtHelpDocumentationDialog.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/eric6.Helpviewer.QtHelpDocumentationDialog.html Fri Oct 14 23:02:38 2016 +0200 @@ -60,6 +60,9 @@ <td><a href="#QtHelpDocumentationDialog.__init__">QtHelpDocumentationDialog</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#QtHelpDocumentationDialog.__registerDocumentations">__registerDocumentations</a></td> +<td>Private method to register a given list of documentations.</td> +</tr><tr> <td><a href="#QtHelpDocumentationDialog.getTabsToClose">getTabsToClose</a></td> <td>Public method to get the list of tabs to close.</td> </tr><tr> @@ -67,7 +70,10 @@ <td>Public slot to test the dialog for changes.</td> </tr><tr> <td><a href="#QtHelpDocumentationDialog.on_addButton_clicked">on_addButton_clicked</a></td> -<td>Private slot to add documents to the help database.</td> +<td>Private slot to add QtHelp documents to the help database.</td> +</tr><tr> +<td><a href="#QtHelpDocumentationDialog.on_addPluginButton_clicked">on_addPluginButton_clicked</a></td> +<td>Private slot to add QtHelp documents provided by plug-ins to the help database.</td> </tr><tr> <td><a href="#QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged">on_documentsList_itemSelectionChanged</a></td> <td>Private slot handling a change of the documents selection.</td> @@ -93,6 +99,16 @@ <dd> reference to the parent widget (QWidget) </dd> +</dl><a NAME="QtHelpDocumentationDialog.__registerDocumentations" ID="QtHelpDocumentationDialog.__registerDocumentations"></a> +<h4>QtHelpDocumentationDialog.__registerDocumentations</h4> +<b>__registerDocumentations</b>(<i>fileNames</i>) +<p> + Private method to register a given list of documentations. +</p><dl> +<dt><i>fileNames</i> (list of str)</dt> +<dd> +list of documentation files to be registered +</dd> </dl><a NAME="QtHelpDocumentationDialog.getTabsToClose" ID="QtHelpDocumentationDialog.getTabsToClose"></a> <h4>QtHelpDocumentationDialog.getTabsToClose</h4> <b>getTabsToClose</b>(<i></i>) @@ -117,7 +133,13 @@ <h4>QtHelpDocumentationDialog.on_addButton_clicked</h4> <b>on_addButton_clicked</b>(<i></i>) <p> - Private slot to add documents to the help database. + Private slot to add QtHelp documents to the help database. +</p><a NAME="QtHelpDocumentationDialog.on_addPluginButton_clicked" ID="QtHelpDocumentationDialog.on_addPluginButton_clicked"></a> +<h4>QtHelpDocumentationDialog.on_addPluginButton_clicked</h4> +<b>on_addPluginButton_clicked</b>(<i></i>) +<p> + Private slot to add QtHelp documents provided by plug-ins to + the help database. </p><a NAME="QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged" ID="QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged"></a> <h4>QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged</h4> <b>on_documentsList_itemSelectionChanged</b>(<i></i>)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric6.Helpviewer.QtHelpDocumentationSelectionDialog.html Fri Oct 14 23:02:38 2016 +0200 @@ -0,0 +1,105 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Helpviewer.QtHelpDocumentationSelectionDialog</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Helpviewer.QtHelpDocumentationSelectionDialog</h1> +<p> +Module implementing a dialog to select QtHelp documentation sets to be +installed. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#QtHelpDocumentationSelectionDialog">QtHelpDocumentationSelectionDialog</a></td> +<td>Class implementing a dialog to select QtHelp documentation sets to be installed.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="QtHelpDocumentationSelectionDialog" ID="QtHelpDocumentationSelectionDialog"></a> +<h2>QtHelpDocumentationSelectionDialog</h2> +<p> + Class implementing a dialog to select QtHelp documentation sets to be + installed. +</p> +<h3>Derived from</h3> +QDialog, Ui_QtHelpDocumentationSelectionDialog +<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="#QtHelpDocumentationSelectionDialog.__init__">QtHelpDocumentationSelectionDialog</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#QtHelpDocumentationSelectionDialog.getData">getData</a></td> +<td>Public method to retrieve the selected help documents.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="QtHelpDocumentationSelectionDialog.__init__" ID="QtHelpDocumentationSelectionDialog.__init__"></a> +<h4>QtHelpDocumentationSelectionDialog (Constructor)</h4> +<b>QtHelpDocumentationSelectionDialog</b>(<i>helpDocuments, parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>helpDocuments</i> (dict of lists of str)</dt> +<dd> +dictionary containing the lists of help documents + to be shown +</dd><dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget +</dd> +</dl><a NAME="QtHelpDocumentationSelectionDialog.getData" ID="QtHelpDocumentationSelectionDialog.getData"></a> +<h4>QtHelpDocumentationSelectionDialog.getData</h4> +<b>getData</b>(<i></i>) +<p> + Public method to retrieve the selected help documents. +</p><dl> +<dt>Returns:</dt> +<dd> +list of QtHelp documentation sets to be installed +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.PluginManager.PluginManager.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/eric6.PluginManager.PluginManager.html Fri Oct 14 23:02:38 2016 +0200 @@ -173,6 +173,9 @@ <td><a href="#PluginManager.getPluginPreviewPixmap">getPluginPreviewPixmap</a></td> <td>Public method to get a preview pixmap of a plugin of a specific type.</td> </tr><tr> +<td><a href="#PluginManager.getPluginQtHelpFiles">getPluginQtHelpFiles</a></td> +<td>Public method to get the list of QtHelp documentation files provided by a plug-in.</td> +</tr><tr> <td><a href="#PluginManager.getVcsSystemIndicators">getVcsSystemIndicators</a></td> <td>Public method to get the Vcs System indicators.</td> </tr><tr> @@ -667,6 +670,23 @@ <dd> preview pixmap (QPixmap) </dd> +</dl><a NAME="PluginManager.getPluginQtHelpFiles" ID="PluginManager.getPluginQtHelpFiles"></a> +<h4>PluginManager.getPluginQtHelpFiles</h4> +<b>getPluginQtHelpFiles</b>(<i></i>) +<p> + Public method to get the list of QtHelp documentation files provided + by a plug-in. +</p><dl> +<dt>Returns:</dt> +<dd> +dictionary with documentation type as key and list of files + as value +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict (key: str, value: list of str) +</dd> </dl><a NAME="PluginManager.getVcsSystemIndicators" ID="PluginManager.getVcsSystemIndicators"></a> <h4>PluginManager.getVcsSystemIndicators</h4> <b>getVcsSystemIndicators</b>(<i></i>)
--- a/Documentation/Source/eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html Fri Oct 14 23:02:38 2016 +0200 @@ -60,6 +60,9 @@ <td><a href="#QtHelpDocumentationDialog.__init__">QtHelpDocumentationDialog</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#QtHelpDocumentationDialog.__registerDocumentations">__registerDocumentations</a></td> +<td>Private method to register a given list of documentations.</td> +</tr><tr> <td><a href="#QtHelpDocumentationDialog.getTabsToClose">getTabsToClose</a></td> <td>Public method to get the list of tabs to close.</td> </tr><tr> @@ -67,7 +70,10 @@ <td>Public slot to test the dialog for changes.</td> </tr><tr> <td><a href="#QtHelpDocumentationDialog.on_addButton_clicked">on_addButton_clicked</a></td> -<td>Private slot to add documents to the help database.</td> +<td>Private slot to add QtHelp documents to the help database.</td> +</tr><tr> +<td><a href="#QtHelpDocumentationDialog.on_addPluginButton_clicked">on_addPluginButton_clicked</a></td> +<td>Private slot to add QtHelp documents provided by plug-ins to the help database.</td> </tr><tr> <td><a href="#QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged">on_documentsList_itemSelectionChanged</a></td> <td>Private slot handling a change of the documents selection.</td> @@ -93,6 +99,16 @@ <dd> reference to the parent widget (QWidget) </dd> +</dl><a NAME="QtHelpDocumentationDialog.__registerDocumentations" ID="QtHelpDocumentationDialog.__registerDocumentations"></a> +<h4>QtHelpDocumentationDialog.__registerDocumentations</h4> +<b>__registerDocumentations</b>(<i>fileNames</i>) +<p> + Private method to register a given list of documentations. +</p><dl> +<dt><i>fileNames</i> (list of str)</dt> +<dd> +list of documentation files to be registered +</dd> </dl><a NAME="QtHelpDocumentationDialog.getTabsToClose" ID="QtHelpDocumentationDialog.getTabsToClose"></a> <h4>QtHelpDocumentationDialog.getTabsToClose</h4> <b>getTabsToClose</b>(<i></i>) @@ -117,7 +133,13 @@ <h4>QtHelpDocumentationDialog.on_addButton_clicked</h4> <b>on_addButton_clicked</b>(<i></i>) <p> - Private slot to add documents to the help database. + Private slot to add QtHelp documents to the help database. +</p><a NAME="QtHelpDocumentationDialog.on_addPluginButton_clicked" ID="QtHelpDocumentationDialog.on_addPluginButton_clicked"></a> +<h4>QtHelpDocumentationDialog.on_addPluginButton_clicked</h4> +<b>on_addPluginButton_clicked</b>(<i></i>) +<p> + Private slot to add QtHelp documents provided by plug-ins to + the help database. </p><a NAME="QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged" ID="QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged"></a> <h4>QtHelpDocumentationDialog.on_documentsList_itemSelectionChanged</h4> <b>on_documentsList_itemSelectionChanged</b>(<i></i>)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html Fri Oct 14 23:02:38 2016 +0200 @@ -0,0 +1,105 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog</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.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog</h1> +<p> +Module implementing a dialog to select QtHelp documentation sets to be +installed. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#QtHelpDocumentationSelectionDialog">QtHelpDocumentationSelectionDialog</a></td> +<td>Class implementing a dialog to select QtHelp documentation sets to be installed.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="QtHelpDocumentationSelectionDialog" ID="QtHelpDocumentationSelectionDialog"></a> +<h2>QtHelpDocumentationSelectionDialog</h2> +<p> + Class implementing a dialog to select QtHelp documentation sets to be + installed. +</p> +<h3>Derived from</h3> +QDialog, Ui_QtHelpDocumentationSelectionDialog +<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="#QtHelpDocumentationSelectionDialog.__init__">QtHelpDocumentationSelectionDialog</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#QtHelpDocumentationSelectionDialog.getData">getData</a></td> +<td>Public method to retrieve the selected help documents.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="QtHelpDocumentationSelectionDialog.__init__" ID="QtHelpDocumentationSelectionDialog.__init__"></a> +<h4>QtHelpDocumentationSelectionDialog (Constructor)</h4> +<b>QtHelpDocumentationSelectionDialog</b>(<i>helpDocuments, parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>helpDocuments</i> (dict of lists of str)</dt> +<dd> +dictionary containing the lists of help documents + to be shown +</dd><dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget +</dd> +</dl><a NAME="QtHelpDocumentationSelectionDialog.getData" ID="QtHelpDocumentationSelectionDialog.getData"></a> +<h4>QtHelpDocumentationSelectionDialog.getData</h4> +<b>getData</b>(<i></i>) +<p> + Public method to retrieve the selected help documents. +</p><dl> +<dt>Returns:</dt> +<dd> +list of QtHelp documentation sets to be installed +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of 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/Documentation/Source/eric6.WebBrowser.Tools.FilePrinter.html Fri Oct 14 23:02:38 2016 +0200 @@ -0,0 +1,587 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.WebBrowser.Tools.FilePrinter</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.WebBrowser.Tools.FilePrinter</h1> +<p> +Module implementing an object for printing of files. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>_FilePrintJobs</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#FilePrinter">FilePrinter</a></td> +<td>Class implementing methods for printing on *nix systems.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr> +<td><a href="#isCupsAvailable">isCupsAvailable</a></td> +<td>Static method to test the availability of CUPS.</td> +</tr><tr> +<td><a href="#printFile">printFile</a></td> +<td>Static method to print a file.</td> +</tr> +</table> +<hr /><hr /> +<a NAME="FilePrinter" ID="FilePrinter"></a> +<h2>FilePrinter</h2> +<p> + Class implementing methods for printing on *nix systems. +</p> +<h3>Derived from</h3> +object +<h3>Class Attributes</h3> +<table> +<tr><td>ApplicationDeletesFiles</td></tr><tr><td>ApplicationSelectsPages</td></tr><tr><td>SystemDeletesFiles</td></tr><tr><td>SystemSelectsPages</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#FilePrinter.__init__">FilePrinter</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#FilePrinter.__doCleanup">__doCleanup</a></td> +<td>Private method to perform some internal cleanup actions.</td> +</tr><tr> +<td><a href="#FilePrinter.__processError">__processError</a></td> +<td>Private slot handling process errors.</td> +</tr><tr> +<td><a href="#FilePrinter.__processFinished">__processFinished</a></td> +<td>Private slot handling the end of the process.</td> +</tr><tr> +<td><a href="#FilePrinter._copies">_copies</a></td> +<td>Protected method to assemble the number of copies arguments.</td> +</tr><tr> +<td><a href="#FilePrinter._cupsOptions">_cupsOptions</a></td> +<td>Protected method to assemble the CUPS specific arguments.</td> +</tr><tr> +<td><a href="#FilePrinter._deleteFile">_deleteFile</a></td> +<td>Protected method to assemble the jobname arguments.</td> +</tr><tr> +<td><a href="#FilePrinter._destination">_destination</a></td> +<td>Protected method to assemble the printer destination arguments.</td> +</tr><tr> +<td><a href="#FilePrinter._doPrintFile">_doPrintFile</a></td> +<td>Protected method to print a file</td> +</tr><tr> +<td><a href="#FilePrinter._jobname">_jobname</a></td> +<td>Protected method to assemble the jobname arguments.</td> +</tr><tr> +<td><a href="#FilePrinter._mediaPageSize">_mediaPageSize</a></td> +<td>Protected method to get the page size argument.</td> +</tr><tr> +<td><a href="#FilePrinter._mediaPaperSource">_mediaPaperSource</a></td> +<td>Protected method to get the paper source argument.</td> +</tr><tr> +<td><a href="#FilePrinter._optionCollateCopies">_optionCollateCopies</a></td> +<td>Protected method to assemble the collate copies arguments.</td> +</tr><tr> +<td><a href="#FilePrinter._optionCupsProperties">_optionCupsProperties</a></td> +<td>Protected method to assemble the CUPS properties arguments.</td> +</tr><tr> +<td><a href="#FilePrinter._optionDoubleSidedPrinting">_optionDoubleSidedPrinting</a></td> +<td>Protected method to assemble the double sided printing arguments.</td> +</tr><tr> +<td><a href="#FilePrinter._optionMedia">_optionMedia</a></td> +<td>Protected method to assemble the print media arguments.</td> +</tr><tr> +<td><a href="#FilePrinter._optionPageOrder">_optionPageOrder</a></td> +<td>Protected method to assemble the page order arguments.</td> +</tr><tr> +<td><a href="#FilePrinter._pages">_pages</a></td> +<td>Protected method to assemble the page range(s) arguments.</td> +</tr><tr> +<td><a href="#FilePrinter._printArguments">_printArguments</a></td> +<td>Protected method to assemble the command line arguments for the print command.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="FilePrinter.__init__" ID="FilePrinter.__init__"></a> +<h4>FilePrinter (Constructor)</h4> +<b>FilePrinter</b>(<i></i>) +<p> + Constructor +</p><a NAME="FilePrinter.__doCleanup" ID="FilePrinter.__doCleanup"></a> +<h4>FilePrinter.__doCleanup</h4> +<b>__doCleanup</b>(<i>deleteFile</i>) +<p> + Private method to perform some internal cleanup actions. +</p><dl> +<dt><i>deleteFile</i> (bool)</dt> +<dd> +flag indicating to delete the print file +</dd> +</dl><a NAME="FilePrinter.__processError" ID="FilePrinter.__processError"></a> +<h4>FilePrinter.__processError</h4> +<b>__processError</b>(<i>error</i>) +<p> + Private slot handling process errors. +</p><dl> +<dt><i>error</i> (QProcess.ProcessError)</dt> +<dd> +error value +</dd> +</dl><a NAME="FilePrinter.__processFinished" ID="FilePrinter.__processFinished"></a> +<h4>FilePrinter.__processFinished</h4> +<b>__processFinished</b>(<i>exitCode, exitStatus</i>) +<p> + Private slot handling the end of the process. +</p><dl> +<dt><i>exitCode</i> (int)</dt> +<dd> +exit code of the process +</dd><dt><i>exitStatus</i> (QProcess.ExitStatus)</dt> +<dd> +exit status of the process +</dd> +</dl><a NAME="FilePrinter._copies" ID="FilePrinter._copies"></a> +<h4>FilePrinter._copies</h4> +<b>_copies</b>(<i>printer, variant</i>) +<p> + Protected method to assemble the number of copies arguments. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd><dt><i>variant</i> (str)</dt> +<dd> +string identifying the print command variant +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled number of copies arguments +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl><a NAME="FilePrinter._cupsOptions" ID="FilePrinter._cupsOptions"></a> +<h4>FilePrinter._cupsOptions</h4> +<b>_cupsOptions</b>(<i>printer</i>) +<p> + Protected method to assemble the CUPS specific arguments. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled CUPS arguments +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl><a NAME="FilePrinter._deleteFile" ID="FilePrinter._deleteFile"></a> +<h4>FilePrinter._deleteFile</h4> +<b>_deleteFile</b>(<i>printer, fileDeletePolicy, variant</i>) +<p> + Protected method to assemble the jobname arguments. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd><dt><i>fileDeletePolicy</i> (int (0 or 1))</dt> +<dd> +policy determining who deletes the file to be + printed (application or system) +</dd><dt><i>variant</i> (str)</dt> +<dd> +string identifying the print command variant +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled jobname arguments +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl><a NAME="FilePrinter._destination" ID="FilePrinter._destination"></a> +<h4>FilePrinter._destination</h4> +<b>_destination</b>(<i>printer, variant</i>) +<p> + Protected method to assemble the printer destination arguments. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd><dt><i>variant</i> (str)</dt> +<dd> +string identifying the print command variant +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled printer destination arguments +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl><a NAME="FilePrinter._doPrintFile" ID="FilePrinter._doPrintFile"></a> +<h4>FilePrinter._doPrintFile</h4> +<b>_doPrintFile</b>(<i>printer, fileName, fileDeletePolicy, pageSelectPolicy, pageRange</i>) +<p> + Protected method to print a file +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd><dt><i>fileName</i> (str)</dt> +<dd> +name (path) of the file to be printed +</dd><dt><i>fileDeletePolicy</i> (int (0 or 1))</dt> +<dd> +policy determining who deletes the file to be + printed (application or system) +</dd><dt><i>pageSelectPolicy</i> (int (0 or 1))</dt> +<dd> +policy determining who selects the pages to be + printed (application or system) +</dd><dt><i>pageRange</i> (str)</dt> +<dd> +string determining the page range(s) to be printed, if + SystemSelectsPages was given for pageSelectPolicy and user chose + Selection in print dialog +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating successful print job submission +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl><a NAME="FilePrinter._jobname" ID="FilePrinter._jobname"></a> +<h4>FilePrinter._jobname</h4> +<b>_jobname</b>(<i>printer, variant</i>) +<p> + Protected method to assemble the jobname arguments. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd><dt><i>variant</i> (str)</dt> +<dd> +string identifying the print command variant +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled jobname arguments +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl><a NAME="FilePrinter._mediaPageSize" ID="FilePrinter._mediaPageSize"></a> +<h4>FilePrinter._mediaPageSize</h4> +<b>_mediaPageSize</b>(<i>printer</i>) +<p> + Protected method to get the page size argument. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +page size argument +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl><a NAME="FilePrinter._mediaPaperSource" ID="FilePrinter._mediaPaperSource"></a> +<h4>FilePrinter._mediaPaperSource</h4> +<b>_mediaPaperSource</b>(<i>printer</i>) +<p> + Protected method to get the paper source argument. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +paper source argument +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl><a NAME="FilePrinter._optionCollateCopies" ID="FilePrinter._optionCollateCopies"></a> +<h4>FilePrinter._optionCollateCopies</h4> +<b>_optionCollateCopies</b>(<i>printer</i>) +<p> + Protected method to assemble the collate copies arguments. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled collate copies arguments +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl><a NAME="FilePrinter._optionCupsProperties" ID="FilePrinter._optionCupsProperties"></a> +<h4>FilePrinter._optionCupsProperties</h4> +<b>_optionCupsProperties</b>(<i>printer</i>) +<p> + Protected method to assemble the CUPS properties arguments. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled CUPS properties arguments +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl><a NAME="FilePrinter._optionDoubleSidedPrinting" ID="FilePrinter._optionDoubleSidedPrinting"></a> +<h4>FilePrinter._optionDoubleSidedPrinting</h4> +<b>_optionDoubleSidedPrinting</b>(<i>printer</i>) +<p> + Protected method to assemble the double sided printing arguments. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled double sided printing arguments +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl><a NAME="FilePrinter._optionMedia" ID="FilePrinter._optionMedia"></a> +<h4>FilePrinter._optionMedia</h4> +<b>_optionMedia</b>(<i>printer</i>) +<p> + Protected method to assemble the print media arguments. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled print media arguments +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl><a NAME="FilePrinter._optionPageOrder" ID="FilePrinter._optionPageOrder"></a> +<h4>FilePrinter._optionPageOrder</h4> +<b>_optionPageOrder</b>(<i>printer</i>) +<p> + Protected method to assemble the page order arguments. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled page order arguments +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl><a NAME="FilePrinter._pages" ID="FilePrinter._pages"></a> +<h4>FilePrinter._pages</h4> +<b>_pages</b>(<i>printer, pageSelectPolicy, pageRange, useCupsOptions, variant</i>) +<p> + Protected method to assemble the page range(s) arguments. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd><dt><i>pageSelectPolicy</i> (int (0 or 1))</dt> +<dd> +policy determining who selects the pages to be + printed (application or system) +</dd><dt><i>pageRange</i> (str)</dt> +<dd> +string determining the page range(s) to be printed, if + SystemSelectsPages was given for pageSelectPolicy and user chose + Selection in print dialog +</dd><dt><i>useCupsOptions</i> (bool)</dt> +<dd> +flag indicating to assemble the arguments for + CUPS +</dd><dt><i>variant</i> (str)</dt> +<dd> +string identifying the print command variant +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled page range(s) arguments +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl><a NAME="FilePrinter._printArguments" ID="FilePrinter._printArguments"></a> +<h4>FilePrinter._printArguments</h4> +<b>_printArguments</b>(<i>printer, fileDeletePolicy, pageSelectPolicy, useCupsOptions, pageRange, variant</i>) +<p> + Protected method to assemble the command line arguments for the print + command. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd><dt><i>fileDeletePolicy</i> (int (0 or 1))</dt> +<dd> +policy determining who deletes the file to be + printed (application or system) +</dd><dt><i>pageSelectPolicy</i> (int (0 or 1))</dt> +<dd> +policy determining who selects the pages to be + printed (application or system) +</dd><dt><i>useCupsOptions</i> (bool)</dt> +<dd> +flag indicating to assemble the arguments for + CUPS +</dd><dt><i>pageRange</i> (str)</dt> +<dd> +string determining the page range(s) to be printed, if + SystemSelectsPages was given for pageSelectPolicy and user chose + Selection in print dialog +</dd><dt><i>variant</i> (str)</dt> +<dd> +string identifying the print command variant +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +assembled command line arguments for the print command +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="isCupsAvailable" ID="isCupsAvailable"></a> +<h2>isCupsAvailable</h2> +<b>isCupsAvailable</b>(<i></i>) +<p> + Static method to test the availability of CUPS. +</p><dl> +<dt>Returns:</dt> +<dd> +flag indicating the availability of CUPS +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="printFile" ID="printFile"></a> +<h2>printFile</h2> +<b>printFile</b>(<i>printer, fileName, fileDeletePolicy=FilePrinter.ApplicationDeletesFiles, pageSelectPolicy=FilePrinter.ApplicationSelectsPages, pageRange=""</i>) +<p> + Static method to print a file. +</p><p> + Note: Only CUPS and LPR on *nix systems is supported. +</p><dl> +<dt><i>printer</i> (QPrinter)</dt> +<dd> +reference to the printer to print to +</dd><dt><i>fileName</i> (str)</dt> +<dd> +name (path) of the file to be printed +</dd><dt><i>fileDeletePolicy</i> (int (0 or 1))</dt> +<dd> +policy determining who deletes the file to be + printed (application or system) +</dd><dt><i>pageSelectPolicy</i> (int (0 or 1))</dt> +<dd> +policy determining who selects the pages to be + printed (application or system) +</dd><dt><i>pageRange</i> (str)</dt> +<dd> +string determining the page range(s) to be printed, if + SystemSelectsPages was given for pageSelectPolicy and user chose + Selection in print dialog +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.WebBrowser.WebBrowserTabWidget.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/eric6.WebBrowser.WebBrowserTabWidget.html Fri Oct 14 23:02:38 2016 +0200 @@ -128,8 +128,11 @@ <td><a href="#WebBrowserTabWidget.__pathSelected">__pathSelected</a></td> <td>Private slot called when a URL is selected from the completer.</td> </tr><tr> -<td><a href="#WebBrowserTabWidget.__pdfGenerated">__pdfGenerated</a></td> -<td>Private slot handling the generated PDF data.</td> +<td><a href="#WebBrowserTabWidget.__pdfGeneratedForPrinting">__pdfGeneratedForPrinting</a></td> +<td>Private slot to print the generated PDF data.</td> +</tr><tr> +<td><a href="#WebBrowserTabWidget.__pdfGeneratedForSave">__pdfGeneratedForSave</a></td> +<td>Private slot to save the generated PDF data to a file.</td> </tr><tr> <td><a href="#WebBrowserTabWidget.__recentlyAudibleChanged">__recentlyAudibleChanged</a></td> <td>Private slot to react on the audible state of a page.</td> @@ -373,11 +376,21 @@ <dd> path to be shown (string) </dd> -</dl><a NAME="WebBrowserTabWidget.__pdfGenerated" ID="WebBrowserTabWidget.__pdfGenerated"></a> -<h4>WebBrowserTabWidget.__pdfGenerated</h4> -<b>__pdfGenerated</b>(<i>filePath, pdfData</i>) +</dl><a NAME="WebBrowserTabWidget.__pdfGeneratedForPrinting" ID="WebBrowserTabWidget.__pdfGeneratedForPrinting"></a> +<h4>WebBrowserTabWidget.__pdfGeneratedForPrinting</h4> +<b>__pdfGeneratedForPrinting</b>(<i>pdfData</i>) <p> - Private slot handling the generated PDF data. + Private slot to print the generated PDF data. +</p><dl> +<dt><i>pdfData</i> (QByteArray)</dt> +<dd> +generated PDF document +</dd> +</dl><a NAME="WebBrowserTabWidget.__pdfGeneratedForSave" ID="WebBrowserTabWidget.__pdfGeneratedForSave"></a> +<h4>WebBrowserTabWidget.__pdfGeneratedForSave</h4> +<b>__pdfGeneratedForSave</b>(<i>filePath, pdfData</i>) +<p> + Private slot to save the generated PDF data to a file. </p><dl> <dt><i>filePath</i> (str)</dt> <dd>
--- a/Documentation/Source/eric6.WebBrowser.WebBrowserWindow.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/eric6.WebBrowser.WebBrowserWindow.html Fri Oct 14 23:02:38 2016 +0200 @@ -67,7 +67,7 @@ E5MainWindow <h3>Class Attributes</h3> <table> -<tr><td>BrowserWindows</td></tr><tr><td>UseQtHelp</td></tr><tr><td>_adblockManager</td></tr><tr><td>_autoScroller</td></tr><tr><td>_bookmarksManager</td></tr><tr><td>_cookieJar</td></tr><tr><td>_downloadManager</td></tr><tr><td>_featurePermissionManager</td></tr><tr><td>_feedsManager</td></tr><tr><td>_flashCookieManager</td></tr><tr><td>_fromEric</td></tr><tr><td>_greaseMonkeyManager</td></tr><tr><td>_helpEngine</td></tr><tr><td>_historyManager</td></tr><tr><td>_imageSearchEngine</td></tr><tr><td>_isPrivate</td></tr><tr><td>_networkManager</td></tr><tr><td>_notification</td></tr><tr><td>_passwordManager</td></tr><tr><td>_personalInformationManager</td></tr><tr><td>_speedDial</td></tr><tr><td>_syncManager</td></tr><tr><td>_tabManager</td></tr><tr><td>_userAgentsManager</td></tr><tr><td>_webProfile</td></tr> +<tr><td>BrowserWindows</td></tr><tr><td>_adblockManager</td></tr><tr><td>_autoScroller</td></tr><tr><td>_bookmarksManager</td></tr><tr><td>_cookieJar</td></tr><tr><td>_downloadManager</td></tr><tr><td>_featurePermissionManager</td></tr><tr><td>_feedsManager</td></tr><tr><td>_flashCookieManager</td></tr><tr><td>_fromEric</td></tr><tr><td>_greaseMonkeyManager</td></tr><tr><td>_helpEngine</td></tr><tr><td>_historyManager</td></tr><tr><td>_imageSearchEngine</td></tr><tr><td>_isPrivate</td></tr><tr><td>_networkManager</td></tr><tr><td>_notification</td></tr><tr><td>_passwordManager</td></tr><tr><td>_personalInformationManager</td></tr><tr><td>_speedDial</td></tr><tr><td>_syncManager</td></tr><tr><td>_tabManager</td></tr><tr><td>_useQtHelp</td></tr><tr><td>_userAgentsManager</td></tr><tr><td>_webProfile</td></tr> </table> <h3>Class Methods</h3> <table> @@ -99,6 +99,9 @@ <td><a href="#WebBrowserWindow.flashCookieManager">flashCookieManager</a></td> <td>Class method to get a reference to the flash cookies manager.</td> </tr><tr> +<td><a href="#WebBrowserWindow.getQtHelpCollectionFileName">getQtHelpCollectionFileName</a></td> +<td>Class method to determine the name of the QtHelp collection file.</td> +</tr><tr> <td><a href="#WebBrowserWindow.greaseMonkeyManager">greaseMonkeyManager</a></td> <td>Class method to get a reference to the GreaseMonkey manager.</td> </tr><tr> @@ -696,6 +699,21 @@ <dd> FlashCookieManager </dd> +</dl><a NAME="WebBrowserWindow.getQtHelpCollectionFileName" ID="WebBrowserWindow.getQtHelpCollectionFileName"></a> +<h4>WebBrowserWindow.getQtHelpCollectionFileName (class method)</h4> +<b>getQtHelpCollectionFileName</b>(<i></i>) +<p> + Class method to determine the name of the QtHelp collection file. +</p><dl> +<dt>Returns:</dt> +<dd> +path of the QtHelp collection file +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> </dl><a NAME="WebBrowserWindow.greaseMonkeyManager" ID="WebBrowserWindow.greaseMonkeyManager"></a> <h4>WebBrowserWindow.greaseMonkeyManager (class method)</h4> <b>greaseMonkeyManager</b>(<i></i>)
--- a/Documentation/Source/eric6.install.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/eric6.install.html Fri Oct 14 23:02:38 2016 +0200 @@ -46,6 +46,9 @@ <td><a href="#compileUiFiles">compileUiFiles</a></td> <td>Compile the .ui files to Python sources.</td> </tr><tr> +<td><a href="#copyAppStreamFile">copyAppStreamFile</a></td> +<td>Modify an appstream file and write it to its destination.</td> +</tr><tr> <td><a href="#copyDesktopFile">copyDesktopFile</a></td> <td>Modify a desktop file and write it to its destination.</td> </tr><tr> @@ -154,6 +157,25 @@ </p> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> +<a NAME="copyAppStreamFile" ID="copyAppStreamFile"></a> +<h2>copyAppStreamFile</h2> +<b>copyAppStreamFile</b>(<i>src, dst, marker</i>) +<p> + Modify an appstream file and write it to its destination. +</p><dl> +<dt><i>src</i></dt> +<dd> +source file name (string) +</dd><dt><i>dst</i></dt> +<dd> +destination file name (string) +</dd><dt><i>marker</i></dt> +<dd> +marker to be used (string) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> <a NAME="copyDesktopFile" ID="copyDesktopFile"></a> <h2>copyDesktopFile</h2> <b>copyDesktopFile</b>(<i>src, dst, marker</i>)
--- a/Documentation/Source/index-eric6.Helpviewer.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/index-eric6.Helpviewer.html Fri Oct 14 23:02:38 2016 +0200 @@ -163,6 +163,9 @@ <td><a href="eric6.Helpviewer.QtHelpDocumentationDialog.html">QtHelpDocumentationDialog</a></td> <td>Module implementing a dialog to manage the QtHelp documentation database.</td> </tr><tr> +<td><a href="eric6.Helpviewer.QtHelpDocumentationSelectionDialog.html">QtHelpDocumentationSelectionDialog</a></td> +<td>Module implementing a dialog to select QtHelp documentation sets to be installed.</td> +</tr><tr> <td><a href="eric6.Helpviewer.QtHelpFiltersDialog.html">QtHelpFiltersDialog</a></td> <td>Module implementing a dialog to manage the QtHelp filters.</td> </tr><tr>
--- a/Documentation/Source/index-eric6.WebBrowser.QtHelp.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/index-eric6.WebBrowser.QtHelp.html Fri Oct 14 23:02:38 2016 +0200 @@ -46,6 +46,9 @@ <td><a href="eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html">QtHelpDocumentationDialog</a></td> <td>Module implementing a dialog to manage the QtHelp documentation database.</td> </tr><tr> +<td><a href="eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html">QtHelpDocumentationSelectionDialog</a></td> +<td>Module implementing a dialog to select QtHelp documentation sets to be installed.</td> +</tr><tr> <td><a href="eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.html">QtHelpFiltersDialog</a></td> <td>Module implementing a dialog to manage the QtHelp filters.</td> </tr>
--- a/Documentation/Source/index-eric6.WebBrowser.Tools.html Tue Oct 11 21:55:03 2016 +0200 +++ b/Documentation/Source/index-eric6.WebBrowser.Tools.html Fri Oct 14 23:02:38 2016 +0200 @@ -31,6 +31,9 @@ <td><a href="eric6.WebBrowser.Tools.DelayedFileWatcher.html">DelayedFileWatcher</a></td> <td>Module implementing a file system watcher with a delay.</td> </tr><tr> +<td><a href="eric6.WebBrowser.Tools.FilePrinter.html">FilePrinter</a></td> +<td>Module implementing an object for printing of files.</td> +</tr><tr> <td><a href="eric6.WebBrowser.Tools.PrintToPdfDialog.html">PrintToPdfDialog</a></td> <td>Module implementing a dialog to enter the data for printing a web page to PDF.</td> </tr><tr>
--- a/Helpviewer/HelpBrowserWV.py Tue Oct 11 21:55:03 2016 +0200 +++ b/Helpviewer/HelpBrowserWV.py Fri Oct 14 23:02:38 2016 +0200 @@ -14,6 +14,8 @@ except NameError: pass +import os + from PyQt5.QtCore import pyqtSlot, pyqtSignal, QObject, QT_TRANSLATE_NOOP, \ QUrl, QBuffer, QIODevice, QFileInfo, Qt, QTimer, QEvent, \ QRect, QFile, QPoint, QByteArray, qVersion @@ -38,6 +40,7 @@ import Preferences import UI.PixmapCache import Globals +import Utilities try: from PyQt5.QtNetwork import QSslCertificate @@ -901,7 +904,14 @@ return if not name.scheme(): - name.setUrl(Preferences.getHelp("DefaultScheme") + name.toString()) + if not os.path.exists(name.toString()): + name.setScheme(Preferences.getWebBrowser("DefaultScheme")) + else: + if Utilities.isWindowsPlatform(): + name.setUrl("file:///" + Utilities.fromNativeSeparators( + name.toString())) + else: + name.setUrl("file://" + name.toString()) if len(name.scheme()) == 1 or \ name.scheme() == "file":
--- a/Helpviewer/HelpWindow.py Tue Oct 11 21:55:03 2016 +0200 +++ b/Helpviewer/HelpWindow.py Fri Oct 14 23:02:38 2016 +0200 @@ -72,7 +72,7 @@ helpwindows = [] _fromEric = False - useQtHelp = QTHELP_AVAILABLE + _useQtHelp = QTHELP_AVAILABLE _networkAccessManager = None _cookieJar = None @@ -119,6 +119,7 @@ self.mHistory = [] self.__lastConfigurationPageName = "" + self.__lastActiveWindow = None self.__eventMouseButtons = Qt.NoButton self.__eventKeyboardModifiers = Qt.NoModifier @@ -145,10 +146,10 @@ from E5Network.E5SslUtilities import initSSL initSSL() - if self.useQtHelp: - self.__helpEngine = \ - QHelpEngine(os.path.join(Utilities.getConfigDir(), - "browser", "eric6help.qhc"), self) + if HelpWindow._useQtHelp: + self.__helpEngine = QHelpEngine( + HelpWindow.getQtHelpCollectionFileName(), + self) self.__removeOldDocumentation() self.__helpEngine.warning.connect(self.__warning) else: @@ -183,7 +184,7 @@ self.setCentralWidget(centralWidget) self.findDlg.hide() - if self.useQtHelp: + if HelpWindow._useQtHelp: # setup the TOC widget self.__tocWindow = HelpTocWidget(self.__helpEngine, self) self.__tocDock = QDockWidget(self.tr("Contents"), self) @@ -259,7 +260,7 @@ # setup connections self.__activating = False - if self.useQtHelp: + if HelpWindow._useQtHelp: # TOC window self.__tocWindow.linkActivated.connect(self.__linkActivated) self.__tocWindow.escapePressed.connect( @@ -293,12 +294,11 @@ self.flashCookieManager() - if self.useQtHelp: + if HelpWindow._useQtHelp: QTimer.singleShot(0, self.__lookForNewDocumentation) if self.__searchWord is not None: QTimer.singleShot(0, self.__searchForWord) - self.__lastActiveWindow = None e5App().focusChanged.connect(self.__appFocusChanged) QTimer.singleShot(0, syncMgr.loadSettings) @@ -1240,7 +1240,7 @@ self.__showFeaturePermissionDialog) self.__actions.append(self.featurePermissionAct) - if self.useQtHelp or self.initShortcutsOnly: + if HelpWindow._useQtHelp or self.initShortcutsOnly: self.syncTocAct = E5Action( self.tr('Sync with Table of Contents'), UI.PixmapCache.getIcon("syncToc.png"), @@ -1657,7 +1657,7 @@ menu.addSeparator() menu.addAction(self.stopAct) menu.addAction(self.reloadAct) - if self.useQtHelp: + if HelpWindow._useQtHelp: menu.addSeparator() menu.addAction(self.syncTocAct) @@ -1721,7 +1721,7 @@ menu.addAction(self.userAgentManagerAct) menu.addSeparator() - if self.useQtHelp: + if HelpWindow._useQtHelp: menu.addAction(self.manageQtHelpDocsAct) menu.addAction(self.manageQtHelpFiltersAct) menu.addAction(self.reindexDocumentationAct) @@ -1741,7 +1741,7 @@ menu = mb.addMenu(self.tr("&Window")) menu.setTearOffEnabled(True) menu.addAction(self.showDownloadManagerAct) - if self.useQtHelp: + if HelpWindow._useQtHelp: menu.addSeparator() menu.addAction(self.showTocAct) menu.addAction(self.showIndexAct) @@ -1807,7 +1807,7 @@ findtb.addAction(self.findNextAct) findtb.addAction(self.findPrevAct) - if self.useQtHelp: + if HelpWindow._useQtHelp: filtertb = self.addToolBar(self.tr("Filter")) filtertb.setObjectName("FilterToolBar") self.filterCombo = QComboBox() @@ -2262,7 +2262,7 @@ self.searchEdit.openSearchManager().close() - if self.useQtHelp: + if HelpWindow._useQtHelp: self.__searchEngine.cancelIndexing() self.__searchEngine.cancelSearching() @@ -2587,9 +2587,9 @@ @param use flag indicating usage (boolean) """ if use: - cls.useQtHelp = use and QTHELP_AVAILABLE + cls._useQtHelp = use and QTHELP_AVAILABLE else: - cls.useQtHelp = False + cls._useQtHelp = False @classmethod def helpEngine(cls): @@ -2598,15 +2598,27 @@ @return reference to the help engine (QHelpEngine) """ - if cls.useQtHelp: + if cls._useQtHelp: if cls._helpEngine is None: - cls._helpEngine = \ - QHelpEngine(os.path.join(Utilities.getConfigDir(), - "browser", "eric6help.qhc")) + cls._helpEngine = QHelpEngine( + HelpWindow.getQtHelpCollectionFileName()) return cls._helpEngine else: return None - + + @classmethod + def getQtHelpCollectionFileName(cls): + """ + Class method to determine the name of the QtHelp collection file. + + @return path of the QtHelp collection file + @rtype str + """ + qthelpDir = os.path.join(Utilities.getConfigDir(), "qthelp") + if not os.path.exists(qthelpDir): + os.makedirs(qthelpDir) + return os.path.join(qthelpDir, "eric6help.qhc") + @classmethod def networkAccessManager(cls): """ @@ -2680,7 +2692,7 @@ """ Private slot to synchronize the TOC with the currently shown page. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: QApplication.setOverrideCursor(Qt.WaitCursor) url = self.currentBrowser().source() self.__showTocWindow() @@ -2693,42 +2705,42 @@ """ Private method to show the table of contents window. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: self.__activateDock(self.__tocWindow) def __hideTocWindow(self): """ Private method to hide the table of contents window. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: self.__tocDock.hide() def __showIndexWindow(self): """ Private method to show the index window. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: self.__activateDock(self.__indexWindow) def __hideIndexWindow(self): """ Private method to hide the index window. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: self.__indexDock.hide() def __showSearchWindow(self): """ Private method to show the search window. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: self.__activateDock(self.__searchWindow) def __hideSearchWindow(self): """ Private method to hide the search window. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: self.__searchDock.hide() def __activateDock(self, widget): @@ -2745,7 +2757,7 @@ """ Private slot to setup the filter combo box. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: curFilter = self.filterCombo.currentText() if not curFilter: curFilter = self.__helpEngine.currentFilter() @@ -2769,7 +2781,7 @@ """ Private slot to manage the QtHelp documentation database. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: from .QtHelpDocumentationDialog import QtHelpDocumentationDialog dlg = QtHelpDocumentationDialog(self.__helpEngine, self) dlg.exec_() @@ -2790,7 +2802,7 @@ """ Private slot to manage the QtHelp filters. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: from .QtHelpFiltersDialog import QtHelpFiltersDialog dlg = QtHelpFiltersDialog(self.__helpEngine, self) dlg.exec_() @@ -2799,7 +2811,7 @@ """ Private slot to handle the start of the indexing process. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: self.__indexing = True if self.__indexingProgress is None: self.__indexingProgress = QWidget() @@ -2826,7 +2838,7 @@ """ Private slot to handle the start of the indexing process. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: self.statusBar().removeWidget(self.__indexingProgress) self.__indexingProgress = None self.__indexing = False @@ -2837,7 +2849,7 @@ """ Private slot to search for a word. """ - if self.useQtHelp and not self.__indexing and \ + if HelpWindow._useQtHelp and not self.__indexing and \ self.__searchWord is not None: self.__searchDock.show() self.__searchDock.raise_() @@ -2852,7 +2864,7 @@ @param word word to search for (string) """ - if self.useQtHelp: + if HelpWindow._useQtHelp: self.__searchWord = word self.__searchForWord() @@ -2870,7 +2882,7 @@ Private slot to look for new documentation to be loaded into the help database. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: from .HelpDocsInstaller import HelpDocsInstaller self.__helpInstaller = HelpDocsInstaller( self.__helpEngine.collectionFile()) @@ -2900,7 +2912,7 @@ @param installed flag indicating that documents were installed (boolean) """ - if self.useQtHelp: + if HelpWindow._useQtHelp: if installed: self.__helpEngine.setupData() self.statusBar().clearMessage() @@ -2909,7 +2921,7 @@ """ Private slot to initialize the documentation database. """ - if self.useQtHelp: + if HelpWindow._useQtHelp: if not self.__helpEngine.setupData(): return
--- a/Helpviewer/History/HistoryManager.py Tue Oct 11 21:55:03 2016 +0200 +++ b/Helpviewer/History/HistoryManager.py Fri Oct 14 23:02:38 2016 +0200 @@ -505,6 +505,7 @@ """<p>Error moving new history file over old one """ """(<b>{0}</b>).<br/>Reason: {1}</p>""") .format(historyFile.fileName(), f.errorString())) + f.remove() # get rid of the temporary file self.historySaved.emit() try: self.__lastSavedUrl = self.__history[0].url
--- a/Helpviewer/QtHelpDocumentationDialog.py Tue Oct 11 21:55:03 2016 +0200 +++ b/Helpviewer/QtHelpDocumentationDialog.py Fri Oct 14 23:02:38 2016 +0200 @@ -14,6 +14,7 @@ from PyQt5.QtHelp import QHelpEngineCore from E5Gui import E5MessageBox, E5FileDialog +from E5Gui.E5Application import e5App from .Ui_QtHelpDocumentationDialog import Ui_QtHelpDocumentationDialog @@ -43,6 +44,15 @@ self.__registeredDocs = [] self.__unregisteredDocs = [] self.__tabsToClose = [] + + try: + self.__pluginHelpDocuments = \ + e5App().getObject("PluginManager").getPluginQtHelpFiles() + except KeyError: + from PluginManager.PluginManager import PluginManager + self.__pluginHelpDocuments = \ + PluginManager(self).getPluginQtHelpFiles() + self.addPluginButton.setEnabled(bool(self.__pluginHelpDocuments)) @pyqtSlot() def on_documentsList_itemSelectionChanged(self): @@ -55,7 +65,7 @@ @pyqtSlot() def on_addButton_clicked(self): """ - Private slot to add documents to the help database. + Private slot to add QtHelp documents to the help database. """ fileNames = E5FileDialog.getOpenFileNames( self, @@ -65,6 +75,32 @@ if not fileNames: return + self.__registerDocumentations(fileNames) + + @pyqtSlot() + def on_addPluginButton_clicked(self): + """ + Private slot to add QtHelp documents provided by plug-ins to + the help database. + """ + from .QtHelpDocumentationSelectionDialog import \ + QtHelpDocumentationSelectionDialog + dlg = QtHelpDocumentationSelectionDialog(self.__pluginHelpDocuments, + self) + if dlg.exec_() == QDialog.Accepted: + documents = dlg.getData() + if not documents: + return + + self.__registerDocumentations(documents) + + def __registerDocumentations(self, fileNames): + """ + Private method to register a given list of documentations. + + @param fileNames list of documentation files to be registered + @type list of str + """ for fileName in fileNames: ns = QHelpEngineCore.namespaceName(fileName) if not ns:
--- a/Helpviewer/QtHelpDocumentationDialog.ui Tue Oct 11 21:55:03 2016 +0200 +++ b/Helpviewer/QtHelpDocumentationDialog.ui Fri Oct 14 23:02:38 2016 +0200 @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>425</width> - <height>391</height> + <width>500</width> + <height>450</height> </rect> </property> <property name="windowTitle"> @@ -26,7 +26,20 @@ </item> <item> <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0" rowspan="3"> + <item row="3" column="1"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>98</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="0" rowspan="4"> <widget class="QListWidget" name="documentsList"> <property name="alternatingRowColors"> <bool>true</bool> @@ -49,7 +62,7 @@ </property> </widget> </item> - <item row="1" column="1"> + <item row="2" column="1"> <widget class="QPushButton" name="removeButton"> <property name="toolTip"> <string>Press to remove the selected documents from the database</string> @@ -59,18 +72,15 @@ </property> </widget> </item> - <item row="2" column="1"> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> + <item row="1" column="1"> + <widget class="QPushButton" name="addPluginButton"> + <property name="toolTip"> + <string>Press to select QtHelp documents provided by a plug-in to add to the database</string> </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>98</height> - </size> + <property name="text"> + <string>Add from Plug-ins...</string> </property> - </spacer> + </widget> </item> </layout> </item> @@ -89,8 +99,8 @@ <tabstops> <tabstop>documentsList</tabstop> <tabstop>addButton</tabstop> + <tabstop>addPluginButton</tabstop> <tabstop>removeButton</tabstop> - <tabstop>buttonBox</tabstop> </tabstops> <resources/> <connections>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/QtHelpDocumentationSelectionDialog.py Fri Oct 14 23:02:38 2016 +0200 @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2016 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to select QtHelp documentation sets to be +installed. +""" + +from __future__ import unicode_literals + +import os + +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QDialog, QTreeWidgetItem + +from .Ui_QtHelpDocumentationSelectionDialog import \ + Ui_QtHelpDocumentationSelectionDialog + + +class QtHelpDocumentationSelectionDialog( + QDialog, Ui_QtHelpDocumentationSelectionDialog): + """ + Class implementing a dialog to select QtHelp documentation sets to be + installed. + """ + def __init__(self, helpDocuments, parent=None): + """ + Constructor + + @param helpDocuments dictionary containing the lists of help documents + to be shown + @type dict of lists of str + @param parent reference to the parent widget + @type QWidget + """ + super(QtHelpDocumentationSelectionDialog, self).__init__(parent) + self.setupUi(self) + + for category in helpDocuments: + parentItem = QTreeWidgetItem(self.documentationList, [category]) + for document in helpDocuments[category]: + item = QTreeWidgetItem(parentItem, + [os.path.basename(document)]) + item.setData(0, Qt.UserRole, document) + self.documentationList.sortItems(0, Qt.AscendingOrder) + + def getData(self): + """ + Public method to retrieve the selected help documents. + + @return list of QtHelp documentation sets to be installed + @rtype list of str + """ + documents = [] + for item in self.documentationList.selectedItems(): + fileName = item.data(0, Qt.UserRole) + if fileName: + documents.append(fileName) + return documents
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/QtHelpDocumentationSelectionDialog.ui Fri Oct 14 23:02:38 2016 +0200 @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>QtHelpDocumentationSelectionDialog</class> + <widget class="QDialog" name="QtHelpDocumentationSelectionDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>450</width> + <height>500</height> + </rect> + </property> + <property name="windowTitle"> + <string>QtHelp Documentations</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Select the documentation files to be installed:</string> + </property> + </widget> + </item> + <item> + <widget class="QTreeWidget" name="documentationList"> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::ExtendedSelection</enum> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <property name="allColumnsShowFocus"> + <bool>true</bool> + </property> + <attribute name="headerVisible"> + <bool>false</bool> + </attribute> + <column> + <property name="text"> + <string notr="true">1</string> + </property> + </column> + </widget> + </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> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>QtHelpDocumentationSelectionDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>QtHelpDocumentationSelectionDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- a/PluginManager/PluginManager.py Tue Oct 11 21:55:03 2016 +0200 +++ b/PluginManager/PluginManager.py Fri Oct 14 23:02:38 2016 +0200 @@ -900,6 +900,23 @@ return apis + def getPluginQtHelpFiles(self): + """ + Public method to get the list of QtHelp documentation files provided + by a plug-in. + + @return dictionary with documentation type as key and list of files + as value + @rtype dict (key: str, value: list of str) + """ + helpFiles = {} + for module in list(self.__activeModules.values()) + \ + list(self.__onDemandActiveModules.values()): + if hasattr(module, "helpFiles"): + helpFiles.update(module.helpFiles()) + + return helpFiles + def getPluginExeDisplayData(self): """ Public method to get data to display information about a plugins
--- a/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Tue Oct 11 21:55:03 2016 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Fri Oct 14 23:02:38 2016 +0200 @@ -780,6 +780,7 @@ self.hgBundleAct = E5Action( self.tr('Create changegroup'), + UI.PixmapCache.getIcon("vcsCreateChangegroup.png"), self.tr('Create changegroup...'), 0, 0, self, 'mercurial_bundle') self.hgBundleAct.setStatusTip(self.tr( @@ -795,6 +796,7 @@ self.hgPreviewBundleAct = E5Action( self.tr('Preview changegroup'), + UI.PixmapCache.getIcon("vcsPreviewChangegroup.png"), self.tr('Preview changegroup...'), 0, 0, self, 'mercurial_preview_bundle') self.hgPreviewBundleAct.setStatusTip(self.tr( @@ -810,6 +812,7 @@ self.hgUnbundleAct = E5Action( self.tr('Apply changegroups'), + UI.PixmapCache.getIcon("vcsApplyChangegroup.png"), self.tr('Apply changegroups...'), 0, 0, self, 'mercurial_unbundle') self.hgUnbundleAct.setStatusTip(self.tr( @@ -936,6 +939,7 @@ self.hgImportAct = E5Action( self.tr('Import Patch'), + UI.PixmapCache.getIcon("vcsImportPatch.png"), self.tr('Import Patch...'), 0, 0, self, 'mercurial_import') self.hgImportAct.setStatusTip(self.tr( @@ -951,6 +955,7 @@ self.hgExportAct = E5Action( self.tr('Export Patches'), + UI.PixmapCache.getIcon("vcsExportPatch.png"), self.tr('Export Patches...'), 0, 0, self, 'mercurial_export') self.hgExportAct.setStatusTip(self.tr( @@ -1496,6 +1501,11 @@ toolbarManager.addAction(self.hgBookmarkMoveAct, title) toolbarManager.addAction(self.hgBookmarkPullAct, title) toolbarManager.addAction(self.hgBookmarkPushAct, title) + toolbarManager.addAction(self.hgImportAct, title) + toolbarManager.addAction(self.hgExportAct, title) + toolbarManager.addAction(self.hgBundleAct, title) + toolbarManager.addAction(self.hgPreviewBundleAct, title) + toolbarManager.addAction(self.hgUnbundleAct, title) self.__toolbar.setEnabled(False) self.__toolbar.setVisible(False)
--- a/Preferences/__init__.py Tue Oct 11 21:55:03 2016 +0200 +++ b/Preferences/__init__.py Fri Oct 14 23:02:38 2016 +0200 @@ -1099,7 +1099,7 @@ if QWebEngineSettings is None: return - webEngineSettings = QWebEngineSettings.globalSettings() + webEngineSettings = QWebEngineSettings.defaultSettings() cls.webBrowserDefaults.update({ "StandardFontFamily": webEngineSettings.fontFamily( QWebEngineSettings.StandardFont),
--- a/Project/Project.py Tue Oct 11 21:55:03 2016 +0200 +++ b/Project/Project.py Fri Oct 14 23:02:38 2016 +0200 @@ -9,7 +9,7 @@ from __future__ import unicode_literals try: - str = unicode + str = unicode # __IGNORE_EXCEPTION__ except NameError: pass @@ -4748,7 +4748,7 @@ # write the file try: - if self.pdata["EOL"][0] == 0: + if self.pdata["EOL"] == 0: newline = None else: newline = self.getEolString() @@ -4776,8 +4776,27 @@ @param snapshot flag indicating a snapshot archive (boolean) """ - pkglist = os.path.join(self.ppath, "PKGLIST") - if not os.path.exists(pkglist): + pkglists = [os.path.basename(f) for f in + glob.glob(os.path.join(self.ppath, "PKGLIST*"))] + if len(pkglists) == 1: + pkglist = os.path.join(self.ppath, pkglists[0]) + elif len(pkglists) > 1: + pkglist, ok = QInputDialog.getItem( + None, + self.tr("Create Plugin Archive"), + self.tr("Select a package list file:"), + sorted(pkglists), + 0, False) + if not ok or not pkglist: + E5MessageBox.critical( + self.ui, + self.tr("Create Plugin Archive"), + self.tr("""<p>No package list file selected. """ + """Aborting...</p>""")) + return + else: + pkglist = os.path.join(self.ppath, pkglist) + else: E5MessageBox.critical( self.ui, self.tr("Create Plugin Archive"), @@ -4798,7 +4817,6 @@ pkglistFile = open(pkglist, "r", encoding="utf-8") names = pkglistFile.read() pkglistFile.close() - names = sorted(names.splitlines()) except IOError as why: E5MessageBox.critical( self.ui, @@ -4808,8 +4826,24 @@ """<p>Reason: {0}</p>""").format(str(why))) return - archive = os.path.join( - self.ppath, self.pdata["MAINSCRIPT"].replace(".py", ".zip")) + lines = names.splitlines() + archiveName = "" + names = [] + for line in lines: + if line.startswith(";"): + # it's a comment possibly containing a directive + # supported directives are: + # - archive_name= defines the name of the archive + if line[1:].strip().startswith("archive_name="): + archiveName = line[1:].split("=")[1] + else: + names.append(line) + names = sorted(names) + if archiveName: + archive = os.path.join(self.ppath, archiveName) + else: + archive = os.path.join( + self.ppath, self.pdata["MAINSCRIPT"].replace(".py", ".zip")) try: archiveFile = zipfile.ZipFile(archive, "w") except IOError as why:
--- a/QScintilla/Shell.py Tue Oct 11 21:55:03 2016 +0200 +++ b/QScintilla/Shell.py Fri Oct 14 23:02:38 2016 +0200 @@ -1451,7 +1451,7 @@ if not cmd: cmd = '' else: - cmd = cmd.replace(self.prompt, "") + cmd = cmd[len(self.prompt):] self.dbs.remoteRawInput(cmd) def __useHistory(self):
--- a/WebBrowser/AdBlock/AdBlockRule.py Tue Oct 11 21:55:03 2016 +0200 +++ b/WebBrowser/AdBlock/AdBlockRule.py Fri Oct 14 23:02:38 2016 +0200 @@ -11,7 +11,7 @@ import re -from PyQt5.QtCore import Qt, QRegExp +from PyQt5.QtCore import qVersion, Qt, QRegExp from PyQt5.QtWebEngineCore import QWebEngineUrlRequestInfo @@ -532,6 +532,10 @@ match = ( req.resourceType() == QWebEngineUrlRequestInfo.ResourceTypeSubResource) + if qVersion() >= "5.7.0": + match = match or ( + req.resourceType() == + QWebEngineUrlRequestInfo.ResourceTypePluginResource) if self.__objectSubrequestException: return not match
--- a/WebBrowser/Download/DownloadItem.py Tue Oct 11 21:55:03 2016 +0200 +++ b/WebBrowser/Download/DownloadItem.py Fri Oct 14 23:02:38 2016 +0200 @@ -9,8 +9,10 @@ from __future__ import unicode_literals -from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QTime, QFileInfo, QUrl, \ - PYQT_VERSION_STR +import os + +from PyQt5.QtCore import pyqtSlot, pyqtSignal, qVersion, Qt, QTime, QUrl, \ + QStandardPaths, QFileInfo from PyQt5.QtGui import QPalette, QDesktopServices from PyQt5.QtWidgets import QWidget, QStyle, QDialog from PyQt5.QtWebEngineWidgets import QWebEngineDownloadItem @@ -24,6 +26,7 @@ import UI.PixmapCache import Utilities.MimeTypes +import Globals class DownloadItem(QWidget, Ui_DownloadItem): @@ -121,6 +124,15 @@ if self.__gettingFileName: return + if qVersion() >= "5.7.0": + savePage = self.__downloadItem.savePageFormat() != \ + QWebEngineDownloadItem.UnknownSaveFormat + else: + savePage = self.__downloadItem.path().lower().endswith( + (".mhtml", ".mht")) + + documentLocation = QStandardPaths.writableLocation( + QStandardPaths.DocumentsLocation) downloadDirectory = WebBrowserWindow\ .downloadManager().downloadDirectory() @@ -131,13 +143,14 @@ ask = False else: defaultFileName, originalFileName = \ - self.__saveFileName(downloadDirectory) + self.__saveFileName( + documentLocation if savePage else downloadDirectory) fileName = defaultFileName self.__originalFileName = originalFileName ask = True self.__autoOpen = False - if not originalFileName.lower().endswith(".mhtml"): + if not savePage: from .DownloadAskActionDialog import DownloadAskActionDialog url = self.__downloadItem.url() mimetype = Utilities.MimeTypes.mimeType(originalFileName) @@ -168,36 +181,72 @@ return self.__autoOpen = dlg.getAction() == "open" + + tempLocation = QStandardPaths.writableLocation( + QStandardPaths.TempLocation) + fileName = tempLocation + '/' + \ + QFileInfo(fileName).completeBaseName() + + if ask and not self.__autoOpen: + self.__gettingFileName = True + fileName = E5FileDialog.getSaveFileName( + None, + self.tr("Save File"), + defaultFileName, + "") + self.__gettingFileName = False else: self.__autoOpen = False - - if PYQT_VERSION_STR >= "5.0.0": - from PyQt5.QtCore import QStandardPaths - tempLocation = QStandardPaths.standardLocations( - QStandardPaths.TempLocation)[0] - else: - from PyQt5.QtGui import QDesktopServices - tempLocation = QDesktopServices.storageLocation( - QDesktopServices.TempLocation) - fileName = tempLocation + '/' + \ - QFileInfo(fileName).completeBaseName() - - if ask and not self.__autoOpen: + + filterList = [ + self.tr("Web Archive (*.mhtml *.mht)"), + self.tr("HTML File (*.html *.htm)"), + self.tr("HTML File with all resources (*.html *.htm)"), + ] + extensionsList = [ + # tuple of extensions for *nix and Windows + # keep in sync with filters list + (".mhtml", ".mht"), + (".html", ".htm"), + (".html", ".htm"), + ] self.__gettingFileName = True - fileName = E5FileDialog.getSaveFileName( + fileName, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( None, - self.tr("Save File"), + self.tr("Save Web Page"), defaultFileName, - "") + ";;".join(filterList), + None) self.__gettingFileName = False - if not fileName: - self.progressBar.setVisible(False) - self.on_stopButton_clicked() - self.filenameLabel.setText( - self.tr("Download canceled: {0}") - .format(QFileInfo(defaultFileName).fileName())) - self.__canceledFileSelect = True - return + if fileName: + index = filterList.index(selectedFilter) + if index == 0: + self.__downloadItem.setSavePageFormat( + QWebEngineDownloadItem.MimeHtmlSaveFormat) + elif index == 1: + self.__downloadItem.setSavePageFormat( + QWebEngineDownloadItem.SingleHtmlSaveFormat) + else: + self.__downloadItem.setSavePageFormat( + QWebEngineDownloadItem.CompleteHtmlSaveFormat) + extension = os.path.splitext(fileName)[1] + if not extension: + # add the platform specific default extension + if Globals.isWindowsPlatform(): + extensionsIndex = 1 + else: + extensionsIndex = 0 + extensions = extensionsList[index] + fileName += extensions[extensionsIndex] + + if not fileName: + self.progressBar.setVisible(False) + self.on_stopButton_clicked() + self.filenameLabel.setText( + self.tr("Download canceled: {0}") + .format(QFileInfo(defaultFileName).fileName())) + self.__canceledFileSelect = True + return fileInfo = QFileInfo(fileName) WebBrowserWindow.downloadManager()\ @@ -235,7 +284,7 @@ if endName: origName += '.' + endName - name = directory + baseName + name = os.path.join(directory, baseName) if endName: name += '.' + endName return name, origName
--- a/WebBrowser/History/HistoryManager.py Tue Oct 11 21:55:03 2016 +0200 +++ b/WebBrowser/History/HistoryManager.py Fri Oct 14 23:02:38 2016 +0200 @@ -483,6 +483,7 @@ """<p>Error moving new history file over old one """ """(<b>{0}</b>).<br/>Reason: {1}</p>""") .format(historyFile.fileName(), f.errorString())) + f.remove() # get rid of the temporary file self.historySaved.emit() try: self.__lastSavedUrl = self.__history[0].url
--- a/WebBrowser/Network/SslErrorExceptionsDialog.py Tue Oct 11 21:55:03 2016 +0200 +++ b/WebBrowser/Network/SslErrorExceptionsDialog.py Fri Oct 14 23:02:38 2016 +0200 @@ -69,6 +69,13 @@ self.tr("The certificate claimed DNS names that are in" " violation of name constraints."), } + try: + self.__errorDescriptions[ + QWebEngineCertificateError.CertificateValidityTooLong] = \ + self.tr("The certificate has a validity period that is too long.") + except AttributeError: + # the value was added in Qt 5.7 + pass for host, errors in errorsDict.items(): itm = QTreeWidgetItem(self.errorsTree, [host])
--- a/WebBrowser/QtHelp/QtHelpDocumentationDialog.py Tue Oct 11 21:55:03 2016 +0200 +++ b/WebBrowser/QtHelp/QtHelpDocumentationDialog.py Fri Oct 14 23:02:38 2016 +0200 @@ -14,6 +14,7 @@ from PyQt5.QtHelp import QHelpEngineCore from E5Gui import E5MessageBox, E5FileDialog +from E5Gui.E5Application import e5App from .Ui_QtHelpDocumentationDialog import Ui_QtHelpDocumentationDialog @@ -43,6 +44,15 @@ self.__registeredDocs = [] self.__unregisteredDocs = [] self.__tabsToClose = [] + + try: + self.__pluginHelpDocuments = \ + e5App().getObject("PluginManager").getPluginQtHelpFiles() + except KeyError: + from PluginManager.PluginManager import PluginManager + self.__pluginHelpDocuments = \ + PluginManager(self).getPluginQtHelpFiles() + self.addPluginButton.setEnabled(bool(self.__pluginHelpDocuments)) @pyqtSlot() def on_documentsList_itemSelectionChanged(self): @@ -55,7 +65,7 @@ @pyqtSlot() def on_addButton_clicked(self): """ - Private slot to add documents to the help database. + Private slot to add QtHelp documents to the help database. """ fileNames = E5FileDialog.getOpenFileNames( self, @@ -65,6 +75,32 @@ if not fileNames: return + self.__registerDocumentations(fileNames) + + @pyqtSlot() + def on_addPluginButton_clicked(self): + """ + Private slot to add QtHelp documents provided by plug-ins to + the help database. + """ + from .QtHelpDocumentationSelectionDialog import \ + QtHelpDocumentationSelectionDialog + dlg = QtHelpDocumentationSelectionDialog(self.__pluginHelpDocuments, + self) + if dlg.exec_() == QDialog.Accepted: + documents = dlg.getData() + if not documents: + return + + self.__registerDocumentations(documents) + + def __registerDocumentations(self, fileNames): + """ + Private method to register a given list of documentations. + + @param fileNames list of documentation files to be registered + @type list of str + """ for fileName in fileNames: ns = QHelpEngineCore.namespaceName(fileName) if not ns:
--- a/WebBrowser/QtHelp/QtHelpDocumentationDialog.ui Tue Oct 11 21:55:03 2016 +0200 +++ b/WebBrowser/QtHelp/QtHelpDocumentationDialog.ui Fri Oct 14 23:02:38 2016 +0200 @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>425</width> - <height>391</height> + <width>500</width> + <height>450</height> </rect> </property> <property name="windowTitle"> @@ -26,7 +26,7 @@ </item> <item> <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0" rowspan="3"> + <item row="0" column="0" rowspan="4"> <widget class="QListWidget" name="documentsList"> <property name="alternatingRowColors"> <bool>true</bool> @@ -49,7 +49,7 @@ </property> </widget> </item> - <item row="1" column="1"> + <item row="2" column="1"> <widget class="QPushButton" name="removeButton"> <property name="toolTip"> <string>Press to remove the selected documents from the database</string> @@ -59,7 +59,7 @@ </property> </widget> </item> - <item row="2" column="1"> + <item row="3" column="1"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -72,6 +72,16 @@ </property> </spacer> </item> + <item row="1" column="1"> + <widget class="QPushButton" name="addPluginButton"> + <property name="toolTip"> + <string>Press to select QtHelp documents provided by a plug-in to add to the database</string> + </property> + <property name="text"> + <string>Add from Plug-ins...</string> + </property> + </widget> + </item> </layout> </item> <item> @@ -89,8 +99,8 @@ <tabstops> <tabstop>documentsList</tabstop> <tabstop>addButton</tabstop> + <tabstop>addPluginButton</tabstop> <tabstop>removeButton</tabstop> - <tabstop>buttonBox</tabstop> </tabstops> <resources/> <connections>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebBrowser/QtHelp/QtHelpDocumentationSelectionDialog.py Fri Oct 14 23:02:38 2016 +0200 @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2016 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to select QtHelp documentation sets to be +installed. +""" + +from __future__ import unicode_literals + +import os + +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QDialog, QTreeWidgetItem + +from .Ui_QtHelpDocumentationSelectionDialog import \ + Ui_QtHelpDocumentationSelectionDialog + + +class QtHelpDocumentationSelectionDialog( + QDialog, Ui_QtHelpDocumentationSelectionDialog): + """ + Class implementing a dialog to select QtHelp documentation sets to be + installed. + """ + def __init__(self, helpDocuments, parent=None): + """ + Constructor + + @param helpDocuments dictionary containing the lists of help documents + to be shown + @type dict of lists of str + @param parent reference to the parent widget + @type QWidget + """ + super(QtHelpDocumentationSelectionDialog, self).__init__(parent) + self.setupUi(self) + + for category in helpDocuments: + parentItem = QTreeWidgetItem(self.documentationList, [category]) + for document in helpDocuments[category]: + item = QTreeWidgetItem(parentItem, + [os.path.basename(document)]) + item.setData(0, Qt.UserRole, document) + self.documentationList.sortItems(0, Qt.AscendingOrder) + + def getData(self): + """ + Public method to retrieve the selected help documents. + + @return list of QtHelp documentation sets to be installed + @rtype list of str + """ + documents = [] + for item in self.documentationList.selectedItems(): + fileName = item.data(0, Qt.UserRole) + if fileName: + documents.append(fileName) + return documents
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebBrowser/QtHelp/QtHelpDocumentationSelectionDialog.ui Fri Oct 14 23:02:38 2016 +0200 @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>QtHelpDocumentationSelectionDialog</class> + <widget class="QDialog" name="QtHelpDocumentationSelectionDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>450</width> + <height>500</height> + </rect> + </property> + <property name="windowTitle"> + <string>QtHelp Documentations</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Select the documentation files to be installed:</string> + </property> + </widget> + </item> + <item> + <widget class="QTreeWidget" name="documentationList"> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::ExtendedSelection</enum> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <property name="allColumnsShowFocus"> + <bool>true</bool> + </property> + <attribute name="headerVisible"> + <bool>false</bool> + </attribute> + <column> + <property name="text"> + <string notr="true">1</string> + </property> + </column> + </widget> + </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> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>QtHelpDocumentationSelectionDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>QtHelpDocumentationSelectionDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- a/WebBrowser/StatusBar/ImagesIcon.py Tue Oct 11 21:55:03 2016 +0200 +++ b/WebBrowser/StatusBar/ImagesIcon.py Fri Oct 14 23:02:38 2016 +0200 @@ -124,7 +124,7 @@ @param enable flag indicating the state to set @type bool """ - QWebEngineSettings.globalSettings().setAttribute( + QWebEngineSettings.defaultSettings().setAttribute( QWebEngineSettings.AutoLoadImages, enable) Preferences.setWebBrowser("AutoLoadImages", enable)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebBrowser/Tools/FilePrinter.py Fri Oct 14 23:02:38 2016 +0200 @@ -0,0 +1,576 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2016 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing an object for printing of files. +""" + +# +# This code is inspired by and ported from Qupzilla. +# Original Copyright (C) 2016 by Kevin Kofler <kevin.kofler@chello.at> +# + +from __future__ import unicode_literals + +from PyQt5.QtCore import qVersion, QFile, QStandardPaths, QProcess +from PyQt5.QtPrintSupport import QPrinter, QPrintEngine + +import Globals + + +_FilePrintJobs = [] + +class FilePrinter(object): + """ + Class implementing methods for printing on *nix systems. + """ + # + # Whether file(s) get deleted by the application or by the print system. + # + ApplicationDeletesFiles = 0 + SystemDeletesFiles = 1 + + # + # Whether pages to be printed are selected by the application or the print + # system. + # + # If application side, then the generated file will only contain those + # pages selected by the user, so FilePrinter will print all the pages in + # the file. + # + # If system side, then the file will contain all the pages in the + # document, and the print system will print the users selected print range + # from out of the file. + # + # Note: system side only works in CUPS, not LPR. + # + ApplicationSelectsPages = 0 + SystemSelectsPages = 1 + + def __init__(self): + """ + Constructor + """ + self.__paperSizesMap = { + QPrinter.A0: "A0", + QPrinter.A1: "A1", + QPrinter.A2: "A2", + QPrinter.A3: "A3", + QPrinter.A4: "A4", + QPrinter.A5: "A5", + QPrinter.A6: "A6", + QPrinter.A7: "A7", + QPrinter.A8: "A8", + QPrinter.A9: "A9", + QPrinter.B0: "B0", + QPrinter.B1: "B1", + QPrinter.B2: "B2", + QPrinter.B3: "B3", + QPrinter.B4: "B4", + QPrinter.B5: "B5", + QPrinter.B6: "B6", + QPrinter.B7: "B7", + QPrinter.B8: "B8", + QPrinter.B9: "B9", + QPrinter.B10: "B10", + QPrinter.C5E: "C5", + QPrinter.Comm10E: "Comm10", + QPrinter.DLE: "DL", + QPrinter.Executive: "Executive", + QPrinter.Folio: "Folio", + QPrinter.Ledger: "Ledger", + QPrinter.Legal: "Legal", + QPrinter.Letter: "Letter", + QPrinter.Tabloid: "Tabloid", + } + + self.__paperSourcesMap = { + QPrinter.Auto: "", + QPrinter.Cassette: "Cassette", + QPrinter.Envelope: "Envelope", + QPrinter.EnvelopeManual: "EnvelopeManual", + QPrinter.FormSource: "FormSource", + QPrinter.LargeCapacity: "LargeCapacity", + QPrinter.LargeFormat: "LargeFormat", + QPrinter.Lower: "Lower", + QPrinter.MaxPageSource: "MaxPageSource", + QPrinter.Middle: "Middle", + QPrinter.Manual: "Manual", + QPrinter.OnlyOne: "OnlyOne", + QPrinter.Tractor: "Tractor", + QPrinter.SmallFormat: "SmallFormat", + } + + self.__process = None + self.__doDeleteFile = FilePrinter.ApplicationDeletesFiles + self.__fileName = "" + + def _doPrintFile(self, printer, fileName, fileDeletePolicy, + pageSelectPolicy, pageRange): + """ + Protected method to print a file + + @param printer reference to the printer to print to + @type QPrinter + @param fileName name (path) of the file to be printed + @type str + @param fileDeletePolicy policy determining who deletes the file to be + printed (application or system) + @type int (0 or 1) + @param pageSelectPolicy policy determining who selects the pages to be + printed (application or system) + @type int (0 or 1) + @param pageRange string determining the page range(s) to be printed, if + SystemSelectsPages was given for pageSelectPolicy and user chose + Selection in print dialog + @type str + @return flag indicating successful print job submission + @rtype bool + """ + if not QFile.exists(fileName): + return False + + self.__fileName = fileName + self.__doDeleteFile = ( + fileDeletePolicy == FilePrinter.SystemDeletesFiles) + + if printer.printerState() in [QPrinter.Aborted, QPrinter.Error]: + if self.__doDeleteFile: + QFile.remove(fileName) + return False + + # + # Print via lpr/lp command + # + + # + # Decide what executable to use to print with, need the CUPS version + # of lpr if available. Some distros name the CUPS version of lpr as + # lpr-cups or lpr.cups so try those first before default to lpr, or + # failing that to lp. + if QStandardPaths.findExecutable("lpr-cups"): + exe = "lpr-cups" + elif QStandardPaths.findExecutable("lpr.cups"): + exe = "lpr.cups" + elif QStandardPaths.findExecutable("lpr"): + exe = "lpr" + elif QStandardPaths.findExecutable("lp"): + exe = "lp" + else: + if self.__doDeleteFile: + QFile.remove(fileName) + return False + + useCupsOptions = isCupsAvailable() + argsList = self._printArguments( + printer, fileDeletePolicy, pageSelectPolicy, useCupsOptions, + pageRange, exe) + argsList.append(fileName) + + self.__process = QProcess() + if qVersion() < "5.6.0": + self.__process.error.connect(self.__processError) + else: + self.__process.errorOccurred.connect(self.__processError) + self.__process.finished.connect(self.__processFinished) + self.__process.start(exe, argsList) + if not self.__process.waitForStarted(10000): + # it failed to start + self.__doCleanup(self.__doDeleteFile) + return False + + return True + + def __doCleanup(self, deleteFile): + """ + Private method to perform some internal cleanup actions. + + @param deleteFile flag indicating to delete the print file + @type bool + """ + if deleteFile: + QFile.remove(self.__fileName) + + self.__process.deleteLater() + self.__process = None + + if self in _FilePrintJobs: + _FilePrintJobs.remove(self) + + def __processError(self, error): + """ + Private slot handling process errors. + + @param error error value + @type QProcess.ProcessError + """ + self.__doCleanup(self.__doDeleteFile) + + def __processFinished(self, exitCode, exitStatus): + """ + Private slot handling the end of the process. + + @param exitCode exit code of the process + @type int + @param exitStatus exit status of the process + @type QProcess.ExitStatus + """ + self.__doCleanup(self.__doDeleteFile and ( + exitStatus != QProcess.NormalExit or exitCode != 0)) + + def _printArguments(self, printer, fileDeletePolicy, pageSelectPolicy, + useCupsOptions, pageRange, variant): + """ + Protected method to assemble the command line arguments for the print + command. + + @param printer reference to the printer to print to + @type QPrinter + @param fileDeletePolicy policy determining who deletes the file to be + printed (application or system) + @type int (0 or 1) + @param pageSelectPolicy policy determining who selects the pages to be + printed (application or system) + @type int (0 or 1) + @param useCupsOptions flag indicating to assemble the arguments for + CUPS + @type bool + @param pageRange string determining the page range(s) to be printed, if + SystemSelectsPages was given for pageSelectPolicy and user chose + Selection in print dialog + @type str + @param variant string identifying the print command variant + @type str + @return assembled command line arguments for the print command + @rtype list of str + """ + if variant.startswith("lpr"): + variant = "lpr" + + args = [] + args.extend(self._destination(printer, variant)) + args.extend(self._copies(printer, variant)) + args.extend(self._jobname(printer, variant)) + args.extend(self._pages(printer, pageSelectPolicy, pageRange, + useCupsOptions, variant)) + if useCupsOptions: + args.extend(self._cupsOptions(printer)) + args.extend(self._deleteFile(printer, fileDeletePolicy, variant)) + if variant == "lp": + args.append("--") + + return args + + def _destination(self, printer, variant): + """ + Protected method to assemble the printer destination arguments. + + @param printer reference to the printer to print to + @type QPrinter + @param variant string identifying the print command variant + @type str + @return assembled printer destination arguments + @rtype list of str + """ + if variant == "lp": + return ["-d", printer.printerName()] + elif variant == "lpr": + return ["-P", printer.printerName()] + else: + return [] + + def _copies(self, printer, variant): + """ + Protected method to assemble the number of copies arguments. + + @param printer reference to the printer to print to + @type QPrinter + @param variant string identifying the print command variant + @type str + @return assembled number of copies arguments + @rtype list of str + """ + copies = printer.copyCount() + if variant == "lp": + return ["-n", str(copies)] + elif variant == "lpr": + return ["-#{0}".format(copies)] + else: + return [] + + def _jobname(self, printer, variant): + """ + Protected method to assemble the jobname arguments. + + @param printer reference to the printer to print to + @type QPrinter + @param variant string identifying the print command variant + @type str + @return assembled jobname arguments + @rtype list of str + """ + if printer.docName(): + if variant == "lp": + return ["-t", printer.docName()] + elif variant == "lpr": + shortenedDocName = printer.docName()[:255] + return ["-J", shortenedDocName] + + return [] + + def _deleteFile(self, printer, fileDeletePolicy, variant): + """ + Protected method to assemble the jobname arguments. + + @param printer reference to the printer to print to + @type QPrinter + @param fileDeletePolicy policy determining who deletes the file to be + printed (application or system) + @type int (0 or 1) + @param variant string identifying the print command variant + @type str + @return assembled jobname arguments + @rtype list of str + """ + if fileDeletePolicy == FilePrinter.SystemDeletesFiles and \ + variant == "lpr": + return ["-r"] + else: + return [] + + def _pages(self, printer, pageSelectPolicy, pageRange, useCupsOptions, + variant): + """ + Protected method to assemble the page range(s) arguments. + + @param printer reference to the printer to print to + @type QPrinter + @param pageSelectPolicy policy determining who selects the pages to be + printed (application or system) + @type int (0 or 1) + @param pageRange string determining the page range(s) to be printed, if + SystemSelectsPages was given for pageSelectPolicy and user chose + Selection in print dialog + @type str + @param useCupsOptions flag indicating to assemble the arguments for + CUPS + @type bool + @param variant string identifying the print command variant + @type str + @return assembled page range(s) arguments + @rtype list of str + """ + if pageSelectPolicy == FilePrinter.SystemSelectsPages: + if printer.printRange() == QPrinter.Selection and bool(pageRange): + if variant == "lp": + return ["-P", pageRange] + elif variant == "lpr": + return ["-o", "page-ranges={0}".format(pageRange)] + + if printer.printRange() == QPrinter.PageRange: + if variant == "lp": + return ["-P", "{0}-{1}".format( + printer.fromPage(), printer.toPage())] + elif variant == "lpr": + return ["-o", "page-ranges={0}-{1}".format( + printer.fromPage(), printer.toPage())] + + return [] # all pages + + def _cupsOptions(self, printer): + """ + Protected method to assemble the CUPS specific arguments. + + @param printer reference to the printer to print to + @type QPrinter + @return assembled CUPS arguments + @rtype list of str + """ + options = [] + options.extend(self._optionMedia(printer)) + options.extend(self._optionDoubleSidedPrinting(printer)) + options.extend(self._optionPageOrder(printer)) + options.extend(self._optionCollateCopies(printer)) + options.extend(self._optionCupsProperties(printer)) + + return options + + def _optionMedia(self, printer): + """ + Protected method to assemble the print media arguments. + + @param printer reference to the printer to print to + @type QPrinter + @return assembled print media arguments + @rtype list of str + """ + pageSize = self._mediaPageSize(printer) + paperSource = self._mediaPaperSource(printer) + + if pageSize and paperSource: + return ["-o", "media={0},{1}".format(pageSize, paperSource)] + + elif pageSize: + return ["-o", "media={0}".format(pageSize)] + + elif paperSource: + return ["-o", "media={0}".format(paperSource)] + + return [] + + def _mediaPageSize(self, printer): + """ + Protected method to get the page size argument. + + @param printer reference to the printer to print to + @type QPrinter + @return page size argument + @rtype str + """ + pageSize = printer.pageSize() + if pageSize in self.__paperSizesMap: + return self.__paperSizesMap[pageSize] + else: + return "" + + def _mediaPaperSource(self, printer): + """ + Protected method to get the paper source argument. + + @param printer reference to the printer to print to + @type QPrinter + @return paper source argument + @rtype str + """ + paperSource = printer.paperSource() + if paperSource in self.__paperSourcesMap: + return self.__paperSourcesMap[paperSource] + else: + return "" + + def _optionDoubleSidedPrinting(self, printer): + """ + Protected method to assemble the double sided printing arguments. + + @param printer reference to the printer to print to + @type QPrinter + @return assembled double sided printing arguments + @rtype list of str + """ + duplex = printer.duplex() + + if duplex == QPrinter.DuplexNone: + return ["-o", "sides=one-sided"] + elif duplex == QPrinter.DuplexAuto: + if printer.orientation() == QPrinter.Landscape: + return ["-o", "sides=two-sided-short-edge"] + else: + return ["-o", "sides=two-sided-long-edge"] + elif duplex == QPrinter.DuplexLongSide: + return ["-o", "sides=two-sided-long-edge"] + elif duplex == QPrinter.DuplexShortSide: + return ["-o", "sides=two-sided-short-edge"] + else: + return [] # use printer default + + def _optionPageOrder(self, printer): + """ + Protected method to assemble the page order arguments. + + @param printer reference to the printer to print to + @type QPrinter + @return assembled page order arguments + @rtype list of str + """ + if printer.pageOrder() == QPrinter.LastPageFirst: + return ["-o", "outputorder=reverse"] + else: + return ["-o", "outputorder=normal"] + + def _optionCollateCopies(self, printer): + """ + Protected method to assemble the collate copies arguments. + + @param printer reference to the printer to print to + @type QPrinter + @return assembled collate copies arguments + @rtype list of str + """ + if printer.collateCopies(): + return ["-o", "Collate=True"] + else: + return ["-o", "Collate=False"] + + def _optionCupsProperties(self, printer): + """ + Protected method to assemble the CUPS properties arguments. + + @param printer reference to the printer to print to + @type QPrinter + @return assembled CUPS properties arguments + @rtype list of str + """ + options = Globals.toList(printer.printEngine().property( + QPrintEngine.PrintEnginePropertyKey(0xfe00))) + + cupsOptions = [] + index = 0 + while index < len(options): + if options[index + 1]: + cupsOptions.extend(["-o", "{0}={1}".format( + options[index], options[index + 1])]) + else: + cupsOptions.extend(["-o", options[index]]) + index += 2 + + return cupsOptions + + +def isCupsAvailable(): + """ + Static method to test the availability of CUPS. + + @return flag indicating the availability of CUPS + @rtype bool + """ + if Globals.isMacPlatform(): + # OS X/MacOS always have CUPS + return True + elif Globals.isLinuxPlatform(): + testPrinter = QPrinter() + return testPrinter.supportsMultipleCopies() + else: + return False + + +def printFile(printer, fileName, + fileDeletePolicy=FilePrinter.ApplicationDeletesFiles, + pageSelectPolicy=FilePrinter.ApplicationSelectsPages, + pageRange=""): + """ + Static method to print a file. + + Note: Only CUPS and LPR on *nix systems is supported. + + @param printer reference to the printer to print to + @type QPrinter + @param fileName name (path) of the file to be printed + @type str + @param fileDeletePolicy policy determining who deletes the file to be + printed (application or system) + @type int (0 or 1) + @param pageSelectPolicy policy determining who selects the pages to be + printed (application or system) + @type int (0 or 1) + @param pageRange string determining the page range(s) to be printed, if + SystemSelectsPages was given for pageSelectPolicy and user chose + Selection in print dialog + @type str + """ + fp = FilePrinter() + if fp._doPrintFile(printer, fileName, fileDeletePolicy, pageSelectPolicy, + pageRange): + _FilePrintJobs.append(fp) +
--- a/WebBrowser/Tools/PrintToPdfDialog.py Tue Oct 11 21:55:03 2016 +0200 +++ b/WebBrowser/Tools/PrintToPdfDialog.py Fri Oct 14 23:02:38 2016 +0200 @@ -9,7 +9,9 @@ from __future__ import unicode_literals -from PyQt5.QtCore import pyqtSlot, QMarginsF +import os + +from PyQt5.QtCore import pyqtSlot, QMarginsF, QStandardPaths from PyQt5.QtGui import QPageLayout, QPageSize from PyQt5.QtPrintSupport import QPrinter, QPageSetupDialog from PyQt5.QtWidgets import QDialog @@ -40,6 +42,13 @@ self.pdfFilePicker.setFilters(self.tr( "PDF Files (*.pdf);;" "All Files (*)")) + if not os.path.isabs(filePath): + documentsPath = QStandardPaths.writableLocation( + QStandardPaths.DocumentsLocation) + if documentsPath: + filePath = os.path.join(documentsPath, filePath) + else: + filePath = os.path.abspath(filePath) self.pdfFilePicker.setText(filePath, toNative=True) self.__currentPageLayout = QPageLayout(
--- a/WebBrowser/WebBrowserTabWidget.py Tue Oct 11 21:55:03 2016 +0200 +++ b/WebBrowser/WebBrowserTabWidget.py Fri Oct 14 23:02:38 2016 +0200 @@ -11,10 +11,11 @@ import os -from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QFile +from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QDir, QFile, \ + QFileDevice, QTemporaryFile, qVersion from PyQt5.QtGui import QIcon, QPixmap, QPainter from PyQt5.QtWidgets import QWidget, QHBoxLayout, QMenu, QToolButton, QDialog -from PyQt5.QtPrintSupport import QPrinter, QPrintDialog +from PyQt5.QtPrintSupport import QPrinter, QPrintDialog, QAbstractPrintDialog from E5Gui.E5TabWidget import E5TabWidget from E5Gui import E5MessageBox @@ -23,6 +24,7 @@ from .WebBrowserView import WebBrowserView from .WebBrowserPage import WebBrowserPage from .Tools import WebBrowserTools +from .Tools import FilePrinter from . import WebInspector import UI.PixmapCache @@ -150,6 +152,8 @@ self.__initTabContextMenu() self.__historyCompleter = None + + self.__pdfPrinter = None def __initTabContextMenu(self): """ @@ -179,13 +183,15 @@ self.__tabContextMenu.addAction( self.tr('Close All'), self.closeAllBrowsers) self.__tabContextMenu.addSeparator() - self.__tabContextMenu.addAction( - UI.PixmapCache.getIcon("printPreview.png"), - self.tr('Print Preview'), self.__tabContextMenuPrintPreview) - self.__tabContextMenu.addAction( - UI.PixmapCache.getIcon("print.png"), - self.tr('Print'), self.__tabContextMenuPrint) - if Globals.isLinuxPlatform(): + if not Globals.isWindowsPlatform() and qVersion() < "5.7.0": + self.__tabContextMenu.addAction( + UI.PixmapCache.getIcon("printPreview.png"), + self.tr('Print Preview'), self.__tabContextMenuPrintPreview) + if not Globals.isWindowsPlatform() or qVersion() >= "5.7.0": + self.__tabContextMenu.addAction( + UI.PixmapCache.getIcon("print.png"), + self.tr('Print'), self.__tabContextMenuPrint) + if Globals.isLinuxPlatform() or qVersion() >= "5.7.0": self.__tabContextMenu.addAction( UI.PixmapCache.getIcon("printPdf.png"), self.tr('Print as PDF'), self.__tabContextMenuPrintPdf) @@ -622,10 +628,32 @@ if printerName: printer.setPrinterName(printerName) printer.setResolution(Preferences.getPrinter("Resolution")) + documentName = WebBrowserTools.getFileNameFromUrl(browser.url()) + printer.setDocName(documentName) printDialog = QPrintDialog(printer, self) + printDialog.setOptions(QAbstractPrintDialog.PrintToFile | + QAbstractPrintDialog.PrintShowPageSize) + if not Globals.isWindowsPlatform(): + if FilePrinter.isCupsAvailable(): + printDialog.setOption(QAbstractPrintDialog.PrintCollateCopies) + printDialog.setOption(QAbstractPrintDialog.PrintPageRange) if printDialog.exec_() == QDialog.Accepted: - browser.render(printer) + if not hasattr(browser.page(), "printToPdf"): + browser.render(printer) + else: + if printer.outputFormat() == QPrinter.PdfFormat: + # print to PDF file selected + browser.page().printToPdf( + lambda pdf: self.__pdfGeneratedForSave( + printer.outputFileName(), pdf), + printer.pageLayout()) + else: + # print to printer + self.__pdfPrinter = printer + browser.page().printToPdf( + self.__pdfGeneratedForPrinting, + printer.pageLayout()) @pyqtSlot() def printBrowserPdf(self, browser=None): @@ -645,14 +673,27 @@ from .Tools.PrintToPdfDialog import PrintToPdfDialog if not name: name = "printout.pdf" - dlg = PrintToPdfDialog(os.path.abspath(name), self) + dlg = PrintToPdfDialog(name, self) if dlg.exec_() == QDialog.Accepted: filePath, pageLayout = dlg.getData() if filePath: + if os.path.exists(filePath): + res = E5MessageBox.warning( + self, + self.tr("Print to PDF"), + self.tr("""<p>The file <b>{0}</b> exists""" + """ already. Shall it be""" + """ overwritten?</p>""").format(filePath), + E5MessageBox.StandardButtons( + E5MessageBox.No | + E5MessageBox.Yes), + E5MessageBox.No) + if res == E5MessageBox.No: + return browser.page().printToPdf( - lambda p: self.__pdfGenerated(filePath, p), + lambda pdf: self.__pdfGeneratedForSave(filePath, pdf), pageLayout) - else: + elif Globals.isLinuxPlatform(): printer = QPrinter(mode=QPrinter.HighResolution) if Preferences.getPrinter("ColorMode"): printer.setColorMode(QPrinter.Color) @@ -670,9 +711,9 @@ if printDialog.exec_() == QDialog.Accepted: browser.render(printer) - def __pdfGenerated(self, filePath, pdfData): + def __pdfGeneratedForSave(self, filePath, pdfData): """ - Private slot handling the generated PDF data. + Private slot to save the generated PDF data to a file. @param filePath path to save the PDF to @type str @@ -683,11 +724,50 @@ return pdfFile = QFile(filePath) - if not pdfFile.open(QFile.WriteOnly): + if pdfFile.open(QFile.WriteOnly): + pdfFile.write(pdfData) + pdfFile.close() + if pdfFile.error() != QFileDevice.NoError: + E5MessageBox.critical( + self, + self.tr("Print to PDF"), + self.tr("""<p>The PDF could not be written to file <b>{0}""" + """</b>.</p><p><b>Error:</b> {1}</p>""").format( + filePath, pdfFile.errorString()), + E5MessageBox.StandardButtons( + E5MessageBox.Ok)) + + def __pdfGeneratedForPrinting(self, pdfData): + """ + Private slot to print the generated PDF data. + + @param pdfData generated PDF document + @type QByteArray + """ + if self.__pdfPrinter is None or pdfData.isEmpty(): return - pdfFile.write(pdfData) - pdfFile.close() + tempFile = QTemporaryFile(QDir.tempPath() + "/ericBrowserXXXXXX.pdf") + tempFile.setAutoRemove(False) + if tempFile.open(): + bytesWritten = tempFile.write(pdfData) + tempFile.close() + if bytesWritten == pdfData.size(): + if Globals.isWindowsPlatform(): + printerName = self.__pdfPrinter.printerName() + import ctypes + ctypes.windll.shell32.ShellExecuteW( + None, "printto", tempFile.fileName(), + '"{0}"'.format(printerName), None, 0) + else: + FilePrinter.printFile( + self.__pdfPrinter, tempFile.fileName(), + FilePrinter.FilePrinter.SystemDeletesFiles, + FilePrinter.FilePrinter.SystemSelectsPages) + else: + tempFile.remove() + + self.__pdfPrinter = None @pyqtSlot() def printPreviewBrowser(self, browser=None):
--- a/WebBrowser/WebBrowserView.py Tue Oct 11 21:55:03 2016 +0200 +++ b/WebBrowser/WebBrowserView.py Fri Oct 14 23:02:38 2016 +0200 @@ -14,8 +14,10 @@ except NameError: pass +import os + from PyQt5.QtCore import pyqtSignal, QUrl, QFileInfo, Qt, QTimer, QEvent, \ - QPoint, QDateTime + QPoint, QDateTime, qVersion from PyQt5.QtGui import QDesktopServices, QClipboard, QIcon, \ QContextMenuEvent, QPixmap from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication @@ -34,6 +36,7 @@ import Preferences import UI.PixmapCache +import Utilities class WebBrowserView(QWebEngineView): @@ -165,8 +168,14 @@ return if not name.scheme(): - name.setUrl(Preferences.getWebBrowser("DefaultScheme") + - name.toString()) + if not os.path.exists(name.toString()): + name.setScheme(Preferences.getWebBrowser("DefaultScheme")) + else: + if Utilities.isWindowsPlatform(): + name.setUrl("file:///" + Utilities.fromNativeSeparators( + name.toString())) + else: + name.setUrl("file://" + name.toString()) if len(name.scheme()) == 1 or \ name.scheme() == "file": @@ -184,10 +193,7 @@ .format(name.toLocalFile())) return - if name.toLocalFile().endswith(".pdf") or \ - name.toLocalFile().endswith(".PDF") or \ - name.toLocalFile().endswith(".chm") or \ - name.toLocalFile().endswith(".CHM"): + if name.toLocalFile().lower().endswith((".pdf", ".chm")): started = QDesktopServices.openUrl(name) if not started: E5MessageBox.critical( @@ -210,10 +216,7 @@ .format(name.toString())) return else: - if name.toString().endswith(".pdf") or \ - name.toString().endswith(".PDF") or \ - name.toString().endswith(".chm") or \ - name.toString().endswith(".CHM"): + if name.toString().lower().endswith((".pdf", ".chm")): started = QDesktopServices.openUrl(name) if not started: E5MessageBox.critical( @@ -317,7 +320,12 @@ """ Public slot to clear the current selection. """ - self.triggerPageAction(QWebEnginePage.Unselect) + if qVersion() >= "5.7.0": + self.triggerPageAction(QWebEnginePage.Unselect) + else: + self.page().runJavaScript( + "window.getSelection().empty()", + WebBrowserPage.SafeJsWorld) def isForwardAvailable(self): """
--- a/WebBrowser/WebBrowserWindow.py Tue Oct 11 21:55:03 2016 +0200 +++ b/WebBrowser/WebBrowserWindow.py Fri Oct 14 23:02:38 2016 +0200 @@ -18,7 +18,7 @@ import sys from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, \ - QUrl, QTextCodec, QProcess, QEvent + QUrl, QTextCodec, QProcess, QEvent, qVersion from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics from PyQt5.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QDockWidget, \ QComboBox, QLabel, QSplitter, QMenu, QToolButton, QLineEdit, \ @@ -83,7 +83,7 @@ BrowserWindows = [] _fromEric = False - UseQtHelp = QTHELP_AVAILABLE + _useQtHelp = QTHELP_AVAILABLE _isPrivate = False _webProfile = None @@ -142,6 +142,7 @@ self.__mHistory = [] self.__lastConfigurationPageName = "" + self.__lastActiveWindow = None WebBrowserWindow._isPrivate = private @@ -186,10 +187,9 @@ from E5Network.E5SslUtilities import initSSL initSSL() - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: self.__helpEngine = QHelpEngine( - os.path.join(Utilities.getConfigDir(), - "web_browser", "eric6help.qhc"), + WebBrowserWindow.getQtHelpCollectionFileName(), self) self.__removeOldDocumentation() self.__helpEngine.warning.connect(self.__warning) @@ -227,7 +227,7 @@ self.setCentralWidget(centralWidget) self.__searchWidget.hide() - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: # setup the TOC widget self.__tocWindow = HelpTocWidget(self.__helpEngine) self.__tocDock = QDockWidget(self.tr("Contents"), self) @@ -326,7 +326,7 @@ # setup connections self.__activating = False - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: # TOC window self.__tocWindow.escapePressed.connect( self.__activateCurrentBrowser) @@ -371,12 +371,11 @@ self.flashCookieManager() - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: QTimer.singleShot(0, self.__lookForNewDocumentation) if self.__searchWord is not None: QTimer.singleShot(0, self.__searchForWord) - self.__lastActiveWindow = None e5App().focusChanged.connect(self.__appFocusChanged) QTimer.singleShot(0, syncMgr.loadSettings) @@ -430,7 +429,7 @@ """ Private method to set the global web settings. """ - settings = QWebEngineSettings.globalSettings() + settings = QWebEngineSettings.defaultSettings() settings.setFontFamily( QWebEngineSettings.StandardFont, @@ -701,22 +700,26 @@ bookmarksManager.exportBookmarks) self.__actions.append(self.exportBookmarksAct) - self.printAct = E5Action( - self.tr('Print'), - UI.PixmapCache.getIcon("print.png"), - self.tr('&Print'), - QKeySequence(self.tr("Ctrl+P", "File|Print")), - 0, self, 'webbrowser_file_print') - self.printAct.setStatusTip(self.tr('Print the displayed help')) - self.printAct.setWhatsThis(self.tr( - """<b>Print</b>""" - """<p>Print the displayed help text.</p>""" - )) - if not self.__initShortcutsOnly: - self.printAct.triggered.connect(self.__tabWidget.printBrowser) - self.__actions.append(self.printAct) - - if Globals.isLinuxPlatform(): + if not Globals.isWindowsPlatform() or \ + qVersion() >= "5.7.0": + self.printAct = E5Action( + self.tr('Print'), + UI.PixmapCache.getIcon("print.png"), + self.tr('&Print'), + QKeySequence(self.tr("Ctrl+P", "File|Print")), + 0, self, 'webbrowser_file_print') + self.printAct.setStatusTip(self.tr('Print the displayed help')) + self.printAct.setWhatsThis(self.tr( + """<b>Print</b>""" + """<p>Print the displayed help text.</p>""" + )) + if not self.__initShortcutsOnly: + self.printAct.triggered.connect(self.__tabWidget.printBrowser) + self.__actions.append(self.printAct) + else: + self.printAct = None + + if Globals.isLinuxPlatform() or qVersion() >= "5.7.0": self.printPdfAct = E5Action( self.tr('Print as PDF'), UI.PixmapCache.getIcon("printPdf.png"), @@ -735,21 +738,24 @@ else: self.printPdfAct = None - self.printPreviewAct = E5Action( - self.tr('Print Preview'), - UI.PixmapCache.getIcon("printPreview.png"), - self.tr('Print Preview'), - 0, 0, self, 'webbrowser_file_print_preview') - self.printPreviewAct.setStatusTip(self.tr( - 'Print preview of the displayed help')) - self.printPreviewAct.setWhatsThis(self.tr( - """<b>Print Preview</b>""" - """<p>Print preview of the displayed help text.</p>""" - )) - if not self.__initShortcutsOnly: - self.printPreviewAct.triggered.connect( - self.__tabWidget.printPreviewBrowser) - self.__actions.append(self.printPreviewAct) + if not Globals.isWindowsPlatform() and qVersion() < "5.7.0": + self.printPreviewAct = E5Action( + self.tr('Print Preview'), + UI.PixmapCache.getIcon("printPreview.png"), + self.tr('Print Preview'), + 0, 0, self, 'webbrowser_file_print_preview') + self.printPreviewAct.setStatusTip(self.tr( + 'Print preview of the displayed help')) + self.printPreviewAct.setWhatsThis(self.tr( + """<b>Print Preview</b>""" + """<p>Print preview of the displayed help text.</p>""" + )) + if not self.__initShortcutsOnly: + self.printPreviewAct.triggered.connect( + self.__tabWidget.printPreviewBrowser) + self.__actions.append(self.printPreviewAct) + else: + self.printPreviewAct = None self.closeAct = E5Action( self.tr('Close'), @@ -971,22 +977,19 @@ self.selectAllAct.triggered.connect(self.__selectAll) self.__actions.append(self.selectAllAct) - if hasattr(QWebEnginePage, "Unselect"): - self.unselectAct = E5Action( - self.tr('Unselect'), - self.tr('Unselect'), - QKeySequence(self.tr("Ctrl+Shift+A", "Edit|Unselect")), - 0, self, 'webbrowser_edit_unselect') - self.unselectAct.setStatusTip(self.tr('Clear current selection')) - self.unselectAct.setWhatsThis(self.tr( - """<b>Unselect</b>""" - """<p>Clear the selection of the current browser.</p>""" - )) - if not self.__initShortcutsOnly: - self.unselectAct.triggered.connect(self.__unselect) - self.__actions.append(self.unselectAct) - else: - self.unselectAct = None + self.unselectAct = E5Action( + self.tr('Unselect'), + self.tr('Unselect'), + QKeySequence(self.tr("Alt+Ctrl+A", "Edit|Unselect")), + 0, self, 'webbrowser_edit_unselect') + self.unselectAct.setStatusTip(self.tr('Clear current selection')) + self.unselectAct.setWhatsThis(self.tr( + """<b>Unselect</b>""" + """<p>Clear the selection of the current browser.</p>""" + )) + if not self.__initShortcutsOnly: + self.unselectAct.triggered.connect(self.__unselect) + self.__actions.append(self.unselectAct) self.findAct = E5Action( self.tr('Find...'), @@ -1388,7 +1391,7 @@ self.__showFeaturePermissionDialog) self.__actions.append(self.featurePermissionAct) - if WebBrowserWindow.useQtHelp or self.__initShortcutsOnly: + if WebBrowserWindow._useQtHelp or self.__initShortcutsOnly: self.syncTocAct = E5Action( self.tr('Sync with Table of Contents'), UI.PixmapCache.getIcon("syncToc.png"), @@ -1774,8 +1777,10 @@ menu.addAction(self.savePageScreenAct) menu.addAction(self.saveVisiblePageScreenAct) menu.addSeparator() - menu.addAction(self.printPreviewAct) - menu.addAction(self.printAct) + if self.printPreviewAct: + menu.addAction(self.printPreviewAct) + if self.printAct: + menu.addAction(self.printAct) if self.printPdfAct: menu.addAction(self.printPdfAct) menu.addSeparator() @@ -1794,8 +1799,7 @@ menu.addAction(self.pasteAct) menu.addSeparator() menu.addAction(self.selectAllAct) - if self.unselectAct is not None: - menu.addAction(self.unselectAct) + menu.addAction(self.unselectAct) menu.addSeparator() menu.addAction(self.findAct) menu.addAction(self.findNextAct) @@ -1823,7 +1827,7 @@ menu.addSeparator() menu.addAction(self.stopAct) menu.addAction(self.reloadAct) - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: menu.addSeparator() menu.addAction(self.syncTocAct) @@ -1889,7 +1893,7 @@ menu.addAction(self.userAgentManagerAct) menu.addSeparator() - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: menu.addAction(self.manageQtHelpDocsAct) menu.addAction(self.manageQtHelpFiltersAct) menu.addAction(self.reindexDocumentationAct) @@ -1909,7 +1913,7 @@ menu.addAction(self.showDownloadManagerAct) menu.addAction(self.showJavaScriptConsoleAct) menu.addAction(self.showTabManagerAct) - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: menu.addSeparator() menu.addAction(self.showTocAct) menu.addAction(self.showIndexAct) @@ -1941,11 +1945,14 @@ filetb.addAction(self.saveAsAct) filetb.addAction(self.savePageScreenAct) filetb.addSeparator() - filetb.addAction(self.printPreviewAct) - filetb.addAction(self.printAct) + if self.printPreviewAct: + filetb.addAction(self.printPreviewAct) + if self.printAct: + filetb.addAction(self.printAct) if self.printPdfAct: filetb.addAction(self.printPdfAct) - filetb.addSeparator() + if self.printPreviewAct or self.printAct or self.printPdfAct: + filetb.addSeparator() filetb.addAction(self.closeAct) filetb.addAction(self.exitAct) @@ -1984,7 +1991,7 @@ findtb.addAction(self.findNextAct) findtb.addAction(self.findPrevAct) - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: filtertb = self.addToolBar(self.tr("Filter")) filtertb.setObjectName("FilterToolBar") self.filterCombo = QComboBox() @@ -2233,7 +2240,7 @@ self, self.tr("Open File"), "", - self.tr("HTML Files (*.html *.htm *.mhtml);;" + self.tr("HTML Files (*.html *.htm *.mhtml *.mht);;" "PDF Files (*.pdf);;" "CHM Files (*.chm);;" "All Files (*)" @@ -2253,7 +2260,7 @@ self, self.tr("Open File"), "", - self.tr("HTML Files (*.html *.htm *.mhtml);;" + self.tr("HTML Files (*.html *.htm *.mhtml *.mht);;" "PDF Files (*.pdf);;" "CHM Files (*.chm);;" "All Files (*)" @@ -2545,7 +2552,7 @@ # it is the last window self.tabManager().close() - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: self.__searchEngine.cancelIndexing() self.__searchEngine.cancelSearching() @@ -2878,9 +2885,9 @@ @param use flag indicating usage (boolean) """ if use: - cls.useQtHelp = use and QTHELP_AVAILABLE + cls._useQtHelp = use and QTHELP_AVAILABLE else: - cls.useQtHelp = False + cls._useQtHelp = False @classmethod def helpEngine(cls): @@ -2889,15 +2896,27 @@ @return reference to the help engine (QHelpEngine) """ - if cls.useQtHelp: + if cls._useQtHelp: if cls._helpEngine is None: - cls._helpEngine = \ - QHelpEngine(os.path.join(Utilities.getConfigDir(), - "web_browser", "eric6help.qhc")) + cls._helpEngine = QHelpEngine( + WebBrowserWindow.getQtHelpCollectionFileName()) return cls._helpEngine else: return None - + + @classmethod + def getQtHelpCollectionFileName(cls): + """ + Class method to determine the name of the QtHelp collection file. + + @return path of the QtHelp collection file + @rtype str + """ + qthelpDir = os.path.join(Utilities.getConfigDir(), "qthelp") + if not os.path.exists(qthelpDir): + os.makedirs(qthelpDir) + return os.path.join(qthelpDir, "eric6help.qhc") + @classmethod def networkManager(cls): """ @@ -2958,7 +2977,7 @@ """ Private slot to synchronize the TOC with the currently shown page. """ - if WebBrowserWindow.UseQtHelp: + if WebBrowserWindow._useQtHelp: QApplication.setOverrideCursor(Qt.WaitCursor) url = self.currentBrowser().source() self.__showTocWindow() @@ -2971,21 +2990,21 @@ """ Private method to show the table of contents window. """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: self.__activateDock(self.__tocWindow) def __showIndexWindow(self): """ Private method to show the index window. """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: self.__activateDock(self.__indexWindow) def __showSearchWindow(self): """ Private method to show the search window. """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: self.__activateDock(self.__searchWindow) def __activateDock(self, widget): @@ -3002,7 +3021,7 @@ """ Private slot to setup the filter combo box. """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: curFilter = self.filterCombo.currentText() if not curFilter: curFilter = self.__helpEngine.currentFilter() @@ -3026,7 +3045,7 @@ """ Private slot to manage the QtHelp documentation database. """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: from .QtHelp.QtHelpDocumentationDialog import \ QtHelpDocumentationDialog dlg = QtHelpDocumentationDialog(self.__helpEngine, self) @@ -3048,7 +3067,7 @@ """ Private slot to manage the QtHelp filters. """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: from .QtHelp.QtHelpFiltersDialog import QtHelpFiltersDialog dlg = QtHelpFiltersDialog(self.__helpEngine, self) dlg.exec_() @@ -3057,7 +3076,7 @@ """ Private slot to handle the start of the indexing process. """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: self.__indexing = True if self.__indexingProgress is None: self.__indexingProgress = QWidget() @@ -3084,7 +3103,7 @@ """ Private slot to handle the start of the indexing process. """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: self.statusBar().removeWidget(self.__indexingProgress) self.__indexingProgress = None self.__indexing = False @@ -3095,7 +3114,7 @@ """ Private slot to search for a word. """ - if WebBrowserWindow.useQtHelp and not self.__indexing and \ + if WebBrowserWindow._useQtHelp and not self.__indexing and \ self.__searchWord is not None: self.__searchDock.show() self.__searchDock.raise_() @@ -3110,7 +3129,7 @@ @param word word to search for (string) """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: self.__searchWord = word self.__searchForWord() @@ -3128,7 +3147,7 @@ Private slot to look for new documentation to be loaded into the help database. """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: from .QtHelp.HelpDocsInstaller import HelpDocsInstaller self.__helpInstaller = HelpDocsInstaller( self.__helpEngine.collectionFile()) @@ -3158,7 +3177,7 @@ @param installed flag indicating that documents were installed (boolean) """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: if installed: self.__helpEngine.setupData() self.statusBar().clearMessage() @@ -3167,7 +3186,7 @@ """ Private slot to initialize the documentation database. """ - if WebBrowserWindow.useQtHelp: + if WebBrowserWindow._useQtHelp: if not self.__helpEngine.setupData(): return @@ -3709,7 +3728,7 @@ codecs.sort() defaultTextEncoding = \ - QWebEngineSettings.globalSettings().defaultTextEncoding().lower() + QWebEngineSettings.defaultSettings().defaultTextEncoding().lower() if defaultTextEncoding in codecs: currentCodec = defaultTextEncoding else: @@ -3764,9 +3783,9 @@ """ codec = act.data() if codec == "": - QWebEngineSettings.globalSettings().setDefaultTextEncoding("") + QWebEngineSettings.defaultSettings().setDefaultTextEncoding("") else: - QWebEngineSettings.globalSettings().setDefaultTextEncoding(codec) + QWebEngineSettings.defaultSettings().setDefaultTextEncoding(codec) def eventMouseButtons(self): """
--- a/eric6.appdata.xml Tue Oct 11 21:55:03 2016 +0200 +++ b/eric6.appdata.xml Fri Oct 14 23:02:38 2016 +0200 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> -<application> - <id type="desktop">eric6@MARKER@.desktop</id> +<component type="desktop"> + <id>eric6@MARKER@.desktop</id> <metadata_license>CC-BY-3.0</metadata_license> <project_license>GPL-3.0+</project_license> <name>eric6@MARKER@</name> @@ -24,5 +24,38 @@ <screenshot width="1431" height="1254">http://eric-ide.python-projects.org/images/eric5-screen-10.png</screenshot> </screenshots> <url type="homepage">http://eric-ide.python-projects.org</url> - <updatecontact>detlev_at_die-offenbachs.de</updatecontact> -</application> + <url type="bugtracker">https://die-offenbachs.homelinux.org/issues/</url> + <url type="translate">http://eric-ide.python-projects.org/eric-translations.html</url> + <url type="donation">https://www.paypal.com/cgi-bin/webscr?item_name=Donation+to+Eric+Integrated+Development+Environment&cmd=_donations&business=detlev@die-offenbachs.de</url> + <update_contact>detlev_AT_die-offenbachs.de</update_contact> + <developer_name>Detlev Offenbach</developer_name> + <translation type="qt">eric6</translation> + <provides> + <binary>eric6</binary> + <binary>eric6_api</binary> + <binary>eric6_browser</binary> + <binary>eric6_compare</binary> + <binary>eric6_configure</binary> + <binary>eric6_diff</binary> + <binary>eric6_doc</binary> + <binary>eric6_editor</binary> + <binary>eric6_hexeditor</binary> + <binary>eric6_iconeditor</binary> + <binary>eric6_plugininstall</binary> + <binary>eric6_pluginrepository</binary> + <binary>eric6_pluginuninstall</binary> + <binary>eric6_qregexp</binary> + <binary>eric6_qregularexpression</binary> + <binary>eric6_re</binary> + <binary>eric6_snap</binary> + <binary>eric6_sqlbrowser</binary> + <binary>eric6_tray</binary> + <binary>eric6_trpreviewer</binary> + <binary>eric6_uipreviewer</binary> + <binary>eric6_unittest</binary> + <binary>eric6_webbrowser</binary> + </provides> + <releases> + <release version="@VERSION@" date="@DATE@" /> + </releases> +</component>
--- a/eric6.e4p Tue Oct 11 21:55:03 2016 +0200 +++ b/eric6.e4p Fri Oct 14 23:02:38 2016 +0200 @@ -360,6 +360,7 @@ <Source>Helpviewer/PersonalInformationManager/PersonalInformationManager.py</Source> <Source>Helpviewer/PersonalInformationManager/__init__.py</Source> <Source>Helpviewer/QtHelpDocumentationDialog.py</Source> + <Source>Helpviewer/QtHelpDocumentationSelectionDialog.py</Source> <Source>Helpviewer/QtHelpFiltersDialog.py</Source> <Source>Helpviewer/SearchWidget.py</Source> <Source>Helpviewer/SiteInfo/SiteInfoDialog.py</Source> @@ -1344,6 +1345,7 @@ <Source>WebBrowser/QtHelp/HelpTocWidget.py</Source> <Source>WebBrowser/QtHelp/HelpTopicDialog.py</Source> <Source>WebBrowser/QtHelp/QtHelpDocumentationDialog.py</Source> + <Source>WebBrowser/QtHelp/QtHelpDocumentationSelectionDialog.py</Source> <Source>WebBrowser/QtHelp/QtHelpFiltersDialog.py</Source> <Source>WebBrowser/QtHelp/__init__.py</Source> <Source>WebBrowser/SearchWidget.py</Source> @@ -1376,6 +1378,7 @@ <Source>WebBrowser/TabManager/TabManagerWidget.py</Source> <Source>WebBrowser/TabManager/__init__.py</Source> <Source>WebBrowser/Tools/DelayedFileWatcher.py</Source> + <Source>WebBrowser/Tools/FilePrinter.py</Source> <Source>WebBrowser/Tools/PrintToPdfDialog.py</Source> <Source>WebBrowser/Tools/Scripts.py</Source> <Source>WebBrowser/Tools/WebBrowserTools.py</Source> @@ -1539,6 +1542,7 @@ <Form>Helpviewer/Passwords/PasswordsDialog.ui</Form> <Form>Helpviewer/PersonalInformationManager/PersonalDataDialog.ui</Form> <Form>Helpviewer/QtHelpDocumentationDialog.ui</Form> + <Form>Helpviewer/QtHelpDocumentationSelectionDialog.ui</Form> <Form>Helpviewer/QtHelpFiltersDialog.ui</Form> <Form>Helpviewer/SearchWidget.ui</Form> <Form>Helpviewer/SiteInfo/SiteInfoDialog.ui</Form> @@ -1825,6 +1829,7 @@ <Form>VCS/CommandOptionsDialog.ui</Form> <Form>VCS/RepositoryInfoDialog.ui</Form> <Form>ViewManager/BookmarkedFilesDialog.ui</Form> + <Form>WebBrowser/QtHelp/QtHelpDocumentationSelectionDialog.ui</Form> <Form>WebBrowser/AdBlock/AdBlockDialog.ui</Form> <Form>WebBrowser/AdBlock/AdBlockExceptionsDialog.ui</Form> <Form>WebBrowser/Bookmarks/AddBookmarkDialog.ui</Form> @@ -1883,6 +1888,7 @@ <Translation>i18n/eric6_cs.ts</Translation> <Translation>i18n/eric6_de.qm</Translation> <Translation>i18n/eric6_de.ts</Translation> + <Translation>i18n/eric6_empty.ts</Translation> <Translation>i18n/eric6_en.qm</Translation> <Translation>i18n/eric6_en.ts</Translation> <Translation>i18n/eric6_es.qm</Translation>
--- a/eric6_browser.desktop Tue Oct 11 21:55:03 2016 +0200 +++ b/eric6_browser.desktop Fri Oct 14 23:02:38 2016 +0200 @@ -2,7 +2,7 @@ Version=1.0 Type=Application Exec=eric6_browser@MARKER@ -MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https; +MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-mimearchive; Icon=ericWeb@MARKER@ Terminal=false Name=eric6 Web Browser (QtWebEngine)@PY_MARKER@
--- a/i18n/eric6_cs.ts Tue Oct 11 21:55:03 2016 +0200 +++ b/i18n/eric6_cs.ts Fri Oct 14 23:02:38 2016 +0200 @@ -390,7 +390,7 @@ <context> <name>AddBookmarkDialog</name> <message> - <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.ui" line="26"/> + <location filename="../WebBrowser/Bookmarks/AddBookmarkDialog.py" line="198"/> <source>Add Bookmark</source> <translation>Přidat záložku</translation> </message> @@ -1777,7 +1777,7 @@ <translation>Editovat &adresu</translation> </message> <message> - <location filename="../WebBrowser/Bookmarks/BookmarksDialog.ui" line="75"/> + <location filename="../WebBrowser/Bookmarks/BookmarksDialog.py" line="169"/> <source>&Delete</source> <translation>&Smazat</translation> </message> @@ -2470,12 +2470,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Debugger/CallTraceViewer.ui" line="109"/> + <location filename="../Debugger/CallTraceViewer.py" line="54"/> <source>From</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Debugger/CallTraceViewer.ui" line="114"/> + <location filename="../Debugger/CallTraceViewer.py" line="54"/> <source>To</source> <translation type="unfinished"></translation> </message> @@ -2641,7 +2641,7 @@ <translation>Stisknutím zrušit sdílený editor</translation> </message> <message> - <location filename="../Cooperation/ChatWidget.ui" line="230"/> + <location filename="../Cooperation/ChatWidget.py" line="513"/> <source>Clear</source> <translation>Vyčistit</translation> </message> @@ -2939,7 +2939,7 @@ <context> <name>ClickToFlashWhitelistDialog</name> <message> - <location filename="../Helpviewer/WebPlugins/ClickToFlash/ClickToFlashWhitelistDialog.ui" line="14"/> + <location filename="../Helpviewer/WebPlugins/ClickToFlash/ClickToFlashWhitelistDialog.py" line="54"/> <source>ClickToFlash Whitelist</source> <translation type="unfinished"></translation> </message> @@ -4875,7 +4875,7 @@ <translation type="unfinished">Doména:</translation> </message> <message> - <location filename="../WebBrowser/CookieJar/CookiesDialog.ui" line="223"/> + <location filename="../WebBrowser/CookieJar/CookiesDialog.py" line="177"/> <source><no cookie selected></source> <translation type="unfinished"></translation> </message> @@ -7550,17 +7550,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="198"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="247"/> <source>Download canceled: {0}</source> <translation type="unfinished">Download zrušen: {0}</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="189"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="194"/> <source>Save File</source> <translation type="unfinished">Uložit soubor</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="217"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="266"/> <source>Download directory ({0}) couldn't be created.</source> <translation type="unfinished"></translation> </message> @@ -7580,17 +7580,17 @@ <translation type="unfinished">Chyba sítě: {0}</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="390"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="439"/> <source>?</source> <translation type="unfinished">?</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="401"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="450"/> <source>{0} of {1} - Stopped</source> <translation type="unfinished">{0} z {1} - zastaveno</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="166"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="179"/> <source>VirusTotal scan scheduled: {0}</source> <translation type="unfinished"></translation> </message> @@ -7600,7 +7600,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="389"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="438"/> <source>{0} of {1} ({2}/sec) {3}</source> <translation type="unfinished"></translation> @@ -7613,15 +7613,35 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="398"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="447"/> <source>{0} downloaded</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Download/DownloadItem.py" line="204"/> + <source>Web Archive (*.mhtml *.mht)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Download/DownloadItem.py" line="205"/> + <source>HTML File (*.html *.htm)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Download/DownloadItem.py" line="206"/> + <source>HTML File with all resources (*.html *.htm)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Download/DownloadItem.py" line="216"/> + <source>Save Web Page</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>DownloadManager</name> <message> - <location filename="../WebBrowser/Download/DownloadManager.ui" line="14"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="363"/> <source>Downloads</source> <translation type="unfinished"></translation> </message> @@ -8078,92 +8098,92 @@ <translation type="unfinished">Standardní tlačítka</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="257"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="41"/> <source>Abort</source> <translation type="unfinished">Přerušit</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="264"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="42"/> <source>Apply</source> <translation type="unfinished">Použít</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="271"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="43"/> <source>Cancel</source> <translation type="unfinished">Zrušit</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="278"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="44"/> <source>Close</source> <translation type="unfinished">Zavřít</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="285"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="45"/> <source>Discard</source> <translation type="unfinished">Zahodit</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="292"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="46"/> <source>Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="299"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="47"/> <source>Ignore</source> <translation type="unfinished">Ignorovat</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="306"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="48"/> <source>No</source> <translation type="unfinished">Ne</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="313"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="49"/> <source>No to all</source> <translation type="unfinished">Ne pro všechno</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="320"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="50"/> <source>Ok</source> <translation type="unfinished">Ok</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="327"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="51"/> <source>Open</source> <translation type="unfinished">Otevřít</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="334"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="52"/> <source>Reset</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="341"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="53"/> <source>Restore defaults</source> <translation type="unfinished">Obnovit defaulty</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="348"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="54"/> <source>Retry</source> <translation type="unfinished">Vrátit</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="355"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="55"/> <source>Save</source> <translation type="unfinished">Uložit</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="362"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="56"/> <source>Save all</source> <translation type="unfinished">Uložit vše</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="369"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="57"/> <source>Yes</source> <translation type="unfinished">Ano</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.ui" line="376"/> + <location filename="../Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py" line="58"/> <source>Yes to all</source> <translation type="unfinished">Ano pro všechno</translation> </message> @@ -10173,7 +10193,7 @@ <translation>Stiskněte pro výběr API souboru ze seznamu instalovaných API</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAPIsPage.ui" line="132"/> + <location filename="../Preferences/ConfigurationPages/EditorAPIsPage.py" line="184"/> <source>Add from installed APIs</source> <translation>Přidat z instalovaných API</translation> </message> @@ -10183,7 +10203,7 @@ <translation>Stiskněte pro kompilování vybrané API definici</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAPIsPage.ui" line="159"/> + <location filename="../Preferences/ConfigurationPages/EditorAPIsPage.py" line="236"/> <source>Compile APIs</source> <translation>Kompilovat API</translation> </message> @@ -10248,7 +10268,7 @@ <translation>Stiskněte pro výběr API souboru ze seznamu API souborů instalovaných z pluginů</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAPIsPage.ui" line="142"/> + <location filename="../Preferences/ConfigurationPages/EditorAPIsPage.py" line="203"/> <source>Add from Plugin APIs</source> <translation>Přidat z API pluginů</translation> </message> @@ -11262,7 +11282,7 @@ <translation>Výběr výplně konce řádku.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorHighlightingStylesPage.ui" line="113"/> + <location filename="../Preferences/ConfigurationPages/EditorHighlightingStylesPage.py" line="353"/> <source>Fill to end of line</source> <translation>Vyplnit do konce řádku</translation> </message> @@ -11307,7 +11327,7 @@ <translation>Vybrat font.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorHighlightingStylesPage.ui" line="103"/> + <location filename="../Preferences/ConfigurationPages/EditorHighlightingStylesPage.py" line="69"/> <source>Font</source> <translation></translation> </message> @@ -12758,7 +12778,7 @@ <translation>Mód:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1080"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.py" line="58"/> <source>Disabled</source> <translation>Vypnuto</translation> </message> @@ -13542,7 +13562,7 @@ <context> <name>EmailDialog</name> <message> - <location filename="../UI/EmailDialog.ui" line="13"/> + <location filename="../UI/EmailDialog.py" line="339"/> <source>Send bug report</source> <translation>Odeslat hlášení o chybách</translation> </message> @@ -14987,12 +15007,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/FeaturePermissions/FeaturePermissionsDialog.ui" line="122"/> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="110"/> <source>Host</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/FeaturePermissions/FeaturePermissionsDialog.ui" line="127"/> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="111"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -15007,7 +15027,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/FeaturePermissions/FeaturePermissionsDialog.ui" line="97"/> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="51"/> <source>Geolocation</source> <translation type="unfinished"></translation> </message> @@ -16151,7 +16171,7 @@ <translation type="unfinished">Jméno:</translation> </message> <message> - <location filename="../WebBrowser/FlashCookieManager/FlashCookieManagerDialog.ui" line="158"/> + <location filename="../WebBrowser/FlashCookieManager/FlashCookieManagerDialog.py" line="193"/> <source><no flash cookie selected></source> <translation type="unfinished"></translation> </message> @@ -16161,7 +16181,7 @@ <translation type="unfinished">Velikost:</translation> </message> <message> - <location filename="../WebBrowser/FlashCookieManager/FlashCookieManagerDialog.ui" line="137"/> + <location filename="../WebBrowser/FlashCookieManager/FlashCookieManagerDialog.py" line="122"/> <source>Origin:</source> <translation type="unfinished"></translation> </message> @@ -16196,7 +16216,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/FlashCookieManager/FlashCookieManagerDialog.ui" line="225"/> + <location filename="../WebBrowser/FlashCookieManager/FlashCookieManagerDialog.py" line="213"/> <source>Remove Cookie</source> <translation type="unfinished"></translation> </message> @@ -16622,7 +16642,7 @@ <context> <name>GreaseMonkeyAddScriptDialog</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyAddScriptDialog.ui" line="14"/> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyAddScriptDialog.py" line="105"/> <source>GreaseMonkey Script Installation</source> <translation type="unfinished"></translation> </message> @@ -16922,357 +16942,357 @@ <context> <name>HelpBrowser</name> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1208"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1218"/> <source>Open Link in New Tab<byte value="x9"/>Ctrl+LMB</source> <translation>Otevřít odkaz v novém tab okně<byte value="x9"/>Ctrl+LMB</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="741"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="744"/> <source><b>Help Window</b><p>This window displays the selected help information.</p></source> <translation><b>Okno nápovědy</b><p>Toto okno zobrazí vybranou informaci nápovědy.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1467"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1477"/> <source>Web Inspector...</source> <translation>Web inspektor...</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2140"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2150"/> <source>Check the address for errors such as <b>ww</b>.example.org instead of <b>www</b>.example.org</source> <translation>Zkontrolujte adresu na chyby jako je <b>ww</b>.example.org místo <b>www</b>.example.org</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2145"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2155"/> <source>If the address is correct, try checking the network connection.</source> <translation>Je-li adresa vpořádku, prověřte síťové spojení.</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2149"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2159"/> <source>If your computer or network is protected by a firewall or proxy, make sure that the browser is permitted to access the network.</source> <translation>Je-li vaše šíť chráněna firewallem nebo proxy, ujistěte se, že váš prohlížeč má na tuto síť povolen přístup.</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1386"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1396"/> <source>Bookmark this Page</source> <translation>Záložka na tuto stranu</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1213"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1223"/> <source>Save Lin&k</source> <translation>Uložit lin&k</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1216"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1226"/> <source>Bookmark this Link</source> <translation>Záložka na tento link</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1221"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1231"/> <source>Copy Link to Clipboard</source> <translation>Kopírovat link do schránky</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1238"/> - <source>Open Image in New Tab</source> - <translation>Otevřít obrázek v novém tabu</translation> - </message> - <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1243"/> - <source>Save Image</source> - <translation>Uložit obrázek</translation> - </message> - <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1246"/> - <source>Copy Image to Clipboard</source> - <translation>Kopíroavt obrázek do schránky</translation> - </message> - <message> <location filename="../Helpviewer/HelpBrowserWV.py" line="1248"/> + <source>Open Image in New Tab</source> + <translation>Otevřít obrázek v novém tabu</translation> + </message> + <message> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1253"/> + <source>Save Image</source> + <translation>Uložit obrázek</translation> + </message> + <message> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1256"/> + <source>Copy Image to Clipboard</source> + <translation>Kopíroavt obrázek do schránky</translation> + </message> + <message> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1258"/> <source>Copy Image Location to Clipboard</source> <translation>Kopírovat cestu obrázku do schránky</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1257"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1267"/> <source>Block Image</source> <translation>Blokovat obrázek</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1414"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1424"/> <source>Search with...</source> <translation>Hledat s...</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="919"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="929"/> <source><p>The file <b>{0}</b> does not exist.</p></source> <translation><p>Soubor <b>{}</b> neexistuje.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="964"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="974"/> <source><p>Could not start a viewer for file <b>{0}</b>.</p></source> <translation><p>Nelze spustit prohlížeč se souborem <b>{0}</b>.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="944"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="954"/> <source><p>Could not start an application for URL <b>{0}</b>.</p></source> <translation><p>Nelze spustit aplikaci pro URL <b>{0}</b>.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2119"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2129"/> <source>Error loading page: {0}</source> <translation>Chyba při načítání strany: {0}</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2137"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2147"/> <source>When connecting to: {0}.</source> <translation>Při připojení na: {0}.</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2200"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2210"/> <source>Web Database Quota</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2200"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2210"/> <source><p>The database quota of <strong>{0}</strong> has been exceeded while accessing database <strong>{1}</strong>.</p><p>Shall it be changed?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2211"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2221"/> <source>New Web Database Quota</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2211"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2221"/> <source>Enter the new quota in MB (current = {0}, used = {1}; step size = 5 MB):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2235"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2245"/> <source>bytes</source> <translation type="unfinished">bajty</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2238"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2248"/> <source>kB</source> <translation type="unfinished">kB</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2241"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2251"/> <source>MB</source> <translation type="unfinished">MB</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1463"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1473"/> <source>Add to web search toolbar</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1642"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1652"/> <source>Method not supported</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1642"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1652"/> <source>{0} method is not supported.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1702"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1712"/> <source>Search engine</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1702"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1712"/> <source>Choose the desired search engine</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1724"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1734"/> <source>Engine name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1724"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1734"/> <source>Enter a name for the engine</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2155"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2165"/> <source>If your cache policy is set to offline browsing,only pages in the local cache are available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1230"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1240"/> <source>Scan Link with VirusTotal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1263"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1273"/> <source>Scan Image with VirusTotal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1224"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1234"/> <source>Send Link</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1252"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1262"/> <source>Send Image Link</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1348"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1358"/> <source>This Frame</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1351"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1361"/> <source>Show &only this frame</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1354"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1364"/> <source>Show in new &tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1359"/> - <source>&Print</source> - <translation type="unfinished">&Tisk</translation> - </message> - <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1362"/> - <source>Print Preview</source> - <translation type="unfinished">Náhled tisku</translation> - </message> - <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1365"/> - <source>Print as PDF</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Helpviewer/HelpBrowserWV.py" line="1369"/> - <source>Zoom &in</source> - <translation type="unfinished">Př&iblížit</translation> + <source>&Print</source> + <translation type="unfinished">&Tisk</translation> </message> <message> <location filename="../Helpviewer/HelpBrowserWV.py" line="1372"/> - <source>Zoom &reset</source> - <translation type="unfinished">&Resetovat lupu</translation> + <source>Print Preview</source> + <translation type="unfinished">Náhled tisku</translation> </message> <message> <location filename="../Helpviewer/HelpBrowserWV.py" line="1375"/> - <source>Zoom &out</source> - <translation type="unfinished">&Oddálit</translation> + <source>Print as PDF</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../Helpviewer/HelpBrowserWV.py" line="1379"/> - <source>Show frame so&urce</source> - <translation type="unfinished"></translation> + <source>Zoom &in</source> + <translation type="unfinished">Př&iblížit</translation> + </message> + <message> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1382"/> + <source>Zoom &reset</source> + <translation type="unfinished">&Resetovat lupu</translation> + </message> + <message> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1385"/> + <source>Zoom &out</source> + <translation type="unfinished">&Oddálit</translation> </message> <message> <location filename="../Helpviewer/HelpBrowserWV.py" line="1389"/> + <source>Show frame so&urce</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1399"/> <source>Send Page Link</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1407"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1417"/> <source>Send Text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1439"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1449"/> <source>Google Translate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1446"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1456"/> <source>Dictionary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1454"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1464"/> <source>Go to web address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1393"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1403"/> <source>User Agent</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2160"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2170"/> <source>Try Again</source> <translation type="unfinished">Zkusit znova</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1281"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1291"/> <source>Play</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1285"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1295"/> <source>Pause</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1289"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1299"/> <source>Unmute</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1293"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1303"/> <source>Mute</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1297"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1307"/> <source>Copy Media Address to Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1301"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1311"/> <source>Send Media Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1305"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1315"/> <source>Save Media</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2596"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2606"/> <source>eric6 Web Browser</source> <translation type="unfinished">eric5 web prohlížeč {6 ?}</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2596"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2606"/> <source><p>Printing is not available due to a bug in PyQt5. Please upgrade.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="2564"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="2574"/> <source><p>Printing is not available due to a bug in PyQt5.Please upgrade.</p></source> <translation type="unfinished"><p>Tisk není dostupný kvůli bugu v PyQt4.Please upgrade.</p> {5.?}</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1188"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1198"/> <source>Add New Page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1191"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1201"/> <source>Configure Speed Dial</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1195"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1205"/> <source>Reload All Dials</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="1199"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="1209"/> <source>Reset to Default Dials</source> <translation type="unfinished"></translation> </message> @@ -18631,82 +18651,82 @@ <context> <name>HelpWebPage</name> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="372"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="375"/> <source>Error loading page: {0}</source> <translation>Chyba při načítání strany: {0}</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="391"/> - <source>When connecting to: {0}.</source> - <translation>Při připojení na: {0}.</translation> - </message> - <message> <location filename="../Helpviewer/HelpBrowserWV.py" line="394"/> + <source>When connecting to: {0}.</source> + <translation>Při připojení na: {0}.</translation> + </message> + <message> + <location filename="../Helpviewer/HelpBrowserWV.py" line="397"/> <source>Check the address for errors such as <b>ww</b>.example.org instead of <b>www</b>.example.org</source> <translation>Zkontrolujte adresu na chyby jako je <b>ww</b>.example.org místo <b>www</b>.example.org</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="399"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="402"/> <source>If the address is correct, try checking the network connection.</source> <translation>Je-li adresa v pořádku, prověřte síťové spojení.</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="404"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="407"/> <source>If your computer or network is protected by a firewall or proxy, make sure that the browser is permitted to access the network.</source> <translation>Je-li vaše šíť chráněna firewallem nebo proxy, ujistěte se, že váš prohlížeč má na tuto síť povolen přístup.</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="410"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="413"/> <source>If your cache policy is set to offline browsing,only pages in the local cache are available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="223"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="226"/> <source>Resending POST request</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="223"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="226"/> <source>In order to display the site, the request along with all the data must be sent once again, which may lead to some unexpected behaviour of the site e.g. the same action might be performed once again. Do you want to continue anyway?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="415"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="418"/> <source>Try Again</source> <translation type="unfinished">Zkusit znova</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="347"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="350"/> <source>Content blocked by AdBlock Plus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="348"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="351"/> <source>Blocked by rule: <i>{0}</i></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="305"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="308"/> <source>Select files to upload...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="580"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="583"/> <source>SSL Info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="580"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="583"/> <source>This site does not contain SSL information.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="320"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="323"/> <source>Protocol Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="320"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="323"/> <source>Open external application for {0}-link? URL: {1}</source> <translation type="unfinished"></translation> @@ -19418,7 +19438,7 @@ <translation><b>Předvolby</b><p>Upravit položky konfigurace aplikace podle vašich předvoleb.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="190"/> + <location filename="../Helpviewer/HelpWindow.py" line="191"/> <source>Contents</source> <translation>Obsah</translation> </message> @@ -19488,7 +19508,7 @@ <translation>Filtrováno: </translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2691"/> + <location filename="../Helpviewer/HelpWindow.py" line="2703"/> <source>Could not find an associated content.</source> <translation>Asociovaný obsah nelze nalézt.</translation> </message> @@ -19553,22 +19573,22 @@ <translation><b>Znovu indexovat dokumentaci</b><p>Přeindexuje dokumentaci.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2814"/> + <location filename="../Helpviewer/HelpWindow.py" line="2826"/> <source>Updating search index</source> <translation>Aktualizovat index pro hledání</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2884"/> + <location filename="../Helpviewer/HelpWindow.py" line="2896"/> <source>Looking for Documentation...</source> <translation>Vyhledat dokumentaci...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2919"/> + <location filename="../Helpviewer/HelpWindow.py" line="2931"/> <source>Unfiltered</source> <translation>Nefiltrováno</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2938"/> + <location filename="../Helpviewer/HelpWindow.py" line="2950"/> <source>Help Engine</source> <translation>Engine nápovědy</translation> </message> @@ -20065,37 +20085,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3453"/> + <location filename="../Helpviewer/HelpWindow.py" line="3465"/> <source>ISO</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3454"/> + <location filename="../Helpviewer/HelpWindow.py" line="3466"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3455"/> + <location filename="../Helpviewer/HelpWindow.py" line="3467"/> <source>ISCII</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3456"/> + <location filename="../Helpviewer/HelpWindow.py" line="3468"/> <source>Unicode</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3457"/> + <location filename="../Helpviewer/HelpWindow.py" line="3469"/> <source>Other</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3458"/> + <location filename="../Helpviewer/HelpWindow.py" line="3470"/> <source>IBM</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3480"/> + <location filename="../Helpviewer/HelpWindow.py" line="3492"/> <source>Default Encoding</source> <translation type="unfinished"></translation> </message> @@ -20125,12 +20145,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3718"/> + <location filename="../Helpviewer/HelpWindow.py" line="3730"/> <source>VirusTotal Scan</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3718"/> + <location filename="../Helpviewer/HelpWindow.py" line="3730"/> <source><p>The VirusTotal scan could not be scheduled.<p> <p>Reason: {0}</p></source> <translation type="unfinished"></translation> @@ -20415,7 +20435,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2894"/> + <location filename="../Helpviewer/HelpWindow.py" line="2906"/> <source>eric6 Web Browser</source> <translation type="unfinished">eric5 web prohlížeč {6 ?}</translation> </message> @@ -20435,27 +20455,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3753"/> + <location filename="../Helpviewer/HelpWindow.py" line="3765"/> <source>IP Address Report</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3763"/> + <location filename="../Helpviewer/HelpWindow.py" line="3775"/> <source>Domain Report</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3744"/> + <location filename="../Helpviewer/HelpWindow.py" line="3756"/> <source>Enter a valid IPv4 address in dotted quad notation:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3753"/> + <location filename="../Helpviewer/HelpWindow.py" line="3765"/> <source>The given IP address is not in dotted quad notation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3763"/> + <location filename="../Helpviewer/HelpWindow.py" line="3775"/> <source>Enter a valid domain name:</source> <translation type="unfinished"></translation> </message> @@ -22319,7 +22339,7 @@ <context> <name>HgAddSubrepositoryDialog</name> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgAddSubrepositoryDialog.ui" line="14"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgAddSubrepositoryDialog.py" line="98"/> <source>Add Sub-repository</source> <translation type="unfinished"></translation> </message> @@ -23404,7 +23424,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgConflictsListDialog.ui" line="73"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgConflictsListDialog.py" line="247"/> <source>Resolved</source> <translation type="unfinished"></translation> </message> @@ -23414,7 +23434,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgConflictsListDialog.ui" line="83"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgConflictsListDialog.py" line="245"/> <source>Unresolved</source> <translation type="unfinished"></translation> </message> @@ -24038,7 +24058,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/GpgExtension/HgGpgSignaturesDialog.ui" line="55"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/GpgExtension/HgGpgSignaturesDialog.py" line="317"/> <source>Revision</source> <translation type="unfinished">Revize</translation> </message> @@ -24317,7 +24337,7 @@ <context> <name>HgLogBrowserDialog</name> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.ui" line="14"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="71"/> <source>Mercurial Log</source> <translation></translation> </message> @@ -24347,17 +24367,17 @@ <translation>Vybrat pole pro filtrování</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.ui" line="181"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="96"/> <source>Revision</source> <translation>Revize</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.ui" line="191"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="97"/> <source>Author</source> <translation>Autor</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.ui" line="201"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="98"/> <source>Message</source> <translation>Zpráva</translation> </message> @@ -26027,37 +26047,37 @@ <translation>Vytvořit skupinu změn...</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="785"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="786"/> <source>Create changegroup file collecting changesets</source> <translation>Vytvořit soubor s skupinou změn obsahující množinu změn</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1776"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1786"/> <source>Apply changegroups</source> <translation>Použít skupinu změn</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="811"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="813"/> <source>Apply changegroups...</source> <translation>Použít skupinu změn...</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="815"/> - <source>Apply one or several changegroup files</source> - <translation>Použít soubory s jednou nebo více skupinami změn</translation> - </message> - <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1295"/> - <source>Changegroup Management</source> - <translation>Správa skupin změn</translation> - </message> - <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="788"/> - <source><b>Create changegroup</b><p>This creates a changegroup file collecting selected changesets (hg bundle).</p></source> - <translation><b>Vytvořit skupin změn</b><p>Vytvoří soubor se skupinou změn obsahující vybrané množiny změn (hg bundle).</p></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="818"/> + <source>Apply one or several changegroup files</source> + <translation>Použít soubory s jednou nebo více skupinami změn</translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1300"/> + <source>Changegroup Management</source> + <translation>Správa skupin změn</translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="789"/> + <source><b>Create changegroup</b><p>This creates a changegroup file collecting selected changesets (hg bundle).</p></source> + <translation><b>Vytvořit skupin změn</b><p>Vytvoří soubor se skupinou změn obsahující vybrané množiny změn (hg bundle).</p></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="821"/> <source><b>Apply changegroups</b><p>This applies one or several changegroup files generated by the 'Create changegroup' action (hg unbundle).</p></source> <translation><b>Použít skupinu změn</b><p>Použije se soubor vygenerovaný příkazem 'Vytvořit skupinu změn', s jednou nebo více skupinami změn (hg unbundle)</p></translation> </message> @@ -26077,77 +26097,77 @@ <translation><b>Zobrazit aktuální větev</b><p>Zobrazí se aktuální větev projektu.</p></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="826"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="829"/> <source>Mark as "good"</source> <translation>Označit jako "v pořádku"</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="830"/> - <source>Mark a selectable changeset as good</source> - <translation>Označit volitelnou množinu změn, že je v pořádku</translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="833"/> + <source>Mark a selectable changeset as good</source> + <translation>Označit volitelnou množinu změn, že je v pořádku</translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="836"/> <source><b>Mark as good</b><p>This marks a selectable changeset as good.</p></source> <translation><b>Označit jako "v pořádku"</b><p>Označí se volitelná množina změn, že je v pořádku.</p></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="840"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="843"/> <source>Mark as "bad"</source> <translation>Označit jako "špatná"</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="844"/> - <source>Mark a selectable changeset as bad</source> - <translation>Označit volitelnou množinu změn jako špatnou</translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="847"/> + <source>Mark a selectable changeset as bad</source> + <translation>Označit volitelnou množinu změn jako špatnou</translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="850"/> <source><b>Mark as bad</b><p>This marks a selectable changeset as bad.</p></source> <translation><b>Označit jako "špatná"</b><p>Označí se volitelná množina změn, že je špatná.</p></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="854"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="857"/> <source>Skip</source> <translation>Přeskočit</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="868"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="871"/> <source>Reset</source> <translation>Reset</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="872"/> - <source>Reset the bisect search data</source> - <translation>Reset vyhledávání bisect</translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="875"/> + <source>Reset the bisect search data</source> + <translation>Reset vyhledávání bisect</translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="878"/> <source><b>Reset</b><p>This resets the bisect search data.</p></source> <translation><b>Reset</b><p>Zresetuje bisect vyhledávání v datech.</p></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1308"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1313"/> <source>Bisect</source> <translation>Bisect</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="826"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="829"/> <source>Mark as "good"...</source> <translation>Označit jako "v pořádku"...</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="840"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="843"/> <source>Mark as "bad"...</source> <translation>Označit jako "špatná"...</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="796"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="797"/> <source>Preview changegroup</source> <translation>Náhled skupiny změn</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="796"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="797"/> <source>Preview changegroup...</source> <translation>Náhled skupiny změn...</translation> </message> @@ -26172,27 +26192,27 @@ <translation><b>Identifikovat</b><p>Identifikuje se adresář projektu.</p></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="800"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="802"/> <source>Preview a changegroup file containing a collection of changesets</source> <translation>Náhled souboru skupiny změn obsahující množiny změn</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="803"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="805"/> <source><b>Preview changegroup</b><p>This previews a changegroup file containing a collection of changesets.</p></source> <translation><b>Náhled skupiny změn</b><p>Zobrazí náhled souboru skupiny změn obsahující množiny změn.</p></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="882"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="885"/> <source>Back out changeset</source> <translation>Vycouvat z množiny změn</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="886"/> - <source>Back out changes of an earlier changeset</source> - <translation>Vrátit změny z předchozí množiny změn</translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="889"/> + <source>Back out changes of an earlier changeset</source> + <translation>Vrátit změny z předchozí množiny změn</translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="892"/> <source><b>Back out changeset</b><p>This backs out changes of an earlier changeset.</p></source> <translation><b>Vycouvat z množiny změn</b><p>Vrátit změny z předchozí množiny změn.</p></translation> </message> @@ -26212,37 +26232,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="923"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="926"/> <source>Serve project repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="923"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="926"/> <source>Serve project repository...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="927"/> - <source>Serve the project repository</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="930"/> + <source>Serve the project repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="933"/> <source><b>Serve project repository</b><p>This serves the project repository.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1286"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1291"/> <source>Specials</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1593"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1603"/> <source>Pull</source> <translation type="unfinished">Stáhnout</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1887"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1897"/> <source>The project should be reread. Do this now?</source> <translation type="unfinished">Projekt bude znovu načten. Má se provést?</translation> </message> @@ -26262,17 +26282,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="896"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="899"/> <source>Rollback last transaction</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="900"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="903"/> <source>Rollback the last transaction</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1353"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1358"/> <source>Extensions</source> <translation type="unfinished"></translation> </message> @@ -26337,127 +26357,127 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="854"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="857"/> <source>Skip...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="858"/> - <source>Skip a selectable changeset</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="861"/> + <source>Skip a selectable changeset</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="864"/> <source><b>Skip</b><p>This skips a selectable changeset.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1832"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1842"/> <source>Import Patch</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="937"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="940"/> <source>Import Patch...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="941"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="945"/> <source>Import a patch from a patch file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="944"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="948"/> <source><b>Import Patch</b><p>This imports a patch from a patch file into the project.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1302"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1307"/> <source>Patch Management</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1852"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1862"/> <source>Revert Changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="952"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="956"/> <source>Export Patches</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="952"/> - <source>Export Patches...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="956"/> + <source>Export Patches...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="961"/> <source>Export revisions to patch files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="959"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="964"/> <source><b>Export Patches</b><p>This exports revisions of the project to patch files.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="966"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="971"/> <source>Change Phase</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="966"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="971"/> <source>Change Phase...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="970"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="975"/> <source>Change the phase of revisions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="973"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="978"/> <source><b>Change Phase</b><p>This changes the phase of revisions.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1872"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1882"/> <source>Copy Changesets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="985"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="990"/> <source>Copies changesets from another branch</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="988"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="993"/> <source><b>Copy Changesets</b><p>This copies changesets from another branch on top of the current working directory with the user, date and description of the original changeset.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="997"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1002"/> <source>Continue Copying Session</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1001"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1006"/> <source>Continue the last copying session after conflicts were resolved</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1004"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1009"/> <source><b>Continue Copying Session</b><p>This continues the last copying session after conflicts were resolved.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1364"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1369"/> <source>Graft</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1887"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1897"/> <source>Copy Changesets (Continue)</source> <translation type="unfinished"></translation> </message> @@ -26482,47 +26502,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1012"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1017"/> <source>Add</source> <translation type="unfinished">Přidat</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1012"/> - <source>Add...</source> - <translation type="unfinished">Přidat...</translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1017"/> + <source>Add...</source> + <translation type="unfinished">Přidat...</translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1022"/> <source>Add a sub-repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1020"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1025"/> <source><b>Add...</b><p>Add a sub-repository to the project.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1027"/> - <source>Remove</source> - <translation type="unfinished">Odebrat</translation> - </message> - <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1027"/> - <source>Remove...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1032"/> + <source>Remove</source> + <translation type="unfinished">Odebrat</translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1032"/> + <source>Remove...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1037"/> <source>Remove sub-repositories</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1035"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1040"/> <source><b>Remove...</b><p>Remove sub-repositories from the project.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1370"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1375"/> <source>Sub-Repository</source> <translation type="unfinished"></translation> </message> @@ -26552,32 +26572,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1043"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1048"/> <source>Create unversioned archive</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1043"/> - <source>Create unversioned archive...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1048"/> + <source>Create unversioned archive...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1053"/> <source>Create an unversioned archive from the repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1051"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1056"/> <source><b>Create unversioned archive...</b><p>This creates an unversioned archive from the repository.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="903"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="906"/> <source><b>Rollback last transaction</b><p>This performs a rollback of the last transaction. Transactions are used to encapsulate the effects of all commands that create new changesets or propagate existing changesets into a repository. For example, the following commands are transactional, and their effects can be rolled back:<ul><li>commit</li><li>import</li><li>pull</li><li>push (with this repository as the destination)</li><li>unbundle</li></ul></p><p><strong>This command is dangerous. Please use with care. </strong></p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1263"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1268"/> <source>Administration</source> <translation type="unfinished"></translation> </message> @@ -26617,177 +26637,177 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1059"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1064"/> <source>List bookmarks</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1059"/> - <source>List bookmarks...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1064"/> + <source>List bookmarks...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1069"/> <source>List bookmarks of the project</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1067"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1072"/> <source><b>List bookmarks</b><p>This lists the bookmarks of the project.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1074"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1079"/> <source>Define bookmark</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1074"/> - <source>Define bookmark...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1079"/> + <source>Define bookmark...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1084"/> <source>Define a bookmark for the project</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1082"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1087"/> <source><b>Define bookmark</b><p>This defines a bookmark for the project.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1089"/> - <source>Delete bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1089"/> - <source>Delete bookmark...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1094"/> + <source>Delete bookmark</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1094"/> + <source>Delete bookmark...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1099"/> <source>Delete a bookmark of the project</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1097"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1102"/> <source><b>Delete bookmark</b><p>This deletes a bookmark of the project.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1104"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1109"/> <source>Rename bookmark</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1104"/> - <source>Rename bookmark...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1109"/> + <source>Rename bookmark...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1114"/> <source>Rename a bookmark of the project</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1112"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1117"/> <source><b>Rename bookmark</b><p>This renames a bookmark of the project.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1119"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1124"/> <source>Move bookmark</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1119"/> - <source>Move bookmark...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1124"/> + <source>Move bookmark...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1129"/> <source>Move a bookmark of the project</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1127"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1132"/> <source><b>Move bookmark</b><p>This moves a bookmark of the project to another changeset.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1135"/> - <source>Show incoming bookmarks</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1140"/> + <source>Show incoming bookmarks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1145"/> <source>Show a list of incoming bookmarks</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1143"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1148"/> <source><b>Show incoming bookmarks</b><p>This shows a list of new bookmarks available at the remote repository.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1152"/> - <source>Pull bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1157"/> + <source>Pull bookmark</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1162"/> <source>Pull a bookmark from a remote repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1160"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1165"/> <source><b>Pull bookmark</b><p>This pulls a bookmark from a remote repository into the local repository.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1184"/> - <source>Show outgoing bookmarks</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1189"/> + <source>Show outgoing bookmarks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1194"/> <source>Show a list of outgoing bookmarks</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1192"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1197"/> <source><b>Show outgoing bookmarks</b><p>This shows a list of new bookmarks available at the local repository.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1201"/> - <source>Push bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1206"/> + <source>Push bookmark</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1211"/> <source>Push a bookmark to a remote repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1209"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1214"/> <source><b>Push bookmark</b><p>This pushes a bookmark from the local repository to a remote repository.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1332"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1337"/> <source>Bookmarks</source> <translation type="unfinished">Záložky</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1316"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1321"/> <source>Tags</source> <translation type="unfinished">Tagy</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1323"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1328"/> <source>Branches</source> <translation type="unfinished"></translation> </message> @@ -26837,7 +26857,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1375"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1380"/> <source>Manage Changes</source> <translation type="unfinished"></translation> </message> @@ -26847,37 +26867,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1461"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1466"/> <source>Mercurial</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1168"/> - <source>Pull current bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1173"/> + <source>Pull current bookmark</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1178"/> <source>Pull the current bookmark from a remote repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1176"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1181"/> <source><b>Pull current bookmark</b><p>This pulls the current bookmark from a remote repository into the local repository.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1217"/> - <source>Push current bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1222"/> + <source>Push current bookmark</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1227"/> <source>Push the current bookmark to a remote repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1225"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py" line="1230"/> <source><b>Push current bookmark</b><p>This pushes the current bookmark from the local repository to a remote repository.</p></source> <translation type="unfinished"></translation> </message> @@ -28224,7 +28244,7 @@ <context> <name>HgStatusDialog</name> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.ui" line="14"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py" line="313"/> <source>Mercurial Status</source> <translation>Mercurial status</translation> </message> @@ -28365,7 +28385,7 @@ <translation>Proces {0} nelze spustit. Ověřte, že je umístěn v požadované cestě.</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.ui" line="87"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py" line="708"/> <source>Commit</source> <translation>Zapsat měny</translation> </message> @@ -28485,7 +28505,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.ui" line="203"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py" line="854"/> <source>Differences</source> <translation type="unfinished"></translation> </message> @@ -29252,7 +29272,7 @@ <translation>Stisknout pro odebrání vybraných položek</translation> </message> <message> - <location filename="../WebBrowser/History/HistoryDialog.ui" line="75"/> + <location filename="../WebBrowser/History/HistoryDialog.py" line="114"/> <source>&Remove</source> <translation>Odeb&rat</translation> </message> @@ -33340,27 +33360,27 @@ <context> <name>JavaScriptEricObject</name> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="107"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="110"/> <source>Search!</source> <translation>Hledat!</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="146"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="149"/> <source>Search results provided by {0}</source> <translation>Výsledek vyhledávání dodaný od {0}</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="104"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="107"/> <source>Welcome to eric6 Web Browser!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="106"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="109"/> <source>eric6 Web Browser</source> <translation type="unfinished">eric5 web prohlížeč {6 ?}</translation> </message> <message> - <location filename="../Helpviewer/HelpBrowserWV.py" line="108"/> + <location filename="../Helpviewer/HelpBrowserWV.py" line="111"/> <source>About eric6</source> <translation type="unfinished"></translation> </message> @@ -35131,92 +35151,92 @@ <translation>Standardní tlačítka</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="219"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="40"/> <source>Apply</source> <translation>Použít</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="226"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="39"/> <source>Abort</source> <translation>Přerušit</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="233"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="41"/> <source>Cancel</source> <translation>Zrušit</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="240"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="45"/> <source>Ignore</source> <translation>Ignorovat</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="247"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="54"/> <source>Save all</source> <translation>Uložit vše</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="254"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="53"/> <source>Save</source> <translation>Uložit</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="261"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="43"/> <source>Discard</source> <translation>Zahodit</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="268"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="56"/> <source>Yes to all</source> <translation>Ano pro všechno</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="275"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="49"/> <source>Open</source> <translation>Otevřít</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="282"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="50"/> <source>Reset</source> <translation>Reset</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="289"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="48"/> <source>Ok</source> <translation>Ok</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="296"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="46"/> <source>No</source> <translation>Ne</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="303"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="44"/> <source>Help</source> <translation>Pomoc</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="310"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="47"/> <source>No to all</source> <translation>Ne pro všechno</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="317"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="52"/> <source>Retry</source> <translation>Vrátit</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="324"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="51"/> <source>Restore defaults</source> <translation>Obnovit defaulty</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="331"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="55"/> <source>Yes</source> <translation>Ano</translation> </message> <message> - <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.ui" line="338"/> + <location filename="../Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py" line="42"/> <source>Close</source> <translation>Zavřít</translation> </message> @@ -36966,7 +36986,7 @@ <context> <name>NoCacheHostsDialog</name> <message> - <location filename="../Helpviewer/Network/NoCacheHostsDialog.ui" line="14"/> + <location filename="../Helpviewer/Network/NoCacheHostsDialog.py" line="52"/> <source>Not Cached Hosts</source> <translation type="unfinished"></translation> </message> @@ -37074,7 +37094,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/NotificationsPage.ui" line="146"/> + <location filename="../Preferences/ConfigurationPages/NotificationsPage.py" line="81"/> <source>Visual Selection</source> <translation type="unfinished"></translation> </message> @@ -37745,7 +37765,7 @@ <context> <name>PasswordsDialog</name> <message> - <location filename="../WebBrowser/Passwords/PasswordsDialog.ui" line="14"/> + <location filename="../WebBrowser/Passwords/PasswordsDialog.py" line="91"/> <source>Saved Passwords</source> <translation>Uložená hesla</translation> </message> @@ -38391,7 +38411,7 @@ <translation>Modulu chybí atributy 'pluginType' a/nebo 'pluginTypename'.</translation> </message> <message> - <location filename="../PluginManager/PluginManager.py" line="1086"/> + <location filename="../PluginManager/PluginManager.py" line="1103"/> <source>Plugin Manager Error</source> <translation>Chyba plugin manažeru</translation> </message> @@ -38411,27 +38431,27 @@ <translation>Modul se nepodařilo načíst. Chyba: {0}</translation> </message> <message> - <location filename="../PluginManager/PluginManager.py" line="1086"/> + <location filename="../PluginManager/PluginManager.py" line="1103"/> <source><p>The plugin download directory <b>{0}</b> could not be created. Please configure it via the configuration dialog.</p><p>Reason: {1}</p></source> <translation><p>Download plugin adresář <b>{0}</b> se nepodařilo vytvořit. Prosím, upravte nastavení přes konfigurační dialog.</p><p>Důvod: {1}</p></translation> </message> <message> - <location filename="../PluginManager/PluginManager.py" line="1162"/> + <location filename="../PluginManager/PluginManager.py" line="1179"/> <source>Error downloading file</source> <translation type="unfinished">Chyba při stahování souboru</translation> </message> <message> - <location filename="../PluginManager/PluginManager.py" line="1162"/> + <location filename="../PluginManager/PluginManager.py" line="1179"/> <source><p>Could not download the requested file from {0}.</p><p>Error: {1}</p></source> <translation type="unfinished"><p>Nelze stáhnout požadovaný soubor z {0}.</p><p>Chyba: {1}</p></translation> </message> <message> - <location filename="../PluginManager/PluginManager.py" line="1199"/> + <location filename="../PluginManager/PluginManager.py" line="1216"/> <source>New plugin versions available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../PluginManager/PluginManager.py" line="1199"/> + <location filename="../PluginManager/PluginManager.py" line="1216"/> <source><p>There are new plug-ins or plug-in updates available. Use the plug-in repository dialog to get them.</p></source> <translation type="unfinished"></translation> </message> @@ -39049,22 +39069,22 @@ <context> <name>PrintToPdfDialog</name> <message> - <location filename="../WebBrowser/Tools/PrintToPdfDialog.py" line="40"/> + <location filename="../WebBrowser/Tools/PrintToPdfDialog.py" line="42"/> <source>PDF Files (*.pdf);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Tools/PrintToPdfDialog.py" line="69"/> + <location filename="../WebBrowser/Tools/PrintToPdfDialog.py" line="78"/> <source>Portrait</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Tools/PrintToPdfDialog.py" line="71"/> + <location filename="../WebBrowser/Tools/PrintToPdfDialog.py" line="80"/> <source>Landscape</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Tools/PrintToPdfDialog.py" line="72"/> + <location filename="../WebBrowser/Tools/PrintToPdfDialog.py" line="81"/> <source>{0}, {1}</source> <comment>page size, page orientation</comment> <translation type="unfinished"></translation> @@ -40121,7 +40141,7 @@ <translation>Vytvořit seznam &balíčků</translation> </message> <message> - <location filename="../Project/Project.py" line="4968"/> + <location filename="../Project/Project.py" line="5003"/> <source>Create Plugin Archive</source> <translation>Vytvořit Plugin archiv</translation> </message> @@ -40136,12 +40156,12 @@ <translation><p>Soubor <b>PKGLIST</b> již existuje.</p><p>Přepsat jej?</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4796"/> + <location filename="../Project/Project.py" line="4815"/> <source><p>The file <b>PKGLIST</b> does not exist. Aborting...</p></source> <translation><p>Soubor <b>PKGLIST</b> neexistuje. Zrušeno...</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4804"/> + <location filename="../Project/Project.py" line="4823"/> <source>The project does not have a main script defined. Aborting...</source> <translation>Projekt nemá definován hlavní skript. Zrušeno...</translation> </message> @@ -40331,17 +40351,17 @@ <translation><p>Soubor <b>PKGLIST</b> nelze vytvořit.</p><p>Důvod: {0}</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4818"/> + <location filename="../Project/Project.py" line="4836"/> <source><p>The file <b>PKGLIST</b> could not be read.</p><p>Reason: {0}</p></source> <translation><p>Soubor <b>PKGLIST</b> nelze načíst.</p><p>Důvod: {0}</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4857"/> + <location filename="../Project/Project.py" line="4892"/> <source><p>The file <b>{0}</b> could not be stored in the archive. Ignoring it.</p><p>Reason: {1}</p></source> <translation><p>Soubor <b>{0}</b> nelze uložit do archivu. Ingorováno.</p><p>Důvod: {1}</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4926"/> + <location filename="../Project/Project.py" line="4961"/> <source><p>The plugin file <b>{0}</b> could not be read.</p><p>Reason: {1}</p></source> <translation><p>Plugin soubor <b>{0}</b> nelze přečíst.</p><p>Důvod: {1}</p></translation> </message> @@ -40421,7 +40441,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4968"/> + <location filename="../Project/Project.py" line="5003"/> <source><p>The plugin file <b>{0}</b> could not be read.</p> <p>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> @@ -40456,12 +40476,12 @@ <translation type="unfinished"><b>Vytvořit Plugin archiv (Snímek)</b><p>Vytvoří soubor s eric5 plugin archivem za použití seznamu souborů daných v PKGLIST souboru. Údaj o verzi hlavního skriptu je změněn v souladu se snímkem vydání.</p> {6 ?}</translation> </message> <message> - <location filename="../Project/Project.py" line="4831"/> + <location filename="../Project/Project.py" line="4866"/> <source><p>The eric6 plugin archive file <b>{0}</b> could not be created.</p><p>Reason: {1}</p></source> <translation type="unfinished"><p>Soubor s eric5 plugin archivem <b>{0}</b> nelze vytvořit. Zrušeno...</p><p>Důvod: {1}</p> {6 ?} {0}?} {1}?}</translation> </message> <message> - <location filename="../Project/Project.py" line="4880"/> + <location filename="../Project/Project.py" line="4915"/> <source><p>The eric6 plugin archive file <b>{0}</b> was created successfully.</p></source> <translation type="unfinished"><p>Soubor s eric5 plugin archivem <b>{0}</b> byl úspěšně vytvořen.</p> {6 ?} {0}?}</translation> </message> @@ -40516,6 +40536,16 @@ <source>Search Project File...</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Project/Project.py" line="4799"/> + <source>Select a package list file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Project/Project.py" line="4806"/> + <source><p>No package list file selected. Aborting...</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ProjectBaseBrowser</name> @@ -42518,7 +42548,7 @@ <translation>Vykonáno</translation> </message> <message> - <location filename="../DataViews/PyCoverageDialog.ui" line="172"/> + <location filename="../DataViews/PyCoverageDialog.py" line="349"/> <source>Coverage</source> <translation>Pokrytí</translation> </message> @@ -42599,7 +42629,7 @@ </translation> </message> <message> - <location filename="../DataViews/PyCoverageDialog.ui" line="192"/> + <location filename="../DataViews/PyCoverageDialog.py" line="345"/> <source>%v/%m Files</source> <translation type="unfinished"></translation> </message> @@ -42607,7 +42637,7 @@ <context> <name>PyProfileDialog</name> <message> - <location filename="../DataViews/PyProfileDialog.ui" line="20"/> + <location filename="../DataViews/PyProfileDialog.py" line="233"/> <source>Profile Results</source> <translation>Výsledky profilování</translation> </message> @@ -47132,17 +47162,17 @@ <translation>Odebrat</translation> </message> <message> - <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="81"/> + <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="117"/> <source>Add Documentation</source> <translation>Přidat dokumentaci</translation> </message> <message> - <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="60"/> + <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="70"/> <source>Qt Compressed Help Files (*.qch)</source> <translation>Qt komprimované soubory s nápovqdou (*.qch)</translation> </message> <message> - <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="116"/> + <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="152"/> <source>Remove Documentation</source> <translation>Odebrat dokumentaci</translation> </message> @@ -47157,25 +47187,48 @@ <translation>Stisknout pro odebrání vybraných dokumentů z databáze</translation> </message> <message> - <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="101"/> + <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="137"/> <source>Do you really want to remove the selected documentation sets from the database?</source> <translation>Opravdu chcete odebrat vybrané dokumenty z databáze?</translation> </message> <message> - <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="71"/> + <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="107"/> <source>The file <b>{0}</b> is not a valid Qt Help File.</source> <translation>Soubor <b>{0}</b> není platný soubor Qt Nápovědy.</translation> </message> <message> - <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="81"/> + <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="117"/> <source>The namespace <b>{0}</b> is already registered.</source> <translation>Jmenný prostor <b>{0}</b> je již registrován.</translation> </message> <message> - <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="116"/> + <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.py" line="152"/> <source>Some documents currently opened reference the documentation you are attempting to remove. Removing the documentation will close those documents. Remove anyway?</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.ui" line="78"/> + <source>Press to select QtHelp documents provided by a plug-in to add to the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/QtHelp/QtHelpDocumentationDialog.ui" line="81"/> + <source>Add from Plug-ins...</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QtHelpDocumentationSelectionDialog</name> + <message> + <location filename="../WebBrowser/QtHelp/QtHelpDocumentationSelectionDialog.ui" line="14"/> + <source>QtHelp Documentations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/QtHelp/QtHelpDocumentationSelectionDialog.ui" line="23"/> + <source>Select the documentation files to be installed:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QtHelpFiltersDialog</name> @@ -47225,7 +47278,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/QtHelp/QtHelpFiltersDialog.ui" line="89"/> + <location filename="../WebBrowser/QtHelp/QtHelpFiltersDialog.py" line="150"/> <source>Remove Filters</source> <translation type="unfinished"></translation> </message> @@ -47235,7 +47288,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/QtHelp/QtHelpFiltersDialog.ui" line="99"/> + <location filename="../WebBrowser/QtHelp/QtHelpFiltersDialog.py" line="178"/> <source>Remove Attributes</source> <translation type="unfinished"></translation> </message> @@ -48703,7 +48756,7 @@ <context> <name>SendRefererWhitelistDialog</name> <message> - <location filename="../WebBrowser/Network/SendRefererWhitelistDialog.ui" line="14"/> + <location filename="../WebBrowser/Network/SendRefererWhitelistDialog.py" line="52"/> <source>Send Referer Whitelist</source> <translation type="unfinished"></translation> </message> @@ -49905,7 +49958,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Snapshot/SnapWidget.ui" line="20"/> + <location filename="../Snapshot/SnapWidget.py" line="531"/> <source>eric6 Snapshot</source> <translation type="unfinished"></translation> </message> @@ -50692,20 +50745,25 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/SslErrorExceptionsDialog.py" line="80"/> + <location filename="../WebBrowser/Network/SslErrorExceptionsDialog.py" line="87"/> <source>No error description available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/SslErrorExceptionsDialog.py" line="111"/> + <location filename="../WebBrowser/Network/SslErrorExceptionsDialog.py" line="118"/> <source>Remove Selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/SslErrorExceptionsDialog.py" line="116"/> + <location filename="../WebBrowser/Network/SslErrorExceptionsDialog.py" line="123"/> <source>Remove All</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/Network/SslErrorExceptionsDialog.py" line="75"/> + <source>The certificate has a validity period that is too long.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>StartCoverageDialog</name> @@ -52484,7 +52542,7 @@ <context> <name>SvnDiffDialog</name> <message> - <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.ui" line="14"/> + <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="171"/> <source>Subversion Diff</source> <translation></translation> </message> @@ -52761,12 +52819,12 @@ <translation></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.ui" line="112"/> + <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.py" line="621"/> <source>Revision</source> <translation>Revize</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.ui" line="117"/> + <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.py" line="618"/> <source>Author</source> <translation>Autor</translation> </message> @@ -52776,7 +52834,7 @@ <translation>Datum</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.ui" line="127"/> + <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.py" line="141"/> <source>Message</source> <translation>Zpráva</translation> </message> @@ -53248,7 +53306,7 @@ <translation>Prot&otokol:</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnNewProjectOptionsDialog.ui" line="45"/> + <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnNewProjectOptionsDialog.py" line="128"/> <source>&URL:</source> <translation>&URL:</translation> </message> @@ -53360,7 +53418,7 @@ <translation>Výběr protokolu pro přístup do repozitáře</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnOptionsDialog.ui" line="45"/> + <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnOptionsDialog.py" line="95"/> <source>&URL:</source> <translation>&URL:</translation> </message> @@ -54604,7 +54662,7 @@ <context> <name>SvnStatusDialog</name> <message> - <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnStatusDialog.ui" line="14"/> + <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnStatusDialog.py" line="394"/> <source>Subversion Status</source> <translation></translation> </message> @@ -54851,7 +54909,7 @@ <translation>Chyba v procesu generování</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnStatusDialog.ui" line="80"/> + <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnStatusDialog.py" line="711"/> <source>Commit</source> <translation>Commit</translation> </message> @@ -60161,7 +60219,7 @@ <context> <name>UnittestDialog</name> <message> - <location filename="../PyUnit/UnittestDialog.ui" line="14"/> + <location filename="../PyUnit/UnittestDialog.py" line="400"/> <source>Unittest</source> <translation></translation> </message> @@ -63094,7 +63152,7 @@ <translation>Konfigurovat...</translation> </message> <message> - <location filename="../Debugger/VariablesViewer.py" line="624"/> + <location filename="../Debugger/VariablesViewer.py" line="629"/> <source>{0} items</source> <translation>{0} položek</translation> </message> @@ -68293,117 +68351,117 @@ <context> <name>WebBrowserTabWidget</name> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="106"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="108"/> <source>Show a navigation menu</source> <translation type="unfinished">Zobrazit menu navigace</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="119"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="121"/> <source>Show a navigation menu for closed tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="128"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="130"/> <source>Close the current web browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="145"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="147"/> <source>Open a new web browser tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="159"/> - <source>New Tab</source> - <translation type="unfinished">Nový Tab</translation> - </message> - <message> <location filename="../WebBrowser/WebBrowserTabWidget.py" line="163"/> + <source>New Tab</source> + <translation type="unfinished">Nový Tab</translation> + </message> + <message> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="167"/> <source>Move Left</source> <translation type="unfinished">Posun doleva</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="166"/> - <source>Move Right</source> - <translation type="unfinished">Posun doprava</translation> - </message> - <message> <location filename="../WebBrowser/WebBrowserTabWidget.py" line="170"/> + <source>Move Right</source> + <translation type="unfinished">Posun doprava</translation> + </message> + <message> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="174"/> <source>Duplicate Page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="173"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="177"/> <source>Close</source> <translation type="unfinished">Zavřít</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="176"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="180"/> <source>Close Others</source> <translation type="unfinished">Zavřít ostatní</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="208"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="214"/> <source>Close All</source> <translation type="unfinished">Zavřít vše</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="182"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="187"/> <source>Print Preview</source> <translation type="unfinished">Náhled tisku</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="185"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="191"/> <source>Print</source> <translation type="unfinished">Tisk</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="189"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="195"/> <source>Print as PDF</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="210"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="216"/> <source>Reload All</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="213"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="219"/> <source>Bookmark All Tabs</source> <translation type="unfinished">Vytvořit záložky pro všechny taby</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="217"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="223"/> <source>Restore Closed Tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="429"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="435"/> <source>...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="824"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="904"/> <source>Loading...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="846"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="926"/> <source>Finished loading</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="848"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="928"/> <source>Failed to load</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="887"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="967"/> <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="887"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="967"/> <source>Are you sure you want to close the window? You have %n tab(s) open.</source> <translation type="unfinished"> @@ -68413,40 +68471,55 @@ </translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="895"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="975"/> <source>&Close</source> <translation type="unfinished">&Zavřít</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="899"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="979"/> <source>&Quit</source> <translation type="unfinished">&Konec</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="902"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="982"/> <source>C&lose Current Tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1055"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1135"/> <source>Restore All Closed Tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1057"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="1137"/> <source>Clear List</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="243"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="249"/> <source>Unmute Tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserTabWidget.py" line="247"/> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="253"/> <source>Mute Tab</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="732"/> + <source>Print to PDF</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="682"/> + <source><p>The file <b>{0}</b> exists already. Shall it be overwritten?</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/WebBrowserTabWidget.py" line="732"/> + <source><p>The PDF could not be written to file <b>{0}</b>.</p><p><b>Error:</b> {1}</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>WebBrowserTools</name> @@ -68459,247 +68532,247 @@ <context> <name>WebBrowserView</name> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="219"/> + <location filename="../WebBrowser/WebBrowserView.py" line="222"/> <source>eric6 Web Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="179"/> + <location filename="../WebBrowser/WebBrowserView.py" line="188"/> <source><p>The file <b>{0}</b> does not exist.</p></source> <translation type="unfinished"><p>Soubor <b>{}</b> neexistuje.</p></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="219"/> + <location filename="../WebBrowser/WebBrowserView.py" line="222"/> <source><p>Could not start a viewer for file <b>{0}</b>.</p></source> <translation type="unfinished"><p>Nelze spustit prohlížeč se souborem <b>{0}</b>.</p></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="204"/> + <location filename="../WebBrowser/WebBrowserView.py" line="210"/> <source><p>Could not start an application for URL <b>{0}</b>.</p></source> <translation type="unfinished"><p>Nelze spustit aplikaci pro URL <b>{0}</b>.</p></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="481"/> + <location filename="../WebBrowser/WebBrowserView.py" line="489"/> <source>Inspect Element...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="543"/> - <source>Open Link in New Tab<byte value="x9"/>Ctrl+LMB</source> - <translation type="unfinished">Otevřít odkaz v novém tab okně<byte value="x9"/>Ctrl+LMB</translation> - </message> - <message> - <location filename="../WebBrowser/WebBrowserView.py" line="547"/> - <source>Open Link in New Window</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/WebBrowserView.py" line="551"/> - <source>Open Link in New Private Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/WebBrowserView.py" line="556"/> - <source>Save Lin&k</source> - <translation type="unfinished">Uložit lin&k</translation> + <source>Open Link in New Tab<byte value="x9"/>Ctrl+LMB</source> + <translation type="unfinished">Otevřít odkaz v novém tab okně<byte value="x9"/>Ctrl+LMB</translation> + </message> + <message> + <location filename="../WebBrowser/WebBrowserView.py" line="555"/> + <source>Open Link in New Window</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../WebBrowser/WebBrowserView.py" line="559"/> - <source>Bookmark this Link</source> - <translation type="unfinished">Záložka na tento link</translation> + <source>Open Link in New Private Window</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../WebBrowser/WebBrowserView.py" line="564"/> + <source>Save Lin&k</source> + <translation type="unfinished">Uložit lin&k</translation> + </message> + <message> + <location filename="../WebBrowser/WebBrowserView.py" line="567"/> + <source>Bookmark this Link</source> + <translation type="unfinished">Záložka na tento link</translation> + </message> + <message> + <location filename="../WebBrowser/WebBrowserView.py" line="572"/> <source>Copy Link to Clipboard</source> <translation type="unfinished">Kopírovat link do schránky</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="568"/> + <location filename="../WebBrowser/WebBrowserView.py" line="576"/> <source>Send Link</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="574"/> + <location filename="../WebBrowser/WebBrowserView.py" line="582"/> <source>Scan Link with VirusTotal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="591"/> - <source>Open Image in New Tab</source> - <translation type="unfinished">Otevřít obrázek v novém tabu</translation> - </message> - <message> - <location filename="../WebBrowser/WebBrowserView.py" line="596"/> - <source>Save Image</source> - <translation type="unfinished">Uložit obrázek</translation> - </message> - <message> <location filename="../WebBrowser/WebBrowserView.py" line="599"/> + <source>Open Image in New Tab</source> + <translation type="unfinished">Otevřít obrázek v novém tabu</translation> + </message> + <message> + <location filename="../WebBrowser/WebBrowserView.py" line="604"/> + <source>Save Image</source> + <translation type="unfinished">Uložit obrázek</translation> + </message> + <message> + <location filename="../WebBrowser/WebBrowserView.py" line="607"/> <source>Copy Image to Clipboard</source> <translation type="unfinished">Kopíroavt obrázek do schránky</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="601"/> + <location filename="../WebBrowser/WebBrowserView.py" line="609"/> <source>Copy Image Location to Clipboard</source> <translation type="unfinished">Kopírovat cestu obrázku do schránky</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="605"/> + <location filename="../WebBrowser/WebBrowserView.py" line="613"/> <source>Send Image Link</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="632"/> + <location filename="../WebBrowser/WebBrowserView.py" line="640"/> <source>Block Image</source> <translation type="unfinished">Blokovat obrázek</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="638"/> + <location filename="../WebBrowser/WebBrowserView.py" line="646"/> <source>Scan Image with VirusTotal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="656"/> - <source>Play</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../WebBrowser/WebBrowserView.py" line="660"/> - <source>Pause</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/WebBrowserView.py" line="664"/> - <source>Unmute</source> + <source>Play</source> <translation type="unfinished"></translation> </message> <message> <location filename="../WebBrowser/WebBrowserView.py" line="668"/> - <source>Mute</source> + <source>Pause</source> <translation type="unfinished"></translation> </message> <message> <location filename="../WebBrowser/WebBrowserView.py" line="672"/> - <source>Copy Media Address to Clipboard</source> + <source>Unmute</source> <translation type="unfinished"></translation> </message> <message> <location filename="../WebBrowser/WebBrowserView.py" line="676"/> - <source>Send Media Address</source> + <source>Mute</source> <translation type="unfinished"></translation> </message> <message> <location filename="../WebBrowser/WebBrowserView.py" line="680"/> + <source>Copy Media Address to Clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/WebBrowserView.py" line="684"/> + <source>Send Media Address</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/WebBrowserView.py" line="688"/> <source>Save Media</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="698"/> + <location filename="../WebBrowser/WebBrowserView.py" line="706"/> <source>Send Text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="705"/> + <location filename="../WebBrowser/WebBrowserView.py" line="713"/> <source>Search with '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="711"/> + <location filename="../WebBrowser/WebBrowserView.py" line="719"/> <source>Search with...</source> <translation type="unfinished">Hledat s...</translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="844"/> + <location filename="../WebBrowser/WebBrowserView.py" line="852"/> <source>Google Translate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/WebBrowserView.py" line="740"/> - <source>Dictionary</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/WebBrowserView.py" line="748"/> + <source>Dictionary</source> + <translation type="unfinished"></translation> + </message> + <message>