Sat, 02 Jun 2018 12:44:41 +0200
Merged with default branch to prepare 18.06 release.
--- a/APIs/Python3/eric6.api Tue May 01 12:04:30 2018 +0200 +++ b/APIs/Python3/eric6.api Sat Jun 02 12:44:41 2018 +0200 @@ -976,6 +976,7 @@ eric6.E5Gui.E5MapWidget.E5MapWidget.calculateGeometry?4() eric6.E5Gui.E5MapWidget.E5MapWidget.generateIndicatorRect?4(position) eric6.E5Gui.E5MapWidget.E5MapWidget.isEnabled?4() +eric6.E5Gui.E5MapWidget.E5MapWidget.isOnRightSide?4() eric6.E5Gui.E5MapWidget.E5MapWidget.lineDimensions?4() eric6.E5Gui.E5MapWidget.E5MapWidget.mouseMoveEvent?4(event) eric6.E5Gui.E5MapWidget.E5MapWidget.mousePressEvent?4(event) @@ -985,6 +986,7 @@ eric6.E5Gui.E5MapWidget.E5MapWidget.setBackgroundColor?4(color) eric6.E5Gui.E5MapWidget.E5MapWidget.setEnabled?4(enable) eric6.E5Gui.E5MapWidget.E5MapWidget.setLineDimensions?4(border, height) +eric6.E5Gui.E5MapWidget.E5MapWidget.setMapPosition?4(onRight) eric6.E5Gui.E5MapWidget.E5MapWidget.setMaster?4(master) eric6.E5Gui.E5MapWidget.E5MapWidget.setWidth?4(width) eric6.E5Gui.E5MapWidget.E5MapWidget.sizeHint?4() @@ -1670,6 +1672,7 @@ eric6.Globals.compatibility_fixes.load_sourceAsStr?4(*args) eric6.Globals.compatibility_fixes.open?4(filein, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True) eric6.Globals.configDir?7 +eric6.Globals.desktopName?4() eric6.Globals.findPythonInterpreters?4(pyVersion) eric6.Globals.getConfigDir?4() eric6.Globals.getPyQt5ModulesDirectory?4() @@ -2667,6 +2670,7 @@ eric6.Helpviewer.HelpWindow.HelpWindow.shutdown?4() eric6.Helpviewer.HelpWindow.HelpWindow.speedDial?4() eric6.Helpviewer.HelpWindow.HelpWindow.syncManager?4() +eric6.Helpviewer.HelpWindow.HelpWindow.urlHandler?4(url) eric6.Helpviewer.HelpWindow.HelpWindow.userAgentsManager?4() eric6.Helpviewer.HelpWindow.HelpWindow.zoomManager?4() eric6.Helpviewer.HelpWindow.HelpWindow.zoomTextOnlyChanged?7 @@ -4888,6 +4892,9 @@ eric6.Plugins.UiExtensionPlugins.PipInterface.PipDialog.PipDialog.startProcess?4(cmd, args, showArgs=True) eric6.Plugins.UiExtensionPlugins.PipInterface.PipDialog.PipDialog.startProcesses?4(processParams) eric6.Plugins.UiExtensionPlugins.PipInterface.PipDialog.PipDialog?1(text, parent=None) +eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.PipFileSelectionDialog.getData?4() +eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.PipFileSelectionDialog.on_filePicker_textChanged?4(txt) +eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.PipFileSelectionDialog?1(plugin, mode, parent=None) eric6.Plugins.UiExtensionPlugins.PipInterface.PipFreezeDialog.PipFreezeDialog.closeEvent?4(e) eric6.Plugins.UiExtensionPlugins.PipInterface.PipFreezeDialog.PipFreezeDialog.on_buttonBox_clicked?4(button) eric6.Plugins.UiExtensionPlugins.PipInterface.PipFreezeDialog.PipFreezeDialog.on_copyButton_clicked?4() @@ -4922,10 +4929,6 @@ eric6.Plugins.UiExtensionPlugins.PipInterface.PipPackagesInputDialog.PipPackagesInputDialog.getData?4() eric6.Plugins.UiExtensionPlugins.PipInterface.PipPackagesInputDialog.PipPackagesInputDialog.on_packagesEdit_textChanged?4(txt) eric6.Plugins.UiExtensionPlugins.PipInterface.PipPackagesInputDialog.PipPackagesInputDialog?1(plugin, title, parent=None) -eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.PipRequirementsSelectionDialog.getData?4() -eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.PipRequirementsSelectionDialog.on_fileButton_clicked?4() -eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.PipRequirementsSelectionDialog.on_requirementsEdit_textChanged?4(txt) -eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.PipRequirementsSelectionDialog?1(plugin, parent=None) eric6.Plugins.UiExtensionPlugins.PipInterface.PipSearchDialog.PipSearchDialog.Stopwords?7 eric6.Plugins.UiExtensionPlugins.PipInterface.PipSearchDialog.PipSearchDialog.VersionRole?7 eric6.Plugins.UiExtensionPlugins.PipInterface.PipSearchDialog.PipSearchDialog.closeEvent?4(e) @@ -8262,6 +8265,7 @@ eric6.QScintilla.Editor.Editor.close?4(alsoDelete=False) eric6.QScintilla.Editor.Editor.closeIt?4() eric6.QScintilla.Editor.Editor.codeCoverageShowAnnotations?4(silent=False) +eric6.QScintilla.Editor.Editor.collapseFoldWithChildren?4(line=-1) eric6.QScintilla.Editor.Editor.commentLine?4() eric6.QScintilla.Editor.Editor.commentLineOrSelection?4() eric6.QScintilla.Editor.Editor.commentSelection?4() @@ -8281,10 +8285,11 @@ eric6.QScintilla.Editor.Editor.editorRenamed?7 eric6.QScintilla.Editor.Editor.editorSaved?7 eric6.QScintilla.Editor.Editor.encodingChanged?7 -eric6.QScintilla.Editor.Editor.ensureVisible?4(line) -eric6.QScintilla.Editor.Editor.ensureVisibleTop?4(line) +eric6.QScintilla.Editor.Editor.ensureVisible?4(line, expand=False) +eric6.QScintilla.Editor.Editor.ensureVisibleTop?4(line, expand=False) eric6.QScintilla.Editor.Editor.eolChanged?7 eric6.QScintilla.Editor.Editor.event?4(evt) +eric6.QScintilla.Editor.Editor.expandFoldWithChildren?4(line=-1) eric6.QScintilla.Editor.Editor.exportFile?4(exporterFormat) eric6.QScintilla.Editor.Editor.extractTasks?4() eric6.QScintilla.Editor.Editor.fileRenamed?4(fn) @@ -8328,7 +8333,7 @@ eric6.QScintilla.Editor.Editor.getWordLeft?4(line, index) eric6.QScintilla.Editor.Editor.getWordRight?4(line, index) eric6.QScintilla.Editor.Editor.gotoLastEditPosition?4() -eric6.QScintilla.Editor.Editor.gotoLine?4(line, pos=1, firstVisible=False) +eric6.QScintilla.Editor.Editor.gotoLine?4(line, pos=1, firstVisible=False, expand=False) eric6.QScintilla.Editor.Editor.gotoMethodClass?4(goUp=False) eric6.QScintilla.Editor.Editor.gotoSyntaxError?4() eric6.QScintilla.Editor.Editor.handleMonospacedEnable?4() @@ -8433,6 +8438,7 @@ eric6.QScintilla.Editor.Editor.taskMarkersUpdated?7 eric6.QScintilla.Editor.Editor.toggleBookmark?4(line) eric6.QScintilla.Editor.Editor.toggleCommentBlock?4() +eric6.QScintilla.Editor.Editor.toggleCurrentFold?4() eric6.QScintilla.Editor.Editor.toggleSyntaxError?4(line, index, error, msg="", show=False) eric6.QScintilla.Editor.Editor.toggleWarning?4(line, col, warning, msg="", warningType=WarningCode) eric6.QScintilla.Editor.Editor.uncommentLine?4() @@ -8975,6 +8981,9 @@ eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.IndicatorStyleMax?7 eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.UserSeparator?7 eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat._encodeString?5(string) +eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.autoCompleteFromAPIs?4() +eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.autoCompleteFromAll?4() +eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.autoCompleteFromDocument?4() eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.byteAt?4(pos) eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.canPaste?4() eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.charAt?4(pos) @@ -9074,6 +9083,7 @@ eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.showUserList?4(listId, lst) eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.startStyling?4(pos, mask) eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.styleAt?4(pos) +eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.updateUserListSize?4() eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.updateVerticalScrollBar?4() eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.zoomIn?4(zoom=1) eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.zoomOut?4(zoom=1) @@ -9899,6 +9909,7 @@ eric6.UI.UserInterface.UserInterface.getToolBarIconSize?4() eric6.UI.UserInterface.UserInterface.getToolbar?4(name) eric6.UI.UserInterface.UserInterface.getViewProfile?4() +eric6.UI.UserInterface.UserInterface.handleUrl?4(url) eric6.UI.UserInterface.UserInterface.isOnline?4() eric6.UI.UserInterface.UserInterface.launchHelpViewer?4(home, searchWord=None, useSingle=False) eric6.UI.UserInterface.UserInterface.masterPasswordChanged?7 @@ -10183,7 +10194,7 @@ eric6.Utilities.binplistlib.readPlistFromBytes?4(data) eric6.Utilities.binplistlib.writePlist?4(rootObject, pathOrFile, binary=True) eric6.Utilities.binplistlib.writePlistToBytes?4(rootObject, binary=True) -eric6.Utilities.checkPyside?4() +eric6.Utilities.checkPyside?4(variant="2") eric6.Utilities.codingBytes_regexps?7 eric6.Utilities.coding_regexps?7 eric6.Utilities.compactPath?4(path, width, measure=len) @@ -10240,7 +10251,7 @@ eric6.Utilities.generateDistroInfo?4(linesep='\n') eric6.Utilities.generatePluginsVersionInfo?4(linesep='\n') eric6.Utilities.generatePyQtToolPath?4(toolname, alternatives=None) -eric6.Utilities.generatePySideToolPath?4(toolname) +eric6.Utilities.generatePySideToolPath?4(toolname, variant="2") eric6.Utilities.generateQtToolName?4(toolname) eric6.Utilities.generateVersionInfo?4(linesep='\n') eric6.Utilities.getDirs?4(path, excludeDirs) @@ -11051,7 +11062,7 @@ eric6.WebBrowser.Download.DownloadItem.DownloadItem.setData?4(data) eric6.WebBrowser.Download.DownloadItem.DownloadItem.setIcon?4(icon) eric6.WebBrowser.Download.DownloadItem.DownloadItem.statusChanged?7 -eric6.WebBrowser.Download.DownloadItem.DownloadItem?1(downloadItem=None, pageUrl="", parent=None) +eric6.WebBrowser.Download.DownloadItem.DownloadItem?1(downloadItem=None, pageUrl=None, parent=None) eric6.WebBrowser.Download.DownloadManager.DownloadManager.RemoveExit?7 eric6.WebBrowser.Download.DownloadManager.DownloadManager.RemoveNever?7 eric6.WebBrowser.Download.DownloadManager.DownloadManager.RemoveSuccessFullDownload?7 @@ -12424,6 +12435,7 @@ eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.tabManager?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.tabWidget?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.toggleFullScreen?4() +eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.urlHandler?4(url) eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.userAgentsManager?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.webBrowserClosed?7 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.webBrowserOpened?7
--- a/APIs/Python3/eric6.bas Tue May 01 12:04:30 2018 +0200 +++ b/APIs/Python3/eric6.bas Sat Jun 02 12:44:41 2018 +0200 @@ -652,13 +652,13 @@ PersonalInformationManager QObject Pip QObject PipDialog QDialog Ui_PipDialog +PipFileSelectionDialog QDialog Ui_PipFileSelectionDialog PipFreezeDialog QDialog Ui_PipFreezeDialog PipInterfacePlugin QObject PipListDialog QDialog Ui_PipListDialog PipPackageDetailsDialog QDialog Ui_PipPackageDetailsDialog PipPackagesInputDialog QDialog Ui_PipPackagesInputDialog PipPage ConfigurationPageBase Ui_PipPage -PipRequirementsSelectionDialog QDialog Ui_PipRequirementsSelectionDialog PipSearchDialog QDialog Ui_PipSearchDialog PixmapDiagram E5MainWindow PlainStrList list
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CodeTemplates/impl_pyside2.py.tmpl Sat Jun 02 12:44:41 2018 +0200 @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +""" +Module implementing $CLASSNAME$. +""" + +from PySide2.QtCore import Slot +from PySide2.QtWidgets import $SUPERCLASS$ + +from .Ui_$FORMFILE$ import Ui_$FORMCLASS$ + + +class $CLASSNAME$($SUPERCLASS$, Ui_$FORMCLASS$): + """ + Class documentation goes here. + """ + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent widget + @type QWidget + """ + super($CLASSNAME$, self).__init__(parent) + self.setupUi(self)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CodeTemplates/impl_pyside2.py2.tmpl Sat Jun 02 12:44:41 2018 +0200 @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +""" +Module implementing $CLASSNAME$. +""" + +from PySide2.QtCore import Slot +from PySide2.QtWidgets import $SUPERCLASS$ + +from .Ui_$FORMFILE$ import Ui_$FORMCLASS$ + + +class $CLASSNAME$($SUPERCLASS$, Ui_$FORMCLASS$): + """ + Class documentation goes here. + """ + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent widget + @type QWidget + """ + super($CLASSNAME$, self).__init__(parent) + self.setupUi(self)
--- a/Debugger/DebugServer.py Tue May 01 12:04:30 2018 +0200 +++ b/Debugger/DebugServer.py Sat Jun 02 12:44:41 2018 +0200 @@ -508,8 +508,8 @@ elif self.__autoClearShell: self.__autoClearShell = False self.remoteBanner() - self.remoteClientVariables(0, [], 0) - self.remoteClientVariables(1, [], 0) +## self.remoteClientVariables(0, [], 0) +## self.remoteClientVariables(1, [], 0) else: if clType and self.lastClientType: self.__setClientType(self.lastClientType)
--- a/Documentation/Help/source.qhp Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Help/source.qhp Sat Jun 02 12:44:41 2018 +0200 @@ -520,11 +520,11 @@ </section> <section title="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html" /> <section title="eric6.Plugins.UiExtensionPlugins.PipInterface.PipDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipDialog.html" /> + <section title="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.html" /> <section title="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFreezeDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFreezeDialog.html" /> <section title="eric6.Plugins.UiExtensionPlugins.PipInterface.PipListDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipListDialog.html" /> <section title="eric6.Plugins.UiExtensionPlugins.PipInterface.PipPackageDetailsDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipPackageDetailsDialog.html" /> <section title="eric6.Plugins.UiExtensionPlugins.PipInterface.PipPackagesInputDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipPackagesInputDialog.html" /> - <section title="eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.html" /> <section title="eric6.Plugins.UiExtensionPlugins.PipInterface.PipSearchDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipSearchDialog.html" /> </section> <section title="eric6.Plugins.UiExtensionPlugins.Translator" ref="index-eric6.Plugins.UiExtensionPlugins.Translator.html"> @@ -4539,6 +4539,7 @@ <keyword name="E5MapWidget.calculateGeometry" id="E5MapWidget.calculateGeometry" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.calculateGeometry" /> <keyword name="E5MapWidget.generateIndicatorRect" id="E5MapWidget.generateIndicatorRect" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.generateIndicatorRect" /> <keyword name="E5MapWidget.isEnabled" id="E5MapWidget.isEnabled" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.isEnabled" /> + <keyword name="E5MapWidget.isOnRightSide" id="E5MapWidget.isOnRightSide" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.isOnRightSide" /> <keyword name="E5MapWidget.lineDimensions" id="E5MapWidget.lineDimensions" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.lineDimensions" /> <keyword name="E5MapWidget.mouseMoveEvent" id="E5MapWidget.mouseMoveEvent" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.mouseMoveEvent" /> <keyword name="E5MapWidget.mousePressEvent" id="E5MapWidget.mousePressEvent" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.mousePressEvent" /> @@ -4548,6 +4549,7 @@ <keyword name="E5MapWidget.setBackgroundColor" id="E5MapWidget.setBackgroundColor" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.setBackgroundColor" /> <keyword name="E5MapWidget.setEnabled" id="E5MapWidget.setEnabled" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.setEnabled" /> <keyword name="E5MapWidget.setLineDimensions" id="E5MapWidget.setLineDimensions" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.setLineDimensions" /> + <keyword name="E5MapWidget.setMapPosition" id="E5MapWidget.setMapPosition" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.setMapPosition" /> <keyword name="E5MapWidget.setMaster" id="E5MapWidget.setMaster" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.setMaster" /> <keyword name="E5MapWidget.setWidth" id="E5MapWidget.setWidth" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.setWidth" /> <keyword name="E5MapWidget.sizeHint" id="E5MapWidget.sizeHint" ref="eric6.E5Gui.E5MapWidget.html#E5MapWidget.sizeHint" /> @@ -5160,7 +5162,6 @@ <keyword name="Editor.__callTip" id="Editor.__callTip" ref="eric6.QScintilla.Editor.html#Editor.__callTip" /> <keyword name="Editor.__changeBreakPoints" id="Editor.__changeBreakPoints" ref="eric6.QScintilla.Editor.html#Editor.__changeBreakPoints" /> <keyword name="Editor.__charAdded" id="Editor.__charAdded" ref="eric6.QScintilla.Editor.html#Editor.__charAdded" /> - <keyword name="Editor.__charAddedPermanent" id="Editor.__charAddedPermanent" ref="eric6.QScintilla.Editor.html#Editor.__charAddedPermanent" /> <keyword name="Editor.__checkEncoding" id="Editor.__checkEncoding" ref="eric6.QScintilla.Editor.html#Editor.__checkEncoding" /> <keyword name="Editor.__checkEol" id="Editor.__checkEol" ref="eric6.QScintilla.Editor.html#Editor.__checkEol" /> <keyword name="Editor.__checkLanguage" id="Editor.__checkLanguage" ref="eric6.QScintilla.Editor.html#Editor.__checkLanguage" /> @@ -5172,6 +5173,8 @@ <keyword name="Editor.__codeCoverageHideAnnotations" id="Editor.__codeCoverageHideAnnotations" ref="eric6.QScintilla.Editor.html#Editor.__codeCoverageHideAnnotations" /> <keyword name="Editor.__completionListSelected" id="Editor.__completionListSelected" ref="eric6.QScintilla.Editor.html#Editor.__completionListSelected" /> <keyword name="Editor.__contextClose" id="Editor.__contextClose" ref="eric6.QScintilla.Editor.html#Editor.__contextClose" /> + <keyword name="Editor.__contextMenuCollapseFoldWithChildren" id="Editor.__contextMenuCollapseFoldWithChildren" ref="eric6.QScintilla.Editor.html#Editor.__contextMenuCollapseFoldWithChildren" /> + <keyword name="Editor.__contextMenuExpandFoldWithChildren" id="Editor.__contextMenuExpandFoldWithChildren" ref="eric6.QScintilla.Editor.html#Editor.__contextMenuExpandFoldWithChildren" /> <keyword name="Editor.__contextMenuSpellingTriggered" id="Editor.__contextMenuSpellingTriggered" ref="eric6.QScintilla.Editor.html#Editor.__contextMenuSpellingTriggered" /> <keyword name="Editor.__contextOpenRejections" id="Editor.__contextOpenRejections" ref="eric6.QScintilla.Editor.html#Editor.__contextOpenRejections" /> <keyword name="Editor.__contextSave" id="Editor.__contextSave" ref="eric6.QScintilla.Editor.html#Editor.__contextSave" /> @@ -5209,10 +5212,8 @@ <keyword name="Editor.__initContextMenuMargins" id="Editor.__initContextMenuMargins" ref="eric6.QScintilla.Editor.html#Editor.__initContextMenuMargins" /> <keyword name="Editor.__initContextMenuReopenWithEncoding" id="Editor.__initContextMenuReopenWithEncoding" ref="eric6.QScintilla.Editor.html#Editor.__initContextMenuReopenWithEncoding" /> <keyword name="Editor.__initContextMenuResources" id="Editor.__initContextMenuResources" ref="eric6.QScintilla.Editor.html#Editor.__initContextMenuResources" /> - <keyword name="Editor.__initContextMenuSeparateMargins" id="Editor.__initContextMenuSeparateMargins" ref="eric6.QScintilla.Editor.html#Editor.__initContextMenuSeparateMargins" /> <keyword name="Editor.__initContextMenuShow" id="Editor.__initContextMenuShow" ref="eric6.QScintilla.Editor.html#Editor.__initContextMenuShow" /> <keyword name="Editor.__initContextMenuTools" id="Editor.__initContextMenuTools" ref="eric6.QScintilla.Editor.html#Editor.__initContextMenuTools" /> - <keyword name="Editor.__initContextMenuUnifiedMargins" id="Editor.__initContextMenuUnifiedMargins" ref="eric6.QScintilla.Editor.html#Editor.__initContextMenuUnifiedMargins" /> <keyword name="Editor.__initOnlineChangeTrace" id="Editor.__initOnlineChangeTrace" ref="eric6.QScintilla.Editor.html#Editor.__initOnlineChangeTrace" /> <keyword name="Editor.__initOnlineSyntaxCheck" id="Editor.__initOnlineSyntaxCheck" ref="eric6.QScintilla.Editor.html#Editor.__initOnlineSyntaxCheck" /> <keyword name="Editor.__isCommentedLine" id="Editor.__isCommentedLine" ref="eric6.QScintilla.Editor.html#Editor.__isCommentedLine" /> @@ -5335,6 +5336,7 @@ <keyword name="Editor.close" id="Editor.close" ref="eric6.QScintilla.Editor.html#Editor.close" /> <keyword name="Editor.closeIt" id="Editor.closeIt" ref="eric6.QScintilla.Editor.html#Editor.closeIt" /> <keyword name="Editor.codeCoverageShowAnnotations" id="Editor.codeCoverageShowAnnotations" ref="eric6.QScintilla.Editor.html#Editor.codeCoverageShowAnnotations" /> + <keyword name="Editor.collapseFoldWithChildren" id="Editor.collapseFoldWithChildren" ref="eric6.QScintilla.Editor.html#Editor.collapseFoldWithChildren" /> <keyword name="Editor.commentLine" id="Editor.commentLine" ref="eric6.QScintilla.Editor.html#Editor.commentLine" /> <keyword name="Editor.commentLineOrSelection" id="Editor.commentLineOrSelection" ref="eric6.QScintilla.Editor.html#Editor.commentLineOrSelection" /> <keyword name="Editor.commentSelection" id="Editor.commentSelection" ref="eric6.QScintilla.Editor.html#Editor.commentSelection" /> @@ -5350,6 +5352,7 @@ <keyword name="Editor.ensureVisible" id="Editor.ensureVisible" ref="eric6.QScintilla.Editor.html#Editor.ensureVisible" /> <keyword name="Editor.ensureVisibleTop" id="Editor.ensureVisibleTop" ref="eric6.QScintilla.Editor.html#Editor.ensureVisibleTop" /> <keyword name="Editor.event" id="Editor.event" ref="eric6.QScintilla.Editor.html#Editor.event" /> + <keyword name="Editor.expandFoldWithChildren" id="Editor.expandFoldWithChildren" ref="eric6.QScintilla.Editor.html#Editor.expandFoldWithChildren" /> <keyword name="Editor.exportFile" id="Editor.exportFile" ref="eric6.QScintilla.Editor.html#Editor.exportFile" /> <keyword name="Editor.extractTasks" id="Editor.extractTasks" ref="eric6.QScintilla.Editor.html#Editor.extractTasks" /> <keyword name="Editor.fileRenamed" id="Editor.fileRenamed" ref="eric6.QScintilla.Editor.html#Editor.fileRenamed" /> @@ -5489,6 +5492,7 @@ <keyword name="Editor.streamCommentSelection" id="Editor.streamCommentSelection" ref="eric6.QScintilla.Editor.html#Editor.streamCommentSelection" /> <keyword name="Editor.toggleBookmark" id="Editor.toggleBookmark" ref="eric6.QScintilla.Editor.html#Editor.toggleBookmark" /> <keyword name="Editor.toggleCommentBlock" id="Editor.toggleCommentBlock" ref="eric6.QScintilla.Editor.html#Editor.toggleCommentBlock" /> + <keyword name="Editor.toggleCurrentFold" id="Editor.toggleCurrentFold" ref="eric6.QScintilla.Editor.html#Editor.toggleCurrentFold" /> <keyword name="Editor.toggleSyntaxError" id="Editor.toggleSyntaxError" ref="eric6.QScintilla.Editor.html#Editor.toggleSyntaxError" /> <keyword name="Editor.toggleWarning" id="Editor.toggleWarning" ref="eric6.QScintilla.Editor.html#Editor.toggleWarning" /> <keyword name="Editor.uncommentLine" id="Editor.uncommentLine" ref="eric6.QScintilla.Editor.html#Editor.uncommentLine" /> @@ -8041,6 +8045,7 @@ <keyword name="HelpWindow.shutdown" id="HelpWindow.shutdown" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.shutdown" /> <keyword name="HelpWindow.speedDial" id="HelpWindow.speedDial" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.speedDial" /> <keyword name="HelpWindow.syncManager" id="HelpWindow.syncManager" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.syncManager" /> + <keyword name="HelpWindow.urlHandler" id="HelpWindow.urlHandler" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.urlHandler" /> <keyword name="HelpWindow.userAgentsManager" id="HelpWindow.userAgentsManager" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.userAgentsManager" /> <keyword name="HelpWindow.zoomManager" id="HelpWindow.zoomManager" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.zoomManager" /> <keyword name="Helpviewer (Package)" id="Helpviewer (Package)" ref="index-eric6.Helpviewer.html" /> @@ -11329,6 +11334,11 @@ <keyword name="NetworkUrlInterceptor (Constructor)" id="NetworkUrlInterceptor (Constructor)" ref="eric6.WebBrowser.Network.NetworkUrlInterceptor.html#NetworkUrlInterceptor.__init__" /> <keyword name="NetworkUrlInterceptor (Module)" id="NetworkUrlInterceptor (Module)" ref="eric6.WebBrowser.Network.NetworkUrlInterceptor.html" /> <keyword name="NetworkUrlInterceptor.__loadSettings" id="NetworkUrlInterceptor.__loadSettings" ref="eric6.WebBrowser.Network.NetworkUrlInterceptor.html#NetworkUrlInterceptor.__loadSettings" /> + <keyword name="NetworkUrlInterceptor.__potentiallyTrustworthy" id="NetworkUrlInterceptor.__potentiallyTrustworthy" ref="eric6.WebBrowser.Network.NetworkUrlInterceptor.html#NetworkUrlInterceptor.__potentiallyTrustworthy" /> + <keyword name="NetworkUrlInterceptor.__refererOrigin" id="NetworkUrlInterceptor.__refererOrigin" ref="eric6.WebBrowser.Network.NetworkUrlInterceptor.html#NetworkUrlInterceptor.__refererOrigin" /> + <keyword name="NetworkUrlInterceptor.__sameOrigin" id="NetworkUrlInterceptor.__sameOrigin" ref="eric6.WebBrowser.Network.NetworkUrlInterceptor.html#NetworkUrlInterceptor.__sameOrigin" /> + <keyword name="NetworkUrlInterceptor.__setRefererHeader" id="NetworkUrlInterceptor.__setRefererHeader" ref="eric6.WebBrowser.Network.NetworkUrlInterceptor.html#NetworkUrlInterceptor.__setRefererHeader" /> + <keyword name="NetworkUrlInterceptor.__trimmedReferer" id="NetworkUrlInterceptor.__trimmedReferer" ref="eric6.WebBrowser.Network.NetworkUrlInterceptor.html#NetworkUrlInterceptor.__trimmedReferer" /> <keyword name="NetworkUrlInterceptor.installUrlInterceptor" id="NetworkUrlInterceptor.installUrlInterceptor" ref="eric6.WebBrowser.Network.NetworkUrlInterceptor.html#NetworkUrlInterceptor.installUrlInterceptor" /> <keyword name="NetworkUrlInterceptor.interceptRequest" id="NetworkUrlInterceptor.interceptRequest" ref="eric6.WebBrowser.Network.NetworkUrlInterceptor.html#NetworkUrlInterceptor.interceptRequest" /> <keyword name="NetworkUrlInterceptor.preferencesChanged" id="NetworkUrlInterceptor.preferencesChanged" ref="eric6.WebBrowser.Network.NetworkUrlInterceptor.html#NetworkUrlInterceptor.preferencesChanged" /> @@ -11936,6 +11946,7 @@ <keyword name="Pip.__getUserConfig" id="Pip.__getUserConfig" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.__getUserConfig" /> <keyword name="Pip.__getVirtualenvConfig" id="Pip.__getVirtualenvConfig" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.__getVirtualenvConfig" /> <keyword name="Pip.__handleTearOffMenu" id="Pip.__handleTearOffMenu" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.__handleTearOffMenu" /> + <keyword name="Pip.__installLocalPackage" id="Pip.__installLocalPackage" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.__installLocalPackage" /> <keyword name="Pip.__installPackages" id="Pip.__installPackages" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.__installPackages" /> <keyword name="Pip.__installPip" id="Pip.__installPip" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.__installPip" /> <keyword name="Pip.__installRequirements" id="Pip.__installRequirements" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.__installRequirements" /> @@ -11970,6 +11981,11 @@ <keyword name="PipDialog.on_buttonBox_clicked" id="PipDialog.on_buttonBox_clicked" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipDialog.html#PipDialog.on_buttonBox_clicked" /> <keyword name="PipDialog.startProcess" id="PipDialog.startProcess" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipDialog.html#PipDialog.startProcess" /> <keyword name="PipDialog.startProcesses" id="PipDialog.startProcesses" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipDialog.html#PipDialog.startProcesses" /> + <keyword name="PipFileSelectionDialog" id="PipFileSelectionDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.html#PipFileSelectionDialog" /> + <keyword name="PipFileSelectionDialog (Constructor)" id="PipFileSelectionDialog (Constructor)" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.html#PipFileSelectionDialog.__init__" /> + <keyword name="PipFileSelectionDialog (Module)" id="PipFileSelectionDialog (Module)" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.html" /> + <keyword name="PipFileSelectionDialog.getData" id="PipFileSelectionDialog.getData" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.html#PipFileSelectionDialog.getData" /> + <keyword name="PipFileSelectionDialog.on_filePicker_textChanged" id="PipFileSelectionDialog.on_filePicker_textChanged" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.html#PipFileSelectionDialog.on_filePicker_textChanged" /> <keyword name="PipFreezeDialog" id="PipFreezeDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFreezeDialog.html#PipFreezeDialog" /> <keyword name="PipFreezeDialog (Constructor)" id="PipFreezeDialog (Constructor)" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFreezeDialog.html#PipFreezeDialog.__init__" /> <keyword name="PipFreezeDialog (Module)" id="PipFreezeDialog (Module)" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFreezeDialog.html" /> @@ -12045,12 +12061,6 @@ <keyword name="PipPage.on_addButton_clicked" id="PipPage.on_addButton_clicked" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.ConfigurationPage.PipPage.html#PipPage.on_addButton_clicked" /> <keyword name="PipPage.on_defaultListButton_clicked" id="PipPage.on_defaultListButton_clicked" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.ConfigurationPage.PipPage.html#PipPage.on_defaultListButton_clicked" /> <keyword name="PipPage.save" id="PipPage.save" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.ConfigurationPage.PipPage.html#PipPage.save" /> - <keyword name="PipRequirementsSelectionDialog" id="PipRequirementsSelectionDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.html#PipRequirementsSelectionDialog" /> - <keyword name="PipRequirementsSelectionDialog (Constructor)" id="PipRequirementsSelectionDialog (Constructor)" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.html#PipRequirementsSelectionDialog.__init__" /> - <keyword name="PipRequirementsSelectionDialog (Module)" id="PipRequirementsSelectionDialog (Module)" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.html" /> - <keyword name="PipRequirementsSelectionDialog.getData" id="PipRequirementsSelectionDialog.getData" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.html#PipRequirementsSelectionDialog.getData" /> - <keyword name="PipRequirementsSelectionDialog.on_fileButton_clicked" id="PipRequirementsSelectionDialog.on_fileButton_clicked" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.html#PipRequirementsSelectionDialog.on_fileButton_clicked" /> - <keyword name="PipRequirementsSelectionDialog.on_requirementsEdit_textChanged" id="PipRequirementsSelectionDialog.on_requirementsEdit_textChanged" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.html#PipRequirementsSelectionDialog.on_requirementsEdit_textChanged" /> <keyword name="PipSearchDialog" id="PipSearchDialog" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipSearchDialog.html#PipSearchDialog" /> <keyword name="PipSearchDialog (Constructor)" id="PipSearchDialog (Constructor)" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipSearchDialog.html#PipSearchDialog.__init__" /> <keyword name="PipSearchDialog (Module)" id="PipSearchDialog (Module)" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.PipSearchDialog.html" /> @@ -13327,6 +13337,9 @@ <keyword name="QsciScintillaCompat.__modificationChanged" id="QsciScintillaCompat.__modificationChanged" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.__modificationChanged" /> <keyword name="QsciScintillaCompat.__setFoldMarker" id="QsciScintillaCompat.__setFoldMarker" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.__setFoldMarker" /> <keyword name="QsciScintillaCompat._encodeString" id="QsciScintillaCompat._encodeString" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat._encodeString" /> + <keyword name="QsciScintillaCompat.autoCompleteFromAPIs" id="QsciScintillaCompat.autoCompleteFromAPIs" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.autoCompleteFromAPIs" /> + <keyword name="QsciScintillaCompat.autoCompleteFromAll" id="QsciScintillaCompat.autoCompleteFromAll" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.autoCompleteFromAll" /> + <keyword name="QsciScintillaCompat.autoCompleteFromDocument" id="QsciScintillaCompat.autoCompleteFromDocument" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.autoCompleteFromDocument" /> <keyword name="QsciScintillaCompat.byteAt" id="QsciScintillaCompat.byteAt" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.byteAt" /> <keyword name="QsciScintillaCompat.canPaste" id="QsciScintillaCompat.canPaste" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.canPaste" /> <keyword name="QsciScintillaCompat.charAt" id="QsciScintillaCompat.charAt" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.charAt" /> @@ -13426,6 +13439,7 @@ <keyword name="QsciScintillaCompat.showUserList" id="QsciScintillaCompat.showUserList" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.showUserList" /> <keyword name="QsciScintillaCompat.startStyling" id="QsciScintillaCompat.startStyling" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.startStyling" /> <keyword name="QsciScintillaCompat.styleAt" id="QsciScintillaCompat.styleAt" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.styleAt" /> + <keyword name="QsciScintillaCompat.updateUserListSize" id="QsciScintillaCompat.updateUserListSize" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.updateUserListSize" /> <keyword name="QsciScintillaCompat.updateVerticalScrollBar" id="QsciScintillaCompat.updateVerticalScrollBar" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.updateVerticalScrollBar" /> <keyword name="QsciScintillaCompat.zoomIn" id="QsciScintillaCompat.zoomIn" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.zoomIn" /> <keyword name="QsciScintillaCompat.zoomOut" id="QsciScintillaCompat.zoomOut" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.zoomOut" /> @@ -16675,7 +16689,7 @@ <keyword name="UserInterface.__initEricDocAction" id="UserInterface.__initEricDocAction" ref="eric6.UI.UserInterface.html#UserInterface.__initEricDocAction" /> <keyword name="UserInterface.__initExternalToolsActions" id="UserInterface.__initExternalToolsActions" ref="eric6.UI.UserInterface.html#UserInterface.__initExternalToolsActions" /> <keyword name="UserInterface.__initMenus" id="UserInterface.__initMenus" ref="eric6.UI.UserInterface.html#UserInterface.__initMenus" /> - <keyword name="UserInterface.__initPySideDocAction" id="UserInterface.__initPySideDocAction" ref="eric6.UI.UserInterface.html#UserInterface.__initPySideDocAction" /> + <keyword name="UserInterface.__initPySideDocActions" id="UserInterface.__initPySideDocActions" ref="eric6.UI.UserInterface.html#UserInterface.__initPySideDocActions" /> <keyword name="UserInterface.__initPythonDocActions" id="UserInterface.__initPythonDocActions" ref="eric6.UI.UserInterface.html#UserInterface.__initPythonDocActions" /> <keyword name="UserInterface.__initQtDocActions" id="UserInterface.__initQtDocActions" ref="eric6.UI.UserInterface.html#UserInterface.__initQtDocActions" /> <keyword name="UserInterface.__initStatusbar" id="UserInterface.__initStatusbar" ref="eric6.UI.UserInterface.html#UserInterface.__initStatusbar" /> @@ -16811,6 +16825,7 @@ <keyword name="UserInterface.getToolBarIconSize" id="UserInterface.getToolBarIconSize" ref="eric6.UI.UserInterface.html#UserInterface.getToolBarIconSize" /> <keyword name="UserInterface.getToolbar" id="UserInterface.getToolbar" ref="eric6.UI.UserInterface.html#UserInterface.getToolbar" /> <keyword name="UserInterface.getViewProfile" id="UserInterface.getViewProfile" ref="eric6.UI.UserInterface.html#UserInterface.getViewProfile" /> + <keyword name="UserInterface.handleUrl" id="UserInterface.handleUrl" ref="eric6.UI.UserInterface.html#UserInterface.handleUrl" /> <keyword name="UserInterface.isOnline" id="UserInterface.isOnline" ref="eric6.UI.UserInterface.html#UserInterface.isOnline" /> <keyword name="UserInterface.launchHelpViewer" id="UserInterface.launchHelpViewer" ref="eric6.UI.UserInterface.html#UserInterface.launchHelpViewer" /> <keyword name="UserInterface.notificationsEnabled" id="UserInterface.notificationsEnabled" ref="eric6.UI.UserInterface.html#UserInterface.notificationsEnabled" /> @@ -18018,6 +18033,7 @@ <keyword name="WebBrowserWindow.tabManager" id="WebBrowserWindow.tabManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.tabManager" /> <keyword name="WebBrowserWindow.tabWidget" id="WebBrowserWindow.tabWidget" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.tabWidget" /> <keyword name="WebBrowserWindow.toggleFullScreen" id="WebBrowserWindow.toggleFullScreen" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.toggleFullScreen" /> + <keyword name="WebBrowserWindow.urlHandler" id="WebBrowserWindow.urlHandler" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.urlHandler" /> <keyword name="WebBrowserWindow.userAgentsManager" id="WebBrowserWindow.userAgentsManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.userAgentsManager" /> <keyword name="WebBrowserWindow.webProfile" id="WebBrowserWindow.webProfile" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.webProfile" /> <keyword name="WebBrowserWindow.webSettings" id="WebBrowserWindow.webSettings" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.webSettings" /> @@ -18525,6 +18541,7 @@ <keyword name="decodeBytes" id="decodeBytes" ref="eric6.Utilities.__init__.html#decodeBytes" /> <keyword name="decodeString" id="decodeString" ref="eric6.Utilities.__init__.html#decodeString" /> <keyword name="decryptData" id="decryptData" ref="eric6.Utilities.crypto.py3AES.html#decryptData" /> + <keyword name="desktopName" id="desktopName" ref="eric6.Globals.__init__.html#desktopName" /> <keyword name="determinePyQtVariant" id="determinePyQtVariant" ref="eric6.install.html#determinePyQtVariant" /> <keyword name="determinePythonVersion" id="determinePythonVersion" ref="eric6.Utilities.__init__.html#determinePythonVersion" /> <keyword name="direntries" id="direntries" ref="eric6.Utilities.__init__.html#direntries" /> @@ -19609,11 +19626,11 @@ <file>eric6.Plugins.UiExtensionPlugins.PipInterface.ConfigurationPage.PipPage.html</file> <file>eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html</file> <file>eric6.Plugins.UiExtensionPlugins.PipInterface.PipDialog.html</file> + <file>eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.html</file> <file>eric6.Plugins.UiExtensionPlugins.PipInterface.PipFreezeDialog.html</file> <file>eric6.Plugins.UiExtensionPlugins.PipInterface.PipListDialog.html</file> <file>eric6.Plugins.UiExtensionPlugins.PipInterface.PipPackageDetailsDialog.html</file> <file>eric6.Plugins.UiExtensionPlugins.PipInterface.PipPackagesInputDialog.html</file> - <file>eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.html</file> <file>eric6.Plugins.UiExtensionPlugins.PipInterface.PipSearchDialog.html</file> <file>eric6.Plugins.UiExtensionPlugins.Translator.ConfigurationPage.TranslatorPage.html</file> <file>eric6.Plugins.UiExtensionPlugins.Translator.Translator.html</file>
--- a/Documentation/Source/eric6.E5Gui.E5MapWidget.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.E5Gui.E5MapWidget.html Sat Jun 02 12:44:41 2018 +0200 @@ -84,6 +84,9 @@ <td><a href="#E5MapWidget.isEnabled">isEnabled</a></td> <td>Public method to check the enabled state.</td> </tr><tr> +<td><a href="#E5MapWidget.isOnRightSide">isOnRightSide</a></td> +<td>Public method to test, if the map is shown on the right side of the master widget.</td> +</tr><tr> <td><a href="#E5MapWidget.lineDimensions">lineDimensions</a></td> <td>Public method to get the line (indicator) dimensions.</td> </tr><tr> @@ -111,6 +114,9 @@ <td><a href="#E5MapWidget.setLineDimensions">setLineDimensions</a></td> <td>Public method to set the line (indicator) dimensions.</td> </tr><tr> +<td><a href="#E5MapWidget.setMapPosition">setMapPosition</a></td> +<td>Public method to set, whether the map should be shown to the right or left of the master widget.</td> +</tr><tr> <td><a href="#E5MapWidget.setMaster">setMaster</a></td> <td>Public method to set the map master widget.</td> </tr><tr> @@ -222,6 +228,23 @@ <dd> flag indicating the enabled state (boolean) </dd> +</dl><a NAME="E5MapWidget.isOnRightSide" ID="E5MapWidget.isOnRightSide"></a> +<h4>E5MapWidget.isOnRightSide</h4> +<b>isOnRightSide</b>(<i></i>) +<p> + Public method to test, if the map is shown on the right side of the + master widget. +</p><dl> +<dt>Returns:</dt> +<dd> +flag indicating that the map is to the right of the master + widget +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="E5MapWidget.lineDimensions" ID="E5MapWidget.lineDimensions"></a> <h4>E5MapWidget.lineDimensions</h4> <b>lineDimensions</b>(<i></i>) @@ -330,6 +353,18 @@ <dd> height of the line in pixels (integer) </dd> +</dl><a NAME="E5MapWidget.setMapPosition" ID="E5MapWidget.setMapPosition"></a> +<h4>E5MapWidget.setMapPosition</h4> +<b>setMapPosition</b>(<i>onRight</i>) +<p> + Public method to set, whether the map should be shown to the right or + left of the master widget. +</p><dl> +<dt><i>onRight</i> (bool)</dt> +<dd> +flag indicating to show the map on the right side of + the master widget +</dd> </dl><a NAME="E5MapWidget.setMaster" ID="E5MapWidget.setMaster"></a> <h4>E5MapWidget.setMaster</h4> <b>setMaster</b>(<i>master</i>)
--- a/Documentation/Source/eric6.Globals.__init__.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.Globals.__init__.html Sat Jun 02 12:44:41 2018 +0200 @@ -37,6 +37,9 @@ <td><a href="#checkBlacklistedVersions">checkBlacklistedVersions</a></td> <td>Module functions to check for blacklisted versions of the prerequisites.</td> </tr><tr> +<td><a href="#desktopName">desktopName</a></td> +<td>Function to determine the name of the desktop environment used (Linux only).</td> +</tr><tr> <td><a href="#findPythonInterpreters">findPythonInterpreters</a></td> <td>Module function for searching a Python interpreter.</td> </tr><tr> @@ -109,6 +112,25 @@ </dl> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> +<a NAME="desktopName" ID="desktopName"></a> +<h2>desktopName</h2> +<b>desktopName</b>(<i></i>) +<p> + Function to determine the name of the desktop environment used + (Linux only). +</p><dl> +<dt>Returns:</dt> +<dd> +name of the desktop environment +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> <a NAME="findPythonInterpreters" ID="findPythonInterpreters"></a> <h2>findPythonInterpreters</h2> <b>findPythonInterpreters</b>(<i>pyVersion</i>)
--- a/Documentation/Source/eric6.Helpviewer.HelpWindow.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.Helpviewer.HelpWindow.html Sat Jun 02 12:44:41 2018 +0200 @@ -546,6 +546,9 @@ </tr><tr> <td><a href="#HelpWindow.shutdown">shutdown</a></td> <td>Public method to shut down the web browser.</td> +</tr><tr> +<td><a href="#HelpWindow.urlHandler">urlHandler</a></td> +<td>Public slot used as desktop URL handler.</td> </tr> </table> <h3>Static Methods</h3> @@ -1111,9 +1114,9 @@ <p> Private slot to handle the selection of a link in the TOC window. </p><dl> -<dt><i>url</i></dt> +<dt><i>url</i> (QUrl)</dt> <dd> -URL to be shown (QUrl) +URL to be shown </dd> </dl><a NAME="HelpWindow.__linksActivated" ID="HelpWindow.__linksActivated"></a> <h4>HelpWindow.__linksActivated</h4> @@ -1867,6 +1870,16 @@ <dd> flag indicating successful shutdown (boolean) </dd> +</dl><a NAME="HelpWindow.urlHandler" ID="HelpWindow.urlHandler"></a> +<h4>HelpWindow.urlHandler</h4> +<b>urlHandler</b>(<i>url</i>) +<p> + Public slot used as desktop URL handler. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL to be handled +</dd> </dl><a NAME="HelpWindow.__getWebIcon" ID="HelpWindow.__getWebIcon"></a> <h4>HelpWindow.__getWebIcon (static)</h4> <b>__getWebIcon</b>(<i></i>)
--- a/Documentation/Source/eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html Sat Jun 02 12:44:41 2018 +0200 @@ -90,6 +90,9 @@ <td><a href="#Pip.__handleTearOffMenu">__handleTearOffMenu</a></td> <td>Private slot to handle a change of the pip executable.</td> </tr><tr> +<td><a href="#Pip.__installLocalPackage">__installLocalPackage</a></td> +<td>Private slot to install a package available on local storage.</td> +</tr><tr> <td><a href="#Pip.__installPackages">__installPackages</a></td> <td>Private slot to install packages to be given by the user.</td> </tr><tr> @@ -276,7 +279,12 @@ <dd> path of the pip executable </dd> -</dl><a NAME="Pip.__installPackages" ID="Pip.__installPackages"></a> +</dl><a NAME="Pip.__installLocalPackage" ID="Pip.__installLocalPackage"></a> +<h4>Pip.__installLocalPackage</h4> +<b>__installLocalPackage</b>(<i></i>) +<p> + Private slot to install a package available on local storage. +</p><a NAME="Pip.__installPackages" ID="Pip.__installPackages"></a> <h4>Pip.__installPackages</h4> <b>__installPackages</b>(<i></i>) <p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.html Sat Jun 02 12:44:41 2018 +0200 @@ -0,0 +1,119 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog</h1> +<p> +Module implementing a dialog to enter a file to be processed. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#PipFileSelectionDialog">PipFileSelectionDialog</a></td> +<td>Class implementing a dialog to enter a file to be processed.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="PipFileSelectionDialog" ID="PipFileSelectionDialog"></a> +<h2>PipFileSelectionDialog</h2> +<p> + Class implementing a dialog to enter a file to be processed. +</p> +<h3>Derived from</h3> +QDialog, Ui_PipFileSelectionDialog +<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="#PipFileSelectionDialog.__init__">PipFileSelectionDialog</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#PipFileSelectionDialog.getData">getData</a></td> +<td>Public method to get the entered data.</td> +</tr><tr> +<td><a href="#PipFileSelectionDialog.on_filePicker_textChanged">on_filePicker_textChanged</a></td> +<td>Private slot to handle entering the name of a file.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="PipFileSelectionDialog.__init__" ID="PipFileSelectionDialog.__init__"></a> +<h4>PipFileSelectionDialog (Constructor)</h4> +<b>PipFileSelectionDialog</b>(<i>plugin, mode, parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>plugin</i> (PipInterfacePlugin)</dt> +<dd> +reference to the plugin object +</dd><dt><i>mode</i> (str)</dt> +<dd> +mode of the dialog +</dd><dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget +</dd> +</dl><a NAME="PipFileSelectionDialog.getData" ID="PipFileSelectionDialog.getData"></a> +<h4>PipFileSelectionDialog.getData</h4> +<b>getData</b>(<i></i>) +<p> + Public method to get the entered data. +</p><dl> +<dt>Returns:</dt> +<dd> +tuple with the pip command and the name of the + selected file +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +tuple of (str, str) +</dd> +</dl><a NAME="PipFileSelectionDialog.on_filePicker_textChanged" ID="PipFileSelectionDialog.on_filePicker_textChanged"></a> +<h4>PipFileSelectionDialog.on_filePicker_textChanged</h4> +<b>on_filePicker_textChanged</b>(<i>txt</i>) +<p> + Private slot to handle entering the name of a file. +</p><dl> +<dt><i>txt</i> (str)</dt> +<dd> +name of the file +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.html Tue May 01 12:04:30 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -<!DOCTYPE html> -<html><head> -<title>eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog</title> -<meta charset="UTF-8"> -<style> -body { - background: #EDECE6; - margin: 0em 1em 10em 1em; - color: black; -} - -h1 { color: white; background: #85774A; } -h2 { color: white; background: #85774A; } -h3 { color: white; background: #9D936E; } -h4 { color: white; background: #9D936E; } - -a { color: #BA6D36; } - -</style> -</head> -<body><a NAME="top" ID="top"></a> -<h1>eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog</h1> -<p> -Module implementing a dialog to enter a requirements file. -</p> -<h3>Global Attributes</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Classes</h3> -<table> -<tr> -<td><a href="#PipRequirementsSelectionDialog">PipRequirementsSelectionDialog</a></td> -<td>Class implementing a dialog to enter a requirements file.</td> -</tr> -</table> -<h3>Functions</h3> -<table> -<tr><td>None</td></tr> -</table> -<hr /><hr /> -<a NAME="PipRequirementsSelectionDialog" ID="PipRequirementsSelectionDialog"></a> -<h2>PipRequirementsSelectionDialog</h2> -<p> - Class implementing a dialog to enter a requirements file. -</p> -<h3>Derived from</h3> -QDialog, Ui_PipRequirementsSelectionDialog -<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="#PipRequirementsSelectionDialog.__init__">PipRequirementsSelectionDialog</a></td> -<td>Constructor</td> -</tr><tr> -<td><a href="#PipRequirementsSelectionDialog.getData">getData</a></td> -<td>Public method to get the entered data.</td> -</tr><tr> -<td><a href="#PipRequirementsSelectionDialog.on_fileButton_clicked">on_fileButton_clicked</a></td> -<td>Private slot to enter the requirements file via a file selection dialog.</td> -</tr><tr> -<td><a href="#PipRequirementsSelectionDialog.on_requirementsEdit_textChanged">on_requirementsEdit_textChanged</a></td> -<td>Private slot handling entering the name of a requirements file.</td> -</tr> -</table> -<h3>Static Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<a NAME="PipRequirementsSelectionDialog.__init__" ID="PipRequirementsSelectionDialog.__init__"></a> -<h4>PipRequirementsSelectionDialog (Constructor)</h4> -<b>PipRequirementsSelectionDialog</b>(<i>plugin, parent=None</i>) -<p> - Constructor -</p><dl> -<dt><i>plugin</i></dt> -<dd> -reference to the plugin object (ToolPipPlugin) -</dd><dt><i>parent</i></dt> -<dd> -reference to the parent widget (QWidget) -</dd> -</dl><a NAME="PipRequirementsSelectionDialog.getData" ID="PipRequirementsSelectionDialog.getData"></a> -<h4>PipRequirementsSelectionDialog.getData</h4> -<b>getData</b>(<i></i>) -<p> - Public method to get the entered data. -</p><dl> -<dt>Returns:</dt> -<dd> -tuple with the pip command (string) and the name of the - requirements file (string) -</dd> -</dl><a NAME="PipRequirementsSelectionDialog.on_fileButton_clicked" ID="PipRequirementsSelectionDialog.on_fileButton_clicked"></a> -<h4>PipRequirementsSelectionDialog.on_fileButton_clicked</h4> -<b>on_fileButton_clicked</b>(<i></i>) -<p> - Private slot to enter the requirements file via a file selection - dialog. -</p><a NAME="PipRequirementsSelectionDialog.on_requirementsEdit_textChanged" ID="PipRequirementsSelectionDialog.on_requirementsEdit_textChanged"></a> -<h4>PipRequirementsSelectionDialog.on_requirementsEdit_textChanged</h4> -<b>on_requirementsEdit_textChanged</b>(<i>txt</i>) -<p> - Private slot handling entering the name of a requirements file. -</p><dl> -<dt><i>txt</i></dt> -<dd> -name of the requirements file (string) -</dd> -</dl> -<div align="right"><a href="#top">Up</a></div> -<hr /> -</body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.Project.ProjectFormsBrowser.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.Project.ProjectFormsBrowser.html Sat Jun 02 12:44:41 2018 +0200 @@ -124,10 +124,10 @@ <td>Private slot to handle the Open in Editor menu action.</td> </tr><tr> <td><a href="#ProjectFormsBrowser.__readStderr">__readStderr</a></td> -<td>Private slot to handle the readyReadStandardError signal of the pyuic4/pyuic5/pyside-uic/rbuic4 process.</td> +<td>Private slot to handle the readyReadStandardError signal of the pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process.</td> </tr><tr> <td><a href="#ProjectFormsBrowser.__readStdout">__readStdout</a></td> -<td>Private slot to handle the readyReadStandardOutput signal of the pyuic4/pyuic5/pyside-uic/rbuic4 process.</td> +<td>Private slot to handle the readyReadStandardOutput signal of the pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process.</td> </tr><tr> <td><a href="#ProjectFormsBrowser.__showContextMenu">__showContextMenu</a></td> <td>Private slot called by the menu aboutToShow signal.</td> @@ -290,13 +290,13 @@ <b>__readStderr</b>(<i></i>) <p> Private slot to handle the readyReadStandardError signal of the - pyuic4/pyuic5/pyside-uic/rbuic4 process. + pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process. </p><a NAME="ProjectFormsBrowser.__readStdout" ID="ProjectFormsBrowser.__readStdout"></a> <h4>ProjectFormsBrowser.__readStdout</h4> <b>__readStdout</b>(<i></i>) <p> Private slot to handle the readyReadStandardOutput signal of the - pyuic4/pyuic5/pyside-uic/rbuic4 process. + pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process. </p><a NAME="ProjectFormsBrowser.__showContextMenu" ID="ProjectFormsBrowser.__showContextMenu"></a> <h4>ProjectFormsBrowser.__showContextMenu</h4> <b>__showContextMenu</b>(<i></i>)
--- a/Documentation/Source/eric6.Project.ProjectResourcesBrowser.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.Project.ProjectResourcesBrowser.html Sat Jun 02 12:44:41 2018 +0200 @@ -105,10 +105,10 @@ <td>Private slot to handle the Open menu action.</td> </tr><tr> <td><a href="#ProjectResourcesBrowser.__readStderr">__readStderr</a></td> -<td>Private slot to handle the readyReadStandardError signal of the pyrcc4/pyrcc5/pyside-rcc/rbrcc process.</td> +<td>Private slot to handle the readyReadStandardError signal of the pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process.</td> </tr><tr> <td><a href="#ProjectResourcesBrowser.__readStdout">__readStdout</a></td> -<td>Private slot to handle the readyReadStandardOutput signal of the pyrcc4/pyrcc5/pyside-rcc/rbrcc process.</td> +<td>Private slot to handle the readyReadStandardOutput signal of the pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process.</td> </tr><tr> <td><a href="#ProjectResourcesBrowser.__showContextMenu">__showContextMenu</a></td> <td>Private slot called by the menu aboutToShow signal.</td> @@ -259,13 +259,13 @@ <b>__readStderr</b>(<i></i>) <p> Private slot to handle the readyReadStandardError signal of the - pyrcc4/pyrcc5/pyside-rcc/rbrcc process. + pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process. </p><a NAME="ProjectResourcesBrowser.__readStdout" ID="ProjectResourcesBrowser.__readStdout"></a> <h4>ProjectResourcesBrowser.__readStdout</h4> <b>__readStdout</b>(<i></i>) <p> Private slot to handle the readyReadStandardOutput signal of the - pyrcc4/pyrcc5/pyside-rcc/rbrcc process. + pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process. </p><a NAME="ProjectResourcesBrowser.__showContextMenu" ID="ProjectResourcesBrowser.__showContextMenu"></a> <h4>ProjectResourcesBrowser.__showContextMenu</h4> <b>__showContextMenu</b>(<i></i>)
--- a/Documentation/Source/eric6.Project.ProjectTranslationsBrowser.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.Project.ProjectTranslationsBrowser.html Sat Jun 02 12:44:41 2018 +0200 @@ -119,7 +119,7 @@ <td>Private slot to handle the readyReadStandardError signal of the lrelease process.</td> </tr><tr> <td><a href="#ProjectTranslationsBrowser.__readStderrLupdate">__readStderrLupdate</a></td> -<td>Private slot to handle the readyReadStandardError signal of the pylupdate4/pylupdate5/pyside-lupdate process.</td> +<td>Private slot to handle the readyReadStandardError signal of the pylupdate4/pylupdate5/pyside-lupdate/pyside2-lupdate process.</td> </tr><tr> <td><a href="#ProjectTranslationsBrowser.__readStdout">__readStdout</a></td> <td>Private method to read from a process' stdout channel.</td> @@ -317,7 +317,7 @@ <b>__readStderrLupdate</b>(<i>proc</i>) <p> Private slot to handle the readyReadStandardError signal of the - pylupdate4/pylupdate5/pyside-lupdate process. + pylupdate4/pylupdate5/pyside-lupdate/pyside2-lupdate process. </p><dl> <dt><i>proc</i> (QProcess)</dt> <dd>
--- a/Documentation/Source/eric6.QScintilla.Editor.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.QScintilla.Editor.html Sat Jun 02 12:44:41 2018 +0200 @@ -213,9 +213,6 @@ <td><a href="#Editor.__charAdded">__charAdded</a></td> <td>Private slot called to handle the user entering a character.</td> </tr><tr> -<td><a href="#Editor.__charAddedPermanent">__charAddedPermanent</a></td> -<td>Private slot called to handle the user entering a character.</td> -</tr><tr> <td><a href="#Editor.__checkEncoding">__checkEncoding</a></td> <td>Private method to check the selected encoding of the encodings submenu.</td> </tr><tr> @@ -249,6 +246,12 @@ <td><a href="#Editor.__contextClose">__contextClose</a></td> <td>Private slot handling the close context menu entry.</td> </tr><tr> +<td><a href="#Editor.__contextMenuCollapseFoldWithChildren">__contextMenuCollapseFoldWithChildren</a></td> +<td>Private slot to handle the context menu collapse with children action.</td> +</tr><tr> +<td><a href="#Editor.__contextMenuExpandFoldWithChildren">__contextMenuExpandFoldWithChildren</a></td> +<td>Private slot to handle the context menu expand with children action.</td> +</tr><tr> <td><a href="#Editor.__contextMenuSpellingTriggered">__contextMenuSpellingTriggered</a></td> <td>Private slot to handle the selection of a suggestion of the spelling context menu.</td> </tr><tr> @@ -360,18 +363,12 @@ <td><a href="#Editor.__initContextMenuResources">__initContextMenuResources</a></td> <td>Private method used to setup the Resources context sub menu.</td> </tr><tr> -<td><a href="#Editor.__initContextMenuSeparateMargins">__initContextMenuSeparateMargins</a></td> -<td>Private method used to setup the context menu for the separated margins.</td> -</tr><tr> <td><a href="#Editor.__initContextMenuShow">__initContextMenuShow</a></td> <td>Private method used to setup the Show context sub menu.</td> </tr><tr> <td><a href="#Editor.__initContextMenuTools">__initContextMenuTools</a></td> <td>Private method used to setup the Tools context sub menu.</td> </tr><tr> -<td><a href="#Editor.__initContextMenuUnifiedMargins">__initContextMenuUnifiedMargins</a></td> -<td>Private method used to setup the context menu for the unified margins.</td> -</tr><tr> <td><a href="#Editor.__initOnlineChangeTrace">__initOnlineChangeTrace</a></td> <td>Private slot to initialize the online change trace.</td> </tr><tr> @@ -738,6 +735,9 @@ <td><a href="#Editor.codeCoverageShowAnnotations">codeCoverageShowAnnotations</a></td> <td>Public method to handle the show code coverage annotations context menu action.</td> </tr><tr> +<td><a href="#Editor.collapseFoldWithChildren">collapseFoldWithChildren</a></td> +<td>Public slot to collapse the current fold including its children.</td> +</tr><tr> <td><a href="#Editor.commentLine">commentLine</a></td> <td>Public slot to comment the current line.</td> </tr><tr> @@ -783,6 +783,9 @@ <td><a href="#Editor.event">event</a></td> <td>Public method handling events.</td> </tr><tr> +<td><a href="#Editor.expandFoldWithChildren">expandFoldWithChildren</a></td> +<td>Public slot to expand the current fold including its children.</td> +</tr><tr> <td><a href="#Editor.exportFile">exportFile</a></td> <td>Public method to export the file.</td> </tr><tr> @@ -1200,6 +1203,9 @@ <td><a href="#Editor.toggleCommentBlock">toggleCommentBlock</a></td> <td>Public slot to toggle the comment of a block.</td> </tr><tr> +<td><a href="#Editor.toggleCurrentFold">toggleCurrentFold</a></td> +<td>Public slot to toggle the fold containing the current line.</td> +</tr><tr> <td><a href="#Editor.toggleSyntaxError">toggleSyntaxError</a></td> <td>Public method to toggle a syntax error indicator.</td> </tr><tr> @@ -1491,19 +1497,6 @@ <dd> value of the character entered (integer) </dd> -</dl><a NAME="Editor.__charAddedPermanent" ID="Editor.__charAddedPermanent"></a> -<h4>Editor.__charAddedPermanent</h4> -<b>__charAddedPermanent</b>(<i>charNumber</i>) -<p> - Private slot called to handle the user entering a character. -</p><p> - Note: This slot is always connected independent of the auto-completion - and calltips handling __charAdded() slot. -</p><dl> -<dt><i>charNumber</i></dt> -<dd> -value of the character entered (integer) -</dd> </dl><a NAME="Editor.__checkEncoding" ID="Editor.__checkEncoding"></a> <h4>Editor.__checkEncoding</h4> <b>__checkEncoding</b>(<i></i>) @@ -1579,6 +1572,16 @@ <b>__contextClose</b>(<i></i>) <p> Private slot handling the close context menu entry. +</p><a NAME="Editor.__contextMenuCollapseFoldWithChildren" ID="Editor.__contextMenuCollapseFoldWithChildren"></a> +<h4>Editor.__contextMenuCollapseFoldWithChildren</h4> +<b>__contextMenuCollapseFoldWithChildren</b>(<i></i>) +<p> + Private slot to handle the context menu collapse with children action. +</p><a NAME="Editor.__contextMenuExpandFoldWithChildren" ID="Editor.__contextMenuExpandFoldWithChildren"></a> +<h4>Editor.__contextMenuExpandFoldWithChildren</h4> +<b>__contextMenuExpandFoldWithChildren</b>(<i></i>) +<p> + Private slot to handle the context menu expand with children action. </p><a NAME="Editor.__contextMenuSpellingTriggered" ID="Editor.__contextMenuSpellingTriggered"></a> <h4>Editor.__contextMenuSpellingTriggered</h4> <b>__contextMenuSpellingTriggered</b>(<i>action</i>) @@ -1963,13 +1966,7 @@ <dd> reference to the generated menu (QMenu) </dd> -</dl><a NAME="Editor.__initContextMenuSeparateMargins" ID="Editor.__initContextMenuSeparateMargins"></a> -<h4>Editor.__initContextMenuSeparateMargins</h4> -<b>__initContextMenuSeparateMargins</b>(<i></i>) -<p> - Private method used to setup the context menu for the separated - margins. -</p><a NAME="Editor.__initContextMenuShow" ID="Editor.__initContextMenuShow"></a> +</dl><a NAME="Editor.__initContextMenuShow" ID="Editor.__initContextMenuShow"></a> <h4>Editor.__initContextMenuShow</h4> <b>__initContextMenuShow</b>(<i></i>) <p> @@ -1989,12 +1986,7 @@ <dd> reference to the generated menu (QMenu) </dd> -</dl><a NAME="Editor.__initContextMenuUnifiedMargins" ID="Editor.__initContextMenuUnifiedMargins"></a> -<h4>Editor.__initContextMenuUnifiedMargins</h4> -<b>__initContextMenuUnifiedMargins</b>(<i></i>) -<p> - Private method used to setup the context menu for the unified margins. -</p><a NAME="Editor.__initOnlineChangeTrace" ID="Editor.__initOnlineChangeTrace"></a> +</dl><a NAME="Editor.__initOnlineChangeTrace" ID="Editor.__initOnlineChangeTrace"></a> <h4>Editor.__initOnlineChangeTrace</h4> <b>__initOnlineChangeTrace</b>(<i></i>) <p> @@ -3024,6 +3016,16 @@ <dd> flag indicating to not show any dialog (boolean) </dd> +</dl><a NAME="Editor.collapseFoldWithChildren" ID="Editor.collapseFoldWithChildren"></a> +<h4>Editor.collapseFoldWithChildren</h4> +<b>collapseFoldWithChildren</b>(<i>line=-1</i>) +<p> + Public slot to collapse the current fold including its children. +</p><dl> +<dt><i>line</i> (int)</dt> +<dd> +number of line to be expanded +</dd> </dl><a NAME="Editor.commentLine" ID="Editor.commentLine"></a> <h4>Editor.commentLine</h4> <b>commentLine</b>(<i></i>) @@ -3136,24 +3138,30 @@ </dd> </dl><a NAME="Editor.ensureVisible" ID="Editor.ensureVisible"></a> <h4>Editor.ensureVisible</h4> -<b>ensureVisible</b>(<i>line</i>) +<b>ensureVisible</b>(<i>line, expand=False</i>) <p> Public slot to ensure, that the specified line is visible. </p><dl> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> line number to make visible +</dd><dt><i>expand=</i> (bool)</dt> +<dd> +flag indicating to expand all folds </dd> </dl><a NAME="Editor.ensureVisibleTop" ID="Editor.ensureVisibleTop"></a> <h4>Editor.ensureVisibleTop</h4> -<b>ensureVisibleTop</b>(<i>line</i>) +<b>ensureVisibleTop</b>(<i>line, expand=False</i>) <p> Public slot to ensure, that the specified line is visible at the top of the editor. </p><dl> -<dt><i>line</i></dt> +<dt><i>line</i> (int)</dt> <dd> line number to make visible +</dd><dt><i>expand=</i> (bool)</dt> +<dd> +flag indicating to expand all folds </dd> </dl><a NAME="Editor.event" ID="Editor.event"></a> <h4>Editor.event</h4> @@ -3170,6 +3178,16 @@ <dd> flag indicating, if the event was handled (boolean) </dd> +</dl><a NAME="Editor.expandFoldWithChildren" ID="Editor.expandFoldWithChildren"></a> +<h4>Editor.expandFoldWithChildren</h4> +<b>expandFoldWithChildren</b>(<i>line=-1</i>) +<p> + Public slot to expand the current fold including its children. +</p><dl> +<dt><i>line</i> (int)</dt> +<dd> +number of line to be expanded +</dd> </dl><a NAME="Editor.exportFile" ID="Editor.exportFile"></a> <h4>Editor.exportFile</h4> <b>exportFile</b>(<i>exporterFormat</i>) @@ -3738,20 +3756,23 @@ Public method to move the cursor to the last edit position. </p><a NAME="Editor.gotoLine" ID="Editor.gotoLine"></a> <h4>Editor.gotoLine</h4> -<b>gotoLine</b>(<i>line, pos=1, firstVisible=False</i>) +<b>gotoLine</b>(<i>line, pos=1, firstVisible=False, expand=False</i>) <p> Public slot to jump to the beginning of a line. </p><dl> -<dt><i>line</i></dt> -<dd> -line number to go to (integer) -</dd><dt><i>pos=</i></dt> -<dd> -position in line to go to (integer) -</dd><dt><i>firstVisible=</i></dt> +<dt><i>line</i> (int)</dt> +<dd> +line number to go to +</dd><dt><i>pos=</i> (int)</dt> +<dd> +position in line to go to +</dd><dt><i>firstVisible=</i> (bool)</dt> <dd> flag indicating to make the line the first - visible line (boolean) + visible line +</dd><dt><i>expand=</i> (bool)</dt> +<dd> +flag indicating to expand all folds </dd> </dl><a NAME="Editor.gotoMethodClass" ID="Editor.gotoMethodClass"></a> <h4>Editor.gotoMethodClass</h4> @@ -4565,6 +4586,11 @@ If the line of the cursor or the selection is not commented, it will be commented. If it is commented, the comment block will be removed. The later works independent of the current selection. +</p><a NAME="Editor.toggleCurrentFold" ID="Editor.toggleCurrentFold"></a> +<h4>Editor.toggleCurrentFold</h4> +<b>toggleCurrentFold</b>(<i></i>) +<p> + Public slot to toggle the fold containing the current line. </p><a NAME="Editor.toggleSyntaxError" ID="Editor.toggleSyntaxError"></a> <h4>Editor.toggleSyntaxError</h4> <b>toggleSyntaxError</b>(<i>line, index, error, msg="", show=False</i>)
--- a/Documentation/Source/eric6.QScintilla.QsciScintillaCompat.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.QScintilla.QsciScintillaCompat.html Sat Jun 02 12:44:41 2018 +0200 @@ -88,6 +88,15 @@ <td><a href="#QsciScintillaCompat._encodeString">_encodeString</a></td> <td>Protected method to encode a string depending on the current mode.</td> </tr><tr> +<td><a href="#QsciScintillaCompat.autoCompleteFromAPIs">autoCompleteFromAPIs</a></td> +<td>Public method to resize list box after creation.</td> +</tr><tr> +<td><a href="#QsciScintillaCompat.autoCompleteFromAll">autoCompleteFromAll</a></td> +<td>Public method to resize list box after creation.</td> +</tr><tr> +<td><a href="#QsciScintillaCompat.autoCompleteFromDocument">autoCompleteFromDocument</a></td> +<td>Public method to resize list box after creation.</td> +</tr><tr> <td><a href="#QsciScintillaCompat.byteAt">byteAt</a></td> <td>Public method to get the raw character (bytes) at a position in the text.</td> </tr><tr> @@ -385,6 +394,9 @@ <td><a href="#QsciScintillaCompat.styleAt">styleAt</a></td> <td>Public method to get the style at a position in the text.</td> </tr><tr> +<td><a href="#QsciScintillaCompat.updateUserListSize">updateUserListSize</a></td> +<td>Public method to resize the completion list to fit with contents.</td> +</tr><tr> <td><a href="#QsciScintillaCompat.updateVerticalScrollBar">updateVerticalScrollBar</a></td> <td>Public method to update the vertical scroll bar to reflect the additional lines added by annotations.</td> </tr><tr> @@ -478,7 +490,22 @@ <dd> encoded string (bytes) </dd> -</dl><a NAME="QsciScintillaCompat.byteAt" ID="QsciScintillaCompat.byteAt"></a> +</dl><a NAME="QsciScintillaCompat.autoCompleteFromAPIs" ID="QsciScintillaCompat.autoCompleteFromAPIs"></a> +<h4>QsciScintillaCompat.autoCompleteFromAPIs</h4> +<b>autoCompleteFromAPIs</b>(<i></i>) +<p> + Public method to resize list box after creation. +</p><a NAME="QsciScintillaCompat.autoCompleteFromAll" ID="QsciScintillaCompat.autoCompleteFromAll"></a> +<h4>QsciScintillaCompat.autoCompleteFromAll</h4> +<b>autoCompleteFromAll</b>(<i></i>) +<p> + Public method to resize list box after creation. +</p><a NAME="QsciScintillaCompat.autoCompleteFromDocument" ID="QsciScintillaCompat.autoCompleteFromDocument"></a> +<h4>QsciScintillaCompat.autoCompleteFromDocument</h4> +<b>autoCompleteFromDocument</b>(<i></i>) +<p> + Public method to resize list box after creation. +</p><a NAME="QsciScintillaCompat.byteAt" ID="QsciScintillaCompat.byteAt"></a> <h4>QsciScintillaCompat.byteAt</h4> <b>byteAt</b>(<i>pos</i>) <p> @@ -686,7 +713,7 @@ Public method to handle events. </p><p> Note: We are not interested in the standard QsciScintilla event - handling because we do it our self. + handling because we do it ourselves. </p><dl> <dt><i>evt</i></dt> <dd> @@ -1688,7 +1715,7 @@ <h4>QsciScintillaCompat.showUserList</h4> <b>showUserList</b>(<i>listId, lst</i>) <p> - Public method to show a user supplied list. + Public method to show a user supplied list. </p><dl> <dt><i>listId</i></dt> <dd> @@ -1726,7 +1753,12 @@ style at the requested position or 0, if the position is negative or past the end of the document (integer) </dd> -</dl><a NAME="QsciScintillaCompat.updateVerticalScrollBar" ID="QsciScintillaCompat.updateVerticalScrollBar"></a> +</dl><a NAME="QsciScintillaCompat.updateUserListSize" ID="QsciScintillaCompat.updateUserListSize"></a> +<h4>QsciScintillaCompat.updateUserListSize</h4> +<b>updateUserListSize</b>(<i></i>) +<p> + Public method to resize the completion list to fit with contents. +</p><a NAME="QsciScintillaCompat.updateVerticalScrollBar" ID="QsciScintillaCompat.updateVerticalScrollBar"></a> <h4>QsciScintillaCompat.updateVerticalScrollBar</h4> <b>updateVerticalScrollBar</b>(<i></i>) <p>
--- a/Documentation/Source/eric6.UI.Previewers.PreviewerHTML.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.UI.Previewers.PreviewerHTML.html Sat Jun 02 12:44:41 2018 +0200 @@ -492,9 +492,9 @@ <p> Private slot handling the clicking of a link. </p><dl> -<dt><i>url</i></dt> +<dt><i>url</i> (QUrl)</dt> <dd> -url of the clicked link (QUrl) +URL of the clicked link </dd> </dl><a NAME="PreviewerHTML.on_previewView_titleChanged" ID="PreviewerHTML.on_previewView_titleChanged"></a> <h4>PreviewerHTML.on_previewView_titleChanged</h4>
--- a/Documentation/Source/eric6.UI.UserInterface.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.UI.UserInterface.html Sat Jun 02 12:44:41 2018 +0200 @@ -325,7 +325,7 @@ <td>Private slot to handle the helpClosed signal of the help window.</td> </tr><tr> <td><a href="#UserInterface.__helpViewer">__helpViewer</a></td> -<td>Private slot to start an empty help viewer.</td> +<td>Private slot to start an empty help viewer/web browser.</td> </tr><tr> <td><a href="#UserInterface.__importPreferences">__importPreferences</a></td> <td>Private slot to import preferences.</td> @@ -348,8 +348,8 @@ <td><a href="#UserInterface.__initMenus">__initMenus</a></td> <td>Private slot to create the menus.</td> </tr><tr> -<td><a href="#UserInterface.__initPySideDocAction">__initPySideDocAction</a></td> -<td>Private slot to initialize the action to show the PySide documentation.</td> +<td><a href="#UserInterface.__initPySideDocActions">__initPySideDocActions</a></td> +<td>Private slot to initialize the actions to show the PySide documentation.</td> </tr><tr> <td><a href="#UserInterface.__initPythonDocActions">__initPythonDocActions</a></td> <td>Private slot to initialize the actions to show the Python documentation.</td> @@ -514,7 +514,7 @@ <td>Private slot to show the PyQt5 documentation.</td> </tr><tr> <td><a href="#UserInterface.__showPySideDoc">__showPySideDoc</a></td> -<td>Private slot to show the PySide documentation.</td> +<td>Private slot to show the PySide/PySide2 documentation.</td> </tr><tr> <td><a href="#UserInterface.__showPython2Doc">__showPython2Doc</a></td> <td>Private slot to show the Python 2 documentation.</td> @@ -756,11 +756,14 @@ <td><a href="#UserInterface.getViewProfile">getViewProfile</a></td> <td>Public method to get the current view profile.</td> </tr><tr> +<td><a href="#UserInterface.handleUrl">handleUrl</a></td> +<td>Public slot to handle opening a URL.</td> +</tr><tr> <td><a href="#UserInterface.isOnline">isOnline</a></td> <td>Public method to get the online state.</td> </tr><tr> <td><a href="#UserInterface.launchHelpViewer">launchHelpViewer</a></td> -<td>Public slot to start the help viewer.</td> +<td>Public slot to start the help viewer/web browser.</td> </tr><tr> <td><a href="#UserInterface.notificationsEnabled">notificationsEnabled</a></td> <td>Public method to check, if notifications are enabled.</td> @@ -1223,7 +1226,7 @@ <h4>UserInterface.__helpViewer</h4> <b>__helpViewer</b>(<i></i>) <p> - Private slot to start an empty help viewer. + Private slot to start an empty help viewer/web browser. </p><a NAME="UserInterface.__importPreferences" ID="UserInterface.__importPreferences"></a> <h4>UserInterface.__importPreferences</h4> <b>__importPreferences</b>(<i></i>) @@ -1259,11 +1262,12 @@ <b>__initMenus</b>(<i></i>) <p> Private slot to create the menus. -</p><a NAME="UserInterface.__initPySideDocAction" ID="UserInterface.__initPySideDocAction"></a> -<h4>UserInterface.__initPySideDocAction</h4> -<b>__initPySideDocAction</b>(<i></i>) +</p><a NAME="UserInterface.__initPySideDocActions" ID="UserInterface.__initPySideDocActions"></a> +<h4>UserInterface.__initPySideDocActions</h4> +<b>__initPySideDocActions</b>(<i></i>) <p> - Private slot to initialize the action to show the PySide documentation. + Private slot to initialize the actions to show the PySide + documentation. </p><a NAME="UserInterface.__initPythonDocActions" ID="UserInterface.__initPythonDocActions"></a> <h4>UserInterface.__initPythonDocActions</h4> <b>__initPythonDocActions</b>(<i></i>) @@ -1669,10 +1673,15 @@ Private slot to show the PyQt5 documentation. </p><a NAME="UserInterface.__showPySideDoc" ID="UserInterface.__showPySideDoc"></a> <h4>UserInterface.__showPySideDoc</h4> -<b>__showPySideDoc</b>(<i></i>) +<b>__showPySideDoc</b>(<i>variant</i>) <p> - Private slot to show the PySide documentation. -</p><a NAME="UserInterface.__showPython2Doc" ID="UserInterface.__showPython2Doc"></a> + Private slot to show the PySide/PySide2 documentation. +</p><dl> +<dt><i>variant</i> (str)</dt> +<dd> +PySide variant (1 or 2) +</dd> +</dl><a NAME="UserInterface.__showPython2Doc" ID="UserInterface.__showPython2Doc"></a> <h4>UserInterface.__showPython2Doc</h4> <b>__showPython2Doc</b>(<i></i>) <p> @@ -2379,6 +2388,16 @@ <dd> the name of the current view profile (string) </dd> +</dl><a NAME="UserInterface.handleUrl" ID="UserInterface.handleUrl"></a> +<h4>UserInterface.handleUrl</h4> +<b>handleUrl</b>(<i>url</i>) +<p> + Public slot to handle opening a URL. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL to be shown +</dd> </dl><a NAME="UserInterface.isOnline" ID="UserInterface.isOnline"></a> <h4>UserInterface.isOnline</h4> <b>isOnline</b>(<i></i>) @@ -2398,18 +2417,17 @@ <h4>UserInterface.launchHelpViewer</h4> <b>launchHelpViewer</b>(<i>home, searchWord=None, useSingle=False</i>) <p> - Public slot to start the help viewer. + Public slot to start the help viewer/web browser. </p><dl> -<dt><i>home</i></dt> +<dt><i>home</i> (str or QUrl)</dt> <dd> -filename of file to be shown (string) -</dd><dt><i>searchWord=</i></dt> +filename of file to be shown or URL to be opened +</dd><dt><i>searchWord=</i> (str)</dt> <dd> -word to search for (string) -</dd><dt><i>useSingle=</i></dt> +word to search for +</dd><dt><i>useSingle=</i> (bool)</dt> <dd> flag indicating to use a single browser window - (boolean) </dd> </dl><a NAME="UserInterface.notificationsEnabled" ID="UserInterface.notificationsEnabled"></a> <h4>UserInterface.notificationsEnabled</h4>
--- a/Documentation/Source/eric6.Utilities.PySideImporter.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.Utilities.PySideImporter.html Sat Jun 02 12:44:41 2018 +0200 @@ -21,7 +21,7 @@ <body><a NAME="top" ID="top"></a> <h1>eric6.Utilities.PySideImporter</h1> <p> -Module to check for the presence of PySide by importing it. +Module to check for the presence of PySide/PySide2 by importing it. </p> <h3>Global Attributes</h3> <table>
--- a/Documentation/Source/eric6.Utilities.__init__.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.Utilities.__init__.html Sat Jun 02 12:44:41 2018 +0200 @@ -50,7 +50,7 @@ <td>Public method to convert a path relative to a start path with universal separators to an absolute path.</td> </tr><tr> <td><a href="#checkPyside">checkPyside</a></td> -<td>Module function to check the presence of PySide.</td> +<td>Module function to check the presence of PySide/PySide2.</td> </tr><tr> <td><a href="#compactPath">compactPath</a></td> <td>Function to return a compacted path fitting inside the given width.</td> @@ -107,7 +107,7 @@ <td>Module function to generate the executable path for a PyQt tool.</td> </tr><tr> <td><a href="#generatePySideToolPath">generatePySideToolPath</a></td> -<td>Module function to generate the executable path for a PySide tool.</td> +<td>Module function to generate the executable path for a PySide/PySide2 tool.</td> </tr><tr> <td><a href="#generateQtToolName">generateQtToolName</a></td> <td>Module function to generate the executable name for a Qt tool like designer.</td> @@ -439,14 +439,24 @@ <hr /><hr /> <a NAME="checkPyside" ID="checkPyside"></a> <h2>checkPyside</h2> -<b>checkPyside</b>(<i></i>) +<b>checkPyside</b>(<i>variant="2"</i>) <p> - Module function to check the presence of PySide. + Module function to check the presence of PySide/PySide2. </p><dl> +<dt><i>variant</i> (str)</dt> +<dd> +indicator for the PySide variant +</dd> +</dl><dl> <dt>Returns:</dt> <dd> -list of two flags indicating the presence of PySide for Python2 - and PySide for Python3 (boolean, boolean) +list of two flags indicating the presence of PySide/PySide2 for + Python2 and PySide/PySide2 for Python3 +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, bool) </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -859,18 +869,26 @@ <hr /><hr /> <a NAME="generatePySideToolPath" ID="generatePySideToolPath"></a> <h2>generatePySideToolPath</h2> -<b>generatePySideToolPath</b>(<i>toolname</i>) +<b>generatePySideToolPath</b>(<i>toolname, variant="2"</i>) <p> - Module function to generate the executable path for a PySide tool. + Module function to generate the executable path for a PySide/PySide2 tool. </p><dl> -<dt><i>toolname</i></dt> +<dt><i>toolname</i> (str)</dt> <dd> -base name of the tool (string) +base name of the tool +</dd><dt><i>variant</i> (str)</dt> +<dd> +indicator for the PySide variant </dd> </dl><dl> <dt>Returns:</dt> <dd> -the PySide tool path with extension (string) +the PySide/PySide2 tool path with extension +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.VCS.__init__.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.VCS.__init__.html Sat Jun 02 12:44:41 2018 +0200 @@ -27,7 +27,7 @@ The general part of the VCS interface defines classes to implement common dialogs. These are a dialog to enter command options, a dialog to display some repository information and an abstract base class. The individual -interfaces (i.e. CVS) have to be subclasses of this base class. +interfaces have to be subclasses of this base class. </p> <h3>Global Attributes</h3> <table>
--- a/Documentation/Source/eric6.WebBrowser.Download.DownloadItem.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.WebBrowser.Download.DownloadItem.html Sat Jun 02 12:44:41 2018 +0200 @@ -172,7 +172,7 @@ </table> <a NAME="DownloadItem.__init__" ID="DownloadItem.__init__"></a> <h4>DownloadItem (Constructor)</h4> -<b>DownloadItem</b>(<i>downloadItem=None, pageUrl="", parent=None</i>) +<b>DownloadItem</b>(<i>downloadItem=None, pageUrl=None, parent=None</i>) <p> Constructor </p><dl>
--- a/Documentation/Source/eric6.WebBrowser.Network.NetworkUrlInterceptor.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.WebBrowser.Network.NetworkUrlInterceptor.html Sat Jun 02 12:44:41 2018 +0200 @@ -64,6 +64,21 @@ <td><a href="#NetworkUrlInterceptor.__loadSettings">__loadSettings</a></td> <td>Private method to load the Network Manager settings.</td> </tr><tr> +<td><a href="#NetworkUrlInterceptor.__potentiallyTrustworthy">__potentiallyTrustworthy</a></td> +<td>Private method to check, if the given URL is potentially trustworthy.</td> +</tr><tr> +<td><a href="#NetworkUrlInterceptor.__refererOrigin">__refererOrigin</a></td> +<td>Private method to generate an origin referer header URL.</td> +</tr><tr> +<td><a href="#NetworkUrlInterceptor.__sameOrigin">__sameOrigin</a></td> +<td>Private method to test the "same origin" policy.</td> +</tr><tr> +<td><a href="#NetworkUrlInterceptor.__setRefererHeader">__setRefererHeader</a></td> +<td>Private method to set the 'Referer' header depending on the configured rule set.</td> +</tr><tr> +<td><a href="#NetworkUrlInterceptor.__trimmedReferer">__trimmedReferer</a></td> +<td>Private method to generate the trimmed referer header URL.</td> +</tr><tr> <td><a href="#NetworkUrlInterceptor.installUrlInterceptor">installUrlInterceptor</a></td> <td>Public method to install an URL interceptor.</td> </tr><tr> @@ -96,7 +111,109 @@ <b>__loadSettings</b>(<i></i>) <p> Private method to load the Network Manager settings. -</p><a NAME="NetworkUrlInterceptor.installUrlInterceptor" ID="NetworkUrlInterceptor.installUrlInterceptor"></a> +</p><a NAME="NetworkUrlInterceptor.__potentiallyTrustworthy" ID="NetworkUrlInterceptor.__potentiallyTrustworthy"></a> +<h4>NetworkUrlInterceptor.__potentiallyTrustworthy</h4> +<b>__potentiallyTrustworthy</b>(<i>url</i>) +<p> + Private method to check, if the given URL is potentially trustworthy. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL to be checked +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating a potentially trustworthy URL +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl><a NAME="NetworkUrlInterceptor.__refererOrigin" ID="NetworkUrlInterceptor.__refererOrigin"></a> +<h4>NetworkUrlInterceptor.__refererOrigin</h4> +<b>__refererOrigin</b>(<i>url</i>) +<p> + Private method to generate an origin referer header URL. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL to generate the header from +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +origin referer header URL +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QByteArray or bytes +</dd> +</dl><a NAME="NetworkUrlInterceptor.__sameOrigin" ID="NetworkUrlInterceptor.__sameOrigin"></a> +<h4>NetworkUrlInterceptor.__sameOrigin</h4> +<b>__sameOrigin</b>(<i>url1, url2</i>) +<p> + Private method to test the "same origin" policy. +</p><dl> +<dt><i>url1</i> (QUrl)</dt> +<dd> +first URL for the test +</dd><dt><i>url2</i> (QUrl)</dt> +<dd> +second URL for the test +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating that both URLs have the same origin +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl><a NAME="NetworkUrlInterceptor.__setRefererHeader" ID="NetworkUrlInterceptor.__setRefererHeader"></a> +<h4>NetworkUrlInterceptor.__setRefererHeader</h4> +<b>__setRefererHeader</b>(<i>info</i>) +<p> + Private method to set the 'Referer' header depending on the configured + rule set. +</p><dl> +<dt><i>info</i> (QWebEngineUrlRequestInfo)</dt> +<dd> +URL request information +</dd> +</dl><dl> +<dt><b>See Also:</b></dt> +<dd> +<a href="https://wiki.mozilla.org/Security/Referrer"> Mozilla Referrer</a> +</dd> +<dd> +<a href="https://www.w3.org/TR/referrer-policy/"> W3C Referrer Policy</a> +</dd> +</dl><a NAME="NetworkUrlInterceptor.__trimmedReferer" ID="NetworkUrlInterceptor.__trimmedReferer"></a> +<h4>NetworkUrlInterceptor.__trimmedReferer</h4> +<b>__trimmedReferer</b>(<i>url</i>) +<p> + Private method to generate the trimmed referer header URL. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL to be trimmed as a referer header +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +trimmed referer header URL +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QByteArray or bytes +</dd> +</dl><a NAME="NetworkUrlInterceptor.installUrlInterceptor" ID="NetworkUrlInterceptor.installUrlInterceptor"></a> <h4>NetworkUrlInterceptor.installUrlInterceptor</h4> <b>installUrlInterceptor</b>(<i>interceptor</i>) <p>
--- a/Documentation/Source/eric6.WebBrowser.WebBrowserWindow.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/eric6.WebBrowser.WebBrowserWindow.html Sat Jun 02 12:44:41 2018 +0200 @@ -654,6 +654,9 @@ </tr><tr> <td><a href="#WebBrowserWindow.toggleFullScreen">toggleFullScreen</a></td> <td>Public slot called to toggle the full screen mode.</td> +</tr><tr> +<td><a href="#WebBrowserWindow.urlHandler">urlHandler</a></td> +<td>Public slot used as desktop URL handler.</td> </tr> </table> <h3>Static Methods</h3> @@ -1406,9 +1409,9 @@ <p> Private slot to handle the selection of a link. </p><dl> -<dt><i>url</i></dt> +<dt><i>url</i> (QUrl)</dt> <dd> -URL to be shown (QUrl) +URL to be shown </dd> </dl><a NAME="WebBrowserWindow.__lookForNewDocumentation" ID="WebBrowserWindow.__lookForNewDocumentation"></a> <h4>WebBrowserWindow.__lookForNewDocumentation</h4> @@ -2414,7 +2417,17 @@ <b>toggleFullScreen</b>(<i></i>) <p> Public slot called to toggle the full screen mode. -</p> +</p><a NAME="WebBrowserWindow.urlHandler" ID="WebBrowserWindow.urlHandler"></a> +<h4>WebBrowserWindow.urlHandler</h4> +<b>urlHandler</b>(<i>url</i>) +<p> + Public slot used as desktop URL handler. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL to be handled +</dd> +</dl> <div align="right"><a href="#top">Up</a></div> <hr /> </body></html> \ No newline at end of file
--- a/Documentation/Source/index-eric6.Plugins.UiExtensionPlugins.PipInterface.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/index-eric6.Plugins.UiExtensionPlugins.PipInterface.html Sat Jun 02 12:44:41 2018 +0200 @@ -41,6 +41,9 @@ <td><a href="eric6.Plugins.UiExtensionPlugins.PipInterface.PipDialog.html">PipDialog</a></td> <td>Module implementing a dialog showing the output of a pip command.</td> </tr><tr> +<td><a href="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFileSelectionDialog.html">PipFileSelectionDialog</a></td> +<td>Module implementing a dialog to enter a file to be processed.</td> +</tr><tr> <td><a href="eric6.Plugins.UiExtensionPlugins.PipInterface.PipFreezeDialog.html">PipFreezeDialog</a></td> <td>Module implementing a dialog to generate a requirements file.</td> </tr><tr> @@ -53,9 +56,6 @@ <td><a href="eric6.Plugins.UiExtensionPlugins.PipInterface.PipPackagesInputDialog.html">PipPackagesInputDialog</a></td> <td>Module implementing a dialog to enter package specifications.</td> </tr><tr> -<td><a href="eric6.Plugins.UiExtensionPlugins.PipInterface.PipRequirementsSelectionDialog.html">PipRequirementsSelectionDialog</a></td> -<td>Module implementing a dialog to enter a requirements file.</td> -</tr><tr> <td><a href="eric6.Plugins.UiExtensionPlugins.PipInterface.PipSearchDialog.html">PipSearchDialog</a></td> <td>Module implementing a dialog to search PyPI.</td> </tr>
--- a/Documentation/Source/index-eric6.Utilities.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/index-eric6.Utilities.html Sat Jun 02 12:44:41 2018 +0200 @@ -63,7 +63,7 @@ <td>Module implementing a checker for password strength.</td> </tr><tr> <td><a href="eric6.Utilities.PySideImporter.html">PySideImporter</a></td> -<td>Module to check for the presence of PySide by importing it.</td> +<td>Module to check for the presence of PySide/PySide2 by importing it.</td> </tr><tr> <td><a href="eric6.Utilities.__init__.html">Utilities</a></td> <td>Package implementing various functions/classes needed everywhere within eric6.</td>
--- a/Documentation/Source/index-eric6.VCS.html Tue May 01 12:04:30 2018 +0200 +++ b/Documentation/Source/index-eric6.VCS.html Sat Jun 02 12:44:41 2018 +0200 @@ -27,7 +27,7 @@ The general part of the VCS interface defines classes to implement common dialogs. These are a dialog to enter command options, a dialog to display some repository information and an abstract base class. The individual -interfaces (i.e. CVS) have to be subclasses of this base class. +interfaces have to be subclasses of this base class. </p>
--- a/E5Gui/E5MapWidget.py Tue May 01 12:04:30 2018 +0200 +++ b/E5Gui/E5MapWidget.py Sat Jun 02 12:44:41 2018 +0200 @@ -37,6 +37,7 @@ self._master = None self.__enabled = False + self.__rightSide = True if parent is not None and isinstance(parent, QAbstractScrollArea): self.setMaster(parent) @@ -62,7 +63,10 @@ width = self.__width else: width = 0 - self._master.setViewportMargins(0, 0, width, 0) + if self.__rightSide: + self._master.setViewportMargins(0, 0, width, 0) + else: + self._master.setViewportMargins(width, 0, 0, 0) def setMaster(self, master): """ @@ -72,8 +76,8 @@ """ self._master = master self._master.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) - self._master.verticalScrollBar().valueChanged.connect(self.repaint) - self._master.verticalScrollBar().rangeChanged.connect(self.repaint) + self._master.verticalScrollBar().valueChanged.connect(self.update) + self._master.verticalScrollBar().rangeChanged.connect(self.update) self.__updateMasterViewportWidth() def setWidth(self, width): @@ -95,6 +99,31 @@ """ return self.__width + def setMapPosition(self, onRight): + """ + Public method to set, whether the map should be shown to the right or + left of the master widget. + + @param onRight flag indicating to show the map on the right side of + the master widget + @type bool + """ + if onRight != self.__rightSide: + self.__rightSide = onRight + self.__updateMasterViewportWidth() + self.update() + + def isOnRightSide(self): + """ + Public method to test, if the map is shown on the right side of the + master widget. + + @return flag indicating that the map is to the right of the master + widget + @rtype bool + """ + return self.__rightSide + def setLineDimensions(self, border, height): """ Public method to set the line (indicator) dimensions. @@ -245,8 +274,13 @@ left, top, right, bottom = self._master.getContentsMargins() if right > vsbw: vsbw = 0 - self.setGeometry(QRect(cr.right() - self.__width - vsbw, cr.top(), - self.__width, cr.height())) + if self.__rightSide: + self.setGeometry( + QRect(cr.right() - self.__width - vsbw, cr.top(), + self.__width, cr.height())) + else: + self.setGeometry( + QRect(0, cr.top(), self.__width, cr.height())) self.update() def scaleFactor(self, slider=False):
--- a/Globals/__init__.py Tue May 01 12:04:30 2018 +0200 +++ b/Globals/__init__.py Sat Jun 02 12:44:41 2018 +0200 @@ -43,7 +43,7 @@ @return flag indicating Windows platform (boolean) """ - return sys.platform.startswith("win") + return sys.platform.startswith(("win", "cygwin")) def isMacPlatform(): @@ -64,6 +64,32 @@ return sys.platform.startswith("linux") +def desktopName(): + """ + Function to determine the name of the desktop environment used + (Linux only). + + @return name of the desktop environment + @rtype str + """ + if not isLinuxPlatform(): + return "" + + currDesktop = os.environ.get("XDG_CURRENT_DESKTOP", "") + if currDesktop: + return currDesktop + + currDesktop = os.environ.get("XDG_SESSION_DESKTOP", "") + if currDesktop: + return currDesktop + + currDesktop = os.environ.get("GDMSESSION", "") + if currDesktop: + return currDesktop + + return "" + + def checkBlacklistedVersions(): """ Module functions to check for blacklisted versions of the prerequisites. @@ -138,11 +164,15 @@ if configDir is not None and os.path.exists(configDir): hp = configDir else: + cdn = ".eric6" if isWindowsPlatform(): - cdn = "_eric6" - else: - cdn = ".eric6" - + # migrate the old config directory (< v18.06) + cdnOld = "_eric6" + hpOld = os.path.join(os.path.expanduser("~"), cdnOld) + if os.path.exists(hpOld): + hpNew = os.path.join(os.path.expanduser("~"), cdn) + os.rename(hpOld, hpNew) + hp = os.path.join(os.path.expanduser("~"), cdn) if not os.path.exists(hp): os.mkdir(hp)
--- a/Helpviewer/HelpWindow.py Tue May 01 12:04:30 2018 +0200 +++ b/Helpviewer/HelpWindow.py Sat Jun 02 12:44:41 2018 +0200 @@ -256,8 +256,11 @@ self.networkIcon = E5NetworkIcon(self) self.statusBar().addPermanentWidget(self.networkIcon) - QDesktopServices.setUrlHandler("http", self.__linkActivated) - QDesktopServices.setUrlHandler("https", self.__linkActivated) + if not self.fromEric and len(HelpWindow.helpwindows): + QDesktopServices.setUrlHandler( + "http", HelpWindow.helpwindows[0].urlHandler) + QDesktopServices.setUrlHandler( + "https", HelpWindow.helpwindows[0].urlHandler) # setup connections self.__activating = False @@ -2285,9 +2288,22 @@ Preferences.setGeometry("HelpViewerGeometry", QByteArray()) try: - if self.fromEric or len(self.__class__.helpwindows) > 1: - del self.__class__.helpwindows[ - self.__class__.helpwindows.index(self)] + browserIndex = HelpWindow.helpwindows.index(self) + if not self.fromEric and len(HelpWindow.helpwindows): + if browserIndex == 0: + if len(HelpWindow.helpwindows) > 1: + # first window will be deleted + QDesktopServices.setUrlHandler( + "http", + HelpWindow.helpwindows[1].urlHandler) + QDesktopServices.setUrlHandler( + "https", + HelpWindow.helpwindows[1].urlHandler) + else: + QDesktopServices.unsetUrlHandler("http") + QDesktopServices.unsetUrlHandler("https") + if self.fromEric or len(HelpWindow.helpwindows) > 0: + del HelpWindow.helpwindows[browserIndex] except ValueError: pass @@ -2658,11 +2674,22 @@ QWebSettings.clearIconDatabase() @pyqtSlot(QUrl) + def urlHandler(self, url): + """ + Public slot used as desktop URL handler. + + @param url URL to be handled + @type QUrl + """ + self.__linkActivated(url) + + @pyqtSlot(QUrl) def __linkActivated(self, url): """ Private slot to handle the selection of a link in the TOC window. - @param url URL to be shown (QUrl) + @param url URL to be shown + @type QUrl """ if not self.__activating: self.__activating = True
--- a/Plugins/AboutPlugin/AboutDialog.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/AboutPlugin/AboutDialog.py Sat Jun 02 12:44:41 2018 +0200 @@ -9,7 +9,7 @@ from __future__ import unicode_literals -from PyQt5.QtCore import QCoreApplication +from PyQt5.QtCore import Qt, QCoreApplication from PyQt5.QtWidgets import QDialog from .Ui_AboutDialog import Ui_AboutDialog @@ -748,6 +748,7 @@ """ super(AboutDialog, self).__init__(parent) self.setupUi(self) + self.setWindowFlags(Qt.Window) self.ericLabel.setText(titleText) self.ericPixmap.setPixmap(
--- a/Plugins/PluginAbout.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/PluginAbout.py Sat Jun 02 12:44:41 2018 +0200 @@ -47,6 +47,8 @@ """ super(AboutPlugin, self).__init__(ui) self.__ui = ui + + self.__aboutDialog = None def activate(self): """ @@ -126,8 +128,9 @@ Private slot to handle the About dialog. """ from AboutPlugin.AboutDialog import AboutDialog - dlg = AboutDialog(self.__ui) - dlg.exec_() + if self.__aboutDialog is None: + self.__aboutDialog = AboutDialog(self.__ui) + self.__aboutDialog.show() def __aboutQt(self): """
--- a/Plugins/UiExtensionPlugins/PipInterface/Pip.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/UiExtensionPlugins/PipInterface/Pip.py Sat Jun 02 12:44:41 2018 +0200 @@ -30,6 +30,8 @@ import Globals +# TODO: 1) change all uses of pip to python3 -m pip +# TODO: 2) support --user for install, install --upgrade and list class Pip(QObject): """ Class implementing the pip GUI logic. @@ -141,6 +143,21 @@ self.installPackagesAct.triggered.connect(self.__installPackages) self.actions.append(self.installPackagesAct) + self.installLocalPackageAct = E5Action( + self.tr('Install Local Package'), + self.tr('Install Local Package'), + 0, 0, + self, 'pip_install_local_package') + self.installLocalPackageAct.setStatusTip(self.tr( + 'Install a package from local storage')) + self.installLocalPackageAct.setWhatsThis(self.tr( + """<b>Install Local Package</b>""" + """<p>This installs a package available on local storage.</p>""" + )) + self.installLocalPackageAct.triggered.connect( + self.__installLocalPackage) + self.actions.append(self.installLocalPackageAct) + self.installRequirementsAct = E5Action( self.tr('Install Requirements'), self.tr('Install Requirements'), @@ -355,6 +372,7 @@ menu.addSeparator() menu.addAction(self.installPipAct) menu.addAction(self.installPackagesAct) + menu.addAction(self.installLocalPackageAct) menu.addAction(self.installRequirementsAct) menu.addSeparator() menu.addAction(self.upgradePipAct) @@ -860,6 +878,7 @@ return abort + # TODO: add parameter userSite=False; arg: --user def upgradePackages(self, packages, cmd=""): """ Public method to upgrade the given list of packages. @@ -898,6 +917,7 @@ if packages: self.upgradePackages(packages, cmd=command) + # TODO: add parameter userSite=False; arg: --user def installPackages(self, packages, cmd=""): """ Public method to install the given list of packages. @@ -931,13 +951,23 @@ if packages: self.installPackages(packages, cmd=command) + def __installLocalPackage(self): + """ + Private slot to install a package available on local storage. + """ + from .PipFileSelectionDialog import PipFileSelectionDialog + dlg = PipFileSelectionDialog(self.__plugin, "package") + if dlg.exec_() == QDialog.Accepted: + command, package = dlg.getData() + if package and os.path.exists(package): + self.installPackages([package], cmd=command) + def __installRequirements(self): """ Private slot to install packages as given in a requirements file. """ - from .PipRequirementsSelectionDialog import \ - PipRequirementsSelectionDialog - dlg = PipRequirementsSelectionDialog(self.__plugin) + from .PipFileSelectionDialog import PipFileSelectionDialog + dlg = PipFileSelectionDialog(self.__plugin, "requirements") if dlg.exec_() == QDialog.Accepted: command, requirements = dlg.getData() if requirements and os.path.exists(requirements): @@ -1001,9 +1031,8 @@ """ Private slot to uninstall packages as given in a requirements file. """ - from .PipRequirementsSelectionDialog import \ - PipRequirementsSelectionDialog - dlg = PipRequirementsSelectionDialog(self.__plugin) + from .PipFileSelectionDialog import PipFileSelectionDialog + dlg = PipFileSelectionDialog(self.__plugin, "requirements") if dlg.exec_() == QDialog.Accepted: command, requirements = dlg.getData() if requirements and os.path.exists(requirements):
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/UiExtensionPlugins/PipInterface/PipFileSelectionDialog.py Sat Jun 02 12:44:41 2018 +0200 @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> +# + + +""" +Module implementing a dialog to enter a file to be processed. +""" + +from __future__ import unicode_literals + +import os + +from PyQt5.QtCore import pyqtSlot +from PyQt5.QtWidgets import QDialog, QDialogButtonBox + +from E5Gui.E5PathPicker import E5PathPickerModes + +from .Ui_PipFileSelectionDialog import Ui_PipFileSelectionDialog + +import Utilities + + +# TODO: add checkbox to select an installation into 'user site' +class PipFileSelectionDialog(QDialog, Ui_PipFileSelectionDialog): + """ + Class implementing a dialog to enter a file to be processed. + """ + def __init__(self, plugin, mode, parent=None): + """ + Constructor + + @param plugin reference to the plugin object + @type PipInterfacePlugin + @param mode mode of the dialog + @type str + @param parent reference to the parent widget + @type QWidget + """ + super(PipFileSelectionDialog, self).__init__(parent) + self.setupUi(self) + + if mode == "requirements": + self.fileLabel.setText(self.tr("Enter requirements file:")) + self.filePicker.setMode(E5PathPickerModes.OpenFileMode) + self.filePicker.setToolTip(self.tr( + "Press to select the requirements file through a file" + " selection dialog.")) + self.filePicker.setFilters( + self.tr("Text Files (*.txt);;All Files (*)")) + elif mode == "package": + self.fileLabel.setText(self.tr("Enter package file:")) + self.filePicker.setMode(E5PathPickerModes.OpenFileMode) + self.filePicker.setToolTip(self.tr( + "Press to select the package file through a file" + " selection dialog.")) + self.filePicker.setFilters( + self.tr("Python Wheel (*.whl);;" + "Archive Files (*.tar.gz *.zip);;" + "All Files (*)")) + else: + self.fileLabel.setText(self.tr("Enter file name:")) + self.filePicker.setMode(E5PathPickerModes.OpenFileMode) + self.filePicker.setToolTip(self.tr( + "Press to select a file through a file selection dialog.")) + self.filePicker.setFilters(self.tr("All Files (*)")) + self.filePicker.setDefaultDirectory(os.path.expanduser("~")) + + self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False) + + self.__default = self.tr("<Default>") + pipExecutables = sorted(plugin.getPreferences("PipExecutables")) + self.pipComboBox.addItem(self.__default) + self.pipComboBox.addItems(pipExecutables) + + msh = self.minimumSizeHint() + self.resize(max(self.width(), msh.width()), msh.height()) + + @pyqtSlot(str) + def on_filePicker_textChanged(self, txt): + """ + Private slot to handle entering the name of a file. + + @param txt name of the file + @type str + """ + self.buttonBox.button(QDialogButtonBox.Ok).setEnabled( + bool(txt) and + os.path.exists(Utilities.toNativeSeparators(txt)) + ) + + def getData(self): + """ + Public method to get the entered data. + + @return tuple with the pip command and the name of the + selected file + @rtype tuple of (str, str) + """ + command = self.pipComboBox.currentText() + if command == self.__default: + command = "" + + return command, self.filePicker.text()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/UiExtensionPlugins/PipInterface/PipFileSelectionDialog.ui Sat Jun 02 12:44:41 2018 +0200 @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>PipFileSelectionDialog</class> + <widget class="QDialog" name="PipFileSelectionDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>600</width> + <height>121</height> + </rect> + </property> + <property name="windowTitle"> + <string>Select File</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 pip executable to be used:</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="pipComboBox"> + <property name="toolTip"> + <string>Select the pip command to use</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="fileLabel"> + <property name="text"> + <string>Enter file name:</string> + </property> + </widget> + </item> + <item> + <widget class="E5PathPicker" name="filePicker" native="true"> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + </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> + <customwidgets> + <customwidget> + <class>E5PathPicker</class> + <extends>QWidget</extends> + <header>E5Gui/E5PathPicker.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>PipFileSelectionDialog</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>PipFileSelectionDialog</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/Plugins/UiExtensionPlugins/PipInterface/PipListDialog.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/UiExtensionPlugins/PipInterface/PipListDialog.py Sat Jun 02 12:44:41 2018 +0200 @@ -26,6 +26,7 @@ import Preferences +# TODO: add support for --user (User Site only) class PipListDialog(QDialog, Ui_PipListDialog): """ Class implementing a dialog to list installed packages. @@ -454,6 +455,7 @@ """ self.on_packageList_itemSelectionChanged() + # TODO: add support for --user def __upgradePackages(self): """ Private slot to upgrade the selected packages. @@ -468,6 +470,7 @@ else: self.__executeUpgradePackages(packages) + # TODO: add support for --user def __upgradeAllPackages(self): """ Private slot to upgrade all listed packages. @@ -483,6 +486,7 @@ else: self.__executeUpgradePackages(packages) + # TODO: add support for --user def __upgradePip(self): """ Private slot to upgrade pip itself. @@ -494,7 +498,8 @@ res = self.__pip.upgradePip(pip=pip) if res: self.__refresh() - + + # TODO: add support for --user def __executeUpgradePackages(self, packages): """ Private method to execute the pip upgrade command.
--- a/Plugins/UiExtensionPlugins/PipInterface/PipPackageDetailsDialog.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/UiExtensionPlugins/PipInterface/PipPackageDetailsDialog.py Sat Jun 02 12:44:41 2018 +0200 @@ -34,6 +34,7 @@ """ super(PipPackageDetailsDialog, self).__init__(parent) self.setupUi(self) + self.setWindowFlags(Qt.Window) self.__locale = QLocale() self.__packageTypeMap = {
--- a/Plugins/UiExtensionPlugins/PipInterface/PipPackagesInputDialog.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/UiExtensionPlugins/PipInterface/PipPackagesInputDialog.py Sat Jun 02 12:44:41 2018 +0200 @@ -15,6 +15,7 @@ from .Ui_PipPackagesInputDialog import Ui_PipPackagesInputDialog +# TODO: add checkbox to select an installation into 'user site' class PipPackagesInputDialog(QDialog, Ui_PipPackagesInputDialog): """ Class implementing a dialog to enter package specifications.
--- a/Plugins/UiExtensionPlugins/PipInterface/PipRequirementsSelectionDialog.py Tue May 01 12:04:30 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> -# - - -""" -Module implementing a dialog to enter a requirements file. -""" - -from __future__ import unicode_literals - -import os - -from PyQt5.QtCore import pyqtSlot -from PyQt5.QtWidgets import QDialog, QDialogButtonBox - -from E5Gui import E5FileDialog - -from .Ui_PipRequirementsSelectionDialog import \ - Ui_PipRequirementsSelectionDialog - -import Utilities -import UI.PixmapCache - - -class PipRequirementsSelectionDialog(QDialog, - Ui_PipRequirementsSelectionDialog): - """ - Class implementing a dialog to enter a requirements file. - """ - def __init__(self, plugin, parent=None): - """ - Constructor - - @param plugin reference to the plugin object (ToolPipPlugin) - @param parent reference to the parent widget (QWidget) - """ - super(PipRequirementsSelectionDialog, self).__init__(parent) - self.setupUi(self) - - self.fileButton.setIcon(UI.PixmapCache.getIcon("open.png")) - - self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False) - - self.__default = self.tr("<Default>") - pipExecutables = sorted(plugin.getPreferences("PipExecutables")) - self.pipComboBox.addItem(self.__default) - self.pipComboBox.addItems(pipExecutables) - - msh = self.minimumSizeHint() - self.resize(max(self.width(), msh.width()), msh.height()) - - @pyqtSlot() - def on_fileButton_clicked(self): - """ - Private slot to enter the requirements file via a file selection - dialog. - """ - fileName = E5FileDialog.getOpenFileName( - self, - self.tr("Select the requirements file"), - self.requirementsEdit.text() or os.path.expanduser("~"), - self.tr("Text Files (*.txt);;All Files (*)") - ) - if fileName: - self.requirementsEdit.setText( - Utilities.toNativeSeparators(fileName)) - - @pyqtSlot(str) - def on_requirementsEdit_textChanged(self, txt): - """ - Private slot handling entering the name of a requirements file. - - @param txt name of the requirements file (string) - """ - self.buttonBox.button(QDialogButtonBox.Ok).setEnabled( - bool(txt) and - os.path.exists(Utilities.toNativeSeparators(txt)) - ) - - def getData(self): - """ - Public method to get the entered data. - - @return tuple with the pip command (string) and the name of the - requirements file (string) - """ - command = self.pipComboBox.currentText() - if command == self.__default: - command = "" - - return command, self.requirementsEdit.text()
--- a/Plugins/UiExtensionPlugins/PipInterface/PipRequirementsSelectionDialog.ui Tue May 01 12:04:30 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>PipRequirementsSelectionDialog</class> - <widget class="QDialog" name="PipRequirementsSelectionDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>600</width> - <height>143</height> - </rect> - </property> - <property name="windowTitle"> - <string>Select Requirements</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 pip executable to be used:</string> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="pipComboBox"> - <property name="toolTip"> - <string>Select the pip command to use</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Enter requirements file:</string> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLineEdit" name="requirementsEdit"/> - </item> - <item> - <widget class="QToolButton" name="fileButton"> - <property name="toolTip"> - <string>Select the requirements file through a file selection dialog</string> - </property> - <property name="text"> - <string notr="true"/> - </property> - </widget> - </item> - </layout> - </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>PipRequirementsSelectionDialog</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>PipRequirementsSelectionDialog</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/Plugins/UiExtensionPlugins/PipInterface/PipSearchDialog.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/UiExtensionPlugins/PipInterface/PipSearchDialog.py Sat Jun 02 12:44:41 2018 +0200 @@ -26,6 +26,7 @@ from . import DefaultIndexUrlXml +# TODO: add support for --user; additional button class PipSearchDialog(QDialog, Ui_PipSearchDialog): """ Class implementing a dialog to search PyPI. @@ -79,6 +80,8 @@ self.__canceled = False self.__detailsData = {} self.__query = [] + + self.__packageDetailsDialog = None def closeEvent(self, e): """ @@ -87,6 +90,10 @@ @param e close event (QCloseEvent) """ QApplication.restoreOverrideCursor() + + if self.__packageDetailsDialog is not None: + self.__packageDetailsDialog.close() + e.accept() @pyqtSlot(str) @@ -314,6 +321,7 @@ return score + # TODO: add support for --user def __install(self): """ Private slot to install the selected packages. @@ -400,11 +408,17 @@ @param data result data (tuple) with downloads information in the first element """ + from .PipPackageDetailsDialog import PipPackageDetailsDialog + self.__finish() self.__showDetailsButton.setEnabled(True) - from .PipPackageDetailsDialog import PipPackageDetailsDialog - dlg = PipPackageDetailsDialog(self.__detailsData, data[0], self) - dlg.exec_() + + if self.__packageDetailsDialog is not None: + self.__packageDetailsDialog.close() + + self.__packageDetailsDialog = \ + PipPackageDetailsDialog(self.__detailsData, data[0], self) + self.__packageDetailsDialog.show() def __detailsError(self, errorCode, errorString): """
--- a/Plugins/VcsPlugins/vcsGit/GitRemoteRepositoriesDialog.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/VcsPlugins/vcsGit/GitRemoteRepositoriesDialog.py Sat Jun 02 12:44:41 2018 +0200 @@ -28,6 +28,7 @@ import Preferences +# TODO: add button to set user credentials (git remote set-url) class GitRemoteRepositoriesDialog(QWidget, Ui_GitRemoteRepositoriesDialog): """ Class implementing a dialog to show available remote repositories.
--- a/Plugins/VcsPlugins/vcsGit/git.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/VcsPlugins/vcsGit/git.py Sat Jun 02 12:44:41 2018 +0200 @@ -1357,13 +1357,7 @@ status = False ignorePatterns = [ ".eric6project/", - "_eric6project/", - ".eric5project/", - "_eric5project/", - ".eric4project/", - "_eric4project/", ".ropeproject/", - "_ropeproject/", ".directory/", "*.pyc", "*.pyo",
--- a/Plugins/VcsPlugins/vcsMercurial/hg.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/hg.py Sat Jun 02 12:44:41 2018 +0200 @@ -2447,13 +2447,7 @@ status = False ignorePatterns = [ "glob:.eric6project", - "glob:_eric6project", - "glob:.eric5project", - "glob:_eric5project", - "glob:.eric4project", - "glob:_eric4project", "glob:.ropeproject", - "glob:_ropeproject", "glob:.directory", "glob:**.pyc", "glob:**.pyo",
--- a/Plugins/VcsPlugins/vcsPySvn/Config.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/VcsPlugins/vcsPySvn/Config.py Sat Jun 02 12:44:41 2018 +0200 @@ -119,8 +119,7 @@ "global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc", " *.pyo .*.rej *.rej .*~ *~ #*# .#* .*.swp .DS_Store", " *.orig *.bak cur tmp __pycache__ .directory", - " .ropeproject .eric4project .eric5project .eric6project", - " _ropeproject _eric4project _eric5project _eric6project", + " .ropeproject .eric6project", "### Set log-encoding to the default encoding for log messages", "# log-encoding = latin1", "### Set use-commit-times to make checkout/update/switch/revert", @@ -182,11 +181,5 @@ "__pycache__", ".directory", ".ropeproject", - ".eric4project", - ".eric5project", ".eric6project", - "_ropeproject", - "_eric4project", - "_eric5project", - "_eric6project", ]
--- a/Plugins/VcsPlugins/vcsSubversion/Config.py Tue May 01 12:04:30 2018 +0200 +++ b/Plugins/VcsPlugins/vcsSubversion/Config.py Sat Jun 02 12:44:41 2018 +0200 @@ -119,8 +119,7 @@ "global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc", " *.pyo .*.rej *.rej .*~ *~ #*# .#* .*.swp .DS_Store", " *.orig *.bak cur tmp __pycache__ .directory", - " .ropeproject .eric4project .eric5project .eric6project", - " _ropeproject _eric4project _eric5project _eric5project", + " .ropeproject .eric6project", "### Set log-encoding to the default encoding for log messages", "# log-encoding = latin1", "### Set use-commit-times to make checkout/update/switch/revert", @@ -182,11 +181,5 @@ "__pycache__", ".directory", ".ropeproject", - ".eric4project", - ".eric5project", ".eric6project", - "_ropeproject", - "_eric4project", - "_eric5project", - "_eric6project", ]
--- a/Preferences/ConfigurationPages/EditorAutocompletionPage.py Tue May 01 12:04:30 2018 +0200 +++ b/Preferences/ConfigurationPages/EditorAutocompletionPage.py Sat Jun 02 12:44:41 2018 +0200 @@ -49,6 +49,10 @@ Preferences.getEditor("AutoCompletionCacheTime")) self.acWatchdogDoubleSpinBox.setValue( Preferences.getEditor("AutoCompletionWatchdogTime") / 1000.0) + self.acLinesSlider.setValue( + Preferences.getEditor("AutoCompletionMaxLines")) + self.acCharSlider.setValue( + Preferences.getEditor("AutoCompletionMaxChars")) def save(self): """ @@ -85,6 +89,12 @@ Preferences.setEditor( "AutoCompletionWatchdogTime", self.acWatchdogDoubleSpinBox.value() * 1000) + Preferences.setEditor( + "AutoCompletionMaxLines", + self.acLinesSlider.value()) + Preferences.setEditor( + "AutoCompletionMaxChars", + self.acCharSlider.value()) def create(dlg):
--- a/Preferences/ConfigurationPages/EditorAutocompletionPage.ui Tue May 01 12:04:30 2018 +0200 +++ b/Preferences/ConfigurationPages/EditorAutocompletionPage.ui Sat Jun 02 12:44:41 2018 +0200 @@ -36,36 +36,149 @@ <property name="title"> <string>General</string> </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0" colspan="2"> - <widget class="QCheckBox" name="acCaseSensitivityCheckBox"> - <property name="toolTip"> - <string>Select this to have case sensitive auto-completion lists</string> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <property name="spacing"> + <number>0</number> + </property> + <property name="margin"> + <number>0</number> + </property> + <item> + <layout class="QGridLayout" name="gridLayout_2"> + <property name="verticalSpacing"> + <number>9</number> + </property> + <property name="margin"> + <number>9</number> </property> - <property name="text"> - <string>Case sensitive</string> - </property> - </widget> + <item row="0" column="1"> + <widget class="QCheckBox" name="acReplaceWordCheckBox"> + <property name="toolTip"> + <string>Select this, if the word to the right should be replaced by the selected entry</string> + </property> + <property name="text"> + <string>Replace word</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QCheckBox" name="acCaseSensitivityCheckBox"> + <property name="toolTip"> + <string>Select this to have case sensitive auto-completion lists</string> + </property> + <property name="text"> + <string>Case sensitive</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QCheckBox" name="acReversedCheckBox"> + <property name="toolTip"> + <string>Select to show completions of type 'public' first</string> + </property> + <property name="text"> + <string>Show 'public' completions first</string> + </property> + </widget> + </item> + </layout> </item> - <item row="0" column="2" colspan="2"> - <widget class="QCheckBox" name="acReplaceWordCheckBox"> - <property name="toolTip"> - <string>Select this, if the word to the right should be replaced by the selected entry</string> + <item> + <layout class="QGridLayout" name="gridLayout_3"> + <property name="margin"> + <number>9</number> </property> - <property name="text"> - <string>Replace word</string> + <property name="spacing"> + <number>9</number> </property> - </widget> - </item> - <item row="1" column="0" colspan="2"> - <widget class="QCheckBox" name="acReversedCheckBox"> - <property name="toolTip"> - <string>Select to show completions of type 'public' first</string> - </property> - <property name="text"> - <string>Show 'public' completions first</string> - </property> - </widget> + <item row="1" column="0"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>Maximum visible characters:</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label_5"> + <property name="text"> + <string>Maximum visible lines: </string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSlider" name="acLinesSlider"> + <property name="toolTip"> + <string>Move to set the maximum number of lines shown in a autocomplete list.</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>20</number> + </property> + <property name="pageStep"> + <number>2</number> + </property> + <property name="value"> + <number>6</number> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="0" column="2"> + <widget class="QLCDNumber" name="lcdNumber"> + <property name="toolTip"> + <string>Displays the maximum number of lines.</string> + </property> + <property name="digitCount"> + <number>3</number> + </property> + <property name="segmentStyle"> + <enum>QLCDNumber::Flat</enum> + </property> + <property name="intValue" stdset="0"> + <number>6</number> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QSlider" name="acCharSlider"> + <property name="toolTip"> + <string>Move to set the maximum number of characters visible in one line.</string> + </property> + <property name="minimum"> + <number>10</number> + </property> + <property name="maximum"> + <number>100</number> + </property> + <property name="value"> + <number>40</number> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="1" column="2"> + <widget class="QLCDNumber" name="lcdNumber_2"> + <property name="toolTip"> + <string>Displays the approximate number of characters per line.</string> + </property> + <property name="digitCount"> + <number>3</number> + </property> + <property name="segmentStyle"> + <enum>QLCDNumber::Flat</enum> + </property> + <property name="intValue" stdset="0"> + <number>40</number> + </property> + </widget> + </item> + </layout> </item> </layout> </widget> @@ -126,7 +239,7 @@ <string>Displays the selected autocompletion threshold</string> </property> <property name="digitCount"> - <number>2</number> + <number>3</number> </property> <property name="segmentStyle"> <enum>QLCDNumber::Flat</enum> @@ -378,6 +491,8 @@ <tabstop>acCaseSensitivityCheckBox</tabstop> <tabstop>acReplaceWordCheckBox</tabstop> <tabstop>acReversedCheckBox</tabstop> + <tabstop>acLinesSlider</tabstop> + <tabstop>acCharSlider</tabstop> <tabstop>acEnabledGroupBox</tabstop> <tabstop>acThresholdSlider</tabstop> <tabstop>acTimeoutSpinBox</tabstop> @@ -396,11 +511,11 @@ <hints> <hint type="sourcelabel"> <x>442</x> - <y>161</y> + <y>221</y> </hint> <hint type="destinationlabel"> <x>485</x> - <y>162</y> + <y>222</y> </hint> </hints> </connection> @@ -411,12 +526,44 @@ <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>30</x> - <y>237</y> + <x>49</x> + <y>305</y> </hint> <hint type="destinationlabel"> - <x>155</x> - <y>259</y> + <x>202</x> + <y>332</y> + </hint> + </hints> + </connection> + <connection> + <sender>acLinesSlider</sender> + <signal>valueChanged(int)</signal> + <receiver>lcdNumber</receiver> + <slot>display(int)</slot> + <hints> + <hint type="sourcelabel"> + <x>224</x> + <y>125</y> + </hint> + <hint type="destinationlabel"> + <x>473</x> + <y>127</y> + </hint> + </hints> + </connection> + <connection> + <sender>acCharSlider</sender> + <signal>valueChanged(int)</signal> + <receiver>lcdNumber_2</receiver> + <slot>display(int)</slot> + <hints> + <hint type="sourcelabel"> + <x>255</x> + <y>155</y> + </hint> + <hint type="destinationlabel"> + <x>468</x> + <y>154</y> </hint> </hints> </connection>
--- a/Preferences/ConfigurationPages/EditorStylesPage.py Tue May 01 12:04:30 2018 +0200 +++ b/Preferences/ConfigurationPages/EditorStylesPage.py Sat Jun 02 12:44:41 2018 +0200 @@ -93,8 +93,6 @@ Preferences.getEditor("LinenoMargin")) self.foldingCheckBox.setChecked( Preferences.getEditor("FoldingMargin")) - self.unifiedMarginsCheckBox.setChecked( - Preferences.getEditor("UnifiedMargins")) self.caretlineVisibleCheckBox.setChecked( Preferences.getEditor("CaretLineVisible")) @@ -224,6 +222,8 @@ self.changeMarkerSavedColorButton, Preferences.getEditorColour) + self.markerMapRightCheckBox.setChecked( + Preferences.getEditor("ShowMarkerMapOnRight")) self.initColour("BookmarksMap", self.bookmarksMapButton, Preferences.getEditorColour) @@ -287,8 +287,6 @@ "LinenoMargin", self.linenoCheckBox.isChecked()) Preferences.setEditor( "FoldingMargin", self.foldingCheckBox.isChecked()) - Preferences.setEditor( - "UnifiedMargins", self.unifiedMarginsCheckBox.isChecked()) Preferences.setEditor( "CaretLineVisible", self.caretlineVisibleCheckBox.isChecked()) @@ -354,6 +352,10 @@ "IndentationGuides", self.indentguidesCheckBox.isChecked()) + Preferences.setEditor( + "ShowMarkerMapOnRight", + self.markerMapRightCheckBox.isChecked()) + self.saveColours(Preferences.setEditorColour) for key in list(self.editorColours.keys()): Preferences.setEditorColour(key, self.editorColours[key])
--- a/Preferences/ConfigurationPages/EditorStylesPage.ui Tue May 01 12:04:30 2018 +0200 +++ b/Preferences/ConfigurationPages/EditorStylesPage.ui Sat Jun 02 12:44:41 2018 +0200 @@ -7,10 +7,10 @@ <x>0</x> <y>0</y> <width>655</width> - <height>2530</height> + <height>2650</height> </rect> </property> - <layout class="QVBoxLayout" name="verticalLayout_8"> + <layout class="QVBoxLayout" name="verticalLayout_9"> <item> <widget class="QLabel" name="headerLabel"> <property name="text"> @@ -217,16 +217,6 @@ </property> </widget> </item> - <item row="1" column="0"> - <widget class="QCheckBox" name="unifiedMarginsCheckBox"> - <property name="toolTip"> - <string>Select to show unified margins (like eric4 < 4.3.0)</string> - </property> - <property name="text"> - <string>Show unified margins</string> - </property> - </widget> - </item> </layout> </item> <item> @@ -1620,258 +1610,281 @@ <property name="title"> <string>Marker Map</string> </property> - <layout class="QGridLayout" name="gridLayout_9"> - <item row="0" column="0"> - <widget class="QLabel" name="label_6"> - <property name="text"> - <string>Errors:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QPushButton" name="errorsMapButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> + <layout class="QVBoxLayout" name="verticalLayout_8"> + <item> + <widget class="QCheckBox" name="markerMapRightCheckBox"> <property name="toolTip"> - <string>Select the colour for error markers</string> + <string>Select to show the marker map right of the editor</string> </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QLabel" name="label_7"> - <property name="text"> - <string>Warnings:</string> - </property> - </widget> - </item> - <item row="0" column="3"> - <widget class="QPushButton" name="warningsMapButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the colour for warning markers</string> + <property name="whatsThis"> + <string><b>Show Marker Map Right of the Editor</b> +<p>If this entry is selected (default), the marker map is show on the right side of the editor. If it is unselected, it is shown on the left side right before the margins.</p></string> </property> <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_8"> - <property name="text"> - <string>Bookmarks:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QPushButton" name="bookmarksMapButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the colour for bookmark markers</string> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QLabel" name="label_9"> - <property name="text"> - <string>Breakpoints:</string> - </property> - </widget> - </item> - <item row="1" column="3"> - <widget class="QPushButton" name="breakpointsMapButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the colour for breakpoint markers</string> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_10"> - <property name="text"> - <string>Tasks:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QPushButton" name="tasksMapButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the colour for task markers</string> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="2" column="2"> - <widget class="QLabel" name="label_11"> - <property name="text"> - <string>Changes:</string> + <string>Show Marker Map Right of the Editor</string> </property> </widget> </item> - <item row="2" column="3"> - <widget class="QPushButton" name="changesMapButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the colour for change markers</string> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_12"> - <property name="text"> - <string>Coverage:</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QPushButton" name="coverageMapButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the colour for coverage markers</string> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="3" column="2"> - <widget class="QLabel" name="label_13"> - <property name="text"> - <string>Current Line:</string> - </property> - </widget> - </item> - <item row="3" column="3"> - <widget class="QPushButton" name="currentMapButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the colour for the current line marker</string> - </property> - <property name="text"> - <string/> + <item> + <widget class="QGroupBox" name="groupBox_16"> + <property name="title"> + <string>Colours</string> </property> - </widget> - </item> - <item row="4" column="0"> - <widget class="QLabel" name="label_15"> - <property name="text"> - <string>Search Markers:</string> - </property> - </widget> - </item> - <item row="4" column="1"> - <widget class="QPushButton" name="searchMarkerMapButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the colour for the search marker</string> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="4" column="2"> - <widget class="QLabel" name="label_16"> - <property name="text"> - <string>Conflict Marker Line:</string> - </property> - </widget> - </item> - <item row="4" column="3"> - <widget class="QPushButton" name="conflictMarkerMapButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the colour for the conflict marker line marker</string> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="5" column="0"> - <widget class="QLabel" name="label_14"> - <property name="text"> - <string>Background:</string> - </property> - </widget> - </item> - <item row="5" column="1"> - <widget class="QPushButton" name="markerMapBackgroundButton"> - <property name="minimumSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Select the background colour for the marker map</string> - </property> - <property name="text"> - <string/> - </property> + <layout class="QGridLayout" name="gridLayout_9"> + <item row="0" column="0"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>Errors:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QPushButton" name="errorsMapButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the colour for error markers</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="0" column="2"> + <widget class="QLabel" name="label_7"> + <property name="text"> + <string>Warnings:</string> + </property> + </widget> + </item> + <item row="0" column="3"> + <widget class="QPushButton" name="warningsMapButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the colour for warning markers</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_8"> + <property name="text"> + <string>Bookmarks:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QPushButton" name="bookmarksMapButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the colour for bookmark markers</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="1" column="2"> + <widget class="QLabel" name="label_9"> + <property name="text"> + <string>Breakpoints:</string> + </property> + </widget> + </item> + <item row="1" column="3"> + <widget class="QPushButton" name="breakpointsMapButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the colour for breakpoint markers</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_10"> + <property name="text"> + <string>Tasks:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QPushButton" name="tasksMapButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the colour for task markers</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="2" column="2"> + <widget class="QLabel" name="label_11"> + <property name="text"> + <string>Changes:</string> + </property> + </widget> + </item> + <item row="2" column="3"> + <widget class="QPushButton" name="changesMapButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the colour for change markers</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_12"> + <property name="text"> + <string>Coverage:</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QPushButton" name="coverageMapButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the colour for coverage markers</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="3" column="2"> + <widget class="QLabel" name="label_13"> + <property name="text"> + <string>Current Line:</string> + </property> + </widget> + </item> + <item row="3" column="3"> + <widget class="QPushButton" name="currentMapButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the colour for the current line marker</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="label_15"> + <property name="text"> + <string>Search Markers:</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QPushButton" name="searchMarkerMapButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the colour for the search marker</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="4" column="2"> + <widget class="QLabel" name="label_16"> + <property name="text"> + <string>Conflict Marker Line:</string> + </property> + </widget> + </item> + <item row="4" column="3"> + <widget class="QPushButton" name="conflictMarkerMapButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the colour for the conflict marker line marker</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="label_14"> + <property name="text"> + <string>Background:</string> + </property> + </widget> + </item> + <item row="5" column="1"> + <widget class="QPushButton" name="markerMapBackgroundButton"> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Select the background colour for the marker map</string> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + </layout> </widget> </item> </layout> @@ -1930,7 +1943,6 @@ <tabstop>monospacedCheckBox</tabstop> <tabstop>linenoCheckBox</tabstop> <tabstop>foldingCheckBox</tabstop> - <tabstop>unifiedMarginsCheckBox</tabstop> <tabstop>foldingStyleComboBox</tabstop> <tabstop>marginsForegroundButton</tabstop> <tabstop>marginsBackgroundButton</tabstop> @@ -1981,6 +1993,7 @@ <tabstop>indentguidesCheckBox</tabstop> <tabstop>indentationGuidesForegroundButton</tabstop> <tabstop>indentationGuidesBackgroundButton</tabstop> + <tabstop>markerMapRightCheckBox</tabstop> <tabstop>errorsMapButton</tabstop> <tabstop>warningsMapButton</tabstop> <tabstop>bookmarksMapButton</tabstop>
--- a/Preferences/ConfigurationPages/HelpDocumentationPage.py Tue May 01 12:04:30 2018 +0200 +++ b/Preferences/ConfigurationPages/HelpDocumentationPage.py Sat Jun 02 12:44:41 2018 +0200 @@ -58,18 +58,27 @@ self.pysideDocDirPicker.setMode(E5PathPickerModes.OpenFileMode) self.pysideDocDirPicker.setFilters(self.tr( "HTML Files (*.html *.htm);;All Files (*)")) + self.pyside2DocDirPicker.setMode(E5PathPickerModes.OpenFileMode) + self.pyside2DocDirPicker.setFilters(self.tr( + "HTML Files (*.html *.htm);;All Files (*)")) try: import PyQt5 # __IGNORE_WARNING__ except ImportError: self.pyqt5Group.setEnabled(False) - pyside2, pyside3 = Utilities.checkPyside() - if pyside2 or pyside3: + pyside_py2, pyside_py3 = Utilities.checkPyside("1") + if pyside_py2 or pyside_py3: self.pysideGroup.setEnabled(True) else: self.pysideGroup.setEnabled(False) + pyside2_py2, pyside2_py3 = Utilities.checkPyside("2") + if pyside2_py2 or pyside2_py3: + self.pyside2Group.setEnabled(True) + else: + self.pyside2Group.setEnabled(False) + # set initial values self.ericDocDirPicker.setText( Preferences.getHelp("EricDocDir"), toNative=False) @@ -87,6 +96,8 @@ Preferences.getHelp("PyQt5DocDir"), toNative=False) self.pysideDocDirPicker.setText( Preferences.getHelp("PySideDocDir"), toNative=False) + self.pysideDocDirPicker.setText( + Preferences.getHelp("PySide2DocDir"), toNative=False) def save(self): """ @@ -116,6 +127,9 @@ Preferences.setHelp( "PySideDocDir", self.pysideDocDirPicker.text(toNative=False)) + Preferences.setHelp( + "PySide2DocDir", + self.pyside2DocDirPicker.text(toNative=False)) def create(dlg):
--- a/Preferences/ConfigurationPages/HelpDocumentationPage.ui Tue May 01 12:04:30 2018 +0200 +++ b/Preferences/ConfigurationPages/HelpDocumentationPage.ui Sat Jun 02 12:44:41 2018 +0200 @@ -312,6 +312,41 @@ </widget> </item> <item> + <widget class="QGroupBox" name="pyside2Group"> + <property name="title"> + <string>PySide2 Documentation</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_10"> + <item> + <widget class="E5PathPicker" name="pyside2DocDirPicker" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + <property name="toolTip"> + <string>Enter the PySide2 documentation directory</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="textLabel1_8_2_3"> + <property name="text"> + <string><b>Note</b>: Leave empty to use the PYSIDE2DOCDIR environment variable, if set.</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum>
--- a/Preferences/ConfigurationPages/HelpFlashCookieManagerPage.ui Tue May 01 12:04:30 2018 +0200 +++ b/Preferences/ConfigurationPages/HelpFlashCookieManagerPage.ui Sat Jun 02 12:44:41 2018 +0200 @@ -164,9 +164,6 @@ <property name="wordWrap"> <bool>true</bool> </property> - <property name="openExternalLinks"> - <bool>true</bool> - </property> </widget> </item> <item>
--- a/Preferences/ConfigurationPages/WebBrowserPage.py Tue May 01 12:04:30 2018 +0200 +++ b/Preferences/ConfigurationPages/WebBrowserPage.py Sat Jun 02 12:44:41 2018 +0200 @@ -91,8 +91,12 @@ Preferences.getWebBrowser("PluginsEnabled")) self.doNotTrackCheckBox.setChecked( Preferences.getWebBrowser("DoNotTrack")) - self.sendRefererCheckBox.setChecked( - Preferences.getWebBrowser("SendReferer")) + self.refererSendComboBox.setCurrentIndex( + Preferences.getWebBrowser("RefererSendReferer")) + self.refererDefaultPolicyCcomboBox.setCurrentIndex( + Preferences.getWebBrowser("RefererDefaultPolicy")) + self.refererTrimmingPolicyComboBox.setCurrentIndex( + Preferences.getWebBrowser("RefererTrimmingPolicy")) self.diskCacheCheckBox.setChecked( Preferences.getWebBrowser("DiskCacheEnabled")) @@ -260,8 +264,14 @@ "DoNotTrack", self.doNotTrackCheckBox.isChecked()) Preferences.setWebBrowser( - "SendReferer", - self.sendRefererCheckBox.isChecked()) + "RefererSendReferer", + self.refererSendComboBox.currentIndex()) + Preferences.setWebBrowser( + "RefererDefaultPolicy", + self.refererDefaultPolicyCcomboBox.currentIndex()) + Preferences.setWebBrowser( + "RefererTrimmingPolicy", + self.refererTrimmingPolicyComboBox.currentIndex()) Preferences.setWebBrowser( "DiskCacheEnabled",
--- a/Preferences/ConfigurationPages/WebBrowserPage.ui Tue May 01 12:04:30 2018 +0200 +++ b/Preferences/ConfigurationPages/WebBrowserPage.ui Sat Jun 02 12:44:41 2018 +0200 @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>616</width> + <width>650</width> <height>2000</height> </rect> </property> @@ -448,41 +448,173 @@ </widget> </item> <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <widget class="QCheckBox" name="sendRefererCheckBox"> - <property name="toolTip"> - <string>Select to send referer headers to the server</string> - </property> - <property name="text"> - <string>Send Referer header to servers</string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_6"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="refererWhitelistButton"> - <property name="toolTip"> - <string>Press to edit the list of whitelisted hosts</string> - </property> - <property name="text"> - <string>Edit Referer Whitelist ...</string> - </property> - </widget> - </item> - </layout> + <widget class="QGroupBox" name="groupBox_9"> + <property name="title"> + <string>Referer Headers</string> + </property> + <layout class="QGridLayout" name="gridLayout_7"> + <item row="0" column="0"> + <widget class="QLabel" name="label_14"> + <property name="text"> + <string>Send Referer:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QComboBox" name="refererSendComboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip"> + <string>Select when to send a referer header (independent of origin)</string> + </property> + <property name="whatsThis"> + <string><b>Send Referer</b> +<p>Select, when to send a referer header. This is independent of the requested URL. If a referer header is to be sent, further rules will be applied.</p></string> + </property> + <item> + <property name="text"> + <string>never</string> + </property> + </item> + <item> + <property name="text"> + <string>on click only</string> + </property> + </item> + <item> + <property name="text"> + <string>always</string> + </property> + </item> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_16"> + <property name="text"> + <string>Default Policy:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QComboBox" name="refererDefaultPolicyCcomboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip"> + <string>Select when to send a referer header depending on origin</string> + </property> + <property name="whatsThis"> + <string><b>Default Policy</b> +<p>Select when to send a referer header depending on origin.</p> +<ul> +<li>no referer - don't send a referer header</li> +<li>only when same origin - don't send a referer header if the origin of the target is different</li> +<li>only origin when cross origin - send trimmed referer header only when same origin, the referer origin when the target is potentially trustworthy and no header otherwise</li> +<li>no referer when downgrading - don't send a referer header when the target is not potentially trustworthy</li> +</ul></string> + </property> + <item> + <property name="text"> + <string>no referer</string> + </property> + </item> + <item> + <property name="text"> + <string>only when same origin</string> + </property> + </item> + <item> + <property name="text"> + <string>only origin when cross origin</string> + </property> + </item> + <item> + <property name="text"> + <string>no referer when downgrading</string> + </property> + </item> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_15"> + <property name="text"> + <string>Trimming Policy:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QComboBox" name="refererTrimmingPolicyComboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip"> + <string>Select how the referer URL shall be trimmed</string> + </property> + <property name="whatsThis"> + <string><b>Trimming Policy</b> +<p>Select how the referer URL shall be trimmed. The selected rule is applied, when sending a complete referer URL.</p> +<ul> +<li>send full URL (no trimming) - this does not perform any trimming beyond removing the user information and any fragment</li> +<li>send the URL without its query string - this removes the user information and the query string</li> +<li>only send the origin - this shortens the referer URL to the origin, i.e. scheme, host and port only</li> +</ul></string> + </property> + <item> + <property name="text"> + <string>send full URL (no trimming)</string> + </property> + </item> + <item> + <property name="text"> + <string>send the URL without its query string</string> + </property> + </item> + <item> + <property name="text"> + <string>only send the origin</string> + </property> + </item> + </widget> + </item> + <item row="3" column="0" colspan="2"> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <spacer name="horizontalSpacer_6"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>268</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="refererWhitelistButton"> + <property name="toolTip"> + <string>Press to edit the list of whitelisted hosts</string> + </property> + <property name="text"> + <string>Edit Referer Whitelist ...</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> </item> </layout> </widget> @@ -969,7 +1101,9 @@ <tabstop>jsClipboardCheckBox</tabstop> <tabstop>pluginsCheckBox</tabstop> <tabstop>doNotTrackCheckBox</tabstop> - <tabstop>sendRefererCheckBox</tabstop> + <tabstop>refererSendComboBox</tabstop> + <tabstop>refererDefaultPolicyCcomboBox</tabstop> + <tabstop>refererTrimmingPolicyComboBox</tabstop> <tabstop>refererWhitelistButton</tabstop> <tabstop>xssAuditingCheckBox</tabstop> <tabstop>insecureContentsCheckBox</tabstop>
--- a/Preferences/ProgramsDialog.py Tue May 01 12:04:30 2018 +0200 +++ b/Preferences/ProgramsDialog.py Sat Jun 02 12:44:41 2018 +0200 @@ -169,21 +169,38 @@ Utilities.generatePyQtToolPath("pyrcc5"), '-version', '', -1, versionRe='Resource Compiler|pyrcc5') - # 3. do the PySide programs - # 3a. Translation Extractor PySide + # 3.1 do the PySide programs + # 3.1a. Translation Extractor PySide self.__createProgramEntry( self.tr("Translation Extractor (Python, PySide)"), - Utilities.generatePySideToolPath("pyside-lupdate"), + Utilities.generatePySideToolPath("pyside-lupdate", "1"), '-version', '', -1, versionRe='lupdate') - # 3b. Forms Compiler PySide + # 3.1b. Forms Compiler PySide self.__createProgramEntry( self.tr("Forms Compiler (Python, PySide)"), - Utilities.generatePySideToolPath("pyside-uic"), + Utilities.generatePySideToolPath("pyside-uic", "1"), '--version', 'PySide User', 5, versionCleanup=(0, -1)) - # 3.c Resource Compiler PySide + # 3.1c Resource Compiler PySide self.__createProgramEntry( self.tr("Resource Compiler (Python, PySide)"), - Utilities.generatePySideToolPath("pyside-rcc"), + Utilities.generatePySideToolPath("pyside-rcc", "1"), + '-version', 'Resource Compiler', -1) + + # 3.2 do the PySide2 programs + # 3.2a. Translation Extractor PySide2 + self.__createProgramEntry( + self.tr("Translation Extractor (Python, PySide2)"), + Utilities.generatePySideToolPath("pyside2-lupdate", "2"), + '-version', '', -1, versionRe='lupdate') + # 3.2b. Forms Compiler PySide2 + self.__createProgramEntry( + self.tr("Forms Compiler (Python, PySide2)"), + Utilities.generatePySideToolPath("pyside2-uic", "2"), + '--version', 'PySide2 User', -1, versionCleanup=(0, -1)) + # 3.2c Resource Compiler PySide2 + self.__createProgramEntry( + self.tr("Resource Compiler (Python, PySide2)"), + Utilities.generatePySideToolPath("pyside2-rcc", "2"), '-version', 'Resource Compiler', -1) # 4. do the Ruby programs @@ -349,7 +366,8 @@ Preferences.getSystem("IOEncoding"), 'replace') if exeModule and exeModule[0] == "-m" and \ - "ImportError:" in output: + ("ImportError:" in output or + "ModuleNotFoundError:" in output): version = self.tr("(module not found)") else: if versionRe is None:
--- a/Preferences/__init__.py Tue May 01 12:04:30 2018 +0200 +++ b/Preferences/__init__.py Sat Jun 02 12:44:41 2018 +0200 @@ -379,7 +379,6 @@ "TabWidth": 4, "IndentWidth": 4, "IndentationGuides": True, - "UnifiedMargins": False, "LinenoMargin": True, "FoldingMargin": True, "FoldingStyle": 1, @@ -431,6 +430,8 @@ "AutoCompletionCacheSize": 100, "AutoCompletionCacheTime": 300, # 5 minutes "AutoCompletionWatchdogTime": 3000, # ms + "AutoCompletionMaxLines": 6, + "AutoCompletionMaxChars": 40, "CallTipsEnabled": False, "CallTipsVisible": 0, @@ -490,6 +491,8 @@ "MouseClickHandlersEnabled": True, + "ShowMarkerMapOnRight": True, + # All (most) lexers "AllFoldCompact": True, @@ -844,6 +847,21 @@ InterfacesBrowserFlag | OthersBrowserFlag | ProtocolsBrowserFlag), + "PySide2": ( + SourcesBrowserFlag | + FormsBrowserFlag | + ResourcesBrowserFlag | + TranslationsBrowserFlag | + InterfacesBrowserFlag | + OthersBrowserFlag | + ProtocolsBrowserFlag), + "PySide2C": ( + SourcesBrowserFlag | + ResourcesBrowserFlag | + TranslationsBrowserFlag | + InterfacesBrowserFlag | + OthersBrowserFlag | + ProtocolsBrowserFlag), } # defaults for the project browser colour settings @@ -869,6 +887,7 @@ "PyQt4DocDir": "", "PyQt5DocDir": "", "PySideDocDir": "", + "PySide2DocDir": "", "EricDocDir": "", "SingleHelpWindow": True, "SaveGeometry": True, @@ -1091,7 +1110,9 @@ "DiskCacheSize": 50, # 50 MB "SslExceptionsDB": "{}", # empty JSON dictionary "DoNotTrack": False, - "SendReferer": True, + "RefererSendReferer": 2, # send always + "RefererDefaultPolicy": 3, # don't send a referer when downgrading + "RefererTrimmingPolicy": 0, # send full URL (no trimming) "SendRefererWhitelist": ["qt-apps.org", "kde-apps.org"], "AcceptCookies": 2, # CookieJar.AcceptOnlyFromSitesNavigatedTo "KeepCookiesUntil": 0, # CookieJar.KeepUntilExpire @@ -1630,6 +1651,11 @@ dn.mkdir(".eric6") QCoreApplication.setOrganizationName(settingsNameOrganization) QCoreApplication.setApplicationName(settingsNameGlobal) + try: + Prefs.settings.setAtomicSyncRequired(False) + except AttributeError: + # backward compatibility fot Qt < 5.10 + pass # Avoid nasty behavior of QSettings in combination with Py2 Prefs.settings.value("UI/SingleApplicationMode") @@ -1983,13 +2009,13 @@ else: return prefClass.uiDefaults[key] elif key in "ViewProfiles2": - profiles = prefClass.settings.value("UI/ViewProfiles2") - if profiles is None: + profilesStr = prefClass.settings.value("UI/ViewProfiles2") + if profilesStr is None: # use the defaults viewProfiles = prefClass.uiDefaults["ViewProfiles2"] else: viewProfiles = {} - profiles = json.loads(profiles) + profiles = json.loads(profilesStr) for name in ["edit", "debug"]: viewProfiles[name] = [ QByteArray.fromBase64(profiles[name][0].encode("utf-8")), @@ -2128,7 +2154,8 @@ "CaretWidth", "AutoCompletionSource", "AutoCompletionThreshold", "AutoCompletionTimeout", "AutoCompletionCacheSize", "AutoCompletionCacheTime", - "AutoCompletionWatchdogTime", "CallTipsVisible", + "AutoCompletionWatchdogTime", "AutoCompletionMaxLines", + "AutoCompletionMaxChars", "CallTipsVisible", "CallTipsStyle", "MarkOccurrencesTimeout", "AutoSpellCheckChunkSize", "SpellCheckingMinWordSize", "PostScriptLevel", "EOLMode", "ZoomFactor", "WhitespaceSize", @@ -2992,6 +3019,8 @@ "DiskCacheSize", "AcceptCookies", "KeepCookiesUntil", "AdBlockUpdatePeriod", "TabManagerGroupByType", "SessionAutoSaveInterval", "NewTabBehavior", + "RefererSendReferer", "RefererDefaultPolicy", + "RefererTrimmingPolicy", ]: return int(prefClass.settings.value( "WebBrowser/" + key, prefClass.webBrowserDefaults[key])) @@ -3008,7 +3037,7 @@ "SyncPasswords", "SyncUserAgents", "SyncSpeedDial", "SyncEncryptData", "SyncEncryptPasswordsOnly", "ShowPreview", "WebInspectorEnabled", "DiskCacheEnabled", - "DoNotTrack", "SendReferer", "FilterTrackingCookies", + "DoNotTrack", "FilterTrackingCookies", "AdBlockEnabled", "AdBlockUseLimitedEasyList", "PluginsEnabled", "FullScreenSupportEnabled", "AutoScrollEnabled", "ScreenCaptureEnabled", @@ -3882,4 +3911,4 @@ initRecentSettings() # -# eflag: noqa = M613 +# eflag: noqa = M201, M613
--- a/Project/CreateDialogCodeDialog.py Tue May 01 12:04:30 2018 +0200 +++ b/Project/CreateDialogCodeDialog.py Sat Jun 02 12:44:41 2018 +0200 @@ -217,7 +217,7 @@ mapped = bytes(type_).decode() if self.project.getProjectLanguage() != "Python2" or \ - self.project.getProjectType == "PySide": + self.project.getProjectType in ("PySide", "PySide2"): # 1. check for const mapped = mapped.replace("const ", "") @@ -396,6 +396,10 @@ tmplName = os.path.join( getConfig('ericCodeTemplatesDir'), "impl_pyside.py2.tmpl") + elif self.project.getProjectType() == "PySide2": + tmplName = os.path.join( + getConfig('ericCodeTemplatesDir'), + "impl_pyside2.py2.tmpl") elif self.project.getProjectType() == "PyQt5": tmplName = os.path.join( getConfig('ericCodeTemplatesDir'), @@ -409,6 +413,10 @@ tmplName = os.path.join( getConfig('ericCodeTemplatesDir'), "impl_pyside.py.tmpl") + elif self.project.getProjectType() == "PySide2": + tmplName = os.path.join( + getConfig('ericCodeTemplatesDir'), + "impl_pyside2.py.tmpl") elif self.project.getProjectType() in [ "PyQt5", "E6Plugin"]: tmplName = os.path.join( @@ -487,14 +495,14 @@ # do the coding stuff if self.project.getProjectLanguage() == "Python2": - if self.project.getProjectType() == "PySide": + if self.project.getProjectType() in ("PySide", "PySide2"): pyqtSignatureFormat = '@Slot({0})' elif self.project.getProjectType() == "PyQt5": pyqtSignatureFormat = '@pyqtSlot({0})' else: pyqtSignatureFormat = '@pyqtSignature("{0}")' else: - if self.project.getProjectType() == "PySide": + if self.project.getProjectType() in ("PySide", "PySide2"): pyqtSignatureFormat = '@Slot({0})' else: pyqtSignatureFormat = '@pyqtSlot({0})'
--- a/Project/Project.py Tue May 01 12:04:30 2018 +0200 +++ b/Project/Project.py Sat Jun 02 12:44:41 2018 +0200 @@ -284,17 +284,28 @@ "JavaScript": ["Other"], } - pyside2, pyside3 = Utilities.checkPyside() - if pyside2 or pyside3: + pyside_py2, pyside_py3 = Utilities.checkPyside("1") + if pyside_py2 or pyside_py3: self.__projectTypes["PySide"] = self.tr("PySide GUI") self.__projectTypes["PySideC"] = self.tr("PySide Console") - if pyside2: + if pyside_py2: self.__projectProgLanguages["Python2"].extend( ["PySide", "PySideC"]) - if pyside3: + if pyside_py3: self.__projectProgLanguages["Python3"].extend( ["PySide", "PySideC"]) + pyside2_py2, pyside2_py3 = Utilities.checkPyside("2") + if pyside2_py2 or pyside2_py3: + self.__projectTypes["PySide2"] = self.tr("PySide2 GUI") + self.__projectTypes["PySide2C"] = self.tr("PySide2 Console") + if pyside2_py2: + self.__projectProgLanguages["Python2"].extend( + ["PySide2", "PySide2C"]) + if pyside2_py3: + self.__projectProgLanguages["Python3"].extend( + ["PySide2", "PySide2C"]) + def getProjectTypes(self, progLanguage=""): """ Public method to get the list of supported project types. @@ -575,21 +586,24 @@ # Forms if self.pdata["PROJECTTYPE"] in ["Qt4", "PyQt5", - "E6Plugin", "PySide"]: + "E6Plugin", "PySide", + "PySide2"]: self.pdata["FILETYPES"]["*.ui"] = "FORMS" # Resources if self.pdata["PROJECTTYPE"] in ["Qt4", "Qt4C", "E6Plugin", "PyQt5", "PyQt5C", - "PySide", "PySideC"]: + "PySide", "PySideC", + "PySide2", "PySide2C"]: self.pdata["FILETYPES"]["*.qrc"] = "RESOURCES" # Translations if self.pdata["PROJECTTYPE"] in ["Qt4", "Qt4C", "E6Plugin", "PyQt5", "PyQt5C", - "PySide", "PySideC"]: + "PySide", "PySideC", + "PySide2", "PySide2C"]: self.pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS" self.pdata["FILETYPES"]["*.qm"] = "TRANSLATIONS" @@ -613,7 +627,8 @@ if self.pdata["PROJECTTYPE"] in ["Qt4", "Qt4C", "E6Plugin", "PyQt5", "PyQt5C", - "PySide", "PySideC"]: + "PySide", "PySideC", + "PySide2", "PySide2C"]: if "*.ts" not in self.pdata["FILETYPES"]: self.pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS" if "*.qm" not in self.pdata["FILETYPES"]: @@ -1337,7 +1352,7 @@ lang = dlg.getSelectedLanguage() if self.pdata["PROJECTTYPE"] in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySide2C"]: langFile = self.pdata["TRANSLATIONPATTERN"]\ .replace("%language%", lang) self.appendFile(langFile) @@ -3437,9 +3452,15 @@ @return path of the management directory (string) """ if Utilities.isWindowsPlatform(): - return os.path.join(self.ppath, "_eric6project") - else: - return os.path.join(self.ppath, ".eric6project") + # migrate the old project management directory ( < v18.06) + oldDir = os.path.join(self.ppath, "_eric6project") + if os.path.exists(oldDir): + os.rename( + oldDir, + os.path.join(self.ppath, ".eric6project") + ) + + return os.path.join(self.ppath, ".eric6project") def createProjectManagementDir(self): """
--- a/Project/ProjectBrowser.py Tue May 01 12:04:30 2018 +0200 +++ b/Project/ProjectBrowser.py Sat Jun 02 12:44:41 2018 +0200 @@ -163,7 +163,7 @@ self.project.projectPropertiesChanged.connect( self.poBrowser._initMenusAndVcs) - # add signal connection to ourself + # add signal connection to ourselves self.project.projectOpened.connect(self.__projectOpened) self.project.projectClosed.connect(self.__projectClosed) self.project.newProject.connect(self.__newProject)
--- a/Project/ProjectFormsBrowser.py Tue May 01 12:04:30 2018 +0200 +++ b/Project/ProjectFormsBrowser.py Sat Jun 02 12:44:41 2018 +0200 @@ -126,7 +126,7 @@ self.menu = QMenu(self) if self.project.getProjectType() in \ - ["Qt4", "PyQt5", "E6Plugin", "PySide"]: + ["Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2"]: self.menu.addAction( self.tr('Compile form'), self.__compileForm) self.menu.addAction( @@ -181,7 +181,7 @@ self.menuActions.append(act) self.menu.addSeparator() if self.project.getProjectType() in \ - ["Qt4", "PyQt5", "E6Plugin", "PySide"]: + ["Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2"]: self.menu.addAction(self.tr('New form...'), self.__newForm) else: if self.hooks["newForm"] is not None: @@ -204,7 +204,7 @@ self.backMenu = QMenu(self) if self.project.getProjectType() in \ - ["Qt4", "PyQt5", "E6Plugin", "PySide"] or \ + ["Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2"] or \ self.hooks["compileAllForms"] is not None: self.backMenu.addAction( self.tr('Compile all forms'), self.__compileAllForms) @@ -231,7 +231,7 @@ # create the menu for multiple selected files self.multiMenu = QMenu(self) if self.project.getProjectType() in \ - ["Qt4", "PyQt5", "E6Plugin", "PySide"]: + ["Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2"]: act = self.multiMenu.addAction( self.tr('Compile forms'), self.__compileSelectedForms) self.multiMenu.addSeparator() @@ -273,7 +273,7 @@ self.dirMenu = QMenu(self) if self.project.getProjectType() in \ - ["Qt4", "PyQt5", "E6Plugin", "PySide"]: + ["Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2"]: self.dirMenu.addAction( self.tr('Compile all forms'), self.__compileAllForms) self.dirMenu.addSeparator() @@ -293,7 +293,7 @@ self.dirMenuActions.append(act) self.dirMenu.addSeparator() if self.project.getProjectType() in \ - ["Qt4", "PyQt5", "E6Plugin", "PySide"]: + ["Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2"]: self.dirMenu.addAction(self.tr('New form...'), self.__newForm) else: if self.hooks["newForm"] is not None: @@ -318,7 +318,7 @@ self.dirMultiMenu = QMenu(self) if self.project.getProjectType() in \ - ["Qt4", "PyQt5", "E6Plugin", "PySide"]: + ["Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2"]: self.dirMultiMenu.addAction( self.tr('Compile all forms'), self.__compileAllForms) self.dirMultiMenu.addSeparator() @@ -536,7 +536,7 @@ self.hooks["newForm"](path) else: if self.project.getProjectType() in \ - ["Qt4", "PyQt5", "E6Plugin", "PySide"]: + ["Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2"]: self.__newUiForm(path) def __newUiForm(self, path): @@ -637,7 +637,7 @@ def __readStdout(self): """ Private slot to handle the readyReadStandardOutput signal of the - pyuic4/pyuic5/pyside-uic/rbuic4 process. + pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process. """ if self.compileProc is None: return @@ -650,7 +650,7 @@ def __readStderr(self): """ Private slot to handle the readyReadStandardError signal of the - pyuic4/pyuic5/pyside-uic/rbuic4 process. + pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process. """ if self.compileProc is None: return @@ -759,7 +759,10 @@ 'pyuic5', ["py3uic5", "py2uic5"]) elif self.project.getProjectType() == "PySide": self.uicompiler = \ - Utilities.generatePySideToolPath('pyside-uic') + Utilities.generatePySideToolPath('pyside-uic', "1") + elif self.project.getProjectType() == "PySide2": + self.uicompiler = \ + Utilities.generatePySideToolPath('pyside2-uic', "2") else: return None elif self.project.getProjectLanguage() == "Ruby": @@ -932,7 +935,7 @@ self.hooks["compileChangedForms"](self.project.pdata["FORMS"]) else: if self.project.getProjectType() not in \ - ["Qt4", "PyQt5", "E6Plugin", "PySide"]: + ["Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2"]: # ignore the request for non Qt GUI projects return
--- a/Project/ProjectResourcesBrowser.py Tue May 01 12:04:30 2018 +0200 +++ b/Project/ProjectResourcesBrowser.py Sat Jun 02 12:44:41 2018 +0200 @@ -84,7 +84,7 @@ self.menu = QMenu(self) if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: self.menu.addAction( self.tr('Compile resource'), self.__compileResource) @@ -120,7 +120,7 @@ self.menu.addSeparator() if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: self.menu.addAction( self.tr('New resource...'), self.__newResource) else: @@ -148,7 +148,7 @@ self.backMenu = QMenu(self) if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: self.backMenu.addAction( self.tr('Compile all resources'), self.__compileAllResources) @@ -186,7 +186,7 @@ self.multiMenu = QMenu(self) if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: act = self.multiMenu.addAction( self.tr('Compile resources'), self.__compileSelectedResources) @@ -218,7 +218,7 @@ self.dirMenu = QMenu(self) if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: self.dirMenu.addAction( self.tr('Compile all resources'), self.__compileAllResources) @@ -259,7 +259,7 @@ self.dirMultiMenu = QMenu(self) if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: self.dirMultiMenu.addAction( self.tr('Compile all resources'), self.__compileAllResources) @@ -527,7 +527,7 @@ def __readStdout(self): """ Private slot to handle the readyReadStandardOutput signal of the - pyrcc4/pyrcc5/pyside-rcc/rbrcc process. + pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process. """ if self.compileProc is None: return @@ -541,7 +541,7 @@ def __readStderr(self): """ Private slot to handle the readyReadStandardError signal of the - pyrcc4/pyrcc5/pyside-rcc/rbrcc process. + pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process. """ if self.compileProc is None: return @@ -651,7 +651,15 @@ self.rccCompiler = Utilities.generatePyQtToolPath('pyrcc5') elif self.project.getProjectType() in ["PySide", "PySideC"]: self.rccCompiler = Utilities.generatePySideToolPath( - 'pyside-rcc') + 'pyside-rcc', "1") + if self.project.getProjectLanguage() in \ + ["Python", "Python2"]: + args.append("-py2") + else: + args.append("-py3") + elif self.project.getProjectType() in ["PySide2", "PySide2C"]: + self.rccCompiler = Utilities.generatePySideToolPath( + 'pyside2-rcc', "2") if self.project.getProjectLanguage() in \ ["Python", "Python2"]: args.append("-py2")
--- a/Project/ProjectTranslationsBrowser.py Tue May 01 12:04:30 2018 +0200 +++ b/Project/ProjectTranslationsBrowser.py Sat Jun 02 12:44:41 2018 +0200 @@ -107,7 +107,7 @@ self.menu = QMenu(self) if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: act = self.menu.addAction( self.tr('Generate translation'), self.__generateSelected) self.tsMenuActions.append(act) @@ -234,7 +234,7 @@ self.backMenu = QMenu(self) if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: act = self.backMenu.addAction( self.tr('Generate all translations'), self.__generateAll) @@ -295,7 +295,7 @@ self.multiMenu = QMenu(self) if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: act = self.multiMenu.addAction( self.tr('Generate translations'), self.__generateSelected) @@ -379,7 +379,7 @@ self.dirMenu = QMenu(self) if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: act = self.dirMenu.addAction( self.tr('Generate all translations'), self.__generateAll) @@ -497,7 +497,7 @@ """ if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: tsFiles = 0 qmFiles = 0 itmList = self.getSelectedItems() @@ -539,7 +539,7 @@ """ if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: tsFiles = 0 qmFiles = 0 itmList = self.getSelectedItems() @@ -579,7 +579,7 @@ """ if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: if self.pylupdateProcRunning: for act in self.tsprocDirMenuActions: act.setEnabled(False) @@ -599,7 +599,7 @@ """ if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: if self.pylupdateProcRunning: for act in self.tsprocBackMenuActions: act.setEnabled(False) @@ -869,7 +869,7 @@ def __readStderrLupdate(self, proc): """ Private slot to handle the readyReadStandardError signal of the - pylupdate4/pylupdate5/pyside-lupdate process. + pylupdate4/pylupdate5/pyside-lupdate/pyside2-lupdate process. @param proc reference to the process @type QProcess @@ -1027,7 +1027,11 @@ else: self.pylupdate = Utilities.generatePyQtToolPath('pylupdate5') elif self.project.getProjectType() in ["PySide", "PySideC"]: - self.pylupdate = Utilities.generatePySideToolPath('pyside-lupdate') + self.pylupdate = Utilities.generatePySideToolPath( + 'pyside-lupdate', "1") + elif self.project.getProjectType() in ["PySide2", "PySide2C"]: + self.pylupdate = Utilities.generatePySideToolPath( + 'pyside2-lupdate', "2") else: return @@ -1201,7 +1205,7 @@ if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC"]: + "PySide", "PySideC", "PySide2", "PySideC2"]: lrelease = os.path.join( Utilities.getQtBinariesPath(), Utilities.generateQtToolName("lrelease"))
--- a/Project/PropertiesDialog.py Tue May 01 12:04:30 2018 +0200 +++ b/Project/PropertiesDialog.py Sat Jun 02 12:44:41 2018 +0200 @@ -63,11 +63,13 @@ self.languageComboBox.addItems(project.getProgrammingLanguages()) - projectTypes = project.getProjectTypes() + projectTypes = [] + for projectTypeItem in project.getProjectTypes().items(): + projectTypes.append((projectTypeItem[1], projectTypeItem[0])) self.projectTypeComboBox.clear() - for projectType in sorted(projectTypes.keys()): + for projectType in sorted(projectTypes): self.projectTypeComboBox.addItem( - projectTypes[projectType], projectType) + projectType[0], projectType[1]) ipath = Preferences.getMultiProject("Workspace") or \ Utilities.getHomeDir() @@ -143,11 +145,13 @@ """ curProjectType = self.getProjectType() + projectTypes = [] + for projectTypeItem in self.project.getProjectTypes().items(): + projectTypes.append((projectTypeItem[1], projectTypeItem[0])) self.projectTypeComboBox.clear() - projectTypes = self.project.getProjectTypes(language) - for projectType in sorted(projectTypes.keys()): + for projectType in sorted(projectTypes): self.projectTypeComboBox.addItem( - projectTypes[projectType], projectType) + projectType[0], projectType[1]) index = self.projectTypeComboBox.findData(curProjectType) if index == -1:
--- a/QScintilla/Editor.py Tue May 01 12:04:30 2018 +0200 +++ b/QScintilla/Editor.py Sat Jun 02 12:44:41 2018 +0200 @@ -29,7 +29,7 @@ from E5Gui import E5FileDialog, E5MessageBox from E5Utilities.E5Cache import E5Cache -from .QsciScintillaCompat import QsciScintillaCompat, QSCINTILLA_VERSION +from .QsciScintillaCompat import QsciScintillaCompat from .EditorMarkerMap import EditorMarkerMap import Preferences @@ -273,12 +273,6 @@ self.cursorPositionChanged.connect(self.__cursorPositionChanged) self.modificationAttempted.connect(self.__modificationReadOnly) - # margins layout - if QSCINTILLA_VERSION() >= 0x020301: - self.__unifiedMargins = Preferences.getEditor("UnifiedMargins") - else: - self.__unifiedMargins = True - # define the margins markers self.__changeMarkerSaved = self.markerDefine( self.__createChangeMarkerPixmap( @@ -416,7 +410,8 @@ self.__acWatchdog.timeout.connect(self.autoCompleteQScintilla) self.userListActivated.connect(self.__completionListSelected) - self.SCN_CHARADDED.connect(self.__charAddedPermanent) + self.SCN_CHARADDED.connect(self.__charAdded) + self.SCN_AUTOCCANCELLED.connect(self.__autocompletionCancelled) self.__completionListHookFunctions = {} self.__completionListAsyncHookFunctions = {} @@ -1149,16 +1144,6 @@ """ self.marginMenuActs = {} - if self.__unifiedMargins: - self.__initContextMenuUnifiedMargins() - else: - self.__initContextMenuSeparateMargins() - - def __initContextMenuSeparateMargins(self): - """ - Private method used to setup the context menu for the separated - margins. - """ # bookmark margin self.bmMarginMenu = QMenu() @@ -1199,6 +1184,39 @@ self.bpMarginMenu.aboutToShow.connect( lambda: self.__showContextMenuMargin(self.bpMarginMenu)) + # fold margin + self.foldMarginMenu = QMenu() + + self.marginMenuActs["ToggleAllFolds"] = \ + self.foldMarginMenu.addAction( + self.tr("Toggle all folds"), + self.foldAll) + self.marginMenuActs["ToggleAllFoldsAndChildren"] = \ + self.foldMarginMenu.addAction( + self.tr("Toggle all folds (including children)"), + lambda: self.foldAll(True)) + self.marginMenuActs["ToggleCurrentFold"] = \ + self.foldMarginMenu.addAction( + self.tr("Toggle current fold"), + self.toggleCurrentFold) + self.foldMarginMenu.addSeparator() + self.marginMenuActs["ExpandChildren"] = \ + self.foldMarginMenu.addAction( + self.tr("Expand (including children)"), + self.__contextMenuExpandFoldWithChildren) + self.marginMenuActs["CollapseChildren"] = \ + self.foldMarginMenu.addAction( + self.tr("Collapse (including children)"), + self.__contextMenuCollapseFoldWithChildren) + self.foldMarginMenu.addSeparator() + self.marginMenuActs["ClearAllFolds"] = \ + self.foldMarginMenu.addAction( + self.tr("Clear all folds"), + self.clearFolds) + + self.foldMarginMenu.aboutToShow.connect( + lambda: self.__showContextMenuMargin(self.foldMarginMenu)) + # indicator margin self.indicMarginMenu = QMenu() @@ -1253,87 +1271,6 @@ self.indicMarginMenu.aboutToShow.connect( lambda: self.__showContextMenuMargin(self.indicMarginMenu)) - def __initContextMenuUnifiedMargins(self): - """ - Private method used to setup the context menu for the unified margins. - """ - self.marginMenu = QMenu() - - self.marginMenu.addAction( - self.tr('Toggle bookmark'), self.menuToggleBookmark) - self.marginMenuActs["NextBookmark"] = self.marginMenu.addAction( - self.tr('Next bookmark'), self.nextBookmark) - self.marginMenuActs["PreviousBookmark"] = self.marginMenu.addAction( - self.tr('Previous bookmark'), self.previousBookmark) - self.marginMenuActs["ClearBookmark"] = self.marginMenu.addAction( - self.tr('Clear all bookmarks'), self.clearBookmarks) - self.marginMenu.addSeparator() - self.marginMenuActs["GotoSyntaxError"] = self.marginMenu.addAction( - self.tr('Goto syntax error'), self.gotoSyntaxError) - self.marginMenuActs["ShowSyntaxError"] = self.marginMenu.addAction( - self.tr('Show syntax error message'), self.__showSyntaxError) - self.marginMenuActs["ClearSyntaxError"] = self.marginMenu.addAction( - self.tr('Clear syntax error'), self.clearSyntaxError) - self.marginMenu.addSeparator() - self.marginMenuActs["NextWarningMarker"] = self.marginMenu.addAction( - self.tr("Next warning"), self.nextWarning) - self.marginMenuActs["PreviousWarningMarker"] = \ - self.marginMenu.addAction( - self.tr("Previous warning"), self.previousWarning) - self.marginMenuActs["ShowWarning"] = self.marginMenu.addAction( - self.tr('Show warning message'), self.__showWarning) - self.marginMenuActs["ClearWarnings"] = self.marginMenu.addAction( - self.tr('Clear warnings'), self.clearWarnings) - self.marginMenu.addSeparator() - self.marginMenuActs["Breakpoint"] = self.marginMenu.addAction( - self.tr('Toggle breakpoint'), self.menuToggleBreakpoint) - self.marginMenuActs["TempBreakpoint"] = self.marginMenu.addAction( - self.tr('Toggle temporary breakpoint'), - self.__menuToggleTemporaryBreakpoint) - self.marginMenuActs["EditBreakpoint"] = self.marginMenu.addAction( - self.tr('Edit breakpoint...'), self.menuEditBreakpoint) - self.marginMenuActs["EnableBreakpoint"] = self.marginMenu.addAction( - self.tr('Enable breakpoint'), - self.__menuToggleBreakpointEnabled) - self.marginMenuActs["NextBreakpoint"] = self.marginMenu.addAction( - self.tr('Next breakpoint'), self.menuNextBreakpoint) - self.marginMenuActs["PreviousBreakpoint"] = self.marginMenu.addAction( - self.tr('Previous breakpoint'), self.menuPreviousBreakpoint) - self.marginMenuActs["ClearBreakpoint"] = self.marginMenu.addAction( - self.tr('Clear all breakpoints'), self.__menuClearBreakpoints) - self.marginMenu.addSeparator() - self.marginMenuActs["NextCoverageMarker"] = self.marginMenu.addAction( - self.tr('Next uncovered line'), self.nextUncovered) - self.marginMenuActs["PreviousCoverageMarker"] = \ - self.marginMenu.addAction( - self.tr('Previous uncovered line'), self.previousUncovered) - self.marginMenu.addSeparator() - self.marginMenuActs["NextTaskMarker"] = self.marginMenu.addAction( - self.tr('Next task'), self.nextTask) - self.marginMenuActs["PreviousTaskMarker"] = self.marginMenu.addAction( - self.tr('Previous task'), self.previousTask) - self.marginMenu.addSeparator() - self.marginMenuActs["NextChangeMarker"] = self.marginMenu.addAction( - self.tr('Next change'), self.nextChange) - self.marginMenuActs["PreviousChangeMarker"] = \ - self.marginMenu.addAction( - self.tr('Previous change'), self.previousChange) - self.marginMenuActs["ClearChangeMarkers"] = \ - self.marginMenu.addAction( - self.tr('Clear changes'), self.__reinitOnlineChangeTrace) - self.marginMenu.addSeparator() - self.marginMenuActs["LMBbookmarks"] = self.marginMenu.addAction( - self.tr('LMB toggles bookmarks'), self.__lmBbookmarks) - self.marginMenuActs["LMBbookmarks"].setCheckable(True) - self.marginMenuActs["LMBbookmarks"].setChecked(False) - self.marginMenuActs["LMBbreakpoints"] = self.marginMenu.addAction( - self.tr('LMB toggles breakpoints'), self.__lmBbreakpoints) - self.marginMenuActs["LMBbreakpoints"].setCheckable(True) - self.marginMenuActs["LMBbreakpoints"].setChecked(True) - - self.marginMenu.aboutToShow.connect( - lambda: self.__showContextMenuMargin(self.marginMenu)) - def __exportMenuTriggered(self, act): """ Private method to handle the selection of an export format. @@ -2358,6 +2295,7 @@ self.breakpointModel.setBreakPointByIndex( index, self.fileName, ln, (cond, temp, enabled, ignorecount)) + break self.line = -1 @@ -3313,22 +3251,36 @@ ## Utility methods below ########################################################################### - def ensureVisible(self, line): + def ensureVisible(self, line, expand=False): """ Public slot to ensure, that the specified line is visible. @param line line number to make visible + @type int + @keyparam expand flag indicating to expand all folds + @type bool """ self.ensureLineVisible(line - 1) - - def ensureVisibleTop(self, line): + if expand: + self.SendScintilla(QsciScintilla.SCI_FOLDCHILDREN, line - 1, + QsciScintilla.SC_FOLDACTION_EXPAND) + + def ensureVisibleTop(self, line, expand=False): """ Public slot to ensure, that the specified line is visible at the top of the editor. @param line line number to make visible - """ + @type int + @keyparam expand flag indicating to expand all folds + @type bool + """ + self.ensureVisible(line) self.setFirstVisibleLine(line - 1) + self.ensureCursorVisible() + if expand: + self.SendScintilla(QsciScintilla.SCI_FOLDCHILDREN, line - 1, + QsciScintilla.SC_FOLDACTION_EXPAND) def __marginClicked(self, margin, line, modifiers): """ @@ -3338,33 +3290,15 @@ @param line line number of the click (integer) @param modifiers keyboard modifiers (Qt.KeyboardModifiers) """ - if self.__unifiedMargins: - if margin == 1: - if modifiers & Qt.KeyboardModifiers(Qt.ShiftModifier): - if self.marginMenuActs["LMBbreakpoints"].isChecked(): - self.toggleBookmark(line + 1) - else: - self.__toggleBreakpoint(line + 1) - elif modifiers & Qt.KeyboardModifiers(Qt.ControlModifier): - if self.markersAtLine(line) & (1 << self.syntaxerror): - self.__showSyntaxError(line) - elif self.markersAtLine(line) & (1 << self.warning): - self.__showWarning(line) - else: - if self.marginMenuActs["LMBbreakpoints"].isChecked(): - self.__toggleBreakpoint(line + 1) - else: - self.toggleBookmark(line + 1) - else: - if margin == self.__bmMargin: - self.toggleBookmark(line + 1) - elif margin == self.__bpMargin: - self.__toggleBreakpoint(line + 1) - elif margin == self.__indicMargin: - if self.markersAtLine(line) & (1 << self.syntaxerror): - self.__showSyntaxError(line) - elif self.markersAtLine(line) & (1 << self.warning): - self.__showWarning(line) + if margin == self.__bmMargin: + self.toggleBookmark(line + 1) + elif margin == self.__bpMargin: + self.__toggleBreakpoint(line + 1) + elif margin == self.__indicMargin: + if self.markersAtLine(line) & (1 << self.syntaxerror): + self.__showSyntaxError(line) + elif self.markersAtLine(line) & (1 << self.warning): + self.__showWarning(line) def handleMonospacedEnable(self): """ @@ -4021,20 +3955,25 @@ else: self.__indentLine(True) - def gotoLine(self, line, pos=1, firstVisible=False): + def gotoLine(self, line, pos=1, firstVisible=False, expand=False): """ Public slot to jump to the beginning of a line. - @param line line number to go to (integer) - @keyparam pos position in line to go to (integer) + @param line line number to go to + @type int + @keyparam pos position in line to go to + @type int @keyparam firstVisible flag indicating to make the line the first - visible line (boolean) + visible line + @type bool + @keyparam expand flag indicating to expand all folds + @type bool """ self.setCursorPosition(line - 1, pos - 1) if firstVisible: - self.ensureVisibleTop(line) + self.ensureVisibleTop(line, expand) else: - self.ensureVisible(line) + self.ensureVisible(line, expand) def __textChanged(self): """ @@ -4142,10 +4081,6 @@ if self.completer is not None: self.completer.readSettings() - # set the margins layout - if QSCINTILLA_VERSION() >= 0x020301: - self.__unifiedMargins = Preferences.getEditor("UnifiedMargins") - # set the line marker colours or pixmap if Preferences.getEditor("LineMarkersBackground"): self.markerDefine(QsciScintilla.Background, self.currentline) @@ -4223,6 +4158,8 @@ # refresh the annotations display self.__refreshAnnotations() + self.__markerMap.setMapPosition( + Preferences.getEditor("ShowMarkerMapOnRight")) self.__markerMap.initColors() self.settingsRead.emit() @@ -4259,60 +4196,37 @@ self.setMarginSensitivity(margin, False) # set marker margin(s) settings - if self.__unifiedMargins: - margin1Mask = (1 << self.breakpoint) | \ - (1 << self.cbreakpoint) | \ - (1 << self.tbreakpoint) | \ - (1 << self.tcbreakpoint) | \ - (1 << self.dbreakpoint) | \ - (1 << self.currentline) | \ - (1 << self.errorline) | \ - (1 << self.bookmark) | \ - (1 << self.syntaxerror) | \ + self.__bmMargin = 0 + self.__linenoMargin = 1 + self.__bpMargin = 2 + self.__foldMargin = 3 + self.__indicMargin = 4 + + marginBmMask = (1 << self.bookmark) + self.setMarginWidth(self.__bmMargin, 16) + self.setMarginSensitivity(self.__bmMargin, True) + self.setMarginMarkerMask(self.__bmMargin, marginBmMask) + + marginBpMask = (1 << self.breakpoint) | \ + (1 << self.cbreakpoint) | \ + (1 << self.tbreakpoint) | \ + (1 << self.tcbreakpoint) | \ + (1 << self.dbreakpoint) + self.setMarginWidth(self.__bpMargin, 16) + self.setMarginSensitivity(self.__bpMargin, True) + self.setMarginMarkerMask(self.__bpMargin, marginBpMask) + + marginIndicMask = (1 << self.syntaxerror) | \ (1 << self.notcovered) | \ (1 << self.taskmarker) | \ (1 << self.warning) | \ (1 << self.__changeMarkerUnsaved) | \ - (1 << self.__changeMarkerSaved) - self.setMarginWidth(1, 16) - self.setMarginSensitivity(1, True) - self.setMarginMarkerMask(1, margin1Mask) - - self.__linenoMargin = 0 - self.__foldMargin = 2 - else: - - self.__bmMargin = 0 - self.__linenoMargin = 1 - self.__bpMargin = 2 - self.__foldMargin = 3 - self.__indicMargin = 4 - - marginBmMask = (1 << self.bookmark) - self.setMarginWidth(self.__bmMargin, 16) - self.setMarginSensitivity(self.__bmMargin, True) - self.setMarginMarkerMask(self.__bmMargin, marginBmMask) - - marginBpMask = (1 << self.breakpoint) | \ - (1 << self.cbreakpoint) | \ - (1 << self.tbreakpoint) | \ - (1 << self.tcbreakpoint) | \ - (1 << self.dbreakpoint) - self.setMarginWidth(self.__bpMargin, 16) - self.setMarginSensitivity(self.__bpMargin, True) - self.setMarginMarkerMask(self.__bpMargin, marginBpMask) - - marginIndicMask = (1 << self.syntaxerror) | \ - (1 << self.notcovered) | \ - (1 << self.taskmarker) | \ - (1 << self.warning) | \ - (1 << self.__changeMarkerUnsaved) | \ - (1 << self.__changeMarkerSaved) | \ - (1 << self.currentline) | \ - (1 << self.errorline) - self.setMarginWidth(self.__indicMargin, 16) - self.setMarginSensitivity(self.__indicMargin, True) - self.setMarginMarkerMask(self.__indicMargin, marginIndicMask) + (1 << self.__changeMarkerSaved) | \ + (1 << self.currentline) | \ + (1 << self.errorline) + self.setMarginWidth(self.__indicMargin, 16) + self.setMarginSensitivity(self.__indicMargin, True) + self.setMarginMarkerMask(self.__indicMargin, marginIndicMask) # set linenumber margin settings linenoMargin = Preferences.getEditor("LinenoMargin") @@ -4507,6 +4421,7 @@ Preferences.getEditor("AutoCompletionCaseSensitivity")) self.setAutoCompletionReplaceWord( Preferences.getEditor("AutoCompletionReplaceWord")) + self.setAutoCompletionThreshold(0) try: self.setAutoCompletionUseSingle( Preferences.getEditor("AutoCompletionShowSingle")) @@ -4520,16 +4435,9 @@ self.setAutoCompletionSource(QsciScintilla.AcsAPIs) else: self.setAutoCompletionSource(QsciScintilla.AcsAll) - if Preferences.getEditor("AutoCompletionEnabled"): - if not self.__completionListHookFunctions and \ - not self.__completionListAsyncHookFunctions: - self.setAutoCompletionThreshold( - Preferences.getEditor("AutoCompletionThreshold")) - else: - self.setAutoCompletionThreshold(0) - else: - self.setAutoCompletionThreshold(-1) - self.setAutoCompletionSource(QsciScintilla.AcsNone) + + self.maxLines = Preferences.getEditor("AutoCompletionMaxLines") + self.maxChars = Preferences.getEditor("AutoCompletionMaxChars") def __setCallTips(self): """ @@ -4601,8 +4509,6 @@ (boolean) """ if enable: - self.setAutoCompletionThreshold( - Preferences.getEditor("AutoCompletionThreshold")) autoCompletionSource = \ Preferences.getEditor("AutoCompletionSource") if autoCompletionSource == QsciScintilla.AcsDocument: @@ -4611,10 +4517,7 @@ self.setAutoCompletionSource(QsciScintilla.AcsAPIs) else: self.setAutoCompletionSource(QsciScintilla.AcsAll) - else: - self.setAutoCompletionThreshold(-1) - self.setAutoCompletionSource(QsciScintilla.AcsNone) - + def __toggleAutoCompletionEnable(self): """ Private slot to handle the Enable Autocompletion context menu entry. @@ -4634,8 +4537,13 @@ @param charNumber value of the character entered (integer) """ + char = chr(charNumber) + # update code documentation viewer + if char == "(" and \ + Preferences.getDocuViewer("ShowInfoOnOpenParenthesis"): + self.vm.showEditorInfo(self) + if self.isListActive(): - char = chr(charNumber) if self.__isStartChar(char): self.cancelList() self.autoComplete(auto=True, context=True) @@ -4718,13 +4626,6 @@ .format(key)) return - if not self.__completionListHookFunctions and \ - not self.__completionListAsyncHookFunctions: - if self.autoCompletionThreshold() > 0: - self.setAutoCompletionThreshold(0) - self.SCN_CHARADDED.connect(self.__charAdded) - self.SCN_AUTOCCANCELLED.connect(self.__autocompletionCancelled) - if asynchroneous: self.__completionListAsyncHookFunctions[key] = func else: @@ -4742,14 +4643,6 @@ del self.__completionListHookFunctions[key] elif key in self.__completionListAsyncHookFunctions: del self.__completionListAsyncHookFunctions[key] - - if not self.__completionListHookFunctions and \ - not self.__completionListAsyncHookFunctions: - self.SCN_CHARADDED.disconnect(self.__charAdded) - self.SCN_AUTOCCANCELLED.disconnect(self.__autocompletionCancelled) - if self.autoCompletionThreshold() == 0: - self.setAutoCompletionThreshold( - Preferences.getEditor("AutoCompletionThreshold")) def getCompletionListHook(self, key): """ @@ -4771,7 +4664,7 @@ (boolean) @keyparam context flag indicating to complete a context (boolean) """ - if auto and self.autoCompletionThreshold() == -1: + if auto and not Preferences.getEditor("AutoCompletionEnabled"): # auto-completion is disabled return @@ -5148,20 +5041,6 @@ ## Methods needed by the code documentation viewer ################################################################# - def __charAddedPermanent(self, charNumber): - """ - Private slot called to handle the user entering a character. - - Note: This slot is always connected independent of the auto-completion - and calltips handling __charAdded() slot. - - @param charNumber value of the character entered (integer) - """ - char = chr(charNumber) - if char == "(" and \ - Preferences.getDocuViewer("ShowInfoOnOpenParenthesis"): - self.vm.showEditorInfo(self) - def __showCodeInfo(self): """ Private slot to handle the context menu action to show code info. @@ -5203,16 +5082,15 @@ self.menu.popup(evt.globalPos()) else: self.line = self.lineAt(evt.pos()) - if self.__unifiedMargins: - self.marginMenu.popup(evt.globalPos()) - else: - if self.__marginNumber(evt.x()) in [self.__bmMargin, - self.__linenoMargin]: - self.bmMarginMenu.popup(evt.globalPos()) - elif self.__marginNumber(evt.x()) == self.__bpMargin: - self.bpMarginMenu.popup(evt.globalPos()) - elif self.__marginNumber(evt.x()) == self.__indicMargin: - self.indicMarginMenu.popup(evt.globalPos()) + if self.__marginNumber(evt.x()) in [self.__bmMargin, + self.__linenoMargin]: + self.bmMarginMenu.popup(evt.globalPos()) + elif self.__marginNumber(evt.x()) == self.__bpMargin: + self.bpMarginMenu.popup(evt.globalPos()) + elif self.__marginNumber(evt.x()) == self.__indicMargin: + self.indicMarginMenu.popup(evt.globalPos()) + elif self.__marginNumber(evt.x()) == self.__foldMargin: + self.foldMarginMenu.popup(evt.globalPos()) def __showContextMenu(self): """ @@ -5333,7 +5211,7 @@ (self.project.isPy3Project() or self.project.isPy2Project()) - # now check ourself + # now check ourselves fn = self.getFileName() if fn is not None: tfn = Utilities.getTestFileName(fn) @@ -5382,96 +5260,86 @@ @param menu reference to the menu to be shown @type QMenu """ - if self.fileName and self.isPyFile(): - self.marginMenuActs["Breakpoint"].setEnabled(True) - self.marginMenuActs["TempBreakpoint"].setEnabled(True) - if self.markersAtLine(self.line) & self.breakpointMask: - self.marginMenuActs["EditBreakpoint"].setEnabled(True) - self.marginMenuActs["EnableBreakpoint"].setEnabled(True) - else: - self.marginMenuActs["EditBreakpoint"].setEnabled(False) - self.marginMenuActs["EnableBreakpoint"].setEnabled(False) - if self.markersAtLine(self.line) & (1 << self.dbreakpoint): - self.marginMenuActs["EnableBreakpoint"].setText( - self.tr('Enable breakpoint')) - else: - self.marginMenuActs["EnableBreakpoint"].setText( - self.tr('Disable breakpoint')) - if self.breaks: - self.marginMenuActs["NextBreakpoint"].setEnabled(True) - self.marginMenuActs["PreviousBreakpoint"].setEnabled(True) - self.marginMenuActs["ClearBreakpoint"].setEnabled(True) - else: - self.marginMenuActs["NextBreakpoint"].setEnabled(False) - self.marginMenuActs["PreviousBreakpoint"].setEnabled(False) - self.marginMenuActs["ClearBreakpoint"].setEnabled(False) - else: - self.marginMenuActs["Breakpoint"].setEnabled(False) - self.marginMenuActs["TempBreakpoint"].setEnabled(False) - self.marginMenuActs["EditBreakpoint"].setEnabled(False) - self.marginMenuActs["EnableBreakpoint"].setEnabled(False) - self.marginMenuActs["NextBreakpoint"].setEnabled(False) - self.marginMenuActs["PreviousBreakpoint"].setEnabled(False) - self.marginMenuActs["ClearBreakpoint"].setEnabled(False) + if menu is self.bpMarginMenu: + supportsDebugger = bool(self.fileName and self.isPyFile()) + hasBreakpoints = bool(self.breaks) + hasBreakpoint = bool( + self.markersAtLine(self.line) & self.breakpointMask) - if self.bookmarks: - self.marginMenuActs["NextBookmark"].setEnabled(True) - self.marginMenuActs["PreviousBookmark"].setEnabled(True) - self.marginMenuActs["ClearBookmark"].setEnabled(True) - else: - self.marginMenuActs["NextBookmark"].setEnabled(False) - self.marginMenuActs["PreviousBookmark"].setEnabled(False) - self.marginMenuActs["ClearBookmark"].setEnabled(False) + self.marginMenuActs["Breakpoint"].setEnabled(supportsDebugger) + self.marginMenuActs["TempBreakpoint"].setEnabled(supportsDebugger) + self.marginMenuActs["NextBreakpoint"].setEnabled( + supportsDebugger and hasBreakpoints) + self.marginMenuActs["PreviousBreakpoint"].setEnabled( + supportsDebugger and hasBreakpoints) + self.marginMenuActs["ClearBreakpoint"].setEnabled( + supportsDebugger and hasBreakpoints) + self.marginMenuActs["EditBreakpoint"].setEnabled( + supportsDebugger and hasBreakpoint) + self.marginMenuActs["EnableBreakpoint"].setEnabled( + supportsDebugger and hasBreakpoint) + if supportsDebugger: + if self.markersAtLine(self.line) & (1 << self.dbreakpoint): + self.marginMenuActs["EnableBreakpoint"].setText( + self.tr('Enable breakpoint')) + else: + self.marginMenuActs["EnableBreakpoint"].setText( + self.tr('Disable breakpoint')) + + if menu is self.bmMarginMenu: + hasBookmarks = bool(self.bookmarks) - if len(self.syntaxerrors): - self.marginMenuActs["GotoSyntaxError"].setEnabled(True) - self.marginMenuActs["ClearSyntaxError"].setEnabled(True) - if self.markersAtLine(self.line) & (1 << self.syntaxerror): + self.marginMenuActs["NextBookmark"].setEnabled(hasBookmarks) + self.marginMenuActs["PreviousBookmark"].setEnabled(hasBookmarks) + self.marginMenuActs["ClearBookmark"].setEnabled(hasBookmarks) + + if menu is self.foldMarginMenu: + isFoldHeader = bool(self.SendScintilla( + QsciScintilla.SCI_GETFOLDLEVEL, self.line) & + QsciScintilla.SC_FOLDLEVELHEADERFLAG) + + self.marginMenuActs["ExpandChildren"].setEnabled(isFoldHeader) + self.marginMenuActs["CollapseChildren"].setEnabled(isFoldHeader) + + if menu is self.indicMarginMenu: + hasSyntaxErrors = bool(self.syntaxerrors) + hasWarnings = bool(self.warnings) + hasNotCoveredMarkers = bool(self.notcoveredMarkers) + + self.marginMenuActs["GotoSyntaxError"].setEnabled(hasSyntaxErrors) + self.marginMenuActs["ClearSyntaxError"].setEnabled(hasSyntaxErrors) + if hasSyntaxErrors and \ + self.markersAtLine(self.line) & (1 << self.syntaxerror): self.marginMenuActs["ShowSyntaxError"].setEnabled(True) else: self.marginMenuActs["ShowSyntaxError"].setEnabled(False) - else: - self.marginMenuActs["GotoSyntaxError"].setEnabled(False) - self.marginMenuActs["ClearSyntaxError"].setEnabled(False) - self.marginMenuActs["ShowSyntaxError"].setEnabled(False) - - if len(self.warnings): - self.marginMenuActs["NextWarningMarker"].setEnabled(True) - self.marginMenuActs["PreviousWarningMarker"].setEnabled(True) - self.marginMenuActs["ClearWarnings"].setEnabled(True) - if self.markersAtLine(self.line) & (1 << self.warning): + + self.marginMenuActs["NextWarningMarker"].setEnabled(hasWarnings) + self.marginMenuActs["PreviousWarningMarker"].setEnabled( + hasWarnings) + self.marginMenuActs["ClearWarnings"].setEnabled(hasWarnings) + if hasWarnings and \ + self.markersAtLine(self.line) & (1 << self.warning): self.marginMenuActs["ShowWarning"].setEnabled(True) else: self.marginMenuActs["ShowWarning"].setEnabled(False) - else: - self.marginMenuActs["NextWarningMarker"].setEnabled(False) - self.marginMenuActs["PreviousWarningMarker"].setEnabled(False) - self.marginMenuActs["ClearWarnings"].setEnabled(False) - self.marginMenuActs["ShowWarning"].setEnabled(False) - - if self.notcoveredMarkers: - self.marginMenuActs["NextCoverageMarker"].setEnabled(True) - self.marginMenuActs["PreviousCoverageMarker"].setEnabled(True) - else: - self.marginMenuActs["NextCoverageMarker"].setEnabled(False) - self.marginMenuActs["PreviousCoverageMarker"].setEnabled(False) - - if self.__hasTaskMarkers: - self.marginMenuActs["PreviousTaskMarker"].setEnabled(True) - self.marginMenuActs["NextTaskMarker"].setEnabled(True) - else: - self.marginMenuActs["PreviousTaskMarker"].setEnabled(False) - self.marginMenuActs["NextTaskMarker"].setEnabled(False) - - if self.__hasChangeMarkers: - self.marginMenuActs["PreviousChangeMarker"].setEnabled(True) - self.marginMenuActs["NextChangeMarker"].setEnabled(True) - self.marginMenuActs["ClearChangeMarkers"].setEnabled(True) + + self.marginMenuActs["NextCoverageMarker"].setEnabled( + hasNotCoveredMarkers) + self.marginMenuActs["PreviousCoverageMarker"].setEnabled( + hasNotCoveredMarkers) - else: - self.marginMenuActs["PreviousChangeMarker"].setEnabled(False) - self.marginMenuActs["NextChangeMarker"].setEnabled(False) - self.marginMenuActs["ClearChangeMarkers"].setEnabled(False) + self.marginMenuActs["PreviousTaskMarker"].setEnabled( + self.__hasTaskMarkers) + self.marginMenuActs["NextTaskMarker"].setEnabled( + self.__hasTaskMarkers) + + self.marginMenuActs["PreviousChangeMarker"].setEnabled( + self.__hasChangeMarkers) + self.marginMenuActs["NextChangeMarker"].setEnabled( + self.__hasChangeMarkers) + self.marginMenuActs["ClearChangeMarkers"].setEnabled( + self.__hasChangeMarkers) self.showMenu.emit("Margin", menu, self) @@ -5756,7 +5624,7 @@ if os.path.isfile(tf): files.append(tf) - # now check, if there are coverage files belonging to ourself + # now check, if there are coverage files belonging to ourselves fn = self.getFileName() if fn is not None: tfn = Utilities.getTestFileName(fn) @@ -5934,7 +5802,7 @@ if os.path.isfile(tf): files.append(tf) - # now check, if there are profile files belonging to ourself + # now check, if there are profile files belonging to ourselves fn = self.getFileName() if fn is not None: tfn = Utilities.getTestFileName(fn) @@ -6435,6 +6303,55 @@ self.__setAnnotation(line) ################################################################# + ## Fold handling methods + ################################################################# + + def toggleCurrentFold(self): + """ + Public slot to toggle the fold containing the current line. + """ + line, index = self.getCursorPosition() + self.foldLine(line) + + def expandFoldWithChildren(self, line=-1): + """ + Public slot to expand the current fold including its children. + + @param line number of line to be expanded + @type int + """ + if line == -1: + line, index = self.getCursorPosition() + + self.SendScintilla(QsciScintilla.SCI_FOLDCHILDREN, line, + QsciScintilla.SC_FOLDACTION_EXPAND) + + def collapseFoldWithChildren(self, line=-1): + """ + Public slot to collapse the current fold including its children. + + @param line number of line to be expanded + @type int + """ + if line == -1: + line, index = self.getCursorPosition() + + self.SendScintilla(QsciScintilla.SCI_FOLDCHILDREN, line, + QsciScintilla.SC_FOLDACTION_CONTRACT) + + def __contextMenuExpandFoldWithChildren(self): + """ + Private slot to handle the context menu expand with children action. + """ + self.expandFoldWithChildren(self.line) + + def __contextMenuCollapseFoldWithChildren(self): + """ + Private slot to handle the context menu collapse with children action. + """ + self.collapseFoldWithChildren(self.line) + + ################################################################# ## Macro handling methods #################################################################
--- a/QScintilla/EditorAssembly.py Tue May 01 12:04:30 2018 +0200 +++ b/QScintilla/EditorAssembly.py Sat Jun 02 12:44:41 2018 +0200 @@ -60,6 +60,7 @@ self.__membersCombo.activated[int].connect(self.__membersActivated) self.__editor.cursorLineChanged.connect(self.__editorCursorLineChanged) + self.__shutdownTimerCalled = False self.__parseTimer = QTimer(self) self.__parseTimer.setSingleShot(True) self.__parseTimer.setInterval(5 * 1000) @@ -79,9 +80,11 @@ Public method to stop and disconnect the timer. """ self.__parseTimer.stop() - self.__parseTimer.timeout.disconnect(self.__parseEditor) - self.__editor.textChanged.disconnect(self.__resetParseTimer) - self.__editor.refreshed.disconnect(self.__resetParseTimer) + if not self.__shutdownTimerCalled: + self.__parseTimer.timeout.disconnect(self.__parseEditor) + self.__editor.textChanged.disconnect(self.__resetParseTimer) + self.__editor.refreshed.disconnect(self.__resetParseTimer) + self.__shutdownTimerCalled = True def getEditor(self): """ @@ -198,7 +201,8 @@ if lineno is not None and moveCursor: txt = self.__editor.text(lineno - 1).rstrip() pos = len(txt.replace(txt.strip(), "")) - self.__editor.gotoLine(lineno, pos if pos == 0 else pos + 1, True) + self.__editor.gotoLine(lineno, pos if pos == 0 else pos + 1, + firstVisible=True, expand=True) self.__editor.setFocus() def __resetParseTimer(self):
--- a/QScintilla/Lexers/LexerYAML.py Tue May 01 12:04:30 2018 +0200 +++ b/QScintilla/Lexers/LexerYAML.py Sat Jun 02 12:44:41 2018 +0200 @@ -28,7 +28,7 @@ QsciLexerYAML.__init__(self, parent) Lexer.__init__(self) - self.commentString = "---" + self.commentString = "#" def initProperties(self): """
--- a/QScintilla/QsciScintillaCompat.py Tue May 01 12:04:30 2018 +0200 +++ b/QScintilla/QsciScintillaCompat.py Sat Jun 02 12:44:41 2018 +0200 @@ -9,9 +9,9 @@ from __future__ import unicode_literals -from PyQt5.QtCore import pyqtSignal, Qt -from PyQt5.QtGui import QPalette, QColor -from PyQt5.QtWidgets import QApplication +from PyQt5.QtCore import pyqtSignal, Qt, QPoint +from PyQt5.QtGui import QPalette, QColor, QFontMetrics +from PyQt5.QtWidgets import QApplication, QListWidget from PyQt5.Qsci import QsciScintillaBase, QsciScintilla, \ QSCINTILLA_VERSION as QSCIQSCINTILLA_VERSION @@ -75,6 +75,12 @@ self.userListActivated.connect(self.__completionListSelected) self.modificationChanged.connect(self.__modificationChanged) + + self.maxLines = 5 + self.maxChars = 40 + # Adjust the min. size of the autocomplete list box for short strings. + # Otherwise the width of the list box is at least the standard width. + self.SendScintilla(QsciScintilla.SCI_AUTOCSETMAXWIDTH, 5) def __modificationChanged(self, m): """ @@ -1402,7 +1408,7 @@ Public method to handle events. Note: We are not interested in the standard QsciScintilla event - handling because we do it our self. + handling because we do it ourselves. @param evt event object to handle (QEvent) @return result of the event handling (boolean) @@ -1459,28 +1465,120 @@ ## replacements for buggy methods ########################################################################### - if "showUserList" not in QsciScintilla.__dict__: - def showUserList(self, listId, lst): - """ - Public method to show a user supplied list. - - @param listId id of the list (integer) - @param lst list to be show (list of strings) - """ - if listId <= 0: - return - - self.SendScintilla( - QsciScintilla.SCI_AUTOCSETSEPARATOR, - ord(self.UserSeparator)) - self.SendScintilla( - QsciScintilla.SCI_USERLISTSHOW, listId, - self._encodeString(self.UserSeparator.join(lst))) + def showUserList(self, listId, lst): + """ + Public method to show a user supplied list. + + @param listId id of the list (integer) + @param lst list to be show (list of strings) + """ + if listId <= 0: + return + + # Setup seperator for user lists + self.SendScintilla( + QsciScintilla.SCI_AUTOCSETSEPARATOR, ord(self.UserSeparator)) + self.SendScintilla( + QsciScintilla.SCI_USERLISTSHOW, listId, + self._encodeString(self.UserSeparator.join(lst))) + + self.updateUserListSize() + + def autoCompleteFromDocument(self): + """ + Public method to resize list box after creation. + """ + super(QsciScintillaCompat, self).autoCompleteFromDocument() + self.updateUserListSize() + + def autoCompleteFromAPIs(self): + """ + Public method to resize list box after creation. + """ + super(QsciScintillaCompat, self).autoCompleteFromAPIs() + self.updateUserListSize() + + def autoCompleteFromAll(self): + """ + Public method to resize list box after creation. + """ + super(QsciScintillaCompat, self).autoCompleteFromAll() + self.updateUserListSize() ########################################################################### ## work-arounds for buggy behavior ########################################################################### + def updateUserListSize(self): + """ + Public method to resize the completion list to fit with contents. + """ + children = self.findChildren(QListWidget) + if children: + userListWidget = children[-1] + geom = userListWidget.geometry() + + baseHeight = geom.height() + + # Workaround for getting all items instead of + # userListWidget.items() call with unknown mime types. + all_items = userListWidget.findItems('', Qt.MatchStartsWith) + if not all_items: + return + + width = 0 + maxItemHeight = 0 + for item in all_items: + visualRect = userListWidget.visualItemRect(item) + itemWidth = visualRect.width() + if itemWidth > width: + width = itemWidth + itemHeight = visualRect.height() + if itemHeight > maxItemHeight: + maxItemHeight = itemHeight + + height = min(self.maxLines, len(all_items)) * maxItemHeight + # Just a fiddling factor: 2 for better readability, + # e.g. underscores at the end of the list. + height += 2 + + # Borders + borders = geom.size() - userListWidget.contentsRect().size() + width += borders.width() + height += borders.height() + + font = userListWidget.font() + fm = QFontMetrics(font) + averageCharWidth = fm.averageCharWidth() + maxWidth = averageCharWidth * self.maxChars + if width > maxWidth: + width = maxWidth + height += userListWidget.horizontalScrollBar().sizeHint()\ + .height() + # List box doesn't honor limited size to show scroll bars, e.g. + # Python 2 on Win 10. So just force it. + userListWidget.setHorizontalScrollBarPolicy( + Qt.ScrollBarAlwaysOn) + + if len(all_items) > self.maxLines: + width += userListWidget.verticalScrollBar().sizeHint().width() + + # Special case, where the space below current line where to less + yPos = geom.y() + charPos = self.SendScintilla(QsciScintilla.SCI_GETCURRENTPOS) + currentYPos = self.SendScintilla( + QsciScintilla.SCI_POINTYFROMPOSITION, 0, charPos) + + # X position doesn't matter: set to 0 + globalPos = self.mapToGlobal(QPoint(0, currentYPos)) + if yPos < globalPos.y(): + deltaHeight = baseHeight - height + geom.setY(yPos + deltaHeight - 4) + + geom.setWidth(width) + geom.setHeight(height) + userListWidget.setGeometry(geom) + def __completionListSelected(self, listId, txt): """ Private slot to handle the selection from the completion list.
--- a/QScintilla/Shell.py Tue May 01 12:04:30 2018 +0200 +++ b/QScintilla/Shell.py Sat Jun 02 12:44:41 2018 +0200 @@ -526,6 +526,9 @@ self.racEnabled = Preferences.getShell("AutoCompletionEnabled") + self.maxLines = Preferences.getEditor("AutoCompletionMaxLines") + self.maxChars = Preferences.getEditor("AutoCompletionMaxChars") + def __setCallTips(self, language='Python'): """ Private method to configure the calltips function.
--- a/UI/Previewers/PreviewerHTML.py Tue May 01 12:04:30 2018 +0200 +++ b/UI/Previewers/PreviewerHTML.py Sat Jun 02 12:44:41 2018 +0200 @@ -329,9 +329,10 @@ """ Private slot handling the clicking of a link. - @param url url of the clicked link (QUrl) + @param url URL of the clicked link + @type QUrl """ - e5App().getObject("UserInterface").launchHelpViewer(url.toString()) + e5App().getObject("UserInterface").launchHelpViewer(url) def __execJavaScript(self, script): """
--- a/UI/UserInterface.py Tue May 01 12:04:30 2018 +0200 +++ b/UI/UserInterface.py Sat Jun 02 12:44:41 2018 +0200 @@ -280,7 +280,7 @@ self.stdout = Redirector(False) self.stderr = Redirector(True) - # set a few dialog members for dialogs created on demand + # set a few dialog members for non-modal dialogs created on demand self.programsDialog = None self.shortcutsDialog = None self.unittestDialog = None @@ -291,6 +291,7 @@ self.replaceFilesDialog = None self.__notification = None self.__readingSession = False + self.__versionsDialog = None # now setup the connections splash.showMessage(self.tr("Setting up connections...")) @@ -540,6 +541,11 @@ else: self.dummyHelpViewer = None + # redirect handling of http and https URLs to ourselves + if WEBENGINE_AVAILABLE or WEBKIT_AVAILABLE: + QDesktopServices.setUrlHandler("http", self.handleUrl) + QDesktopServices.setUrlHandler("https", self.handleUrl) + # register all relevant objects splash.showMessage(self.tr("Registering Objects...")) e5App().registerObject("UserInterface", self) @@ -630,6 +636,9 @@ self.toolbarManager.restoreState( Preferences.getUI("ToolbarManagerState")) + # finalize the initialization of the code documentation viewer + self.codeDocumentationViewer.finalizeSetup() + # now activate the initial view profile splash.showMessage(self.tr("Setting View Profile...")) self.__setEditProfile() @@ -673,9 +682,6 @@ if interval > 0: QApplication.setKeyboardInputInterval(interval) - # finalize the initialization of the code documentation viewer - self.codeDocumentationViewer.finalizeSetup() - def __createLayout(self, debugServer): """ Private method to create the layout of the various windows. @@ -1769,7 +1775,7 @@ self.__initQtDocActions() self.__initPythonDocActions() self.__initEricDocAction() - self.__initPySideDocAction() + self.__initPySideDocActions() self.versionAct = E5Action( self.tr('Show Versions'), @@ -2432,7 +2438,8 @@ """<b>Qt4 Documentation</b>""" """<p>Display the Qt4 Documentation. Dependent upon your""" """ settings, this will either show the help in Eric's internal""" - """ help viewer, or execute a web browser or Qt Assistant. </p>""" + """ help viewer/web browser, or execute a web browser or Qt""" + """ Assistant. </p>""" )) self.qt4DocAct.triggered.connect(self.__showQt4Doc) self.actions.append(self.qt4DocAct) @@ -2446,7 +2453,8 @@ """<b>Qt5 Documentation</b>""" """<p>Display the Qt5 Documentation. Dependent upon your""" """ settings, this will either show the help in Eric's internal""" - """ help viewer, or execute a web browser or Qt Assistant. </p>""" + """ help viewer/web browser, or execute a web browser or Qt""" + """ Assistant. </p>""" )) self.qt5DocAct.triggered.connect(self.__showQt5Doc) self.actions.append(self.qt5DocAct) @@ -2462,8 +2470,8 @@ """<b>PyQt4 Documentation</b>""" """<p>Display the PyQt4 Documentation. Dependent upon your""" """ settings, this will either show the help in Eric's""" - """ internal help viewer, or execute a web browser or""" - """ Qt Assistant. </p>""" + """ internal help viewer/web browser, or execute a web""" + """ browser or Qt Assistant. </p>""" )) self.pyqt4DocAct.triggered.connect(self.__showPyQt4Doc) self.actions.append(self.pyqt4DocAct) @@ -2482,8 +2490,8 @@ """<b>PyQt5 Documentation</b>""" """<p>Display the PyQt5 Documentation. Dependent upon your""" """ settings, this will either show the help in Eric's""" - """ internal help viewer, or execute a web browser or""" - """ Qt Assistant. </p>""" + """ internal help viewer/web browser, or execute a web""" + """ browser or Qt Assistant. </p>""" )) self.pyqt5DocAct.triggered.connect(self.__showPyQt5Doc) self.actions.append(self.pyqt5DocAct) @@ -2552,12 +2560,13 @@ self.ericDocAct.triggered.connect(self.__showEricDoc) self.actions.append(self.ericDocAct) - def __initPySideDocAction(self): - """ - Private slot to initialize the action to show the PySide documentation. - """ - pyside2, pyside3 = Utilities.checkPyside() - if pyside2 or pyside3: + def __initPySideDocActions(self): + """ + Private slot to initialize the actions to show the PySide + documentation. + """ + pyside_py2, pyside_py3 = Utilities.checkPyside("1") + if pyside_py2 or pyside_py3: self.pysideDocAct = E5Action( self.tr('PySide Documentation'), self.tr('Py&Side Documentation'), @@ -2568,14 +2577,36 @@ """<b>PySide Documentation</b>""" """<p>Display the PySide Documentation. Dependent upon your""" """ settings, this will either show the help in Eric's""" - """ internal help viewer, or execute a web browser or""" - """ Qt Assistant. </p>""" + """ internal help viewer/web browser, or execute a web""" + """ browser or Qt Assistant. </p>""" )) - self.pysideDocAct.triggered.connect(self.__showPySideDoc) + self.pysideDocAct.triggered.connect( + lambda: self.__showPySideDoc("1")) self.actions.append(self.pysideDocAct) else: self.pysideDocAct = None - + + pyside2_py2, pyside2_py3 = Utilities.checkPyside("2") + if pyside2_py2 or pyside2_py3: + self.pyside2DocAct = E5Action( + self.tr('PySide2 Documentation'), + self.tr('PySide&2 Documentation'), + 0, 0, self, 'pyside2_documentation') + self.pyside2DocAct.setStatusTip(self.tr( + 'Open PySide2 Documentation')) + self.pyside2DocAct.setWhatsThis(self.tr( + """<b>PySide2 Documentation</b>""" + """<p>Display the PySide2 Documentation. Dependent upon your""" + """ settings, this will either show the help in Eric's""" + """ internal help viewer/web browser, or execute a web""" + """ browser or Qt Assistant. </p>""" + )) + self.pyside2DocAct.triggered.connect( + lambda: self.__showPySideDoc("2")) + self.actions.append(self.pyside2DocAct) + else: + self.pyside2DocAct = None + def __initMenus(self): """ Private slot to create the menus. @@ -2739,6 +2770,8 @@ self.__menus["help"].addAction(self.pyqt5DocAct) if self.pysideDocAct is not None: self.__menus["help"].addAction(self.pysideDocAct) + if self.pyside2DocAct is not None: + self.__menus["help"].addAction(self.pyside2DocAct) self.__menus["help"].addSeparator() self.__menus["help"].addAction(self.versionAct) self.__menus["help"].addSeparator() @@ -5366,20 +5399,34 @@ else: self.__customViewer(home) - def __showPySideDoc(self): - """ - Private slot to show the PySide documentation. - """ - pysideDocDir = Preferences.getHelp("PySideDocDir") - if not pysideDocDir: - pysideDocDir = Utilities.getEnvironmentEntry("PYSIDEDOCDIR", None) + def __showPySideDoc(self, variant): + """ + Private slot to show the PySide/PySide2 documentation. + + @param variant PySide variant (1 or 2) + @type str + """ + assert variant in ("1", "2") + + if variant == "1": + pysideDocDir = Preferences.getHelp("PySideDocDir") + if not pysideDocDir: + pysideDocDir = Utilities.getEnvironmentEntry( + "PYSIDEDOCDIR", None) + else: + pysideDocDir = Preferences.getHelp("PySide2DocDir") + if not pysideDocDir: + pysideDocDir = Utilities.getEnvironmentEntry( + "PYSIDE2DOCDIR", None) if not pysideDocDir: E5MessageBox.warning( self, self.tr("Documentation"), - self.tr("""<p>The PySide documentation starting point""" - """ has not been configured.</p>""")) + self.tr("""<p>The PySide{0} documentation starting point""" + """ has not been configured.</p>""").format( + "" if variant == "1" else variant) + ) return if not pysideDocDir.startswith(("http://", "https://", "qthelp://")): @@ -5420,16 +5467,31 @@ self.__webBrowser(home) else: self.__customViewer(home) - + + @pyqtSlot(QUrl) + def handleUrl(self, url): + """ + Public slot to handle opening a URL. + + @param url URL to be shown + @type QUrl + """ + self.launchHelpViewer(url) + def launchHelpViewer(self, home, searchWord=None, useSingle=False): """ - Public slot to start the help viewer. - - @param home filename of file to be shown (string) - @keyparam searchWord word to search for (string) + Public slot to start the help viewer/web browser. + + @param home filename of file to be shown or URL to be opened + @type str or QUrl + @keyparam searchWord word to search for + @type str @keyparam useSingle flag indicating to use a single browser window - (boolean) - """ + @type bool + """ + if isinstance(home, QUrl): + home = home.toString(QUrl.None_) + if len(home) > 0: homeUrl = QUrl(home) if not homeUrl.scheme(): @@ -5495,7 +5557,7 @@ def __helpViewer(self): """ - Private slot to start an empty help viewer. + Private slot to start an empty help viewer/web browser. """ searchWord = self.viewmanager.textForFind(False) if searchWord == "": @@ -6691,7 +6753,17 @@ line += 2 versionText += self.tr("""</table>""") - E5MessageBox.about(self, Program, versionText) + self.__versionsDialog = E5MessageBox.E5MessageBox( + E5MessageBox.NoIcon, + Program, + versionText, + modal=False, + buttons=E5MessageBox.Ok, + parent=self + ) + self.__versionsDialog.setIconPixmap( + UI.PixmapCache.getPixmap("eric.png").scaled(64, 64)) + self.__versionsDialog.show() def __sslErrors(self, reply, errors): """
--- a/Utilities/BackgroundClient.py Tue May 01 12:04:30 2018 +0200 +++ b/Utilities/BackgroundClient.py Sat Jun 02 12:44:41 2018 +0200 @@ -115,7 +115,9 @@ data = self.connection.recv(length, socket.MSG_PEEK) except socket.error: pass - self.connection.setblocking(True) + finally: + self.connection.setblocking(True) + return data def __cancelled(self): @@ -127,7 +129,7 @@ msg = self.__peek(struct.calcsize(b'!II') + 6) if msg[-6:] == b"CANCEL": # get rid of the message data - self.__peek(struct.calcsize(b'!II') + 6) + self.__receive(struct.calcsize(b'!II') + 6) return True else: return False @@ -178,6 +180,8 @@ ret = 'Unknown service.' self.__send(fx, fn, ret) + except socket.error: + pass except Exception: exctype, excval, exctb = sys.exc_info() tbinfofile = io.StringIO() @@ -187,11 +191,12 @@ del exctb self.__send( 'EXCEPTION', '?', [str(exctype), str(excval), tbinfo]) - - # Give time to process latest response on server side - time.sleep(0.5) - self.connection.shutdown(socket.SHUT_RDWR) - self.connection.close() + + finally: + # Give time to process latest response on server side + time.sleep(0.5) + self.connection.shutdown(socket.SHUT_RDWR) + self.connection.close() if __name__ == '__main__': if len(sys.argv) != 4:
--- a/Utilities/PySideImporter.py Tue May 01 12:04:30 2018 +0200 +++ b/Utilities/PySideImporter.py Sat Jun 02 12:44:41 2018 +0200 @@ -4,16 +4,31 @@ # """ -Module to check for the presence of PySide by importing it. +Module to check for the presence of PySide/PySide2 by importing it. """ import sys if __name__ == "__main__": - try: - import PySide # __IGNORE_EXCEPTION__ __IGNORE_WARNING__ - ret = 0 - except ImportError: + pySideVariant = "2" + if len(sys.argv) == 2: + pySideVariant = sys.argv[1].replace("-", "") + + if pySideVariant == "1": + try: + import PySide # __IGNORE_EXCEPTION__ __IGNORE_WARNING__ + ret = 0 + except ImportError: + ret = 1 + + elif pySideVariant == "2": + try: + import PySide2 # __IGNORE_EXCEPTION__ __IGNORE_WARNING__ + ret = 0 + except ImportError: + ret = 1 + + else: ret = 1 sys.exit(ret)
--- a/Utilities/__init__.py Tue May 01 12:04:30 2018 +0200 +++ b/Utilities/__init__.py Sat Jun 02 12:44:41 2018 +0200 @@ -63,9 +63,10 @@ # import these methods into the Utilities namespace from Globals import ( # __IGNORE_WARNING__ - isWindowsPlatform, isLinuxPlatform, isMacPlatform, getConfigDir, - setConfigDir, getPythonModulesDirectory, getPyQt5ModulesDirectory, - getQtBinariesPath, getPyQtToolsPath, qVersionTuple) + isWindowsPlatform, isLinuxPlatform, isMacPlatform, desktopName, + getConfigDir, setConfigDir, getPythonModulesDirectory, + getPyQt5ModulesDirectory, getQtBinariesPath, getPyQtToolsPath, + qVersionTuple) from E5Gui.E5Application import e5App @@ -1216,12 +1217,11 @@ if checkStop and checkStop(): break - if entry in ['CVS', 'cvs', - '.svn', '_svn', - '.hg', '_hg', - '.ropeproject', '_ropeproject', - '.eric6project', '_eric6project', - '.issues', '_issues']: + if entry in ['.svn', + '.hg', + '.git', + '.ropeproject', + '.eric6project']: continue fentry = os.path.join(path, entry) @@ -1747,21 +1747,27 @@ return exe ############################################################################### -# PySide utility functions below +# PySide/PySide2 utility functions below ############################################################################### -def generatePySideToolPath(toolname): +def generatePySideToolPath(toolname, variant="2"): """ - Module function to generate the executable path for a PySide tool. + Module function to generate the executable path for a PySide/PySide2 tool. - @param toolname base name of the tool (string) - @return the PySide tool path with extension (string) + @param toolname base name of the tool + @type str + @param variant indicator for the PySide variant + @type str + @return the PySide/PySide2 tool path with extension + @rtype str """ + assert variant in ("1", "2") + if isWindowsPlatform(): - pysideInterpreter = checkPyside() + pysideInterpreters = checkPyside(variant) interpreter = sys.version_info[0] - 2 - hasPyside = pysideInterpreter[interpreter] + hasPyside = pysideInterpreters[interpreter] # if it isn't the internal interpreter, it has to be the external one if not hasPyside: interpreter = not interpreter @@ -1771,22 +1777,37 @@ else: prefix = os.path.dirname( Preferences.getDebugger("PythonInterpreter")) - if toolname == "pyside-uic": + if toolname in ["pyside-uic", "pyside2-uic"]: return os.path.join(prefix, "Scripts", toolname + '.exe') else: - return os.path.join(prefix, "Lib", "site-packages", "PySide", - toolname + ".exe") + return os.path.join( + prefix, "Lib", "site-packages", + "PySide{0}".format("" if variant == "1" else variant), + toolname + ".exe") else: - return toolname + if variant == "1": + return toolname + + elif toolname == "pyside2-uic": + return toolname + else: + import distutils.sysconfig + return os.path.join(distutils.sysconfig.get_python_lib(True), + "PySide2", toolname) -def checkPyside(): +def checkPyside(variant="2"): """ - Module function to check the presence of PySide. + Module function to check the presence of PySide/PySide2. - @return list of two flags indicating the presence of PySide for Python2 - and PySide for Python3 (boolean, boolean) + @param variant indicator for the PySide variant + @type str + @return list of two flags indicating the presence of PySide/PySide2 for + Python2 and PySide/PySide2 for Python3 + @rtype tuple of (bool, bool) """ + assert variant in ("1", "2") + pysideInformation = [] for interpreterName in ["PythonInterpreter", "Python3Interpreter"]: interpreter = Preferences.getDebugger(interpreterName) @@ -1796,7 +1817,7 @@ hasPyside = False checker = os.path.join(getConfig('ericDir'), "Utilities", "PySideImporter.py") - args = [checker] + args = [checker, "-" + variant] proc = QProcess() proc.setProcessChannelMode(QProcess.MergedChannels) proc.start(interpreter, args) @@ -1849,6 +1870,10 @@ Program, Version, linesep * 2) info += "Platform: {0}{1}{2}{3}".format( sys.platform, linesep, sys.version, linesep) + desktop = desktopName() + if desktop: + info += linesep + info += "Desktop: {0}{1}".format(desktop, linesep) return info
--- a/VCS/__init__.py Tue May 01 12:04:30 2018 +0200 +++ b/VCS/__init__.py Sat Jun 02 12:44:41 2018 +0200 @@ -10,7 +10,7 @@ The general part of the VCS interface defines classes to implement common dialogs. These are a dialog to enter command options, a dialog to display some repository information and an abstract base class. The individual -interfaces (i.e. CVS) have to be subclasses of this base class. +interfaces have to be subclasses of this base class. """ from __future__ import unicode_literals
--- a/ViewManager/ViewManager.py Tue May 01 12:04:30 2018 +0200 +++ b/ViewManager/ViewManager.py Sat Jun 02 12:44:41 2018 +0200 @@ -5901,7 +5901,7 @@ curLine = aw.getCursorPosition()[0] + 1 dlg = GotoDialog(lines, curLine, self.ui, None, True) if dlg.exec_() == QDialog.Accepted: - aw.gotoLine(dlg.getLinenumber()) + aw.gotoLine(dlg.getLinenumber(), expand=True) def __gotoBrace(self): """ @@ -6075,8 +6075,7 @@ """ aw = self.activeWindow() if aw: - line, index = aw.getCursorPosition() - aw.foldLine(line) + aw.toggleCurrentFold() def __newDocumentView(self): """
--- a/WebBrowser/Download/DownloadItem.py Tue May 01 12:04:30 2018 +0200 +++ b/WebBrowser/Download/DownloadItem.py Sat Jun 02 12:44:41 2018 +0200 @@ -46,7 +46,7 @@ DownloadSuccessful = 1 DownloadCancelled = 2 - def __init__(self, downloadItem=None, pageUrl="", parent=None): + def __init__(self, downloadItem=None, pageUrl=None, parent=None): """ Constructor @@ -83,7 +83,10 @@ self.fileIcon.setPixmap(icon.pixmap(48, 48)) self.__downloadItem = downloadItem - self.__pageUrl = pageUrl + if pageUrl is None: + self.__pageUrl = QUrl() + else: + self.__pageUrl = pageUrl self.__bytesReceived = 0 self.__bytesTotal = -1 self.__downloadTime = QTime()
--- a/WebBrowser/Download/DownloadManager.py Tue May 01 12:04:30 2018 +0200 +++ b/WebBrowser/Download/DownloadManager.py Sat Jun 02 12:44:41 2018 +0200 @@ -260,8 +260,11 @@ downloadItem.cancel() return - pageUrl = \ - WebBrowserWindow.mainWindow().getWindow().currentBrowser().url() + window = WebBrowserWindow.getWindow() + if window: + pageUrl = window.currentBrowser().url() + else: + pageUrl = QUrl() from .DownloadItem import DownloadItem itm = DownloadItem(downloadItem=downloadItem, pageUrl=pageUrl, parent=self)
--- a/WebBrowser/Network/NetworkUrlInterceptor.py Tue May 01 12:04:30 2018 +0200 +++ b/WebBrowser/Network/NetworkUrlInterceptor.py Sat Jun 02 12:44:41 2018 +0200 @@ -10,8 +10,9 @@ from __future__ import unicode_literals -from PyQt5.QtCore import QMutex, QMutexLocker -from PyQt5.QtWebEngineCore import QWebEngineUrlRequestInterceptor +from PyQt5.QtCore import QMutex, QMutexLocker, QUrl +from PyQt5.QtWebEngineCore import QWebEngineUrlRequestInterceptor, \ + QWebEngineUrlRequestInfo from ..WebBrowserPage import WebBrowserPage @@ -50,10 +51,10 @@ info.setHttpHeader(b"DNT", b"1") info.setHttpHeader(b"X-Do-Not-Track", b"1") - # Send referer header? - if not self.__sendReferer and info.requestUrl().host() not in \ + # Send referrer header? + if info.requestUrl().host() not in \ Preferences.getWebBrowser("SendRefererWhitelist"): - info.setHttpHeader(b"Referer", b"") + self.__setRefererHeader(info) # User Agents header userAgent = WebBrowserPage.userAgentForUrl(info.requestUrl()) @@ -93,10 +94,174 @@ locker = QMutexLocker(self.__mutex) # __IGNORE_WARNING__ self.__doNotTrack = Preferences.getWebBrowser("DoNotTrack") - self.__sendReferer = Preferences.getWebBrowser("SendReferer") + self.__sendReferer = Preferences.getWebBrowser("RefererSendReferer") + self.__refererDefaultPolicy = \ + Preferences.getWebBrowser("RefererDefaultPolicy") + self.__refererTrimmingPolicy = \ + Preferences.getWebBrowser("RefererTrimmingPolicy") def preferencesChanged(self): """ Public slot to handle a change of preferences. """ self.__loadSettings() + + def __setRefererHeader(self, info): + """ + Private method to set the 'Referer' header depending on the configured + rule set. + + @param info URL request information + @type QWebEngineUrlRequestInfo + @see <a href="https://wiki.mozilla.org/Security/Referrer"> + Mozilla Referrer</a> + @see <a href="https://www.w3.org/TR/referrer-policy/"> + W3C Referrer Policy</a> + """ + # 1. SendReferer: + # 0 = never + # 1 = only on click (NavigationTypeLink) + # 2 = always (default) + # 2. RefererTrimmingPolicy: + # 0 = send full URL (no trimming) (default) + # 1 = send the URL without its query string + # 2 = only send the origin (ensure trailing /) + # 3. RefererDefaultPolicy: + # set the default referrer policy (which can be overriden by + # the site) + # 0 = no-referrer + # 1 = same-origin + # 2 = strict-origin-when-cross-origin + # 3 = no-referrer-when-downgrade (default) + # see: https://wiki.mozilla.org/Security/Referrer + # see: https://www.w3.org/TR/referrer-policy/ + + if self.__sendReferer == 0: + # never send referer header + info.setHttpHeader(b"Referer", b"") + elif (self.__sendReferer == 1 and + info.navigationType() != + QWebEngineUrlRequestInfo.NavigationTypeLink): + # send referer header only on click + info.setHttpHeader(b"Referer", b"") + else: + # send referer header always applying further policies + url = info.firstPartyUrl() + reqUrl = info.requestUrl() + if self.__refererDefaultPolicy == 0: + # no-referrer + refererUrl = b"" + elif self.__refererDefaultPolicy == 1: + # same-origin + if self.__sameOrigin(url, reqUrl): + refererUrl = self.__trimmedReferer(url) + else: + refererUrl = b"" + elif self.__refererDefaultPolicy == 2: + # strict-origin-when-cross-origin + if self.__sameOrigin(url, reqUrl): + refererUrl = self.__trimmedReferer(url) + elif url.scheme() in ("https", "wss"): + if self.__potentiallyTrustworthy(url): + refererUrl = self.__refererOrigin(url) + else: + refererUrl = b"" + else: + refererUrl = self.__refererOrigin(url) + else: + # no-referrer-when-downgrade + if url.scheme() in ("https", "wss") and \ + not self.__potentiallyTrustworthy(url): + refererUrl = b"" + else: + refererUrl = self.__trimmedReferer(url) + + info.setHttpHeader(b"Referer", refererUrl) + + def __sameOrigin(self, url1, url2): + """ + Private method to test the "same origin" policy. + + @param url1 first URL for the test + @type QUrl + @param url2 second URL for the test + @type QUrl + @return flag indicating that both URLs have the same origin + @rtype bool + """ + origin1 = url1.url(QUrl.RemoveUserInfo | QUrl.RemovePath) + origin2 = url2.url(QUrl.RemoveUserInfo | QUrl.RemovePath) + + return origin1 == origin2 + + def __potentiallyTrustworthy(self, url): + """ + Private method to check, if the given URL is potentially trustworthy. + + @param url URL to be checked + @type QUrl + @return flag indicating a potentially trustworthy URL + @rtype bool + """ + if url.scheme() == "data": + return False + + if url.toString() in ("about:blank", "about:srcdoc"): + return True + + origin = url.adjusted(QUrl.RemoveUserInfo | QUrl.RemovePath) + + if origin.isEmpty() or origin.scheme() == "": + return False + if origin.scheme() in ("https", "wss"): + return True + if origin.host().startswith("127.") or origin.host().endswith(":1"): + return True + if origin.host() == "localhost" or \ + origin.host().endswith(".localhost"): + return True + if origin.scheme() == "file": + return True + if origin.scheme() in ("qrc", "qthelp", "eric"): + return True + + return False + + def __trimmedReferer(self, url): + """ + Private method to generate the trimmed referer header URL. + + @param url URL to be trimmed as a referer header + @type QUrl + @return trimmed referer header URL + @rtype QByteArray or bytes + """ + if self.__refererTrimmingPolicy == 0: + # send full URL (no trimming) (default) + refererUrl = url.toEncoded( + QUrl.RemoveUserInfo | QUrl.RemoveFragment) + elif self.__refererTrimmingPolicy == 1: + # send the URL without its query string + refererUrl = url.toEncoded( + QUrl.RemoveUserInfo | QUrl.RemoveFragment | + QUrl.RemoveQuery) + else: + # only send the origin (ensure trailing /) + refererUrl = self.__refererOrigin(url) + + return refererUrl + + def __refererOrigin(self, url): + """ + Private method to generate an origin referer header URL. + + @param url URL to generate the header from + @type QUrl + @return origin referer header URL + @rtype QByteArray or bytes + """ + referer = url.toEncoded(QUrl.RemoveUserInfo | QUrl.RemovePath) + if not referer.endsWith(b"/"): + referer += b"/" + + return referer
--- a/WebBrowser/WebBrowserWindow.py Tue May 01 12:04:30 2018 +0200 +++ b/WebBrowser/WebBrowserWindow.py Sat Jun 02 12:44:41 2018 +0200 @@ -409,8 +409,11 @@ if not Preferences.getWebBrowser("StatusBarVisible"): self.statusBar().hide() - QDesktopServices.setUrlHandler("http", self.__linkActivated) - QDesktopServices.setUrlHandler("https", self.__linkActivated) + if not self.__fromEric and len(WebBrowserWindow.BrowserWindows): + QDesktopServices.setUrlHandler( + "http", WebBrowserWindow.BrowserWindows[0].urlHandler) + QDesktopServices.setUrlHandler( + "https", WebBrowserWindow.BrowserWindows[0].urlHandler) # setup connections self.__activating = False @@ -2851,9 +2854,22 @@ Preferences.setGeometry("WebBrowserGeometry", QByteArray()) try: + browserIndex = WebBrowserWindow.BrowserWindows.index(self) + if not self.__fromEric and len(WebBrowserWindow.BrowserWindows): + if browserIndex == 0: + if len(WebBrowserWindow.BrowserWindows) > 1: + # first window will be deleted + QDesktopServices.setUrlHandler( + "http", + WebBrowserWindow.BrowserWindows[1].urlHandler) + QDesktopServices.setUrlHandler( + "https", + WebBrowserWindow.BrowserWindows[1].urlHandler) + else: + QDesktopServices.unsetUrlHandler("http") + QDesktopServices.unsetUrlHandler("https") if self.__fromEric or len(WebBrowserWindow.BrowserWindows) > 0: - del WebBrowserWindow.BrowserWindows[ - WebBrowserWindow.BrowserWindows.index(self)] + del WebBrowserWindow.BrowserWindows[browserIndex] except ValueError: pass @@ -3394,11 +3410,22 @@ WebIconProvider.instance().showWebIconDialog() @pyqtSlot(QUrl) + def urlHandler(self, url): + """ + Public slot used as desktop URL handler. + + @param url URL to be handled + @type QUrl + """ + self.__linkActivated(url) + + @pyqtSlot(QUrl) def __linkActivated(self, url): """ Private slot to handle the selection of a link. - @param url URL to be shown (QUrl) + @param url URL to be shown + @type QUrl """ if not self.__activating: self.__activating = True
--- a/WebBrowser/WebInspector.py Tue May 01 12:04:30 2018 +0200 +++ b/WebBrowser/WebInspector.py Sat Jun 02 12:44:41 2018 +0200 @@ -106,26 +106,30 @@ Private slot handling the reply. """ result = str(self.__reply.readAll(), encoding="utf8") - clients = json.loads(result) self.__reply.deleteLater() - self.__replay = None + self.__reply = None pageUrl = QUrl() try: index = _VIEWS.index(self.__view) except ValueError: index = -1 - if len(clients) > index: - port = Preferences.getWebBrowser("WebInspectorPort") - inspectorUrl = QUrl("http://localhost:{0}".format(port)) - - client = clients[index] - pageUrl = inspectorUrl.resolved( - QUrl(client["devtoolsFrontendUrl"])) - self.load(pageUrl) - pushView(self) - self.show() + try: + clients = json.loads(result) + if len(clients) > index: + port = Preferences.getWebBrowser("WebInspectorPort") + inspectorUrl = QUrl("http://localhost:{0}".format(port)) + + client = clients[index] + pageUrl = inspectorUrl.resolved( + QUrl(client["devtoolsFrontendUrl"])) + self.load(pageUrl) + pushView(self) + self.show() + except json.JSONDecodeError: + # ignore silently + pass def inspectElement(self): """
--- a/changelog Tue May 01 12:04:30 2018 +0200 +++ b/changelog Sat Jun 02 12:44:41 2018 +0200 @@ -1,5 +1,22 @@ Change Log ---------- +Version 18.06: +- bug fixes +- Editor + -- added a configuration option (Editor->Style page) to show the marker map + on the left or right of the editor + -- added a context menu for the "fold" margin + -- improved handling of folded lines when using "go to" functions + -- resize auto complete list box to fit with contents + -- added a configuration option (Editor->autocomplete to set up maximum + width and height of the auto complete list box +- Shell + -- resize auto complete list box to fit with contents +- pip Interface + -- added an action to install a locally available package/wheel +- Web Browser (NG) + -- improved the sending of the "Referer" header like it is done by Firefox + Version 18.05: - bug fixes - General
--- a/eric6.e4p Tue May 01 12:04:30 2018 +0200 +++ b/eric6.e4p Sat Jun 02 12:44:41 2018 +0200 @@ -534,11 +534,11 @@ <Source>Plugins/UiExtensionPlugins/PipInterface/ConfigurationPage/__init__.py</Source> <Source>Plugins/UiExtensionPlugins/PipInterface/Pip.py</Source> <Source>Plugins/UiExtensionPlugins/PipInterface/PipDialog.py</Source> + <Source>Plugins/UiExtensionPlugins/PipInterface/PipFileSelectionDialog.py</Source> <Source>Plugins/UiExtensionPlugins/PipInterface/PipFreezeDialog.py</Source> <Source>Plugins/UiExtensionPlugins/PipInterface/PipListDialog.py</Source> <Source>Plugins/UiExtensionPlugins/PipInterface/PipPackageDetailsDialog.py</Source> <Source>Plugins/UiExtensionPlugins/PipInterface/PipPackagesInputDialog.py</Source> - <Source>Plugins/UiExtensionPlugins/PipInterface/PipRequirementsSelectionDialog.py</Source> <Source>Plugins/UiExtensionPlugins/PipInterface/PipSearchDialog.py</Source> <Source>Plugins/UiExtensionPlugins/PipInterface/__init__.py</Source> <Source>Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.py</Source> @@ -1798,11 +1798,11 @@ <Form>Plugins/DocumentationPlugins/Ericdoc/EricdocExecDialog.ui</Form> <Form>Plugins/UiExtensionPlugins/PipInterface/ConfigurationPage/PipPage.ui</Form> <Form>Plugins/UiExtensionPlugins/PipInterface/PipDialog.ui</Form> + <Form>Plugins/UiExtensionPlugins/PipInterface/PipFileSelectionDialog.ui</Form> <Form>Plugins/UiExtensionPlugins/PipInterface/PipFreezeDialog.ui</Form> <Form>Plugins/UiExtensionPlugins/PipInterface/PipListDialog.ui</Form> <Form>Plugins/UiExtensionPlugins/PipInterface/PipPackageDetailsDialog.ui</Form> <Form>Plugins/UiExtensionPlugins/PipInterface/PipPackagesInputDialog.ui</Form> - <Form>Plugins/UiExtensionPlugins/PipInterface/PipRequirementsSelectionDialog.ui</Form> <Form>Plugins/UiExtensionPlugins/PipInterface/PipSearchDialog.ui</Form> <Form>Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.ui</Form> <Form>Plugins/UiExtensionPlugins/Translator/TranslatorWidget.ui</Form> @@ -2203,14 +2203,14 @@ </Resources> <Others> <Other>.hgignore</Other> - <Other>APIs/Python/zope-2.10.7.api</Other> - <Other>APIs/Python/zope-2.11.2.api</Other> - <Other>APIs/Python/zope-3.3.1.api</Other> <Other>APIs/Python3/PyQt4.bas</Other> <Other>APIs/Python3/PyQt5.bas</Other> <Other>APIs/Python3/QScintilla2.bas</Other> <Other>APIs/Python3/eric6.api</Other> <Other>APIs/Python3/eric6.bas</Other> + <Other>APIs/Python/zope-2.10.7.api</Other> + <Other>APIs/Python/zope-2.11.2.api</Other> + <Other>APIs/Python/zope-3.3.1.api</Other> <Other>APIs/QSS/qss.api</Other> <Other>APIs/Ruby/Ruby-1.8.7.api</Other> <Other>APIs/Ruby/Ruby-1.8.7.bas</Other>
--- a/eric6_api.py Tue May 01 12:04:30 2018 +0200 +++ b/eric6_api.py Sat Jun 02 12:44:41 2018 +0200 @@ -132,12 +132,8 @@ except getopt.error: usage() - excludeDirs = ["CVS", ".svn", "_svn", - ".ropeproject", "_ropeproject", - ".eric5project", "_eric5project", - ".eric6project", "_eric6project", - "dist", "build", "doc", "docs" - ] + excludeDirs = [".svn", ".hg", ".git", ".ropeproject", ".eric6project", + "dist", "build", "doc", "docs"] excludePatterns = [] outputFileName = "" recursive = False
--- a/eric6_browser.desktop Tue May 01 12:04:30 2018 +0200 +++ b/eric6_browser.desktop Sat Jun 02 12:44:41 2018 +0200 @@ -1,7 +1,7 @@ [Desktop Entry] Version=1.0 Type=Application -Exec=eric6_browser@MARKER@ +Exec=@BINDIR@/eric6_browser@MARKER@ MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-mimearchive; Icon=ericWeb@MARKER@ Terminal=false
--- a/eric6_doc.py Tue May 01 12:04:30 2018 +0200 +++ b/eric6_doc.py Sat Jun 02 12:44:41 2018 +0200 @@ -170,9 +170,8 @@ except getopt.error: usage() - excludeDirs = ["CVS", ".svn", "_svn", ".ropeproject", "_ropeproject", - ".eric6project", "_eric6project", "dist", "build", "doc", - "docs"] + excludeDirs = [".svn", ".hg", ".git", ".ropeproject", ".eric6project", + "dist", "build", "doc", "docs"] excludePatterns = [] outputDir = "doc" recursive = False
--- a/eric6_webbrowser.desktop Tue May 01 12:04:30 2018 +0200 +++ b/eric6_webbrowser.desktop Sat Jun 02 12:44:41 2018 +0200 @@ -1,7 +1,7 @@ [Desktop Entry] Version=1.0 Type=Application -Exec=eric6_webbrowser@MARKER@ +Exec=@BINDIR@/eric6_webbrowser@MARKER@ MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https; Icon=ericWeb@MARKER@ Terminal=false
--- a/i18n/eric6_cs.ts Tue May 01 12:04:30 2018 +0200 +++ b/i18n/eric6_cs.ts Sat Jun 02 12:44:41 2018 +0200 @@ -36,42 +36,42 @@ <context> <name>AboutPlugin</name> <message> - <location filename="../Plugins/PluginAbout.py" line="85"/> + <location filename="../Plugins/PluginAbout.py" line="87"/> <source>Display information about this software</source> <translation>Zobrazit informace a tomto software</translation> </message> <message> - <location filename="../Plugins/PluginAbout.py" line="95"/> + <location filename="../Plugins/PluginAbout.py" line="97"/> <source>About Qt</source> <translation>O Qt</translation> </message> <message> - <location filename="../Plugins/PluginAbout.py" line="95"/> + <location filename="../Plugins/PluginAbout.py" line="97"/> <source>About &Qt</source> <translation>O &Qt</translation> </message> <message> - <location filename="../Plugins/PluginAbout.py" line="99"/> - <source>Display information about the Qt toolkit</source> - <translation>Zobrazit informace o Qt toolkitu</translation> - </message> - <message> <location filename="../Plugins/PluginAbout.py" line="101"/> + <source>Display information about the Qt toolkit</source> + <translation>Zobrazit informace o Qt toolkitu</translation> + </message> + <message> + <location filename="../Plugins/PluginAbout.py" line="103"/> <source><b>About Qt</b><p>Display some information about the Qt toolkit.</p></source> <translation><b>O Qt</b><p>Zobrazit informace o Qt toolkitu.</p></translation> </message> <message> - <location filename="../Plugins/PluginAbout.py" line="80"/> + <location filename="../Plugins/PluginAbout.py" line="82"/> <source>About {0}</source> <translation>O aplikaci {0}</translation> </message> <message> - <location filename="../Plugins/PluginAbout.py" line="80"/> + <location filename="../Plugins/PluginAbout.py" line="82"/> <source>&About {0}</source> <translation>O &aplikaci {0}</translation> </message> <message> - <location filename="../Plugins/PluginAbout.py" line="87"/> + <location filename="../Plugins/PluginAbout.py" line="89"/> <source><b>About {0}</b><p>Display some information about this software.</p></source> <translation><b>O aplikaci {0}</b><p>Zobrazí informace o tomto software.</p></translation> </message> @@ -3072,59 +3072,59 @@ <context> <name>CodeDocumentationViewer</name> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="231"/> + <location filename="../UI/CodeDocumentationViewer.py" line="237"/> <source>Code Info Provider:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="244"/> + <location filename="../UI/CodeDocumentationViewer.py" line="250"/> <source>Select the code info provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="246"/> + <location filename="../UI/CodeDocumentationViewer.py" line="252"/> <source><disabled></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="275"/> + <location filename="../UI/CodeDocumentationViewer.py" line="281"/> <source>Main Menu</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="285"/> + <location filename="../UI/CodeDocumentationViewer.py" line="291"/> <source>Rich Text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="290"/> + <location filename="../UI/CodeDocumentationViewer.py" line="296"/> <source>Plain Text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="446"/> + <location filename="../UI/CodeDocumentationViewer.py" line="471"/> <source>No documentation available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="473"/> + <location filename="../UI/CodeDocumentationViewer.py" line="498"/> <source>Definition: {0}{1} </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="476"/> + <location filename="../UI/CodeDocumentationViewer.py" line="501"/> <source>Definition: {0} </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="523"/> + <location filename="../UI/CodeDocumentationViewer.py" line="548"/> <source>No source code documentation provider has been registered. This function has been disabled.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="528"/> + <location filename="../UI/CodeDocumentationViewer.py" line="553"/> <source>This function has been disabled.</source> <translation type="unfinished"></translation> </message> @@ -3146,13 +3146,13 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="484"/> + <location filename="../UI/CodeDocumentationViewer.py" line="509"/> <source>Type: {0} </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/CodeDocumentationViewer.py" line="492"/> + <location filename="../UI/CodeDocumentationViewer.py" line="517"/> <source>Note: {0} </source> <translation type="unfinished"></translation> @@ -4141,7 +4141,7 @@ <context> <name>CodingError</name> <message> - <location filename="../Utilities/__init__.py" line="123"/> + <location filename="../Utilities/__init__.py" line="124"/> <source>The coding '{0}' is wrong for the given text.</source> <translation>Nesprávné kódování '{0}' pro daný text.</translation> </message> @@ -5562,7 +5562,7 @@ <translation>&Filtr pro:</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="562"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="570"/> <source>Code Generation</source> <translation>Generování kódu</translation> </message> @@ -5587,17 +5587,17 @@ <translation><p>Byla nalezena chyba načtená z <b>{0}</b>.</p><p>{1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="428"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="436"/> <source><p>Could not open the code template file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Template soubor <b>{0}</b> nelze otevřít.</p><p>Důvod: {1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="464"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="472"/> <source><p>Could not open the source file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Nelze ovevřít source soubor "{0}".</p><p>Důvod: {1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="562"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="570"/> <source><p>Could not write the source file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Nelze zapsat do source souboru "{0}".</p><p>Důvod: {1}</p></translation> </message> @@ -8527,17 +8527,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="268"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="271"/> <source>Download canceled: {0}</source> <translation type="unfinished">Download zrušen: {0}</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="214"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="217"/> <source>Save File</source> <translation type="unfinished">Uložit soubor</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="297"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="300"/> <source>Download directory ({0}) couldn't be created.</source> <translation type="unfinished"></translation> </message> @@ -8557,17 +8557,17 @@ <translation type="unfinished">Chyba sítě: {0}</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="488"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="491"/> <source>?</source> <translation type="unfinished">?</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="499"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="502"/> <source>{0} of {1} - Stopped</source> <translation type="unfinished">{0} z {1} - zastaveno</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="199"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="202"/> <source>VirusTotal scan scheduled: {0}</source> <translation type="unfinished"></translation> </message> @@ -8590,27 +8590,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="496"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="499"/> <source>{0} downloaded</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="225"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="228"/> <source>Web Archive (*.mhtml *.mht)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="226"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="229"/> <source>HTML File (*.html *.htm)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="227"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="230"/> <source>HTML File with all resources (*.html *.htm)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="237"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="240"/> <source>Save Web Page</source> <translation type="unfinished"></translation> </message> @@ -8620,7 +8620,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="487"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="490"/> <source>{0} of {1} ({2}/sec) {3}</source> <translation type="unfinished"></translation> </message> @@ -8726,22 +8726,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadManager.py" line="572"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="575"/> <source>Download Manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadManager.py" line="484"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="487"/> <source>Downloads finished</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadManager.py" line="484"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="487"/> <source>All files have been downloaded.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/Download/DownloadManager.py" line="604"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="607"/> <source>{0}% of %n file(s) ({1}) {2}</source> <translation type="unfinished"> <numerusform></numerusform> @@ -8750,7 +8750,7 @@ </translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadManager.py" line="611"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="614"/> <source>{0}% - Download Manager</source> <translation type="unfinished"></translation> </message> @@ -10340,97 +10340,97 @@ <context> <name>Editor</name> <message> - <location filename="../QScintilla/Editor.py" line="3004"/> + <location filename="../QScintilla/Editor.py" line="2942"/> <source>Open File</source> <translation>Otevřít soubor</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="755"/> + <location filename="../QScintilla/Editor.py" line="750"/> <source>Undo</source> <translation>Vrátit</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="758"/> + <location filename="../QScintilla/Editor.py" line="753"/> <source>Redo</source> <translation>Znovu použít</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="761"/> + <location filename="../QScintilla/Editor.py" line="756"/> <source>Revert to last saved state</source> <translation>Vrátit k poslednímu uloženému stavu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="765"/> + <location filename="../QScintilla/Editor.py" line="760"/> <source>Cut</source> <translation>Vyjmout</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="768"/> + <location filename="../QScintilla/Editor.py" line="763"/> <source>Copy</source> <translation>Kopírovat</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="771"/> + <location filename="../QScintilla/Editor.py" line="766"/> <source>Paste</source> <translation>Vložit</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="779"/> + <location filename="../QScintilla/Editor.py" line="774"/> <source>Indent</source> <translation>Odsadit</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="782"/> + <location filename="../QScintilla/Editor.py" line="777"/> <source>Unindent</source> <translation>Zrušit odsazení</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="785"/> + <location filename="../QScintilla/Editor.py" line="780"/> <source>Comment</source> <translation>Vytvořit komentář</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="788"/> + <location filename="../QScintilla/Editor.py" line="783"/> <source>Uncomment</source> <translation>Zrušit komentář</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="791"/> + <location filename="../QScintilla/Editor.py" line="786"/> <source>Stream Comment</source> <translation>Proudový komentář</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="794"/> + <location filename="../QScintilla/Editor.py" line="789"/> <source>Box Comment</source> <translation>Obdélníkový komentář</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="798"/> + <location filename="../QScintilla/Editor.py" line="793"/> <source>Select to brace</source> <translation>Vybrat až po závorku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="800"/> + <location filename="../QScintilla/Editor.py" line="795"/> <source>Select all</source> <translation>Vybrat vše</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="801"/> + <location filename="../QScintilla/Editor.py" line="796"/> <source>Deselect all</source> <translation>Zrušit celý výběr</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="817"/> + <location filename="../QScintilla/Editor.py" line="812"/> <source>Shorten empty lines</source> <translation>Zkrátit prázdné řádky</translation> </message> <message> + <location filename="../QScintilla/Editor.py" line="819"/> + <source>Use Monospaced Font</source> + <translation>Použít neporoporcionální font</translation> + </message> + <message> <location filename="../QScintilla/Editor.py" line="824"/> - <source>Use Monospaced Font</source> - <translation>Použít neporoporcionální font</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="829"/> <source>Autosave enabled</source> <translation>Zapnout autosave</translation> </message> @@ -10440,22 +10440,22 @@ <translation type="obsolete">Zapnout autodoplňování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="872"/> + <location filename="../QScintilla/Editor.py" line="867"/> <source>Close</source> <translation>Zavřít</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="878"/> + <location filename="../QScintilla/Editor.py" line="873"/> <source>Save</source> <translation>Uložit</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="881"/> + <location filename="../QScintilla/Editor.py" line="876"/> <source>Save As...</source> <translation>Uložit jako...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="897"/> + <location filename="../QScintilla/Editor.py" line="892"/> <source>Print</source> <translation>Tisk</translation> </message> @@ -10465,447 +10465,447 @@ <translation type="obsolete">Autodoplňování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="926"/> + <location filename="../QScintilla/Editor.py" line="921"/> <source>Complete from Document</source> <translation type="unfinished">z dokumentu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="928"/> + <location filename="../QScintilla/Editor.py" line="923"/> <source>Complete from APIs</source> <translation type="unfinished">z API</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="930"/> + <location filename="../QScintilla/Editor.py" line="925"/> <source>Complete from Document and APIs</source> <translation type="unfinished">z dokumentu a API</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="944"/> + <location filename="../QScintilla/Editor.py" line="939"/> <source>Check</source> <translation>Zkontrolovat</translation> </message> <message> + <location filename="../QScintilla/Editor.py" line="959"/> + <source>Show</source> + <translation>Zobrazit</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="961"/> + <source>Code metrics...</source> + <translation>Metrika kódu...</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="962"/> + <source>Code coverage...</source> + <translation>Pokrytí kódu...</translation> + </message> + <message> <location filename="../QScintilla/Editor.py" line="964"/> - <source>Show</source> - <translation>Zobrazit</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="966"/> - <source>Code metrics...</source> - <translation>Metrika kódu...</translation> + <source>Show code coverage annotations</source> + <translation>Zobrazit poznámky pokrytí kódu</translation> </message> <message> <location filename="../QScintilla/Editor.py" line="967"/> - <source>Code coverage...</source> - <translation>Pokrytí kódu...</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="969"/> - <source>Show code coverage annotations</source> - <translation>Zobrazit poznámky pokrytí kódu</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="972"/> <source>Hide code coverage annotations</source> <translation>Skrýt poznámky pokrytí kódu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="975"/> + <location filename="../QScintilla/Editor.py" line="970"/> <source>Profile data...</source> <translation>Profilovat data...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="988"/> + <location filename="../QScintilla/Editor.py" line="983"/> <source>Diagrams</source> <translation>Diagramy</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="990"/> + <location filename="../QScintilla/Editor.py" line="985"/> <source>Class Diagram...</source> <translation>Diagram třídy...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="992"/> + <location filename="../QScintilla/Editor.py" line="987"/> <source>Package Diagram...</source> <translation>Diagram balíčku...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="994"/> + <location filename="../QScintilla/Editor.py" line="989"/> <source>Imports Diagram...</source> <translation>Diagram importů...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="996"/> + <location filename="../QScintilla/Editor.py" line="991"/> <source>Application Diagram...</source> <translation>Diagram aplikace...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1014"/> + <location filename="../QScintilla/Editor.py" line="1009"/> <source>Languages</source> <translation>Jazyky</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1017"/> + <location filename="../QScintilla/Editor.py" line="1012"/> <source>No Language</source> <translation>Žádný jazyk</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1268"/> + <location filename="../QScintilla/Editor.py" line="1156"/> <source>Toggle bookmark</source> <translation>Přepnout záložku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1270"/> + <location filename="../QScintilla/Editor.py" line="1158"/> <source>Next bookmark</source> <translation>Následující záložka</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1272"/> + <location filename="../QScintilla/Editor.py" line="1160"/> <source>Previous bookmark</source> <translation>Předchozí záložka</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1274"/> + <location filename="../QScintilla/Editor.py" line="1162"/> <source>Clear all bookmarks</source> <translation>Zrušit všechny záložky</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1277"/> + <location filename="../QScintilla/Editor.py" line="1230"/> <source>Goto syntax error</source> <translation>Jít na chybu syntaxe</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1279"/> + <location filename="../QScintilla/Editor.py" line="1233"/> <source>Show syntax error message</source> <translation>Zobrazit hlášení syntaktické chyby</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1281"/> + <location filename="../QScintilla/Editor.py" line="1237"/> <source>Clear syntax error</source> <translation>Zrušit chybu syntaxe</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1294"/> + <location filename="../QScintilla/Editor.py" line="1171"/> <source>Toggle breakpoint</source> <translation>Přepnout breakpoint</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1296"/> + <location filename="../QScintilla/Editor.py" line="1173"/> <source>Toggle temporary breakpoint</source> <translation>Přepnout dočasný breakpoint</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1299"/> + <location filename="../QScintilla/Editor.py" line="1176"/> <source>Edit breakpoint...</source> <translation>Editovat breakpoint...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5417"/> + <location filename="../QScintilla/Editor.py" line="5305"/> <source>Enable breakpoint</source> <translation>Aktivovat breakpoint</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1304"/> + <location filename="../QScintilla/Editor.py" line="1181"/> <source>Next breakpoint</source> <translation>Následující breakpoint</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1306"/> + <location filename="../QScintilla/Editor.py" line="1184"/> <source>Previous breakpoint</source> <translation>Předchozí breakpoint</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1308"/> + <location filename="../QScintilla/Editor.py" line="1187"/> <source>Clear all breakpoints</source> <translation>Zrušit všechny breakpointy</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1311"/> + <location filename="../QScintilla/Editor.py" line="1254"/> <source>Next uncovered line</source> <translation>Následující odkrytá řádka</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1314"/> + <location filename="../QScintilla/Editor.py" line="1257"/> <source>Previous uncovered line</source> <translation>Předchozí odkrytá řádka</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1317"/> + <location filename="../QScintilla/Editor.py" line="1261"/> <source>Next task</source> <translation>Následující úloha</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1319"/> + <location filename="../QScintilla/Editor.py" line="1264"/> <source>Previous task</source> <translation>Předchozí úloha</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1331"/> + <location filename="../QScintilla/Editor.py" line="1364"/> <source>LMB toggles bookmarks</source> - <translation>LMB přepínač záložek</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1335"/> + <translation type="obsolete">LMB přepínač záložek</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1368"/> <source>LMB toggles breakpoints</source> - <translation>LMB přepínač breakpointů</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1879"/> + <translation type="obsolete">LMB přepínač breakpointů</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1816"/> <source>Modification of Read Only file</source> <translation>Modifikace souboru otevřeného jen pro čtení</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1879"/> + <location filename="../QScintilla/Editor.py" line="1816"/> <source>You are attempting to change a read only file. Please save to a different file first.</source> <translation>Pokoušíte se změnit soubor, který je otevřen jen pro čtení. Prosím, uložte jej nejdříve do jiného souboru.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="2564"/> + <location filename="../QScintilla/Editor.py" line="2502"/> <source>Printing...</source> <translation>Tisk...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="2581"/> + <location filename="../QScintilla/Editor.py" line="2519"/> <source>Printing completed</source> <translation>Tisk je hotov</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="2583"/> + <location filename="../QScintilla/Editor.py" line="2521"/> <source>Error while printing</source> <translation>Chyba během tisku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="2586"/> + <location filename="../QScintilla/Editor.py" line="2524"/> <source>Printing aborted</source> <translation>Tisk byl zrušen</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="3177"/> + <location filename="../QScintilla/Editor.py" line="3115"/> <source>Save File</source> <translation>Uložit soubor</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="2944"/> + <location filename="../QScintilla/Editor.py" line="2882"/> <source>File Modified</source> <translation>Soubor je modifikován</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="4610"/> + <location filename="../QScintilla/Editor.py" line="4518"/> <source>Autocompletion</source> <translation>Autodoplňování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="4610"/> + <location filename="../QScintilla/Editor.py" line="4518"/> <source>Autocompletion is not available because there is no autocompletion source set.</source> <translation>Autodoplňování není dostupné protože zdrojová část autodoplňování nebyla nalezena.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5420"/> + <location filename="../QScintilla/Editor.py" line="5308"/> <source>Disable breakpoint</source> <translation>Deaktivovat breakpoint</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5797"/> + <location filename="../QScintilla/Editor.py" line="5665"/> <source>Code Coverage</source> <translation>Pokrytí kódu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5797"/> + <location filename="../QScintilla/Editor.py" line="5665"/> <source>Please select a coverage file</source> <translation>Prosím, vyberte soubor s pokrytím kódu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5860"/> + <location filename="../QScintilla/Editor.py" line="5728"/> <source>Show Code Coverage Annotations</source> <translation>Zobrazit poznámky pokrytí kódu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5853"/> + <location filename="../QScintilla/Editor.py" line="5721"/> <source>All lines have been covered.</source> <translation>Všechny řádky byly pokryty.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5860"/> + <location filename="../QScintilla/Editor.py" line="5728"/> <source>There is no coverage file available.</source> <translation>Soubor s pokrytím není dostupný.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5975"/> + <location filename="../QScintilla/Editor.py" line="5843"/> <source>Profile Data</source> <translation>Profilovat data</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5975"/> + <location filename="../QScintilla/Editor.py" line="5843"/> <source>Please select a profile file</source> <translation>Prosím, vyberte soubor s profilem</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6135"/> + <location filename="../QScintilla/Editor.py" line="6003"/> <source>Syntax Error</source> <translation>Chyba syntaxe</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6135"/> + <location filename="../QScintilla/Editor.py" line="6003"/> <source>No syntax error message available.</source> <translation>Hlášení syntaktické chyby není dostupné.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6474"/> + <location filename="../QScintilla/Editor.py" line="6391"/> <source>Macro Name</source> <translation>Název makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6474"/> + <location filename="../QScintilla/Editor.py" line="6391"/> <source>Select a macro name:</source> <translation>Vyberte název makra:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6502"/> + <location filename="../QScintilla/Editor.py" line="6419"/> <source>Load macro file</source> <translation>Načíst soubor makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6545"/> + <location filename="../QScintilla/Editor.py" line="6462"/> <source>Macro files (*.macro)</source> <translation>Macro soubory (*.macro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6525"/> + <location filename="../QScintilla/Editor.py" line="6442"/> <source>Error loading macro</source> <translation>Chyba při načítání makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6545"/> + <location filename="../QScintilla/Editor.py" line="6462"/> <source>Save macro file</source> <translation>Uložit soubor s makrem</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6562"/> + <location filename="../QScintilla/Editor.py" line="6479"/> <source>Save macro</source> <translation>Uložit makro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6578"/> + <location filename="../QScintilla/Editor.py" line="6495"/> <source>Error saving macro</source> <translation>Chyba při ukládání makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6591"/> + <location filename="../QScintilla/Editor.py" line="6508"/> <source>Start Macro Recording</source> <translation>Spustit záznam makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6591"/> + <location filename="../QScintilla/Editor.py" line="6508"/> <source>Macro recording is already active. Start new?</source> <translation>Nahrávání makra již probíhá. Spustit nové?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6617"/> + <location filename="../QScintilla/Editor.py" line="6534"/> <source>Macro Recording</source> <translation>Záznam makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6617"/> + <location filename="../QScintilla/Editor.py" line="6534"/> <source>Enter name of the macro:</source> <translation>Vložte název makra:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6755"/> + <location filename="../QScintilla/Editor.py" line="6672"/> <source>File changed</source> <translation>Soubor změněn</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7059"/> + <location filename="../QScintilla/Editor.py" line="6976"/> <source>Drop Error</source> <translation>Zahodit chybu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7080"/> + <location filename="../QScintilla/Editor.py" line="6997"/> <source>Resources</source> <translation>Zdroje</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7082"/> + <location filename="../QScintilla/Editor.py" line="6999"/> <source>Add file...</source> <translation>Přidat soubor...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7084"/> + <location filename="../QScintilla/Editor.py" line="7001"/> <source>Add files...</source> <translation>Přidat soubory...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7086"/> + <location filename="../QScintilla/Editor.py" line="7003"/> <source>Add aliased file...</source> <translation>Přidat zástupce souboru...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7089"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source>Add localized resource...</source> <translation>Přidat lokalizované resource...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7093"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>Add resource frame</source> <translation>Přidat resource frame</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7112"/> + <location filename="../QScintilla/Editor.py" line="7029"/> <source>Add file resource</source> <translation>Přidat soubor resource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7128"/> + <location filename="../QScintilla/Editor.py" line="7045"/> <source>Add file resources</source> <translation>Přidat soubory resource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7156"/> + <location filename="../QScintilla/Editor.py" line="7073"/> <source>Add aliased file resource</source> <translation>Přidat zástupce souboru resource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7220"/> + <location filename="../QScintilla/Editor.py" line="7137"/> <source>Package Diagram</source> <translation>Diagram balíčku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7220"/> + <location filename="../QScintilla/Editor.py" line="7137"/> <source>Include class attributes?</source> <translation>Včetně atributů třídy?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7254"/> + <location filename="../QScintilla/Editor.py" line="7171"/> <source>Application Diagram</source> <translation>Diagram aplikace</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7254"/> + <location filename="../QScintilla/Editor.py" line="7171"/> <source>Include module names?</source> <translation>Včetně jmen modulů?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1139"/> + <location filename="../QScintilla/Editor.py" line="1134"/> <source>Export as</source> <translation>Exportovat jako</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1372"/> + <location filename="../QScintilla/Editor.py" line="1309"/> <source>Export source</source> <translation>Export zdroj</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1372"/> + <location filename="../QScintilla/Editor.py" line="1309"/> <source>No export format given. Aborting...</source> <translation>Nebyl zadán forám exportu. Zrušeno....</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7240"/> + <location filename="../QScintilla/Editor.py" line="7157"/> <source>Imports Diagram</source> <translation>Importovat diagram</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7240"/> + <location filename="../QScintilla/Editor.py" line="7157"/> <source>Include imports from external modules?</source> <translation>Zahrnout importy z externích modulů?</translation> </message> @@ -10915,345 +10915,375 @@ <translation type="obsolete">dynamický</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="848"/> + <location filename="../QScintilla/Editor.py" line="843"/> <source>Calltip</source> <translation>Rychlé tipy</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="894"/> + <location filename="../QScintilla/Editor.py" line="889"/> <source>Print Preview</source> <translation>Náhled tisku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="449"/> + <location filename="../QScintilla/Editor.py" line="444"/> <source><b>A Source Editor Window</b><p>This window is used to display and edit a source file. You can open as many of these as you like. The name of the file is displayed in the window's titlebar.</p><p>In order to set breakpoints just click in the space between the line numbers and the fold markers. Via the context menu of the margins they may be edited.</p><p>In order to set bookmarks just Shift click in the space between the line numbers and the fold markers.</p><p>These actions can be reversed via the context menu.</p><p>Ctrl clicking on a syntax error marker shows some info about this error.</p></source> <translation><b>Okno editoru zdrojového kódu</b><p>V tomto okně se zobrazuje a edituje soubor se zdrojovým kódem. Můžete otevřít oken podle libosti. Jméno souboru se zobrazuje v titlebaru okna.</p><p>Kliknutím do prostoru mezi čísly řádku a značkami skládání nastavíte breakpoint. Přes kontextové menu je pak lze editovat.</p><p>Záložka se vkládá kliknutím na stejné místo se stisknutou klávesou Shift.</p><p>Tyto akce mohou být navráceny zpět i opětovným kliknutím nebo přes kontextové menu.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="833"/> + <location filename="../QScintilla/Editor.py" line="828"/> <source>Typing aids enabled</source> <translation>Pomůcky při psaní zapnuty</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1103"/> + <location filename="../QScintilla/Editor.py" line="1098"/> <source>End-of-Line Type</source> <translation>Typ Konec-řádku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1107"/> + <location filename="../QScintilla/Editor.py" line="1102"/> <source>Unix</source> <translation>Unix</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1114"/> + <location filename="../QScintilla/Editor.py" line="1109"/> <source>Windows</source> <translation></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1121"/> + <location filename="../QScintilla/Editor.py" line="1116"/> <source>Macintosh</source> <translation>Macintosh</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1062"/> + <location filename="../QScintilla/Editor.py" line="1057"/> <source>Encodings</source> <translation>Kódování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1042"/> + <location filename="../QScintilla/Editor.py" line="1037"/> <source>Guessed</source> <translation>Odhadem</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1387"/> + <location filename="../QScintilla/Editor.py" line="1324"/> <source>Alternatives</source> <translation>Alternativy</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1403"/> + <location filename="../QScintilla/Editor.py" line="1340"/> <source>Pygments Lexer</source> <translation></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1403"/> + <location filename="../QScintilla/Editor.py" line="1340"/> <source>Select the Pygments lexer to apply.</source> <translation>Použít Pygments lexer.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7536"/> + <location filename="../QScintilla/Editor.py" line="7453"/> <source>Check spelling...</source> <translation>Zatrhnout kontrolu...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="809"/> + <location filename="../QScintilla/Editor.py" line="804"/> <source>Check spelling of selection...</source> <translation>Zatrhnout výběr kontroly...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7539"/> + <location filename="../QScintilla/Editor.py" line="7456"/> <source>Add to dictionary</source> <translation>Přidat do slovníku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7541"/> + <location filename="../QScintilla/Editor.py" line="7458"/> <source>Ignore All</source> <translation>Ignorovat vše</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="813"/> + <location filename="../QScintilla/Editor.py" line="808"/> <source>Remove from dictionary</source> <translation>Odebrat ze slovníku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="364"/> + <location filename="../QScintilla/Editor.py" line="358"/> <source><p>The size of the file <b>{0}</b> is <b>{1} KB</b>. Do you really want to load it?</p></source> <translation><p>Velikost souboru <b>{0}</b> je <b>{1} KB</b>. Opravdu jej chcete načíst?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1364"/> + <location filename="../QScintilla/Editor.py" line="1301"/> <source><p>No exporter available for the export format <b>{0}</b>. Aborting...</p></source> <translation><p>Pro formát exportu <b>{0}</b> není exportér dostupný. Zrušeno.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1383"/> + <location filename="../QScintilla/Editor.py" line="1320"/> <source>Alternatives ({0})</source> <translation>Alternativy ({0})</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="2944"/> + <location filename="../QScintilla/Editor.py" line="2882"/> <source><p>The file <b>{0}</b> has unsaved changes.</p></source> <translation><p>Soubor <b>{0}</b> obsahuje neuložené změny.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="3004"/> + <location filename="../QScintilla/Editor.py" line="2942"/> <source><p>The file <b>{0}</b> could not be opened.</p><p>Reason: {1}</p></source> <translation><p>Soubor <b>{0}</b> nemůže být přejmenován.<br />Důvod: {1}</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="3118"/> + <location filename="../QScintilla/Editor.py" line="3056"/> <source><p>The file <b>{0}</b> could not be saved.<br/>Reason: {1}</p></source> <translation><p>Soubor <b>{0}</b> nemůže být přejmenován.<br />Důvod: {1}</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6516"/> + <location filename="../QScintilla/Editor.py" line="6433"/> <source><p>The macro file <b>{0}</b> could not be read.</p></source> <translation><p>Soubor s makrem <b>{0}</b> nelze načíst.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6525"/> + <location filename="../QScintilla/Editor.py" line="6442"/> <source><p>The macro file <b>{0}</b> is corrupt.</p></source> <translation><p>Soubor s makrem <b>{0}</b> je poškozen.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6578"/> + <location filename="../QScintilla/Editor.py" line="6495"/> <source><p>The macro file <b>{0}</b> could not be written.</p></source> <translation><p>So souboru s makrem <b>{0}</b> nelze zapisovat.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6919"/> + <location filename="../QScintilla/Editor.py" line="6836"/> <source>{0} (ro)</source> <translation>{0} (ro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7059"/> + <location filename="../QScintilla/Editor.py" line="6976"/> <source><p><b>{0}</b> is not a file.</p></source> <translation><p><b>{0}</b> není soubor.</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7156"/> + <location filename="../QScintilla/Editor.py" line="7073"/> <source>Alias for file <b>{0}</b>:</source> <translation>Zástupce pro soubor <b>{0}</b>:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1284"/> + <location filename="../QScintilla/Editor.py" line="1241"/> <source>Next warning</source> <translation>Následující varování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1287"/> + <location filename="../QScintilla/Editor.py" line="1244"/> <source>Previous warning</source> <translation>Předchozí varování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1289"/> + <location filename="../QScintilla/Editor.py" line="1247"/> <source>Show warning message</source> <translation>Zobrazit varování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1291"/> + <location filename="../QScintilla/Editor.py" line="1250"/> <source>Clear warnings</source> <translation>Vyčistit varování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="3177"/> + <location filename="../QScintilla/Editor.py" line="3115"/> <source><p>The file <b>{0}</b> already exists. Overwrite it?</p></source> <translation type="unfinished"><p>Soubor <b>{0}</b> již existuje.</p><p>Má se přepsat?</p></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6562"/> + <location filename="../QScintilla/Editor.py" line="6479"/> <source><p>The macro file <b>{0}</b> already exists. Overwrite it?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6413"/> + <location filename="../QScintilla/Editor.py" line="6281"/> <source>Warning: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6420"/> + <location filename="../QScintilla/Editor.py" line="6288"/> <source>Error: {0}</source> <translation type="unfinished">Chyby: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6751"/> + <location filename="../QScintilla/Editor.py" line="6668"/> <source><br><b>Warning:</b> You will lose your changes upon reopening it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="890"/> + <location filename="../QScintilla/Editor.py" line="885"/> <source>Open 'rejection' file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1000"/> + <location filename="../QScintilla/Editor.py" line="995"/> <source>Load Diagram...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1322"/> + <location filename="../QScintilla/Editor.py" line="1268"/> <source>Next change</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1325"/> + <location filename="../QScintilla/Editor.py" line="1271"/> <source>Previous change</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7953"/> + <location filename="../QScintilla/Editor.py" line="7870"/> <source>Sort Lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7953"/> + <location filename="../QScintilla/Editor.py" line="7870"/> <source>The selection contains illegal data for a numerical sort.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6349"/> + <location filename="../QScintilla/Editor.py" line="6217"/> <source>Warning</source> <translation type="unfinished">Varování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6349"/> + <location filename="../QScintilla/Editor.py" line="6217"/> <source>No warning messages available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6410"/> + <location filename="../QScintilla/Editor.py" line="6278"/> <source>Style: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="864"/> + <location filename="../QScintilla/Editor.py" line="859"/> <source>New Document View</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="867"/> + <location filename="../QScintilla/Editor.py" line="862"/> <source>New Document View (with new split)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="954"/> + <location filename="../QScintilla/Editor.py" line="949"/> <source>Tools</source> <translation type="unfinished">Nástroje</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1084"/> + <location filename="../QScintilla/Editor.py" line="1079"/> <source>Re-Open With Encoding</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6745"/> + <location filename="../QScintilla/Editor.py" line="6662"/> <source><p>The file <b>{0}</b> has been changed while it was opened in eric6. Reread it?</p></source> <translation type="unfinished"><p>Soubor <b>{0}</b> byl změněn po té co již byl načten do eric5. Znovu načíst?</p> {0}?} {6.?}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="840"/> + <location filename="../QScintilla/Editor.py" line="835"/> <source>Automatic Completion enabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="920"/> + <location filename="../QScintilla/Editor.py" line="915"/> <source>Complete</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="4735"/> + <location filename="../QScintilla/Editor.py" line="4643"/> <source>Auto-Completion Provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="4735"/> + <location filename="../QScintilla/Editor.py" line="4643"/> <source>The completion list provider '{0}' was already registered. Ignoring duplicate request.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="4997"/> + <location filename="../QScintilla/Editor.py" line="4890"/> <source>Call-Tips Provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="4997"/> + <location filename="../QScintilla/Editor.py" line="4890"/> <source>The call-tips provider '{0}' was already registered. Ignoring duplicate request.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8040"/> + <location filename="../QScintilla/Editor.py" line="7957"/> <source>Register Mouse Click Handler</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8040"/> + <location filename="../QScintilla/Editor.py" line="7957"/> <source>A mouse click handler for "{0}" was already registered by "{1}". Aborting request by "{2}"...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="884"/> + <location filename="../QScintilla/Editor.py" line="879"/> <source>Save Copy...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="923"/> + <location filename="../QScintilla/Editor.py" line="918"/> <source>Clear Completions Cache</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="850"/> + <location filename="../QScintilla/Editor.py" line="845"/> <source>Code Info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1328"/> + <location filename="../QScintilla/Editor.py" line="1274"/> <source>Clear changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="775"/> + <location filename="../QScintilla/Editor.py" line="770"/> <source>Execute Selection In Console</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8161"/> + <location filename="../QScintilla/Editor.py" line="8078"/> <source>EditorConfig Properties</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="8161"/> + <location filename="../QScintilla/Editor.py" line="8078"/> <source><p>The EditorConfig properties for file <b>{0}</b> could not be loaded.</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../QScintilla/Editor.py" line="1197"/> + <source>Toggle all folds</source> + <translation type="unfinished">Složit/rozložit všechna skládání</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1201"/> + <source>Toggle all folds (including children)</source> + <translation type="unfinished">Složit/rozložit všechna skládání (i s podsložkami)</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1205"/> + <source>Toggle current fold</source> + <translation type="unfinished">Složit/rozložit aktuální složený blok</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1210"/> + <source>Expand (including children)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1214"/> + <source>Collapse (including children)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1219"/> + <source>Clear all folds</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>EditorAPIsPage</name> @@ -11401,17 +11431,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="76"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="189"/> <source>Select this to enable autocompletion</source> <translation>Vybrat toto pro zapnutí autodoplňování</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="82"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="195"/> <source>Automatic Completion Enabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="79"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="192"/> <source><b>Autocompletion Enabled</b><p>Select to enable autocompletion. In order to get autocompletion from alternative autocompletion providers (if installed), these have to be enabled on their respective configuration page. Only one alternative provider might be enabled.</p></source> <translation><b>Autodoplňování zapnuto</b><p>Vyberte pro zapnutí autodoplňování. Aby mohlo autodoplňování od alternativních poskytovatelů (je-li nainstalováno) fungovat, musí se zapnout příslušná strana s konfigurací. Zapnout lze vždy jenom jednoho alternativního poskytovatele.</p></translation> </message> @@ -11421,130 +11451,160 @@ <translation>Hlavní</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="43"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="67"/> <source>Select this to have case sensitive auto-completion lists</source> <translation>Vybrat toto má-li seznam autodoplňování rozlišovat velké/malé znaky</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="46"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="70"/> <source>Case sensitive</source> <translation>Rozlišit velké/malé znaky</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="53"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="57"/> <source>Select this, if the word to the right should be replaced by the selected entry</source> <translation>Vybrat toto, jestliže slovo vpravo bude nahrazeno vybraným vstupem</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="56"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="60"/> <source>Replace word</source> <translation>Nahradit slovo</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="91"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="204"/> <source>Threshold:</source> <translation>Práh:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="107"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="220"/> <source>Move to set the threshold for display of an autocompletion list</source> <translation>Posunout pro nastavení prahu pro zobrazení seznamu autodoplňování</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="126"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="239"/> <source>Displays the selected autocompletion threshold</source> <translation>Zobrazuje vybraný práh autodopňování</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="184"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="297"/> <source>Plug-In Behavior</source> <translation type="unfinished">Plug-In chování</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="63"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="77"/> <source>Select to show completions of type 'public' first</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="66"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="80"/> <source>Show 'public' completions first</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="269"/> <source>Enter the time in milliseconds after which a list with completion proposals shall be shown</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="165"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="278"/> <source> ms</source> <translation type="unfinished"> ms</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="273"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="386"/> <source>Completions Cache</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="279"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="392"/> <source>Size:</source> <translation type="unfinished">Velikost:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="292"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="405"/> <source>Enter the maximum number of entries to be kept in the completions cache</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="301"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="414"/> <source> entries</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="330"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="443"/> <source>Timeout:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="337"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="450"/> <source>Enter the time in seconds after which a cached completion entry should be removed from the completions cache</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="346"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="459"/> <source> s</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="98"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="211"/> <source>Time to start completion:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="190"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="303"/> <source>Select to show QScintilla provided completions, if the selected plug-ins fail</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="196"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="309"/> <source>Show QScintilla completions, if plug-ins fail</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="205"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="318"/> <source>Maximum time to wait:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="227"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="340"/> <source>Enter the time in seconds after which QSintilla should be used</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="193"/> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="306"/> <source>QScintilla provided completions are shown, if this option is enabled and completions shall be provided by plug-ins (see completions sub-page of the plug-in) and the plugin-ins don't deliver any completions.</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="97"/> + <source>Maximum visible characters:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="104"/> + <source>Maximum visible lines: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="111"/> + <source>Move to set the maximum number of lines shown in a autocomplete list.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="133"/> + <source>Displays the maximum number of lines.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="149"/> + <source>Move to set the maximum number of characters visible in one line.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="168"/> + <source>Displays the approximate number of characters per line.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>EditorAutocompletionQScintillaPage</name> @@ -13819,12 +13879,12 @@ <translation>Neproporcionální font</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="428"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="418"/> <source>Press to select the font for the editor line numbers</source> <translation>Stisknout pro výběr fontu pro na čísla řádků v editoru</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="431"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="421"/> <source>Line Numbers Font</source> <translation>Font čísel řádek</translation> </message> @@ -13834,7 +13894,7 @@ <translation>Neproporcionální text</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="447"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="437"/> <source>2345</source> <translation></translation> </message> @@ -13864,17 +13924,17 @@ <translation>Zobrazovat značky skládání</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="237"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="227"/> <source>Folding style:</source> <translation>Styl skládání:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="250"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="240"/> <source>Select the folding style to be used in the folding margin</source> <translation>Výběr stylu skládání, který bude použit ve sloupci se značkami skládání</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="253"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="243"/> <source><b>Folding style</b> <p>Select the desired folding style to be used in the folding margin.</p> <p>The available styles are: @@ -13889,262 +13949,262 @@ <translation><b>Styl skládání</b><p>Vyberte požadovaný styl skládání, který bude použit ve sloupci se značkami skládání.</p><p>Dostupné styly jsou:<li><ul>Jednoduché - jen symboly plus a mínus</ul><ul>Kolečka - symboly plus a mínus v kruhu</ul><ul>Čtverce - symboly plus a mínus ve čtvercích</ul><ul>Propojená kolečka - symboly plus a mínus v propojených kolečkách</ul<ul>Propojené čtverce - symboly plus a mínus v propojených čtvercích</ul></li></p></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="267"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="257"/> <source>Plain</source> <translation>Jednoduché</translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="262"/> + <source>Circled</source> + <translation>Kolečka</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="267"/> + <source>Boxed</source> + <translation>Čtverce</translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="272"/> - <source>Circled</source> - <translation>Kolečka</translation> + <source>Circled Tree</source> + <translation>Propojená kolečka</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="277"/> - <source>Boxed</source> - <translation>Čtverce</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="282"/> - <source>Circled Tree</source> - <translation>Propojená kolečka</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="287"/> <source>Boxed Tree</source> <translation>Propojené čtverce</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="478"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="468"/> <source>Selection</source> <translation>Výběr</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="486"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="476"/> <source>Select to use custom selection colours</source> <translation>Vybrat použití obvyklého výběru barev</translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="479"/> + <source><b>Use custom selection colours</b><p>Select this entry in order to use custom selection colours in the editor and shell windows. The colours for the selection foreground and background are defined on the colours page.</p></source> + <translation><b>Použít obvyklý výběr barev</b><p>Vyberte tento přepínač pokud v okně editoru a shellu chcete použít obvyklý typ barev. Barvy popředí a pozadí budou definovány barvami strany.</p></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="482"/> + <source>Use custom selection colours</source> + <translation>Použít obvyklé barvy</translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="489"/> - <source><b>Use custom selection colours</b><p>Select this entry in order to use custom selection colours in the editor and shell windows. The colours for the selection foreground and background are defined on the colours page.</p></source> - <translation><b>Použít obvyklý výběr barev</b><p>Vyberte tento přepínač pokud v okně editoru a shellu chcete použít obvyklý typ barev. Barvy popředí a pozadí budou definovány barvami strany.</p></translation> + <source>Select, if selected text should be colourized by the lexer.</source> + <translation>Vybrat, jestliže má být vybraný text obarven lexerem.</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="492"/> - <source>Use custom selection colours</source> - <translation>Použít obvyklé barvy</translation> + <source>Colourize selected text</source> + <translation>Obarvit vybraný text</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="499"/> - <source>Select, if selected text should be colourized by the lexer.</source> - <translation>Vybrat, jestliže má být vybraný text obarven lexerem.</translation> + <source>Select to extend selection to end of line</source> + <translation>Aktivovat výběr rozšířený o konec řádku</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="502"/> - <source>Colourize selected text</source> - <translation>Obarvit vybraný text</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="509"/> - <source>Select to extend selection to end of line</source> - <translation>Aktivovat výběr rozšířený o konec řádku</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="512"/> <source>Extend selection to end of line</source> <translation>Rozšířený výběr na konec řádku</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="523"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="513"/> <source>Selection foreground:</source> <translation>Výběr popředí:</translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="526"/> + <source>Select the foreground colour for the selection.</source> + <translation>Vybrat barvu popředí pro výběr.</translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="536"/> - <source>Select the foreground colour for the selection.</source> - <translation>Vybrat barvu popředí pro výběr.</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="546"/> <source>Selection background:</source> <translation>Výběr pozadí:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="559"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="549"/> <source>Select the background colour for the selection.</source> <translation>Vybrat barvu pozadí pro výběr.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="574"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="564"/> <source>Caret</source> <translation>Karet (textový kurzor)</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="582"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="572"/> <source>Select, whether the caretline should be highlighted</source> <translation>Vybrat, má-li být linka karetu zvýrazněna</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="585"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="575"/> <source>Caretline visible</source> <translation>Zobrazení textového kurzoru</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="619"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="609"/> <source>Caret width:</source> <translation>Šířka text.kurzoru:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="626"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="616"/> <source>Select caret width (1, 2 or 3 pixels)</source> <translation>Výběr délky karetu (1, 2 nebo 3 pixelu)</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="659"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="649"/> <source>Caret foreground:</source> <translation>Barva karetu:</translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="662"/> + <source>Select the colour for the caret.</source> + <translation>Výběr barvy karetu.</translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="672"/> - <source>Select the colour for the caret.</source> - <translation>Výběr barvy karetu.</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="682"/> <source>Caretline background:</source> <translation>Pozadí karetu:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="695"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="685"/> <source>Select the background colour for the line containing the caret.</source> <translation>Vybrat barvu pozadí pro řádku obsahující karet.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="726"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="716"/> <source>Current line marker:</source> <translation type="unfinished">Značka aktuální řádky:</translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="729"/> + <source>Select the colour for the current line marker.</source> + <translation type="unfinished">Vybrat barvu pro značku aktuální řádky.</translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="739"/> - <source>Select the colour for the current line marker.</source> - <translation type="unfinished">Vybrat barvu pro značku aktuální řádky.</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="749"/> <source>Error line marker:</source> <translation type="unfinished">Značka chybné řádky:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="762"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="752"/> <source>Select the colour for the error line marker.</source> <translation type="unfinished">Vybrat barvu pro značku chybné řádky.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="775"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="765"/> <source>Braces</source> <translation>Závorky</translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="771"/> + <source>Select whether matching and bad braces shall be highlighted.</source> + <translation>Vybrat, jestliže se má zkontrolovat párovost závorek a neplatné se mají zvýraznit.</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="774"/> + <source>Highlight braces</source> + <translation>Zvýraznit závorky</translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="781"/> - <source>Select whether matching and bad braces shall be highlighted.</source> - <translation>Vybrat, jestliže se má zkontrolovat párovost závorek a neplatné se mají zvýraznit.</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="784"/> - <source>Highlight braces</source> - <translation>Zvýraznit závorky</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="791"/> <source>Matched braces:</source> <translation>Párové závorky:</translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="794"/> + <source>Select the colour for highlighting matching braces.</source> + <translation>Výběr barvy pro zvýraznění párových závorek.</translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="804"/> - <source>Select the colour for highlighting matching braces.</source> - <translation>Výběr barvy pro zvýraznění párových závorek.</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="814"/> <source>Matched braces background:</source> <translation>Pozadí párových závorek:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="827"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="817"/> <source>Select the background colour for highlighting matching braces.</source> <translation>Výběr barvy pozadí pro zvýraznění párových závorek.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="843"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="833"/> <source>Unmatched brace:</source> <translation>Nepárová závorka:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="850"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="840"/> <source>Select the colour for highlighting nonmatching braces.</source> <translation>Výběr barvy pro zvýraznění nepárových závorek.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="866"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="856"/> <source>Unmatched brace background:</source> <translation>Pozadí nepárové závorky:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="873"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="863"/> <source>Select the background colour for highlighting nonmatching braces.</source> <translation>Vybrat barvu pozadí pro zvýraznění nepárových závorek.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="886"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="876"/> <source>End of Line</source> <translation>Konec řádku</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="892"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="882"/> <source>Select whether end of line shall be shown</source> <translation>Vybrat, mají-li se zobrazovat symboly konce řádků</translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="885"/> + <source>Show End of Line</source> + <translation>Zobrazovat konce řádků</translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="895"/> - <source>Show End of Line</source> - <translation>Zobrazovat konce řádků</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="905"/> <source>Wrap long lines</source> <translation>Zalamovat dlouhé řádky</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="958"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="948"/> <source>Edge Mode</source> <translation>Mód okraje</translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="992"/> + <source>Select the colour for the edge marker.</source> + <translation>Vybrat barvu pro značku okraje.</translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1002"/> - <source>Select the colour for the edge marker.</source> - <translation>Vybrat barvu pro značku okraje.</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1012"/> <source>Background colour:</source> <translation>Barva pozadí:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1025"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1015"/> <source>Move to set the edge column.</source> <translation>Posunout pro nastavení sloupce okraje.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1053"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1043"/> <source>Displays the selected tab width.</source> <translation>Zobrazuje vybranou šířku tabulátoru.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1069"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1059"/> <source>Column number:</source> <translation>Číslo sloupce:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1076"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1066"/> <source>Mode:</source> <translation>Mód:</translation> </message> @@ -14154,132 +14214,132 @@ <translation>Vypnuto</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1095"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1085"/> <source>Draw Line</source> <translation>Zobrazit linku</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1100"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1090"/> <source>Change Background Colour</source> <translation>Změnit barvu pozadí</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1883"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1896"/> <source>Various</source> <translation>Různé</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1449"/> + <location filename="../Preferences/ConfigurationPages/EditorStylesPage.ui" line="1439"/> <source>Select whether whitspace characters shall be shown</source> <translation>Vybrat, mají-li se zobrazovat prázdné znaky</translation> </message> <message> - <location filename="../