Thu, 18 Jan 2018 18:57:40 +0100
Fixed a signal/slot issue with the "Remove Split" action.
--- a/APIs/Python3/eric6.api Thu Jan 18 11:10:57 2018 +0100 +++ b/APIs/Python3/eric6.api Thu Jan 18 18:57:40 2018 +0100 @@ -6749,7 +6749,7 @@ eric6.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.vcsTag?4(name) eric6.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.vcsUpdate?4(name, noDialog=False) eric6.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion?1(plugin, parent=None, name=None) -eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace._addView?5(win, fn=None, noName="", addNext=False) +eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace._addView?5(win, fn=None, noName="", addNext=False, indexes=None) eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace._initWindowActions?5() eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace._modificationStatusChanged?5(m, editor) eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace._removeAllViews?5() @@ -6781,16 +6781,19 @@ eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.editorSavedEd?7 eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.editorTextChanged?7 eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.eventFilter?4(watched, event) +eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.getOpenEditorsForSession?4() eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.getSplitOrientation?4() eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.lastEditorClosed?7 eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.mainWidget?4() eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.nextSplit?4() eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.prevSplit?4() eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.previewStateChanged?7 -eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.removeSplit?4() +eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.removeSplit?4(index=-1) eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.setEditorName?4(editor, newName) +eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.setSplitCount?4(count) eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.setSplitOrientation?4(orientation) eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.showWindowMenu?4(windowMenu) +eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.splitCount?4() eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.syntaxerrorToggled?7 eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.tile?4() eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace?1(parent) @@ -6823,7 +6826,7 @@ eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.setCurrentWidget?4(assembly) eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.showIndicator?4(on) eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget?1(vm) -eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview._addView?5(win, fn=None, noName="", addNext=False) +eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview._addView?5(win, fn=None, noName="", addNext=False, indexes=None) eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview._initWindowActions?5() eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview._modificationStatusChanged?5(m, editor) eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview._removeAllViews?5() @@ -6855,6 +6858,7 @@ eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.editorSavedEd?7 eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.editorTextChanged?7 eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.eventFilter?4(watched, event) +eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.getOpenEditorsForSession?4() eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.getSplitOrientation?4() eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.getTabWidgetById?4(id_) eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.insertView?4(win, tabWidget, index, fn=None, noName="") @@ -6864,10 +6868,12 @@ eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.preferencesChanged?4() eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.prevSplit?4() eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.previewStateChanged?7 -eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.removeSplit?4() +eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.removeSplit?4(index=-1) eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.setEditorName?4(editor, newName) +eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.setSplitCount?4(count) eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.setSplitOrientation?4(orientation) eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.showWindowMenu?4(windowMenu) +eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.splitCount?4() eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.syntaxerrorToggled?7 eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview.tile?4() eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview?1(parent) @@ -8299,6 +8305,7 @@ eric6.QScintilla.Editor.Editor.highlight?4(line=None, error=False, syntaxError=False) eric6.QScintilla.Editor.Editor.highlightVisible?4() eric6.QScintilla.Editor.Editor.indentLineOrSelection?4() +eric6.QScintilla.Editor.Editor.isClone?4(editor) eric6.QScintilla.Editor.Editor.isJavascriptFile?4() eric6.QScintilla.Editor.Editor.isLastEditPositionAvailable?4() eric6.QScintilla.Editor.Editor.isPy2File?4() @@ -8928,6 +8935,7 @@ eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.UserSeparator?7 eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat._encodeString?5(string) eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.byteAt?4(pos) +eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.canPaste?4() eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.charAt?4(pos) eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.clearAllIndicators?4(indicator) eric6.QScintilla.QsciScintillaCompat.QsciScintillaCompat.clearAlternateKeys?4() @@ -10388,7 +10396,7 @@ eric6.ViewManager.ViewManager.QuickSearchLineEdit.focusInEvent?4(evt) eric6.ViewManager.ViewManager.QuickSearchLineEdit.gotFocus?7 eric6.ViewManager.ViewManager.QuickSearchLineEdit.keyPressEvent?4(evt) -eric6.ViewManager.ViewManager.ViewManager._addView?5(win, fn=None, noName="", addNext=False) +eric6.ViewManager.ViewManager.ViewManager._addView?5(win, fn=None, noName="", addNext=False, indexes=None) eric6.ViewManager.ViewManager.ViewManager._checkActions?5(editor, setSb=True) eric6.ViewManager.ViewManager.ViewManager._getOpenFileFilter?5() eric6.ViewManager.ViewManager.ViewManager._getOpenStartDir?5() @@ -10443,13 +10451,14 @@ eric6.ViewManager.ViewManager.ViewManager.getAPIsManager?4() eric6.ViewManager.ViewManager.ViewManager.getActions?4(actionSetType) eric6.ViewManager.ViewManager.ViewManager.getActiveName?4() -eric6.ViewManager.ViewManager.ViewManager.getEditor?4(fn, filetype="", addNext=False) +eric6.ViewManager.ViewManager.ViewManager.getEditor?4(fn, filetype="", addNext=False, indexes=None) eric6.ViewManager.ViewManager.ViewManager.getMostRecent?4() eric6.ViewManager.ViewManager.ViewManager.getNumber?4() eric6.ViewManager.ViewManager.ViewManager.getOpenEditor?4(fn) eric6.ViewManager.ViewManager.ViewManager.getOpenEditorCount?4(fn) eric6.ViewManager.ViewManager.ViewManager.getOpenEditors?4() eric6.ViewManager.ViewManager.ViewManager.getOpenEditorsCount?4() +eric6.ViewManager.ViewManager.ViewManager.getOpenEditorsForSession?4() eric6.ViewManager.ViewManager.ViewManager.getOpenFilenames?4() eric6.ViewManager.ViewManager.ViewManager.getSRHistory?4(key) eric6.ViewManager.ViewManager.ViewManager.getSplitOrientation?4() @@ -10473,10 +10482,10 @@ eric6.ViewManager.ViewManager.ViewManager.lastEditorClosed?7 eric6.ViewManager.ViewManager.ViewManager.mainWidget?4() eric6.ViewManager.ViewManager.ViewManager.newEditor?4() -eric6.ViewManager.ViewManager.ViewManager.newEditorView?4(fn, caller, filetype="") +eric6.ViewManager.ViewManager.ViewManager.newEditorView?4(fn, caller, filetype="", indexes=None) eric6.ViewManager.ViewManager.ViewManager.nextSplit?4() eric6.ViewManager.ViewManager.ViewManager.openFiles?4(prog) -eric6.ViewManager.ViewManager.ViewManager.openSourceFile?4(fn, lineno=-1, filetype="", selStart=0, selEnd=0, pos=0, addNext=False) +eric6.ViewManager.ViewManager.ViewManager.openSourceFile?4(fn, lineno=-1, filetype="", selStart=0, selEnd=0, pos=0, addNext=False, indexes=None) eric6.ViewManager.ViewManager.ViewManager.preferencesChanged?4() eric6.ViewManager.ViewManager.ViewManager.prevSplit?4() eric6.ViewManager.ViewManager.ViewManager.previewStateChanged?7 @@ -10488,7 +10497,7 @@ eric6.ViewManager.ViewManager.ViewManager.projectLexerAssociationsChanged?4() eric6.ViewManager.ViewManager.ViewManager.projectOpened?4() eric6.ViewManager.ViewManager.ViewManager.receive?4(projectHash, fileName, command) -eric6.ViewManager.ViewManager.ViewManager.removeSplit?4() +eric6.ViewManager.ViewManager.ViewManager.removeSplit?4(index=-1) eric6.ViewManager.ViewManager.ViewManager.replaceWidget?4() eric6.ViewManager.ViewManager.ViewManager.saveAllEditors?4() eric6.ViewManager.ViewManager.ViewManager.saveAsCurrentEditor?4() @@ -10507,6 +10516,7 @@ eric6.ViewManager.ViewManager.ViewManager.setFileLine?4(fn, line, error=False, syntaxError=False) eric6.ViewManager.ViewManager.ViewManager.setReferences?4(ui, dbs) eric6.ViewManager.ViewManager.ViewManager.setSbInfo?4(sbLine, sbPos, sbWritable, sbEncoding, sbLanguage, sbEol, sbZoom) +eric6.ViewManager.ViewManager.ViewManager.setSplitCount?4(count) eric6.ViewManager.ViewManager.ViewManager.setSplitOrientation?4(orientation) eric6.ViewManager.ViewManager.ViewManager.shareConnected?4(connected) eric6.ViewManager.ViewManager.ViewManager.shareEditor?4(share) @@ -10515,6 +10525,7 @@ eric6.ViewManager.ViewManager.ViewManager.showReplaceWidget?4() eric6.ViewManager.ViewManager.ViewManager.showSearchWidget?4() eric6.ViewManager.ViewManager.ViewManager.showWindowMenu?4(windowMenu) +eric6.ViewManager.ViewManager.ViewManager.splitCount?4() eric6.ViewManager.ViewManager.ViewManager.startSharedEdit?4() eric6.ViewManager.ViewManager.ViewManager.syntaxerrorToggled?7 eric6.ViewManager.ViewManager.ViewManager.textForFind?4(getCurrentWord=True) @@ -10988,6 +10999,7 @@ eric6.WebBrowser.Download.DownloadItem.DownloadItem.getInfoData?4() eric6.WebBrowser.Download.DownloadItem.DownloadItem.getPageUrl?4() eric6.WebBrowser.Download.DownloadItem.DownloadItem.on_openButton_clicked?4() +eric6.WebBrowser.Download.DownloadItem.DownloadItem.on_pauseButton_clicked?4(checked) eric6.WebBrowser.Download.DownloadItem.DownloadItem.on_stopButton_clicked?4() eric6.WebBrowser.Download.DownloadItem.DownloadItem.openFile?4() eric6.WebBrowser.Download.DownloadItem.DownloadItem.openFolder?4() @@ -11004,6 +11016,7 @@ eric6.WebBrowser.Download.DownloadManager.DownloadManager.allowQuit?4() eric6.WebBrowser.Download.DownloadManager.DownloadManager.changeOccurred?4() eric6.WebBrowser.Download.DownloadManager.DownloadManager.cleanup?4() +eric6.WebBrowser.Download.DownloadManager.DownloadManager.closeEvent?4(evt) eric6.WebBrowser.Download.DownloadManager.DownloadManager.count?4() eric6.WebBrowser.Download.DownloadManager.DownloadManager.download?4(downloadItem) eric6.WebBrowser.Download.DownloadManager.DownloadManager.downloadDirectory?4() @@ -11660,6 +11673,7 @@ eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.SafeBrowsingLabel?1(parent=None) eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.close?4() eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.configurationChanged?4() +eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.enabled?7 eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.fairUseDelayExpired?4() eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.fullCacheCleanup?4() eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.getIgnoreSchemes?4()
--- a/APIs/Python3/eric6.bas Thu Jan 18 11:10:57 2018 +0100 +++ b/APIs/Python3/eric6.bas Thu Jan 18 18:57:40 2018 +0100 @@ -12,8 +12,8 @@ AdBlockMatcher QObject AdBlockNetwork QObject AdBlockPage QObject -AdBlockRuleOption IntFlag -AdBlockRuleType IntFlag +AdBlockRuleOption IntEnum +AdBlockRuleType IntEnum AdBlockSubscription QObject AdBlockTreeWidget E5TreeWidget AdBlockUrlInterceptor UrlInterceptor
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DTDs/Session-6.1.dtd Thu Jan 18 18:57:40 2018 +0100 @@ -0,0 +1,125 @@ +<!-- This is the DTD for eric's (project) session file version 6.1 --> + +<!ELEMENT MultiProject (#PCDATA)> + +<!ELEMENT Project (#PCDATA)> + +<!ELEMENT ViewManagerSplits (#PCDATA)> +<!ATTLIST ViewManagerSplits + count CDATA #REQUIRED + orientation CDATA #REQUIRED> + +<!ELEMENT Filename (#PCDATA)> +<!ATTLIST Filename + cline CDATA #REQUIRED + cindex CDATA #REQUIRED + folds CDATA #REQUIRED + zoom CDATA #REQUIRED + cloned CDATA #REQUIRED + splitindex CDATA #REQUIRED + editorindex CDATA #REQUIRED> + +<!ELEMENT Filenames (Filename*)> + +<!ELEMENT ActiveWindow (#PCDATA)> +<!ATTLIST ActiveWindow + cline CDATA #REQUIRED + cindex CDATA #REQUIRED> + +<!ELEMENT BpFilename (#PCDATA)> +<!ELEMENT Linenumber EMPTY> +<!ATTLIST Linenumber + value CDATA #REQUIRED> +<!ELEMENT Condition (#PCDATA)> +<!ELEMENT Temporary EMPTY> +<!ATTLIST Temporary + value CDATA #REQUIRED> +<!ELEMENT Enabled EMPTY> +<!ATTLIST Enabled + value CDATA #REQUIRED> +<!ELEMENT Count EMPTY> +<!ATTLIST Count + value CDATA #REQUIRED> + +<!ELEMENT Breakpoint (BpFilename, + Linenumber, + Condition, + Temporary, + Enabled, + Count)> + +<!ELEMENT Breakpoints (Breakpoint*)> + +<!ELEMENT Special (#PCDATA)> + +<!ELEMENT Watchexpression (Condition, + Temporary, + Enabled, + Count, + Special)> + +<!ELEMENT Watchexpressions (Watchexpression*)> + +<!ELEMENT Exception (#PCDATA)> + +<!ELEMENT IgnoredException (#PCDATA)> + +<!ELEMENT Interpreter (#PCDATA)> +<!ELEMENT CommandLine (#PCDATA)> +<!ELEMENT WorkingDirectory (#PCDATA)> +<!ELEMENT Environment (#PCDATA)> +<!ELEMENT ReportExceptions EMPTY> +<!ATTLIST ReportExceptions + value CDATA #REQUIRED> +<!ELEMENT Exceptions (Exception*)> +<!ELEMENT IgnoredExceptions (IgnoredException*)> +<!ELEMENT AutoClearShell EMPTY> +<!ATTLIST AutoClearShell + value CDATA #REQUIRED> +<!ELEMENT TracePython EMPTY> +<!ATTLIST TracePython + value CDATA #REQUIRED> +<!ELEMENT AutoContinue EMPTY> +<!ATTLIST AutoContinue + value CDATA #REQUIRED> +<!ELEMENT CovexcPattern (#PCDATA)> + +<!ELEMENT DebugInfo (Interpreter, + CommandLine, + WorkingDirectory, + Environment, + ReportExceptions, + Exceptions, + IgnoredExceptions, + AutoClearShell, + TracePython, + AutoContinue, + CovexcPattern)> + +<!ELEMENT BmFilename (#PCDATA)> + +<!ELEMENT Bookmark (BmFilename, + Linenumber)> + +<!ELEMENT Bookmarks (Bookmark*)> + +<!ELEMENT ExpandedItemName (#PCDATA)> + +<!ELEMENT ProjectBrowserState (ExpandedItemName*)> +<!ATTLIST ProjectBrowserState + name CDATA #REQUIRED> + +<!ELEMENT ProjectBrowserStates (ProjectBrowserState*)> + +<!ELEMENT Session (MultiProject?, + Project?, + ViewManagerSplits?, + Filenames, + ActiveWindow?, + Breakpoints, + Watchexpressions, + DebugInfo, + Bookmarks, + ProjectBrowserStates?)> +<!ATTLIST Session + version CDATA #REQUIRED>
--- a/Documentation/Help/source.qhp Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Help/source.qhp Thu Jan 18 18:57:40 2018 +0100 @@ -4166,8 +4166,6 @@ <keyword name="DownloadItem.__initialize" id="DownloadItem.__initialize" ref="eric6.WebBrowser.Download.DownloadItem.html#DownloadItem.__initialize" /> <keyword name="DownloadItem.__metaDataChanged" id="DownloadItem.__metaDataChanged" ref="eric6.Helpviewer.Download.DownloadItem.html#DownloadItem.__metaDataChanged" /> <keyword name="DownloadItem.__networkError" id="DownloadItem.__networkError" ref="eric6.Helpviewer.Download.DownloadItem.html#DownloadItem.__networkError" /> - <keyword name="DownloadItem.__open" id="DownloadItem.__open" ref="eric6.Helpviewer.Download.DownloadItem.html#DownloadItem.__open" /> - <keyword name="DownloadItem.__open" id="DownloadItem.__open" ref="eric6.WebBrowser.Download.DownloadItem.html#DownloadItem.__open" /> <keyword name="DownloadItem.__readyRead" id="DownloadItem.__readyRead" ref="eric6.Helpviewer.Download.DownloadItem.html#DownloadItem.__readyRead" /> <keyword name="DownloadItem.__saveFileName" id="DownloadItem.__saveFileName" ref="eric6.Helpviewer.Download.DownloadItem.html#DownloadItem.__saveFileName" /> <keyword name="DownloadItem.__saveFileName" id="DownloadItem.__saveFileName" ref="eric6.WebBrowser.Download.DownloadItem.html#DownloadItem.__saveFileName" /> @@ -4205,6 +4203,7 @@ <keyword name="DownloadItem.on_openButton_clicked" id="DownloadItem.on_openButton_clicked" ref="eric6.Helpviewer.Download.DownloadItem.html#DownloadItem.on_openButton_clicked" /> <keyword name="DownloadItem.on_openButton_clicked" id="DownloadItem.on_openButton_clicked" ref="eric6.WebBrowser.Download.DownloadItem.html#DownloadItem.on_openButton_clicked" /> <keyword name="DownloadItem.on_pauseButton_clicked" id="DownloadItem.on_pauseButton_clicked" ref="eric6.Helpviewer.Download.DownloadItem.html#DownloadItem.on_pauseButton_clicked" /> + <keyword name="DownloadItem.on_pauseButton_clicked" id="DownloadItem.on_pauseButton_clicked" ref="eric6.WebBrowser.Download.DownloadItem.html#DownloadItem.on_pauseButton_clicked" /> <keyword name="DownloadItem.on_stopButton_clicked" id="DownloadItem.on_stopButton_clicked" ref="eric6.Helpviewer.Download.DownloadItem.html#DownloadItem.on_stopButton_clicked" /> <keyword name="DownloadItem.on_stopButton_clicked" id="DownloadItem.on_stopButton_clicked" ref="eric6.WebBrowser.Download.DownloadItem.html#DownloadItem.on_stopButton_clicked" /> <keyword name="DownloadItem.on_tryAgainButton_clicked" id="DownloadItem.on_tryAgainButton_clicked" ref="eric6.Helpviewer.Download.DownloadItem.html#DownloadItem.on_tryAgainButton_clicked" /> @@ -4264,6 +4263,7 @@ <keyword name="DownloadManager.changeOccurred" id="DownloadManager.changeOccurred" ref="eric6.WebBrowser.Download.DownloadManager.html#DownloadManager.changeOccurred" /> <keyword name="DownloadManager.cleanup" id="DownloadManager.cleanup" ref="eric6.Helpviewer.Download.DownloadManager.html#DownloadManager.cleanup" /> <keyword name="DownloadManager.cleanup" id="DownloadManager.cleanup" ref="eric6.WebBrowser.Download.DownloadManager.html#DownloadManager.cleanup" /> + <keyword name="DownloadManager.closeEvent" id="DownloadManager.closeEvent" ref="eric6.WebBrowser.Download.DownloadManager.html#DownloadManager.closeEvent" /> <keyword name="DownloadManager.count" id="DownloadManager.count" ref="eric6.Helpviewer.Download.DownloadManager.html#DownloadManager.count" /> <keyword name="DownloadManager.count" id="DownloadManager.count" ref="eric6.WebBrowser.Download.DownloadManager.html#DownloadManager.count" /> <keyword name="DownloadManager.download" id="DownloadManager.download" ref="eric6.Helpviewer.Download.DownloadManager.html#DownloadManager.download" /> @@ -5185,6 +5185,7 @@ <keyword name="Editor.__encodingsMenuTriggered" id="Editor.__encodingsMenuTriggered" ref="eric6.QScintilla.Editor.html#Editor.__encodingsMenuTriggered" /> <keyword name="Editor.__eolChanged" id="Editor.__eolChanged" ref="eric6.QScintilla.Editor.html#Editor.__eolChanged" /> <keyword name="Editor.__eolMenuTriggered" id="Editor.__eolMenuTriggered" ref="eric6.QScintilla.Editor.html#Editor.__eolMenuTriggered" /> + <keyword name="Editor.__executeSelection" id="Editor.__executeSelection" ref="eric6.QScintilla.Editor.html#Editor.__executeSelection" /> <keyword name="Editor.__exportMenuTriggered" id="Editor.__exportMenuTriggered" ref="eric6.QScintilla.Editor.html#Editor.__exportMenuTriggered" /> <keyword name="Editor.__getCharacter" id="Editor.__getCharacter" ref="eric6.QScintilla.Editor.html#Editor.__getCharacter" /> <keyword name="Editor.__getCodeCoverageFile" id="Editor.__getCodeCoverageFile" ref="eric6.QScintilla.Editor.html#Editor.__getCodeCoverageFile" /> @@ -5400,6 +5401,7 @@ <keyword name="Editor.highlight" id="Editor.highlight" ref="eric6.QScintilla.Editor.html#Editor.highlight" /> <keyword name="Editor.highlightVisible" id="Editor.highlightVisible" ref="eric6.QScintilla.Editor.html#Editor.highlightVisible" /> <keyword name="Editor.indentLineOrSelection" id="Editor.indentLineOrSelection" ref="eric6.QScintilla.Editor.html#Editor.indentLineOrSelection" /> + <keyword name="Editor.isClone" id="Editor.isClone" ref="eric6.QScintilla.Editor.html#Editor.isClone" /> <keyword name="Editor.isJavascriptFile" id="Editor.isJavascriptFile" ref="eric6.QScintilla.Editor.html#Editor.isJavascriptFile" /> <keyword name="Editor.isLastEditPositionAvailable" id="Editor.isLastEditPositionAvailable" ref="eric6.QScintilla.Editor.html#Editor.isLastEditPositionAvailable" /> <keyword name="Editor.isPy2File" id="Editor.isPy2File" ref="eric6.QScintilla.Editor.html#Editor.isPy2File" /> @@ -10707,14 +10709,17 @@ <keyword name="Listspace.canTile" id="Listspace.canTile" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.canTile" /> <keyword name="Listspace.cascade" id="Listspace.cascade" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.cascade" /> <keyword name="Listspace.eventFilter" id="Listspace.eventFilter" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.eventFilter" /> + <keyword name="Listspace.getOpenEditorsForSession" id="Listspace.getOpenEditorsForSession" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.getOpenEditorsForSession" /> <keyword name="Listspace.getSplitOrientation" id="Listspace.getSplitOrientation" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.getSplitOrientation" /> <keyword name="Listspace.mainWidget" id="Listspace.mainWidget" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.mainWidget" /> <keyword name="Listspace.nextSplit" id="Listspace.nextSplit" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.nextSplit" /> <keyword name="Listspace.prevSplit" id="Listspace.prevSplit" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.prevSplit" /> <keyword name="Listspace.removeSplit" id="Listspace.removeSplit" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.removeSplit" /> <keyword name="Listspace.setEditorName" id="Listspace.setEditorName" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.setEditorName" /> + <keyword name="Listspace.setSplitCount" id="Listspace.setSplitCount" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.setSplitCount" /> <keyword name="Listspace.setSplitOrientation" id="Listspace.setSplitOrientation" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.setSplitOrientation" /> <keyword name="Listspace.showWindowMenu" id="Listspace.showWindowMenu" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.showWindowMenu" /> + <keyword name="Listspace.splitCount" id="Listspace.splitCount" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.splitCount" /> <keyword name="Listspace.tile" id="Listspace.tile" ref="eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.tile" /> <keyword name="LogView (Module)" id="LogView (Module)" ref="eric6.UI.LogView.html" /> <keyword name="LogViewer" id="LogViewer" ref="eric6.UI.LogView.html#LogViewer" /> @@ -13255,6 +13260,7 @@ <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.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" /> <keyword name="QsciScintillaCompat.clearAllIndicators" id="QsciScintillaCompat.clearAllIndicators" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.clearAllIndicators" /> <keyword name="QsciScintillaCompat.clearAlternateKeys" id="QsciScintillaCompat.clearAlternateKeys" ref="eric6.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.clearAlternateKeys" /> @@ -15840,6 +15846,7 @@ <keyword name="Tabview.canTile" id="Tabview.canTile" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.canTile" /> <keyword name="Tabview.cascade" id="Tabview.cascade" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.cascade" /> <keyword name="Tabview.eventFilter" id="Tabview.eventFilter" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.eventFilter" /> + <keyword name="Tabview.getOpenEditorsForSession" id="Tabview.getOpenEditorsForSession" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.getOpenEditorsForSession" /> <keyword name="Tabview.getSplitOrientation" id="Tabview.getSplitOrientation" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.getSplitOrientation" /> <keyword name="Tabview.getTabWidgetById" id="Tabview.getTabWidgetById" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.getTabWidgetById" /> <keyword name="Tabview.insertView" id="Tabview.insertView" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.insertView" /> @@ -15849,8 +15856,10 @@ <keyword name="Tabview.prevSplit" id="Tabview.prevSplit" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.prevSplit" /> <keyword name="Tabview.removeSplit" id="Tabview.removeSplit" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.removeSplit" /> <keyword name="Tabview.setEditorName" id="Tabview.setEditorName" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.setEditorName" /> + <keyword name="Tabview.setSplitCount" id="Tabview.setSplitCount" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.setSplitCount" /> <keyword name="Tabview.setSplitOrientation" id="Tabview.setSplitOrientation" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.setSplitOrientation" /> <keyword name="Tabview.showWindowMenu" id="Tabview.showWindowMenu" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.showWindowMenu" /> + <keyword name="Tabview.splitCount" id="Tabview.splitCount" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.splitCount" /> <keyword name="Tabview.tile" id="Tabview.tile" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.tile" /> <keyword name="TagError" id="TagError" ref="eric6.DocumentationTools.ModuleDocumentor.html#TagError" /> <keyword name="Task" id="Task" ref="eric6.Tasks.Task.html#Task" /> @@ -17187,6 +17196,7 @@ <keyword name="ViewManager.getOpenEditorCount" id="ViewManager.getOpenEditorCount" ref="eric6.ViewManager.ViewManager.html#ViewManager.getOpenEditorCount" /> <keyword name="ViewManager.getOpenEditors" id="ViewManager.getOpenEditors" ref="eric6.ViewManager.ViewManager.html#ViewManager.getOpenEditors" /> <keyword name="ViewManager.getOpenEditorsCount" id="ViewManager.getOpenEditorsCount" ref="eric6.ViewManager.ViewManager.html#ViewManager.getOpenEditorsCount" /> + <keyword name="ViewManager.getOpenEditorsForSession" id="ViewManager.getOpenEditorsForSession" ref="eric6.ViewManager.ViewManager.html#ViewManager.getOpenEditorsForSession" /> <keyword name="ViewManager.getOpenFilenames" id="ViewManager.getOpenFilenames" ref="eric6.ViewManager.ViewManager.html#ViewManager.getOpenFilenames" /> <keyword name="ViewManager.getSRHistory" id="ViewManager.getSRHistory" ref="eric6.ViewManager.ViewManager.html#ViewManager.getSRHistory" /> <keyword name="ViewManager.getSplitOrientation" id="ViewManager.getSplitOrientation" ref="eric6.ViewManager.ViewManager.html#ViewManager.getSplitOrientation" /> @@ -17242,6 +17252,7 @@ <keyword name="ViewManager.setFileLine" id="ViewManager.setFileLine" ref="eric6.ViewManager.ViewManager.html#ViewManager.setFileLine" /> <keyword name="ViewManager.setReferences" id="ViewManager.setReferences" ref="eric6.ViewManager.ViewManager.html#ViewManager.setReferences" /> <keyword name="ViewManager.setSbInfo" id="ViewManager.setSbInfo" ref="eric6.ViewManager.ViewManager.html#ViewManager.setSbInfo" /> + <keyword name="ViewManager.setSplitCount" id="ViewManager.setSplitCount" ref="eric6.ViewManager.ViewManager.html#ViewManager.setSplitCount" /> <keyword name="ViewManager.setSplitOrientation" id="ViewManager.setSplitOrientation" ref="eric6.ViewManager.ViewManager.html#ViewManager.setSplitOrientation" /> <keyword name="ViewManager.shareConnected" id="ViewManager.shareConnected" ref="eric6.ViewManager.ViewManager.html#ViewManager.shareConnected" /> <keyword name="ViewManager.shareEditor" id="ViewManager.shareEditor" ref="eric6.ViewManager.ViewManager.html#ViewManager.shareEditor" /> @@ -17250,6 +17261,7 @@ <keyword name="ViewManager.showReplaceWidget" id="ViewManager.showReplaceWidget" ref="eric6.ViewManager.ViewManager.html#ViewManager.showReplaceWidget" /> <keyword name="ViewManager.showSearchWidget" id="ViewManager.showSearchWidget" ref="eric6.ViewManager.ViewManager.html#ViewManager.showSearchWidget" /> <keyword name="ViewManager.showWindowMenu" id="ViewManager.showWindowMenu" ref="eric6.ViewManager.ViewManager.html#ViewManager.showWindowMenu" /> + <keyword name="ViewManager.splitCount" id="ViewManager.splitCount" ref="eric6.ViewManager.ViewManager.html#ViewManager.splitCount" /> <keyword name="ViewManager.startSharedEdit" id="ViewManager.startSharedEdit" ref="eric6.ViewManager.ViewManager.html#ViewManager.startSharedEdit" /> <keyword name="ViewManager.textForFind" id="ViewManager.textForFind" ref="eric6.ViewManager.ViewManager.html#ViewManager.textForFind" /> <keyword name="ViewManager.tile" id="ViewManager.tile" ref="eric6.ViewManager.ViewManager.html#ViewManager.tile" />
--- a/Documentation/Source/eric6.E5XML.SessionReader.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.E5XML.SessionReader.html Thu Jan 18 18:57:40 2018 +0100 @@ -104,12 +104,12 @@ <p> Constructor </p><dl> -<dt><i>device</i></dt> +<dt><i>device</i> (QIODevice)</dt> <dd> -reference to the I/O device to read from (QIODevice) -</dd><dt><i>isGlobal</i></dt> +reference to the I/O device to read from +</dd><dt><i>isGlobal</i> (bool)</dt> <dd> -flag indicating to read the global session (boolean). +flag indicating to read the global session </dd> </dl><a NAME="SessionReader.__readBookmark" ID="SessionReader.__readBookmark"></a> <h4>SessionReader.__readBookmark</h4> @@ -147,9 +147,9 @@ <p> Private method to read the project browser state info. </p><dl> -<dt><i>browserName</i></dt> +<dt><i>browserName</i> (str)</dt> <dd> -name of the project browser (string) +name of the project browser </dd> </dl><a NAME="SessionReader.__readProjectBrowserStates" ID="SessionReader.__readProjectBrowserStates"></a> <h4>SessionReader.__readProjectBrowserStates</h4> @@ -172,10 +172,10 @@ <p> Public method to read and parse the XML document. </p><dl> -<dt><i>quiet</i></dt> +<dt><i>quiet</i> (bool)</dt> <dd> flag indicating quiet operations. - If this flag is true, no errors are reported. + If this flag is true, no errors are reported. </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.E5XML.SessionWriter.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.E5XML.SessionWriter.html Thu Jan 18 18:57:40 2018 +0100 @@ -74,12 +74,12 @@ <p> Constructor </p><dl> -<dt><i>device</i></dt> +<dt><i>device</i> (QIODevice)</dt> <dd> -reference to the I/O device to write to (QIODevice) -</dd><dt><i>projectName</i></dt> +reference to the I/O device to write to +</dd><dt><i>projectName</i> (str or None)</dt> <dd> -name of the project (string) or None for the +name of the project or None for the global session </dd> </dl><a NAME="SessionWriter.writeXML" ID="SessionWriter.writeXML"></a>
--- a/Documentation/Source/eric6.Helpviewer.Download.DownloadItem.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.Helpviewer.Download.DownloadItem.html Thu Jan 18 18:57:40 2018 +0100 @@ -93,9 +93,6 @@ <td><a href="#DownloadItem.__networkError">__networkError</a></td> <td>Private slot to handle a network error.</td> </tr><tr> -<td><a href="#DownloadItem.__open">__open</a></td> -<td>Private slot to open the downloaded file.</td> -</tr><tr> <td><a href="#DownloadItem.__readyRead">__readyRead</a></td> <td>Private slot to read the available data.</td> </tr><tr> @@ -257,11 +254,6 @@ <b>__networkError</b>(<i></i>) <p> Private slot to handle a network error. -</p><a NAME="DownloadItem.__open" ID="DownloadItem.__open"></a> -<h4>DownloadItem.__open</h4> -<b>__open</b>(<i></i>) -<p> - Private slot to open the downloaded file. </p><a NAME="DownloadItem.__readyRead" ID="DownloadItem.__readyRead"></a> <h4>DownloadItem.__readyRead</h4> <b>__readyRead</b>(<i></i>)
--- a/Documentation/Source/eric6.PluginManager.PluginInfoDialog.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.PluginManager.PluginInfoDialog.html Thu Jan 18 18:57:40 2018 +0100 @@ -110,9 +110,10 @@ <p> Private method to create a list entry based on the provided info. </p><dl> -<dt><i>info</i></dt> +<dt><i>info</i> (dict)</dt> <dd> -tuple giving the info for the entry +dictionary giving the info for the entry (as returned by + PluginManager.getPluginInfos()) </dd> </dl><a NAME="PluginInfoDialog.__deactivatePlugin" ID="PluginInfoDialog.__deactivatePlugin"></a> <h4>PluginInfoDialog.__deactivatePlugin</h4>
--- a/Documentation/Source/eric6.PluginManager.PluginManager.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.PluginManager.PluginManager.html Thu Jan 18 18:57:40 2018 +0100 @@ -165,7 +165,7 @@ <td>Public method to get data to display information about a plugins external tool.</td> </tr><tr> <td><a href="#PluginManager.getPluginInfos">getPluginInfos</a></td> -<td>Public method to get infos about all loaded plugins.</td> +<td>Public method to get infos about all loaded plug-ins.</td> </tr><tr> <td><a href="#PluginManager.getPluginModules">getPluginModules</a></td> <td>Public method to get a list of plugin modules.</td> @@ -301,10 +301,15 @@ directory. </p><a NAME="PluginManager.__downloadRepositoryFileDone" ID="PluginManager.__downloadRepositoryFileDone"></a> <h4>PluginManager.__downloadRepositoryFileDone</h4> -<b>__downloadRepositoryFileDone</b>(<i></i>) +<b>__downloadRepositoryFileDone</b>(<i>reply</i>) <p> Private method called after the repository file was downloaded. -</p><a NAME="PluginManager.__getShortInfo" ID="PluginManager.__getShortInfo"></a> +</p><dl> +<dt><i>reply</i> (QNetworkReply)</dt> +<dd> +reference to the reply object of the download +</dd> +</dl><a NAME="PluginManager.__getShortInfo" ID="PluginManager.__getShortInfo"></a> <h4>PluginManager.__getShortInfo</h4> <b>__getShortInfo</b>(<i>module</i>) <p> @@ -317,9 +322,13 @@ </dl><dl> <dt>Returns:</dt> <dd> -short info as a tuple giving plugin name (string), - short description (string), error flag (boolean) and - version (string) +dictionay containing plug-in data +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict ("plugin_name": str, "version": str, "short_desc": str, + "error": bool) </dd> </dl><a NAME="PluginManager.__insertPluginsPaths" ID="PluginManager.__insertPluginsPaths"></a> <h4>PluginManager.__insertPluginsPaths</h4> @@ -627,13 +636,19 @@ <h4>PluginManager.getPluginInfos</h4> <b>getPluginInfos</b>(<i></i>) <p> - Public method to get infos about all loaded plugins. + Public method to get infos about all loaded plug-ins. </p><dl> <dt>Returns:</dt> <dd> -list of tuples giving module name (string), plugin name - (string), version (string), autoactivate (boolean), active - (boolean), short description (string), error flag (boolean) +list of dictionaries with keys "module_name", "plugin_name", + "version", "auto_activate", "active", "short_desc", "error" +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of dict ("module_name": str, "plugin_name": str, + "version": str, "auto_activate": bool, "active": bool, + "short_desc": str, "error": bool) </dd> </dl><a NAME="PluginManager.getPluginModules" ID="PluginManager.getPluginModules"></a> <h4>PluginManager.getPluginModules</h4>
--- a/Documentation/Source/eric6.PluginManager.PluginRepositoryDialog.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.PluginManager.PluginRepositoryDialog.html Thu Jan 18 18:57:40 2018 +0100 @@ -284,11 +284,16 @@ </dd> </dl><a NAME="PluginRepositoryWidget.__downloadFileDone" ID="PluginRepositoryWidget.__downloadFileDone"></a> <h4>PluginRepositoryWidget.__downloadFileDone</h4> -<b>__downloadFileDone</b>(<i></i>) +<b>__downloadFileDone</b>(<i>reply</i>) <p> Private method called, after the file has been downloaded from the Internet. -</p><a NAME="PluginRepositoryWidget.__downloadPlugin" ID="PluginRepositoryWidget.__downloadPlugin"></a> +</p><dl> +<dt><i>reply</i> (QNetworkReply)</dt> +<dd> +reference to the reply object of the download +</dd> +</dl><a NAME="PluginRepositoryWidget.__downloadPlugin" ID="PluginRepositoryWidget.__downloadPlugin"></a> <h4>PluginRepositoryWidget.__downloadPlugin</h4> <b>__downloadPlugin</b>(<i></i>) <p>
--- a/Documentation/Source/eric6.Plugins.VcsPlugins.vcsGit.GitUtilities.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.Plugins.VcsPlugins.vcsGit.GitUtilities.html Thu Jan 18 18:57:40 2018 +0100 @@ -66,7 +66,7 @@ </p><dl> <dt><i>proc</i></dt> <dd> -reference to the proces to be prepared (QProcess) +reference to the process to be prepared (QProcess) </dd><dt><i>language</i></dt> <dd> language to be set (string)
--- a/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgUtilities.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgUtilities.html Thu Jan 18 18:57:40 2018 +0100 @@ -90,7 +90,7 @@ </p><dl> <dt><i>proc</i></dt> <dd> -reference to the proces to be prepared (QProcess) +reference to the process to be prepared (QProcess) </dd><dt><i>encoding</i></dt> <dd> encoding to be used by the process (string)
--- a/Documentation/Source/eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.Plugins.ViewManagerPlugins.Listspace.Listspace.html Thu Jan 18 18:57:40 2018 +0100 @@ -223,6 +223,9 @@ <td><a href="#Listspace.eventFilter">eventFilter</a></td> <td>Public method called to filter the event queue.</td> </tr><tr> +<td><a href="#Listspace.getOpenEditorsForSession">getOpenEditorsForSession</a></td> +<td>Public method to get a lists of all open editors.</td> +</tr><tr> <td><a href="#Listspace.getSplitOrientation">getSplitOrientation</a></td> <td>Public method to get the orientation of the split view.</td> </tr><tr> @@ -236,17 +239,23 @@ <td>Public slot used to move to the previous split.</td> </tr><tr> <td><a href="#Listspace.removeSplit">removeSplit</a></td> -<td>Public method used to remove the current split view.</td> +<td>Public method used to remove the current split view or a split view by index.</td> </tr><tr> <td><a href="#Listspace.setEditorName">setEditorName</a></td> <td>Public method to change the displayed name of the editor.</td> </tr><tr> +<td><a href="#Listspace.setSplitCount">setSplitCount</a></td> +<td>Public method to set the number of split views.</td> +</tr><tr> <td><a href="#Listspace.setSplitOrientation">setSplitOrientation</a></td> <td>Public method used to set the orientation of the split view.</td> </tr><tr> <td><a href="#Listspace.showWindowMenu">showWindowMenu</a></td> <td>Public method to set up the viewmanager part of the Window menu.</td> </tr><tr> +<td><a href="#Listspace.splitCount">splitCount</a></td> +<td>Public method to get the number of splitted views.</td> +</tr><tr> <td><a href="#Listspace.tile">tile</a></td> <td>Public method to tile the managed windows.</td> </tr> @@ -261,9 +270,9 @@ <p> Constructor </p><dl> -<dt><i>parent</i></dt> +<dt><i>parent</i> (QWidget)</dt> <dd> -parent widget (QWidget) +parent widget </dd> </dl><a NAME="Listspace.__captionChange" ID="Listspace.__captionChange"></a> <h4>Listspace.__captionChange</h4> @@ -273,10 +282,10 @@ </p><p> Updates the listwidget text to reflect the new caption information. </p><dl> -<dt><i>cap</i></dt> +<dt><i>cap</i> (str)</dt> <dd> -Caption for the editor (string) -</dd><dt><i>editor</i></dt> +Caption for the editor +</dd><dt><i>editor</i> (Editor)</dt> <dd> Editor to update the caption for </dd> @@ -333,7 +342,7 @@ <p> Private slot to handle the currentChanged signal. </p><dl> -<dt><i>index</i></dt> +<dt><i>index</i> (int)</dt> <dd> index of the current editor </dd> @@ -343,7 +352,7 @@ <p> Private slot to handle a change of the current editor's cursor line. </p><dl> -<dt><i>lineno</i></dt> +<dt><i>lineno</i> (int)</dt> <dd> line number of the current editor's cursor (zero based) </dd> @@ -359,9 +368,9 @@ Private slot to handle the customContextMenuRequested signal of the viewlist. </p><dl> -<dt><i>point</i></dt> +<dt><i>point</i> (QPoint)</dt> <dd> -position to open the menu at (QPoint) +position to open the menu at </dd> </dl><a NAME="Listspace.__showSelectedView" ID="Listspace.__showSelectedView"></a> <h4>Listspace.__showSelectedView</h4> @@ -369,29 +378,33 @@ <p> Private slot called to show a view selected in the list. </p><dl> -<dt><i>row</i></dt> +<dt><i>row</i> (int)</dt> <dd> -row number of the item clicked on (integer) +row number of the item clicked on </dd> </dl><a NAME="Listspace._addView" ID="Listspace._addView"></a> <h4>Listspace._addView</h4> -<b>_addView</b>(<i>win, fn=None, noName="", addNext=False</i>) +<b>_addView</b>(<i>win, fn=None, noName="", addNext=False, indexes=None</i>) <p> Protected method to add a view (i.e. window). </p><dl> -<dt><i>win</i></dt> +<dt><i>win</i> (EditorAssembly)</dt> <dd> editor assembly to be added -</dd><dt><i>fn</i></dt> +</dd><dt><i>fn</i> (str)</dt> <dd> -filename of this editor (string) -</dd><dt><i>noName</i></dt> +filename of this editor +</dd><dt><i>noName</i> (str)</dt> <dd> -name to be used for an unnamed editor (string) -</dd><dt><i>addNext</i></dt> +name to be used for an unnamed editor +</dd><dt><i>addNext</i> (bool)</dt> <dd> flag indicating to add the view next to the current - view (bool) + view +</dd><dt><i>indexes</i> (tuple of two int)</dt> +<dd> +of the editor, first the split view index, second the + index within the view </dd> </dl><a NAME="Listspace._initWindowActions" ID="Listspace._initWindowActions"></a> <h4>Listspace._initWindowActions</h4> @@ -405,10 +418,10 @@ <p> Protected slot to handle the modificationStatusChanged signal. </p><dl> -<dt><i>m</i></dt> +<dt><i>m</i> (bool)</dt> <dd> -flag indicating the modification status (boolean) -</dd><dt><i>editor</i></dt> +flag indicating the modification status +</dd><dt><i>editor</i> (Editor)</dt> <dd> editor window changed </dd> @@ -423,7 +436,7 @@ <p> Protected method to remove a view (i.e. window). </p><dl> -<dt><i>win</i></dt> +<dt><i>win</i> (Editor)</dt> <dd> editor window to be removed </dd> @@ -433,12 +446,12 @@ <p> Protected method to show a view (i.e. window). </p><dl> -<dt><i>win</i></dt> +<dt><i>win</i> (EditorAssembly)</dt> <dd> editor assembly to be shown -</dd><dt><i>fn</i></dt> +</dd><dt><i>fn</i> (string)</dt> <dd> -filename of this editor (string) +filename of this editor </dd> </dl><a NAME="Listspace._syntaxErrorToggled" ID="Listspace._syntaxErrorToggled"></a> <h4>Listspace._syntaxErrorToggled</h4> @@ -446,7 +459,7 @@ <p> Protected slot to handle the syntaxerrorToggled signal. </p><dl> -<dt><i>editor</i></dt> +<dt><i>editor</i> (Editor)</dt> <dd> editor that sent the signal </dd> @@ -460,6 +473,11 @@ <dd> reference to the active editor </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +EditorAssembly +</dd> </dl><a NAME="Listspace.addSplit" ID="Listspace.addSplit"></a> <h4>Listspace.addSplit</h4> <b>addSplit</b>(<i></i>) @@ -475,6 +493,11 @@ <dd> flag indicating cascading of windows is available </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="Listspace.canSplit" ID="Listspace.canSplit"></a> <h4>Listspace.canSplit</h4> <b>canSplit</b>(<i></i>) @@ -483,7 +506,12 @@ </p><dl> <dt>Returns:</dt> <dd> -flag indicating splitting of the view is available. +flag indicating splitting of the view is available +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool </dd> </dl><a NAME="Listspace.canTile" ID="Listspace.canTile"></a> <h4>Listspace.canTile</h4> @@ -495,6 +523,11 @@ <dd> flag indicating tiling of windows is available </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="Listspace.cascade" ID="Listspace.cascade"></a> <h4>Listspace.cascade</h4> <b>cascade</b>(<i></i>) @@ -506,10 +539,10 @@ <p> Public method called to filter the event queue. </p><dl> -<dt><i>watched</i></dt> +<dt><i>watched</i> (QObject)</dt> <dd> the QObject being watched -</dd><dt><i>event</i></dt> +</dd><dt><i>event</i> (QEvent)</dt> <dd> the event that occurred </dd> @@ -518,6 +551,29 @@ <dd> flag indicating, if we handled the event </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl><a NAME="Listspace.getOpenEditorsForSession" ID="Listspace.getOpenEditorsForSession"></a> +<h4>Listspace.getOpenEditorsForSession</h4> +<b>getOpenEditorsForSession</b>(<i></i>) +<p> + Public method to get a lists of all open editors. +</p><p> + The returned list contains one list per split view. If the view manager + cannot split the view, only one list of editors is returned. +</p><dl> +<dt>Returns:</dt> +<dd> +list of list of editor references +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of list of Editor +</dd> </dl><a NAME="Listspace.getSplitOrientation" ID="Listspace.getSplitOrientation"></a> <h4>Listspace.getSplitOrientation</h4> <b>getSplitOrientation</b>(<i></i>) @@ -526,7 +582,12 @@ </p><dl> <dt>Returns:</dt> <dd> -orientation of the split (Qt.Horizontal or Qt.Vertical) +orientation of the split +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +Qt.Horizontal or Qt.Vertical </dd> </dl><a NAME="Listspace.mainWidget" ID="Listspace.mainWidget"></a> <h4>Listspace.mainWidget</h4> @@ -556,13 +617,25 @@ Public slot used to move to the previous split. </p><a NAME="Listspace.removeSplit" ID="Listspace.removeSplit"></a> <h4>Listspace.removeSplit</h4> -<b>removeSplit</b>(<i></i>) +<b>removeSplit</b>(<i>index=-1</i>) <p> - Public method used to remove the current split view. + Public method used to remove the current split view or a split view + by index. </p><dl> +<dt><i>index</i> (int)</dt> +<dd> +index of the split to be removed (-1 means to + delete the current split) +</dd> +</dl><dl> <dt>Returns:</dt> <dd> -flag indicating successfull removal +flag indicating successful deletion +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool </dd> </dl><a NAME="Listspace.setEditorName" ID="Listspace.setEditorName"></a> <h4>Listspace.setEditorName</h4> @@ -570,12 +643,22 @@ <p> Public method to change the displayed name of the editor. </p><dl> -<dt><i>editor</i></dt> +<dt><i>editor</i> (Editor)</dt> <dd> editor window to be changed -</dd><dt><i>newName</i></dt> +</dd><dt><i>newName</i> (str)</dt> <dd> -new name to be shown (string) +new name to be shown +</dd> +</dl><a NAME="Listspace.setSplitCount" ID="Listspace.setSplitCount"></a> +<h4>Listspace.setSplitCount</h4> +<b>setSplitCount</b>(<i>count</i>) +<p> + Public method to set the number of split views. +</p><dl> +<dt><i>count</i> (int)</dt> +<dd> +number of split views </dd> </dl><a NAME="Listspace.setSplitOrientation" ID="Listspace.setSplitOrientation"></a> <h4>Listspace.setSplitOrientation</h4> @@ -583,10 +666,9 @@ <p> Public method used to set the orientation of the split view. </p><dl> -<dt><i>orientation</i></dt> +<dt><i>orientation</i> (Qt.Horizontal or Qt.Vertical)</dt> <dd> orientation of the split - (Qt.Horizontal or Qt.Vertical) </dd> </dl><a NAME="Listspace.showWindowMenu" ID="Listspace.showWindowMenu"></a> <h4>Listspace.showWindowMenu</h4> @@ -594,10 +676,25 @@ <p> Public method to set up the viewmanager part of the Window menu. </p><dl> -<dt><i>windowMenu</i></dt> +<dt><i>windowMenu</i> (QMenu)</dt> <dd> reference to the window menu </dd> +</dl><a NAME="Listspace.splitCount" ID="Listspace.splitCount"></a> +<h4>Listspace.splitCount</h4> +<b>splitCount</b>(<i></i>) +<p> + Public method to get the number of splitted views. +</p><dl> +<dt>Returns:</dt> +<dd> +number of splitted views +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +int +</dd> </dl><a NAME="Listspace.tile" ID="Listspace.tile"></a> <h4>Listspace.tile</h4> <b>tile</b>(<i></i>) @@ -665,9 +762,9 @@ <p> Constructor </p><dl> -<dt><i>parent</i></dt> +<dt><i>parent</i> (QWidget)</dt> <dd> -parent widget (QWidget) +parent widget </dd> </dl><a NAME="StackedWidget.addWidget" ID="StackedWidget.addWidget"></a> <h4>StackedWidget.addWidget</h4> @@ -675,10 +772,9 @@ <p> Public method to add a new widget. </p><dl> -<dt><i>assembly</i></dt> +<dt><i>assembly</i> (QScintilla.EditorAssembly.EditorAssembly)</dt> <dd> editor assembly object to be added - (QScintilla.EditorAssembly.EditorAssembly) </dd> </dl><a NAME="StackedWidget.currentWidget" ID="StackedWidget.currentWidget"></a> <h4>StackedWidget.currentWidget</h4> @@ -688,7 +784,12 @@ </p><dl> <dt>Returns:</dt> <dd> -reference to the current editor (Editor) +reference to the current editor +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +Editor </dd> </dl><a NAME="StackedWidget.firstEditor" ID="StackedWidget.firstEditor"></a> <h4>StackedWidget.firstEditor</h4> @@ -699,7 +800,12 @@ </p><dl> <dt>Returns:</dt> <dd> -first editor in list (QScintilla.Editor.Editor) +first editor in list +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QScintilla.Editor.Editor </dd> </dl><a NAME="StackedWidget.hasEditor" ID="StackedWidget.hasEditor"></a> <h4>StackedWidget.hasEditor</h4> @@ -707,7 +813,7 @@ <p> Public method to check for an editor. </p><dl> -<dt><i>editor</i></dt> +<dt><i>editor</i> (Editor)</dt> <dd> editor object to check for </dd> @@ -717,6 +823,11 @@ flag indicating, whether the editor to be checked belongs to the list of editors managed by this stacked widget. </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="StackedWidget.nextTab" ID="StackedWidget.nextTab"></a> <h4>StackedWidget.nextTab</h4> <b>nextTab</b>(<i></i>) @@ -733,9 +844,9 @@ <p> Public method to remove a widget. </p><dl> -<dt><i>widget</i></dt> +<dt><i>widget</i> (QWidget)</dt> <dd> -widget to be removed (QWidget) +widget to be removed </dd> </dl><a NAME="StackedWidget.setCurrentIndex" ID="StackedWidget.setCurrentIndex"></a> <h4>StackedWidget.setCurrentIndex</h4> @@ -743,9 +854,9 @@ <p> Public method to set the current widget by its index. </p><dl> -<dt><i>index</i></dt> +<dt><i>index</i> (int)</dt> <dd> -index of widget to be made current (integer) +index of widget to be made current </dd> </dl><a NAME="StackedWidget.setCurrentWidget" ID="StackedWidget.setCurrentWidget"></a> <h4>StackedWidget.setCurrentWidget</h4> @@ -753,9 +864,9 @@ <p> Public method to set the current widget. </p><dl> -<dt><i>widget</i></dt> +<dt><i>widget</i> (QWidget)</dt> <dd> -widget to be made current (QWidget) +widget to be made current </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html Thu Jan 18 18:57:40 2018 +0100 @@ -110,9 +110,9 @@ <p> Constructor </p><dl> -<dt><i>parent</i></dt> +<dt><i>parent</i> (QWidget)</dt> <dd> -reference to the parent widget (QWidget) +reference to the parent widget </dd> </dl><a NAME="TabBar.dragEnterEvent" ID="TabBar.dragEnterEvent"></a> <h4>TabBar.dragEnterEvent</h4> @@ -120,9 +120,9 @@ <p> Protected method to handle drag enter events. </p><dl> -<dt><i>event</i></dt> +<dt><i>event</i> (QDragEnterEvent)</dt> <dd> -reference to the drag enter event (QDragEnterEvent) +reference to the drag enter event </dd> </dl><a NAME="TabBar.dropEvent" ID="TabBar.dropEvent"></a> <h4>TabBar.dropEvent</h4> @@ -130,9 +130,9 @@ <p> Protected method to handle drop events. </p><dl> -<dt><i>event</i></dt> +<dt><i>event</i> (QDropEvent)</dt> <dd> -reference to the drop event (QDropEvent) +reference to the drop event </dd> </dl><a NAME="TabBar.mouseMoveEvent" ID="TabBar.mouseMoveEvent"></a> <h4>TabBar.mouseMoveEvent</h4> @@ -140,9 +140,9 @@ <p> Protected method to handle mouse move events. </p><dl> -<dt><i>event</i></dt> +<dt><i>event</i> (QMouseEvent)</dt> <dd> -reference to the mouse move event (QMouseEvent) +reference to the mouse move event </dd> </dl><a NAME="TabBar.mousePressEvent" ID="TabBar.mousePressEvent"></a> <h4>TabBar.mousePressEvent</h4> @@ -150,9 +150,9 @@ <p> Protected method to handle mouse press events. </p><dl> -<dt><i>event</i></dt> +<dt><i>event</i> (QMouseEvent)</dt> <dd> -reference to the mouse press event (QMouseEvent) +reference to the mouse press event </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -291,9 +291,9 @@ <p> Constructor </p><dl> -<dt><i>vm</i></dt> +<dt><i>vm</i> (Tabview)</dt> <dd> -view manager widget (Tabview) +view manager widget </dd> </dl><a NAME="TabWidget.__captionChange" ID="TabWidget.__captionChange"></a> <h4>TabWidget.__captionChange</h4> @@ -304,10 +304,10 @@ Updates the tab text and tooltip text to reflect the new caption information. </p><dl> -<dt><i>cap</i></dt> +<dt><i>cap</i> (str)</dt> <dd> Caption for the editor -</dd><dt><i>editor</i></dt> +</dd><dt><i>editor</i> (Editor)</dt> <dd> Editor to update the caption for </dd> @@ -399,12 +399,12 @@ <p> Private method to copy an editor. </p><dl> -<dt><i>sourceIndex</i></dt> +<dt><i>sourceIndex</i> (int)</dt> <dd> -index of the tab (integer) -</dd><dt><i>targetIndex</i></dt> +index of the tab +</dd><dt><i>targetIndex</i> (int)</dt> <dd> -index position to place it to (integer) +index position to place it to </dd> </dl><a NAME="TabWidget.__copyTabOther" ID="TabWidget.__copyTabOther"></a> <h4>TabWidget.__copyTabOther</h4> @@ -412,15 +412,15 @@ <p> Private method to copy an editor from another TabWidget. </p><dl> -<dt><i>sourceId</i></dt> +<dt><i>sourceId</i> (str)</dt> <dd> -id of the TabWidget to get the editor from (string) -</dd><dt><i>sourceIndex</i></dt> +id of the TabWidget to get the editor from +</dd><dt><i>sourceIndex</i> (int)</dt> <dd> -index of the tab in the old tab widget (integer) -</dd><dt><i>targetIndex</i></dt> +index of the tab in the old tab widget +</dd><dt><i>targetIndex</i> (int)</dt> <dd> -index position to place it to (integer) +index position to place it to </dd> </dl><a NAME="TabWidget.__cursorLineChanged" ID="TabWidget.__cursorLineChanged"></a> <h4>TabWidget.__cursorLineChanged</h4> @@ -428,7 +428,7 @@ <p> Private slot to handle a change of the current editor's cursor line. </p><dl> -<dt><i>lineno</i></dt> +<dt><i>lineno</i> (int)</dt> <dd> line number of the current editor's cursor (zero based) </dd> @@ -443,9 +443,9 @@ <p> Private slot called to handle the navigation button menu selection. </p><dl> -<dt><i>act</i></dt> +<dt><i>act</i> (QAction)</dt> <dd> -reference to the selected action (QAction) +reference to the selected action </dd> </dl><a NAME="TabWidget.__relocateTab" ID="TabWidget.__relocateTab"></a> <h4>TabWidget.__relocateTab</h4> @@ -453,15 +453,15 @@ <p> Private method to relocate an editor from another TabWidget. </p><dl> -<dt><i>sourceId</i></dt> +<dt><i>sourceId</i> (str)</dt> <dd> -id of the TabWidget to get the editor from (string) -</dd><dt><i>sourceIndex</i></dt> +id of the TabWidget to get the editor from +</dd><dt><i>sourceIndex</i> (int)</dt> <dd> -index of the tab in the old tab widget (integer) -</dd><dt><i>targetIndex</i></dt> +index of the tab in the old tab widget +</dd><dt><i>targetIndex</i> (int)</dt> <dd> -index position to place it to (integer) +index position to place it to </dd> </dl><a NAME="TabWidget.__showContextMenu" ID="TabWidget.__showContextMenu"></a> <h4>TabWidget.__showContextMenu</h4> @@ -469,12 +469,12 @@ <p> Private slot to show the tab context menu. </p><dl> -<dt><i>coord</i></dt> +<dt><i>coord</i> (QPoint)</dt> <dd> -the position of the mouse pointer (QPoint) -</dd><dt><i>index</i></dt> +the position of the mouse pointer +</dd><dt><i>index</i> (int)</dt> <dd> -index of the tab the menu is requested for (integer) +index of the tab the menu is requested for </dd> </dl><a NAME="TabWidget.__showNavigationMenu" ID="TabWidget.__showNavigationMenu"></a> <h4>TabWidget.__showNavigationMenu</h4> @@ -487,13 +487,12 @@ <p> Public method to add a new tab. </p><dl> -<dt><i>assembly</i></dt> +<dt><i>assembly</i> (QScintilla.EditorAssembly.EditorAssembly)</dt> <dd> editor assembly object to be added - (QScintilla.EditorAssembly.EditorAssembly) -</dd><dt><i>title</i></dt> +</dd><dt><i>title</i> (str)</dt> <dd> -title for the new tab (string) +title for the new tab </dd> </dl><a NAME="TabWidget.currentWidget" ID="TabWidget.currentWidget"></a> <h4>TabWidget.currentWidget</h4> @@ -503,7 +502,12 @@ </p><dl> <dt>Returns:</dt> <dd> -reference to the current page (Editor) +reference to the current page +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +Editor </dd> </dl><a NAME="TabWidget.hasEditor" ID="TabWidget.hasEditor"></a> <h4>TabWidget.hasEditor</h4> @@ -511,7 +515,7 @@ <p> Public method to check for an editor. </p><dl> -<dt><i>editor</i></dt> +<dt><i>editor</i> (Editor)</dt> <dd> editor object to check for </dd> @@ -521,6 +525,11 @@ flag indicating, whether the editor to be checked belongs to the list of editors managed by this tab widget. </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="TabWidget.hasEditors" ID="TabWidget.hasEditors"></a> <h4>TabWidget.hasEditors</h4> <b>hasEditors</b>(<i></i>) @@ -531,20 +540,30 @@ <dd> flag indicating editors are managed </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="TabWidget.indexOf" ID="TabWidget.indexOf"></a> <h4>TabWidget.indexOf</h4> <b>indexOf</b>(<i>widget</i>) <p> Public method to get the tab index of the given editor. </p><dl> -<dt><i>widget</i></dt> +<dt><i>widget</i> (QLabel or Editor)</dt> <dd> -widget to get the index for (QLabel or Editor) +widget to get the index for </dd> </dl><dl> <dt>Returns:</dt> <dd> -tab index of the editor (integer) +tab index of the editor +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +int </dd> </dl><a NAME="TabWidget.insertWidget" ID="TabWidget.insertWidget"></a> <h4>TabWidget.insertWidget</h4> @@ -552,21 +571,25 @@ <p> Public method to insert a new tab. </p><dl> -<dt><i>index</i></dt> +<dt><i>index</i> (int)</dt> <dd> -index position for the new tab (integer) -</dd><dt><i>assembly</i></dt> +index position for the new tab +</dd><dt><i>assembly</i> (QScintilla.EditorAssembly.EditorAssembly)</dt> <dd> editor assembly object to be added - (QScintilla.EditorAssembly.EditorAssembly) -</dd><dt><i>title</i></dt> +</dd><dt><i>title</i> (str)</dt> <dd> -title for the new tab (string) +title for the new tab </dd> </dl><dl> <dt>Returns:</dt> <dd> -index of the inserted tab (integer) +index of the inserted tab +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +int </dd> </dl><a NAME="TabWidget.mouseDoubleClickEvent" ID="TabWidget.mouseDoubleClickEvent"></a> <h4>TabWidget.mouseDoubleClickEvent</h4> @@ -584,9 +607,9 @@ <p> Public method to remove a widget. </p><dl> -<dt><i>widget</i></dt> +<dt><i>widget</i> (QWidget)</dt> <dd> -widget to be removed (QWidget) +widget to be removed </dd> </dl><a NAME="TabWidget.setCurrentWidget" ID="TabWidget.setCurrentWidget"></a> <h4>TabWidget.setCurrentWidget</h4> @@ -594,10 +617,9 @@ <p> Public method to set the current tab by the given editor assembly. </p><dl> -<dt><i>assembly</i></dt> +<dt><i>assembly</i> (EditorAssembly.EditorAssembly)</dt> <dd> editor assembly to determine current tab from - (EditorAssembly.EditorAssembly) </dd> </dl><a NAME="TabWidget.showIndicator" ID="TabWidget.showIndicator"></a> <h4>TabWidget.showIndicator</h4> @@ -605,9 +627,9 @@ <p> Public slot to set the indicator on or off. </p><dl> -<dt><i>on</i></dt> +<dt><i>on</i> (bool)</dt> <dd> -flag indicating the dtate of the indicator (boolean) +flag indicating the state of the indicator </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -751,6 +773,9 @@ <td><a href="#Tabview.eventFilter">eventFilter</a></td> <td>Public method called to filter the event queue.</td> </tr><tr> +<td><a href="#Tabview.getOpenEditorsForSession">getOpenEditorsForSession</a></td> +<td>Public method to get a lists of all open editors.</td> +</tr><tr> <td><a href="#Tabview.getSplitOrientation">getSplitOrientation</a></td> <td>Public method to get the orientation of the split view.</td> </tr><tr> @@ -773,17 +798,23 @@ <td>Public slot used to move to the previous split.</td> </tr><tr> <td><a href="#Tabview.removeSplit">removeSplit</a></td> -<td>Public method used to remove the current split view.</td> +<td>Public method used to remove the current split view or a split view by index.</td> </tr><tr> <td><a href="#Tabview.setEditorName">setEditorName</a></td> <td>Public method to change the displayed name of the editor.</td> </tr><tr> +<td><a href="#Tabview.setSplitCount">setSplitCount</a></td> +<td>Public method to set the number of split views.</td> +</tr><tr> <td><a href="#Tabview.setSplitOrientation">setSplitOrientation</a></td> <td>Public method used to set the orientation of the split view.</td> </tr><tr> <td><a href="#Tabview.showWindowMenu">showWindowMenu</a></td> <td>Public method to set up the viewmanager part of the Window menu.</td> </tr><tr> +<td><a href="#Tabview.splitCount">splitCount</a></td> +<td>Public method to get the number of splitted views.</td> +</tr><tr> <td><a href="#Tabview.tile">tile</a></td> <td>Public method to tile the managed windows.</td> </tr> @@ -798,9 +829,9 @@ <p> Constructor </p><dl> -<dt><i>parent</i></dt> +<dt><i>parent</i> (QWidget)</dt> <dd> -parent widget (QWidget) +parent widget </dd> </dl><a NAME="Tabview.__currentChanged" ID="Tabview.__currentChanged"></a> <h4>Tabview.__currentChanged</h4> @@ -808,29 +839,33 @@ <p> Private slot to handle the currentChanged signal. </p><dl> -<dt><i>index</i></dt> +<dt><i>index</i> (int)</dt> <dd> -index of the current tab (integer) +index of the current tab </dd> </dl><a NAME="Tabview._addView" ID="Tabview._addView"></a> <h4>Tabview._addView</h4> -<b>_addView</b>(<i>win, fn=None, noName="", addNext=False</i>) +<b>_addView</b>(<i>win, fn=None, noName="", addNext=False, indexes=None</i>) <p> Protected method to add a view (i.e. window). </p><dl> -<dt><i>win</i></dt> +<dt><i>win</i> (EditorAssembly)</dt> <dd> editor assembly to be added -</dd><dt><i>fn</i></dt> +</dd><dt><i>fn</i> (str)</dt> <dd> -filename of this editor (string) -</dd><dt><i>noName</i></dt> +filename of this editor +</dd><dt><i>noName</i> (str)</dt> <dd> -name to be used for an unnamed editor (string) -</dd><dt><i>addNext</i></dt> +name to be used for an unnamed editor +</dd><dt><i>addNext</i> (bool)</dt> <dd> flag indicating to add the view next to the current - view (bool) + view +</dd><dt><i>indexes</i> (tuple of two int)</dt> +<dd> +of the editor, first the split view index, second the + index within the view </dd> </dl><a NAME="Tabview._initWindowActions" ID="Tabview._initWindowActions"></a> <h4>Tabview._initWindowActions</h4> @@ -844,10 +879,10 @@ <p> Protected slot to handle the modificationStatusChanged signal. </p><dl> -<dt><i>m</i></dt> +<dt><i>m</i> (bool)</dt> <dd> -flag indicating the modification status (boolean) -</dd><dt><i>editor</i></dt> +flag indicating the modification status +</dd><dt><i>editor</i> (Editor)</dt> <dd> editor window changed </dd> @@ -862,7 +897,7 @@ <p> Protected method to remove a view (i.e. window). </p><dl> -<dt><i>win</i></dt> +<dt><i>win</i> (Editor)</dt> <dd> editor window to be removed </dd> @@ -872,12 +907,12 @@ <p> Protected method to show a view (i.e. window). </p><dl> -<dt><i>win</i></dt> +<dt><i>win</i> (EditorAssembly)</dt> <dd> editor assembly to be shown -</dd><dt><i>fn</i></dt> +</dd><dt><i>fn</i> (str)</dt> <dd> -filename of this editor (string) +filename of this editor </dd> </dl><a NAME="Tabview._syntaxErrorToggled" ID="Tabview._syntaxErrorToggled"></a> <h4>Tabview._syntaxErrorToggled</h4> @@ -885,7 +920,7 @@ <p> Protected slot to handle the syntaxerrorToggled signal. </p><dl> -<dt><i>editor</i></dt> +<dt><i>editor</i> (Editor)</dt> <dd> editor that sent the signal </dd> @@ -899,6 +934,11 @@ <dd> reference to the active editor </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +Editor +</dd> </dl><a NAME="Tabview.addSplit" ID="Tabview.addSplit"></a> <h4>Tabview.addSplit</h4> <b>addSplit</b>(<i></i>) @@ -914,6 +954,11 @@ <dd> flag indicating cascading of windows is available </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="Tabview.canSplit" ID="Tabview.canSplit"></a> <h4>Tabview.canSplit</h4> <b>canSplit</b>(<i></i>) @@ -924,6 +969,11 @@ <dd> flag indicating splitting of the view is available. </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="Tabview.canTile" ID="Tabview.canTile"></a> <h4>Tabview.canTile</h4> <b>canTile</b>(<i></i>) @@ -934,6 +984,11 @@ <dd> flag indicating tiling of windows is available </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="Tabview.cascade" ID="Tabview.cascade"></a> <h4>Tabview.cascade</h4> <b>cascade</b>(<i></i>) @@ -945,18 +1000,41 @@ <p> Public method called to filter the event queue. </p><dl> -<dt><i>watched</i></dt> +<dt><i>watched</i> (QObject)</dt> <dd> -the QObject being watched (QObject) -</dd><dt><i>event</i></dt> +the QObject being watched +</dd><dt><i>event</i> (QEvent)</dt> <dd> -the event that occurred (QEvent) +the event that occurred </dd> </dl><dl> <dt>Returns:</dt> <dd> always False </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl><a NAME="Tabview.getOpenEditorsForSession" ID="Tabview.getOpenEditorsForSession"></a> +<h4>Tabview.getOpenEditorsForSession</h4> +<b>getOpenEditorsForSession</b>(<i></i>) +<p> + Public method to get a lists of all open editors. +</p><p> + The returned list contains one list per split view. If the view manager + cannot split the view, only one list of editors is returned. +</p><dl> +<dt>Returns:</dt> +<dd> +list of list of editor references +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of list of Editor +</dd> </dl><a NAME="Tabview.getSplitOrientation" ID="Tabview.getSplitOrientation"></a> <h4>Tabview.getSplitOrientation</h4> <b>getSplitOrientation</b>(<i></i>) @@ -965,7 +1043,12 @@ </p><dl> <dt>Returns:</dt> <dd> -orientation of the split (Qt.Horizontal or Qt.Vertical) +orientation of the split +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +Qt.Horizontal or Qt.Vertical </dd> </dl><a NAME="Tabview.getTabWidgetById" ID="Tabview.getTabWidgetById"></a> <h4>Tabview.getTabWidgetById</h4> @@ -973,14 +1056,19 @@ <p> Public method to get a reference to a tab widget knowing its ID. </p><dl> -<dt><i>id_</i></dt> +<dt><i>id_</i> (int)</dt> <dd> -id of the tab widget (long) +id of the tab widget </dd> </dl><dl> <dt>Returns:</dt> <dd> -reference to the tab widget (TabWidget) +reference to the tab widget +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +TabWidget </dd> </dl><a NAME="Tabview.insertView" ID="Tabview.insertView"></a> <h4>Tabview.insertView</h4> @@ -988,22 +1076,21 @@ <p> Public method to add a view (i.e. window). </p><dl> -<dt><i>win</i></dt> +<dt><i>win</i> (EditorAssembly)</dt> <dd> editor assembly to be inserted -</dd><dt><i>tabWidget</i></dt> +</dd><dt><i>tabWidget</i> (TabWidget)</dt> <dd> reference to the tab widget to insert the editor into - (TabWidget) -</dd><dt><i>index</i></dt> +</dd><dt><i>index</i> (int)</dt> +<dd> +index position to insert at +</dd><dt><i>fn</i> (str)</dt> <dd> -index position to insert at (integer) -</dd><dt><i>fn</i></dt> +filename of this editor +</dd><dt><i>noName</i> (str)</dt> <dd> -filename of this editor (string) -</dd><dt><i>noName</i></dt> -<dd> -name to be used for an unnamed editor (string) +name to be used for an unnamed editor </dd> </dl><a NAME="Tabview.mainWidget" ID="Tabview.mainWidget"></a> <h4>Tabview.mainWidget</h4> @@ -1038,13 +1125,25 @@ Public slot used to move to the previous split. </p><a NAME="Tabview.removeSplit" ID="Tabview.removeSplit"></a> <h4>Tabview.removeSplit</h4> -<b>removeSplit</b>(<i></i>) +<b>removeSplit</b>(<i>index=-1</i>) <p> - Public method used to remove the current split view. + Public method used to remove the current split view or a split view + by index. </p><dl> +<dt><i>index</i> (int)</dt> +<dd> +index of the split to be removed (-1 means to + delete the current split) +</dd> +</dl><dl> <dt>Returns:</dt> <dd> -flag indicating successfull removal +flag indicating successful deletion +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool </dd> </dl><a NAME="Tabview.setEditorName" ID="Tabview.setEditorName"></a> <h4>Tabview.setEditorName</h4> @@ -1052,12 +1151,22 @@ <p> Public method to change the displayed name of the editor. </p><dl> -<dt><i>editor</i></dt> +<dt><i>editor</i> (Editor)</dt> <dd> editor window to be changed -</dd><dt><i>newName</i></dt> +</dd><dt><i>newName</i> (str)</dt> <dd> -new name to be shown (string) +new name to be shown +</dd> +</dl><a NAME="Tabview.setSplitCount" ID="Tabview.setSplitCount"></a> +<h4>Tabview.setSplitCount</h4> +<b>setSplitCount</b>(<i>count</i>) +<p> + Public method to set the number of split views. +</p><dl> +<dt><i>count</i> (int)</dt> +<dd> +number of split views </dd> </dl><a NAME="Tabview.setSplitOrientation" ID="Tabview.setSplitOrientation"></a> <h4>Tabview.setSplitOrientation</h4> @@ -1065,10 +1174,9 @@ <p> Public method used to set the orientation of the split view. </p><dl> -<dt><i>orientation</i></dt> +<dt><i>orientation</i> (Qt.Horizontal or Qt.Vertical)</dt> <dd> orientation of the split - (Qt.Horizontal or Qt.Vertical) </dd> </dl><a NAME="Tabview.showWindowMenu" ID="Tabview.showWindowMenu"></a> <h4>Tabview.showWindowMenu</h4> @@ -1076,10 +1184,25 @@ <p> Public method to set up the viewmanager part of the Window menu. </p><dl> -<dt><i>windowMenu</i></dt> +<dt><i>windowMenu</i> (QMenu)</dt> <dd> reference to the window menu </dd> +</dl><a NAME="Tabview.splitCount" ID="Tabview.splitCount"></a> +<h4>Tabview.splitCount</h4> +<b>splitCount</b>(<i></i>) +<p> + Public method to get the number of splitted views. +</p><dl> +<dt>Returns:</dt> +<dd> +number of splitted views +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +int +</dd> </dl><a NAME="Tabview.tile" ID="Tabview.tile"></a> <h4>Tabview.tile</h4> <b>tile</b>(<i></i>)
--- a/Documentation/Source/eric6.QScintilla.Editor.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.QScintilla.Editor.html Thu Jan 18 18:57:40 2018 +0100 @@ -294,6 +294,9 @@ <td><a href="#Editor.__eolMenuTriggered">__eolMenuTriggered</a></td> <td>Private method to handle the selection of an eol type.</td> </tr><tr> +<td><a href="#Editor.__executeSelection">__executeSelection</a></td> +<td>Private slot to execute the selected text in the shell window.</td> +</tr><tr> <td><a href="#Editor.__exportMenuTriggered">__exportMenuTriggered</a></td> <td>Private method to handle the selection of an export format.</td> </tr><tr> @@ -939,6 +942,9 @@ <td><a href="#Editor.indentLineOrSelection">indentLineOrSelection</a></td> <td>Public slot to indent the current line or current selection.</td> </tr><tr> +<td><a href="#Editor.isClone">isClone</a></td> +<td>Public method to test, if the given editor is a clone.</td> +</tr><tr> <td><a href="#Editor.isJavascriptFile">isJavascriptFile</a></td> <td>Public method to return a flag indicating a Javascript file.</td> </tr><tr> @@ -1697,7 +1703,12 @@ <dd> reference to the action that was triggered (QAction) </dd> -</dl><a NAME="Editor.__exportMenuTriggered" ID="Editor.__exportMenuTriggered"></a> +</dl><a NAME="Editor.__executeSelection" ID="Editor.__executeSelection"></a> +<h4>Editor.__executeSelection</h4> +<b>__executeSelection</b>(<i></i>) +<p> + Private slot to execute the selected text in the shell window. +</p><a NAME="Editor.__exportMenuTriggered" ID="Editor.__exportMenuTriggered"></a> <h4>Editor.__exportMenuTriggered</h4> <b>__exportMenuTriggered</b>(<i>act</i>) <p> @@ -2691,9 +2702,9 @@ <p> Public method to add a clone to our list. </p><dl> -<dt><i>editor</i></dt> -<dd> -reference to the cloned editor (Editor) +<dt><i>editor</i> (Editor)</dt> +<dd> +reference to the cloned editor </dd> </dl><a NAME="Editor.addCompletionListHook" ID="Editor.addCompletionListHook"></a> <h4>Editor.addCompletionListHook</h4> @@ -3752,7 +3763,27 @@ <b>indentLineOrSelection</b>(<i></i>) <p> Public slot to indent the current line or current selection. -</p><a NAME="Editor.isJavascriptFile" ID="Editor.isJavascriptFile"></a> +</p><a NAME="Editor.isClone" ID="Editor.isClone"></a> +<h4>Editor.isClone</h4> +<b>isClone</b>(<i>editor</i>) +<p> + Public method to test, if the given editor is a clone. +</p><dl> +<dt><i>editor</i> (Editor)</dt> +<dd> +reference to the cloned editor +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating a clone +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl><a NAME="Editor.isJavascriptFile" ID="Editor.isJavascriptFile"></a> <h4>Editor.isJavascriptFile</h4> <b>isJavascriptFile</b>(<i></i>) <p> @@ -4076,9 +4107,9 @@ <p> Public method to remove a clone from our list. </p><dl> -<dt><i>editor</i></dt> -<dd> -reference to the cloned editor (Editor) +<dt><i>editor</i> (Editor)</dt> +<dd> +reference to the cloned editor </dd> </dl><a NAME="Editor.removeCompletionListHook" ID="Editor.removeCompletionListHook"></a> <h4>Editor.removeCompletionListHook</h4>
--- a/Documentation/Source/eric6.QScintilla.QsciScintillaCompat.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.QScintilla.QsciScintillaCompat.html Thu Jan 18 18:57:40 2018 +0100 @@ -91,6 +91,9 @@ <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> +<td><a href="#QsciScintillaCompat.canPaste">canPaste</a></td> +<td>Public method to test, if the paste action is available (i.e.</td> +</tr><tr> <td><a href="#QsciScintillaCompat.charAt">charAt</a></td> <td>Public method to get the character at a position in the text observing multibyte characters.</td> </tr><tr> @@ -492,6 +495,22 @@ raw character at the requested position or empty bytes, if the position is negative or past the end of the document (bytes) </dd> +</dl><a NAME="QsciScintillaCompat.canPaste" ID="QsciScintillaCompat.canPaste"></a> +<h4>QsciScintillaCompat.canPaste</h4> +<b>canPaste</b>(<i></i>) +<p> + Public method to test, if the paste action is available (i.e. if the + clipboard contains some text). +</p><dl> +<dt>Returns:</dt> +<dd> +flag indicating the availability of 'paste' +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="QsciScintillaCompat.charAt" ID="QsciScintillaCompat.charAt"></a> <h4>QsciScintillaCompat.charAt</h4> <b>charAt</b>(<i>pos</i>)
--- a/Documentation/Source/eric6.ViewManager.ViewManager.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.ViewManager.ViewManager.html Thu Jan 18 18:57:40 2018 +0100 @@ -777,6 +777,9 @@ <td><a href="#ViewManager.getOpenEditorsCount">getOpenEditorsCount</a></td> <td>Public method to get the number of open editors.</td> </tr><tr> +<td><a href="#ViewManager.getOpenEditorsForSession">getOpenEditorsForSession</a></td> +<td>Public method to get a lists of all open editors.</td> +</tr><tr> <td><a href="#ViewManager.getOpenFilenames">getOpenFilenames</a></td> <td>Public method returning a list of the filenames of all editors.</td> </tr><tr> @@ -886,7 +889,7 @@ <td>Public slot to handle received editor commands.</td> </tr><tr> <td><a href="#ViewManager.removeSplit">removeSplit</a></td> -<td>Public method used to remove the current split view.</td> +<td>Public method used to remove the current split view or a split view by index.</td> </tr><tr> <td><a href="#ViewManager.replaceWidget">replaceWidget</a></td> <td>Public method to get a reference to the replace widget.</td> @@ -942,6 +945,9 @@ <td><a href="#ViewManager.setSbInfo">setSbInfo</a></td> <td>Public method to transfer statusbar info from the user interface to viewmanager.</td> </tr><tr> +<td><a href="#ViewManager.setSplitCount">setSplitCount</a></td> +<td>Public method to set the number of split views.</td> +</tr><tr> <td><a href="#ViewManager.setSplitOrientation">setSplitOrientation</a></td> <td>Public method used to set the orientation of the split view.</td> </tr><tr> @@ -966,6 +972,9 @@ <td><a href="#ViewManager.showWindowMenu">showWindowMenu</a></td> <td>Public method to set up the viewmanager part of the Window menu.</td> </tr><tr> +<td><a href="#ViewManager.splitCount">splitCount</a></td> +<td>Public method to get the number of split views.</td> +</tr><tr> <td><a href="#ViewManager.startSharedEdit">startSharedEdit</a></td> <td>Public slot to start a shared edit session for the current editor.</td> </tr><tr> @@ -1923,23 +1932,27 @@ </dd> </dl><a NAME="ViewManager._addView" ID="ViewManager._addView"></a> <h4>ViewManager._addView</h4> -<b>_addView</b>(<i>win, fn=None, noName="", addNext=False</i>) +<b>_addView</b>(<i>win, fn=None, noName="", addNext=False, indexes=None</i>) <p> Protected method to add a view (i.e. window). </p><dl> -<dt><i>win</i></dt> +<dt><i>win</i> (EditorAssembly)</dt> <dd> editor assembly to be added -</dd><dt><i>fn</i></dt> +</dd><dt><i>fn</i> (str)</dt> <dd> filename of this editor -</dd><dt><i>noName</i></dt> +</dd><dt><i>noName</i> (str)</dt> <dd> -name to be used for an unnamed editor (string) -</dd><dt><i>addNext</i></dt> +name to be used for an unnamed editor +</dd><dt><i>addNext</i> (bool)</dt> <dd> flag indicating to add the view next to the current - view (bool) + view +</dd><dt><i>indexes</i> (tuple of two int)</dt> +<dd> +of the editor, first the split view index, second the + index within the view </dd> </dl><dl> <dt>Raises <b>RuntimeError</b>:</dt> @@ -2392,23 +2405,27 @@ </dd> </dl><a NAME="ViewManager.getEditor" ID="ViewManager.getEditor"></a> <h4>ViewManager.getEditor</h4> -<b>getEditor</b>(<i>fn, filetype="", addNext=False</i>) +<b>getEditor</b>(<i>fn, filetype="", addNext=False, indexes=None</i>) <p> Public method to return the editor displaying the given file. </p><p> If there is no editor with the given file, a new editor window is created. </p><dl> -<dt><i>fn</i></dt> +<dt><i>fn</i> (str)</dt> <dd> filename to look for -</dd><dt><i>filetype</i></dt> +</dd><dt><i>filetype</i> (str)</dt> <dd> -type of the source file (string) -</dd><dt><i>addNext</i></dt> +type of the source file +</dd><dt><i>addNext</i> (bool)</dt> <dd> flag indicating that if a new editor needs to be - created, it should be added next to the current editor (bool) + created, it should be added next to the current editor +</dd><dt><i>indexes</i> (tuple of two int)</dt> +<dd> +of the editor, first the split view index, second the + index within the view </dd> </dl><dl> <dt>Returns:</dt> @@ -2416,6 +2433,11 @@ tuple of two values giving a flag indicating a new window creation and a reference to the editor displaying this file </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, Editor) +</dd> </dl><a NAME="ViewManager.getMostRecent" ID="ViewManager.getMostRecent"></a> <h4>ViewManager.getMostRecent</h4> <b>getMostRecent</b>(<i></i>) @@ -2488,6 +2510,26 @@ <dd> number of open editors (integer) </dd> +</dl><a NAME="ViewManager.getOpenEditorsForSession" ID="ViewManager.getOpenEditorsForSession"></a> +<h4>ViewManager.getOpenEditorsForSession</h4> +<b>getOpenEditorsForSession</b>(<i></i>) +<p> + Public method to get a lists of all open editors. +</p><p> + The returned list contains one list per split view. If the view manager + cannot split the view, only one list of editors is returned. +</p><p> + Note: This method should be implemented by subclasses. +</p><dl> +<dt>Returns:</dt> +<dd> +list of list of editor references +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of list of Editor +</dd> </dl><a NAME="ViewManager.getOpenFilenames" ID="ViewManager.getOpenFilenames"></a> <h4>ViewManager.getOpenFilenames</h4> <b>getOpenFilenames</b>(<i></i>) @@ -2748,19 +2790,33 @@ Public slot to generate a new empty editor. </p><a NAME="ViewManager.newEditorView" ID="ViewManager.newEditorView"></a> <h4>ViewManager.newEditorView</h4> -<b>newEditorView</b>(<i>fn, caller, filetype=""</i>) +<b>newEditorView</b>(<i>fn, caller, filetype="", indexes=None</i>) <p> Public method to create a new editor displaying the given document. </p><dl> -<dt><i>fn</i></dt> +<dt><i>fn</i> (str)</dt> <dd> filename of this view -</dd><dt><i>caller</i></dt> +</dd><dt><i>caller</i> (Editor)</dt> <dd> reference to the editor calling this method -</dd><dt><i>filetype</i></dt> +</dd><dt><i>filetype</i> (str)</dt> +<dd> +type of the source file +</dd><dt><i>indexes</i> (tuple of two int)</dt> <dd> -type of the source file (string) +of the editor, first the split view index, second the + index within the view +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +reference to the new editor object +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +Editor </dd> </dl><a NAME="ViewManager.nextSplit" ID="ViewManager.nextSplit"></a> <h4>ViewManager.nextSplit</h4> @@ -2779,34 +2835,48 @@ </dd> </dl><a NAME="ViewManager.openSourceFile" ID="ViewManager.openSourceFile"></a> <h4>ViewManager.openSourceFile</h4> -<b>openSourceFile</b>(<i>fn, lineno=-1, filetype="", selStart=0, selEnd=0, pos=0, addNext=False</i>) +<b>openSourceFile</b>(<i>fn, lineno=-1, filetype="", selStart=0, selEnd=0, pos=0, addNext=False, indexes=None</i>) <p> Public slot to display a file in an editor. </p><dl> -<dt><i>fn</i></dt> +<dt><i>fn</i> (str)</dt> <dd> -name of file to be opened (string) -</dd><dt><i>lineno</i></dt> +name of file to be opened +</dd><dt><i>lineno</i> (int or list of int)</dt> <dd> -line number to place the cursor at (integer) or - list of line numbers (list of integers) (cursor will be - placed at the next line greater than the current one) -</dd><dt><i>filetype</i></dt> +line number to place the cursor at or list of line + numbers (cursor will be placed at the next line greater than + the current one) +</dd><dt><i>filetype</i> (str)</dt> <dd> -type of the source file (string) -</dd><dt><i>selStart</i></dt> +type of the source file +</dd><dt><i>selStart</i> (int)</dt> <dd> -start of an area to be selected (integer) -</dd><dt><i>selEnd</i></dt> +start of an area to be selected +</dd><dt><i>selEnd</i> (int)</dt> <dd> -end of an area to be selected (integer) -</dd><dt><i>pos</i></dt> +end of an area to be selected +</dd><dt><i>pos</i> (int)</dt> <dd> -position within the line to place the cursor at (integer) -</dd><dt><i>addNext</i></dt> +position within the line to place the cursor at +</dd><dt><i>addNext</i> (bool)</dt> <dd> flag indicating to add the file next to the current - editor (bool) + editor +</dd><dt><i>indexes</i> (tuple of two int)</dt> +<dd> +of the editor, first the split view index, second the + index within the view +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +reference to the opened editor +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +Editor </dd> </dl><a NAME="ViewManager.preferencesChanged" ID="ViewManager.preferencesChanged"></a> <h4>ViewManager.preferencesChanged</h4> @@ -2893,13 +2963,25 @@ </dd> </dl><a NAME="ViewManager.removeSplit" ID="ViewManager.removeSplit"></a> <h4>ViewManager.removeSplit</h4> -<b>removeSplit</b>(<i></i>) +<b>removeSplit</b>(<i>index=-1</i>) <p> - Public method used to remove the current split view. + Public method used to remove the current split view or a split view + by index. </p><dl> +<dt><i>index</i> (int)</dt> +<dd> +index of the split to be removed (-1 means to + delete the current split) +</dd> +</dl><dl> <dt>Returns:</dt> <dd> -Flag indicating successful deletion +flag indicating successful deletion +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool </dd> </dl><a NAME="ViewManager.replaceWidget" ID="ViewManager.replaceWidget"></a> <h4>ViewManager.replaceWidget</h4> @@ -3118,6 +3200,16 @@ <dd> reference to the zoom widget (E5ZoomWidget) </dd> +</dl><a NAME="ViewManager.setSplitCount" ID="ViewManager.setSplitCount"></a> +<h4>ViewManager.setSplitCount</h4> +<b>setSplitCount</b>(<i>count</i>) +<p> + Public method to set the number of split views. +</p><dl> +<dt><i>count</i> (int)</dt> +<dd> +number of split views +</dd> </dl><a NAME="ViewManager.setSplitOrientation" ID="ViewManager.setSplitOrientation"></a> <h4>ViewManager.setSplitOrientation</h4> <b>setSplitOrientation</b>(<i>orientation</i>) @@ -3198,6 +3290,21 @@ <dd> Not implemented </dd> +</dl><a NAME="ViewManager.splitCount" ID="ViewManager.splitCount"></a> +<h4>ViewManager.splitCount</h4> +<b>splitCount</b>(<i></i>) +<p> + Public method to get the number of split views. +</p><dl> +<dt>Returns:</dt> +<dd> +number of split views +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +int +</dd> </dl><a NAME="ViewManager.startSharedEdit" ID="ViewManager.startSharedEdit"></a> <h4>ViewManager.startSharedEdit</h4> <b>startSharedEdit</b>(<i></i>)
--- a/Documentation/Source/eric6.WebBrowser.AdBlock.AdBlockRule.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.WebBrowser.AdBlock.AdBlockRule.html Thu Jan 18 18:57:40 2018 +0100 @@ -1176,7 +1176,7 @@ Class implementing the rule option enum. </p> <h3>Derived from</h3> -IntFlag +IntEnum <h3>Class Attributes</h3> <table> <tr><td>DocumentOption</td></tr><tr><td>DomainRestrictedOption</td></tr><tr><td>ElementHideOption</td></tr><tr><td>FontOption</td></tr><tr><td>ImageOption</td></tr><tr><td>MediaOption</td></tr><tr><td>NoOption</td></tr><tr><td>ObjectOption</td></tr><tr><td>ObjectSubrequestOption</td></tr><tr><td>OtherOption</td></tr><tr><td>PingOption</td></tr><tr><td>ScriptOption</td></tr><tr><td>StyleSheetOption</td></tr><tr><td>SubdocumentOption</td></tr><tr><td>ThirdPartyOption</td></tr><tr><td>XMLHttpRequestOption</td></tr> @@ -1202,7 +1202,7 @@ Class implementing the rule type enum. </p> <h3>Derived from</h3> -IntFlag +IntEnum <h3>Class Attributes</h3> <table> <tr><td>CssRule</td></tr><tr><td>DomainMatchRule</td></tr><tr><td>Invalid</td></tr><tr><td>MatchAllUrlsRule</td></tr><tr><td>RegExpMatchRule</td></tr><tr><td>StringContainsMatchRule</td></tr><tr><td>StringEndsMatchRule</td></tr>
--- a/Documentation/Source/eric6.WebBrowser.Download.DownloadItem.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.WebBrowser.Download.DownloadItem.html Thu Jan 18 18:57:40 2018 +0100 @@ -87,9 +87,6 @@ <td><a href="#DownloadItem.__initialize">__initialize</a></td> <td>Private method to initialize the widget.</td> </tr><tr> -<td><a href="#DownloadItem.__open">__open</a></td> -<td>Private slot to open the downloaded file.</td> -</tr><tr> <td><a href="#DownloadItem.__saveFileName">__saveFileName</a></td> <td>Private method to calculate a name for the file to download.</td> </tr><tr> @@ -144,6 +141,9 @@ <td><a href="#DownloadItem.on_openButton_clicked">on_openButton_clicked</a></td> <td>Private slot to open the downloaded file.</td> </tr><tr> +<td><a href="#DownloadItem.on_pauseButton_clicked">on_pauseButton_clicked</a></td> +<td>Private slot to pause the download.</td> +</tr><tr> <td><a href="#DownloadItem.on_stopButton_clicked">on_stopButton_clicked</a></td> <td>Private slot to stop the download.</td> </tr><tr> @@ -214,11 +214,6 @@ <b>__initialize</b>(<i></i>) <p> Private method to initialize the widget. -</p><a NAME="DownloadItem.__open" ID="DownloadItem.__open"></a> -<h4>DownloadItem.__open</h4> -<b>__open</b>(<i></i>) -<p> - Private slot to open the downloaded file. </p><a NAME="DownloadItem.__saveFileName" ID="DownloadItem.__saveFileName"></a> <h4>DownloadItem.__saveFileName</h4> <b>__saveFileName</b>(<i>directory</i>) @@ -362,14 +357,15 @@ </p><dl> <dt>Returns:</dt> <dd> -tuple of URL, save location, flag, the - URL of the related web page and the date and time - of the download +dictionary containing the URL, save location, done flag, + the URL of the related web page and the date and time of the + download </dd> </dl><dl> <dt>Return Type:</dt> <dd> -tuple of (QUrl, str, bool, QUrl, QDateTime) +dict of {"URL": QUrl, "Location": str, "Done": bool, + "PageURL": QUrl, "Downloaded": QDateTime} </dd> </dl><a NAME="DownloadItem.getInfoData" ID="DownloadItem.getInfoData"></a> <h4>DownloadItem.getInfoData</h4> @@ -396,7 +392,17 @@ <b>on_openButton_clicked</b>(<i></i>) <p> Private slot to open the downloaded file. -</p><a NAME="DownloadItem.on_stopButton_clicked" ID="DownloadItem.on_stopButton_clicked"></a> +</p><a NAME="DownloadItem.on_pauseButton_clicked" ID="DownloadItem.on_pauseButton_clicked"></a> +<h4>DownloadItem.on_pauseButton_clicked</h4> +<b>on_pauseButton_clicked</b>(<i>checked</i>) +<p> + Private slot to pause the download. +</p><dl> +<dt><i>checked</i> (bool)</dt> +<dd> +flag indicating the state of the button +</dd> +</dl><a NAME="DownloadItem.on_stopButton_clicked" ID="DownloadItem.on_stopButton_clicked"></a> <h4>DownloadItem.on_stopButton_clicked</h4> <b>on_stopButton_clicked</b>(<i></i>) <p> @@ -427,11 +433,12 @@ <p> Public method to set the relevant download data. </p><dl> -<dt><i>data</i> (QUrl, str, bool, QUrl, QDateTime)</dt> +<dt><i>data</i> (dict of {"URL": QUrl, "Location": str, "Done": bool,)</dt> <dd> -tuple of URL, save location, flag, the - URL of the related web page and the date and time - of the download +dictionary containing the URL, save location, done flag, + the URL of the related web page and the date and time of the + download + "PageURL": QUrl, "Downloaded": QDateTime} </dd> </dl><a NAME="DownloadItem.setIcon" ID="DownloadItem.setIcon"></a> <h4>DownloadItem.setIcon</h4>
--- a/Documentation/Source/eric6.WebBrowser.Download.DownloadManager.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.WebBrowser.Download.DownloadManager.html Thu Jan 18 18:57:40 2018 +0100 @@ -117,6 +117,9 @@ <td><a href="#DownloadManager.cleanup">cleanup</a></td> <td>Public slot to cleanup the downloads.</td> </tr><tr> +<td><a href="#DownloadManager.closeEvent">closeEvent</a></td> +<td>Protected event handler for the close event.</td> +</tr><tr> <td><a href="#DownloadManager.count">count</a></td> <td>Public method to get the number of downloads.</td> </tr><tr> @@ -290,7 +293,17 @@ <b>cleanup</b>(<i></i>) <p> Public slot to cleanup the downloads. -</p><a NAME="DownloadManager.count" ID="DownloadManager.count"></a> +</p><a NAME="DownloadManager.closeEvent" ID="DownloadManager.closeEvent"></a> +<h4>DownloadManager.closeEvent</h4> +<b>closeEvent</b>(<i>evt</i>) +<p> + Protected event handler for the close event. +</p><dl> +<dt><i>evt</i> (QCloseEvent)</dt> +<dd> +reference to the close event +</dd> +</dl><a NAME="DownloadManager.count" ID="DownloadManager.count"></a> <h4>DownloadManager.count</h4> <b>count</b>(<i></i>) <p>
--- a/Documentation/Source/eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html Thu Jan 18 11:10:57 2018 +0100 +++ b/Documentation/Source/eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html Thu Jan 18 18:57:40 2018 +0100 @@ -58,13 +58,16 @@ QObject <h3>Class Attributes</h3> <table> -<tr><td>None</td></tr> +<tr><td>enabled</td></tr> </table> <h3>Class Methods</h3> <table> <tr> <td><a href="#SafeBrowsingManager.getIgnoreSchemes">getIgnoreSchemes</a></td> <td>Class method to get the schemes not to be checked.</td> +</tr><tr> +<td><a href="#SafeBrowsingManager.isEnabled">isEnabled</a></td> +<td>Class method to check, if safe browsing is enabled.</td> </tr> </table> <h3>Methods</h3> @@ -121,9 +124,6 @@ <td><a href="#SafeBrowsingManager.getThreatType">getThreatType</a></td> <td>Public method to get a display string for a given threat type.</td> </tr><tr> -<td><a href="#SafeBrowsingManager.isEnabled">isEnabled</a></td> -<td>Public method to check, if safe browsing is enabled.</td> -</tr><tr> <td><a href="#SafeBrowsingManager.isUpdatingThreatLists">isUpdatingThreatLists</a></td> <td>Public method to check, if we are in the process of updating the threat lists.</td> </tr><tr> @@ -156,6 +156,21 @@ <dd> list of str </dd> +</dl><a NAME="SafeBrowsingManager.isEnabled" ID="SafeBrowsingManager.isEnabled"></a> +<h4>SafeBrowsingManager.isEnabled (class method)</h4> +<b>isEnabled</b>(<i></i>) +<p> + Class method to check, if safe browsing is enabled. +</p><dl> +<dt>Returns:</dt> +<dd> +flag indicating the enabled state +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="SafeBrowsingManager.__init__" ID="SafeBrowsingManager.__init__"></a> <h4>SafeBrowsingManager (Constructor)</h4> <b>SafeBrowsingManager</b>(<i></i>) @@ -380,21 +395,6 @@ <dd> str </dd> -</dl><a NAME="SafeBrowsingManager.isEnabled" ID="SafeBrowsingManager.isEnabled"></a> -<h4>SafeBrowsingManager.isEnabled</h4> -<b>isEnabled</b>(<i></i>) -<p> - Public method to check, if safe browsing is enabled. -</p><dl> -<dt>Returns:</dt> -<dd> -flag indicating the enabled state -</dd> -</dl><dl> -<dt>Return Type:</dt> -<dd> -bool -</dd> </dl><a NAME="SafeBrowsingManager.isUpdatingThreatLists" ID="SafeBrowsingManager.isUpdatingThreatLists"></a> <h4>SafeBrowsingManager.isUpdatingThreatLists</h4> <b>isUpdatingThreatLists</b>(<i></i>)
--- a/E5Gui/E5TabWidget.py Thu Jan 18 11:10:57 2018 +0100 +++ b/E5Gui/E5TabWidget.py Thu Jan 18 18:57:40 2018 +0100 @@ -43,7 +43,7 @@ delta = event.delta() if delta > 0: self._tabWidget.prevTab() - else: + elif delta < 0: self._tabWidget.nextTab() event.accept()
--- a/E5XML/Config.py Thu Jan 18 11:10:57 2018 +0100 +++ b/E5XML/Config.py Thu Jan 18 18:57:40 2018 +0100 @@ -18,7 +18,7 @@ userProjectFileFormatVersion = "4.0" # version number of the project session file -sessionFileFormatVersion = "6.0" +sessionFileFormatVersion = "6.1" # version number of the shortcuts file shortcutsFileFormatVersion = "3.6"
--- a/E5XML/SessionReader.py Thu Jan 18 11:10:57 2018 +0100 +++ b/E5XML/SessionReader.py Thu Jan 18 18:57:40 2018 +0100 @@ -19,14 +19,16 @@ """ Class for reading an XML session file. """ - supportedVersions = ["4.3", "4.4", "5.0", "6.0"] + supportedVersions = ["4.3", "4.4", "5.0", "6.0", "6.1"] def __init__(self, device, isGlobal): """ Constructor - @param device reference to the I/O device to read from (QIODevice) - @param isGlobal flag indicating to read the global session (boolean). + @param device reference to the I/O device to read from + @type QIODevice + @param isGlobal flag indicating to read the global session + @type bool """ XMLStreamReaderBase.__init__(self, device) @@ -56,7 +58,8 @@ Public method to read and parse the XML document. @param quiet flag indicating quiet operations. - If this flag is true, no errors are reported. + If this flag is true, no errors are reported. + @type bool """ while not self.atEnd(): self.readNext() @@ -92,6 +95,11 @@ self.__readBookmarks() elif self.name() == "ProjectBrowserStates": self.__readProjectBrowserStates() + elif self.name() == "ViewManagerSplits": + splitCount = int(self.attribute("count", "0")) + orientation = int(self.attribute("orientation", "1")) + self.vm.setSplitOrientation(orientation) + self.vm.setSplitCount(splitCount) else: self.raiseUnexpectedStartTag(self.name()) @@ -102,6 +110,7 @@ """ Private method to read the file name infos. """ + editorDict = {} while not self.atEnd(): self.readNext() if self.isEndElement() and self.name() == "Filenames": @@ -117,10 +126,20 @@ else: folds = [] zoom = int(self.attribute("zoom", "-9999")) + cloned = bool(int(self.attribute("cloned", "0"))) + splitIndex = int(self.attribute("splitindex", "0")) + editorIndex = int(self.attribute("editorindex", "-1")) filename = self.readElementText() - self.vm.openFiles(filename) - ed = self.vm.getOpenEditor(filename) + if cloned and filename in editorDict: + editor = editorDict[filename] + ed = self.vm.newEditorView( + filename, editor, editor.getFileType(), + indexes=(splitIndex, editorIndex)) + else: + ed = self.vm.openSourceFile( + filename, indexes=(splitIndex, editorIndex)) + editorDict[filename] = ed if ed is not None: if zoom > -9999: ed.zoomTo(zoom) @@ -366,7 +385,8 @@ """ Private method to read the project browser state info. - @param browserName name of the project browser (string) + @param browserName name of the project browser + @type str """ expandedNames = []
--- a/E5XML/SessionWriter.py Thu Jan 18 11:10:57 2018 +0100 +++ b/E5XML/SessionWriter.py Thu Jan 18 18:57:40 2018 +0100 @@ -27,9 +27,11 @@ """ Constructor - @param device reference to the I/O device to write to (QIODevice) - @param projectName name of the project (string) or None for the + @param device reference to the I/O device to write to + @type QIODevice + @param projectName name of the project or None for the global session + @type str or None """ XMLStreamWriterBase.__init__(self, device) @@ -75,36 +77,44 @@ self.writeTextElement("Project", self.project.getProjectFile()) # step 1: save all open (project) filenames and the active window - allOpenFiles = self.vm.getOpenFilenames() + if self.vm.canSplit(): + self.writeEmptyElement("ViewManagerSplits") + self.writeAttribute("count", str(self.vm.splitCount())) + self.writeAttribute("orientation", + str(self.vm.getSplitOrientation())) + + allOpenEditorLists = self.vm.getOpenEditorsForSession() + editorDict = {} # remember editors by file name to detect clones self.writeStartElement("Filenames") - for of in allOpenFiles: - if isGlobal or of.startswith(self.project.ppath): - ed = self.vm.getOpenEditor(of) - if ed is not None: - line, index = ed.getCursorPosition() + for splitIndex, openEditorList in enumerate(allOpenEditorLists): + for editorIndex, editor in enumerate(openEditorList): + fileName = editor.getFileName() + if isGlobal or self.project.isProjectFile(fileName): + line, index = editor.getCursorPosition() folds = ','.join( - [str(i + 1) for i in ed.contractedFolds()]) - zoom = ed.getZoom() - else: - line, index = 0, 0 - folds = '' - zoom = -9999 - self.writeStartElement("Filename") - self.writeAttribute("cline", str(line)) - self.writeAttribute("cindex", str(index)) - self.writeAttribute("folds", folds) - self.writeAttribute("zoom", str(zoom)) - self.writeCharacters(of) - self.writeEndElement() + [str(i + 1) for i in editor.contractedFolds()]) + zoom = editor.getZoom() + if fileName in editorDict: + isClone = int(editorDict[fileName].isClone(editor)) + else: + isClone = 0 + editorDict[fileName] = editor + self.writeStartElement("Filename") + self.writeAttribute("cline", str(line)) + self.writeAttribute("cindex", str(index)) + self.writeAttribute("folds", folds) + self.writeAttribute("zoom", str(zoom)) + self.writeAttribute("cloned", str(isClone)) + self.writeAttribute("splitindex", str(splitIndex)) + self.writeAttribute("editorindex", str(editorIndex)) + self.writeCharacters(fileName) + self.writeEndElement() self.writeEndElement() aw = self.vm.getActiveName() - if aw and aw.startswith(self.project.ppath): + if aw and self.project.isProjectFile(aw): ed = self.vm.getOpenEditor(aw) - if ed is not None: - line, index = ed.getCursorPosition() - else: - line, index = 0, 0 + line, index = ed.getCursorPosition() self.writeStartElement("ActiveWindow") self.writeAttribute("cline", str(line)) self.writeAttribute("cindex", str(index)) @@ -220,12 +230,12 @@ # step 4: save bookmarks of all open (project) files self.writeStartElement("Bookmarks") - for of in allOpenFiles: - if isGlobal or of.startswith(self.project.ppath): - editor = self.vm.getOpenEditor(of) + for fileName in editorDict: + if isGlobal or self.project.isProjectFile(fileName): + editor = editorDict[fileName] for bookmark in editor.getBookmarks(): self.writeStartElement("Bookmark") - self.writeTextElement("BmFilename", of) + self.writeTextElement("BmFilename", fileName) self.writeEmptyElement("Linenumber") self.writeAttribute("value", str(bookmark)) self.writeEndElement()
--- a/Graphics/PixmapDiagram.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Graphics/PixmapDiagram.py Thu Jan 18 18:57:40 2018 +0100 @@ -194,7 +194,7 @@ delta = evt.delta() if delta < 0: self.__zoomOut() - else: + elif delta > 0: self.__zoomIn() evt.accept() return
--- a/Graphics/SvgDiagram.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Graphics/SvgDiagram.py Thu Jan 18 18:57:40 2018 +0100 @@ -164,7 +164,7 @@ delta = evt.delta() if delta < 0: self.__zoomOut() - else: + elif delta > 0: self.__zoomIn() evt.accept() return
--- a/Graphics/UMLGraphicsView.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Graphics/UMLGraphicsView.py Thu Jan 18 18:57:40 2018 +0100 @@ -608,7 +608,7 @@ delta = evt.delta() if delta < 0: self.zoomOut() - else: + elif delta > 0: self.zoomIn() evt.accept() return
--- a/Helpviewer/Download/DownloadItem.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Helpviewer/Download/DownloadItem.py Thu Jan 18 18:57:40 2018 +0100 @@ -299,14 +299,6 @@ i += 1 return name, origName - def __open(self): - """ - Private slot to open the downloaded file. - """ - info = QFileInfo(self.__output) - url = QUrl.fromLocalFile(info.absoluteFilePath()) - QDesktopServices.openUrl(url) - @pyqtSlot() def on_tryAgainButton_clicked(self): """ @@ -642,7 +634,7 @@ self.downloadFinished.emit() if self.__autoOpen: - self.__open() + self.openFile() def canceledFileSelect(self): """
--- a/Helpviewer/HelpBrowserWV.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Helpviewer/HelpBrowserWV.py Thu Jan 18 18:57:40 2018 +0100 @@ -1880,7 +1880,7 @@ if evt.modifiers() & Qt.ControlModifier: if delta < 0: self.zoomOut() - else: + elif delta > 0: self.zoomIn() evt.accept() return @@ -1888,7 +1888,7 @@ if evt.modifiers() & Qt.ShiftModifier: if delta < 0: self.backward() - else: + elif delta > 0: self.forward() evt.accept() return
--- a/IconEditor/IconEditorWindow.py Thu Jan 18 11:10:57 2018 +0100 +++ b/IconEditor/IconEditorWindow.py Thu Jan 18 18:57:40 2018 +0100 @@ -1359,7 +1359,7 @@ delta = evt.delta() if delta < 0: self.__zoomOut() - else: + elif delta > 0: self.__zoomIn() evt.accept() return
--- a/PluginManager/PluginInfoDialog.py Thu Jan 18 11:10:57 2018 +0100 +++ b/PluginManager/PluginInfoDialog.py Thu Jan 18 18:57:40 2018 +0100 @@ -68,18 +68,20 @@ """ Private method to create a list entry based on the provided info. - @param info tuple giving the info for the entry + @param info dictionary giving the info for the entry (as returned by + PluginManager.getPluginInfos()) + @type dict """ infoList = [ - info[0], - info[1], - info[2], - (info[3] and self.tr("Yes") or self.tr("No")), - (info[4] and self.tr("Yes") or self.tr("No")), - info[5] + info["module_name"], + info["plugin_name"], + info["version"], + (info["auto_activate"] and self.tr("Yes") or self.tr("On-Demand")), + (info["active"] and self.tr("Yes") or self.tr("No")), + info["short_desc"] ] itm = QTreeWidgetItem(self.pluginList, infoList) - if info[6]: + if info["error"]: # plugin error for col in range(self.pluginList.columnCount()): itm.setForeground(col, QBrush(Qt.red))
--- a/PluginManager/PluginManager.py Thu Jan 18 11:10:57 2018 +0100 +++ b/PluginManager/PluginManager.py Thu Jan 18 18:57:40 2018 +0100 @@ -735,38 +735,66 @@ def getPluginInfos(self): """ - Public method to get infos about all loaded plugins. + Public method to get infos about all loaded plug-ins. - @return list of tuples giving module name (string), plugin name - (string), version (string), autoactivate (boolean), active - (boolean), short description (string), error flag (boolean) + @return list of dictionaries with keys "module_name", "plugin_name", + "version", "auto_activate", "active", "short_desc", "error" + @rtype list of dict ("module_name": str, "plugin_name": str, + "version": str, "auto_activate": bool, "active": bool, + "short_desc": str, "error": bool) """ infos = [] + # 1. active, non-on-demand modules for name in list(self.__activeModules.keys()): - pname, shortDesc, error, version = \ - self.__getShortInfo(self.__activeModules[name]) - infos.append((name, pname, version, True, True, shortDesc, error)) + info = self.__getShortInfo(self.__activeModules[name]) + info.update({ + "module_name": name, + "auto_activate": True, + "active": True, + }) + infos.append(info) + + # 2. inactive, non-on-demand modules for name in list(self.__inactiveModules.keys()): - pname, shortDesc, error, version = \ - self.__getShortInfo(self.__inactiveModules[name]) - infos.append( - (name, pname, version, True, False, shortDesc, error)) + info = self.__getShortInfo(self.__inactiveModules[name]) + info.update({ + "module_name": name, + "auto_activate": True, + "active": False, + }) + infos.append(info) + + # 3. active, on-demand modules for name in list(self.__onDemandActiveModules.keys()): - pname, shortDesc, error, version = \ - self.__getShortInfo(self.__onDemandActiveModules[name]) - infos.append( - (name, pname, version, False, True, shortDesc, error)) + info = self.__getShortInfo(self.__onDemandActiveModules[name]) + info.update({ + "module_name": name, + "auto_activate": False, + "active": True, + }) + infos.append(info) + + # 4. inactive, non-on-demand modules for name in list(self.__onDemandInactiveModules.keys()): - pname, shortDesc, error, version = \ - self.__getShortInfo(self.__onDemandInactiveModules[name]) - infos.append( - (name, pname, version, False, False, shortDesc, error)) + info = self.__getShortInfo(self.__onDemandInactiveModules[name]) + info.update({ + "module_name": name, + "auto_activate": False, + "active": False, + }) + infos.append(info) + + # 5. failed modules for name in list(self.__failedModules.keys()): - pname, shortDesc, error, version = \ - self.__getShortInfo(self.__failedModules[name]) - infos.append( - (name, pname, version, False, False, shortDesc, error)) + info = self.__getShortInfo(self.__failedModules[name]) + info.update({ + "module_name": name, + "auto_activate": False, + "active": False, + }) + infos.append(info) + return infos def __getShortInfo(self, module): @@ -774,15 +802,16 @@ Private method to extract the short info from a module. @param module module to extract short info from - @return short info as a tuple giving plugin name (string), - short description (string), error flag (boolean) and - version (string) + @return dictionay containing plug-in data + @rtype dict ("plugin_name": str, "version": str, "short_desc": str, + "error": bool) """ - name = getattr(module, "name", "") - shortDesc = getattr(module, "shortDescription", "") - version = getattr(module, "version", "") - error = getattr(module, "error", "") != "" - return name, shortDesc, error, version + return { + "plugin_name": getattr(module, "name", ""), + "version": getattr(module, "version", ""), + "short_desc": getattr(module, "shortDescription", ""), + "error": bool(getattr(module, "error", "")), + } def getPluginDetails(self, name): """ @@ -1169,16 +1198,20 @@ request.setAttribute(QNetworkRequest.CacheLoadControlAttribute, QNetworkRequest.AlwaysNetwork) reply = self.__networkManager.get(request) - reply.finished.connect(self.__downloadRepositoryFileDone) + reply.finished.connect( + lambda: self.__downloadRepositoryFileDone(reply)) self.__replies.append(reply) - def __downloadRepositoryFileDone(self): + def __downloadRepositoryFileDone(self, reply): """ Private method called after the repository file was downloaded. + + @param reply reference to the reply object of the download + @type QNetworkReply """ - reply = self.sender() if reply in self.__replies: self.__replies.remove(reply) + if reply.error() != QNetworkReply.NoError: E5MessageBox.warning( None,
--- a/PluginManager/PluginRepositoryDialog.py Thu Jan 18 11:10:57 2018 +0100 +++ b/PluginManager/PluginRepositoryDialog.py Thu Jan 18 18:57:40 2018 +0100 @@ -469,7 +469,7 @@ request.setAttribute(QNetworkRequest.CacheLoadControlAttribute, QNetworkRequest.AlwaysNetwork) reply = self.__networkManager.get(request) - reply.finished.connect(self.__downloadFileDone) + reply.finished.connect(lambda: self.__downloadFileDone(reply)) reply.downloadProgress.connect(self.__downloadProgress) self.__replies.append(reply) else: @@ -481,17 +481,19 @@ """ from {0}.</p><p>Error: {1}</p>""" ).format(url, self.tr("Computer is offline."))) - def __downloadFileDone(self): + def __downloadFileDone(self, reply): """ Private method called, after the file has been downloaded from the Internet. + + @param reply reference to the reply object of the download + @type QNetworkReply """ self.__updateButton.setEnabled(True) self.__downloadCancelButton.setEnabled(False) self.__onlineStateChanged(self.__isOnline()) ok = True - reply = self.sender() if reply in self.__replies: self.__replies.remove(reply) if reply.error() != QNetworkReply.NoError:
--- a/Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py Thu Jan 18 18:57:40 2018 +0100 @@ -137,7 +137,7 @@ "D130", "D131", "D132", "D133", "D134", "D141", "D142", "D143", "D144", "D145", - "D203", "D205", + "D203", "D205", "D206", "D221", "D222", "D231", "D232", "D234", "D235", "D236", "D237", "D238", "D239", "D242", "D243", "D244", "D245", "D246", "D247", @@ -232,7 +232,7 @@ "functionDocstring": [ ], "classDocstring": [ - (self.__checkClassDocstring, ("D104", "D205")), + (self.__checkClassDocstring, ("D104", "D205", "D206")), (self.__checkEricNoBlankBeforeAndAfterClassOrFunction, ("D242", "D243")), (self.__checkEricSignal, ("D260", "D261", "D262", "D263")), @@ -750,6 +750,12 @@ if (not docstring or not docstring.strip() or not docstring.strip('\'"')): self.__error(context.start(), 0, code) + return + + if self.__docType == "eric" and \ + docstring.strip('\'"').strip() == "Class documentation goes here.": + self.__error(context.start(), 0, "D206") + return def __checkTripleDoubleQuotes(self, docstringContext, context): """
--- a/Plugins/CheckerPlugins/CodeStyleChecker/translations.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Plugins/CheckerPlugins/CodeStyleChecker/translations.py Thu Jan 18 18:57:40 2018 +0100 @@ -316,6 +316,8 @@ "private function/method is missing a docstring"), "D205": QCoreApplication.translate( "DocStyleChecker", "private class is missing a docstring"), + "D206": QCoreApplication.translate( + "DocStyleChecker", "class docstring is still a default string"), "D221": QCoreApplication.translate( "DocStyleChecker", "leading quotes of docstring not on separate line"),
--- a/Plugins/PluginPipInterface.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Plugins/PluginPipInterface.py Thu Jan 18 18:57:40 2018 +0100 @@ -12,7 +12,7 @@ import os import platform -from PyQt5.QtCore import pyqtSignal, QObject, QCoreApplication +from PyQt5.QtCore import pyqtSignal, QObject, QCoreApplication, QProcess from E5Gui.E5Application import e5App @@ -151,35 +151,34 @@ pass return exes + versionSuffixes = ["", "-32", "-64"] for minorVersion in minorVersions: - versionStr = '{0}.{1}'.format(majorVersion, minorVersion) - exePaths = getExePath( - winreg.HKEY_CURRENT_USER, - winreg.KEY_WOW64_32KEY | winreg.KEY_READ, versionStr) - if exePaths: - for exePath in exePaths: - executables.add(exePath) - - exePaths = getExePath( - winreg.HKEY_LOCAL_MACHINE, - winreg.KEY_WOW64_32KEY | winreg.KEY_READ, versionStr) - if exePaths: + for versionSuffix in versionSuffixes: + versionStr = '{0}.{1}{2}'.format(majorVersion, minorVersion, + versionSuffix) + exePaths = getExePath( + winreg.HKEY_CURRENT_USER, + winreg.KEY_WOW64_32KEY | winreg.KEY_READ, versionStr) for exePath in exePaths: executables.add(exePath) - - # Even on Intel 64-bit machines it's 'AMD64' - if platform.machine() == 'AMD64': + exePaths = getExePath( - winreg.HKEY_CURRENT_USER, - winreg.KEY_WOW64_64KEY | winreg.KEY_READ, versionStr) - if exePaths: + winreg.HKEY_LOCAL_MACHINE, + winreg.KEY_WOW64_32KEY | winreg.KEY_READ, versionStr) + for exePath in exePaths: + executables.add(exePath) + + # Even on Intel 64-bit machines it's 'AMD64' + if platform.machine() == 'AMD64': + exePaths = getExePath( + winreg.HKEY_CURRENT_USER, + winreg.KEY_WOW64_64KEY | winreg.KEY_READ, versionStr) for exePath in exePaths: executables.add(exePath) - - exePath = getExePath( - winreg.HKEY_LOCAL_MACHINE, - winreg.KEY_WOW64_64KEY | winreg.KEY_READ, versionStr) - if exePaths: + + exePath = getExePath( + winreg.HKEY_LOCAL_MACHINE, + winreg.KEY_WOW64_64KEY | winreg.KEY_READ, versionStr) for exePath in exePaths: executables.add(exePath) else: @@ -212,23 +211,23 @@ exes.append(exe) # step 2: determine the Python variant - if Utilities.isMacPlatform(): - checkStrings = ["Python.framework/Versions/3".lower(), - "python3"] - else: - checkStrings = ["python3"] - _exePy2 = set() _exePy3 = set() + versionArgs = ["-c", "import sys; print(sys.version_info[0])"] for exe in exes: try: f = open(exe, "r") line0 = f.readline() - for checkStr in checkStrings: - if checkStr in line0.lower(): - _exePy3.add(exe) - break - else: + program = line0.replace("#!", "").strip() + process = QProcess() + process.start(program, versionArgs) + process.waitForFinished(5000) + # get a QByteArray of the output + versionBytes = process.readAllStandardOutput() + versionStr = str(versionBytes, encoding='utf-8').strip() + if versionStr == "3": + _exePy3.add(exe) + elif versionStr == "2": _exePy2.add(exe) finally: f.close()
--- a/Plugins/VcsPlugins/vcsGit/GitBranchDialog.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Plugins/VcsPlugins/vcsGit/GitBranchDialog.py Thu Jan 18 18:57:40 2018 +0100 @@ -44,8 +44,10 @@ self.okButton = self.buttonBox.button(QDialogButtonBox.Ok) self.okButton.setEnabled(False) - self.__remoteBranches = [b for b in branchlist if "/" in b] - self.__lokalBranches = [b for b in branchlist if "/" not in b] + self.__remoteBranches = [b for b in branchlist + if b.startswith("remotes/")] + self.__lokalBranches = [b for b in branchlist + if not b.startswith("remotes/")] self.branchCombo.clear() self.branchCombo.addItem("")
--- a/Plugins/VcsPlugins/vcsGit/GitDialog.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Plugins/VcsPlugins/vcsGit/GitDialog.py Thu Jan 18 18:57:40 2018 +0100 @@ -116,7 +116,8 @@ self.statusLabel.setText(self.tr("Process crashed.")) else: self.statusLabel.setText( - self.tr("Proces finished with exit code {0}").format(exitCode)) + self.tr("Process finished with exit code {0}") + .format(exitCode)) self.__finish() def startProcess(self, args, workingDir=None, showArgs=True,
--- a/Plugins/VcsPlugins/vcsGit/GitUtilities.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Plugins/VcsPlugins/vcsGit/GitUtilities.py Thu Jan 18 18:57:40 2018 +0100 @@ -35,7 +35,7 @@ """ Public function to prepare the given process. - @param proc reference to the proces to be prepared (QProcess) + @param proc reference to the process to be prepared (QProcess) @param language language to be set (string) """ env = QProcessEnvironment.systemEnvironment()
--- a/Plugins/VcsPlugins/vcsGit/git.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Plugins/VcsPlugins/vcsGit/git.py Thu Jan 18 18:57:40 2018 +0100 @@ -23,8 +23,6 @@ from E5Gui.E5Application import e5App from E5Gui import E5MessageBox, E5FileDialog -from Globals.E5ConfigParser import E5ConfigParser - from QScintilla.MiniEditor import MiniEditor from VCS.VersionControl import VersionControl @@ -3774,23 +3772,33 @@ if not os.path.exists(submodulesFile): return [] - configParser = E5ConfigParser() - if configParser.read(submodulesFile): - submodules = [] - for submodule in configParser: - if submodule.startswith("submodule"): - submoduleDict = {"name": submodule.split(None, 1)[1][1:-1]} - section = configParser[submodule] - submoduleDict["path"] = section["path"] - submoduleDict["url"] = section["url"] - if "branch" in section: - submoduleDict["branch"] = section["branch"] - else: + try: + modulesFile = open(submodulesFile, "r") + contents = modulesFile.readlines() + modulesFile.close() + except OSError: + # silently ignore them + return [] + + submodules = [] + submoduleDict = None + for line in contents: + line = line.strip() + if line.startswith("[submodule"): + if submoduleDict: + if "branch" not in submoduleDict: submoduleDict["branch"] = "" submodules.append(submoduleDict) - return submodules - - return [] + submoduleDict = {"name": line.split(None, 1)[1][1:-2]} + elif "=" in line: + option, value = line.split("=", 1) + submoduleDict[option.strip()] = value.strip() + if submoduleDict: + if "branch" not in submoduleDict: + submoduleDict["branch"] = "" + submodules.append(submoduleDict) + + return submodules def gitSubmoduleList(self, projectDir): """
--- a/Plugins/VcsPlugins/vcsMercurial/HgUtilities.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Plugins/VcsPlugins/vcsMercurial/HgUtilities.py Thu Jan 18 18:57:40 2018 +0100 @@ -39,7 +39,7 @@ """ Public function to prepare the given process. - @param proc reference to the proces to be prepared (QProcess) + @param proc reference to the process to be prepared (QProcess) @param encoding encoding to be used by the process (string) @param language language to be set (string) """
--- a/Plugins/ViewManagerPlugins/Listspace/Listspace.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Plugins/ViewManagerPlugins/Listspace/Listspace.py Thu Jan 18 18:57:40 2018 +0100 @@ -11,7 +11,7 @@ import os -from PyQt5.QtCore import pyqtSignal, QFileInfo, QEvent, Qt +from PyQt5.QtCore import pyqtSignal, pyqtSlot, QFileInfo, QEvent, Qt from PyQt5.QtWidgets import QStackedWidget, QSplitter, QListWidget, \ QListWidgetItem, QSizePolicy, QMenu, QApplication @@ -19,6 +19,7 @@ import QScintilla.Editor from QScintilla.Editor import Editor +from QScintilla.EditorAssembly import EditorAssembly import UI.PixmapCache @@ -31,7 +32,8 @@ """ Constructor - @param parent parent widget (QWidget) + @param parent parent widget + @type QWidget """ super(StackedWidget, self).__init__(parent) @@ -42,7 +44,7 @@ Public method to add a new widget. @param assembly editor assembly object to be added - (QScintilla.EditorAssembly.EditorAssembly) + @type QScintilla.EditorAssembly.EditorAssembly """ editor = assembly.getEditor() super(StackedWidget, self).addWidget(assembly) @@ -53,7 +55,8 @@ """ Public method to remove a widget. - @param widget widget to be removed (QWidget) + @param widget widget to be removed + @type QWidget """ if isinstance(widget, QScintilla.Editor.Editor): self.editors.remove(widget) @@ -64,7 +67,8 @@ """ Public method to get a reference to the current editor. - @return reference to the current editor (Editor) + @return reference to the current editor + @rtype Editor """ widget = super(StackedWidget, self).currentWidget() if widget is not None: @@ -75,7 +79,8 @@ """ Public method to set the current widget. - @param widget widget to be made current (QWidget) + @param widget widget to be made current + @type QWidget """ if widget is not None: if isinstance(widget, QScintilla.Editor.Editor): @@ -88,7 +93,8 @@ """ Public method to set the current widget by its index. - @param index index of widget to be made current (integer) + @param index index of widget to be made current + @type int """ widget = self.widget(index) if widget is not None: @@ -121,8 +127,10 @@ Public method to check for an editor. @param editor editor object to check for + @type Editor @return flag indicating, whether the editor to be checked belongs to the list of editors managed by this stacked widget. + @rtype bool """ return editor in self.editors @@ -131,7 +139,8 @@ Public method to retrieve the first editor in the list of managed editors. - @return first editor in list (QScintilla.Editor.Editor) + @return first editor in list + @rtype QScintilla.Editor.Editor """ return len(self.editors) and self.editors[0] or None @@ -195,7 +204,8 @@ """ Constructor - @param parent parent widget (QWidget) + @param parent parent widget + @type QWidget """ self.stacks = [] @@ -273,7 +283,8 @@ Private slot to handle the customContextMenuRequested signal of the viewlist. - @param point position to open the menu at (QPoint) + @param point position to open the menu at + @type QPoint """ if self.editors: itm = self.viewlist.itemAt(point) @@ -313,6 +324,7 @@ Public method to signal if cascading of managed windows is available. @return flag indicating cascading of windows is available + @rtype bool """ return False @@ -321,6 +333,7 @@ Public method to signal if tiling of managed windows is available. @return flag indicating tiling of windows is available + @rtype bool """ return False @@ -328,7 +341,8 @@ """ public method to signal if splitting of the view is available. - @return flag indicating splitting of the view is available. + @return flag indicating splitting of the view is available + @rtype bool """ return True @@ -361,6 +375,7 @@ Protected method to remove a view (i.e. window). @param win editor window to be removed + @type Editor """ self.__inRemoveView = True ind = self.editors.index(win) @@ -393,15 +408,22 @@ self.changeCaption.emit("") self.editorChangedEd.emit(aw) - def _addView(self, win, fn=None, noName="", addNext=False): + def _addView(self, win, fn=None, noName="", addNext=False, indexes=None): """ Protected method to add a view (i.e. window). @param win editor assembly to be added - @param fn filename of this editor (string) - @param noName name to be used for an unnamed editor (string) + @type EditorAssembly + @param fn filename of this editor + @type str + @param noName name to be used for an unnamed editor + @type str @param addNext flag indicating to add the view next to the current - view (bool) + view + @type bool + @param indexes of the editor, first the split view index, second the + index within the view + @type tuple of two int """ editor = win.getEditor() if not fn: @@ -417,8 +439,15 @@ itm = QListWidgetItem(txt) itm.setToolTip(fn) self.viewlist.addItem(itm) - self.currentStack.addWidget(win) - self.currentStack.setCurrentWidget(win) + if indexes: + if indexes[0] < len(self.stacks): + stack = self.stacks[indexes[0]] + else: + stack = self.stacks[-1] + stack.addWidget(win) + else: + self.currentStack.addWidget(win) + self.currentStack.setCurrentWidget(win) editor.captionChanged.connect(self.__captionChange) editor.cursorLineChanged.connect(self.__cursorLineChanged) @@ -439,8 +468,10 @@ Updates the listwidget text to reflect the new caption information. - @param cap Caption for the editor (string) + @param cap Caption for the editor + @type str @param editor Editor to update the caption for + @type Editor """ fn = editor.getFileName() if fn: @@ -451,6 +482,7 @@ Private slot to handle a change of the current editor's cursor line. @param lineno line number of the current editor's cursor (zero based) + @type int """ editor = self.sender() if editor: @@ -463,7 +495,9 @@ Protected method to show a view (i.e. window). @param win editor assembly to be shown - @param fn filename of this editor (string) + @type EditorAssembly + @param fn filename of this editor + @type string """ editor = win.getEditor() for stack in self.stacks: @@ -487,7 +521,8 @@ """ Private slot called to show a view selected in the list. - @param row row number of the item clicked on (integer) + @param row row number of the item clicked on + @type int """ if row != -1: self._showView(self.editors[row].parent()) @@ -498,6 +533,7 @@ Public method to return the active (i.e. current) window. @return reference to the active editor + @rtype EditorAssembly """ return self.currentStack.currentWidget() @@ -506,6 +542,7 @@ Public method to set up the viewmanager part of the Window menu. @param windowMenu reference to the window menu + @type QMenu """ pass @@ -521,7 +558,9 @@ Public method to change the displayed name of the editor. @param editor editor window to be changed - @param newName new name to be shown (string) + @type Editor + @param newName new name to be shown + @type str """ if newName: currentRow = self.viewlist.currentRow() @@ -540,8 +579,10 @@ """ Protected slot to handle the modificationStatusChanged signal. - @param m flag indicating the modification status (boolean) + @param m flag indicating the modification status + @type bool @param editor editor window changed + @type Editor """ currentRow = self.viewlist.currentRow() index = self.editors.index(editor) @@ -565,6 +606,7 @@ Protected slot to handle the syntaxerrorToggled signal. @param editor editor that sent the signal + @type Editor """ currentRow = self.viewlist.currentRow() index = self.editors.index(editor) @@ -605,14 +647,26 @@ self.nextSplitAct.setEnabled(True) self.prevSplitAct.setEnabled(True) - def removeSplit(self): + @pyqtSlot() + def removeSplit(self, index=-1): """ - Public method used to remove the current split view. + Public method used to remove the current split view or a split view + by index. - @return flag indicating successfull removal + @param index index of the split to be removed (-1 means to + delete the current split) + @type int + @return flag indicating successful deletion + @rtype bool """ if len(self.stacks) > 1: - stack = self.currentStack + if index == -1: + stack = self.currentStack + else: + if index < len(self.stacks): + stack = self.stacks[index] + else: + stack = self.stacks[-1] res = True savedEditors = stack.editors[:] for editor in savedEditors: @@ -635,11 +689,36 @@ return False + def splitCount(self): + """ + Public method to get the number of splitted views. + + @return number of splitted views + @rtype int + """ + return len(self.stacks) + + def setSplitCount(self, count): + """ + Public method to set the number of split views. + + @param count number of split views + @type int + """ + if count > self.splitCount(): + while self.splitCount() < count: + self.addSplit() + elif count < self.splitCount(): + while self.splitCount() > count: + # use an arbitrarily large index to remove the last one + self.removeSplit(index=100) + def getSplitOrientation(self): """ Public method to get the orientation of the split view. - @return orientation of the split (Qt.Horizontal or Qt.Vertical) + @return orientation of the split + @rtype Qt.Horizontal or Qt.Vertical """ return self.stackArea.orientation() @@ -648,7 +727,7 @@ Public method used to set the orientation of the split view. @param orientation orientation of the split - (Qt.Horizontal or Qt.Vertical) + @type Qt.Horizontal or Qt.Vertical """ self.stackArea.setOrientation(orientation) @@ -774,6 +853,7 @@ Private slot to handle the currentChanged signal. @param index index of the current editor + @type int """ if index == -1 or not self.editors: return @@ -803,8 +883,11 @@ Public method called to filter the event queue. @param watched the QObject being watched + @type QObject @param event the event that occurred + @type QEvent @return flag indicating, if we handled the event + @rtype bool """ if event.type() == QEvent.MouseButtonPress and \ not event.button() == Qt.RightButton: @@ -839,3 +922,24 @@ self.editorChangedEd.emit(aw) return False + + def getOpenEditorsForSession(self): + """ + Public method to get a lists of all open editors. + + The returned list contains one list per split view. If the view manager + cannot split the view, only one list of editors is returned. + + @return list of list of editor references + @rtype list of list of Editor + """ + editorLists = [] + for stack in self.stacks: + editors = [] + for index in range(stack.count()): + widget = stack.widget(index) + if isinstance(widget, EditorAssembly): + editor = widget.getEditor() + editors.append(editor) + editorLists.append(editors) + return editorLists
--- a/Plugins/ViewManagerPlugins/Tabview/Tabview.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Plugins/ViewManagerPlugins/Tabview/Tabview.py Thu Jan 18 18:57:40 2018 +0100 @@ -11,8 +11,8 @@ import os -from PyQt5.QtCore import QPoint, QFileInfo, pyqtSignal, QEvent, QByteArray, \ - QMimeData, Qt, QSize +from PyQt5.QtCore import pyqtSlot, QPoint, QFileInfo, pyqtSignal, QEvent, \ + QByteArray, QMimeData, Qt, QSize from PyQt5.QtGui import QColor, QDrag, QPixmap from PyQt5.QtWidgets import QWidget, QHBoxLayout, QSplitter, QTabBar, \ QApplication, QToolButton, QMenu, QLabel @@ -23,6 +23,7 @@ import QScintilla.Editor from QScintilla.Editor import Editor +from QScintilla.EditorAssembly import EditorAssembly import UI.PixmapCache @@ -58,7 +59,8 @@ """ Constructor - @param parent reference to the parent widget (QWidget) + @param parent reference to the parent widget + @type QWidget """ super(TabBar, self).__init__(parent) self.setAcceptDrops(True) @@ -69,7 +71,8 @@ """ Protected method to handle mouse press events. - @param event reference to the mouse press event (QMouseEvent) + @param event reference to the mouse press event + @type QMouseEvent """ if event.button() == Qt.LeftButton: self.__dragStartPos = QPoint(event.pos()) @@ -79,7 +82,8 @@ """ Protected method to handle mouse move events. - @param event reference to the mouse move event (QMouseEvent) + @param event reference to the mouse move event + @type QMouseEvent """ if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \ (event.pos() - self.__dragStartPos).manhattanLength() > \ @@ -107,7 +111,8 @@ """ Protected method to handle drag enter events. - @param event reference to the drag enter event (QDragEnterEvent) + @param event reference to the drag enter event + @type QDragEnterEvent """ mimeData = event.mimeData() formats = mimeData.formats() @@ -123,7 +128,8 @@ """ Protected method to handle drop events. - @param event reference to the drop event (QDropEvent) + @param event reference to the drop event + @type QDropEvent """ mimeData = event.mimeData() oldID = int(mimeData.data("tabbar-id")) @@ -158,7 +164,8 @@ """ Constructor - @param vm view manager widget (Tabview) + @param vm view manager widget + @type Tabview """ super(TabWidget, self).__init__() @@ -286,8 +293,10 @@ """ Private slot to show the tab context menu. - @param coord the position of the mouse pointer (QPoint) - @param index index of the tab the menu is requested for (integer) + @param coord the position of the mouse pointer + @type QPoint + @param index index of the tab the menu is requested for + @type int """ if self.editors: self.contextMenuEditor = self.widget(index).getEditor() @@ -327,7 +336,8 @@ """ Private slot called to handle the navigation button menu selection. - @param act reference to the selected action (QAction) + @param act reference to the selected action + @type QAction """ index = act.data() if index is not None: @@ -337,7 +347,8 @@ """ Public slot to set the indicator on or off. - @param on flag indicating the dtate of the indicator (boolean) + @param on flag indicating the state of the indicator + @type bool """ if on: self.indicator.setColor(QColor("green")) @@ -349,8 +360,9 @@ Public method to add a new tab. @param assembly editor assembly object to be added - (QScintilla.EditorAssembly.EditorAssembly) - @param title title for the new tab (string) + @type QScintilla.EditorAssembly.EditorAssembly + @param title title for the new tab + @type str """ editor = assembly.getEditor() super(TabWidget, self).addTab( @@ -374,11 +386,14 @@ """ Public method to insert a new tab. - @param index index position for the new tab (integer) + @param index index position for the new tab + @type int @param assembly editor assembly object to be added - (QScintilla.EditorAssembly.EditorAssembly) - @param title title for the new tab (string) - @return index of the inserted tab (integer) + @type QScintilla.EditorAssembly.EditorAssembly + @param title title for the new tab + @type str + @return index of the inserted tab + @rtype int """ editor = assembly.getEditor() newIndex = super(TabWidget, self).insertTab( @@ -409,7 +424,9 @@ information. @param cap Caption for the editor + @type str @param editor Editor to update the caption for + @type Editor """ fn = editor.getFileName() if fn: @@ -436,6 +453,7 @@ Private slot to handle a change of the current editor's cursor line. @param lineno line number of the current editor's cursor (zero based) + @type int """ editor = self.sender() if editor and isinstance(editor, QScintilla.Editor.Editor): @@ -447,7 +465,8 @@ """ Public method to remove a widget. - @param widget widget to be removed (QWidget) + @param widget widget to be removed + @type QWidget """ if isinstance(widget, QScintilla.Editor.Editor): widget.cursorLineChanged.disconnect(self.__cursorLineChanged) @@ -473,9 +492,12 @@ """ Private method to relocate an editor from another TabWidget. - @param sourceId id of the TabWidget to get the editor from (string) - @param sourceIndex index of the tab in the old tab widget (integer) - @param targetIndex index position to place it to (integer) + @param sourceId id of the TabWidget to get the editor from + @type str + @param sourceIndex index of the tab in the old tab widget + @type int + @param targetIndex index position to place it to + @type int """ tw = self.vm.getTabWidgetById(int(sourceId)) if tw is not None: @@ -502,9 +524,12 @@ """ Private method to copy an editor from another TabWidget. - @param sourceId id of the TabWidget to get the editor from (string) - @param sourceIndex index of the tab in the old tab widget (integer) - @param targetIndex index position to place it to (integer) + @param sourceId id of the TabWidget to get the editor from + @type str + @param sourceIndex index of the tab in the old tab widget + @type int + @param targetIndex index position to place it to + @type int """ tw = self.vm.getTabWidgetById(int(sourceId)) if tw is not None: @@ -518,8 +543,10 @@ """ Private method to copy an editor. - @param sourceIndex index of the tab (integer) - @param targetIndex index position to place it to (integer) + @param sourceIndex index of the tab + @type int + @param targetIndex index position to place it to + @type int """ editor = self.widget(sourceIndex).getEditor() newEditor, assembly = self.vm.cloneEditor( @@ -531,7 +558,8 @@ """ Public method to return a reference to the current page. - @return reference to the current page (Editor) + @return reference to the current page + @rtype Editor """ if not self.editors: return None @@ -543,7 +571,7 @@ Public method to set the current tab by the given editor assembly. @param assembly editor assembly to determine current tab from - (EditorAssembly.EditorAssembly) + @type EditorAssembly.EditorAssembly """ super(TabWidget, self).setCurrentWidget(assembly) @@ -551,8 +579,10 @@ """ Public method to get the tab index of the given editor. - @param widget widget to get the index for (QLabel or Editor) - @return tab index of the editor (integer) + @param widget widget to get the index for + @type QLabel or Editor + @return tab index of the editor + @rtype int """ if isinstance(widget, QScintilla.Editor.Editor): widget = widget.parent() @@ -563,8 +593,10 @@ Public method to check for an editor. @param editor editor object to check for + @type Editor @return flag indicating, whether the editor to be checked belongs to the list of editors managed by this tab widget. + @rtype bool """ return editor in self.editors @@ -573,6 +605,7 @@ Public method to test, if any editor is managed. @return flag indicating editors are managed + @rtype bool """ return len(self.editors) > 0 @@ -758,7 +791,8 @@ """ Constructor - @param parent parent widget (QWidget) + @param parent parent widget + @type QWidget """ self.tabWidgets = [] @@ -796,6 +830,7 @@ Public method to signal if cascading of managed windows is available. @return flag indicating cascading of windows is available + @rtype bool """ return False @@ -804,6 +839,7 @@ Public method to signal if tiling of managed windows is available. @return flag indicating tiling of windows is available + @rtype bool """ return False @@ -812,6 +848,7 @@ public method to signal if splitting of the view is available. @return flag indicating splitting of the view is available. + @rtype bool """ return True @@ -839,6 +876,7 @@ Protected method to remove a view (i.e. window). @param win editor window to be removed + @type Editor """ self.__inRemoveView = True for tw in self.tabWidgets: @@ -870,15 +908,22 @@ self.changeCaption.emit("") self.editorChangedEd.emit(aw) - def _addView(self, win, fn=None, noName="", addNext=False): + def _addView(self, win, fn=None, noName="", addNext=False, indexes=None): """ Protected method to add a view (i.e. window). @param win editor assembly to be added - @param fn filename of this editor (string) - @param noName name to be used for an unnamed editor (string) + @type EditorAssembly + @param fn filename of this editor + @type str + @param noName name to be used for an unnamed editor + @type str @param addNext flag indicating to add the view next to the current - view (bool) + view + @type bool + @param indexes of the editor, first the split view index, second the + index within the view + @type tuple of two int """ editor = win.getEditor() if not fn: @@ -888,6 +933,12 @@ if addNext: index = self.currentTabWidget.currentIndex() + 1 self.currentTabWidget.insertWidget(index, win, noName) + elif indexes: + if indexes[0] < len(self.tabWidgets): + tw = self.tabWidgets[indexes[0]] + else: + tw = self.tabWidgets[-1] + tw.insertWidget(indexes[1], win, noName) else: self.currentTabWidget.addTab(win, noName) editor.setNoName(noName) @@ -903,6 +954,12 @@ if addNext: index = self.currentTabWidget.currentIndex() + 1 self.currentTabWidget.insertWidget(index, win, txt) + elif indexes: + if indexes[0] < len(self.tabWidgets): + tw = self.tabWidgets[indexes[0]] + else: + tw = self.tabWidgets[-1] + tw.insertWidget(indexes[1], win, txt) else: self.currentTabWidget.addTab(win, txt) index = self.currentTabWidget.indexOf(win) @@ -923,11 +980,15 @@ Public method to add a view (i.e. window). @param win editor assembly to be inserted + @type EditorAssembly @param tabWidget reference to the tab widget to insert the editor into - (TabWidget) - @param index index position to insert at (integer) - @param fn filename of this editor (string) - @param noName name to be used for an unnamed editor (string) + @type TabWidget + @param index index position to insert at + @type int + @param fn filename of this editor + @type str + @param noName name to be used for an unnamed editor + @type str """ editor = win.getEditor() if fn is None: @@ -966,7 +1027,9 @@ Protected method to show a view (i.e. window). @param win editor assembly to be shown - @param fn filename of this editor (string) + @type EditorAssembly + @param fn filename of this editor + @type str """ win.show() editor = win.getEditor() @@ -984,6 +1047,7 @@ Public method to return the active (i.e. current) window. @return reference to the active editor + @rtype Editor """ cw = self.currentTabWidget.currentWidget() if cw: @@ -996,6 +1060,7 @@ Public method to set up the viewmanager part of the Window menu. @param windowMenu reference to the window menu + @type QMenu """ pass @@ -1011,7 +1076,9 @@ Public method to change the displayed name of the editor. @param editor editor window to be changed - @param newName new name to be shown (string) + @type Editor + @param newName new name to be shown + @type str """ if newName: if self.filenameOnly: @@ -1029,8 +1096,10 @@ """ Protected slot to handle the modificationStatusChanged signal. - @param m flag indicating the modification status (boolean) + @param m flag indicating the modification status + @type bool @param editor editor window changed + @type Editor """ for tw in self.tabWidgets: if tw.hasEditor(editor): @@ -1053,6 +1122,7 @@ Protected slot to handle the syntaxerrorToggled signal. @param editor editor that sent the signal + @type Editor """ for tw in self.tabWidgets: if tw.hasEditor(editor): @@ -1095,14 +1165,26 @@ self.nextSplitAct.setEnabled(True) self.prevSplitAct.setEnabled(True) - def removeSplit(self): + @pyqtSlot() + def removeSplit(self, index=-1): """ - Public method used to remove the current split view. + Public method used to remove the current split view or a split view + by index. - @return flag indicating successfull removal + @param index index of the split to be removed (-1 means to + delete the current split) + @type int + @return flag indicating successful deletion + @rtype bool """ if len(self.tabWidgets) > 1: - tw = self.currentTabWidget + if index == -1: + tw = self.currentTabWidget + else: + if index < len(self.tabWidgets): + tw = self.tabWidgets[index] + else: + tw = self.tabWidgets[-1] res = True savedEditors = tw.editors[:] for editor in savedEditors: @@ -1133,11 +1215,36 @@ return False + def splitCount(self): + """ + Public method to get the number of splitted views. + + @return number of splitted views + @rtype int + """ + return len(self.tabWidgets) + + def setSplitCount(self, count): + """ + Public method to set the number of split views. + + @param count number of split views + @type int + """ + if count > self.splitCount(): + while self.splitCount() < count: + self.addSplit() + elif count < self.splitCount(): + while self.splitCount() > count: + # use an arbitrarily large index to remove the last one + self.removeSplit(index=100) + def getSplitOrientation(self): """ Public method to get the orientation of the split view. - @return orientation of the split (Qt.Horizontal or Qt.Vertical) + @return orientation of the split + @rtype Qt.Horizontal or Qt.Vertical """ return self.__splitter.orientation() @@ -1146,7 +1253,7 @@ Public method used to set the orientation of the split view. @param orientation orientation of the split - (Qt.Horizontal or Qt.Vertical) + @type Qt.Horizontal or Qt.Vertical """ self.__splitter.setOrientation(orientation) @@ -1190,7 +1297,8 @@ """ Private slot to handle the currentChanged signal. - @param index index of the current tab (integer) + @param index index of the current tab + @type int """ if index == -1 or not self.editors: return @@ -1216,9 +1324,12 @@ """ Public method called to filter the event queue. - @param watched the QObject being watched (QObject) - @param event the event that occurred (QEvent) + @param watched the QObject being watched + @type QObject + @param event the event that occurred + @type QEvent @return always False + @rtype bool """ if event.type() == QEvent.MouseButtonPress and \ not event.button() == Qt.RightButton: @@ -1290,10 +1401,33 @@ """ Public method to get a reference to a tab widget knowing its ID. - @param id_ id of the tab widget (long) - @return reference to the tab widget (TabWidget) + @param id_ id of the tab widget + @type int + @return reference to the tab widget + @rtype TabWidget """ for tw in self.tabWidgets: if id(tw) == id_: return tw return None + + def getOpenEditorsForSession(self): + """ + Public method to get a lists of all open editors. + + The returned list contains one list per split view. If the view manager + cannot split the view, only one list of editors is returned. + + @return list of list of editor references + @rtype list of list of Editor + """ + editorLists = [] + for tabWidget in self.tabWidgets: + editors = [] + for index in range(tabWidget.count()): + widget = tabWidget.widget(index) + if isinstance(widget, EditorAssembly): + editor = widget.getEditor() + editors.append(editor) + editorLists.append(editors) + return editorLists
--- a/Plugins/WizardPlugins/EricPluginWizard/Templates.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Plugins/WizardPlugins/EricPluginWizard/Templates.py Thu Jan 18 18:57:40 2018 +0100 @@ -59,16 +59,18 @@ """ Constructor - @param ui reference to the user interface object (UI.UserInterface) + @param ui reference to the user interface object + @type UI.UserInterface """ super({className}, self).__init__(ui) self.__ui = ui def activate(self): """ - Public method to activate this plugin. + Public method to activate this plug-in. - @return tuple of None and activation status (boolean) + @return tuple of None and activation status + @rtype bool """ global error error = "" # clear previous error @@ -77,7 +79,7 @@ def deactivate(self): """ - Public method to deactivate this plugin. + Public method to deactivate this plug-in. """ pass {config3}''' @@ -91,6 +93,7 @@ Module function returning data as required by the configuration dialog. @return dictionary containing the relevant data + @rtype dict """ return {{ "<unique key>": ["<display string>", "<pixmap filename>", @@ -100,7 +103,7 @@ def prepareUninstall(): """ - Module function to prepare for an uninstallation. + Module function to prepare for an un-installation. """ Preferences.Prefs.settings.remove({className}.PreferencesKey) @@ -115,19 +118,23 @@ def getPreferences(self, key): """ - Public method to retrieve the various refactoring settings. + Public method to retrieve the various settings values. @param key the key of the value to get - @return the requested refactoring setting + @type str + @return the requested setting value + @rtype any """ return None def setPreferences(self, key, value): """ - Public method to store the various refactoring settings. + Public method to store the various settings values. - @param key the key of the setting to be set (string) + @param key the key of the setting to be set + @type str @param value the value to be set + @type any """ pass ''' @@ -140,7 +147,8 @@ """ Module function to return a preview pixmap. - @return preview pixmap (QPixmap) + @return preview pixmap + @rtype QPixmap """ from PyQt5.QtGui import QPixmap @@ -156,6 +164,7 @@ @return list of dictionaries containing the data to query the presence of the executable + @rtype list of dict """ dataList = [] data = { @@ -164,6 +173,7 @@ "exe": "dummyExe", "versionCommand": "--version", "versionStartsWith": "dummyExe", + "versionRe": "", "versionPosition": -1, "version": "", "versionCleanup": None, @@ -183,6 +193,7 @@ @return dictionary containing the data to query the presence of the executable + @rtype dict """ data = { "programEntry": True, @@ -190,6 +201,7 @@ "exe": exe, "versionCommand": "--version", "versionStartsWith": "<identifier>", + "versionRe": "", "versionPosition": -1, "version": "", "versionCleanup": None, @@ -211,10 +223,12 @@ apiFilesTemplate = '''def apiFiles(language): """ - Module function to return the API files made available by this plugin. + Module function to return the API files made available by this plug-in. - @param language language to get APIs for (string) - @return list of API filenames (list of string) + @param language language to get APIs for + @type str + @return list of API filenames + @rtype list of str """ if language in ["Python3", "Python2", "Python"]: apisDir = \\
--- a/Preferences/ConfigurationPages/WebBrowserAppearancePage.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Preferences/ConfigurationPages/WebBrowserAppearancePage.py Thu Jan 18 18:57:40 2018 +0100 @@ -95,6 +95,12 @@ self.warnOnMultipleCloseCheckBox.setChecked( Preferences.getWebBrowser("WarnOnMultipleClose")) + try: + # Qt 5.10 + self.scrollbarsCheckBox.setChecked( + Preferences.getWebBrowser("ShowScrollBars")) + except KeyError: + self.scrollbarsCheckBox.setEnabled(False) self.toolbarsCheckBox.setChecked( Preferences.getWebBrowser("ShowToolbars")) @@ -177,6 +183,11 @@ "WarnOnMultipleClose", self.warnOnMultipleCloseCheckBox.isChecked()) + if self.scrollbarsCheckBox.isEnabled(): + Preferences.setWebBrowser( + "ShowScrollBars", + self.scrollbarsCheckBox.isChecked()) + Preferences.setWebBrowser( "ShowToolbars", self.toolbarsCheckBox.isChecked())
--- a/Preferences/ConfigurationPages/WebBrowserAppearancePage.ui Thu Jan 18 11:10:57 2018 +0100 +++ b/Preferences/ConfigurationPages/WebBrowserAppearancePage.ui Thu Jan 18 18:57:40 2018 +0100 @@ -7,10 +7,10 @@ <x>0</x> <y>0</y> <width>499</width> - <height>1014</height> + <height>1116</height> </rect> </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> + <layout class="QVBoxLayout" name="verticalLayout_5"> <item> <widget class="QLabel" name="headerLabel"> <property name="text"> @@ -396,6 +396,25 @@ </widget> </item> <item> + <widget class="QGroupBox" name="groupBox_7"> + <property name="title"> + <string>Scrollbars</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QCheckBox" name="scrollbarsCheckBox"> + <property name="toolTip"> + <string>Select to show scrollbars. Note: Scrolling is possible even without them.</string> + </property> + <property name="text"> + <string>Show Scrollbars</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> <widget class="Line" name="line9_2"> <property name="frameShape"> <enum>QFrame::HLine</enum> @@ -474,6 +493,8 @@ <tabstop>styleSheetPicker</tabstop> <tabstop>tabsCloseButtonCheckBox</tabstop> <tabstop>warnOnMultipleCloseCheckBox</tabstop> + <tabstop>scrollbarsCheckBox</tabstop> + <tabstop>toolbarsCheckBox</tabstop> </tabstops> <resources/> <connections/>
--- a/Preferences/ConfigurationPages/WebBrowserPage.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Preferences/ConfigurationPages/WebBrowserPage.py Thu Jan 18 18:57:40 2018 +0100 @@ -76,6 +76,13 @@ self.jsOpenWindowsCheckBox.setChecked( Preferences.getWebBrowser("JavaScriptCanOpenWindows")) + try: + # Qt 5.10 + self.jsActivateWindowsCheckBox.setChecked( + Preferences.getWebBrowser( + "AllowWindowActivationFromJavaScript")) + except KeyError: + self.jsActivateWindowsCheckBox.setEnabled(False) self.jsClipboardCheckBox.setChecked( Preferences.getWebBrowser("JavaScriptCanAccessClipboard")) self.pluginsCheckBox.setChecked( @@ -173,6 +180,12 @@ Preferences.getWebBrowser("AllowRunningInsecureContent")) except KeyError: self.insecureContentsCheckBox.setEnabled(False) + try: + # Qt 5.9 + self.insecureGeolocationCheckBox.setChecked( + Preferences.getWebBrowser("AllowGeolocationOnInsecureOrigins")) + except KeyError: + self.insecureGeolocationCheckBox.setEnabled(False) try: # Qt 5.8 @@ -228,6 +241,10 @@ Preferences.setWebBrowser( "JavaScriptCanOpenWindows", self.jsOpenWindowsCheckBox.isChecked()) + if self.jsActivateWindowsCheckBox.isEnabled(): + Preferences.setWebBrowser( + "AllowWindowActivationFromJavaScript", + self.jsActivateWindowsCheckBox.isChecked()) Preferences.setWebBrowser( "JavaScriptCanAccessClipboard", self.jsClipboardCheckBox.isChecked()) @@ -319,6 +336,10 @@ Preferences.setWebBrowser( "AllowRunningInsecureContent", self.insecureContentsCheckBox.isChecked()) + if self.insecureGeolocationCheckBox.isEnabled(): + Preferences.setWebBrowser( + "AllowGeolocationOnInsecureOrigins", + self.insecureGeolocationCheckBox.isChecked()) if self.printBackgroundCheckBox.isEnabled(): Preferences.setWebBrowser(
--- a/Preferences/ConfigurationPages/WebBrowserPage.ui Thu Jan 18 11:10:57 2018 +0100 +++ b/Preferences/ConfigurationPages/WebBrowserPage.ui Thu Jan 18 18:57:40 2018 +0100 @@ -10,7 +10,7 @@ <height>2000</height> </rect> </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> + <layout class="QVBoxLayout" name="verticalLayout_5"> <item> <widget class="QLabel" name="headerLabel"> <property name="text"> @@ -374,7 +374,7 @@ <property name="title"> <string>Privacy</string> </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> + <layout class="QVBoxLayout" name="verticalLayout_3"> <item> <widget class="QGroupBox" name="javaScriptGroup"> <property name="toolTip"> @@ -383,14 +383,24 @@ <property name="title"> <string>JavaScript</string> </property> - <layout class="QVBoxLayout" name="verticalLayout_5"> + <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <widget class="QCheckBox" name="jsOpenWindowsCheckBox"> <property name="toolTip"> <string>Select to allow JavaScript to open windows</string> </property> <property name="text"> - <string>JavaScript can open windows</string> + <string>Allow to open windows</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="jsActivateWindowsCheckBox"> + <property name="toolTip"> + <string>Select to allow JavaScript to activate windows</string> + </property> + <property name="text"> + <string>Allow to activate windows</string> </property> </widget> </item> @@ -400,7 +410,7 @@ <string>Select to allow JavaScript to access the clipboard</string> </property> <property name="text"> - <string>JavaScript can access clipboard</string> + <string>Allow to access the clipboard</string> </property> </widget> </item> @@ -479,8 +489,8 @@ <property name="title"> <string>Security</string> </property> - <layout class="QGridLayout" name="gridLayout_9"> - <item row="0" column="0"> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> <widget class="QCheckBox" name="xssAuditingCheckBox"> <property name="toolTip"> <string>Select to enable XSS auditing</string> @@ -494,7 +504,7 @@ </property> </widget> </item> - <item row="0" column="1"> + <item> <widget class="QCheckBox" name="insecureContentsCheckBox"> <property name="toolTip"> <string>Select to allow HTTPS pages to run JavaScript, CSS, plugins or web-sockets from HTTP URLs</string> @@ -504,6 +514,16 @@ </property> </widget> </item> + <item> + <widget class="QCheckBox" name="insecureGeolocationCheckBox"> + <property name="toolTip"> + <string>Select to allow insecure origins (i.e. those not having an https:// URL) to request Geolocation features.</string> + </property> + <property name="text"> + <string>Allow insecure origins to access Geolocation</string> + </property> + </widget> + </item> </layout> </widget> </item> @@ -941,6 +961,7 @@ <tabstop>sessionTimerSpinBox</tabstop> <tabstop>defaultSchemeCombo</tabstop> <tabstop>jsOpenWindowsCheckBox</tabstop> + <tabstop>jsActivateWindowsCheckBox</tabstop> <tabstop>jsClipboardCheckBox</tabstop> <tabstop>pluginsCheckBox</tabstop> <tabstop>doNotTrackCheckBox</tabstop> @@ -948,6 +969,7 @@ <tabstop>refererWhitelistButton</tabstop> <tabstop>xssAuditingCheckBox</tabstop> <tabstop>insecureContentsCheckBox</tabstop> + <tabstop>insecureGeolocationCheckBox</tabstop> <tabstop>expireHistory</tabstop> <tabstop>diskCacheCheckBox</tabstop> <tabstop>cacheSizeSpinBox</tabstop>
--- a/Preferences/ProgramsDialog.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Preferences/ProgramsDialog.py Thu Jan 18 18:57:40 2018 +0100 @@ -263,6 +263,8 @@ if info["programEntry"]: if "exeModule" not in info: info["exeModule"] = None + if "versionRe" not in info: + info["versionRe"] = None self.__createProgramEntry( info["header"], info["exe"], @@ -271,6 +273,7 @@ versionPosition=info["versionPosition"], version=info["version"], versionCleanup=info["versionCleanup"], + versionRe=info["versionRe"], exeModule=info["exeModule"], ) else: @@ -345,23 +348,28 @@ output = str(proc.readAllStandardOutput(), Preferences.getSystem("IOEncoding"), 'replace') - if versionRe is None: - versionRe = "^{0}".format( - re.escape(versionStartsWith)) - versionRe = re.compile(versionRe, re.UNICODE) - for line in output.splitlines(): - if versionRe.search(line): - try: - version = line.split()[versionPosition] - if versionCleanup: - version = version[ - versionCleanup[0]:versionCleanup[1] - ] - break - except IndexError: - version = self.tr("(unknown)") + if exeModule and exeModule[0] == "-m" and \ + "ImportError:" in output: + version = self.tr("(module not found)") else: - version = self.tr("(unknown)") + if versionRe is None: + versionRe = "^{0}".format( + re.escape(versionStartsWith)) + versionRe = re.compile(versionRe, re.UNICODE) + for line in output.splitlines(): + if versionRe.search(line): + try: + version = line.split()[versionPosition] + if versionCleanup: + version = version[ + versionCleanup[0]: + versionCleanup[1] + ] + break + except IndexError: + version = self.tr("(unknown)") + else: + version = self.tr("(unknown)") else: version = self.tr("(not executable)") if exeModule:
--- a/Preferences/__init__.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Preferences/__init__.py Thu Jan 18 18:57:40 2018 +0100 @@ -1240,6 +1240,27 @@ }) except AttributeError: pass + try: + # Qt 5.9+ + cls.webBrowserDefaults.update({ + "AllowGeolocationOnInsecureOrigins": + webEngineSettings.testAttribute( + QWebEngineSettings.AllowGeolocationOnInsecureOrigins), + }) + except AttributeError: + pass + try: + # Qt 5.10+ + cls.webBrowserDefaults.update({ + "AllowWindowActivationFromJavaScript": + webEngineSettings.testAttribute( + QWebEngineSettings.AllowWindowActivationFromJavaScript + ), + "ShowScrollBars": webEngineSettings.testAttribute( + QWebEngineSettings.ShowScrollBars), + }) + except AttributeError: + pass cls.webEngineSettingsIntitialized = True @@ -2707,8 +2728,9 @@ keywords.append((keyword, engineName)) prefClass.settings.endArray() return keywords - elif key in ["DownloadManagerDownloads"]: - # return a list of tuples of (URL, save location, done flag, page url) + elif key == "DownloadManagerDownloads": + # return a list of tuples of (URL, save location, done flag, page url, + # date/time downloaded) downloads = [] length = prefClass.settings.beginReadArray("Help/" + key) for index in range(length): @@ -2722,6 +2744,9 @@ downloaded = prefClass.settings.value("Downloaded") if downloaded is None: downloaded = QDateTime() + else: + downloaded = QDateTime.fromString( + downloaded, "yyyy-MM-dd hh:mm:ss") downloads.append((url, location, done, pageUrl, downloaded)) prefClass.settings.endArray() return downloads @@ -2818,7 +2843,8 @@ index += 1 prefClass.settings.endArray() elif key == "DownloadManagerDownloads": - # value is list of tuples of (URL, save location, done flag, page url) + # value is list of tuples of (URL, save location, done flag, page url, + # date/time downloaded) prefClass.settings.remove("Help/" + key) prefClass.settings.beginWriteArray("Help/" + key, len(value)) index = 0 @@ -2828,6 +2854,8 @@ prefClass.settings.setValue("Location", v[1]) prefClass.settings.setValue("Done", v[2]) prefClass.settings.setValue("PageURL", v[3]) + prefClass.settings.setValue( + "Downloaded", v[4].toString("yyyy-MM-dd hh:mm:ss")) index += 1 prefClass.settings.endArray() elif key == "RssFeeds": @@ -2898,22 +2926,27 @@ keywords.append((keyword, engineName)) prefClass.settings.endArray() return keywords - elif key in ["DownloadManagerDownloads"]: - # return a list of tuples of (URL, save location, done flag, page url) + elif key == "DownloadManagerDownloads": + # return a list of dicts containing the URL, save location, done flag, + # page URL, date/time downloaded downloads = [] length = prefClass.settings.beginReadArray("WebBrowser/" + key) for index in range(length): + download = {} prefClass.settings.setArrayIndex(index) - url = prefClass.settings.value("URL") - location = prefClass.settings.value("Location") - done = toBool(prefClass.settings.value("Done")) - pageUrl = prefClass.settings.value("PageURL") - if pageUrl is None: - pageUrl = QUrl() - downloaded = prefClass.settings.value("Downloaded") - if downloaded is None: - downloaded = QDateTime() - downloads.append((url, location, done, pageUrl, downloaded)) + download["URL"] = prefClass.settings.value("URL") + download["Location"] = prefClass.settings.value("Location") + download["Done"] = toBool(prefClass.settings.value("Done")) + download["PageURL"] = prefClass.settings.value("PageURL") + if download["PageURL"] is None: + download["PageURL"] = QUrl() + download["Downloaded"] = prefClass.settings.value("Downloaded") + if download["Downloaded"] is None: + download["Downloaded"] = QDateTime() + else: + download["Downloaded"] = QDateTime.fromString( + download["Downloaded"], "yyyy-MM-dd hh:mm:ss") + downloads.append(download) prefClass.settings.endArray() return downloads elif key == "RssFeeds": @@ -2974,7 +3007,8 @@ "BookmarksToolBarVisible", "StatusBarVisible", "SessionAutoSave", "LoadTabOnActivation", "SafeBrowsingEnabled", "SafeBrowsingFilterPlatform", - "SafeBrowsingAutoUpdate", + "SafeBrowsingAutoUpdate", "AllowGeolocationOnInsecureOrigins", + "AllowWindowActivationFromJavaScript", "ShowScrollBars", ]: return toBool(prefClass.settings.value( "WebBrowser/" + key, prefClass.webBrowserDefaults[key])) @@ -3027,17 +3061,19 @@ index += 1 prefClass.settings.endArray() elif key == "DownloadManagerDownloads": - # value is list of tuples of (URL, save location, done flag, page url) + # value is list of dicts containing the URL, save location, done flag, + # page URL, date/time downloaded prefClass.settings.remove("Help/" + key) prefClass.settings.beginWriteArray("WebBrowser/" + key, len(value)) index = 0 for v in value: prefClass.settings.setArrayIndex(index) - prefClass.settings.setValue("URL", v[0]) - prefClass.settings.setValue("Location", v[1]) - prefClass.settings.setValue("Done", v[2]) - prefClass.settings.setValue("PageURL", v[3]) - prefClass.settings.setValue("Downloaded", v[4]) + prefClass.settings.setValue("URL", v["URL"]) + prefClass.settings.setValue("Location", v["Location"]) + prefClass.settings.setValue("Done", v["Done"]) + prefClass.settings.setValue("PageURL", v["PageURL"]) + prefClass.settings.setValue( + "Downloaded", v["Downloaded"].toString("yyyy-MM-dd hh:mm:ss")) index += 1 prefClass.settings.endArray() elif key == "RssFeeds":
--- a/QScintilla/Editor.py Thu Jan 18 11:10:57 2018 +0100 +++ b/QScintilla/Editor.py Thu Jan 18 18:57:40 2018 +0100 @@ -547,7 +547,8 @@ """ Public method to add a clone to our list. - @param editor reference to the cloned editor (Editor) + @param editor reference to the cloned editor + @type Editor """ self.__clones.append(editor) @@ -560,7 +561,8 @@ """ Public method to remove a clone from our list. - @param editor reference to the cloned editor (Editor) + @param editor reference to the cloned editor + @type Editor """ if editor in self.__clones: editor.editorRenamed.disconnect(self.fileRenamed) @@ -569,6 +571,17 @@ editor.encodingChanged.disconnect(self.__encodingChanged) self.__clones.remove(editor) + def isClone(self, editor): + """ + Public method to test, if the given editor is a clone. + + @param editor reference to the cloned editor + @type Editor + @return flag indicating a clone + @rtype bool + """ + return editor in self.__clones + def __bindName(self, line0): """ Private method to generate a dummy filename for binding a lexer. @@ -616,6 +629,15 @@ elif "python" in line0: bindName = "dummy.py" self.filetype = "Python2" + elif "pypy3" in line0: + bindName = "dummy.py" + self.filetype = "Python3" + elif "pypy2" in line0: + bindName = "dummy.py" + self.filetype = "Python2" + elif "pypy" in line0: + bindName = "dummy.py" + self.filetype = "Python2" elif ("/bash" in line0 or "/sh" in line0): bindName = "dummy.sh" elif "ruby" in line0: @@ -630,6 +652,28 @@ self.filetype = "D" if not bindName: + # mode line detection: -*- mode: python -*- + match = re.search(r"mode[:=]\s*([-\w_.]+)", line0) + if match: + mode = match.group(1).lower() + if mode in ["python3", "pypy3"]: + bindName = "dummy.py" + self.filetype = "Python3" + elif mode in ["python2", "pypy2", "python", "pypy"]: + bindName = "dummy.py" + self.filetype = "Python2" + elif mode == "ruby": + bindName = "dummy.rb" + self.filetype = "Ruby" + elif mode == "perl": + bindName = "dummy.pl" + elif mode == "lua": + bindName = "dummy.lua" + elif mode in ["dmd", "d"]: + bindName = "dummy.d" + self.filetype = "D" + + if not bindName: bindName = self.fileName return bindName @@ -705,10 +749,13 @@ self.menuActs["Copy"] = self.menu.addAction( UI.PixmapCache.getIcon("editCopy.png"), self.tr('Copy'), self.copy) - self.menu.addAction( + self.menuActs["Paste"] = self.menu.addAction( UI.PixmapCache.getIcon("editPaste.png"), self.tr('Paste'), self.paste) if not self.miniMenu: + self.menuActs["ExecuteSelection"] = self.menu.addAction( + self.tr("Execute Selection In Console"), + self.__executeSelection) self.menu.addSeparator() self.menu.addAction( UI.PixmapCache.getIcon("editIndent.png"), @@ -734,7 +781,9 @@ self.menu.addAction(self.tr('Select all'), self.__selectAll) self.menu.addAction( self.tr('Deselect all'), self.__deselectAll) - self.menu.addSeparator() + else: + self.menuActs["ExecuteSelection"] = None + self.menu.addSeparator() self.menuActs["SpellCheck"] = self.menu.addAction( UI.PixmapCache.getIcon("spellchecking.png"), self.tr('Check spelling...'), self.checkSpelling) @@ -1182,7 +1231,7 @@ self.tr('Previous change'), self.previousChange) self.marginMenuActs["ClearChangeMarkers"] = \ self.indicMarginMenu.addAction( - self.tr('Clear changes'), self.__deleteAllChangeMarkers) + self.tr('Clear changes'), self.__reinitOnlineChangeTrace) self.indicMarginMenu.aboutToShow.connect(self.__showContextMenuMargin) @@ -1253,7 +1302,7 @@ self.tr('Previous change'), self.previousChange) self.marginMenuActs["ClearChangeMarkers"] = \ self.marginMenu.addAction( - self.tr('Clear changes'), self.__deleteAllChangeMarkers) + self.tr('Clear changes'), self.__reinitOnlineChangeTrace) self.marginMenu.addSeparator() self.marginMenuActs["LMBbookmarks"] = self.marginMenu.addAction( self.tr('LMB toggles bookmarks'), self.__lmBbookmarks) @@ -5126,9 +5175,12 @@ self.menuActs["Undo"].setEnabled(self.isUndoAvailable()) self.menuActs["Redo"].setEnabled(self.isRedoAvailable()) self.menuActs["Revert"].setEnabled(self.isModified()) - if not self.miniMenu: - self.menuActs["Cut"].setEnabled(self.hasSelectedText()) - self.menuActs["Copy"].setEnabled(self.hasSelectedText()) + self.menuActs["Cut"].setEnabled(self.hasSelectedText()) + self.menuActs["Copy"].setEnabled(self.hasSelectedText()) + if self.menuActs["ExecuteSelection"] is not None: + self.menuActs["ExecuteSelection"].setEnabled( + self.hasSelectedText()) + self.menuActs["Paste"].setEnabled(self.canPaste()) if not self.isResourcesFile: if self.fileName and self.isPyFile(): self.menuActs["Show"].setEnabled(True) @@ -6675,7 +6727,7 @@ if evt.modifiers() & Qt.ControlModifier: if delta < 0: self.zoomOut() - else: + elif delta > 0: self.zoomIn() evt.accept() return @@ -6683,7 +6735,7 @@ if evt.modifiers() & Qt.ShiftModifier: if delta < 0: self.gotoMethodClass(False) - else: + elif delta > 0: self.gotoMethodClass(True) evt.accept() return @@ -7136,7 +7188,7 @@ self.completer.setEnabled(False) ####################################################################### - ## Autocompleting templates + ## Auto-completing templates ####################################################################### def editorCommand(self, cmd): @@ -7957,3 +8009,10 @@ keys.append(key) for key in keys: del self.__mouseClickHandlers[key] + + def __executeSelection(self): + """ + Private slot to execute the selected text in the shell window. + """ + txt = self.selectedText() + e5App().getObject("Shell").executeLines(txt)
--- a/QScintilla/Lexers/__init__.py Thu Jan 18 11:10:57 2018 +0100 +++ b/QScintilla/Lexers/__init__.py Thu Jan 18 18:57:40 2018 +0100 @@ -96,6 +96,8 @@ "lexerCMake.png"], "CSS": [QCoreApplication.translate('Lexers', "CSS"), 'dummy.css', "lexerCSS.png"], + "Cython": [QCoreApplication.translate('Lexers', "Cython"), 'dummy.pyx', + "lexerCython.png"], "D": [QCoreApplication.translate('Lexers', "D"), 'dummy.d', "lexerD.png"], "Diff": [QCoreApplication.translate('Lexers', "Diff"), 'dummy.diff', @@ -339,6 +341,8 @@ elif language == "Protocol": return __getPygmentsLexer(parent, name="Protocol Buffer") + elif language == "Cython": + return __getPygmentsLexer(parent, name="Cython") elif language in LexerRegistry: return LexerRegistry[language][2](parent) @@ -389,7 +393,7 @@ 'Python GUI Files (*.pyw *.pyw2 *.pyw3)'), QCoreApplication.translate( 'Lexers', - 'Pyrex Files (*.pyx)'), + 'Cython Files (*.pyx *.pxd *.pxi)'), QCoreApplication.translate( 'Lexers', 'Quixote Template Files (*.ptl)'), @@ -576,7 +580,13 @@ "Python3 GUI Files (*.pyw)"), QCoreApplication.translate( 'Lexers', - "Pyrex Files (*.pyx)"), + "Cython Files (*.pyx)"), + QCoreApplication.translate( + 'Lexers', + "Cython Declaration Files (*.pxd)"), + QCoreApplication.translate( + 'Lexers', + "Cython Include Files (*.pxi)"), QCoreApplication.translate( 'Lexers', "Quixote Template Files (*.ptl)"), @@ -833,7 +843,9 @@ '*.pyw2': "Python", '*.py3': "Python", '*.pyw3': "Python", - '*.pyx': "Python", + '*.pyx': "Cython", + '*.pxd': "Cython", + '*.pxi': "Cython", '*.ptl': "Python", '*.rb': "Ruby", '*.rbw': "Ruby",
--- a/QScintilla/MiniEditor.py Thu Jan 18 11:10:57 2018 +0100 +++ b/QScintilla/MiniEditor.py Thu Jan 18 18:57:40 2018 +0100 @@ -3037,6 +3037,28 @@ elif "dmd" in line0: bindName = "dummy.d" self.filetype = "D" + + # mode line detection: -*- mode: python -*- + match = re.search(r"mode[:=]\s*([-\w_.]+)", line0) + if match: + mode = match.group(1).lower() + if mode in ["python3", "pypy3"]: + bindName = "dummy.py" + self.filetype = "Python3" + elif mode in ["python2", "pypy2", "python", "pypy"]: + bindName = "dummy.py" + self.filetype = "Python2" + elif mode == "ruby": + bindName = "dummy.rb" + self.filetype = "Ruby" + elif mode == "perl": + bindName = "dummy.pl" + elif mode == "lua": + bindName = "dummy.lua" + elif mode in ["dmd", "d"]: + bindName = "dummy.d" + self.filetype = "D" + return bindName ##########################################################
--- a/QScintilla/QsciScintillaCompat.py Thu Jan 18 11:10:57 2018 +0100 +++ b/QScintilla/QsciScintillaCompat.py Thu Jan 18 18:57:40 2018 +0100 @@ -744,6 +744,16 @@ except AttributeError: pass + def canPaste(self): + """ + Public method to test, if the paste action is available (i.e. if the + clipboard contains some text). + + @return flag indicating the availability of 'paste' + @rtype bool + """ + return self.SendScintilla(QsciScintilla.SCI_CANPASTE) + ########################################################################### ## methods to perform searches in target range ###########################################################################
--- a/QScintilla/Shell.py Thu Jan 18 11:10:57 2018 +0100 +++ b/QScintilla/Shell.py Thu Jan 18 18:57:40 2018 +0100 @@ -1125,7 +1125,7 @@ delta = evt.delta() if delta < 0: self.zoomOut() - else: + elif delta > 0: self.zoomIn() evt.accept() return @@ -1660,7 +1660,7 @@ self.__setHistoryIndex(index=-1) elif self.__historyStyle == ShellHistoryStyle.WindowsStyle: if historyIndex is None: - if bool(self.__histidx - 1) and \ + if self.__histidx - 1 > 0 and \ cmd != self.__history[self.__histidx - 1]: self.__setHistoryIndex(index=-1) else:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Styles/Chinese_Dark-Python.e4h Thu Jan 18 18:57:40 2018 +0100 @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE HighlightingStyles SYSTEM "HighlightingStyles-4.3.dtd"> +<!-- Eric6 highlighting styles --> +<!-- Saved: 2017-11-17, 10:26:26--> +<!-- Author: --> +<HighlightingStyles version="4.3"> + <Lexer name="Python3"> + <Style style="0" color="#839496" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Default</Style> + <Style style="1" color="#586e75" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Comment</Style> + <Style style="2" color="#839496" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Number</Style> + <Style style="3" color="#2aa198" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Double-quoted string</Style> + <Style style="4" color="#2aa198" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Single-quoted string</Style> + <Style style="5" color="#859900" paper="#002b36" font="Noto Mono,9,-1,5,75,0,0,0,0,0" eolfill="False">Keyword</Style> + <Style style="6" color="#2aa198" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Triple single-quoted string</Style> + <Style style="7" color="#2aa198" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Triple double-quoted string</Style> + <Style style="8" color="#859900" paper="#002b36" font="Noto Mono,9,-1,5,75,0,0,0,0,0" eolfill="False">Class name</Style> + <Style style="9" color="#859900" paper="#002b36" font="Noto Mono,9,-1,5,75,0,0,0,0,0" eolfill="False">Function or method name</Style> + <Style style="10" color="#839496" paper="#002b36" font="Noto Mono,9,-1,5,75,0,0,0,0,0" eolfill="False">Operator</Style> + <Style style="11" color="#839496" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Identifier</Style> + <Style style="12" color="#586e75" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Comment block</Style> + <Style style="13" color="#000000" paper="#e0c0e0" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Unclosed string</Style> + <Style style="14" color="#407090" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Highlighted identifier</Style> + <Style style="15" color="#657b83" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Decorator</Style> + </Lexer> + <Lexer name="Python2"> + <Style style="0" color="#839496" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Default</Style> + <Style style="1" color="#586e75" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Comment</Style> + <Style style="2" color="#839496" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Number</Style> + <Style style="3" color="#2aa198" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Double-quoted string</Style> + <Style style="4" color="#2aa198" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Single-quoted string</Style> + <Style style="5" color="#859900" paper="#002b36" font="Noto Mono,9,-1,5,75,0,0,0,0,0" eolfill="False">Keyword</Style> + <Style style="6" color="#2aa198" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Triple single-quoted string</Style> + <Style style="7" color="#2aa198" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Triple double-quoted string</Style> + <Style style="8" color="#859900" paper="#002b36" font="Noto Mono,9,-1,5,75,0,0,0,0,0" eolfill="False">Class name</Style> + <Style style="9" color="#859900" paper="#002b36" font="Noto Mono,9,-1,5,75,0,0,0,0,0" eolfill="False">Function or method name</Style> + <Style style="10" color="#839496" paper="#002b36" font="Noto Mono,9,-1,5,75,0,0,0,0,0" eolfill="False">Operator</Style> + <Style style="11" color="#839496" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Identifier</Style> + <Style style="12" color="#586e75" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Comment block</Style> + <Style style="13" color="#000000" paper="#e0c0e0" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Unclosed string</Style> + <Style style="14" color="#407090" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Highlighted identifier</Style> + <Style style="15" color="#657b83" paper="#002b36" font="Noto Mono,9,-1,5,50,0,0,0,0,0" eolfill="False">Decorator</Style> + </Lexer> +</HighlightingStyles>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Styles/Chinese_Dark.qss Thu Jan 18 18:57:40 2018 +0100 @@ -0,0 +1,464 @@ +QPalette{ + background:#444444; + } + +*{ + outline:0px;color:#DCDCDC; + } + +QWidget QStatusBar, QSvgWidget, QToolBar, +QGroupBox, QHelpSearchQueryWidget, QHelpSearchResultWidget, +QDesignerPropertyEditorInterface, QDesignerWidgetBoxInterface, QDesktopWidget, QDialog, QDialogButtonBox, +QDesignerActionEditorInterface, QDesignerFormWindowInterface, QDesignerObjectInspectorInterface, +QAbstractButton, QAbstractSlider, QAbstractSpinBox, QAxWidget, QCalendarWidget, QComboBox, +QMdiSubWindow, QMenu,QMenuBar,QDockWidget, QFocusFrame, QGLWidget,QToolBox, QLCDNumber , +QSplitter, QStackedWidget, +QMainWindow, +QWidget#SearchWidgetLine, +QScrollArea +{ +background:#484848; +} + +QMenu * +{ +background:#484848; +} + +QMenuBar *,QTabWidget >* + { +background:#484848; +} + +QScrollArea * +{ +background:#484848; +} + + + +/* ===================== QComboxBox======================== */ +QComboBox::down-arrow,QDateEdit::down-arrow,QTimeEdit::down-arrow,QDateTimeEdit::down-arrow{ + +width:10px; +height:10px; +right:2px; +} + +QComboBox::drop-down,QDateEdit::drop-down,QTimeEdit::drop-down,QDateTimeEdit::drop-down{ +subcontrol-origin:padding; +subcontrol-position:top right; +width:15px; +border-left-width:0px; +border-left-style:solid; +border-top-right-radius:3px; +border-bottom-right-radius:3px; +border-left-color:#242424; +} + +QComboBox::drop-down:on{ +top:1px; +} +/* ===================== QMenu======================== */ +QMenuBar::item{ +color:#DCDCDC; +background-color:#484848; +margin:0px; +padding:3px 10px; +} + +QMenu,QMenuBar,QMenu:disabled,QMenuBar:disabled{ +color:#DCDCDC; +background-color:#484848; +border:1px solid #242424; +margin:0px; +} + +QMenu::item{ +padding:3px 20px; +} + +QMenu::indicator{ +width:13px; +height:13px; +} + +QMenu::item:selected,QMenuBar::item:selected{ +color:#DCDCDC; +border:0px solid #242424; +background:#646464; +} + +QMenu::separator{ +height:1px; +background:#242424; +} +/* ===================== QProgressBar======================== */ +QProgressBar{ +min-height:10px; +background:#484848; +border-radius:5px; +text-align:center; +border:1px solid #484848; +} + +QProgressBar:chunk{ +border-radius:5px; +background-color:#242424; +} +/* ===================== QSlider QScrollArea ======================== */ +QSlider::groove:horizontal{ +background:#484848; +height:8px; +border-radius:4px; +} + +QSlider::add-page:horizontal{ +background:#484848; +height:8px; +border-radius:4px; +} + +QSlider::sub-page:horizontal{ +background:#242424; +height:8px; +border-radius:4px; +} + +QSlider::handle:horizontal{ +width:13px; +margin-top:-3px; +margin-bottom:-3px; +border-radius:6px; +background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #444444,stop:0.8 #242424); +} + +QSlider::groove:vertical{ +width:8px; +border-radius:4px; +background:#484848; +} + +QSlider::add-page:vertical{ +width:8px; +border-radius:4px; +background:#484848; +} + +QSlider::sub-page:vertical{ +width:8px; +border-radius:4px; +background:#242424; +} + +QSlider::handle:vertical{ +height:14px; +margin-left:-3px; +margin-right:-3px; +border-radius:6px; +background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #444444,stop:0.8 #242424); +} + +QScrollBar:horizontal{ +background:#484848; +padding:0px; +border-radius:6px; +max-height:12px; +} + +QScrollBar::handle:horizontal{ +background:#242424; +min-width:50px; +border-radius:6px; +} + +QScrollBar::handle:horizontal:hover{ +background:#242424; +} + +QScrollBar::handle:horizontal:pressed{ +background:#242424; +} + +QScrollBar::add-page:horizontal{ +background:none; +} + +QScrollBar::sub-page:horizontal{ +background:none; +} + +QScrollBar::add-line:horizontal{ +background:none; +} + +QScrollBar::sub-line:horizontal{ +background:none; +} + +QScrollBar:vertical{ +background:#484848; +padding:0px; +border-radius:6px; +max-width:12px; +} + +QScrollBar::handle:vertical{ +background:#242424; +min-height:50px; +border-radius:6px; +} + +QScrollBar::handle:vertical:hover{ +background:#242424; +} + +QScrollBar::handle:vertical:pressed{ +background:#242424; +} + +QScrollBar::add-page:vertical{ +background:none; +} + +QScrollBar::sub-page:vertical{ +background:none; +} + +QScrollBar::add-line:vertical{ +background:none; +} + +QScrollBar::sub-line:vertical{ +background:none; +} + +QScrollArea{ +border:0px; +} + + +/* ===================== QTreeView======================== */ +QTreeView,QListView,QTableView,QTabWidget::pane{ +border:1px solid #242424; +selection-background-color:#646464; +selection-color:#000000; +alternate-background-color:#525252; +gridline-color:#242424; +background:#444444; +} + +/* QTreeView,QListView,QTableView,QSplitter::handle,QTreeView::branch{ */ +/* background:#444444; */ +/* } */ + +QTableView::item:selected,QListView::item:selected,QTreeView::item:selected{ +color:#000000; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #FFFFFF,stop:1 #FFFFFF); +} + +QTableView::item:hover,QListView::item:hover,QTreeView::item:hover{ +color:#DCDCDC; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #000000,stop:1 #000000); +} + +QTableView::item,QListView::item,QTreeView::item{ +padding:1px; +margin:0px; +} + +QTreeView::branch:closed:has-children{ +margin:4px; +/* border-image:url(D:\Personal\Desktop\QSS-Skin-Builder-master\other\qss\blue\branch_open.png); */ +} + +QTreeView::branch:open:has-children{ +margin:4px; +/* border-image:url(:/qss/psblack/branch_close.png); */ +} + + +/* ===================== QHeaderView======================== */ +QHeaderView::section,QTableCornerButton:section{ +padding:3px; +margin:0px; +color:#DCDCDC; +border:1px solid #242424; +border-left-width:0px; +border-right-width:1px; +border-top-width:0px; +border-bottom-width:1px; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} +/* ===================== QTabBar======================== */ +QTabBar::tab{ +border:1px solid #242424; +color:#DCDCDC; +margin:0px; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} + +QTabBar::tab:selected,QTabBar::tab:hover{ +border-style:solid; +border-color:#00BB9E; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QTabBar::tab:top,QTabBar::tab:bottom{ +padding:3px 8px 3px 8px; +} + +QTabBar::tab:left,QTabBar::tab:right{ +padding:8px 3px 8px 3px; +} + +QTabBar::tab:top:selected,QTabBar::tab:top:hover{ +border-width:2px 0px 0px 0px; +} + +QTabBar::tab:right:selected,QTabBar::tab:right:hover{ +border-width:0px 0px 0px 2px; +} + +QTabBar::tab:bottom:selected,QTabBar::tab:bottom:hover{ +border-width:0px 0px 2px 0px; +} + +QTabBar::tab:left:selected,QTabBar::tab:left:hover{ +border-width:0px 2px 0px 0px; +} + +QTabBar::tab:first:top:selected,QTabBar::tab:first:top:hover,QTabBar::tab:first:bottom:selected,QTabBar::tab:first:bottom:hover{ +border-left-width:1px; +border-left-color:#242424; +} + +QTabBar::tab:first:left:selected,QTabBar::tab:first:left:hover,QTabBar::tab:first:right:selected,QTabBar::tab:first:right:hover{ +border-top-width:1px; +border-top-color:#242424; +} + +QTabBar::tab:last:top:selected,QTabBar::tab:last:top:hover,QTabBar::tab:last:bottom:selected,QTabBar::tab:last:bottom:hover{ +border-right-width:1px; +border-right-color:#242424; +} + +QTabBar::tab:last:left:selected,QTabBar::tab:last:left:hover,QTabBar::tab:last:right:selected,QTabBar::tab:last:right:hover{ +border-bottom-width:1px; +border-bottom-color:#242424; +} + +QStatusBar::item{ +border:0px solid #484848; +border-radius:3px; +} +/* ===================== QToolBox======================== */ +QToolBox::tab,QGroupBox#gboxDevicePanel,QGroupBox#gboxDeviceTitle,QFrame#gboxDevicePanel,QFrame#gboxDeviceTitle{ +dding:3px; +border-radius:5px; +color:#DCDCDC; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QToolTip{ +border:0px solid #DCDCDC; +padding:1px; +color:#FFFFFF; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QToolBox::tab:selected{ +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} +/* ============================================= */ +QPrintPreviewDialog QToolButton{ +border:0px solid #DCDCDC; +border-radius:0px; +margin:0px; +padding:3px; +background:none; +} + +QColorDialog QPushButton,QFileDialog QPushButton{ +min-width:80px; +} +/* ============= QToolButton==================== */ +QToolButton#qt_calendar_prevmonth{ +icon-size:0px; +min-width:20px; +/* image:url(:/qss/psblack/calendar_prevmonth.png); */ +} + +QToolButton#qt_calendar_nextmonth{ +icon-size:0px; +min-width:20px; +/* image:url(:/qss/psblack/calendar_nextmonth.png); */ +} + +QToolButton#qt_calendar_prevmonth,QToolButton#qt_calendar_nextmonth,QToolButton#qt_calendar_monthbutton,QToolButton#qt_calendar_yearbutton{ +border:0px solid #DCDCDC; +border-radius:3px; +margin:3px 3px 3px 3px; +padding:3px; +background:none; +} + +QToolButton#qt_calendar_prevmonth:hover,QToolButton#qt_calendar_nextmonth:hover,QToolButton#qt_calendar_monthbutton:hover,QToolButton#qt_calendar_yearbutton:hover,QToolButton#qt_calendar_prevmonth:pressed,QToolButton#qt_calendar_nextmonth:pressed,QToolButton#qt_calendar_monthbutton:pressed,QToolButton#qt_calendar_yearbutton:pressed{ +border:1px solid #242424; +} +/* ============= QCalendarWidget==================== */ +QCalendarWidget QSpinBox#qt_calendar_yearedit{ +margin:2px; +} + +QCalendarWidget QToolButton::menu-indicator{ +image:None; +} + +QCalendarWidget QTableView{ +border-width:0px; +} + +QCalendarWidget QWidget#qt_calendar_navigationbar{ +border:1px solid #242424; +border-width:1px 1px 0px 1px; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QComboBox QAbstractItemView::item{ +min-height:20px; +min-width:10px; +} + +QTableView::item{ +padding:0px; +margin:0px; +} + +QTableView QLineEdit,QTableView QComboBox,QTableView QSpinBox,QTableView QDoubleSpinBox,QTableView QDateEdit,QTableView QTimeEdit,QTableView QDateTimeEdit{ +border-width:0px; +border-radius:0px; +} + +QTableView QLineEdit:focus,QTableView QComboBox:focus,QTableView QSpinBox:focus,QTableView QDoubleSpinBox:focus,QTableView QDateEdit:focus,QTableView QTimeEdit:focus,QTableView QDateTimeEdit:focus{ +border-width:0px; +border-radius:0px; +} + +QLineEdit,QTextEdit,QPlainTextEdit,QSpinBox,QDoubleSpinBox,QComboBox,QDateEdit,QTimeEdit,QDateTimeEdit{ +background:#444444; +} + +/* *:disabled{ */ +/* background:#444444; */ +/* border-color:#484848; */ +/* } */ + +/* TextColor:#DCDCDC */ +/* PanelColor:#444444 */ +/* BorderColor:#242424 */ +/* NormalColorStart:#484848 */ +/* NormalColorEnd:#383838 */ +/* DarkColorStart:#646464 */ +/* DarkColorEnd:#525252 */ +/* HighColor:#00BB9E */
--- a/Utilities/__init__.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Utilities/__init__.py Thu Jan 18 18:57:40 2018 +0100 @@ -81,11 +81,11 @@ configDir = None codingBytes_regexps = [ - (2, re.compile(br'''coding[:=]\s*([-\w_.]+)''')), + (5, re.compile(br'''coding[:=]\s*([-\w_.]+)''')), (1, re.compile(br'''<\?xml.*\bencoding\s*=\s*['"]([-\w_.]+)['"]\?>''')), ] coding_regexps = [ - (2, re.compile(r'''coding[:=]\s*([-\w_.]+)''')), + (5, re.compile(r'''coding[:=]\s*([-\w_.]+)''')), (1, re.compile(r'''<\?xml.*\bencoding\s*=\s*['"]([-\w_.]+)['"]\?>''')), ] @@ -1844,12 +1844,12 @@ pm = app.getObject("PluginManager") versions = {} for info in pm.getPluginInfos(): - versions[info[0]] = info[2] + versions[info["module_name"]] = info["version"] infoStr = "Plugins Version Numbers:{0}".format(linesep) - for pluginName in sorted(versions.keys()): + for pluginModuleName in sorted(versions.keys()): infoStr += " {0} {1}{2}".format( - pluginName, versions[pluginName], linesep) + pluginModuleName, versions[pluginModuleName], linesep) except KeyError: pass
--- a/ViewManager/ViewManager.py Thu Jan 18 11:10:57 2018 +0100 +++ b/ViewManager/ViewManager.py Thu Jan 18 18:57:40 2018 +0100 @@ -11,7 +11,7 @@ import os -from PyQt5.QtCore import pyqtSignal, QSignalMapper, QTimer, \ +from PyQt5.QtCore import pyqtSignal, pyqtSlot, QSignalMapper, QTimer, \ QFileInfo, QRegExp, Qt, QCoreApplication from PyQt5.QtGui import QColor, QKeySequence, QPalette, QPixmap from PyQt5.QtWidgets import QLineEdit, QToolBar, QWidgetAction, QDialog, \ @@ -383,15 +383,22 @@ """ raise RuntimeError('Not implemented') - def _addView(self, win, fn=None, noName="", addNext=False): + def _addView(self, win, fn=None, noName="", addNext=False, indexes=None): """ Protected method to add a view (i.e. window). @param win editor assembly to be added + @type EditorAssembly @param fn filename of this editor - @param noName name to be used for an unnamed editor (string) + @type str + @param noName name to be used for an unnamed editor + @type str @param addNext flag indicating to add the view next to the current - view (bool) + view + @type bool + @param indexes of the editor, first the split view index, second the + index within the view + @type tuple of two int @exception RuntimeError Not implemented """ raise RuntimeError('Not implemented') @@ -471,14 +478,38 @@ """ pass - def removeSplit(self): - """ - Public method used to remove the current split view. - - @return Flag indicating successful deletion + @pyqtSlot() + def removeSplit(self, index=-1): + """ + Public method used to remove the current split view or a split view + by index. + + @param index index of the split to be removed (-1 means to + delete the current split) + @type int + @return flag indicating successful deletion + @rtype bool """ return False + def splitCount(self): + """ + Public method to get the number of split views. + + @return number of split views + @rtype int + """ + return 0 + + def setSplitCount(self, count): + """ + Public method to set the number of split views. + + @param count number of split views + @type int + """ + pass + def getSplitOrientation(self): """ Public method to get the orientation of the split view. @@ -4537,24 +4568,37 @@ self.__setSbFile() def openSourceFile(self, fn, lineno=-1, filetype="", - selStart=0, selEnd=0, pos=0, addNext=False): + selStart=0, selEnd=0, pos=0, addNext=False, + indexes=None): """ Public slot to display a file in an editor. - @param fn name of file to be opened (string) - @param lineno line number to place the cursor at (integer) or - list of line numbers (list of integers) (cursor will be - placed at the next line greater than the current one) - @param filetype type of the source file (string) - @param selStart start of an area to be selected (integer) - @param selEnd end of an area to be selected (integer) - @param pos position within the line to place the cursor at (integer) + @param fn name of file to be opened + @type str + @param lineno line number to place the cursor at or list of line + numbers (cursor will be placed at the next line greater than + the current one) + @type int or list of int + @param filetype type of the source file + @type str + @param selStart start of an area to be selected + @type int + @param selEnd end of an area to be selected + @type int + @param pos position within the line to place the cursor at + @type int @param addNext flag indicating to add the file next to the current - editor (bool) + editor + @type bool + @param indexes of the editor, first the split view index, second the + index within the view + @type tuple of two int + @return reference to the opened editor + @rtype Editor """ try: newWin, editor = self.getEditor(fn, filetype=filetype, - addNext=addNext) + addNext=addNext, indexes=indexes) except (IOError, UnicodeDecodeError): return @@ -4588,6 +4632,8 @@ # insert filename into list of recently opened files self.addToRecentList(fn) + return editor + def __connectEditor(self, editor): """ Private method to establish all editor connections. @@ -4623,19 +4669,29 @@ lambda: self.editorLanguageChanged.emit(editor)) editor.textChanged.connect(lambda: self.editorTextChanged.emit(editor)) - def newEditorView(self, fn, caller, filetype=""): + def newEditorView(self, fn, caller, filetype="", indexes=None): """ Public method to create a new editor displaying the given document. @param fn filename of this view + @type str @param caller reference to the editor calling this method - @param filetype type of the source file (string) + @type Editor + @param filetype type of the source file + @type str + @param indexes of the editor, first the split view index, second the + index within the view + @type tuple of two int + @return reference to the new editor object + @rtype Editor """ editor, assembly = self.cloneEditor(caller, filetype, fn) - self._addView(assembly, fn, caller.getNoName()) + self._addView(assembly, fn, caller.getNoName(), indexes=indexes) self._modificationStatusChanged(editor.isModified(), editor) self._checkActions(editor) + + return editor def cloneEditor(self, caller, filetype, fn): """ @@ -4839,7 +4895,7 @@ return filenames - def getEditor(self, fn, filetype="", addNext=False): + def getEditor(self, fn, filetype="", addNext=False, indexes=None): """ Public method to return the editor displaying the given file. @@ -4847,11 +4903,18 @@ created. @param fn filename to look for - @param filetype type of the source file (string) + @type str + @param filetype type of the source file + @type str @param addNext flag indicating that if a new editor needs to be - created, it should be added next to the current editor (bool) + created, it should be added next to the current editor + @type bool + @param indexes of the editor, first the split view index, second the + index within the view + @type tuple of two int @return tuple of two values giving a flag indicating a new window creation and a reference to the editor displaying this file + @rtype tuple of (bool, Editor) """ newWin = False editor = self.activeWindow() @@ -4873,7 +4936,7 @@ newWin = True if newWin: - self._addView(assembly, fn, addNext=addNext) + self._addView(assembly, fn, addNext=addNext, indexes=indexes) else: self._showView(editor.parent(), fn) @@ -4923,6 +4986,20 @@ count += 1 return count + def getOpenEditorsForSession(self): + """ + Public method to get a lists of all open editors. + + The returned list contains one list per split view. If the view manager + cannot split the view, only one list of editors is returned. + + Note: This method should be implemented by subclasses. + + @return list of list of editor references + @rtype list of list of Editor + """ + return [self.editors] + def getActiveName(self): """ Public method to retrieve the filename of the active window.
--- a/WebBrowser/Download/DownloadItem.py Thu Jan 18 11:10:57 2018 +0100 +++ b/WebBrowser/Download/DownloadItem.py Thu Jan 18 18:57:40 2018 +0100 @@ -64,10 +64,15 @@ self.progressBar.setMaximum(0) + self.pauseButton.setIcon(UI.PixmapCache.getIcon("pause.png")) self.stopButton.setIcon(UI.PixmapCache.getIcon("stopLoading.png")) self.openButton.setIcon(UI.PixmapCache.getIcon("open.png")) self.openButton.setEnabled(False) self.openButton.setVisible(False) + if not hasattr(QWebEngineDownloadItem, "pause"): + # pause/resume was defined in Qt 5.10.0 / PyQt 5.10.0 + self.pauseButton.setEnabled(False) + self.pauseButton.setVisible(False) self.__state = DownloadItem.Downloading @@ -314,13 +319,18 @@ name += '.' + endName return name, origName - def __open(self): - """ - Private slot to open the downloaded file. + @pyqtSlot(bool) + def on_pauseButton_clicked(self, checked): """ - info = QFileInfo(self.__fileName) - url = QUrl.fromLocalFile(info.absoluteFilePath()) - QDesktopServices.openUrl(url) + Private slot to pause the download. + + @param checked flag indicating the state of the button + @type bool + """ + if checked: + self.__downloadItem.pause() + else: + self.__downloadItem.resume() @pyqtSlot() def on_stopButton_clicked(self): @@ -338,6 +348,8 @@ self.stopButton.setVisible(False) self.openButton.setEnabled(False) self.openButton.setVisible(False) + self.pauseButton.setEnabled(False) + self.pauseButton.setVisible(False) self.setUpdatesEnabled(True) self.__state = DownloadItem.DownloadCancelled self.__downloadItem.cancel() @@ -508,6 +520,8 @@ QWebEngineDownloadItem.DownloadCompleted) self.progressBar.setVisible(False) + self.pauseButton.setEnabled(False) + self.pauseButton.setVisible(False) self.stopButton.setEnabled(False) self.stopButton.setVisible(False) self.openButton.setEnabled(noError) @@ -522,7 +536,7 @@ self.downloadFinished.emit() if self.__autoOpen: - self.__open() + self.openFile() def canceledFileSelect(self): """ @@ -560,41 +574,49 @@ """ Public method to get the relevant download data. - @return tuple of URL, save location, flag, the - URL of the related web page and the date and time - of the download - @rtype tuple of (QUrl, str, bool, QUrl, QDateTime) + @return dictionary containing the URL, save location, done flag, + the URL of the related web page and the date and time of the + download + @rtype dict of {"URL": QUrl, "Location": str, "Done": bool, + "PageURL": QUrl, "Downloaded": QDateTime} """ - return (self.__url, QFileInfo(self.__fileName).filePath(), - self.downloadedSuccessfully(), self.__pageUrl, - self.__downloadedDateTime) + return { + "URL": self.__url, + "Location": QFileInfo(self.__fileName).filePath(), + "Done": self.downloadedSuccessfully(), + "PageURL": self.__pageUrl, + "Downloaded": self.__downloadedDateTime + } def setData(self, data): """ Public method to set the relevant download data. - @param data tuple of URL, save location, flag, the - URL of the related web page and the date and time - of the download - @type QUrl, str, bool, QUrl, QDateTime + @param data dictionary containing the URL, save location, done flag, + the URL of the related web page and the date and time of the + download + @type dict of {"URL": QUrl, "Location": str, "Done": bool, + "PageURL": QUrl, "Downloaded": QDateTime} """ - self.__url = data[0] - self.__fileName = data[1] - self.__pageUrl = data[3] + self.__url = data["URL"] + self.__fileName = data["Location"] + self.__pageUrl = data["PageURL"] self.filenameLabel.setText(QFileInfo(self.__fileName).fileName()) self.infoLabel.setText(self.__fileName) - if len(data) == 5: - self.__setDateTime(data[4]) - else: + try: + self.__setDateTime(data["Downloaded"]) + except KeyError: self.__setDateTime(QDateTime()) + self.pauseButton.setEnabled(False) + self.pauseButton.setVisible(False) self.stopButton.setEnabled(False) self.stopButton.setVisible(False) - self.openButton.setEnabled(data[2]) - self.openButton.setVisible(data[2]) - if data[2]: + self.openButton.setEnabled(data["Done"]) + self.openButton.setVisible(data["Done"]) + if data["Done"]: self.__state = DownloadItem.DownloadSuccessful else: self.__state = DownloadItem.DownloadCancelled
--- a/WebBrowser/Download/DownloadItem.ui Thu Jan 18 11:10:57 2018 +0100 +++ b/WebBrowser/Download/DownloadItem.ui Thu Jan 18 18:57:40 2018 +0100 @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>397</width> - <height>104</height> + <height>93</height> </rect> </property> <property name="sizePolicy"> @@ -20,17 +20,20 @@ <string/> </property> <layout class="QHBoxLayout" name="horizontalLayout"> + <property name="spacing"> + <number>3</number> + </property> <property name="leftMargin"> - <number>2</number> + <number>1</number> </property> <property name="topMargin"> - <number>2</number> + <number>1</number> </property> <property name="rightMargin"> - <number>2</number> + <number>1</number> </property> <property name="bottomMargin"> - <number>2</number> + <number>1</number> </property> <item> <widget class="QLabel" name="fileIcon"> @@ -41,6 +44,9 @@ </item> <item> <layout class="QVBoxLayout" name="verticalLayout"> + <property name="spacing"> + <number>3</number> + </property> <item> <widget class="QLabel" name="datetimeLabel"> <property name="text"> @@ -98,6 +104,19 @@ </layout> </item> <item> + <widget class="QToolButton" name="pauseButton"> + <property name="toolTip"> + <string>Press to pause the download</string> + </property> + <property name="text"> + <string/> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + </widget> + </item> + <item> <widget class="QToolButton" name="stopButton"> <property name="toolTip"> <string>Press to cancel the download</string> @@ -120,6 +139,7 @@ </layout> </widget> <tabstops> + <tabstop>pauseButton</tabstop> <tabstop>stopButton</tabstop> <tabstop>openButton</tabstop> </tabstops>
--- a/WebBrowser/Download/DownloadManager.py Thu Jan 18 11:10:57 2018 +0100 +++ b/WebBrowser/Download/DownloadManager.py Thu Jan 18 18:57:40 2018 +0100 @@ -125,8 +125,7 @@ """ Public method to stop the download manager. """ - self.__saveTimer.changeOccurred() - self.__saveTimer.saveIfNeccessary() + self.save() self.close() def activeDownloads(self): @@ -174,23 +173,26 @@ return # Safe Browsing - threatLists = WebBrowserWindow.safeBrowsingManager().lookupUrl(url) - if threatLists: - threatMessages = WebBrowserWindow.safeBrowsingManager()\ - .getThreatMessages(threatLists) - res = E5MessageBox.warning( - WebBrowserWindow.getWindow(), - self.tr("Suspicuous URL detected"), - self.tr("<p>The URL <b>{0}</b> was found in the Safe Browsing" - " database.</p>{1}").format(url.toString(), - "".join(threatMessages)), - E5MessageBox.StandardButtons( - E5MessageBox.Abort | - E5MessageBox.Ignore), - E5MessageBox.Abort) - if res == E5MessageBox.Abort: - downloadItem.cancel() - return + from WebBrowser.SafeBrowsing.SafeBrowsingManager import \ + SafeBrowsingManager + if SafeBrowsingManager.isEnabled(): + threatLists = WebBrowserWindow.safeBrowsingManager().lookupUrl(url) + if threatLists: + threatMessages = WebBrowserWindow.safeBrowsingManager()\ + .getThreatMessages(threatLists) + res = E5MessageBox.warning( + WebBrowserWindow.getWindow(), + self.tr("Suspicuous URL detected"), + self.tr("<p>The URL <b>{0}</b> was found in the Safe" + " Browsing database.</p>{1}").format( + url.toString(), "".join(threatMessages)), + E5MessageBox.StandardButtons( + E5MessageBox.Abort | + E5MessageBox.Ignore), + E5MessageBox.Abort) + if res == E5MessageBox.Abort: + downloadItem.cancel() + return from .DownloadItem import DownloadItem itm = DownloadItem(downloadItem, parent=self) @@ -339,20 +341,31 @@ pos = Preferences.getWebBrowser("DownloadManagerPosition") self.move(pos) - downloads = Preferences.getWebBrowser("DownloadManagerDownloads") - for download in downloads: - if not download[0].isEmpty() and \ - download[1] != "": - from .DownloadItem import DownloadItem - itm = DownloadItem(parent=self) - itm.setData(download) - self.__addItem(itm, append=True) - self.cleanupButton.setEnabled( - (len(self.__downloads) - self.activeDownloads()) > 0) + from WebBrowser.WebBrowserWindow import WebBrowserWindow + if not WebBrowserWindow.isPrivate(): + downloads = Preferences.getWebBrowser("DownloadManagerDownloads") + for download in downloads: + if not download["URL"].isEmpty() and \ + bool(download["Location"]): + from .DownloadItem import DownloadItem + itm = DownloadItem(parent=self) + itm.setData(download) + self.__addItem(itm, append=True) + self.cleanupButton.setEnabled( + (len(self.__downloads) - self.activeDownloads()) > 0) self.__loaded = True self.__updateActiveItemCount() + def closeEvent(self, evt): + """ + Protected event handler for the close event. + + @param evt reference to the close event + @type QCloseEvent + """ + self.save() + def cleanup(self): """ Public slot to cleanup the downloads.
--- a/WebBrowser/Download/DownloadManager.ui Thu Jan 18 11:10:57 2018 +0100 +++ b/WebBrowser/Download/DownloadManager.ui Thu Jan 18 18:57:40 2018 +0100 @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>400</width> - <height>300</height> + <width>600</width> + <height>400</height> </rect> </property> <property name="windowTitle">
--- a/WebBrowser/FeaturePermissions/FeaturePermissionBar.py Thu Jan 18 11:10:57 2018 +0100 +++ b/WebBrowser/FeaturePermissions/FeaturePermissionBar.py Thu Jan 18 18:57:40 2018 +0100 @@ -56,6 +56,18 @@ QWebEnginePage.MouseLock: self.tr("{0} wants to lock your mouse."), } + try: + # these are defined as of Qt 5.10.0/PyQt 5.10.0 + self.__permissionFeatureTexts.update({ + QWebEnginePage.DesktopVideoCapture: + self.tr("{0} wants to capture video of your screen."), + QWebEnginePage.DesktopAudioVideoCapture: + self.tr("{0} wants to capture audio and video of your" + " screen."), + }) + except AttributeError: + pass + self.__permissionFeatureIconNames = { QWebEnginePage.Geolocation: "geolocation.png", QWebEnginePage.MediaAudioCapture: "audiocapture.png", @@ -63,6 +75,15 @@ QWebEnginePage.MediaAudioVideoCapture: "audio-video.png", QWebEnginePage.MouseLock: "mouse.png", } + try: + # these are defined as of Qt 5.10.0/PyQt 5.10.0 + self.__permissionFeatureIconNames.update({ + QWebEnginePage.DesktopVideoCapture: "desktopVideoCapture.png", + QWebEnginePage.DesktopAudioVideoCapture: + "desktopAudioVideoCapture.png", + }) + except AttributeError: + pass self.setAutoFillBackground(True) self.__layout = QHBoxLayout()
--- a/WebBrowser/FeaturePermissions/FeaturePermissionManager.py Thu Jan 18 11:10:57 2018 +0100 +++ b/WebBrowser/FeaturePermissions/FeaturePermissionManager.py Thu Jan 18 18:57:40 2018 +0100 @@ -54,6 +54,21 @@ QWebEnginePage.PermissionDeniedByUser: [], }, } + try: + # these are defined as of Qt 5.10.0/PyQt 5.10.0 + self.__featurePermissions.update({ + QWebEnginePage.DesktopVideoCapture: { + QWebEnginePage.PermissionGrantedByUser: [], + QWebEnginePage.PermissionDeniedByUser: [], + }, + QWebEnginePage.DesktopAudioVideoCapture: { + QWebEnginePage.PermissionGrantedByUser: [], + QWebEnginePage.PermissionDeniedByUser: [], + }, + }) + except AttributeError: + pass + self.__featurePermissionsKeys = { (QWebEnginePage.Geolocation, QWebEnginePage.PermissionGrantedByUser): @@ -86,6 +101,24 @@ QWebEnginePage.PermissionDeniedByUser): "MouseLockDenied", } + try: + # these are defined as of Qt 5.10.0/PyQt 5.10.0 + self.__featurePermissionsKeys.update({ + (QWebEnginePage.DesktopVideoCapture, + QWebEnginePage.PermissionGrantedByUser): + "DesktopVideoCaptureGranted", + (QWebEnginePage.DesktopVideoCapture, + QWebEnginePage.PermissionDeniedByUser): + "DesktopVideoCaptureDenied", + (QWebEnginePage.DesktopAudioVideoCapture, + QWebEnginePage.PermissionGrantedByUser): + "DesktopAudioVideoCaptureGranted", + (QWebEnginePage.DesktopAudioVideoCapture, + QWebEnginePage.PermissionDeniedByUser): + "DesktopAudioVideoCaptureDenied", + }) + except AttributeError: + pass self.__loaded = False
--- a/WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py Thu Jan 18 11:10:57 2018 +0100 +++ b/WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py Thu Jan 18 18:57:40 2018 +0100 @@ -114,12 +114,51 @@ UI.PixmapCache.getIcon("mouse.png"), self.tr("Mouse Lock")) + if hasattr(QWebEnginePage, "DesktopVideoCapture"): + # these are shown as of Qt 5.10.0/PyQt 5.10.0 + self.deskVidList = QTreeWidget() + self.deskVidList.setAlternatingRowColors(True) + self.deskVidList.setSelectionMode( + QAbstractItemView.ExtendedSelection) + self.deskVidList.setRootIsDecorated(False) + self.deskVidList.setItemsExpandable(False) + self.deskVidList.setAllColumnsShowFocus(True) + self.deskVidList.setObjectName("deskVidList") + self.deskVidList.setSortingEnabled(True) + self.deskVidList.headerItem().setText(0, self.tr("Host")) + self.deskVidList.headerItem().setText(1, self.tr("Permission")) + self.tabWidget.addTab( + self.deskVidList, + UI.PixmapCache.getIcon("desktopVideoCapture.png"), + self.tr("Desktop Video")) + + self.deskAudVidList = QTreeWidget() + self.deskAudVidList.setAlternatingRowColors(True) + self.deskAudVidList.setSelectionMode( + QAbstractItemView.ExtendedSelection) + self.deskAudVidList.setRootIsDecorated(False) + self.deskAudVidList.setItemsExpandable(False) + self.deskAudVidList.setAllColumnsShowFocus(True) + self.deskAudVidList.setObjectName("deskAudVidList") + self.deskAudVidList.setSortingEnabled(True) + self.deskAudVidList.headerItem().setText(0, self.tr("Host")) + self.deskAudVidList.headerItem().setText(1, self.tr("Permission")) + self.tabWidget.addTab( + self.deskAudVidList, + UI.PixmapCache.getIcon("desktopAudioVideoCapture.png"), + self.tr("Desktop Audio && Video")) + self.setTabOrder(self.tabWidget, self.geoList) self.setTabOrder(self.geoList, self.micList) self.setTabOrder(self.micList, self.camList) self.setTabOrder(self.camList, self.micCamList) self.setTabOrder(self.micCamList, self.mouseLockList) - self.setTabOrder(self.mouseLockList, self.removeButton) + if hasattr(QWebEnginePage, "DesktopVideoCapture"): + self.setTabOrder(self.mouseLockList, self.deskVidList) + self.setTabOrder(self.deskVidList, self.deskAudVidList) + self.setTabOrder(self.deskAudVidList, self.removeButton) + else: + self.setTabOrder(self.mouseLockList, self.removeButton) self.setTabOrder(self.removeButton, self.removeAllButton) self.__permissionStrings = { @@ -134,6 +173,11 @@ QWebEnginePage.MediaAudioVideoCapture: self.micCamList, QWebEnginePage.MouseLock: self.mouseLockList, } + if hasattr(QWebEnginePage, "DesktopVideoCapture"): + self.__permissionsLists.update({ + QWebEnginePage.DesktopVideoCapture: self.deskVidList, + QWebEnginePage.DesktopAudioVideoCapture: self.deskAudVidList, + }) for feature, permissionsList in self.__permissionsLists.items(): for permission in featurePermissions[feature]:
--- a/WebBrowser/SafeBrowsing/SafeBrowsingManager.py Thu Jan 18 11:10:57 2018 +0100 +++ b/WebBrowser/SafeBrowsing/SafeBrowsingManager.py Thu Jan 18 18:57:40 2018 +0100 @@ -44,6 +44,11 @@ progressMessage = pyqtSignal(str, int) progress = pyqtSignal(int) + enabled = ( + Preferences.getWebBrowser("SafeBrowsingEnabled") and + bool(Preferences.getWebBrowser("SafeBrowsingApiKey")) + ) + def __init__(self): """ Constructor @@ -57,10 +62,6 @@ else: self.__apiClient = None - self.__enabled = ( - Preferences.getWebBrowser("SafeBrowsingEnabled") and - bool(self.__apiKey)) - gsbCachePath = os.path.join( Utilities.getConfigDir(), "web_browser", "safe_browsing") self.__cache = SafeBrowsingCache(gsbCachePath, self) @@ -89,7 +90,7 @@ self.__apiClient = SafeBrowsingAPIClient(self.__apiKey, parent=self) - self.__enabled = ( + SafeBrowsingManager.enabled = ( Preferences.getWebBrowser("SafeBrowsingEnabled") and bool(self.__apiKey)) @@ -111,14 +112,15 @@ platform = "linux" self.__platforms = SafeBrowsingAPIClient.getPlatformTypes(platform) - def isEnabled(self): + @classmethod + def isEnabled(cls): """ - Public method to check, if safe browsing is enabled. + Class method to check, if safe browsing is enabled. @return flag indicating the enabled state @rtype bool """ - return self.__enabled + return cls.enabled def close(self): """ @@ -133,7 +135,7 @@ @return flag indicating expiration @rtype bool """ - return self.__enabled and self.__apiClient.fairUseDelayExpired() + return self.isEnabled() and self.__apiClient.fairUseDelayExpired() def __showNotificationMessage(self, message, timeout=5): """ @@ -168,7 +170,7 @@ Private method to set auto update for the threat lists. """ autoUpdateEnabled = Preferences.getWebBrowser("SafeBrowsingAutoUpdate") - if autoUpdateEnabled and self.__enabled: + if autoUpdateEnabled and self.isEnabled(): nextUpdateDateTime = Preferences.getWebBrowser( "SafeBrowsingUpdateDateTime") if nextUpdateDateTime.isValid(): @@ -193,7 +195,7 @@ Private slot to perform the auto update of the threat lists. """ ok = False - if self.__enabled: + if self.isEnabled(): self.__showNotificationMessage( self.tr("Updating threat lists..."), 0) ok = self.updateHashPrefixCache()[0] @@ -224,7 +226,7 @@ @return flag indicating success and an error message @rtype tuple of (bool, str) """ - if not self.__enabled: + if not self.isEnabled(): return False, self.tr("Safe Browsing is disabled.") if not self.__apiClient.fairUseDelayExpired(): @@ -369,7 +371,7 @@ @rtype list of ThreatList @exception ValueError raised for an invalid URL """ - if self.__enabled: + if self.isEnabled(): if isinstance(url, QUrl): urlStr = url.toString().strip() else:
--- a/WebBrowser/WebBrowserPage.py Thu Jan 18 11:10:57 2018 +0100 +++ b/WebBrowser/WebBrowserPage.py Thu Jan 18 18:57:40 2018 +0100 @@ -110,8 +110,11 @@ # Safe Browsing self.__badSite = False - if url.scheme() not in \ - WebBrowserWindow.safeBrowsingManager().getIgnoreSchemes(): + from WebBrowser.SafeBrowsing.SafeBrowsingManager import \ + SafeBrowsingManager + if SafeBrowsingManager.isEnabled() and \ + url.scheme() not in \ + SafeBrowsingManager.getIgnoreSchemes(): threatLists = WebBrowserWindow.safeBrowsingManager().lookupUrl(url) if threatLists: threatMessages = WebBrowserWindow.safeBrowsingManager()\
--- a/WebBrowser/WebBrowserView.py Thu Jan 18 11:10:57 2018 +0100 +++ b/WebBrowser/WebBrowserView.py Thu Jan 18 18:57:40 2018 +0100 @@ -1329,14 +1329,14 @@ if evt.modifiers() & Qt.ControlModifier: if delta < 0: self.zoomOut() - else: + elif delta > 0: self.zoomIn() evt.accept() elif evt.modifiers() & Qt.ShiftModifier: if delta < 0: self.backward() - else: + elif delta > 0: self.forward() evt.accept()
--- a/WebBrowser/WebBrowserWindow.py Thu Jan 18 11:10:57 2018 +0100 +++ b/WebBrowser/WebBrowserWindow.py Thu Jan 18 18:57:40 2018 +0100 @@ -458,11 +458,6 @@ self.flashCookieManager() - if WebBrowserWindow._useQtHelp: - QTimer.singleShot(0, self.__lookForNewDocumentation) - if self.__searchWord is not None: - QTimer.singleShot(0, self.__searchForWord) - e5App().focusChanged.connect(self.__appFocusChanged) self.__toolbarStates = self.saveState() @@ -481,6 +476,11 @@ self.sessionManager().activateTimer() QTimer.singleShot(0, syncMgr.loadSettings) + + if WebBrowserWindow._useQtHelp: + QTimer.singleShot(50, self.__lookForNewDocumentation) + if self.__searchWord is not None: + QTimer.singleShot(0, self.__searchForWord) def __del__(self): """ @@ -644,6 +644,26 @@ Preferences.getWebBrowser("AllowRunningInsecureContent")) except (AttributeError, KeyError): pass + + try: + # Qt 5.9 + settings.setAttribute( + QWebEngineSettings.AllowGeolocationOnInsecureOrigins, + Preferences.getWebBrowser("AllowGeolocationOnInsecureOrigins")) + except (AttributeError, KeyError): + pass + + try: + # Qt 5.10 + settings.setAttribute( + QWebEngineSettings.AllowWindowActivationFromJavaScript, + Preferences.getWebBrowser( + "AllowWindowActivationFromJavaScript")) + settings.setAttribute( + QWebEngineSettings.ShowScrollBars, + Preferences.getWebBrowser("ShowScrollBars")) + except (AttributeError, KeyError): + pass def __initActions(self): """ @@ -2873,7 +2893,7 @@ if not self.__fromEric: Preferences.syncPreferences() if not WebBrowserWindow._performingShutdown and \ - len(WebBrowserWindow.BrowserWindows) == 0: + len(WebBrowserWindow.BrowserWindows) == 1: # shut down the browser in case the last window was # simply closed self.shutdown() @@ -2926,14 +2946,16 @@ if not self.__shallShutDown(): return False - if not self.downloadManager().allowQuit(): + if WebBrowserWindow._downloadManager is not None and \ + not self.downloadManager().allowQuit(): return False WebBrowserWindow._performingShutdown = True self.sessionManager().shutdown() - self.downloadManager().shutdown() + if WebBrowserWindow._downloadManager is not None: + self.downloadManager().shutdown() self.cookieJar().close() @@ -2963,7 +2985,8 @@ self.networkManager().shutdown() - self.safeBrowsingManager().close() + if WebBrowserWindow._safeBrowsingManager: + self.safeBrowsingManager().close() for browser in WebBrowserWindow.BrowserWindows: if browser != self:
--- a/changelog Thu Jan 18 11:10:57 2018 +0100 +++ b/changelog Thu Jan 18 18:57:40 2018 +0100 @@ -1,5 +1,20 @@ Change Log ---------- +Version 18.02: +- bug fixes +- General + -- extended the session to store/retrieve the split views and the order of + the editors (**Note**: The new session file format is not backward + compatible and cannot be read by eric releases prior to 18.02) + -- added basic support for Cython +- Editor + -- added a context menu entry to "Execute Selection In Console" +- Web Browser (NG) + -- added support for HTML5 "Desktop Video Capture" and "Desktop Audio and + Video Capture" as of Qt 5.10.0/PyQt 5.10.0 + -- added the capability to pause/resume download (Qt 5.10.0/PyQt 5.10.0) + -- added support for attributes introduced by Qt 5.9 and Qt 5.10 + Version 18.01: - bug fixes - Debugger / Breakpoint Viewer
--- a/eric6.py Thu Jan 18 11:10:57 2018 +0100 +++ b/eric6.py Thu Jan 18 18:57:40 2018 +0100 @@ -37,7 +37,6 @@ except AttributeError: pass - import os import traceback import time
--- a/i18n/eric6_cs.ts Thu Jan 18 11:10:57 2018 +0100 +++ b/i18n/eric6_cs.ts Thu Jan 18 18:57:40 2018 +0100 @@ -3807,147 +3807,147 @@ <context> <name>CodeStyleFixer</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="552"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="554"/> <source>Triple single quotes converted to triple double quotes.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="555"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="557"/> <source>Introductory quotes corrected to be {0}"""</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="558"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="560"/> <source>Single line docstring put on one line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="561"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="563"/> <source>Period added to summary line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="588"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="590"/> <source>Blank line before function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="567"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="569"/> <source>Blank line inserted before class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="570"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="572"/> <source>Blank line inserted after class docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="573"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="575"/> <source>Blank line inserted after docstring summary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="576"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="578"/> <source>Blank line inserted after last paragraph of docstring.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="579"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="581"/> <source>Leading quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="582"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="584"/> <source>Trailing quotes put on separate line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="585"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="587"/> <source>Blank line before class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="591"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="593"/> <source>Blank line after class docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="594"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="596"/> <source>Blank line after function/method docstring removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="597"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="599"/> <source>Blank line after last paragraph removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="600"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="602"/> <source>Tab converted to 4 spaces.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="603"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="605"/> <source>Indentation adjusted to be a multiple of four.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="606"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="608"/> <source>Indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="609"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="611"/> <source>Indentation of closing bracket corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="612"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="614"/> <source>Missing indentation of continuation line corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="615"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="617"/> <source>Closing bracket aligned to opening bracket.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="618"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="620"/> <source>Indentation level changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="621"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="623"/> <source>Indentation level of hanging indentation changed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="624"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="626"/> <source>Visual indentation corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="639"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="641"/> <source>Extraneous whitespace removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="636"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="638"/> <source>Missing whitespace added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="642"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="644"/> <source>Whitespace around comment sign corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="645"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="647"/> <source>One blank line inserted.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="649"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="651"/> <source>%n blank line(s) inserted.</source> <translation type="unfinished"> <numerusform></numerusform> @@ -3956,7 +3956,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="652"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="654"/> <source>%n superfluous lines removed</source> <translation type="unfinished"> <numerusform></numerusform> @@ -3965,77 +3965,77 @@ </translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="656"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="658"/> <source>Superfluous blank lines removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="659"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="661"/> <source>Superfluous blank lines after function decorator removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="662"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="664"/> <source>Imports were put on separate lines.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="665"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="667"/> <source>Long lines have been shortened.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="668"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="670"/> <source>Redundant backslash in brackets removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="674"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="676"/> <source>Compound statement corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="677"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="679"/> <source>Comparison to None/True/False corrected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="680"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="682"/> <source>'{0}' argument added.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="683"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="685"/> <source>'{0}' argument removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="686"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="688"/> <source>Whitespace stripped from end of line.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="689"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="691"/> <source>newline added to end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="692"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="694"/> <source>Superfluous trailing blank lines removed from end of file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="695"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="697"/> <source>'<>' replaced by '!='.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="699"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="701"/> <source>Could not save the file! Skipping it. Reason: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="779"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="781"/> <source> no message defined for code '{0}'</source> <translation type="unfinished"></translation> </message> @@ -4529,22 +4529,22 @@ <context> <name>ComplexityChecker</name> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="441"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="443"/> <source>'{0}' is too complex ({1})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="443"/> - <source>source code line is too complex ({0})</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="445"/> + <source>source code line is too complex ({0})</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="447"/> <source>overall source code line complexity is too high ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="448"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="450"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> @@ -7817,7 +7817,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="325"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="327"/> <source>docstring summary does not end with a period</source> <translation type="unfinished"></translation> </message> @@ -7852,7 +7852,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361"/> <source>docstring summary is not followed by a blank line</source> <translation type="unfinished"></translation> </message> @@ -7872,82 +7872,82 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="321"/> <source>leading quotes of docstring not on separate line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="322"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="324"/> <source>trailing quotes of docstring not on separate line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="331"/> <source>docstring does not contain a @return line but function/method returns something</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="333"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335"/> <source>docstring contains a @return line but function/method doesn't return anything</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="337"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="339"/> <source>docstring does not contain enough @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="340"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="342"/> <source>docstring contains too many @param/@keyparam lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="343"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="345"/> <source>keyword only arguments must be documented with @keyparam lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="348"/> <source>order of @param/@keyparam lines does not match the function/method signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349"/> - <source>class docstring is preceded by a blank line</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="351"/> - <source>class docstring is followed by a blank line</source> + <source>class docstring is preceded by a blank line</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353"/> + <source>class docstring is followed by a blank line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="355"/> <source>function/method docstring is preceded by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="358"/> <source>function/method docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364"/> <source>last paragraph of docstring is followed by a blank line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="365"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367"/> <source>docstring does not contain a @exception line but function/method raises an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="369"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371"/> <source>docstring contains a @exception line but function/method doesn't raise an exception</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="392"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="394"/> <source>{0}: {1}</source> <translation type="unfinished"></translation> </message> @@ -7957,40 +7957,45 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="327"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329"/> <source>docstring summary does not start with '{0}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="373"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="375"/> <source>raised exception '{0}' is not documented in docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="376"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="378"/> <source>documented exception '{0}' is not raised</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="379"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="381"/> <source>docstring does not contain a @signal line but class defines signals</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="382"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="384"/> <source>docstring contains a @signal line but class doesn't define signals</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387"/> <source>defined signal '{0}' is not documented in docstring</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388"/> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390"/> <source>documented signal '{0}' is not defined</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319"/> + <source>class docstring is still a default string</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>DotDesktopListSelectionDialog</name> @@ -8457,12 +8462,12 @@ <context> <name>DownloadItem</name> <message> - <location filename="../WebBrowser/Download/DownloadItem.ui" line="38"/> + <location filename="../WebBrowser/Download/DownloadItem.ui" line="41"/> <source>Icon</source> <translation type="unfinished">Ikona</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.ui" line="66"/> + <location filename="../WebBrowser/Download/DownloadItem.ui" line="72"/> <source>Filename</source> <translation type="unfinished">Jméno souboru</translation> </message> @@ -8472,27 +8477,27 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.ui" line="103"/> + <location filename="../WebBrowser/Download/DownloadItem.ui" line="122"/> <source>Press to cancel the download</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.ui" line="113"/> + <location filename="../WebBrowser/Download/DownloadItem.ui" line="132"/> <source>Press to open the downloaded file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="261"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="266"/> <source>Download canceled: {0}</source> <translation type="unfinished">Download zrušen: {0}</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="207"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="212"/> <source>Save File</source> <translation type="unfinished">Uložit soubor</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="290"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="295"/> <source>Download directory ({0}) couldn't be created.</source> <translation type="unfinished"></translation> </message> @@ -8512,27 +8517,27 @@ <translation type="unfinished">Chyba sítě: {0}</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="465"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="485"/> <source>?</source> <translation type="unfinished">?</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="476"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="496"/> <source>{0} of {1} - Stopped</source> <translation type="unfinished">{0} z {1} - zastaveno</translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="192"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="197"/> <source>VirusTotal scan scheduled: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.ui" line="113"/> + <location filename="../WebBrowser/Download/DownloadItem.ui" line="109"/> <source>Press to pause the download</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="464"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="484"/> <source>{0} of {1} ({2}/sec) {3}</source> <translation type="unfinished"></translation> @@ -8545,32 +8550,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="473"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="493"/> <source>{0} downloaded</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="218"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="223"/> <source>Web Archive (*.mhtml *.mht)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="219"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="224"/> <source>HTML File (*.html *.htm)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="220"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="225"/> <source>HTML File with all resources (*.html *.htm)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.py" line="230"/> + <location filename="../WebBrowser/Download/DownloadItem.py" line="235"/> <source>Save Web Page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadItem.ui" line="47"/> + <location filename="../WebBrowser/Download/DownloadItem.ui" line="53"/> <source>Date and Time</source> <translation type="unfinished"></translation> </message> @@ -8578,7 +8583,7 @@ <context> <name>DownloadManager</name> <message> - <location filename="../WebBrowser/Download/DownloadManager.py" line="395"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="405"/> <source>Downloads</source> <translation type="unfinished"></translation> </message> @@ -8593,7 +8598,7 @@ <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/Download/DownloadManager.py" line="384"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="394"/> <source>%n Download(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -8602,7 +8607,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/Download/DownloadManager.py" line="153"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="152"/> <source>There are %n downloads in progress. Do you want to quit anyway?</source> <translation type="unfinished"> @@ -8657,7 +8662,7 @@ <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../WebBrowser/Download/DownloadManager.py" line="392"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="402"/> <source>Downloading %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -8666,12 +8671,12 @@ </translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadManager.py" line="182"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="181"/> <source>Suspicuous URL detected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Download/DownloadManager.py" line="182"/> + <location filename="../WebBrowser/Download/DownloadManager.py" line="181"/> <source><p>The URL <b>{0}</b> was found in the Safe Browsing database.</p>{1}</source> <translation type="unfinished"></translation> </message> @@ -10190,97 +10195,97 @@ <context> <name>Editor</name> <message> - <location filename="../QScintilla/Editor.py" line="2937"/> + <location filename="../QScintilla/Editor.py" line="2986"/> <source>Open File</source> <translation>Otevřít soubor</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="698"/> + <location filename="../QScintilla/Editor.py" line="742"/> <source>Undo</source> <translation>Vrátit</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="701"/> + <location filename="../QScintilla/Editor.py" line="745"/> <source>Redo</source> <translation>Znovu použít</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="704"/> + <location filename="../QScintilla/Editor.py" line="748"/> <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="708"/> + <location filename="../QScintilla/Editor.py" line="752"/> <source>Cut</source> <translation>Vyjmout</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="711"/> - <source>Copy</source> - <translation>Kopírovat</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="714"/> - <source>Paste</source> - <translation>Vložit</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="719"/> - <source>Indent</source> - <translation>Odsadit</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="722"/> - <source>Unindent</source> - <translation>Zrušit odsazení</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="725"/> - <source>Comment</source> - <translation>Vytvořit komentář</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="728"/> - <source>Uncomment</source> - <translation>Zrušit komentář</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="731"/> - <source>Stream Comment</source> - <translation>Proudový komentář</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="734"/> - <source>Box Comment</source> - <translation>Obdélníkový komentář</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="738"/> - <source>Select to brace</source> - <translation>Vybrat až po závorku</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="740"/> - <source>Select all</source> - <translation>Vybrat vše</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="741"/> - <source>Deselect all</source> - <translation>Zrušit celý výběr</translation> - </message> - <message> <location filename="../QScintilla/Editor.py" line="755"/> + <source>Copy</source> + <translation>Kopírovat</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="758"/> + <source>Paste</source> + <translation>Vložit</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="766"/> + <source>Indent</source> + <translation>Odsadit</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="769"/> + <source>Unindent</source> + <translation>Zrušit odsazení</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="772"/> + <source>Comment</source> + <translation>Vytvořit komentář</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="775"/> + <source>Uncomment</source> + <translation>Zrušit komentář</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="778"/> + <source>Stream Comment</source> + <translation>Proudový komentář</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="781"/> + <source>Box Comment</source> + <translation>Obdélníkový komentář</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="785"/> + <source>Select to brace</source> + <translation>Vybrat až po závorku</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="787"/> + <source>Select all</source> + <translation>Vybrat vše</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="788"/> + <source>Deselect all</source> + <translation>Zrušit celý výběr</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="804"/> <source>Shorten empty lines</source> <translation>Zkrátit prázdné řádky</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="762"/> + <location filename="../QScintilla/Editor.py" line="811"/> <source>Use Monospaced Font</source> <translation>Použít neporoporcionální font</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="767"/> + <location filename="../QScintilla/Editor.py" line="816"/> <source>Autosave enabled</source> <translation>Zapnout autosave</translation> </message> @@ -10290,22 +10295,22 @@ <translation type="obsolete">Zapnout autodoplňování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="810"/> + <location filename="../QScintilla/Editor.py" line="859"/> <source>Close</source> <translation>Zavřít</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="816"/> + <location filename="../QScintilla/Editor.py" line="865"/> <source>Save</source> <translation>Uložit</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="819"/> + <location filename="../QScintilla/Editor.py" line="868"/> <source>Save As...</source> <translation>Uložit jako...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="835"/> + <location filename="../QScintilla/Editor.py" line="884"/> <source>Print</source> <translation>Tisk</translation> </message> @@ -10315,447 +10320,447 @@ <translation type="obsolete">Autodoplňování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="864"/> + <location filename="../QScintilla/Editor.py" line="913"/> <source>Complete from Document</source> <translation type="unfinished">z dokumentu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="866"/> + <location filename="../QScintilla/Editor.py" line="915"/> <source>Complete from APIs</source> <translation type="unfinished">z API</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="868"/> + <location filename="../QScintilla/Editor.py" line="917"/> <source>Complete from Document and APIs</source> <translation type="unfinished">z dokumentu a API</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="882"/> + <location filename="../QScintilla/Editor.py" line="931"/> <source>Check</source> <translation>Zkontrolovat</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="902"/> + <location filename="../QScintilla/Editor.py" line="951"/> <source>Show</source> <translation>Zobrazit</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="904"/> + <location filename="../QScintilla/Editor.py" line="953"/> <source>Code metrics...</source> <translation>Metrika kódu...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="905"/> + <location filename="../QScintilla/Editor.py" line="954"/> <source>Code coverage...</source> <translation>Pokrytí kódu...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="907"/> + <location filename="../QScintilla/Editor.py" line="956"/> <source>Show code coverage annotations</source> <translation>Zobrazit poznámky pokrytí kódu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="910"/> + <location filename="../QScintilla/Editor.py" line="959"/> <source>Hide code coverage annotations</source> <translation>Skrýt poznámky pokrytí kódu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="913"/> + <location filename="../QScintilla/Editor.py" line="962"/> <source>Profile data...</source> <translation>Profilovat data...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="926"/> + <location filename="../QScintilla/Editor.py" line="975"/> <source>Diagrams</source> <translation>Diagramy</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="928"/> + <location filename="../QScintilla/Editor.py" line="977"/> <source>Class Diagram...</source> <translation>Diagram třídy...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="930"/> + <location filename="../QScintilla/Editor.py" line="979"/> <source>Package Diagram...</source> <translation>Diagram balíčku...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="932"/> + <location filename="../QScintilla/Editor.py" line="981"/> <source>Imports Diagram...</source> <translation>Diagram importů...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="934"/> + <location filename="../QScintilla/Editor.py" line="983"/> <source>Application Diagram...</source> <translation>Diagram aplikace...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="952"/> + <location filename="../QScintilla/Editor.py" line="1001"/> <source>Languages</source> <translation>Jazyky</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="955"/> + <location filename="../QScintilla/Editor.py" line="1004"/> <source>No Language</source> <translation>Žádný jazyk</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1201"/> - <source>Toggle bookmark</source> - <translation>Přepnout záložku</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1203"/> - <source>Next bookmark</source> - <translation>Následující záložka</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1205"/> - <source>Previous bookmark</source> - <translation>Předchozí záložka</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1207"/> - <source>Clear all bookmarks</source> - <translation>Zrušit všechny záložky</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1210"/> - <source>Goto syntax error</source> - <translation>Jít na chybu syntaxe</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1212"/> - <source>Show syntax error message</source> - <translation>Zobrazit hlášení syntaktické chyby</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1214"/> - <source>Clear syntax error</source> - <translation>Zrušit chybu syntaxe</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1227"/> - <source>Toggle breakpoint</source> - <translation>Přepnout breakpoint</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1229"/> - <source>Toggle temporary breakpoint</source> - <translation>Přepnout dočasný breakpoint</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1232"/> - <source>Edit breakpoint...</source> - <translation>Editovat breakpoint...</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="5313"/> - <source>Enable breakpoint</source> - <translation>Aktivovat breakpoint</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1237"/> - <source>Next breakpoint</source> - <translation>Následující breakpoint</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1239"/> - <source>Previous breakpoint</source> - <translation>Předchozí breakpoint</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1241"/> - <source>Clear all breakpoints</source> - <translation>Zrušit všechny breakpointy</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1244"/> - <source>Next uncovered line</source> - <translation>Následující odkrytá řádka</translation> - </message> - <message> - <location filename="../QScintilla/Editor.py" line="1247"/> - <source>Previous uncovered line</source> - <translation>Předchozí odkrytá řádka</translation> - </message> - <message> <location filename="../QScintilla/Editor.py" line="1250"/> - <source>Next task</source> - <translation>Následující úloha</translation> + <source>Toggle bookmark</source> + <translation>Přepnout záložku</translation> </message> <message> <location filename="../QScintilla/Editor.py" line="1252"/> + <source>Next bookmark</source> + <translation>Následující záložka</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1254"/> + <source>Previous bookmark</source> + <translation>Předchozí záložka</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1256"/> + <source>Clear all bookmarks</source> + <translation>Zrušit všechny záložky</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1259"/> + <source>Goto syntax error</source> + <translation>Jít na chybu syntaxe</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1261"/> + <source>Show syntax error message</source> + <translation>Zobrazit hlášení syntaktické chyby</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1263"/> + <source>Clear syntax error</source> + <translation>Zrušit chybu syntaxe</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1276"/> + <source>Toggle breakpoint</source> + <translation>Přepnout breakpoint</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1278"/> + <source>Toggle temporary breakpoint</source> + <translation>Přepnout dočasný breakpoint</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1281"/> + <source>Edit breakpoint...</source> + <translation>Editovat breakpoint...</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="5365"/> + <source>Enable breakpoint</source> + <translation>Aktivovat breakpoint</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1286"/> + <source>Next breakpoint</source> + <translation>Následující breakpoint</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1288"/> + <source>Previous breakpoint</source> + <translation>Předchozí breakpoint</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1290"/> + <source>Clear all breakpoints</source> + <translation>Zrušit všechny breakpointy</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1293"/> + <source>Next uncovered line</source> + <translation>Následující odkrytá řádka</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1296"/> + <source>Previous uncovered line</source> + <translation>Předchozí odkrytá řádka</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1299"/> + <source>Next task</source> + <translation>Následující úloha</translation> + </message> + <message> + <location filename="../QScintilla/Editor.py" line="1301"/> <source>Previous task</source> <translation>Předchozí úloha</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1264"/> + <location filename="../QScintilla/Editor.py" line="1313"/> <source>LMB toggles bookmarks</source> <translation>LMB přepínač záložek</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1268"/> + <location filename="../QScintilla/Editor.py" line="1317"/> <source>LMB toggles breakpoints</source> <translation>LMB přepínač breakpointů</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1811"/> + <location filename="../QScintilla/Editor.py" line="1860"/> <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="1811"/> + <location filename="../QScintilla/Editor.py" line="1860"/> <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="2502"/> + <location filename="../QScintilla/Editor.py" line="2551"/> <source>Printing...</source> <translation>Tisk...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="2519"/> + <location filename="../QScintilla/Editor.py" line="2568"/> <source>Printing completed</source> <translation>Tisk je hotov</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="2521"/> + <location filename="../QScintilla/Editor.py" line="2570"/> <source>Error while printing</source> <translation>Chyba během tisku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="2524"/> + <location filename="../QScintilla/Editor.py" line="2573"/> <source>Printing aborted</source> <translation>Tisk byl zrušen</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="3100"/> + <location filename="../QScintilla/Editor.py" line="3149"/> <source>Save File</source> <translation>Uložit soubor</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="2882"/> + <location filename="../QScintilla/Editor.py" line="2931"/> <source>File Modified</source> <translation>Soubor je modifikován</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="4512"/> + <location filename="../QScintilla/Editor.py" line="4561"/> <source>Autocompletion</source> <translation>Autodoplňování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="4512"/> + <location filename="../QScintilla/Editor.py" line="4561"/> <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="5316"/> + <location filename="../QScintilla/Editor.py" line="5368"/> <source>Disable breakpoint</source> <translation>Deaktivovat breakpoint</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5693"/> + <location filename="../QScintilla/Editor.py" line="5745"/> <source>Code Coverage</source> <translation>Pokrytí kódu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5693"/> + <location filename="../QScintilla/Editor.py" line="5745"/> <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="5756"/> + <location filename="../QScintilla/Editor.py" line="5808"/> <source>Show Code Coverage Annotations</source> <translation>Zobrazit poznámky pokrytí kódu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5749"/> + <location filename="../QScintilla/Editor.py" line="5801"/> <source>All lines have been covered.</source> <translation>Všechny řádky byly pokryty.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5756"/> + <location filename="../QScintilla/Editor.py" line="5808"/> <source>There is no coverage file available.</source> <translation>Soubor s pokrytím není dostupný.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5871"/> + <location filename="../QScintilla/Editor.py" line="5923"/> <source>Profile Data</source> <translation>Profilovat data</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="5871"/> + <location filename="../QScintilla/Editor.py" line="5923"/> <source>Please select a profile file</source> <translation>Prosím, vyberte soubor s profilem</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6031"/> + <location filename="../QScintilla/Editor.py" line="6083"/> <source>Syntax Error</source> <translation>Chyba syntaxe</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6031"/> + <location filename="../QScintilla/Editor.py" line="6083"/> <source>No syntax error message available.</source> <translation>Hlášení syntaktické chyby není dostupné.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6346"/> + <location filename="../QScintilla/Editor.py" line="6398"/> <source>Macro Name</source> <translation>Název makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6346"/> + <location filename="../QScintilla/Editor.py" line="6398"/> <source>Select a macro name:</source> <translation>Vyberte název makra:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6374"/> + <location filename="../QScintilla/Editor.py" line="6426"/> <source>Load macro file</source> <translation>Načíst soubor makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6417"/> + <location filename="../QScintilla/Editor.py" line="6469"/> <source>Macro files (*.macro)</source> <translation>Macro soubory (*.macro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6397"/> + <location filename="../QScintilla/Editor.py" line="6449"/> <source>Error loading macro</source> <translation>Chyba při načítání makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6417"/> + <location filename="../QScintilla/Editor.py" line="6469"/> <source>Save macro file</source> <translation>Uložit soubor s makrem</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6434"/> + <location filename="../QScintilla/Editor.py" line="6486"/> <source>Save macro</source> <translation>Uložit makro</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6450"/> + <location filename="../QScintilla/Editor.py" line="6502"/> <source>Error saving macro</source> <translation>Chyba při ukládání makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6463"/> + <location filename="../QScintilla/Editor.py" line="6515"/> <source>Start Macro Recording</source> <translation>Spustit záznam makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6463"/> + <location filename="../QScintilla/Editor.py" line="6515"/> <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="6489"/> + <location filename="../QScintilla/Editor.py" line="6541"/> <source>Macro Recording</source> <translation>Záznam makra</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6489"/> + <location filename="../QScintilla/Editor.py" line="6541"/> <source>Enter name of the macro:</source> <translation>Vložte název makra:</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6627"/> + <location filename="../QScintilla/Editor.py" line="6679"/> <source>File changed</source> <translation>Soubor změněn</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6931"/> + <location filename="../QScintilla/Editor.py" line="6983"/> <source>Drop Error</source> <translation>Zahodit chybu</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6952"/> + <location filename="../QScintilla/Editor.py" line="7004"/> <source>Resources</source> <translation>Zdroje</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6954"/> + <location filename="../QScintilla/Editor.py" line="7006"/> <source>Add file...</source> <translation>Přidat soubor...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6956"/> + <location filename="../QScintilla/Editor.py" line="7008"/> <source>Add files...</source> <translation>Přidat soubory...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6958"/> + <location filename="../QScintilla/Editor.py" line="7010"/> <source>Add aliased file...</source> <translation>Přidat zástupce souboru...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6961"/> + <location filename="../QScintilla/Editor.py" line="7013"/> <source>Add localized resource...</source> <translation>Přidat lokalizované resource...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6965"/> + <location filename="../QScintilla/Editor.py" line="7017"/> <source>Add resource frame</source> <translation>Přidat resource frame</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6984"/> + <location filename="../QScintilla/Editor.py" line="7036"/> <source>Add file resource</source> <translation>Přidat soubor resource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7000"/> + <location filename="../QScintilla/Editor.py" line="7052"/> <source>Add file resources</source> <translation>Přidat soubory resource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7028"/> + <location filename="../QScintilla/Editor.py" line="7080"/> <source>Add aliased file resource</source> <translation>Přidat zástupce souboru resource</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7092"/> + <location filename="../QScintilla/Editor.py" line="7144"/> <source>Package Diagram</source> <translation>Diagram balíčku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7092"/> + <location filename="../QScintilla/Editor.py" line="7144"/> <source>Include class attributes?</source> <translation>Včetně atributů třídy?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7126"/> + <location filename="../QScintilla/Editor.py" line="7178"/> <source>Application Diagram</source> <translation>Diagram aplikace</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7126"/> + <location filename="../QScintilla/Editor.py" line="7178"/> <source>Include module names?</source> <translation>Včetně jmen modulů?</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1075"/> + <location filename="../QScintilla/Editor.py" line="1124"/> <source>Export as</source> <translation>Exportovat jako</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1304"/> + <location filename="../QScintilla/Editor.py" line="1353"/> <source>Export source</source> <translation>Export zdroj</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1304"/> + <location filename="../QScintilla/Editor.py" line="1353"/> <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="7112"/> + <location filename="../QScintilla/Editor.py" line="7164"/> <source>Imports Diagram</source> <translation>Importovat diagram</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7112"/> + <location filename="../QScintilla/Editor.py" line="7164"/> <source>Include imports from external modules?</source> <translation>Zahrnout importy z externích modulů?</translation> </message> @@ -10765,12 +10770,12 @@ <translation type="obsolete">dynamický</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="786"/> + <location filename="../QScintilla/Editor.py" line="835"/> <source>Calltip</source> <translation>Rychlé tipy</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="832"/> + <location filename="../QScintilla/Editor.py" line="881"/> <source>Print Preview</source> <translation>Náhled tisku</translation> </message> @@ -10780,77 +10785,77 @@ <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="771"/> + <location filename="../QScintilla/Editor.py" line="820"/> <source>Typing aids enabled</source> <translation>Pomůcky při psaní zapnuty</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1039"/> + <location filename="../QScintilla/Editor.py" line="1088"/> <source>End-of-Line Type</source> <translation>Typ Konec-řádku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1043"/> + <location filename="../QScintilla/Editor.py" line="1092"/> <source>Unix</source> <translation>Unix</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1050"/> + <location filename="../QScintilla/Editor.py" line="1099"/> <source>Windows</source> <translation></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1057"/> + <location filename="../QScintilla/Editor.py" line="1106"/> <source>Macintosh</source> <translation>Macintosh</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="998"/> + <location filename="../QScintilla/Editor.py" line="1047"/> <source>Encodings</source> <translation>Kódování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="978"/> + <location filename="../QScintilla/Editor.py" line="1027"/> <source>Guessed</source> <translation>Odhadem</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1319"/> + <location filename="../QScintilla/Editor.py" line="1368"/> <source>Alternatives</source> <translation>Alternativy</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1335"/> + <location filename="../QScintilla/Editor.py" line="1384"/> <source>Pygments Lexer</source> <translation></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1335"/> + <location filename="../QScintilla/Editor.py" line="1384"/> <source>Select the Pygments lexer to apply.</source> <translation>Použít Pygments lexer.</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7404"/> + <location filename="../QScintilla/Editor.py" line="7456"/> <source>Check spelling...</source> <translation>Zatrhnout kontrolu...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="747"/> + <location filename="../QScintilla/Editor.py" line="796"/> <source>Check spelling of selection...</source> <translation>Zatrhnout výběr kontroly...</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7407"/> + <location filename="../QScintilla/Editor.py" line="7459"/> <source>Add to dictionary</source> <translation>Přidat do slovníku</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7409"/> + <location filename="../QScintilla/Editor.py" line="7461"/> <source>Ignore All</source> <translation>Ignorovat vše</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="751"/> + <location filename="../QScintilla/Editor.py" line="800"/> <source>Remove from dictionary</source> <translation>Odebrat ze slovníku</translation> </message> @@ -10860,235 +10865,240 @@ <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="1296"/> + <location filename="../QScintilla/Editor.py" line="1345"/> <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="1315"/> + <location filename="../QScintilla/Editor.py" line="1364"/> <source>Alternatives ({0})</source> <translation>Alternativy ({0})</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="2882"/> + <location filename="../QScintilla/Editor.py" line="2931"/> <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="2937"/> + <location filename="../QScintilla/Editor.py" line="2986"/> <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="3041"/> + <location filename="../QScintilla/Editor.py" line="3090"/> <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="6388"/> + <location filename="../QScintilla/Editor.py" line="6440"/> <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="6397"/> + <location filename="../QScintilla/Editor.py" line="6449"/> <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="6450"/> + <location filename="../QScintilla/Editor.py" line="6502"/> <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="6791"/> + <location filename="../QScintilla/Editor.py" line="6843"/> <source>{0} (ro)</source> <translation>{0} (ro)</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6931"/> + <location filename="../QScintilla/Editor.py" line="6983"/> <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="7028"/> + <location filename="../QScintilla/Editor.py" line="7080"/> <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="1217"/> + <location filename="../QScintilla/Editor.py" line="1266"/> <source>Next warning</source> <translation>Následující varování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1220"/> + <location filename="../QScintilla/Editor.py" line="1269"/> <source>Previous warning</source> <translation>Předchozí varování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1222"/> + <location filename="../QScintilla/Editor.py" line="1271"/> <source>Show warning message</source> <translation>Zobrazit varování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1224"/> + <location filename="../QScintilla/Editor.py" line="1273"/> <source>Clear warnings</source> <translation>Vyčistit varování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="3100"/> + <location filename="../QScintilla/Editor.py" line="3149"/> <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="6434"/> + <location filename="../QScintilla/Editor.py" line="6486"/> <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="6285"/> + <location filename="../QScintilla/Editor.py" line="6337"/> <source>Warning: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6292"/> + <location filename="../QScintilla/Editor.py" line="6344"/> <source>Error: {0}</source> <translation type="unfinished">Chyby: {0}</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6623"/> + <location filename="../QScintilla/Editor.py" line="6675"/> <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="828"/> + <location filename="../QScintilla/Editor.py" line="877"/> <source>Open 'rejection' file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="938"/> + <location filename="../QScintilla/Editor.py" line="987"/> <source>Load Diagram...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1255"/> + <location filename="../QScintilla/Editor.py" line="1304"/> <source>Next change</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1258"/> + <location filename="../QScintilla/Editor.py" line="1307"/> <source>Previous change</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7821"/> + <location filename="../QScintilla/Editor.py" line="7873"/> <source>Sort Lines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7821"/> + <location filename="../QScintilla/Editor.py" line="7873"/> <source>The selection contains illegal data for a numerical sort.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6221"/> + <location filename="../QScintilla/Editor.py" line="6273"/> <source>Warning</source> <translation type="unfinished">Varování</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6221"/> + <location filename="../QScintilla/Editor.py" line="6273"/> <source>No warning messages available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6282"/> + <location filename="../QScintilla/Editor.py" line="6334"/> <source>Style: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="802"/> + <location filename="../QScintilla/Editor.py" line="851"/> <source>New Document View</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="805"/> + <location filename="../QScintilla/Editor.py" line="854"/> <source>New Document View (with new split)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="892"/> + <location filename="../QScintilla/Editor.py" line="941"/> <source>Tools</source> <translation type="unfinished">Nástroje</translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1020"/> + <location filename="../QScintilla/Editor.py" line="1069"/> <source>Re-Open With Encoding</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="6617"/> + <location filename="../QScintilla/Editor.py" line="6669"/> <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="778"/> + <location filename="../QScintilla/Editor.py" line="827"/> <source>Automatic Completion enabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="858"/> + <location filename="../QScintilla/Editor.py" line="907"/> <source>Complete</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="4637"/> + <location filename="../QScintilla/Editor.py" line="4686"/> <source>Auto-Completion Provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="4637"/> + <location filename="../QScintilla/Editor.py" line="4686"/> <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="4899"/> + <location filename="../QScintilla/Editor.py" line="4948"/> <source>Call-Tips Provider</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="4899"/> + <location filename="../QScintilla/Editor.py" line="4948"/> <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="7908"/> + <location filename="../QScintilla/Editor.py" line="7960"/> <source>Register Mouse Click Handler</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="7908"/> + <location filename="../QScintilla/Editor.py" line="7960"/> <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="822"/> + <location filename="../QScintilla/Editor.py" line="871"/> <source>Save Copy...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="861"/> + <location filename="../QScintilla/Editor.py" line="910"/> <source>Clear Completions Cache</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="788"/> + <location filename="../QScintilla/Editor.py" line="837"/> <source>Code Info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../QScintilla/Editor.py" line="1261"/> + <location filename="../QScintilla/Editor.py" line="1310"/> <source>Clear changes</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../QScintilla/Editor.py" line="762"/> + <source>Execute Selection In Console</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>EditorAPIsPage</name> @@ -16275,22 +16285,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionBar.py" line="78"/> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionBar.py" line="99"/> <source>Allow</source> <translation type="unfinished">Povolit</translation> </message> <message> - <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionBar.py" line="79"/> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionBar.py" line="100"/> <source>Deny</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionBar.py" line="101"/> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionBar.py" line="122"/> <source>{0} wants to use an unknown feature.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionBar.py" line="76"/> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionBar.py" line="97"/> <source>Remember</source> <translation type="unfinished"></translation> </message> @@ -16314,6 +16324,16 @@ <source>{0} wants to lock your mouse.</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionBar.py" line="61"/> + <source>{0} wants to capture video of your screen.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionBar.py" line="61"/> + <source>{0} wants to capture audio and video of your screen.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FeaturePermissionsDialog</name> @@ -16328,12 +16348,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="110"/> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="144"/> <source>Host</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="111"/> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="145"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -16353,12 +16373,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="126"/> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="165"/> <source>Allow</source> <translation type="unfinished">Povolit</translation> </message> <message> - <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="127"/> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="166"/> <source>Deny</source> <translation type="unfinished"></translation> </message> @@ -16392,6 +16412,16 @@ <source>Mouse Lock</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="130"/> + <source>Desktop Video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/FeaturePermissions/FeaturePermissionsDialog.py" line="146"/> + <source>Desktop Audio && Video</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FeedEditDialog</name> @@ -17864,182 +17894,182 @@ <context> <name>Git</name> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="211"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="209"/> <source>The git process finished with the exit code {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1565"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1563"/> <source>The git process did not finish within 30s.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="218"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="216"/> <source>Could not start the git executable.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="246"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="244"/> <source>Create project repository</source> <translation type="unfinished">Vytvořit repozitář projektu</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="246"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="244"/> <source>The project repository could not be created.</source> <translation type="unfinished">Úložiště projektu nelze vytvořit.</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="274"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="272"/> <source>Creating Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="289"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="287"/> <source>Adding files to Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="300"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="298"/> <source>Initial commit to Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="330"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="328"/> <source>Cloning project from a Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="419"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="417"/> <source>Commit Changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="419"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="417"/> <source>The commit affects files, that have unsaved changes. Shall the commit be continued?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="478"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="476"/> <source>Committing changes to Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="501"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="499"/> <source>Switch</source> <translation type="unfinished">Přepnout</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="501"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="499"/> <source><p>Do you really want to switch to <b>{0}</b>?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="532"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="530"/> <source>Synchronizing with the Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="579"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="577"/> <source>Adding files/directories to the Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="653"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="651"/> <source>Removing files/directories from the Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="710"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="708"/> <source>Renaming {0}</source> <translation type="unfinished">Přejmenování {0}</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="833"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="831"/> <source>Unstage files/directories</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="884"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="882"/> <source>Revert changes</source> <translation type="unfinished">Vrátit změny</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="875"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="873"/> <source>Do you really want to revert all changes to these files or directories?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="884"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="882"/> <source>Do you really want to revert all changes of the project?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="890"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="888"/> <source>Reverting changes</source> <translation type="unfinished">Navrácení změn</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="942"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="940"/> <source>Merging</source> <translation type="unfinished">Merging</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="967"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="965"/> <source>Master branch head</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1200"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1198"/> <source>Git Command</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1287"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1285"/> <source><tr><td><b>Commit</b></td><td>{0}</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1291"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1289"/> <source><tr><td><b>Parents</b></td><td>{0}</td></tr></source> <translation type="unfinished"><tr><td><b>Rodiče</b></td><td>{0}</td></tr></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1295"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1293"/> <source><tr><td><b>Tags</b></td><td>{0}</td></tr></source> <translation type="unfinished"><tr><td><b>Tagy</b></td><td>{0}</td></tr></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1299"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1297"/> <source><tr><td><b>Branches</b></td><td>{0}</td></tr></source> <translation type="unfinished"><tr><td><b>Větve</b></td><td>{0}</td></tr></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1302"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1300"/> <source><tr><td><b>Author</b></td><td>{0} &lt;{1}&gt;</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1305"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1303"/> <source><tr><td><b>Date</b></td><td>{0}</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1308"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1306"/> <source><tr><td><b>Committer</b></td><td>{0} &lt;{1}&gt;</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1311"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1309"/> <source><tr><td><b>Committed Date</b></td><td>{0}</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1314"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1312"/> <source><tr><td><b>Subject</b></td><td>{0}</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1322"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1320"/> <source><h3>Repository information</h3> <p><table> <tr><td><b>Git V.</b></td><td>{0}</td></tr> @@ -18049,432 +18079,432 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1390"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1388"/> <source>Create {0} file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1390"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1388"/> <source><p>The file <b>{0}</b> exists already. 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="../Plugins/VcsPlugins/vcsGit/git.py" line="1449"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1447"/> <source>Git Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1434"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1432"/> <source><p>Copying the directory <b>{0}</b> failed.</p><p>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1449"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1447"/> <source><p>Copying the file <b>{0}</b> failed.</p><p>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2634"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2632"/> <source>The process {0} could not be started. Ensure, that it is in the search path.</source> <translation type="unfinished">Proces {0} nelze spustit. Ověřte, že je umístěn v požadované cestě.</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1636"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1634"/> <source>Git Side-by-Side Difference</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1636"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1634"/> <source><p>The file <b>{0}</b> could not be read.</p></source> <translation type="unfinished"><p>Soubor <b>{0}</b> nelze přečíst.</p></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1685"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1683"/> <source>Fetching from a remote Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1723"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1721"/> <source>Pulling from a remote Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1764"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1762"/> <source>Pushing to a remote Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1792"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1790"/> <source>Committing failed merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1819"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1817"/> <source>Aborting uncommitted/failed merge</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1852"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1850"/> <source>Applying patch</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1884"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1882"/> <source>Check patch files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1887"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1885"/> <source>Apply patch files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1969"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="1967"/> <source>Tagging in the Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2200"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2198"/> <source>Branching in the Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2240"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2238"/> <source>Delete Remote Branch</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2261"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2259"/> <source>Current Branch</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2261"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2259"/> <source><p>The current branch is <b>{0}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2325"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2323"/> <source>Create Bundle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2290"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2288"/> <source>Git Bundle Files (*.bundle)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2307"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2305"/> <source><p>The Git bundle file <b>{0}</b> already exists. Overwrite it?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2355"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2353"/> <source>Verify Bundle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2485"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2483"/> <source>Git Bundle Files (*.bundle);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2385"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2383"/> <source>List Bundle Heads</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2485"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2483"/> <source>Apply Bundle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2508"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2506"/> <source>Applying a bundle file (fetch)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2535"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2533"/> <source>Bisect subcommand ({0}) invalid.</source> <translation type="unfinished">Neplatný bisect podpříkaz ({0}).</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2738"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2736"/> <source>Git Bisect ({0})</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2634"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2632"/> <source>Process Generation Error</source> <translation type="unfinished">Chyba v procesu generování</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2678"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2676"/> <source>Create Bisect Replay File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2644"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2642"/> <source>Git Bisect Replay Files (*.replay)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2661"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2659"/> <source><p>The Git bisect replay file <b>{0}</b> already exists. Overwrite it?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2678"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2676"/> <source><p>The file <b>{0}</b> could not be written.</p><p>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2699"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2697"/> <source>Edit Bisect Replay File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2726"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2724"/> <source>Git Bisect Replay Files (*.replay);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2726"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2724"/> <source>Bisect Replay</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2980"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2978"/> <source>Show Remote Info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2927"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2925"/> <source>Rename Remote Repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2927"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="2925"/> <source>Enter new name for remote repository:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3004"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3002"/> <source>Show Shortlog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3062"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3060"/> <source>Cherry-pick</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3092"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3090"/> <source>Copy Changesets (Continue)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3117"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3115"/> <source>Copy Changesets (Quit)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3143"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3141"/> <source>Copy Changesets (Cancel)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3223"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3221"/> <source>Saving stash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3422"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3420"/> <source>Show Stash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3422"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3420"/> <source>Select a stash (empty for latest stash):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3334"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3332"/> <source>Restore Stash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3348"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3346"/> <source>Restoring stash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3382"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3380"/> <source>Create Branch</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3372"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3370"/> <source>Enter a branch name to restore a stash to:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3397"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3395"/> <source>Creating branch</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3431"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3429"/> <source>Delete Stash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3431"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3429"/> <source>Do you really want to delete the stash <b>{0}</b>?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3442"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3440"/> <source>Deleting stash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3462"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3460"/> <source>Delete All Stashes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3462"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3460"/> <source>Do you really want to delete all stashes?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3470"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3468"/> <source>Deleting all stashes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3542"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3540"/> <source>Showing the combined configuration settings</source> <translation type="unfinished">Zobrazení nastavení kombinovaných konfigurací</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3568"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3566"/> <source>Verifying the integrity of the Git repository</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3593"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3591"/> <source>Performing Repository Housekeeping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3637"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3635"/> <source><tr><td><b>Statistics</b></td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3638"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3636"/> <source><tr><td>Number of loose objects: </td><td>{0}</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3642"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3640"/> <source><tr><td>Disk space used by loose objects: </td><td>{0} KiB</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3646"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3644"/> <source><tr><td>Number of packed objects: </td><td>{0}</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3650"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3648"/> <source><tr><td>Number of packs: </td><td>{0}</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3654"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3652"/> <source><tr><td>Disk space used by packed objects: </td><td>{0} KiB</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3658"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3656"/> <source><tr><td>Packed objects waiting for pruning: </td><td>{0}</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3662"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3660"/> <source><tr><td>Garbage files: </td><td>{0}</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3666"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3664"/> <source><tr><td>Disk space used by garbage files: </td><td>{0} KiB</td></tr></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3672"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3670"/> <source><p><b>No statistics available.</b></p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3738"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3736"/> <source>Creating Archive</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3781"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3779"/> <source>Add Submodule</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3840"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3849"/> <source>List Submodules</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3840"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3849"/> <source>No submodules defined for the project.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3855"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3864"/> <source>All</source> <translation type="unfinished">Vše</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3858"/> + <location filename="../Plugins/VcsPlugins/vcsGit/git.py" line="3867"/> <source>Submodule Path</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plug