Mon, 20 May 2019 22:44:12 +0200
Merge with default to be in sync with Detlev's changes.
eric6/ThirdParty/EditorConfig/LICENSE.txt | file | annotate | diff | comparison | revisions |
--- a/docs/changelog Wed May 15 22:26:22 2019 +0200 +++ b/docs/changelog Mon May 20 22:44:12 2019 +0200 @@ -1,20 +1,44 @@ Change Log ---------- -Version 19.xx: +Version 19.6: +- bug fixes +- Editor + -- Python Typing + --- added support for 'from ... import (...)' + --- changed the indentation when the previous line ends with + '(', '[' or '{' + -- Ruby Typing + --- changed the indentation when the previous line ends with + '(', '[' or '{' +- Mercurial Interface + -- extended the log browser to start with showing all incoming and the + first batch of local changesets + -- show different icons for incoming, outgoing and normal changesets + -- added capability to search and filter based on the changeset phase + -- added support for the 'closehead' extension (as of Mercurial 4.8) + -- added support for the '--keep' flag of the shelve command (as of + Mercurial 5.0) +- Shell + -- added capability to place the Shell window in the left or right side + container +- setup.py Wizard + -- updated the Trove classifiers list + -- added capability to retrieve the Trove classifiers list from PyPI - Variables Viewer - -- reimplemented Variables Viewer using QTreeView, with unlimited access to + -- reimplemented Variables Viewer using QTreeView with unlimited access to big arrays, dicts, etc. because elements are lazy loaded - -- highlighting of till unloaded (yellow background) and last changed - variable(s) (green background) + -- highlighting of still unloaded (default: yellow background) and last + changed variable(s) (default: green background) -- colors for highlighting are configurable through Debugger->General - -- expand / collapse variables with childs on double click on first column, + -- expand / collapse variables with children on double click on first column, in all other cases display detail window - -- handling of dict views improved. They could be expanded like lists - -- show tooltips on all elements which doesn't fit into current column width + -- handling of dict views improved (can be expanded like lists) + -- show tooltips on all elements which don't fit into current column width -- new options in the context menu, e.g. expand / collapse all child nodes - -- bug fixes, e.g. sort order of mixed list elements, unicode handling, ... +- Third Party packages + -- updated EditorConfig to 0.12.2 -Version 19.05: +Version 19.5: - bug fixes - General -- added functionality to provide eric6 via PyPI. Installation can be
--- a/eric6.e4p Wed May 15 22:26:22 2019 +0200 +++ b/eric6.e4p Mon May 20 22:44:12 2019 +0200 @@ -626,6 +626,10 @@ <Source>eric6/Plugins/VcsPlugins/vcsGit/ProjectHelper.py</Source> <Source>eric6/Plugins/VcsPlugins/vcsGit/__init__.py</Source> <Source>eric6/Plugins/VcsPlugins/vcsGit/git.py</Source> + <Source>eric6/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/HgCloseHeadSelectionDialog.py</Source> + <Source>eric6/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/ProjectHelper.py</Source> + <Source>eric6/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/__init__.py</Source> + <Source>eric6/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/closehead.py</Source> <Source>eric6/Plugins/VcsPlugins/vcsMercurial/Config.py</Source> <Source>eric6/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py</Source> <Source>eric6/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/__init__.py</Source> @@ -1734,6 +1738,7 @@ <Source>setup.py</Source> </Sources> <Forms> + <Form>eric6/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/HgCloseHeadSelectionDialog.ui</Form> <Form>eric6/CondaInterface/CondaExecDialog.ui</Form> <Form>eric6/CondaInterface/CondaExportDialog.ui</Form> <Form>eric6/CondaInterface/CondaInfoDialog.ui</Form> @@ -2284,14 +2289,14 @@ <Other>docs/THANKS</Other> <Other>docs/changelog</Other> <Other>eric6.e4p</Other> - <Other>eric6/APIs/Python/zope-2.10.7.api</Other> - <Other>eric6/APIs/Python/zope-2.11.2.api</Other> - <Other>eric6/APIs/Python/zope-3.3.1.api</Other> <Other>eric6/APIs/Python3/PyQt4.bas</Other> <Other>eric6/APIs/Python3/PyQt5.bas</Other> <Other>eric6/APIs/Python3/QScintilla2.bas</Other> <Other>eric6/APIs/Python3/eric6.api</Other> <Other>eric6/APIs/Python3/eric6.bas</Other> + <Other>eric6/APIs/Python/zope-2.10.7.api</Other> + <Other>eric6/APIs/Python/zope-2.11.2.api</Other> + <Other>eric6/APIs/Python/zope-3.3.1.api</Other> <Other>eric6/APIs/QSS/qss.api</Other> <Other>eric6/APIs/Ruby/Ruby-1.8.7.api</Other> <Other>eric6/APIs/Ruby/Ruby-1.8.7.bas</Other> @@ -2428,7 +2433,9 @@ <Other>eric6/Styles</Other> <Other>eric6/ThirdParty/CharDet/LICENSE</Other> <Other>eric6/ThirdParty/CharDet/README.rst</Other> - <Other>eric6/ThirdParty/EditorConfig/LICENSE.txt</Other> + <Other>eric6/ThirdParty/EditorConfig/COPYING</Other> + <Other>eric6/ThirdParty/EditorConfig/LICENSE.BSD</Other> + <Other>eric6/ThirdParty/EditorConfig/LICENSE.PSF</Other> <Other>eric6/ThirdParty/EditorConfig/README.rst</Other> <Other>eric6/ThirdParty/Jasy/jasy/license.md</Other> <Other>eric6/ThirdParty/Pygments/pygments/AUTHORS</Other>
--- a/eric6/APIs/Python3/eric6.api Wed May 15 22:26:22 2019 +0200 +++ b/eric6/APIs/Python3/eric6.api Mon May 20 22:44:12 2019 +0200 @@ -290,6 +290,7 @@ eric6.DebugClients.Python.DebugClient.DebugClient?1() eric6.DebugClients.Python.DebugClientBase.DebugClientBase.Indicators?7 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.absPath?4(fn) +eric6.DebugClients.Python.DebugClientBase.DebugClientBase.arrayTypes?7 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.clientCapabilities?7 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.close?4(fd) eric6.DebugClients.Python.DebugClientBase.DebugClientBase.connectDebugger?4(port, remoteAddress=None, redirect=True) @@ -332,6 +333,9 @@ eric6.DebugClients.Python.DebugClientCapabilities.HasProfiler?7 eric6.DebugClients.Python.DebugClientCapabilities.HasShell?7 eric6.DebugClients.Python.DebugClientCapabilities.HasUnittest?7 +eric6.DebugClients.Python.DebugConfig.BatchSize?7 +eric6.DebugClients.Python.DebugConfig.ConfigKnownQtTypes?7 +eric6.DebugClients.Python.DebugConfig.ConfigQtNames?7 eric6.DebugClients.Python.DebugConfig.ConfigVarTypeStrings?7 eric6.DebugClients.Python.DebugUtilities.ArgInfo?7 eric6.DebugClients.Python.DebugUtilities._getfullargs?5(co) @@ -344,26 +348,25 @@ eric6.DebugClients.Python.DebugVariables.BaseResolver.getDictionary?4(var) eric6.DebugClients.Python.DebugVariables.BaseResolver.resolve?4(var, attribute) eric6.DebugClients.Python.DebugVariables.DefaultResolver.getDictionary?4(var) -eric6.DebugClients.Python.DebugVariables.DefaultResolver.resolve?4(var, attribute) eric6.DebugClients.Python.DebugVariables.DictResolver.getDictionary?4(var) eric6.DebugClients.Python.DebugVariables.DictResolver.keyToStr?4(key) eric6.DebugClients.Python.DebugVariables.DictResolver.resolve?4(var, attribute) +eric6.DebugClients.Python.DebugVariables.DictViewResolver.getDictionary?4(var) +eric6.DebugClients.Python.DebugVariables.DictViewResolver.resolve?4(var, attribute) eric6.DebugClients.Python.DebugVariables.ListResolver.getDictionary?4(var) eric6.DebugClients.Python.DebugVariables.ListResolver.resolve?4(var, attribute) -eric6.DebugClients.Python.DebugVariables.MaxItemsToHandle?7 eric6.DebugClients.Python.DebugVariables.MultiValueDictResolver.getDictionary?4(var) eric6.DebugClients.Python.DebugVariables.MultiValueDictResolver.resolve?4(var, attribute) eric6.DebugClients.Python.DebugVariables.NdArrayResolver.getDictionary?4(var) eric6.DebugClients.Python.DebugVariables.NdArrayResolver.resolve?4(var, attribute) eric6.DebugClients.Python.DebugVariables.SetResolver.getDictionary?4(var) eric6.DebugClients.Python.DebugVariables.SetResolver.resolve?4(var, attribute) -eric6.DebugClients.Python.DebugVariables.TooLargeAttribute?7 -eric6.DebugClients.Python.DebugVariables.TooLargeMessage?7 eric6.DebugClients.Python.DebugVariables._TypeMap?8 eric6.DebugClients.Python.DebugVariables._initTypeMap?5() eric6.DebugClients.Python.DebugVariables.arrayResolver?7 eric6.DebugClients.Python.DebugVariables.defaultResolver?7 eric6.DebugClients.Python.DebugVariables.dictResolver?7 +eric6.DebugClients.Python.DebugVariables.dictViewResolver?7 eric6.DebugClients.Python.DebugVariables.getType?4(obj) eric6.DebugClients.Python.DebugVariables.listResolver?7 eric6.DebugClients.Python.DebugVariables.multiValueDictResolver?7 @@ -612,10 +615,11 @@ eric6.Debugger.DebugViewer.DebugViewer.currentWidget?4() eric6.Debugger.DebugViewer.DebugViewer.handleClientStack?4(stack) eric6.Debugger.DebugViewer.DebugViewer.handleDebuggingStarted?4() +eric6.Debugger.DebugViewer.DebugViewer.handlePreferencesChanged?4() eric6.Debugger.DebugViewer.DebugViewer.handleResetUI?4() eric6.Debugger.DebugViewer.DebugViewer.initCallStackViewer?4(projectMode) eric6.Debugger.DebugViewer.DebugViewer.isCallTraceEnabled?4() -eric6.Debugger.DebugViewer.DebugViewer.preferencesChanged?4() +eric6.Debugger.DebugViewer.DebugViewer.preferencesChanged?7 eric6.Debugger.DebugViewer.DebugViewer.setCallTraceToProjectMode?4(enabled) eric6.Debugger.DebugViewer.DebugViewer.setCurrentWidget?4(widget) eric6.Debugger.DebugViewer.DebugViewer.setDebugger?4(debugUI) @@ -627,7 +631,7 @@ eric6.Debugger.DebugViewer.DebugViewer.showVariables?4(vlist, showGlobals) eric6.Debugger.DebugViewer.DebugViewer.showVariablesTab?4(showGlobals) eric6.Debugger.DebugViewer.DebugViewer.sourceFile?7 -eric6.Debugger.DebugViewer.DebugViewer?1(debugServer, docked, vm, parent=None) +eric6.Debugger.DebugViewer.DebugViewer?1(debugServer, parent=None) eric6.Debugger.DebuggerInterfaceNone.ClientDefaultCapabilities?7 eric6.Debugger.DebuggerInterfaceNone.ClientTypeAssociations?7 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.flush?4() @@ -756,29 +760,40 @@ eric6.Debugger.VariablesFilterDialog.VariablesFilterDialog.on_buttonBox_clicked?4(button) eric6.Debugger.VariablesFilterDialog.VariablesFilterDialog.setSelection?4(lList, gList) eric6.Debugger.VariablesFilterDialog.VariablesFilterDialog?1(parent=None, name=None, modal=False) -eric6.Debugger.VariablesViewer.ArrayElementVarItem?1(parent, dvar, dvalue, dtype) -eric6.Debugger.VariablesViewer.SpecialArrayElementVarItem?1(parent, dvar, dvalue, dtype, frmnr, globalScope) -eric6.Debugger.VariablesViewer.SpecialVarItem.expand?4() -eric6.Debugger.VariablesViewer.SpecialVarItem?1(parent, dvar, dvalue, dtype, frmnr, globalScope) -eric6.Debugger.VariablesViewer.VariableItem.Indicators?7 +eric6.Debugger.VariablesViewer.SORT_ROLE?7 eric6.Debugger.VariablesViewer.VariableItem.Type2Indicators?7 -eric6.Debugger.VariablesViewer.VariableItem._buildKey?5() -eric6.Debugger.VariablesViewer.VariableItem.attachDummy?4() -eric6.Debugger.VariablesViewer.VariableItem.collapse?4() -eric6.Debugger.VariablesViewer.VariableItem.data?4(column, role) -eric6.Debugger.VariablesViewer.VariableItem.deleteChildren?4() -eric6.Debugger.VariablesViewer.VariableItem.expand?4() -eric6.Debugger.VariablesViewer.VariableItem.extractId?4(var) -eric6.Debugger.VariablesViewer.VariableItem.extractIndicators?4(var) -eric6.Debugger.VariablesViewer.VariableItem.getId?4() -eric6.Debugger.VariablesViewer.VariableItem.getValue?4() -eric6.Debugger.VariablesViewer.VariableItem?1(parent, dvar, dvalue, dtype) -eric6.Debugger.VariablesViewer.VariablesViewer.collapseItem?4(parentItem) -eric6.Debugger.VariablesViewer.VariablesViewer.expandItem?4(parentItem) +eric6.Debugger.VariablesViewer.VariableItem.absolutCount?4() +eric6.Debugger.VariablesViewer.VariableItem.arrayTypes?7 +eric6.Debugger.VariablesViewer.VariableItem.noOfItemsStr?7 +eric6.Debugger.VariablesViewer.VariableItem.nonExpandableTypes?7 +eric6.Debugger.VariablesViewer.VariableItem.populated?4() +eric6.Debugger.VariablesViewer.VariableItem.rx_nonprintable?7 +eric6.Debugger.VariablesViewer.VariableItem?1(parent, dvar, dtype, dvalue) +eric6.Debugger.VariablesViewer.VariablesModel.clear?4(reset=False) +eric6.Debugger.VariablesViewer.VariablesModel.columnCount?4(parent=QModelIndex()) +eric6.Debugger.VariablesViewer.VariablesModel.data?4(index, role=Qt.DisplayRole) +eric6.Debugger.VariablesViewer.VariablesModel.expand?7 +eric6.Debugger.VariablesViewer.VariablesModel.flags?4(index) +eric6.Debugger.VariablesViewer.VariablesModel.getMore?4() +eric6.Debugger.VariablesViewer.VariablesModel.handlePreferencesChanged?4() +eric6.Debugger.VariablesViewer.VariablesModel.hasChildren?4(parent=QModelIndex()) +eric6.Debugger.VariablesViewer.VariablesModel.headerData?4(section, orientation, role=Qt.DisplayRole) +eric6.Debugger.VariablesViewer.VariablesModel.index?4(row, column, parent=QModelIndex()) +eric6.Debugger.VariablesViewer.VariablesModel.parent?4(child) +eric6.Debugger.VariablesViewer.VariablesModel.resetModifiedMarker?4(parentIdx=QModelIndex(), pathlist=()) +eric6.Debugger.VariablesViewer.VariablesModel.rowCount?4(parent=QModelIndex()) +eric6.Debugger.VariablesViewer.VariablesModel.setExpanded?4(index, state) +eric6.Debugger.VariablesViewer.VariablesModel.showVariables?4(vlist, frmnr, pathlist=None) +eric6.Debugger.VariablesViewer.VariablesModel?1(treeView, globalScope) +eric6.Debugger.VariablesViewer.VariablesProxyModel.hasChildren?4(parent) +eric6.Debugger.VariablesViewer.VariablesProxyModel.setExpanded?4(index, state) +eric6.Debugger.VariablesViewer.VariablesProxyModel?1(parent=None) eric6.Debugger.VariablesViewer.VariablesViewer.handleResetUI?4() -eric6.Debugger.VariablesViewer.VariablesViewer.mouseDoubleClickEvent?4(mouseEvent) +eric6.Debugger.VariablesViewer.VariablesViewer.preferencesChanged?7 +eric6.Debugger.VariablesViewer.VariablesViewer.resizeEvent?4(event) eric6.Debugger.VariablesViewer.VariablesViewer.showVariable?4(vlist) eric6.Debugger.VariablesViewer.VariablesViewer.showVariables?4(vlist, frmnr) +eric6.Debugger.VariablesViewer.VariablesViewer.verticalScrollbarValueChanged?4(value) eric6.Debugger.VariablesViewer.VariablesViewer?1(viewer, globalScope, parent=None) eric6.Debugger.WatchPointModel.WatchPointModel.addWatchPoint?4(cond, special, properties) eric6.Debugger.WatchPointModel.WatchPointModel.columnCount?4(parent=None) @@ -4016,7 +4031,7 @@ eric6.PipInterface.Pip.Pip.getUserConfig?4() eric6.PipInterface.Pip.Pip.getVirtualenvConfig?4(venvName) eric6.PipInterface.Pip.Pip.getVirtualenvInterpreter?4(venvName) -eric6.PipInterface.Pip.Pip.getVirtualenvNames?4() +eric6.PipInterface.Pip.Pip.getVirtualenvNames?4(noRemote=False) eric6.PipInterface.Pip.Pip.installPackages?4(packages, venvName="", userSite=False, interpreter="") eric6.PipInterface.Pip.Pip.installPip?4(venvName, userSite=False) eric6.PipInterface.Pip.Pip.installRequirements?4(venvName) @@ -5695,6 +5710,15 @@ eric6.Plugins.VcsPlugins.vcsGit.git.Git.vcsTag?4(name, revision=None, tagName=None) eric6.Plugins.VcsPlugins.vcsGit.git.Git.vcsUpdate?4(name, noDialog=False, revision=None) eric6.Plugins.VcsPlugins.vcsGit.git.Git?1(plugin, parent=None, name=None) +eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.HgCloseHeadSelectionDialog.getData?4() +eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.HgCloseHeadSelectionDialog.on_headsList_itemSelectionChanged?4() +eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.HgCloseHeadSelectionDialog?1(vcs, ppath, parent=None) +eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.CloseheadProjectHelper.initActions?4() +eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.CloseheadProjectHelper.initMenu?4(mainMenu) +eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.CloseheadProjectHelper.menuTitle?4() +eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.CloseheadProjectHelper?1() +eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead.Closehead.hgCloseheads?4(name, revisions=None) +eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead.Closehead?1(vcs) eric6.Plugins.VcsPlugins.vcsMercurial.Config.ConfigHgSchemes?7 eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.MercurialPage.on_configButton_clicked?4() eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.MercurialPage.save?4() @@ -5956,7 +5980,7 @@ eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.on_modeComboBox_currentIndexChanged?4(index) eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.on_nextButton_clicked?4() eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.on_passwordCheckBox_toggled?4(isOn) -eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.on_refreshButton_clicked?4() +eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.on_refreshButton_clicked?4(addNext=False) eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.on_rxEdit_returnPressed?4() eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.on_rxEdit_textChanged?4(txt) eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.on_saveLabel_linkActivated?4(link) @@ -5967,7 +5991,7 @@ eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.on_upButton_clicked?4() eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.show?4() eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.start?4(fn, bundle=None, isFile=False, noEntries=0) -eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog?1(vcs, mode="log", parent=None) +eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog?1(vcs, mode="", parent=None) eric6.Plugins.VcsPlugins.vcsMercurial.HgMergeDialog.HgMergeDialog.getParameters?4() eric6.Plugins.VcsPlugins.vcsMercurial.HgMergeDialog.HgMergeDialog.on_bookmarkButton_toggled?4(checked) eric6.Plugins.VcsPlugins.vcsMercurial.HgMergeDialog.HgMergeDialog.on_bookmarkCombo_editTextChanged?4(txt) @@ -6322,7 +6346,7 @@ eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.start?4(projectDir) eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog?1(vcs, parent=None) eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.HgShelveDataDialog.getData?4() -eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.HgShelveDataDialog?1(parent=None) +eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.HgShelveDataDialog?1(version, parent=None) eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.HgShelvesSelectionDialog.getSelectedShelves?4() eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.HgShelvesSelectionDialog.on_shelvesList_itemSelectionChanged?4() eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.HgShelvesSelectionDialog?1(message, shelveNames, parent=None) @@ -7263,6 +7287,7 @@ eric6.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardServer.main?4() eric6.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardServer.rxExecute?4(regexp, options, text, startpos) eric6.Plugins.WizardPlugins.QRegularExpressionWizard.QRegularExpressionWizardServer.rxValidate?4(regexp, options) +eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.ClassifiersUrl?7 eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.getCode?4(indLevel, indString) eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_addExludePatternButton_clicked?4() eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_addModuleButton_clicked?4() @@ -7276,6 +7301,7 @@ eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_excludePatternEdit_returnPressed?4() eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_excludePatternEdit_textChanged?4(txt) eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_excludePatternList_itemSelectionChanged?4() +eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_localClassifiersButton_clicked?4() eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_modulesList_itemSelectionChanged?4() eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_packageDirButton_clicked?4() eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.SetupWizardDialog.on_packageEdit_returnPressed?4() @@ -7336,6 +7362,7 @@ eric6.Preferences.ConfigurationPages.CondaPage.CondaPage.save?4() eric6.Preferences.ConfigurationPages.CondaPage.CondaPage?1() eric6.Preferences.ConfigurationPages.CondaPage.create?4(dlg) +eric6.Preferences.ConfigurationPages.ConfigurationPageBase.ConfigurationPageBase.colourChanged?7 eric6.Preferences.ConfigurationPages.ConfigurationPageBase.ConfigurationPageBase.initColour?4(colourKey, button, prefMethod, byName=False, hasAlpha=False) eric6.Preferences.ConfigurationPages.ConfigurationPageBase.ConfigurationPageBase.polishPage?4() eric6.Preferences.ConfigurationPages.ConfigurationPageBase.ConfigurationPageBase.saveColours?4(prefMethod) @@ -7359,6 +7386,14 @@ eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.DebuggerGeneralPage.on_editAllowedHostButton_clicked?4() eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.DebuggerGeneralPage.save?4() eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.DebuggerGeneralPage?1() +eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.PreviewModel.columnCount?4(parent=QModelIndex()) +eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.PreviewModel.data?4(index, role=Qt.DisplayRole) +eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.PreviewModel.flags?4(index) +eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.PreviewModel.index?4(row, column, parent=QModelIndex()) +eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.PreviewModel.parent?4(child) +eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.PreviewModel.rowCount?4(parent=QModelIndex()) +eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.PreviewModel.setColor?4(key, bgcolour) +eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.PreviewModel?1() eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.create?4(dlg) eric6.Preferences.ConfigurationPages.DebuggerPython2Page.DebuggerPython2Page.on_refreshButton_clicked?4() eric6.Preferences.ConfigurationPages.DebuggerPython2Page.DebuggerPython2Page.on_venvDlgButton_clicked?4() @@ -8095,7 +8130,7 @@ eric6.Project.Project.Project.hasProjectType?4(type_, progLanguage="") eric6.Project.Project.Project.initActions?4() eric6.Project.Project.Project.initFileTypes?4() -eric6.Project.Project.Project.initMenu?4() +eric6.Project.Project.Project.initMenus?4() eric6.Project.Project.Project.initToolbars?4(toolbarManager) eric6.Project.Project.Project.initVCS?4(vcsSystem=None, nooverride=False) eric6.Project.Project.Project.isDebugPropertiesLoaded?4() @@ -10222,6 +10257,7 @@ eric6.UI.UserInterface.UserInterface.masterPasswordChanged?7 eric6.UI.UserInterface.UserInterface.maxFilePathLen?7 eric6.UI.UserInterface.UserInterface.maxMenuFilePathLen?7 +eric6.UI.UserInterface.UserInterface.networkAccessManager?4() eric6.UI.UserInterface.UserInterface.notificationsEnabled?4() eric6.UI.UserInterface.UserInterface.onlineStateChanged?7 eric6.UI.UserInterface.UserInterface.performVersionCheck?4(manual=True, alternative=0, showVersions=False) @@ -10837,6 +10873,7 @@ eric6.ViewManager.ViewManager.ViewManager.initFileMenu?4() eric6.ViewManager.ViewManager.ViewManager.initFileToolbar?4(toolbarManager) eric6.ViewManager.ViewManager.ViewManager.initMacroMenu?4() +eric6.ViewManager.ViewManager.ViewManager.initSearchMenu?4() eric6.ViewManager.ViewManager.ViewManager.initSearchToolbars?4(toolbarManager) eric6.ViewManager.ViewManager.ViewManager.initSpellingToolbar?4(toolbarManager) eric6.ViewManager.ViewManager.ViewManager.initViewMenu?4() @@ -10938,7 +10975,7 @@ eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvDirectory?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvExecPath?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvInterpreter?4(venvName) -eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvNames?4() +eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvNames?4(noRemote=False) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvNamesForVariant?4(variant) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvVariant?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.isCondaEnvironment?4(venvName)
--- a/eric6/APIs/Python3/eric6.bas Wed May 15 22:26:22 2019 +0200 +++ b/eric6/APIs/Python3/eric6.bas Mon May 20 22:44:12 2019 +0200 @@ -27,7 +27,6 @@ ApplicationDiagramBuilder UMLDiagramBuilder ApplicationPage ConfigurationPageBase Ui_ApplicationPage ArgumentsError RuntimeError -ArrayElementVarItem VariableItem ArrayResolver BaseResolver AssociationItem E5ArrowItem Attribute ClbrBaseClasses.Attribute VisibilityMixin @@ -80,6 +79,8 @@ ClickToFlashPlugin WebPluginInterface ClickToFlashWhitelistDialog QDialog Ui_ClickToFlashWhitelistDialog ClosedTabsManager QObject +Closehead HgExtension +CloseheadProjectHelper HgExtensionProjectHelper CodeDocumentationViewer QWidget CodeMetricsDialog QDialog Ui_CodeMetricsDialog CodeStyleAddBuiltinIgnoreDialog QDialog Ui_CodeStyleAddBuiltinIgnoreDialog @@ -143,6 +144,7 @@ DelayedFileWatcher QFileSystemWatcher DeleteFilesConfirmationDialog QDialog Ui_DeleteFilesConfirmationDialog DictResolver BaseResolver +DictViewResolver ListResolver DiffColoursPage ConfigurationPageBase Ui_DiffColoursPage DiffDialog QWidget Ui_DiffDialog DiffHighlighter E5GenericDiffHighlighter @@ -435,6 +437,7 @@ HgBundleDialog QDialog Ui_HgBundleDialog HgClient QObject HgClientPromptDialog QDialog Ui_HgClientPromptDialog +HgCloseHeadSelectionDialog QDialog Ui_HgCloseHeadSelectionDialog HgCommandDialog QDialog Ui_HgCommandDialog HgCommitDialog QWidget Ui_HgCommitDialog HgConflictsListDialog QWidget Ui_HgConflictsListDialog @@ -708,6 +711,7 @@ PreferencesLexer QObject PreferencesLexerError Exception PreferencesLexerLanguageError PreferencesLexerError +PreviewModel QAbstractItemModel PreviewProcessingThread QThread Previewer QStackedWidget PreviewerHTML QWidget @@ -840,8 +844,6 @@ SnapshotTimer QWidget SnapshotWaylandGrabber QObject SortOptionsDialog QDialog Ui_SortOptionsDialog -SpecialArrayElementVarItem SpecialVarItem -SpecialVarItem VariableItem SpeedDial QObject SpeedDialReader QXmlStreamReader SpeedDialWriter QXmlStreamWriter @@ -985,9 +987,10 @@ Value str ValueChars str VariableDetailDialog QDialog Ui_VariableDetailDialog -VariableItem QTreeWidgetItem VariablesFilterDialog QDialog Ui_VariablesFilterDialog -VariablesViewer QTreeWidget +VariablesModel QAbstractItemModel +VariablesProxyModel QSortFilterProxyModel +VariablesViewer QTreeView VcsCommandOptionsDialog QDialog Ui_VcsCommandOptionsDialog VcsGitPlugin QObject VcsMercurialPlugin QObject
--- a/eric6/Debugger/DebugUI.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Debugger/DebugUI.py Mon May 20 22:44:12 2019 +0200 @@ -300,7 +300,7 @@ self.restartAct = E5Action( self.tr('Restart'), - UI.PixmapCache.getIcon("restart.png"), + UI.PixmapCache.getIcon("debugRestart.png"), self.tr('Restart'), Qt.Key_F4, 0, self, 'dbg_restart_script') self.restartAct.setStatusTip(self.tr( 'Restart the last debugged script'))
--- a/eric6/Debugger/DebugViewer.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Debugger/DebugViewer.py Mon May 20 22:44:12 2019 +0200 @@ -50,13 +50,11 @@ sourceFile = pyqtSignal(str, int) preferencesChanged = pyqtSignal() - def __init__(self, debugServer, docked, vm, parent=None): + def __init__(self, debugServer, parent=None): """ Constructor @param debugServer reference to the debug server object (DebugServer) - @param docked flag indicating a dock window - @param vm reference to the viewmanager object @param parent parent widget (QWidget) """ super(DebugViewer, self).__init__(parent)
--- a/eric6/Debugger/VariablesViewer.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Debugger/VariablesViewer.py Mon May 20 22:44:12 2019 +0200 @@ -79,18 +79,18 @@ # Take the additional methods into account for childCount self.methodCount = 0 self.childCount = 0 - self.currentCount = -1 # -1 indicates to (re)load childs - # Indicator that there are childs - self.hasChilds = False + self.currentCount = -1 # -1 indicates to (re)load children + # Indicator that there are children + self.hasChildren = False # Indicator that item was at least once fully populated self.wasPopulated = False - self.childs = [] + self.children = [] # Flag to prevent endless reloading of current item while waiting on # a response from debugger self.pendigFetch = False - # Set of childs items, which are displayed the first time or changed + # Set of child items, which are displayed the first time or changed self.newItems = set() self.changedItems = set() # Name including its ID if it's a dict, set, etc. @@ -135,7 +135,8 @@ """ Private method to process the type of the variable. - If type is known to have childs, the corresponding flag is set. + If type is known to have children, the corresponding flag is set. + @param dtype type string @type str """ @@ -145,23 +146,24 @@ # Qt related stuff? elif (dtype.startswith(ConfigQtNames) and dtype.endswith(ConfigKnownQtTypes)): - self.hasChilds = True + self.hasChildren = True elif dtype in ('instance', 'class'): - self.hasChilds = True + self.hasChildren = True vtype = ConfigVarTypeDispStrings.get(dtype, dtype) # Unkown types should be expandable by default if vtype is dtype and dtype not in self.nonExpandableTypes: - self.hasChilds = True + self.hasChildren = True self.type = QCoreApplication.translate("VariablesViewer", vtype) def __getValue(self, dtype, dvalue): """ Private method to process the variables value. - Define and limit value, set tooltip text. - If type is known to have childs, the corresponding flag is set. + Define and limit value, set tooltip text. If type is known to have + children, the corresponding flag is set. + @param dtype type string @type str @param dvalue value of variable encoded as utf-8 @@ -179,14 +181,14 @@ if dtype == 'numpy.ndarray': self.childCount = int(dvalue.split('x')[0]) dvalue = VariableItem.noOfItemsStr.format(dvalue) - self.hasChilds = True + self.hasChildren = True elif dtype in VariableItem.arrayTypes: self.childCount = int(dvalue) dvalue = VariableItem.noOfItemsStr.format(dvalue) - self.hasChilds = True + self.hasChildren = True elif dtype == "Shiboken.EnumType": - self.hasChilds = True + self.hasChildren = True elif dtype in ['str', 'unicode']: if VariableItem.rx_nonprintable.indexIn(dvalue) == -1: @@ -229,9 +231,9 @@ @property def absolutCount(self): """ - Public property to get the total number of childs. + Public property to get the total number of children. - @return total number of childs + @return total number of children @rtype int """ return self.childCount + self.methodCount @@ -247,7 +249,7 @@ return self.currentCount >= (self.childCount + self.methodCount) -class VariableModel(QAbstractItemModel): +class VariablesModel(QAbstractItemModel): """ Class implementing the data model for QTreeView. @@ -265,7 +267,7 @@ variables @type bool """ - super(VariableModel, self).__init__() + super(VariablesModel, self).__init__() self.treeView = treeView self.proxyModel = treeView.proxyModel @@ -291,7 +293,7 @@ @type bool """ self.beginResetModel() - self.rootNode.childs = [] + self.rootNode.children = [] self.rootNode.newItems.clear() self.rootNode.changedItems.clear() self.rootNode.wasPopulated = False @@ -312,7 +314,7 @@ node = self.rootNode for childName in pathlist or []: - for item in node.childs: + for item in node.children: if item.nameWithId == childName: node = item break @@ -356,14 +358,14 @@ parentIdx = QModelIndex() parent.methodCount = len(vlist) else: - row = parent.parent.childs.index(parent) + row = parent.parent.children.index(parent) parentIdx = self.createIndex(row, 0, parent) if itemStartIndex == -3: # Item doesn't exist any more parentIdx = self.parent(parentIdx) self.beginRemoveRows(parentIdx, row, row) - del parent.parent.childs[row] + del parent.parent.children[row] self.endRemoveRows() parent.parent.childCount -= 1 return @@ -388,11 +390,11 @@ # Now update the table endIndex = idx + len(vlist) newChild = None - knownChildsCount = len(parent.childs) + knownChildrenCount = len(parent.children) while idx < endIndex: # Fetch next old item from last cycle try: - child = parent.childs[idx] + child = parent.children[idx] except IndexError: child = None @@ -407,10 +409,10 @@ # Append or insert before already existing item if child is None or newChild and sort < child.sort: self.beginInsertRows(parentIdx, idx, idx) - parent.childs.insert(idx, newItem) - if knownChildsCount <= idx and not parent.wasPopulated: + parent.children.insert(idx, newItem) + if knownChildrenCount <= idx and not parent.wasPopulated: parent.newItems.add(newItem) - knownChildsCount += 1 + knownChildrenCount += 1 else: parent.changedItems.add(newItem) self.endInsertRows() @@ -443,10 +445,10 @@ # Remove obsolete item self.beginRemoveRows(parentIdx, idx, idx) - parent.childs.remove(child) + parent.children.remove(child) self.endRemoveRows() # idx stay unchanged - knownChildsCount -= 1 + knownChildrenCount -= 1 # Remove items which are left over at the end of child list if itemStartIndex == -1: @@ -466,10 +468,10 @@ @param parentIdx the parent index as QModelIndex @type QModelIndex """ - end = len(parent.childs) + end = len(parent.children) if end > parent.absolutCount: self.beginRemoveRows(parentIdx, parent.absolutCount, end) - del parent.childs[parent.absolutCount:] + del parent.children[parent.absolutCount:] self.endRemoveRows() def resetModifiedMarker(self, parentIdx=QModelIndex(), pathlist=()): @@ -495,12 +497,12 @@ posPaths = {x[pll] for x in posPaths if x[:pll] == pathlist} if posPaths: - for child in parent.childs: - if child.hasChilds and child.nameWithId in posPaths: + for child in parent.children: + if child.hasChildren and child.nameWithId in posPaths: if child.currentCount >= 0: # Discard loaded elements and refresh if still expanded child.currentCount = -1 - row = parent.childs.index(child) + row = parent.children.index(child) newParentIdx = self.index(row, 0, parentIdx) self.resetModifiedMarker( newParentIdx, pathlist + (child.nameWithId,)) @@ -516,7 +518,7 @@ def columnCount(self, parent=QModelIndex()): """ - Public Qt slot to get the column count. + Public method to get the column count. @param parent the model parent @type QModelIndex @@ -527,7 +529,7 @@ def rowCount(self, parent=QModelIndex()): """ - Public Qt slot to get the row count. + Public method to get the row count. @param parent the model parent @type QModelIndex @@ -539,11 +541,11 @@ else: node = self.rootNode - return len(node.childs) + return len(node.children) def flags(self, index): """ - Public Qt slot to get the item flags. + Public method to get the item flags. @param index of item @type QModelIndex @@ -557,24 +559,24 @@ def hasChildren(self, parent=QModelIndex()): """ - Public Qt slot to get a flag if parent has childs. + Public method to get a flag if parent has children. @param parent the model parent @type QModelIndex - @return flag if parent has childs + @return flag indicating parent has children @rtype bool """ if not parent.isValid(): - return self.rootNode.childs != [] + return self.rootNode.children != [] - return parent.internalPointer().hasChilds + return parent.internalPointer().hasChildren def index(self, row, column, parent=QModelIndex()): """ - Public Qt slot to get the index of item at row:column of parent. + Public method to get the index of item at row:column of parent. @param row number of rows - @rtype int + @type int @param column number of columns @type int @param parent the model parent @@ -590,11 +592,11 @@ else: node = parent.internalPointer() - return self.createIndex(row, column, node.childs[row]) + return self.createIndex(row, column, node.children[row]) def parent(self, child): """ - Public Qt slot to get the parent of the given child. + Public method to get the parent of the given child. @param child the model child node @type QModelIndex @@ -613,12 +615,12 @@ if parentNode == self.rootNode: return QModelIndex() - row = parentNode.parent.childs.index(parentNode) + row = parentNode.parent.children.index(parentNode) return self.createIndex(row, 0, parentNode) def data(self, index, role=Qt.DisplayRole): """ - Public Qt slot get the role data of item. + Public method get the role data of item. @param index the model index @type QModelIndex @@ -697,7 +699,7 @@ def headerData(self, section, orientation, role=Qt.DisplayRole): """ - Public Qt slot get the header names. + Public method get the header names. @param section the header section (row/coulumn) @type int @@ -736,15 +738,15 @@ if parent is None: parent = self.rootNode - for child in parent.childs: - if not child.hasChilds: + for child in parent.children: + if not child.hasChildren: continue if pathlist + (child.nameWithId,) in self.openItems: if child.populated: index = None else: - idx = parent.childs.index(child) + idx = parent.children.index(child) index = self.createIndex(idx, 0, child) self.expand.emit(index) @@ -840,7 +842,7 @@ self.dataChanged.emit(idxStart, idxEnd) -class ProxyModel(QSortFilterProxyModel): +class VariablesProxyModel(QSortFilterProxyModel): """ Class for handling the sort operations. """ @@ -851,25 +853,26 @@ @param parent the parent model index @type QModelIndex """ - super(ProxyModel, self).__init__(parent) + super(VariablesProxyModel, self).__init__(parent) self.setSortRole(SORT_ROLE) def hasChildren(self, parent): """ - Public Qt slot to get a flag if parent has childs. + Public method to get a flag if parent has children. The given model index has to be transformed to the underlying source model to get the correct result. + @param parent the model parent @type QModelIndex - @return flag if parent has childs + @return flag if parent has children @rtype bool """ return self.sourceModel().hasChildren(self.mapToSource(parent)) def setExpanded(self, index, state): """ - Public Qt slot to get a flag if parent has childs. + Public slot to get a flag if parent has children. The given model index has to be transformed to the underlying source model to get the correct result. @@ -889,7 +892,7 @@ debugged in a tree. Compound types will be shown with their main entry first. Once the subtree has been expanded, the individual entries will be shown. Double clicking an entry will - expand or collapse the item, if it has childs and the double click + expand or collapse the item, if it has children and the double click was performed on the first column of the tree, otherwise it'll popup a dialog showing the variables parameters in a more readable form. This is especially useful for lengthy strings. @@ -923,9 +926,9 @@ self.setUniformRowHeights(True) # Implements sorting and filtering - self.proxyModel = ProxyModel() + self.proxyModel = VariablesProxyModel() # Variable model implements the underlying data model - self.varModel = VariableModel(self, globalScope) + self.varModel = VariablesModel(self, globalScope) self.preferencesChanged.connect(self.varModel.handlePreferencesChanged) self.preferencesChanged.emit() # Force initialization of colors self.proxyModel.setSourceModel(self.varModel) @@ -986,7 +989,7 @@ Public method to show variables in a list. @param vlist the list of variables to be displayed. Each - listentry is a tuple of three values. + list entry is a tuple of three values. <ul> <li>the variable name (string)</li> <li>the variables type (string)</li> @@ -1005,7 +1008,7 @@ @param vlist the list of subitems to be displayed. The first element gives the path of the - parent variable. Each other listentry is + parent variable. Each other list entry is a tuple of three values. <ul> <li>the variable name (string)</li> @@ -1024,7 +1027,7 @@ def verticalScrollbarValueChanged(self, value): """ - Public Qt slot informing about the scrollbar change. + Public slot informing about the scrollbar change. @param value current value of the vertical scrollbar @type int @@ -1034,7 +1037,7 @@ def resizeEvent(self, event): """ - Protected Qt slot informing about the widget size change. + Protected slot informing about the widget size change. @param event information @type QResizeEvent @@ -1050,7 +1053,7 @@ @type QModelIndex """ node = self.proxyModel.mapToSource(index).internalPointer() - if node.hasChilds and index.column() == 0: + if node.hasChildren and index.column() == 0: state = self.isExpanded(index) self.setExpanded(index, not state) else: @@ -1073,24 +1076,22 @@ self.menu = QMenu() self.menu.addAction(self.tr("Show Details..."), self.__showDetails) self.menu.addSeparator() - self.menu.addAction(self.tr("Expand childs"), self.__expandChilds) - self.menu.addAction(self.tr("Collapse childs"), self.__collapseChilds) - self.menu.addAction(self.tr("Collapse all"), self.collapseAll) + self.menu.addAction(self.tr("Expand"), self.__expandChildren) + self.menu.addAction(self.tr("Collapse"), self.__collapseChildren) + self.menu.addAction(self.tr("Collapse All"), self.collapseAll) self.menu.addSeparator() self.menu.addAction(self.tr("Refresh"), self.__refreshView) self.menu.addSeparator() self.menu.addAction(self.tr("Configure..."), self.__configure) - self.menu.addAction( - QCoreApplication.translate('DebugUI', 'Varia&bles Type Filter...'), - self.__configureFilter) + self.menu.addAction(self.tr("Variables Type Filter..."), + self.__configureFilter) self.backMenu = QMenu() self.backMenu.addAction(self.tr("Refresh"), self.__refreshView) self.backMenu.addSeparator() self.backMenu.addAction(self.tr("Configure..."), self.__configure) - self.backMenu.addAction( - QCoreApplication.translate('DebugUI', 'Varia&bles Type Filter...'), - self.__configureFilter) + self.backMenu.addAction(self.tr("Variables Type Filter..."), + self.__configureFilter) def __showContextMenu(self, coord): """ @@ -1105,27 +1106,27 @@ else: self.backMenu.popup(gcoord) - def __expandChilds(self): + def __expandChildren(self): """ - Private slot to expand all childs of current parent. + Private slot to expand all child items of current parent. """ index = self.currentIndex() node = self.proxyModel.mapToSource(index).internalPointer() - for child in node.childs: - if child.hasChilds: - row = node.childs.index(child) + for child in node.children: + if child.hasChildren: + row = node.children.index(child) idx = self.varModel.createIndex(row, 0, child) idx = self.proxyModel.mapFromSource(idx) self.expand(idx) - def __collapseChilds(self): + def __collapseChildren(self): """ - Private slot to collapse all childs of current parent. + Private slot to collapse all child items of current parent. """ index = self.currentIndex() node = self.proxyModel.mapToSource(index).internalPointer() - for child in node.childs: - row = node.childs.index(child) + for child in node.children: + row = node.children.index(child) idx = self.varModel.createIndex(row, 0, child) idx = self.proxyModel.mapFromSource(idx) if self.isExpanded(idx):
--- a/eric6/Documentation/Help/source.qhp Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Help/source.qhp Mon May 20 22:44:12 2019 +0200 @@ -622,6 +622,11 @@ <section title="eric6.Plugins.VcsPlugins.vcsGit.git" ref="eric6.Plugins.VcsPlugins.vcsGit.git.html" /> </section> <section title="eric6.Plugins.VcsPlugins.vcsMercurial" ref="index-eric6.Plugins.VcsPlugins.vcsMercurial.html"> + <section title="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension" ref="index-eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.html"> + <section title="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.html" /> + <section title="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.html" /> + <section title="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead.html" /> + </section> <section title="eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage" ref="index-eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.html"> <section title="eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage" ref="eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html" /> </section> @@ -2087,9 +2092,6 @@ <keyword name="ArgumentsError (Constructor)" id="ArgumentsError (Constructor)" ref="eric6.E5Gui.E5Action.html#ArgumentsError.__init__" /> <keyword name="ArgumentsError.__repr__" id="ArgumentsError.__repr__" ref="eric6.E5Gui.E5Action.html#ArgumentsError.__repr__" /> <keyword name="ArgumentsError.__str__" id="ArgumentsError.__str__" ref="eric6.E5Gui.E5Action.html#ArgumentsError.__str__" /> - <keyword name="ArrayElementVarItem" id="ArrayElementVarItem" ref="eric6.Debugger.VariablesViewer.html#ArrayElementVarItem" /> - <keyword name="ArrayElementVarItem (Constructor)" id="ArrayElementVarItem (Constructor)" ref="eric6.Debugger.VariablesViewer.html#ArrayElementVarItem.__init__" /> - <keyword name="ArrayItemsContainer" id="ArrayItemsContainer" ref="eric6.DebugClients.Python.DebugVariables.html#ArrayItemsContainer" /> <keyword name="ArrayResolver" id="ArrayResolver" ref="eric6.DebugClients.Python.DebugVariables.html#ArrayResolver" /> <keyword name="ArrayResolver.getDictionary" id="ArrayResolver.getDictionary" ref="eric6.DebugClients.Python.DebugVariables.html#ArrayResolver.getDictionary" /> <keyword name="ArrayResolver.resolve" id="ArrayResolver.resolve" ref="eric6.DebugClients.Python.DebugVariables.html#ArrayResolver.resolve" /> @@ -2607,7 +2609,6 @@ <keyword name="Browser (Constructor)" id="Browser (Constructor)" ref="eric6.UI.Browser.html#Browser.__init__" /> <keyword name="Browser (Module)" id="Browser (Module)" ref="eric6.UI.Browser.html" /> <keyword name="Browser.__addAsToplevelDir" id="Browser.__addAsToplevelDir" ref="eric6.UI.Browser.html#Browser.__addAsToplevelDir" /> - <keyword name="Browser.__configure" id="Browser.__configure" ref="eric6.UI.Browser.html#Browser.__configure" /> <keyword name="Browser.__createPopupMenus" id="Browser.__createPopupMenus" ref="eric6.UI.Browser.html#Browser.__createPopupMenus" /> <keyword name="Browser.__findInDirectory" id="Browser.__findInDirectory" ref="eric6.UI.Browser.html#Browser.__findInDirectory" /> <keyword name="Browser.__newToplevelDir" id="Browser.__newToplevelDir" ref="eric6.UI.Browser.html#Browser.__newToplevelDir" /> @@ -3005,6 +3006,16 @@ <keyword name="ClosedTabsManager.isClosedTabAvailable" id="ClosedTabsManager.isClosedTabAvailable" ref="eric6.WebBrowser.ClosedTabsManager.html#ClosedTabsManager.isClosedTabAvailable" /> <keyword name="ClosedTabsManager.recordBrowser" id="ClosedTabsManager.recordBrowser" ref="eric6.Helpviewer.ClosedTabsManager.html#ClosedTabsManager.recordBrowser" /> <keyword name="ClosedTabsManager.recordBrowser" id="ClosedTabsManager.recordBrowser" ref="eric6.WebBrowser.ClosedTabsManager.html#ClosedTabsManager.recordBrowser" /> + <keyword name="Closehead" id="Closehead" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead.html#Closehead" /> + <keyword name="Closehead (Constructor)" id="Closehead (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead.html#Closehead.__init__" /> + <keyword name="Closehead.hgCloseheads" id="Closehead.hgCloseheads" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead.html#Closehead.hgCloseheads" /> + <keyword name="CloseheadExtension (Package)" id="CloseheadExtension (Package)" ref="index-eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.html" /> + <keyword name="CloseheadProjectHelper" id="CloseheadProjectHelper" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.html#CloseheadProjectHelper" /> + <keyword name="CloseheadProjectHelper (Constructor)" id="CloseheadProjectHelper (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.html#CloseheadProjectHelper.__init__" /> + <keyword name="CloseheadProjectHelper.__hgClosehead" id="CloseheadProjectHelper.__hgClosehead" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.html#CloseheadProjectHelper.__hgClosehead" /> + <keyword name="CloseheadProjectHelper.initActions" id="CloseheadProjectHelper.initActions" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.html#CloseheadProjectHelper.initActions" /> + <keyword name="CloseheadProjectHelper.initMenu" id="CloseheadProjectHelper.initMenu" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.html#CloseheadProjectHelper.initMenu" /> + <keyword name="CloseheadProjectHelper.menuTitle" id="CloseheadProjectHelper.menuTitle" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.html#CloseheadProjectHelper.menuTitle" /> <keyword name="CodeDocumentationViewer" id="CodeDocumentationViewer" ref="eric6.UI.CodeDocumentationViewer.html#CodeDocumentationViewer" /> <keyword name="CodeDocumentationViewer (Constructor)" id="CodeDocumentationViewer (Constructor)" ref="eric6.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.__init__" /> <keyword name="CodeDocumentationViewer (Module)" id="CodeDocumentationViewer (Module)" ref="eric6.UI.CodeDocumentationViewer.html" /> @@ -3982,10 +3993,10 @@ <keyword name="DebugViewer.currentWidget" id="DebugViewer.currentWidget" ref="eric6.Debugger.DebugViewer.html#DebugViewer.currentWidget" /> <keyword name="DebugViewer.handleClientStack" id="DebugViewer.handleClientStack" ref="eric6.Debugger.DebugViewer.html#DebugViewer.handleClientStack" /> <keyword name="DebugViewer.handleDebuggingStarted" id="DebugViewer.handleDebuggingStarted" ref="eric6.Debugger.DebugViewer.html#DebugViewer.handleDebuggingStarted" /> + <keyword name="DebugViewer.handlePreferencesChanged" id="DebugViewer.handlePreferencesChanged" ref="eric6.Debugger.DebugViewer.html#DebugViewer.handlePreferencesChanged" /> <keyword name="DebugViewer.handleResetUI" id="DebugViewer.handleResetUI" ref="eric6.Debugger.DebugViewer.html#DebugViewer.handleResetUI" /> <keyword name="DebugViewer.initCallStackViewer" id="DebugViewer.initCallStackViewer" ref="eric6.Debugger.DebugViewer.html#DebugViewer.initCallStackViewer" /> <keyword name="DebugViewer.isCallTraceEnabled" id="DebugViewer.isCallTraceEnabled" ref="eric6.Debugger.DebugViewer.html#DebugViewer.isCallTraceEnabled" /> - <keyword name="DebugViewer.preferencesChanged" id="DebugViewer.preferencesChanged" ref="eric6.Debugger.DebugViewer.html#DebugViewer.preferencesChanged" /> <keyword name="DebugViewer.setCallTraceToProjectMode" id="DebugViewer.setCallTraceToProjectMode" ref="eric6.Debugger.DebugViewer.html#DebugViewer.setCallTraceToProjectMode" /> <keyword name="DebugViewer.setCurrentWidget" id="DebugViewer.setCurrentWidget" ref="eric6.Debugger.DebugViewer.html#DebugViewer.setCurrentWidget" /> <keyword name="DebugViewer.setDebugger" id="DebugViewer.setDebugger" ref="eric6.Debugger.DebugViewer.html#DebugViewer.setDebugger" /> @@ -4138,7 +4149,6 @@ <keyword name="DeepLEngine.supportedLanguages" id="DeepLEngine.supportedLanguages" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.DeepLEngine.html#DeepLEngine.supportedLanguages" /> <keyword name="DefaultResolver" id="DefaultResolver" ref="eric6.DebugClients.Python.DebugVariables.html#DefaultResolver" /> <keyword name="DefaultResolver.getDictionary" id="DefaultResolver.getDictionary" ref="eric6.DebugClients.Python.DebugVariables.html#DefaultResolver.getDictionary" /> - <keyword name="DefaultResolver.resolve" id="DefaultResolver.resolve" ref="eric6.DebugClients.Python.DebugVariables.html#DefaultResolver.resolve" /> <keyword name="DefaultSearchEngines (Package)" id="DefaultSearchEngines (Package)" ref="index-eric6.Helpviewer.OpenSearch.DefaultSearchEngines.html" /> <keyword name="DefaultSearchEngines (Package)" id="DefaultSearchEngines (Package)" ref="index-eric6.WebBrowser.OpenSearch.DefaultSearchEngines.html" /> <keyword name="DelayedFileWatcher" id="DelayedFileWatcher" ref="eric6.WebBrowser.Tools.DelayedFileWatcher.html#DelayedFileWatcher" /> @@ -4156,6 +4166,9 @@ <keyword name="DictResolver.getDictionary" id="DictResolver.getDictionary" ref="eric6.DebugClients.Python.DebugVariables.html#DictResolver.getDictionary" /> <keyword name="DictResolver.keyToStr" id="DictResolver.keyToStr" ref="eric6.DebugClients.Python.DebugVariables.html#DictResolver.keyToStr" /> <keyword name="DictResolver.resolve" id="DictResolver.resolve" ref="eric6.DebugClients.Python.DebugVariables.html#DictResolver.resolve" /> + <keyword name="DictViewResolver" id="DictViewResolver" ref="eric6.DebugClients.Python.DebugVariables.html#DictViewResolver" /> + <keyword name="DictViewResolver.getDictionary" id="DictViewResolver.getDictionary" ref="eric6.DebugClients.Python.DebugVariables.html#DictViewResolver.getDictionary" /> + <keyword name="DictViewResolver.resolve" id="DictViewResolver.resolve" ref="eric6.DebugClients.Python.DebugVariables.html#DictViewResolver.resolve" /> <keyword name="DiffColoursPage" id="DiffColoursPage" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#DiffColoursPage" /> <keyword name="DiffColoursPage (Constructor)" id="DiffColoursPage (Constructor)" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#DiffColoursPage.__init__" /> <keyword name="DiffColoursPage (Module)" id="DiffColoursPage (Module)" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html" /> @@ -8853,6 +8866,12 @@ <keyword name="HgClientPromptDialog.isPassword" id="HgClientPromptDialog.isPassword" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgClientPromptDialog.html#HgClientPromptDialog.isPassword" /> <keyword name="HgClientPromptDialog.on_inputEdit_textChanged" id="HgClientPromptDialog.on_inputEdit_textChanged" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgClientPromptDialog.html#HgClientPromptDialog.on_inputEdit_textChanged" /> <keyword name="HgClientPromptDialog.on_passwordCheckBox_toggled" id="HgClientPromptDialog.on_passwordCheckBox_toggled" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgClientPromptDialog.html#HgClientPromptDialog.on_passwordCheckBox_toggled" /> + <keyword name="HgCloseHeadSelectionDialog" id="HgCloseHeadSelectionDialog" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.html#HgCloseHeadSelectionDialog" /> + <keyword name="HgCloseHeadSelectionDialog (Constructor)" id="HgCloseHeadSelectionDialog (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.html#HgCloseHeadSelectionDialog.__init__" /> + <keyword name="HgCloseHeadSelectionDialog (Module)" id="HgCloseHeadSelectionDialog (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.html" /> + <keyword name="HgCloseHeadSelectionDialog.__getHeads" id="HgCloseHeadSelectionDialog.__getHeads" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.html#HgCloseHeadSelectionDialog.__getHeads" /> + <keyword name="HgCloseHeadSelectionDialog.getData" id="HgCloseHeadSelectionDialog.getData" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.html#HgCloseHeadSelectionDialog.getData" /> + <keyword name="HgCloseHeadSelectionDialog.on_headsList_itemSelectionChanged" id="HgCloseHeadSelectionDialog.on_headsList_itemSelectionChanged" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.html#HgCloseHeadSelectionDialog.on_headsList_itemSelectionChanged" /> <keyword name="HgCommandDialog" id="HgCommandDialog" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgCommandDialog.html#HgCommandDialog" /> <keyword name="HgCommandDialog (Constructor)" id="HgCommandDialog (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgCommandDialog.html#HgCommandDialog.__init__" /> <keyword name="HgCommandDialog (Module)" id="HgCommandDialog (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgCommandDialog.html" /> @@ -9084,6 +9103,7 @@ <keyword name="HgLogBrowserDialog.__bookmarkMoveActTriggered" id="HgLogBrowserDialog.__bookmarkMoveActTriggered" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__bookmarkMoveActTriggered" /> <keyword name="HgLogBrowserDialog.__branchColor" id="HgLogBrowserDialog.__branchColor" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__branchColor" /> <keyword name="HgLogBrowserDialog.__bundleActTriggered" id="HgLogBrowserDialog.__bundleActTriggered" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__bundleActTriggered" /> + <keyword name="HgLogBrowserDialog.__closeHeadsActTriggered" id="HgLogBrowserDialog.__closeHeadsActTriggered" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__closeHeadsActTriggered" /> <keyword name="HgLogBrowserDialog.__fetchActTriggered" id="HgLogBrowserDialog.__fetchActTriggered" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__fetchActTriggered" /> <keyword name="HgLogBrowserDialog.__filterLogs" id="HgLogBrowserDialog.__filterLogs" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__filterLogs" /> <keyword name="HgLogBrowserDialog.__findItem" id="HgLogBrowserDialog.__findItem" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__findItem" /> @@ -9096,6 +9116,7 @@ <keyword name="HgLogBrowserDialog.__generatorFinished" id="HgLogBrowserDialog.__generatorFinished" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__generatorFinished" /> <keyword name="HgLogBrowserDialog.__getClosedBranches" id="HgLogBrowserDialog.__getClosedBranches" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__getClosedBranches" /> <keyword name="HgLogBrowserDialog.__getColor" id="HgLogBrowserDialog.__getColor" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__getColor" /> + <keyword name="HgLogBrowserDialog.__getHeads" id="HgLogBrowserDialog.__getHeads" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__getHeads" /> <keyword name="HgLogBrowserDialog.__getLogEntries" id="HgLogBrowserDialog.__getLogEntries" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__getLogEntries" /> <keyword name="HgLogBrowserDialog.__getParents" id="HgLogBrowserDialog.__getParents" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__getParents" /> <keyword name="HgLogBrowserDialog.__getRevisionOfTag" id="HgLogBrowserDialog.__getRevisionOfTag" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html#HgLogBrowserDialog.__getRevisionOfTag" /> @@ -9600,6 +9621,7 @@ <keyword name="HgTagBranchListDialog (Constructor)" id="HgTagBranchListDialog (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html#HgTagBranchListDialog.__init__" /> <keyword name="HgTagBranchListDialog (Module)" id="HgTagBranchListDialog (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html" /> <keyword name="HgTagBranchListDialog.__closeBranch" id="HgTagBranchListDialog.__closeBranch" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html#HgTagBranchListDialog.__closeBranch" /> + <keyword name="HgTagBranchListDialog.__closeBranchHeads" id="HgTagBranchListDialog.__closeBranchHeads" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html#HgTagBranchListDialog.__closeBranchHeads" /> <keyword name="HgTagBranchListDialog.__finish" id="HgTagBranchListDialog.__finish" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html#HgTagBranchListDialog.__finish" /> <keyword name="HgTagBranchListDialog.__generateItem" id="HgTagBranchListDialog.__generateItem" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html#HgTagBranchListDialog.__generateItem" /> <keyword name="HgTagBranchListDialog.__highlightCurrentBranch" id="HgTagBranchListDialog.__highlightCurrentBranch" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html#HgTagBranchListDialog.__highlightCurrentBranch" /> @@ -10322,6 +10344,7 @@ <keyword name="InterfacePage (Constructor)" id="InterfacePage (Constructor)" ref="eric6.Preferences.ConfigurationPages.InterfacePage.html#InterfacePage.__init__" /> <keyword name="InterfacePage (Module)" id="InterfacePage (Module)" ref="eric6.Preferences.ConfigurationPages.InterfacePage.html" /> <keyword name="InterfacePage.__populateLanguageCombo" id="InterfacePage.__populateLanguageCombo" ref="eric6.Preferences.ConfigurationPages.InterfacePage.html#InterfacePage.__populateLanguageCombo" /> + <keyword name="InterfacePage.__populateShellPositionCombo" id="InterfacePage.__populateShellPositionCombo" ref="eric6.Preferences.ConfigurationPages.InterfacePage.html#InterfacePage.__populateShellPositionCombo" /> <keyword name="InterfacePage.__populateStyleCombo" id="InterfacePage.__populateStyleCombo" ref="eric6.Preferences.ConfigurationPages.InterfacePage.html#InterfacePage.__populateStyleCombo" /> <keyword name="InterfacePage.on_resetLayoutButton_clicked" id="InterfacePage.on_resetLayoutButton_clicked" ref="eric6.Preferences.ConfigurationPages.InterfacePage.html#InterfacePage.on_resetLayoutButton_clicked" /> <keyword name="InterfacePage.save" id="InterfacePage.save" ref="eric6.Preferences.ConfigurationPages.InterfacePage.html#InterfacePage.save" /> @@ -11641,7 +11664,6 @@ <keyword name="NavigationContainer (Constructor)" id="NavigationContainer (Constructor)" ref="eric6.WebBrowser.Navigation.NavigationContainer.html#NavigationContainer.__init__" /> <keyword name="NavigationContainer (Module)" id="NavigationContainer (Module)" ref="eric6.WebBrowser.Navigation.NavigationContainer.html" /> <keyword name="NavigationContainer.addWidget" id="NavigationContainer.addWidget" ref="eric6.WebBrowser.Navigation.NavigationContainer.html#NavigationContainer.addWidget" /> - <keyword name="NdArrayItemsContainer" id="NdArrayItemsContainer" ref="eric6.DebugClients.Python.DebugVariables.html#NdArrayItemsContainer" /> <keyword name="NdArrayResolver" id="NdArrayResolver" ref="eric6.DebugClients.Python.DebugVariables.html#NdArrayResolver" /> <keyword name="NdArrayResolver.__isNumeric" id="NdArrayResolver.__isNumeric" ref="eric6.DebugClients.Python.DebugVariables.html#NdArrayResolver.__isNumeric" /> <keyword name="NdArrayResolver.getDictionary" id="NdArrayResolver.getDictionary" ref="eric6.DebugClients.Python.DebugVariables.html#NdArrayResolver.getDictionary" /> @@ -12750,6 +12772,15 @@ <keyword name="Prefs" id="Prefs" ref="eric6.Preferences.__init__.html#Prefs" /> <keyword name="Prefs.initWebEngineSettingsDefaults" id="Prefs.initWebEngineSettingsDefaults" ref="eric6.Preferences.__init__.html#Prefs.initWebEngineSettingsDefaults" /> <keyword name="Prefs.initWebSettingsDefaults" id="Prefs.initWebSettingsDefaults" ref="eric6.Preferences.__init__.html#Prefs.initWebSettingsDefaults" /> + <keyword name="PreviewModel" id="PreviewModel" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#PreviewModel" /> + <keyword name="PreviewModel (Constructor)" id="PreviewModel (Constructor)" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#PreviewModel.__init__" /> + <keyword name="PreviewModel.columnCount" id="PreviewModel.columnCount" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#PreviewModel.columnCount" /> + <keyword name="PreviewModel.data" id="PreviewModel.data" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#PreviewModel.data" /> + <keyword name="PreviewModel.flags" id="PreviewModel.flags" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#PreviewModel.flags" /> + <keyword name="PreviewModel.index" id="PreviewModel.index" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#PreviewModel.index" /> + <keyword name="PreviewModel.parent" id="PreviewModel.parent" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#PreviewModel.parent" /> + <keyword name="PreviewModel.rowCount" id="PreviewModel.rowCount" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#PreviewModel.rowCount" /> + <keyword name="PreviewModel.setColor" id="PreviewModel.setColor" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#PreviewModel.setColor" /> <keyword name="PreviewProcessingThread" id="PreviewProcessingThread" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewProcessingThread" /> <keyword name="PreviewProcessingThread (Constructor)" id="PreviewProcessingThread (Constructor)" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewProcessingThread.__init__" /> <keyword name="PreviewProcessingThread.__convertMarkdown" id="PreviewProcessingThread.__convertMarkdown" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewProcessingThread.__convertMarkdown" /> @@ -12970,7 +13001,7 @@ <keyword name="Project.hasProjectType" id="Project.hasProjectType" ref="eric6.Project.Project.html#Project.hasProjectType" /> <keyword name="Project.initActions" id="Project.initActions" ref="eric6.Project.Project.html#Project.initActions" /> <keyword name="Project.initFileTypes" id="Project.initFileTypes" ref="eric6.Project.Project.html#Project.initFileTypes" /> - <keyword name="Project.initMenu" id="Project.initMenu" ref="eric6.Project.Project.html#Project.initMenu" /> + <keyword name="Project.initMenus" id="Project.initMenus" ref="eric6.Project.Project.html#Project.initMenus" /> <keyword name="Project.initToolbars" id="Project.initToolbars" ref="eric6.Project.Project.html#Project.initToolbars" /> <keyword name="Project.initVCS" id="Project.initVCS" ref="eric6.Project.Project.html#Project.initVCS" /> <keyword name="Project.isDebugPropertiesLoaded" id="Project.isDebugPropertiesLoaded" ref="eric6.Project.Project.html#Project.isDebugPropertiesLoaded" /> @@ -13186,6 +13217,7 @@ <keyword name="ProjectFormsBrowser.getUiCompiler" id="ProjectFormsBrowser.getUiCompiler" ref="eric6.Project.ProjectFormsBrowser.html#ProjectFormsBrowser.getUiCompiler" /> <keyword name="ProjectFormsBrowser.handlePreferencesChanged" id="ProjectFormsBrowser.handlePreferencesChanged" ref="eric6.Project.ProjectFormsBrowser.html#ProjectFormsBrowser.handlePreferencesChanged" /> <keyword name="ProjectHelper (Module)" id="ProjectHelper (Module)" ref="eric6.Plugins.VcsPlugins.vcsGit.ProjectHelper.html" /> + <keyword name="ProjectHelper (Module)" id="ProjectHelper (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.html" /> <keyword name="ProjectHelper (Module)" id="ProjectHelper (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.FetchExtension.ProjectHelper.html" /> <keyword name="ProjectHelper (Module)" id="ProjectHelper (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.GpgExtension.ProjectHelper.html" /> <keyword name="ProjectHelper (Module)" id="ProjectHelper (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HisteditExtension.ProjectHelper.html" /> @@ -14509,10 +14541,12 @@ <keyword name="SetupWizardDialog (Module)" id="SetupWizardDialog (Module)" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html" /> <keyword name="SetupWizardDialog.__addClassifierEntry" id="SetupWizardDialog.__addClassifierEntry" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__addClassifierEntry" /> <keyword name="SetupWizardDialog.__addPackage" id="SetupWizardDialog.__addPackage" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__addPackage" /> + <keyword name="SetupWizardDialog.__classifiersDownloadDone" id="SetupWizardDialog.__classifiersDownloadDone" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__classifiersDownloadDone" /> <keyword name="SetupWizardDialog.__enableOkButton" id="SetupWizardDialog.__enableOkButton" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__enableOkButton" /> <keyword name="SetupWizardDialog.__getLicenseText" id="SetupWizardDialog.__getLicenseText" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__getLicenseText" /> <keyword name="SetupWizardDialog.__getStartDir" id="SetupWizardDialog.__getStartDir" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__getStartDir" /> - <keyword name="SetupWizardDialog.__populateFromTroveLists" id="SetupWizardDialog.__populateFromTroveLists" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__populateFromTroveLists" /> + <keyword name="SetupWizardDialog.__loadClassifiersFromPyPI" id="SetupWizardDialog.__loadClassifiersFromPyPI" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__loadClassifiersFromPyPI" /> + <keyword name="SetupWizardDialog.__populateClassifiers" id="SetupWizardDialog.__populateClassifiers" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.__populateClassifiers" /> <keyword name="SetupWizardDialog.getCode" id="SetupWizardDialog.getCode" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.getCode" /> <keyword name="SetupWizardDialog.on_addExludePatternButton_clicked" id="SetupWizardDialog.on_addExludePatternButton_clicked" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_addExludePatternButton_clicked" /> <keyword name="SetupWizardDialog.on_addModuleButton_clicked" id="SetupWizardDialog.on_addModuleButton_clicked" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_addModuleButton_clicked" /> @@ -14526,6 +14560,7 @@ <keyword name="SetupWizardDialog.on_excludePatternEdit_returnPressed" id="SetupWizardDialog.on_excludePatternEdit_returnPressed" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_excludePatternEdit_returnPressed" /> <keyword name="SetupWizardDialog.on_excludePatternEdit_textChanged" id="SetupWizardDialog.on_excludePatternEdit_textChanged" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_excludePatternEdit_textChanged" /> <keyword name="SetupWizardDialog.on_excludePatternList_itemSelectionChanged" id="SetupWizardDialog.on_excludePatternList_itemSelectionChanged" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_excludePatternList_itemSelectionChanged" /> + <keyword name="SetupWizardDialog.on_localClassifiersButton_clicked" id="SetupWizardDialog.on_localClassifiersButton_clicked" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_localClassifiersButton_clicked" /> <keyword name="SetupWizardDialog.on_modulesList_itemSelectionChanged" id="SetupWizardDialog.on_modulesList_itemSelectionChanged" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_modulesList_itemSelectionChanged" /> <keyword name="SetupWizardDialog.on_packageDirButton_clicked" id="SetupWizardDialog.on_packageDirButton_clicked" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_packageDirButton_clicked" /> <keyword name="SetupWizardDialog.on_packageEdit_returnPressed" id="SetupWizardDialog.on_packageEdit_returnPressed" ref="eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html#SetupWizardDialog.on_packageEdit_returnPressed" /> @@ -14931,11 +14966,6 @@ <keyword name="SourceStat.inc" id="SourceStat.inc" ref="eric6.DataViews.CodeMetrics.html#SourceStat.inc" /> <keyword name="SourceStat.indent" id="SourceStat.indent" ref="eric6.DataViews.CodeMetrics.html#SourceStat.indent" /> <keyword name="SourceStat.push" id="SourceStat.push" ref="eric6.DataViews.CodeMetrics.html#SourceStat.push" /> - <keyword name="SpecialArrayElementVarItem" id="SpecialArrayElementVarItem" ref="eric6.Debugger.VariablesViewer.html#SpecialArrayElementVarItem" /> - <keyword name="SpecialArrayElementVarItem (Constructor)" id="SpecialArrayElementVarItem (Constructor)" ref="eric6.Debugger.VariablesViewer.html#SpecialArrayElementVarItem.__init__" /> - <keyword name="SpecialVarItem" id="SpecialVarItem" ref="eric6.Debugger.VariablesViewer.html#SpecialVarItem" /> - <keyword name="SpecialVarItem (Constructor)" id="SpecialVarItem (Constructor)" ref="eric6.Debugger.VariablesViewer.html#SpecialVarItem.__init__" /> - <keyword name="SpecialVarItem.expand" id="SpecialVarItem.expand" ref="eric6.Debugger.VariablesViewer.html#SpecialVarItem.expand" /> <keyword name="SpeedDial" id="SpeedDial" ref="eric6.Helpviewer.SpeedDial.SpeedDial.html#SpeedDial" /> <keyword name="SpeedDial" id="SpeedDial" ref="eric6.WebBrowser.SpeedDial.SpeedDial.html#SpeedDial" /> <keyword name="SpeedDial (Constructor)" id="SpeedDial (Constructor)" ref="eric6.Helpviewer.SpeedDial.SpeedDial.html#SpeedDial.__init__" /> @@ -17228,7 +17258,6 @@ <keyword name="UserInterface.__configShortcuts" id="UserInterface.__configShortcuts" ref="eric6.UI.UserInterface.html#UserInterface.__configShortcuts" /> <keyword name="UserInterface.__configToolBars" id="UserInterface.__configToolBars" ref="eric6.UI.UserInterface.html#UserInterface.__configToolBars" /> <keyword name="UserInterface.__configViewProfiles" id="UserInterface.__configViewProfiles" ref="eric6.UI.UserInterface.html#UserInterface.__configViewProfiles" /> - <keyword name="UserInterface.__configureDockareaCornerUsage" id="UserInterface.__configureDockareaCornerUsage" ref="eric6.UI.UserInterface.html#UserInterface.__configureDockareaCornerUsage" /> <keyword name="UserInterface.__connectToWebBrowser" id="UserInterface.__connectToWebBrowser" ref="eric6.UI.UserInterface.html#UserInterface.__connectToWebBrowser" /> <keyword name="UserInterface.__createDockWindow" id="UserInterface.__createDockWindow" ref="eric6.UI.UserInterface.html#UserInterface.__createDockWindow" /> <keyword name="UserInterface.__createLayout" id="UserInterface.__createLayout" ref="eric6.UI.UserInterface.html#UserInterface.__createLayout" /> @@ -17399,6 +17428,7 @@ <keyword name="UserInterface.handleUrl" id="UserInterface.handleUrl" ref="eric6.UI.UserInterface.html#UserInterface.handleUrl" /> <keyword name="UserInterface.isOnline" id="UserInterface.isOnline" ref="eric6.UI.UserInterface.html#UserInterface.isOnline" /> <keyword name="UserInterface.launchHelpViewer" id="UserInterface.launchHelpViewer" ref="eric6.UI.UserInterface.html#UserInterface.launchHelpViewer" /> + <keyword name="UserInterface.networkAccessManager" id="UserInterface.networkAccessManager" ref="eric6.UI.UserInterface.html#UserInterface.networkAccessManager" /> <keyword name="UserInterface.notificationsEnabled" id="UserInterface.notificationsEnabled" ref="eric6.UI.UserInterface.html#UserInterface.notificationsEnabled" /> <keyword name="UserInterface.performVersionCheck" id="UserInterface.performVersionCheck" ref="eric6.UI.UserInterface.html#UserInterface.performVersionCheck" /> <keyword name="UserInterface.processArgs" id="UserInterface.processArgs" ref="eric6.UI.UserInterface.html#UserInterface.processArgs" /> @@ -17440,45 +17470,60 @@ <keyword name="VariableDetailDialog (Module)" id="VariableDetailDialog (Module)" ref="eric6.Debugger.VariableDetailDialog.html" /> <keyword name="VariableItem" id="VariableItem" ref="eric6.Debugger.VariablesViewer.html#VariableItem" /> <keyword name="VariableItem (Constructor)" id="VariableItem (Constructor)" ref="eric6.Debugger.VariablesViewer.html#VariableItem.__init__" /> - <keyword name="VariableItem._buildKey" id="VariableItem._buildKey" ref="eric6.Debugger.VariablesViewer.html#VariableItem._buildKey" /> - <keyword name="VariableItem.attachDummy" id="VariableItem.attachDummy" ref="eric6.Debugger.VariablesViewer.html#VariableItem.attachDummy" /> - <keyword name="VariableItem.collapse" id="VariableItem.collapse" ref="eric6.Debugger.VariablesViewer.html#VariableItem.collapse" /> - <keyword name="VariableItem.data" id="VariableItem.data" ref="eric6.Debugger.VariablesViewer.html#VariableItem.data" /> - <keyword name="VariableItem.deleteChildren" id="VariableItem.deleteChildren" ref="eric6.Debugger.VariablesViewer.html#VariableItem.deleteChildren" /> - <keyword name="VariableItem.expand" id="VariableItem.expand" ref="eric6.Debugger.VariablesViewer.html#VariableItem.expand" /> - <keyword name="VariableItem.extractId" id="VariableItem.extractId" ref="eric6.Debugger.VariablesViewer.html#VariableItem.extractId" /> - <keyword name="VariableItem.extractIndicators" id="VariableItem.extractIndicators" ref="eric6.Debugger.VariablesViewer.html#VariableItem.extractIndicators" /> - <keyword name="VariableItem.getId" id="VariableItem.getId" ref="eric6.Debugger.VariablesViewer.html#VariableItem.getId" /> - <keyword name="VariableItem.getValue" id="VariableItem.getValue" ref="eric6.Debugger.VariablesViewer.html#VariableItem.getValue" /> + <keyword name="VariableItem.__getName" id="VariableItem.__getName" ref="eric6.Debugger.VariablesViewer.html#VariableItem.__getName" /> + <keyword name="VariableItem.__getType" id="VariableItem.__getType" ref="eric6.Debugger.VariablesViewer.html#VariableItem.__getType" /> + <keyword name="VariableItem.__getValue" id="VariableItem.__getValue" ref="eric6.Debugger.VariablesViewer.html#VariableItem.__getValue" /> + <keyword name="VariableItem.absolutCount" id="VariableItem.absolutCount" ref="eric6.Debugger.VariablesViewer.html#VariableItem.absolutCount" /> + <keyword name="VariableItem.populated" id="VariableItem.populated" ref="eric6.Debugger.VariablesViewer.html#VariableItem.populated" /> <keyword name="VariablesFilterDialog" id="VariablesFilterDialog" ref="eric6.Debugger.VariablesFilterDialog.html#VariablesFilterDialog" /> <keyword name="VariablesFilterDialog (Constructor)" id="VariablesFilterDialog (Constructor)" ref="eric6.Debugger.VariablesFilterDialog.html#VariablesFilterDialog.__init__" /> <keyword name="VariablesFilterDialog (Module)" id="VariablesFilterDialog (Module)" ref="eric6.Debugger.VariablesFilterDialog.html" /> <keyword name="VariablesFilterDialog.getSelection" id="VariablesFilterDialog.getSelection" ref="eric6.Debugger.VariablesFilterDialog.html#VariablesFilterDialog.getSelection" /> <keyword name="VariablesFilterDialog.on_buttonBox_clicked" id="VariablesFilterDialog.on_buttonBox_clicked" ref="eric6.Debugger.VariablesFilterDialog.html#VariablesFilterDialog.on_buttonBox_clicked" /> <keyword name="VariablesFilterDialog.setSelection" id="VariablesFilterDialog.setSelection" ref="eric6.Debugger.VariablesFilterDialog.html#VariablesFilterDialog.setSelection" /> + <keyword name="VariablesModel" id="VariablesModel" ref="eric6.Debugger.VariablesViewer.html#VariablesModel" /> + <keyword name="VariablesModel (Constructor)" id="VariablesModel (Constructor)" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.__init__" /> + <keyword name="VariablesModel.__buildTreePath" id="VariablesModel.__buildTreePath" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.__buildTreePath" /> + <keyword name="VariablesModel.__cleanupParentList" id="VariablesModel.__cleanupParentList" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.__cleanupParentList" /> + <keyword name="VariablesModel.__findPendingItem" id="VariablesModel.__findPendingItem" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.__findPendingItem" /> + <keyword name="VariablesModel.__findVariable" id="VariablesModel.__findVariable" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.__findVariable" /> + <keyword name="VariablesModel.clear" id="VariablesModel.clear" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.clear" /> + <keyword name="VariablesModel.columnCount" id="VariablesModel.columnCount" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.columnCount" /> + <keyword name="VariablesModel.data" id="VariablesModel.data" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.data" /> + <keyword name="VariablesModel.flags" id="VariablesModel.flags" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.flags" /> + <keyword name="VariablesModel.getMore" id="VariablesModel.getMore" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.getMore" /> + <keyword name="VariablesModel.handlePreferencesChanged" id="VariablesModel.handlePreferencesChanged" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.handlePreferencesChanged" /> + <keyword name="VariablesModel.hasChildren" id="VariablesModel.hasChildren" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.hasChildren" /> + <keyword name="VariablesModel.headerData" id="VariablesModel.headerData" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.headerData" /> + <keyword name="VariablesModel.index" id="VariablesModel.index" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.index" /> + <keyword name="VariablesModel.parent" id="VariablesModel.parent" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.parent" /> + <keyword name="VariablesModel.resetModifiedMarker" id="VariablesModel.resetModifiedMarker" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.resetModifiedMarker" /> + <keyword name="VariablesModel.rowCount" id="VariablesModel.rowCount" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.rowCount" /> + <keyword name="VariablesModel.setExpanded" id="VariablesModel.setExpanded" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.setExpanded" /> + <keyword name="VariablesModel.showVariables" id="VariablesModel.showVariables" ref="eric6.Debugger.VariablesViewer.html#VariablesModel.showVariables" /> + <keyword name="VariablesProxyModel" id="VariablesProxyModel" ref="eric6.Debugger.VariablesViewer.html#VariablesProxyModel" /> + <keyword name="VariablesProxyModel (Constructor)" id="VariablesProxyModel (Constructor)" ref="eric6.Debugger.VariablesViewer.html#VariablesProxyModel.__init__" /> + <keyword name="VariablesProxyModel.hasChildren" id="VariablesProxyModel.hasChildren" ref="eric6.Debugger.VariablesViewer.html#VariablesProxyModel.hasChildren" /> + <keyword name="VariablesProxyModel.setExpanded" id="VariablesProxyModel.setExpanded" ref="eric6.Debugger.VariablesViewer.html#VariablesProxyModel.setExpanded" /> <keyword name="VariablesViewer" id="VariablesViewer" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer" /> <keyword name="VariablesViewer (Constructor)" id="VariablesViewer (Constructor)" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__init__" /> <keyword name="VariablesViewer (Module)" id="VariablesViewer (Module)" ref="eric6.Debugger.VariablesViewer.html" /> - <keyword name="VariablesViewer.__addItem" id="VariablesViewer.__addItem" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__addItem" /> - <keyword name="VariablesViewer.__buildTreePath" id="VariablesViewer.__buildTreePath" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__buildTreePath" /> + <keyword name="VariablesViewer.__collapseChildren" id="VariablesViewer.__collapseChildren" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__collapseChildren" /> <keyword name="VariablesViewer.__configure" id="VariablesViewer.__configure" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__configure" /> + <keyword name="VariablesViewer.__configureFilter" id="VariablesViewer.__configureFilter" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__configureFilter" /> <keyword name="VariablesViewer.__createPopupMenus" id="VariablesViewer.__createPopupMenus" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__createPopupMenus" /> - <keyword name="VariablesViewer.__expandItemSignal" id="VariablesViewer.__expandItemSignal" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__expandItemSignal" /> - <keyword name="VariablesViewer.__findItem" id="VariablesViewer.__findItem" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__findItem" /> - <keyword name="VariablesViewer.__generateItem" id="VariablesViewer.__generateItem" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__generateItem" /> - <keyword name="VariablesViewer.__getDispType" id="VariablesViewer.__getDispType" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__getDispType" /> + <keyword name="VariablesViewer.__expandChildren" id="VariablesViewer.__expandChildren" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__expandChildren" /> + <keyword name="VariablesViewer.__itemDoubleClicked" id="VariablesViewer.__itemDoubleClicked" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__itemDoubleClicked" /> + <keyword name="VariablesViewer.__mdlRequestExpand" id="VariablesViewer.__mdlRequestExpand" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__mdlRequestExpand" /> <keyword name="VariablesViewer.__refreshView" id="VariablesViewer.__refreshView" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__refreshView" /> - <keyword name="VariablesViewer.__resort" id="VariablesViewer.__resort" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__resort" /> - <keyword name="VariablesViewer.__sectionClicked" id="VariablesViewer.__sectionClicked" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__sectionClicked" /> <keyword name="VariablesViewer.__showContextMenu" id="VariablesViewer.__showContextMenu" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__showContextMenu" /> <keyword name="VariablesViewer.__showDetails" id="VariablesViewer.__showDetails" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__showDetails" /> <keyword name="VariablesViewer.__showVariableDetails" id="VariablesViewer.__showVariableDetails" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.__showVariableDetails" /> - <keyword name="VariablesViewer.collapseItem" id="VariablesViewer.collapseItem" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.collapseItem" /> - <keyword name="VariablesViewer.expandItem" id="VariablesViewer.expandItem" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.expandItem" /> <keyword name="VariablesViewer.handleResetUI" id="VariablesViewer.handleResetUI" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.handleResetUI" /> - <keyword name="VariablesViewer.mouseDoubleClickEvent" id="VariablesViewer.mouseDoubleClickEvent" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.mouseDoubleClickEvent" /> + <keyword name="VariablesViewer.resizeEvent" id="VariablesViewer.resizeEvent" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.resizeEvent" /> <keyword name="VariablesViewer.showVariable" id="VariablesViewer.showVariable" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.showVariable" /> <keyword name="VariablesViewer.showVariables" id="VariablesViewer.showVariables" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.showVariables" /> + <keyword name="VariablesViewer.verticalScrollbarValueChanged" id="VariablesViewer.verticalScrollbarValueChanged" ref="eric6.Debugger.VariablesViewer.html#VariablesViewer.verticalScrollbarValueChanged" /> <keyword name="VcsCommandOptionsDialog" id="VcsCommandOptionsDialog" ref="eric6.VCS.CommandOptionsDialog.html#VcsCommandOptionsDialog" /> <keyword name="VcsCommandOptionsDialog (Constructor)" id="VcsCommandOptionsDialog (Constructor)" ref="eric6.VCS.CommandOptionsDialog.html#VcsCommandOptionsDialog.__init__" /> <keyword name="VcsCommandOptionsDialog.getOptions" id="VcsCommandOptionsDialog.getOptions" ref="eric6.VCS.CommandOptionsDialog.html#VcsCommandOptionsDialog.getOptions" /> @@ -17864,6 +17909,7 @@ <keyword name="ViewManager.initFileMenu" id="ViewManager.initFileMenu" ref="eric6.ViewManager.ViewManager.html#ViewManager.initFileMenu" /> <keyword name="ViewManager.initFileToolbar" id="ViewManager.initFileToolbar" ref="eric6.ViewManager.ViewManager.html#ViewManager.initFileToolbar" /> <keyword name="ViewManager.initMacroMenu" id="ViewManager.initMacroMenu" ref="eric6.ViewManager.ViewManager.html#ViewManager.initMacroMenu" /> + <keyword name="ViewManager.initSearchMenu" id="ViewManager.initSearchMenu" ref="eric6.ViewManager.ViewManager.html#ViewManager.initSearchMenu" /> <keyword name="ViewManager.initSearchToolbars" id="ViewManager.initSearchToolbars" ref="eric6.ViewManager.ViewManager.html#ViewManager.initSearchToolbars" /> <keyword name="ViewManager.initSpellingToolbar" id="ViewManager.initSpellingToolbar" ref="eric6.ViewManager.ViewManager.html#ViewManager.initSpellingToolbar" /> <keyword name="ViewManager.initViewMenu" id="ViewManager.initViewMenu" ref="eric6.ViewManager.ViewManager.html#ViewManager.initViewMenu" /> @@ -19052,6 +19098,7 @@ <keyword name="cleanupSource (Module)" id="cleanupSource (Module)" ref="cleanupSource.html" /> <keyword name="clearPrivateData" id="clearPrivateData" ref="eric6.Plugins.PluginVcsGit.html#clearPrivateData" /> <keyword name="clearPrivateData" id="clearPrivateData" ref="eric6.Plugins.PluginVcsMercurial.html#clearPrivateData" /> + <keyword name="closehead (Module)" id="closehead (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead.html" /> <keyword name="codeStyleBatchCheck" id="codeStyleBatchCheck" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#codeStyleBatchCheck" /> <keyword name="codeStyleCheck" id="codeStyleCheck" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#codeStyleCheck" /> <keyword name="compactPath" id="compactPath" ref="eric6.Utilities.__init__.html#compactPath" /> @@ -20401,6 +20448,9 @@ <file>eric6.Plugins.VcsPlugins.vcsGit.ProjectBrowserHelper.html</file> <file>eric6.Plugins.VcsPlugins.vcsGit.ProjectHelper.html</file> <file>eric6.Plugins.VcsPlugins.vcsGit.git.html</file> + <file>eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.html</file> + <file>eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.html</file> + <file>eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead.html</file> <file>eric6.Plugins.VcsPlugins.vcsMercurial.Config.html</file> <file>eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html</file> <file>eric6.Plugins.VcsPlugins.vcsMercurial.FetchExtension.HgFetchDialog.html</file> @@ -21170,6 +21220,7 @@ <file>index-eric6.Plugins.VcsPlugins.html</file> <file>index-eric6.Plugins.VcsPlugins.vcsGit.ConfigurationPage.html</file> <file>index-eric6.Plugins.VcsPlugins.vcsGit.html</file> + <file>index-eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.html</file> <file>index-eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.html</file> <file>index-eric6.Plugins.VcsPlugins.vcsMercurial.FetchExtension.html</file> <file>index-eric6.Plugins.VcsPlugins.vcsMercurial.GpgExtension.html</file>
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.DebugClientBase.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.DebugClients.Python.DebugClientBase.html Mon May 20 22:44:12 2019 +0200 @@ -77,7 +77,7 @@ object <h3>Class Attributes</h3> <table> -<tr><td>Indicators</td></tr><tr><td>clientCapabilities</td></tr> +<tr><td>Indicators</td></tr><tr><td>arrayTypes</td></tr><tr><td>clientCapabilities</td></tr> </table> <h3>Class Methods</h3> <table> @@ -299,7 +299,7 @@ </dd> </dl><a NAME="DebugClientBase.__dumpVariable" ID="DebugClientBase.__dumpVariable"></a> <h4>DebugClientBase.__dumpVariable</h4> -<b>__dumpVariable</b>(<i>var, frmnr, scope, filterList, maxSize</i>) +<b>__dumpVariable</b>(<i>var, frmnr, scope, filterList</i>) <p> Private method to return the variables of a frame to the debug server. </p><dl> @@ -309,21 +309,16 @@ </dd><dt><i>frmnr</i> (int)</dt> <dd> distance of frame reported on. 0 is the current frame -</dd><dt><i>scope</i></dt> +</dd><dt><i>scope</i> (int)</dt> <dd> -1 to report global variables, 0 for local variables (int) +1 to report global variables, 0 for local variables </dd><dt><i>filterList</i> (list of int)</dt> <dd> the indices of variable types to be filtered -</dd><dt><i>maxSize</i> (int)</dt> -<dd> -maximum size the formatted value of a variable will - be shown. If it is bigger than that, a 'too big' indication will - be given. </dd> </dl><a NAME="DebugClientBase.__dumpVariables" ID="DebugClientBase.__dumpVariables"></a> <h4>DebugClientBase.__dumpVariables</h4> -<b>__dumpVariables</b>(<i>frmnr, scope, filterList, maxSize</i>) +<b>__dumpVariables</b>(<i>frmnr, scope, filterList</i>) <p> Private method to return the variables of a frame to the debug server. </p><dl> @@ -336,11 +331,6 @@ </dd><dt><i>filterList</i> (list of int)</dt> <dd> the indices of variable types to be filtered -</dd><dt><i>maxSize</i> (int)</dt> -<dd> -maximum size the formatted value of a variable will - be shown. If it is bigger than that, a 'too big' indication will - be given. </dd> </dl><a NAME="DebugClientBase.__extractIndicators" ID="DebugClientBase.__extractIndicators"></a> <h4>DebugClientBase.__extractIndicators</h4> @@ -385,7 +375,7 @@ </dd> </dl><a NAME="DebugClientBase.__formatVariablesList" ID="DebugClientBase.__formatVariablesList"></a> <h4>DebugClientBase.__formatVariablesList</h4> -<b>__formatVariablesList</b>(<i>keylist, dict_, scope, filterList=None, formatSequences=False, maxSize=0</i>) +<b>__formatVariablesList</b>(<i>dict_, scope, filterList=None</i>) <p> Private method to produce a formated variables list. </p><p> @@ -395,10 +385,7 @@ expressions. The formated variables list (a list of tuples of 3 values) is returned. </p><dl> -<dt><i>keylist</i> (list of str)</dt> -<dd> -keys of the dictionary to be formatted -</dd><dt><i>dict_</i> (dict)</dt> +<dt><i>dict_</i> (dict)</dt> <dd> the dictionary to be scanned </dd><dt><i>scope</i> (int)</dt> @@ -412,16 +399,6 @@ the indices of variable types to be filtered. Variables are only added to the list, if their type is not contained in the filter list. -</dd><dt><i>formatSequences</i> (bool)</dt> -<dd> -flag indicating, that sequence or dictionary - variables should be formatted. If it is 0 (or false), just the - number of items contained in these variables is returned. -</dd><dt><i>maxSize</i> (int)</dt> -<dd> -maximum size the formatted value of a variable will - be shown. If it is bigger than that, a 'too big' indication will - be placed in the value field. </dd> </dl><dl> <dt>Returns:</dt>
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.DebugConfig.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.DebugClients.Python.DebugConfig.html Mon May 20 22:44:12 2019 +0200 @@ -25,7 +25,7 @@ </p> <h3>Global Attributes</h3> <table> -<tr><td>ConfigVarTypeStrings</td></tr> +<tr><td>BatchSize</td></tr><tr><td>ConfigKnownQtTypes</td></tr><tr><td>ConfigQtNames</td></tr><tr><td>ConfigVarTypeStrings</td></tr> </table> <h3>Classes</h3> <table>
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.DebugVariables.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.DebugClients.Python.DebugVariables.html Mon May 20 22:44:12 2019 +0200 @@ -25,14 +25,11 @@ </p> <h3>Global Attributes</h3> <table> -<tr><td>MaxItemsToHandle</td></tr><tr><td>TooLargeAttribute</td></tr><tr><td>TooLargeMessage</td></tr><tr><td>_TypeMap</td></tr><tr><td>arrayResolver</td></tr><tr><td>defaultResolver</td></tr><tr><td>dictResolver</td></tr><tr><td>listResolver</td></tr><tr><td>multiValueDictResolver</td></tr><tr><td>ndarrayResolver</td></tr><tr><td>setResolver</td></tr> +<tr><td>_TypeMap</td></tr><tr><td>arrayResolver</td></tr><tr><td>defaultResolver</td></tr><tr><td>dictResolver</td></tr><tr><td>dictViewResolver</td></tr><tr><td>listResolver</td></tr><tr><td>multiValueDictResolver</td></tr><tr><td>ndarrayResolver</td></tr><tr><td>setResolver</td></tr> </table> <h3>Classes</h3> <table> <tr> -<td><a href="#ArrayItemsContainer">ArrayItemsContainer</a></td> -<td>Class to store array.array items.</td> -</tr><tr> <td><a href="#ArrayResolver">ArrayResolver</a></td> <td>Class used to resolve from array.array including some meta data.</td> </tr><tr> @@ -45,15 +42,15 @@ <td><a href="#DictResolver">DictResolver</a></td> <td>Class used to resolve from a dictionary.</td> </tr><tr> +<td><a href="#DictViewResolver">DictViewResolver</a></td> +<td>Class used to resolve from dict views.</td> +</tr><tr> <td><a href="#ListResolver">ListResolver</a></td> <td>Class used to resolve from a tuple or list.</td> </tr><tr> <td><a href="#MultiValueDictResolver">MultiValueDictResolver</a></td> <td>Class used to resolve from Django multi value dictionaries.</td> </tr><tr> -<td><a href="#NdArrayItemsContainer">NdArrayItemsContainer</a></td> -<td>Class to store ndarray items.</td> -</tr><tr> <td><a href="#NdArrayResolver">NdArrayResolver</a></td> <td>Class used to resolve from numpy ndarray including some meta data.</td> </tr><tr> @@ -72,32 +69,6 @@ </tr> </table> <hr /><hr /> -<a NAME="ArrayItemsContainer" ID="ArrayItemsContainer"></a> -<h2>ArrayItemsContainer</h2> -<p> - Class to store array.array items. -</p> -<h3>Derived from</h3> -None -<h3>Class Attributes</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Class Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Static Methods</h3> -<table> -<tr><td>None</td></tr> -</table> - -<div align="right"><a href="#top">Up</a></div> -<hr /><hr /> <a NAME="ArrayResolver" ID="ArrayResolver"></a> <h2>ArrayResolver</h2> <p> @@ -222,12 +193,6 @@ <dd> dict </dd> -</dl><dl> -<dt>Raises <b>NotImplementedError</b>:</dt> -<dd> -raised to indicate a missing - implementation -</dd> </dl><a NAME="BaseResolver.resolve" ID="BaseResolver.resolve"></a> <h4>BaseResolver.resolve</h4> <b>resolve</b>(<i>var, attribute</i>) @@ -251,12 +216,6 @@ <dd> any </dd> -</dl><dl> -<dt>Raises <b>NotImplementedError</b>:</dt> -<dd> -raised to indicate a missing - implementation -</dd> </dl> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> @@ -280,9 +239,6 @@ <tr> <td><a href="#DefaultResolver.getDictionary">getDictionary</a></td> <td>Public method to get the attributes of a variable as a dictionary.</td> -</tr><tr> -<td><a href="#DefaultResolver.resolve">resolve</a></td> -<td>Public method to get an attribute from a variable.</td> </tr> </table> <h3>Static Methods</h3> @@ -309,29 +265,6 @@ <dd> dict </dd> -</dl><a NAME="DefaultResolver.resolve" ID="DefaultResolver.resolve"></a> -<h4>DefaultResolver.resolve</h4> -<b>resolve</b>(<i>var, attribute</i>) -<p> - Public method to get an attribute from a variable. -</p><dl> -<dt><i>var</i> (any)</dt> -<dd> -variable to extract an attribute or value from -</dd><dt><i>attribute</i> (str)</dt> -<dd> -name of the attribute to extract -</dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -value of the attribute -</dd> -</dl><dl> -<dt>Return Type:</dt> -<dd> -any -</dd> </dl> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> @@ -433,6 +366,81 @@ </dl> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> +<a NAME="DictViewResolver" ID="DictViewResolver"></a> +<h2>DictViewResolver</h2> +<p> + Class used to resolve from dict views. +</p> +<h3>Derived from</h3> +ListResolver +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#DictViewResolver.getDictionary">getDictionary</a></td> +<td>Public method to get the attributes of a variable as a dictionary.</td> +</tr><tr> +<td><a href="#DictViewResolver.resolve">resolve</a></td> +<td>Public method to get an attribute from a variable.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="DictViewResolver.getDictionary" ID="DictViewResolver.getDictionary"></a> +<h4>DictViewResolver.getDictionary</h4> +<b>getDictionary</b>(<i>var</i>) +<p> + Public method to get the attributes of a variable as a dictionary. +</p><dl> +<dt><i>var</i> (any)</dt> +<dd> +variable to be converted +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +dictionary containing the variable attributes +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl><a NAME="DictViewResolver.resolve" ID="DictViewResolver.resolve"></a> +<h4>DictViewResolver.resolve</h4> +<b>resolve</b>(<i>var, attribute</i>) +<p> + Public method to get an attribute from a variable. +</p><dl> +<dt><i>var</i> (tuple or list)</dt> +<dd> +variable to extract an attribute or value from +</dd><dt><i>attribute</i> (str)</dt> +<dd> +id of the value to extract +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +value of the attribute +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +any +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> <a NAME="ListResolver" ID="ListResolver"></a> <h2>ListResolver</h2> <p> @@ -583,32 +591,6 @@ </dl> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> -<a NAME="NdArrayItemsContainer" ID="NdArrayItemsContainer"></a> -<h2>NdArrayItemsContainer</h2> -<p> - Class to store ndarray items. -</p> -<h3>Derived from</h3> -None -<h3>Class Attributes</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Class Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Static Methods</h3> -<table> -<tr><td>None</td></tr> -</table> - -<div align="right"><a href="#top">Up</a></div> -<hr /><hr /> <a NAME="NdArrayResolver" ID="NdArrayResolver"></a> <h2>NdArrayResolver</h2> <p> @@ -803,12 +785,12 @@ </dl><dl> <dt>Returns:</dt> <dd> -tuple containing the type, type name, type string and resolver +tuple containing the type name, type string and resolver </dd> </dl><dl> <dt>Return Type:</dt> <dd> -tuple of type, str, str, BaseResolver +tuple of str, str, BaseResolver </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.Debugger.DebugViewer.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.Debugger.DebugViewer.html Mon May 20 22:44:12 2019 +0200 @@ -63,7 +63,10 @@ the exception logger. Additionally a list of all threads is shown. </p><h3>Signals</h3> <dl> -<dt>sourceFile(string, int)</dt> +<dt>preferencesChanged()</dt> +<dd> +emitted to react on changed preferences +</dd><dt>sourceFile(string, int)</dt> <dd> emitted to open a source file at a line </dd> @@ -108,6 +111,9 @@ <td><a href="#DebugViewer.handleDebuggingStarted">handleDebuggingStarted</a></td> <td>Public slot to handle the start of a debugging session.</td> </tr><tr> +<td><a href="#DebugViewer.handlePreferencesChanged">handlePreferencesChanged</a></td> +<td>Public slot to handle the preferencesChanged signal.</td> +</tr><tr> <td><a href="#DebugViewer.handleResetUI">handleResetUI</a></td> <td>Public method to reset the SBVviewer.</td> </tr><tr> @@ -117,9 +123,6 @@ <td><a href="#DebugViewer.isCallTraceEnabled">isCallTraceEnabled</a></td> <td>Public method to get the state of the call trace function.</td> </tr><tr> -<td><a href="#DebugViewer.preferencesChanged">preferencesChanged</a></td> -<td>Public slot to handle the preferencesChanged signal.</td> -</tr><tr> <td><a href="#DebugViewer.setCallTraceToProjectMode">setCallTraceToProjectMode</a></td> <td>Public slot to set the call trace viewer to project mode.</td> </tr><tr> @@ -157,19 +160,13 @@ </table> <a NAME="DebugViewer.__init__" ID="DebugViewer.__init__"></a> <h4>DebugViewer (Constructor)</h4> -<b>DebugViewer</b>(<i>debugServer, docked, vm, parent=None</i>) +<b>DebugViewer</b>(<i>debugServer, parent=None</i>) <p> Constructor </p><dl> <dt><i>debugServer</i></dt> <dd> reference to the debug server object (DebugServer) -</dd><dt><i>docked</i></dt> -<dd> -flag indicating a dock window -</dd><dt><i>vm</i></dt> -<dd> -reference to the viewmanager object </dd><dt><i>parent</i></dt> <dd> parent widget (QWidget) @@ -248,6 +245,11 @@ Public slot to handle the start of a debugging session. </p><p> This slot sets the variables filter expressions. +</p><a NAME="DebugViewer.handlePreferencesChanged" ID="DebugViewer.handlePreferencesChanged"></a> +<h4>DebugViewer.handlePreferencesChanged</h4> +<b>handlePreferencesChanged</b>(<i></i>) +<p> + Public slot to handle the preferencesChanged signal. </p><a NAME="DebugViewer.handleResetUI" ID="DebugViewer.handleResetUI"></a> <h4>DebugViewer.handleResetUI</h4> <b>handleResetUI</b>(<i></i>) @@ -273,12 +275,7 @@ <dd> flag indicating the state of the call trace function (boolean) </dd> -</dl><a NAME="DebugViewer.preferencesChanged" ID="DebugViewer.preferencesChanged"></a> -<h4>DebugViewer.preferencesChanged</h4> -<b>preferencesChanged</b>(<i></i>) -<p> - Public slot to handle the preferencesChanged signal. -</p><a NAME="DebugViewer.setCallTraceToProjectMode" ID="DebugViewer.setCallTraceToProjectMode"></a> +</dl><a NAME="DebugViewer.setCallTraceToProjectMode" ID="DebugViewer.setCallTraceToProjectMode"></a> <h4>DebugViewer.setCallTraceToProjectMode</h4> <b>setCallTraceToProjectMode</b>(<i>enabled</i>) <p>
--- a/eric6/Documentation/Source/eric6.Debugger.VariablesViewer.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.Debugger.VariablesViewer.html Mon May 20 22:44:12 2019 +0200 @@ -21,29 +21,26 @@ <body><a NAME="top" ID="top"></a> <h1>eric6.Debugger.VariablesViewer</h1> <p> -Module implementing the variables viewer widget. +Module implementing the variables viewer view based on QTreeView. </p> <h3>Global Attributes</h3> <table> -<tr><td>None</td></tr> +<tr><td>SORT_ROLE</td></tr> </table> <h3>Classes</h3> <table> <tr> -<td><a href="#ArrayElementVarItem">ArrayElementVarItem</a></td> -<td>Class implementing a VariableItem that represents an array element.</td> -</tr><tr> -<td><a href="#SpecialArrayElementVarItem">SpecialArrayElementVarItem</a></td> -<td>Class implementing a QTreeWidgetItem that represents a special array variable node.</td> +<td><a href="#VariableItem">VariableItem</a></td> +<td>Class implementing the data structure for all variable items.</td> </tr><tr> -<td><a href="#SpecialVarItem">SpecialVarItem</a></td> -<td>Class implementing a VariableItem that represents a special variable node.</td> +<td><a href="#VariablesModel">VariablesModel</a></td> +<td>Class implementing the data model for QTreeView.</td> </tr><tr> -<td><a href="#VariableItem">VariableItem</a></td> -<td>Class implementing the data structure for variable items.</td> +<td><a href="#VariablesProxyModel">VariablesProxyModel</a></td> +<td>Class for handling the sort operations.</td> </tr><tr> <td><a href="#VariablesViewer">VariablesViewer</a></td> -<td>Class implementing the variables viewer widget.</td> +<td>Class implementing the variables viewer view.</td> </tr> </table> <h3>Functions</h3> @@ -51,16 +48,16 @@ <tr><td>None</td></tr> </table> <hr /><hr /> -<a NAME="ArrayElementVarItem" ID="ArrayElementVarItem"></a> -<h2>ArrayElementVarItem</h2> +<a NAME="VariableItem" ID="VariableItem"></a> +<h2>VariableItem</h2> <p> - Class implementing a VariableItem that represents an array element. + Class implementing the data structure for all variable items. </p> <h3>Derived from</h3> -VariableItem +object <h3>Class Attributes</h3> <table> -<tr><td>None</td></tr> +<tr><td>Type2Indicators</td></tr><tr><td>arrayTypes</td></tr><tr><td>noOfItemsStr</td></tr><tr><td>nonExpandableTypes</td></tr><tr><td>rx_nonprintable</td></tr> </table> <h3>Class Methods</h3> <table> @@ -69,102 +66,132 @@ <h3>Methods</h3> <table> <tr> -<td><a href="#ArrayElementVarItem.__init__">ArrayElementVarItem</a></td> +<td><a href="#VariableItem.__init__">VariableItem</a></td> <td>Constructor</td> +</tr><tr> +<td><a href="#VariableItem.__getName">__getName</a></td> +<td>Private method to extract the variable name.</td> +</tr><tr> +<td><a href="#VariableItem.__getType">__getType</a></td> +<td>Private method to process the type of the variable.</td> +</tr><tr> +<td><a href="#VariableItem.__getValue">__getValue</a></td> +<td>Private method to process the variables value.</td> +</tr><tr> +<td><a href="#VariableItem.absolutCount">absolutCount</a></td> +<td>Public property to get the total number of children.</td> +</tr><tr> +<td><a href="#VariableItem.populated">populated</a></td> +<td>Public property returning a flag indicating if item is fully populated.</td> </tr> </table> <h3>Static Methods</h3> <table> <tr><td>None</td></tr> </table> -<a NAME="ArrayElementVarItem.__init__" ID="ArrayElementVarItem.__init__"></a> -<h4>ArrayElementVarItem (Constructor)</h4> -<b>ArrayElementVarItem</b>(<i>parent, dvar, dvalue, dtype</i>) +<a NAME="VariableItem.__init__" ID="VariableItem.__init__"></a> +<h4>VariableItem (Constructor)</h4> +<b>VariableItem</b>(<i>parent, dvar, dtype, dvalue</i>) <p> Constructor </p><dl> -<dt><i>parent</i></dt> +<dt><i>parent</i> (VariableItem)</dt> +<dd> +reference to the parent item +</dd><dt><i>dvar</i> (str)</dt> +<dd> +variable name +</dd><dt><i>dtype</i> (str)</dt> +<dd> +type string +</dd><dt><i>dvalue</i> (str)</dt> <dd> -parent of this item -</dd><dt><i>dvar</i></dt> +value string +</dd> +</dl><a NAME="VariableItem.__getName" ID="VariableItem.__getName"></a> +<h4>VariableItem.__getName</h4> +<b>__getName</b>(<i>dvar</i>) +<p> + Private method to extract the variable name. +</p><dl> +<dt><i>dvar</i> (str)</dt> +<dd> +name of variable maybe with ID +</dd> +</dl><a NAME="VariableItem.__getType" ID="VariableItem.__getType"></a> +<h4>VariableItem.__getType</h4> +<b>__getType</b>(<i>dtype</i>) +<p> + Private method to process the type of the variable. +</p><p> + If type is known to have children, the corresponding flag is set. +</p><dl> +<dt><i>dtype</i> (str)</dt> <dd> -variable name (string) -</dd><dt><i>dvalue</i></dt> +type string +</dd> +</dl><a NAME="VariableItem.__getValue" ID="VariableItem.__getValue"></a> +<h4>VariableItem.__getValue</h4> +<b>__getValue</b>(<i>dtype, dvalue</i>) +<p> + Private method to process the variables value. +</p><p> + Define and limit value, set tooltip text. If type is known to have + children, the corresponding flag is set. +</p><dl> +<dt><i>dtype</i> (str)</dt> +<dd> +type string +</dd><dt><i>dvalue</i> (str)</dt> <dd> -value string (string) -</dd><dt><i>dtype</i></dt> +value of variable encoded as utf-8 +</dd> +</dl><a NAME="VariableItem.absolutCount" ID="VariableItem.absolutCount"></a> +<h4>VariableItem.absolutCount</h4> +<b>absolutCount</b>(<i></i>) +<p> + Public property to get the total number of children. +</p><dl> +<dt>Returns:</dt> +<dd> +total number of children +</dd> +</dl><dl> +<dt>Return Type:</dt> <dd> -type string (string) +int +</dd> +</dl><a NAME="VariableItem.populated" ID="VariableItem.populated"></a> +<h4>VariableItem.populated</h4> +<b>populated</b>(<i></i>) +<p> + Public property returning a flag indicating if item is fully populated. +</p><dl> +<dt>Returns:</dt> +<dd> +item is fully populated +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool </dd> </dl> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> -<a NAME="SpecialArrayElementVarItem" ID="SpecialArrayElementVarItem"></a> -<h2>SpecialArrayElementVarItem</h2> +<a NAME="VariablesModel" ID="VariablesModel"></a> +<h2>VariablesModel</h2> <p> - Class implementing a QTreeWidgetItem that represents a special array - variable node. -</p> -<h3>Derived from</h3> -SpecialVarItem -<h3>Class Attributes</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Class Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Methods</h3> -<table> -<tr> -<td><a href="#SpecialArrayElementVarItem.__init__">SpecialArrayElementVarItem</a></td> -<td>Constructor</td> -</tr> -</table> -<h3>Static Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<a NAME="SpecialArrayElementVarItem.__init__" ID="SpecialArrayElementVarItem.__init__"></a> -<h4>SpecialArrayElementVarItem (Constructor)</h4> -<b>SpecialArrayElementVarItem</b>(<i>parent, dvar, dvalue, dtype, frmnr, globalScope</i>) -<p> - Constructor -</p><dl> -<dt><i>parent</i></dt> + Class implementing the data model for QTreeView. +</p><h3>Signals</h3> +<dl> +<dt>expand</dt> <dd> -parent of this item -</dd><dt><i>dvar</i></dt> -<dd> -variable name (string) -</dd><dt><i>dvalue</i></dt> -<dd> -value string (string) -</dd><dt><i>dtype</i></dt> -<dd> -type string (string) -</dd><dt><i>frmnr</i></dt> -<dd> -frame number (0 is the current frame) (int) -</dd><dt><i>globalScope</i></dt> -<dd> -flag indicating global (True) or local (False) - variables +trigger QTreeView to expand given index </dd> </dl> -<div align="right"><a href="#top">Up</a></div> -<hr /><hr /> -<a NAME="SpecialVarItem" ID="SpecialVarItem"></a> -<h2>SpecialVarItem</h2> -<p> - Class implementing a VariableItem that represents a special variable node. -</p><p> - These special variable nodes are generated for classes, lists, - tuples and dictionaries. -</p> <h3>Derived from</h3> -VariableItem +QAbstractItemModel <h3>Class Attributes</h3> <table> <tr><td>None</td></tr> @@ -176,251 +203,485 @@ <h3>Methods</h3> <table> <tr> -<td><a href="#SpecialVarItem.__init__">SpecialVarItem</a></td> +<td><a href="#VariablesModel.__init__">VariablesModel</a></td> <td>Constructor</td> </tr><tr> -<td><a href="#SpecialVarItem.expand">expand</a></td> -<td>Public method to expand the item.</td> -</tr> -</table> -<h3>Static Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<a NAME="SpecialVarItem.__init__" ID="SpecialVarItem.__init__"></a> -<h4>SpecialVarItem (Constructor)</h4> -<b>SpecialVarItem</b>(<i>parent, dvar, dvalue, dtype, frmnr, globalScope</i>) -<p> - Constructor -</p><dl> -<dt><i>parent</i></dt> -<dd> -parent of this item -</dd><dt><i>dvar</i></dt> -<dd> -variable name (string) -</dd><dt><i>dvalue</i></dt> -<dd> -value string (string) -</dd><dt><i>dtype</i></dt> -<dd> -type string (string) -</dd><dt><i>frmnr</i></dt> -<dd> -frame number (0 is the current frame) (int) -</dd><dt><i>globalScope</i></dt> -<dd> -flag indicating global (True) or local (False) - variables -</dd> -</dl><a NAME="SpecialVarItem.expand" ID="SpecialVarItem.expand"></a> -<h4>SpecialVarItem.expand</h4> -<b>expand</b>(<i></i>) -<p> - Public method to expand the item. -</p> -<div align="right"><a href="#top">Up</a></div> -<hr /><hr /> -<a NAME="VariableItem" ID="VariableItem"></a> -<h2>VariableItem</h2> -<p> - Class implementing the data structure for variable items. -</p> -<h3>Derived from</h3> -QTreeWidgetItem -<h3>Class Attributes</h3> -<table> -<tr><td>Indicators</td></tr><tr><td>Type2Indicators</td></tr> -</table> -<h3>Class Methods</h3> -<table> -<tr> -<td><a href="#VariableItem.extractId">extractId</a></td> -<td>Class method to extract the ID string from a variable text.</td> +<td><a href="#VariablesModel.__buildTreePath">__buildTreePath</a></td> +<td>Private method to build up a path from the root to parent.</td> +</tr><tr> +<td><a href="#VariablesModel.__cleanupParentList">__cleanupParentList</a></td> +<td>Private method to remove items which are left over at the end of the child list.</td> +</tr><tr> +<td><a href="#VariablesModel.__findPendingItem">__findPendingItem</a></td> +<td>Private method to find the next item to request data from debugger.</td> +</tr><tr> +<td><a href="#VariablesModel.__findVariable">__findVariable</a></td> +<td>Private method to get to the given variable.</td> +</tr><tr> +<td><a href="#VariablesModel.clear">clear</a></td> +<td>Public method to clear the complete data model.</td> +</tr><tr> +<td><a href="#VariablesModel.columnCount">columnCount</a></td> +<td>Public method to get the column count.</td> +</tr><tr> +<td><a href="#VariablesModel.data">data</a></td> +<td>Public method get the role data of item.</td> +</tr><tr> +<td><a href="#VariablesModel.flags">flags</a></td> +<td>Public method to get the item flags.</td> +</tr><tr> +<td><a href="#VariablesModel.getMore">getMore</a></td> +<td>Public method to fetch the next variable from debugger.</td> </tr><tr> -<td><a href="#VariableItem.extractIndicators">extractIndicators</a></td> -<td>Class method to extract the indicator string from a variable text.</td> -</tr> -</table> -<h3>Methods</h3> -<table> -<tr> -<td><a href="#VariableItem.__init__">VariableItem</a></td> -<td>Constructor</td> +<td><a href="#VariablesModel.handlePreferencesChanged">handlePreferencesChanged</a></td> +<td>Public slot to handle the preferencesChanged signal.</td> +</tr><tr> +<td><a href="#VariablesModel.hasChildren">hasChildren</a></td> +<td>Public method to get a flag if parent has children.</td> </tr><tr> -<td><a href="#VariableItem._buildKey">_buildKey</a></td> -<td>Protected method to build the access key for the variable.</td> +<td><a href="#VariablesModel.headerData">headerData</a></td> +<td>Public method get the header names.</td> </tr><tr> -<td><a href="#VariableItem.attachDummy">attachDummy</a></td> -<td>Public method to attach a dummy sub item to allow for lazy population.</td> +<td><a href="#VariablesModel.index">index</a></td> +<td>Public method to get the index of item at row:column of parent.</td> </tr><tr> -<td><a href="#VariableItem.collapse">collapse</a></td> -<td>Public method to collapse the item.</td> +<td><a href="#VariablesModel.parent">parent</a></td> +<td>Public method to get the parent of the given child.</td> </tr><tr> -<td><a href="#VariableItem.data">data</a></td> -<td>Public method to return the data for the requested role.</td> -</tr><tr> -<td><a href="#VariableItem.deleteChildren">deleteChildren</a></td> -<td>Public method to delete all children (cleaning the subtree).</td> +<td><a href="#VariablesModel.resetModifiedMarker">resetModifiedMarker</a></td> +<td>Public method to remove the modified marker from changed items.</td> </tr><tr> -<td><a href="#VariableItem.expand">expand</a></td> -<td>Public method to expand the item.</td> +<td><a href="#VariablesModel.rowCount">rowCount</a></td> +<td>Public method to get the row count.</td> </tr><tr> -<td><a href="#VariableItem.getId">getId</a></td> -<td>Public method to get the ID string.</td> +<td><a href="#VariablesModel.setExpanded">setExpanded</a></td> +<td>Public method to set the expanded state of item.</td> </tr><tr> -<td><a href="#VariableItem.getValue">getValue</a></td> -<td>Public method to return the value of the item.</td> +<td><a href="#VariablesModel.showVariables">showVariables</a></td> +<td>Public method to update the data model of variable in pathlist.</td> </tr> </table> <h3>Static Methods</h3> <table> <tr><td>None</td></tr> </table> -<a NAME="VariableItem.extractId" ID="VariableItem.extractId"></a> -<h4>VariableItem.extractId (class method)</h4> -<b>extractId</b>(<i>var</i>) +<a NAME="VariablesModel.__init__" ID="VariablesModel.__init__"></a> +<h4>VariablesModel (Constructor)</h4> +<b>VariablesModel</b>(<i>treeView, globalScope</i>) <p> - Class method to extract the ID string from a variable text. + Constructor </p><dl> -<dt><i>var</i> (str)</dt> +<dt><i>treeView</i> (VariablesViewer)</dt> +<dd> +QTreeView showing the data +</dd><dt><i>globalScope</i> (bool)</dt> <dd> -variable text +flag indicating global (True) or local (False) + variables +</dd> +</dl><a NAME="VariablesModel.__buildTreePath" ID="VariablesModel.__buildTreePath"></a> +<h4>VariablesModel.__buildTreePath</h4> +<b>__buildTreePath</b>(<i>parent</i>) +<p> + Private method to build up a path from the root to parent. +</p><dl> +<dt><i>parent</i> (VariableItem)</dt> +<dd> +item to build the path for </dd> </dl><dl> <dt>Returns:</dt> <dd> -tuple containing the variable text without ID and the ID string +list of names denoting the path from the root +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +tuple of str +</dd> +</dl><a NAME="VariablesModel.__cleanupParentList" ID="VariablesModel.__cleanupParentList"></a> +<h4>VariablesModel.__cleanupParentList</h4> +<b>__cleanupParentList</b>(<i>parent, parentIdx</i>) +<p> + Private method to remove items which are left over at the end of the + child list. +</p><dl> +<dt><i>parent</i> (VariableItem)</dt> +<dd> +to clean up +</dd><dt><i>parentIdx</i> (QModelIndex)</dt> +<dd> +the parent index as QModelIndex +</dd> +</dl><a NAME="VariablesModel.__findPendingItem" ID="VariablesModel.__findPendingItem"></a> +<h4>VariablesModel.__findPendingItem</h4> +<b>__findPendingItem</b>(<i>parent=None, pathlist=()</i>) +<p> + Private method to find the next item to request data from debugger. +</p><dl> +<dt><i>parent</i> (VariableItem)</dt> +<dd> +the model parent +</dd><dt><i>pathlist</i> (list of str)</dt> +<dd> +full path to the variable +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +next item index to request data from debugger +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QModelIndex +</dd> +</dl><a NAME="VariablesModel.__findVariable" ID="VariablesModel.__findVariable"></a> +<h4>VariablesModel.__findVariable</h4> +<b>__findVariable</b>(<i>pathlist</i>) +<p> + Private method to get to the given variable. +</p><dl> +<dt><i>pathlist</i> (list of str)</dt> +<dd> +full path to the variable +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +the found variable or None if it doesn't exist </dd> </dl><dl> <dt>Return Type:</dt> <dd> -tuple of two str +VariableItem or None </dd> -</dl><a NAME="VariableItem.extractIndicators" ID="VariableItem.extractIndicators"></a> -<h4>VariableItem.extractIndicators (class method)</h4> -<b>extractIndicators</b>(<i>var</i>) +</dl><a NAME="VariablesModel.clear" ID="VariablesModel.clear"></a> +<h4>VariablesModel.clear</h4> +<b>clear</b>(<i>reset=False</i>) +<p> + Public method to clear the complete data model. +</p><dl> +<dt><i>reset</i> (bool)</dt> +<dd> +flag to clear the expanded keys also +</dd> +</dl><a NAME="VariablesModel.columnCount" ID="VariablesModel.columnCount"></a> +<h4>VariablesModel.columnCount</h4> +<b>columnCount</b>(<i>parent=QModelIndex()</i>) <p> - Class method to extract the indicator string from a variable text. + Public method to get the column count. </p><dl> -<dt><i>var</i> (str)</dt> +<dt><i>parent</i> (QModelIndex)</dt> +<dd> +the model parent +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +number of columns +</dd> +</dl><dl> +<dt>Return Type:</dt> <dd> -variable text +int +</dd> +</dl><a NAME="VariablesModel.data" ID="VariablesModel.data"></a> +<h4>VariablesModel.data</h4> +<b>data</b>(<i>index, role=Qt.DisplayRole</i>) +<p> + Public method get the role data of item. +</p><dl> +<dt><i>index</i> (QModelIndex)</dt> +<dd> +the model index +</dd><dt><i>role</i> (QtCore.Qt.ItemDataRole)</dt> +<dd> +the requested data role </dd> </dl><dl> <dt>Returns:</dt> <dd> -tuple containing the variable text without indicators and the - indicator string +role data of item +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +Any +</dd> +</dl><a NAME="VariablesModel.flags" ID="VariablesModel.flags"></a> +<h4>VariablesModel.flags</h4> +<b>flags</b>(<i>index</i>) +<p> + Public method to get the item flags. +</p><dl> +<dt><i>index</i> (QModelIndex)</dt> +<dd> +of item +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +item flags +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QtCore.Qt.ItemFlag +</dd> +</dl><a NAME="VariablesModel.getMore" ID="VariablesModel.getMore"></a> +<h4>VariablesModel.getMore</h4> +<b>getMore</b>(<i></i>) +<p> + Public method to fetch the next variable from debugger. +</p><a NAME="VariablesModel.handlePreferencesChanged" ID="VariablesModel.handlePreferencesChanged"></a> +<h4>VariablesModel.handlePreferencesChanged</h4> +<b>handlePreferencesChanged</b>(<i></i>) +<p> + Public slot to handle the preferencesChanged signal. +</p><a NAME="VariablesModel.hasChildren" ID="VariablesModel.hasChildren"></a> +<h4>VariablesModel.hasChildren</h4> +<b>hasChildren</b>(<i>parent=QModelIndex()</i>) +<p> + Public method to get a flag if parent has children. +</p><dl> +<dt><i>parent</i> (QModelIndex)</dt> +<dd> +the model parent +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating parent has children </dd> </dl><dl> <dt>Return Type:</dt> <dd> -tuple of two str +bool </dd> -</dl><a NAME="VariableItem.__init__" ID="VariableItem.__init__"></a> -<h4>VariableItem (Constructor)</h4> -<b>VariableItem</b>(<i>parent, dvar, dvalue, dtype</i>) +</dl><a NAME="VariablesModel.headerData" ID="VariablesModel.headerData"></a> +<h4>VariablesModel.headerData</h4> +<b>headerData</b>(<i>section, orientation, role=Qt.DisplayRole</i>) <p> - Constructor + Public method get the header names. </p><dl> -<dt><i>parent</i></dt> +<dt><i>section</i> (int)</dt> +<dd> +the header section (row/coulumn) +</dd><dt><i>orientation</i> (QtCore.Qt.Orientation)</dt> <dd> -reference to the parent item -</dd><dt><i>dvar</i></dt> +the header's orientation +</dd><dt><i>role</i> (QtCore.Qt.ItemDataRole)</dt> +<dd> +the requested data role +</dd> +</dl><dl> +<dt>Returns:</dt> <dd> -variable name (string) -</dd><dt><i>dvalue</i></dt> -<dd> -value string (string) -</dd><dt><i>dtype</i></dt> +header name +</dd> +</dl><dl> +<dt>Return Type:</dt> <dd> -type string (string) +str or None </dd> -</dl><a NAME="VariableItem._buildKey" ID="VariableItem._buildKey"></a> -<h4>VariableItem._buildKey</h4> -<b>_buildKey</b>(<i></i>) +</dl><a NAME="VariablesModel.index" ID="VariablesModel.index"></a> +<h4>VariablesModel.index</h4> +<b>index</b>(<i>row, column, parent=QModelIndex()</i>) <p> - Protected method to build the access key for the variable. + Public method to get the index of item at row:column of parent. </p><dl> +<dt><i>row</i> (int)</dt> +<dd> +number of rows +</dd><dt><i>column</i> (int)</dt> +<dd> +number of columns +</dd><dt><i>parent</i> (QModelIndex)</dt> +<dd> +the model parent +</dd> +</dl><dl> <dt>Returns:</dt> <dd> -access key +new model index for child +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QModelIndex +</dd> +</dl><a NAME="VariablesModel.parent" ID="VariablesModel.parent"></a> +<h4>VariablesModel.parent</h4> +<b>parent</b>(<i>child</i>) +<p> + Public method to get the parent of the given child. +</p><dl> +<dt><i>child</i> (QModelIndex)</dt> +<dd> +the model child node +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +new model index for parent +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QModelIndex +</dd> +</dl><a NAME="VariablesModel.resetModifiedMarker" ID="VariablesModel.resetModifiedMarker"></a> +<h4>VariablesModel.resetModifiedMarker</h4> +<b>resetModifiedMarker</b>(<i>parentIdx=QModelIndex(), pathlist=()</i>) +<p> + Public method to remove the modified marker from changed items. +</p><dl> +<dt><i>parentIdx</i> (QModelIndex)</dt> +<dd> +item to reset marker +</dd><dt><i>pathlist</i> (list of str)</dt> +<dd> +full path to the variable +</dd> +</dl><a NAME="VariablesModel.rowCount" ID="VariablesModel.rowCount"></a> +<h4>VariablesModel.rowCount</h4> +<b>rowCount</b>(<i>parent=QModelIndex()</i>) +<p> + Public method to get the row count. +</p><dl> +<dt><i>parent</i> (QModelIndex)</dt> +<dd> +the model parent +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +number of rows </dd> </dl><dl> <dt>Return Type:</dt> <dd> -str +int +</dd> +</dl><a NAME="VariablesModel.setExpanded" ID="VariablesModel.setExpanded"></a> +<h4>VariablesModel.setExpanded</h4> +<b>setExpanded</b>(<i>index, state</i>) +<p> + Public method to set the expanded state of item. +</p><dl> +<dt><i>index</i> (QModelIndex)</dt> +<dd> +item to change expanded state +</dd><dt><i>state</i> (bool)</dt> +<dd> +state of the item </dd> -</dl><a NAME="VariableItem.attachDummy" ID="VariableItem.attachDummy"></a> -<h4>VariableItem.attachDummy</h4> -<b>attachDummy</b>(<i></i>) +</dl><a NAME="VariablesModel.showVariables" ID="VariablesModel.showVariables"></a> +<h4>VariablesModel.showVariables</h4> +<b>showVariables</b>(<i>vlist, frmnr, pathlist=None</i>) +<p> + Public method to update the data model of variable in pathlist. +</p><dl> +<dt><i>vlist</i> (list of str)</dt> +<dd> +the list of variables to be displayed. Each + list entry is a tuple of three values. + <ul> + <li>the variable name (string)</li> + <li>the variables type (string)</li> + <li>the variables value (string)</li> + </ul> +</dd><dt><i>frmnr</i> (int)</dt> +<dd> +frame number (0 is the current frame) +</dd><dt><i>pathlist</i> (list of str)</dt> +<dd> +full path to the variable +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="VariablesProxyModel" ID="VariablesProxyModel"></a> +<h2>VariablesProxyModel</h2> <p> - Public method to attach a dummy sub item to allow for lazy population. -</p><a NAME="VariableItem.collapse" ID="VariableItem.collapse"></a> -<h4>VariableItem.collapse</h4> -<b>collapse</b>(<i></i>) + Class for handling the sort operations. +</p> +<h3>Derived from</h3> +QSortFilterProxyModel +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#VariablesProxyModel.__init__">VariablesProxyModel</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#VariablesProxyModel.hasChildren">hasChildren</a></td> +<td>Public method to get a flag if parent has children.</td> +</tr><tr> +<td><a href="#VariablesProxyModel.setExpanded">setExpanded</a></td> +<td>Public slot to get a flag if parent has children.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="VariablesProxyModel.__init__" ID="VariablesProxyModel.__init__"></a> +<h4>VariablesProxyModel (Constructor)</h4> +<b>VariablesProxyModel</b>(<i>parent=None</i>) <p> - Public method to collapse the item. + Constructor +</p><dl> +<dt><i>parent</i> (QModelIndex)</dt> +<dd> +the parent model index +</dd> +</dl><a NAME="VariablesProxyModel.hasChildren" ID="VariablesProxyModel.hasChildren"></a> +<h4>VariablesProxyModel.hasChildren</h4> +<b>hasChildren</b>(<i>parent</i>) +<p> + Public method to get a flag if parent has children. </p><p> - Note: This is just a do nothing and should be overwritten. -</p><a NAME="VariableItem.data" ID="VariableItem.data"></a> -<h4>VariableItem.data</h4> -<b>data</b>(<i>column, role</i>) -<p> - Public method to return the data for the requested role. -</p><p> - This implementation changes the original behavior in a way, that the - display data is returned as the tooltip for column 1. + The given model index has to be transformed to the underlying source + model to get the correct result. </p><dl> -<dt><i>column</i></dt> +<dt><i>parent</i> (QModelIndex)</dt> <dd> -column number (integer) -</dd><dt><i>role</i></dt> -<dd> -data role (Qt.ItemDataRole) +the model parent </dd> </dl><dl> <dt>Returns:</dt> <dd> -requested data -</dd> -</dl><a NAME="VariableItem.deleteChildren" ID="VariableItem.deleteChildren"></a> -<h4>VariableItem.deleteChildren</h4> -<b>deleteChildren</b>(<i></i>) -<p> - Public method to delete all children (cleaning the subtree). -</p><a NAME="VariableItem.expand" ID="VariableItem.expand"></a> -<h4>VariableItem.expand</h4> -<b>expand</b>(<i></i>) -<p> - Public method to expand the item. -</p><p> - Note: This is just a do nothing and should be overwritten. -</p><a NAME="VariableItem.getId" ID="VariableItem.getId"></a> -<h4>VariableItem.getId</h4> -<b>getId</b>(<i></i>) -<p> - Public method to get the ID string. -</p><dl> -<dt>Returns:</dt> -<dd> -ID string +flag if parent has children </dd> </dl><dl> <dt>Return Type:</dt> <dd> -str +bool </dd> -</dl><a NAME="VariableItem.getValue" ID="VariableItem.getValue"></a> -<h4>VariableItem.getValue</h4> -<b>getValue</b>(<i></i>) +</dl><a NAME="VariablesProxyModel.setExpanded" ID="VariablesProxyModel.setExpanded"></a> +<h4>VariablesProxyModel.setExpanded</h4> +<b>setExpanded</b>(<i>index, state</i>) <p> - Public method to return the value of the item. + Public slot to get a flag if parent has children. +</p><p> + The given model index has to be transformed to the underlying source + model to get the correct result. </p><dl> -<dt>Returns:</dt> +<dt><i>index</i> (QModelIndex)</dt> <dd> -value of the item (string) +item to change expanded state +</dd><dt><i>state</i> (bool)</dt> +<dd> +state of the item </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -428,20 +689,28 @@ <a NAME="VariablesViewer" ID="VariablesViewer"></a> <h2>VariablesViewer</h2> <p> - Class implementing the variables viewer widget. + Class implementing the variables viewer view. </p><p> - This widget is used to display the variables of the program being + This view is used to display the variables of the program being debugged in a tree. Compound types will be shown with their main entry first. Once the subtree has been expanded, the individual entries will be shown. Double clicking an entry will + expand or collapse the item, if it has children and the double click + was performed on the first column of the tree, otherwise it'll popup a dialog showing the variables parameters in a more readable form. This is especially useful for lengthy strings. </p><p> - This widget has two modes for displaying the global and the local + This view has two modes for displaying the global and the local variables. -</p> +</p><h3>Signals</h3> +<dl> +<dt>preferencesChanged()</dt> +<dd> +to inform model about new background colours +</dd> +</dl> <h3>Derived from</h3> -QTreeWidget +QTreeView <h3>Class Attributes</h3> <table> <tr><td>None</td></tr> @@ -456,39 +725,30 @@ <td><a href="#VariablesViewer.__init__">VariablesViewer</a></td> <td>Constructor</td> </tr><tr> -<td><a href="#VariablesViewer.__addItem">__addItem</a></td> -<td>Private method used to add an item to the list.</td> -</tr><tr> -<td><a href="#VariablesViewer.__buildTreePath">__buildTreePath</a></td> -<td>Private method to build up a path from the top to an item.</td> +<td><a href="#VariablesViewer.__collapseChildren">__collapseChildren</a></td> +<td>Private slot to collapse all child items of current parent.</td> </tr><tr> <td><a href="#VariablesViewer.__configure">__configure</a></td> <td>Private method to open the configuration dialog.</td> </tr><tr> +<td><a href="#VariablesViewer.__configureFilter">__configureFilter</a></td> +<td>Private method to open the variables filter dialog.</td> +</tr><tr> <td><a href="#VariablesViewer.__createPopupMenus">__createPopupMenus</a></td> <td>Private method to generate the popup menus.</td> </tr><tr> -<td><a href="#VariablesViewer.__expandItemSignal">__expandItemSignal</a></td> -<td>Private slot to handle the expanded signal.</td> -</tr><tr> -<td><a href="#VariablesViewer.__findItem">__findItem</a></td> -<td>Private method to search for an item.</td> +<td><a href="#VariablesViewer.__expandChildren">__expandChildren</a></td> +<td>Private slot to expand all child items of current parent.</td> </tr><tr> -<td><a href="#VariablesViewer.__generateItem">__generateItem</a></td> -<td>Private method used to generate a VariableItem.</td> +<td><a href="#VariablesViewer.__itemDoubleClicked">__itemDoubleClicked</a></td> +<td>Private method called if an item was double clicked.</td> </tr><tr> -<td><a href="#VariablesViewer.__getDispType">__getDispType</a></td> -<td>Private method used to get the display string for type vtype.</td> +<td><a href="#VariablesViewer.__mdlRequestExpand">__mdlRequestExpand</a></td> +<td>Private method to inform the view about items to be expand.</td> </tr><tr> <td><a href="#VariablesViewer.__refreshView">__refreshView</a></td> <td>Private slot to refresh the view.</td> </tr><tr> -<td><a href="#VariablesViewer.__resort">__resort</a></td> -<td>Private method to resort the tree.</td> -</tr><tr> -<td><a href="#VariablesViewer.__sectionClicked">__sectionClicked</a></td> -<td>Private method handling a click onto a header section.</td> -</tr><tr> <td><a href="#VariablesViewer.__showContextMenu">__showContextMenu</a></td> <td>Private slot to show the context menu.</td> </tr><tr> @@ -498,23 +758,20 @@ <td><a href="#VariablesViewer.__showVariableDetails">__showVariableDetails</a></td> <td>Private method to show details about a variable.</td> </tr><tr> -<td><a href="#VariablesViewer.collapseItem">collapseItem</a></td> -<td>Public slot to handle the collapsed signal.</td> -</tr><tr> -<td><a href="#VariablesViewer.expandItem">expandItem</a></td> -<td>Public slot to handle the expanded signal.</td> -</tr><tr> <td><a href="#VariablesViewer.handleResetUI">handleResetUI</a></td> <td>Public method to reset the VariablesViewer.</td> </tr><tr> -<td><a href="#VariablesViewer.mouseDoubleClickEvent">mouseDoubleClickEvent</a></td> -<td>Protected method of QAbstractItemView.</td> +<td><a href="#VariablesViewer.resizeEvent">resizeEvent</a></td> +<td>Protected slot informing about the widget size change.</td> </tr><tr> <td><a href="#VariablesViewer.showVariable">showVariable</a></td> <td>Public method to show variables in a list.</td> </tr><tr> <td><a href="#VariablesViewer.showVariables">showVariables</a></td> <td>Public method to show variables in a list.</td> +</tr><tr> +<td><a href="#VariablesViewer.verticalScrollbarValueChanged">verticalScrollbarValueChanged</a></td> +<td>Public slot informing about the scrollbar change.</td> </tr> </table> <h3>Static Methods</h3> @@ -527,180 +784,76 @@ <p> Constructor </p><dl> -<dt><i>viewer</i></dt> +<dt><i>viewer</i> (DebugViewer)</dt> <dd> -reference to the debug viewer object (DebugViewer) -</dd><dt><i>globalScope</i></dt> +reference to the debug viewer object +</dd><dt><i>globalScope</i> (bool)</dt> <dd> flag indicating global (True) or local (False) variables -</dd><dt><i>parent</i></dt> -<dd> -the parent (QWidget) -</dd> -</dl><a NAME="VariablesViewer.__addItem" ID="VariablesViewer.__addItem"></a> -<h4>VariablesViewer.__addItem</h4> -<b>__addItem</b>(<i>parent, vtype, var, value</i>) -<p> - Private method used to add an item to the list. -</p><p> - If the item is of a type with subelements (i.e. list, dictionary, - tuple), these subelements are added by calling this method recursively. -</p><dl> -<dt><i>parent</i></dt> -<dd> -the parent of the item to be added - (QTreeWidgetItem or None) -</dd><dt><i>vtype</i></dt> -<dd> -the type of the item to be added - (string) -</dd><dt><i>var</i></dt> +</dd><dt><i>parent</i> (QWidget)</dt> <dd> -the variable name (string) -</dd><dt><i>value</i></dt> -<dd> -the value string (string) -</dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -The item that was added to the listview (QTreeWidgetItem). +the parent </dd> -</dl><a NAME="VariablesViewer.__buildTreePath" ID="VariablesViewer.__buildTreePath"></a> -<h4>VariablesViewer.__buildTreePath</h4> -<b>__buildTreePath</b>(<i>itm</i>) +</dl><a NAME="VariablesViewer.__collapseChildren" ID="VariablesViewer.__collapseChildren"></a> +<h4>VariablesViewer.__collapseChildren</h4> +<b>__collapseChildren</b>(<i></i>) <p> - Private method to build up a path from the top to an item. -</p><dl> -<dt><i>itm</i></dt> -<dd> -item to build the path for (QTreeWidgetItem) -</dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -list of names denoting the path from the top (list of strings) -</dd> -</dl><a NAME="VariablesViewer.__configure" ID="VariablesViewer.__configure"></a> + Private slot to collapse all child items of current parent. +</p><a NAME="VariablesViewer.__configure" ID="VariablesViewer.__configure"></a> <h4>VariablesViewer.__configure</h4> <b>__configure</b>(<i></i>) <p> Private method to open the configuration dialog. +</p><a NAME="VariablesViewer.__configureFilter" ID="VariablesViewer.__configureFilter"></a> +<h4>VariablesViewer.__configureFilter</h4> +<b>__configureFilter</b>(<i></i>) +<p> + Private method to open the variables filter dialog. </p><a NAME="VariablesViewer.__createPopupMenus" ID="VariablesViewer.__createPopupMenus"></a> <h4>VariablesViewer.__createPopupMenus</h4> <b>__createPopupMenus</b>(<i></i>) <p> Private method to generate the popup menus. -</p><a NAME="VariablesViewer.__expandItemSignal" ID="VariablesViewer.__expandItemSignal"></a> -<h4>VariablesViewer.__expandItemSignal</h4> -<b>__expandItemSignal</b>(<i>parentItem</i>) -<p> - Private slot to handle the expanded signal. -</p><dl> -<dt><i>parentItem</i></dt> -<dd> -reference to the item being expanded - (QTreeWidgetItem) -</dd> -</dl><a NAME="VariablesViewer.__findItem" ID="VariablesViewer.__findItem"></a> -<h4>VariablesViewer.__findItem</h4> -<b>__findItem</b>(<i>slist, column, node=None</i>) +</p><a NAME="VariablesViewer.__expandChildren" ID="VariablesViewer.__expandChildren"></a> +<h4>VariablesViewer.__expandChildren</h4> +<b>__expandChildren</b>(<i></i>) <p> - Private method to search for an item. -</p><p> - It is used to find a specific item in column, - that is a child of node. If node is None, a child of the - QTreeWidget is searched. -</p><dl> -<dt><i>slist</i></dt> -<dd> -searchlist (list of strings) -</dd><dt><i>column</i></dt> -<dd> -index of column to search in (int) -</dd><dt><i>node</i></dt> -<dd> -start point of the search -</dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -the found item or None -</dd> -</dl><a NAME="VariablesViewer.__generateItem" ID="VariablesViewer.__generateItem"></a> -<h4>VariablesViewer.__generateItem</h4> -<b>__generateItem</b>(<i>parent, dvar, dvalue, dtype, isSpecial=False</i>) + Private slot to expand all child items of current parent. +</p><a NAME="VariablesViewer.__itemDoubleClicked" ID="VariablesViewer.__itemDoubleClicked"></a> +<h4>VariablesViewer.__itemDoubleClicked</h4> +<b>__itemDoubleClicked</b>(<i>index</i>) <p> - Private method used to generate a VariableItem. + Private method called if an item was double clicked. </p><dl> -<dt><i>parent</i></dt> -<dd> -parent of the item to be generated -</dd><dt><i>dvar</i></dt> +<dt><i>index</i> (QModelIndex)</dt> <dd> -variable name (string) -</dd><dt><i>dvalue</i></dt> -<dd> -value string (string) -</dd><dt><i>dtype</i></dt> -<dd> -type string (string) -</dd><dt><i>isSpecial</i></dt> -<dd> -flag indicating that a special node should be - generated (boolean) +the double clicked item </dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -The item that was generated (VariableItem). -</dd> -</dl><a NAME="VariablesViewer.__getDispType" ID="VariablesViewer.__getDispType"></a> -<h4>VariablesViewer.__getDispType</h4> -<b>__getDispType</b>(<i>vtype</i>) +</dl><a NAME="VariablesViewer.__mdlRequestExpand" ID="VariablesViewer.__mdlRequestExpand"></a> +<h4>VariablesViewer.__mdlRequestExpand</h4> +<b>__mdlRequestExpand</b>(<i>modelIndex</i>) <p> - Private method used to get the display string for type vtype. + Private method to inform the view about items to be expand. </p><dl> -<dt><i>vtype</i></dt> +<dt><i>modelIndex</i> (QModelIndex)</dt> <dd> -the type, the display string should be looked up for - (string) -</dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -displaystring (string) +the model index </dd> </dl><a NAME="VariablesViewer.__refreshView" ID="VariablesViewer.__refreshView"></a> <h4>VariablesViewer.__refreshView</h4> <b>__refreshView</b>(<i></i>) <p> Private slot to refresh the view. -</p><a NAME="VariablesViewer.__resort" ID="VariablesViewer.__resort"></a> -<h4>VariablesViewer.__resort</h4> -<b>__resort</b>(<i>parent=None</i>) -<p> - Private method to resort the tree. -</p><dl> -<dt><i>parent</i> (QTreeWidgetItem)</dt> -<dd> -reference to a parent item -</dd> -</dl><a NAME="VariablesViewer.__sectionClicked" ID="VariablesViewer.__sectionClicked"></a> -<h4>VariablesViewer.__sectionClicked</h4> -<b>__sectionClicked</b>(<i></i>) -<p> - Private method handling a click onto a header section. </p><a NAME="VariablesViewer.__showContextMenu" ID="VariablesViewer.__showContextMenu"></a> <h4>VariablesViewer.__showContextMenu</h4> <b>__showContextMenu</b>(<i>coord</i>) <p> Private slot to show the context menu. </p><dl> -<dt><i>coord</i></dt> +<dt><i>coord</i> (QPoint)</dt> <dd> -the position of the mouse pointer (QPoint) +the position of the mouse pointer </dd> </dl><a NAME="VariablesViewer.__showDetails" ID="VariablesViewer.__showDetails"></a> <h4>VariablesViewer.__showDetails</h4> @@ -709,53 +862,28 @@ Private slot to show details about the selected variable. </p><a NAME="VariablesViewer.__showVariableDetails" ID="VariablesViewer.__showVariableDetails"></a> <h4>VariablesViewer.__showVariableDetails</h4> -<b>__showVariableDetails</b>(<i>itm</i>) +<b>__showVariableDetails</b>(<i>index</i>) <p> Private method to show details about a variable. </p><dl> -<dt><i>itm</i></dt> +<dt><i>index</i> (QModelIndex)</dt> <dd> reference to the variable item </dd> -</dl><a NAME="VariablesViewer.collapseItem" ID="VariablesViewer.collapseItem"></a> -<h4>VariablesViewer.collapseItem</h4> -<b>collapseItem</b>(<i>parentItem</i>) -<p> - Public slot to handle the collapsed signal. -</p><dl> -<dt><i>parentItem</i></dt> -<dd> -reference to the item being collapsed - (QTreeWidgetItem) -</dd> -</dl><a NAME="VariablesViewer.expandItem" ID="VariablesViewer.expandItem"></a> -<h4>VariablesViewer.expandItem</h4> -<b>expandItem</b>(<i>parentItem</i>) -<p> - Public slot to handle the expanded signal. -</p><dl> -<dt><i>parentItem</i></dt> -<dd> -reference to the item being expanded - (QTreeWidgetItem) -</dd> </dl><a NAME="VariablesViewer.handleResetUI" ID="VariablesViewer.handleResetUI"></a> <h4>VariablesViewer.handleResetUI</h4> <b>handleResetUI</b>(<i></i>) <p> Public method to reset the VariablesViewer. -</p><a NAME="VariablesViewer.mouseDoubleClickEvent" ID="VariablesViewer.mouseDoubleClickEvent"></a> -<h4>VariablesViewer.mouseDoubleClickEvent</h4> -<b>mouseDoubleClickEvent</b>(<i>mouseEvent</i>) +</p><a NAME="VariablesViewer.resizeEvent" ID="VariablesViewer.resizeEvent"></a> +<h4>VariablesViewer.resizeEvent</h4> +<b>resizeEvent</b>(<i>event</i>) <p> - Protected method of QAbstractItemView. -</p><p> - Reimplemented to disable expanding/collapsing of items when - double-clicking. Instead the double-clicked entry is opened. + Protected slot informing about the widget size change. </p><dl> -<dt><i>mouseEvent</i></dt> +<dt><i>event</i> (QResizeEvent)</dt> <dd> -the mouse event object (QMouseEvent) +information </dd> </dl><a NAME="VariablesViewer.showVariable" ID="VariablesViewer.showVariable"></a> <h4>VariablesViewer.showVariable</h4> @@ -763,11 +891,11 @@ <p> Public method to show variables in a list. </p><dl> -<dt><i>vlist</i></dt> +<dt><i>vlist</i> (list)</dt> <dd> the list of subitems to be displayed. The first element gives the path of the - parent variable. Each other listentry is + parent variable. Each other list entry is a tuple of three values. <ul> <li>the variable name (string)</li> @@ -781,18 +909,28 @@ <p> Public method to show variables in a list. </p><dl> -<dt><i>vlist</i></dt> +<dt><i>vlist</i> (list)</dt> <dd> the list of variables to be displayed. Each - listentry is a tuple of three values. + list entry is a tuple of three values. <ul> <li>the variable name (string)</li> <li>the variables type (string)</li> <li>the variables value (string)</li> </ul> -</dd><dt><i>frmnr</i></dt> +</dd><dt><i>frmnr</i> (int)</dt> <dd> -frame number (0 is the current frame) (int) +frame number (0 is the current frame) +</dd> +</dl><a NAME="VariablesViewer.verticalScrollbarValueChanged" ID="VariablesViewer.verticalScrollbarValueChanged"></a> +<h4>VariablesViewer.verticalScrollbarValueChanged</h4> +<b>verticalScrollbarValueChanged</b>(<i>value</i>) +<p> + Public slot informing about the scrollbar change. +</p><dl> +<dt><i>value</i> (int)</dt> +<dd> +current value of the vertical scrollbar </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.PipInterface.Pip.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.PipInterface.Pip.html Mon May 20 22:44:12 2019 +0200 @@ -340,10 +340,16 @@ </dd> </dl><a NAME="Pip.getVirtualenvNames" ID="Pip.getVirtualenvNames"></a> <h4>Pip.getVirtualenvNames</h4> -<b>getVirtualenvNames</b>(<i></i>) +<b>getVirtualenvNames</b>(<i>noRemote=False</i>) <p> Public method to get a sorted list of virtual environment names. </p><dl> +<dt><i>noRemote</i> (bool)</dt> +<dd> +flag indicating to exclude environments for remote + debugging +</dd> +</dl><dl> <dt>Returns:</dt> <dd> sorted list of virtual environment names
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.html Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,141 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog</h1> +<p> +Module implementing a dialog to select the heads to be closed. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#HgCloseHeadSelectionDialog">HgCloseHeadSelectionDialog</a></td> +<td>Class implementing a dialog to select the heads to be closed.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="HgCloseHeadSelectionDialog" ID="HgCloseHeadSelectionDialog"></a> +<h2>HgCloseHeadSelectionDialog</h2> +<p> + Class implementing a dialog to select the heads to be closed. +</p> +<h3>Derived from</h3> +QDialog, Ui_HgCloseHeadSelectionDialog +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#HgCloseHeadSelectionDialog.__init__">HgCloseHeadSelectionDialog</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#HgCloseHeadSelectionDialog.__getHeads">__getHeads</a></td> +<td>Private method to get the open heads.</td> +</tr><tr> +<td><a href="#HgCloseHeadSelectionDialog.getData">getData</a></td> +<td>Public method to retrieve the entered data.</td> +</tr><tr> +<td><a href="#HgCloseHeadSelectionDialog.on_headsList_itemSelectionChanged">on_headsList_itemSelectionChanged</a></td> +<td>Private slot handling changes of the selection.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="HgCloseHeadSelectionDialog.__init__" ID="HgCloseHeadSelectionDialog.__init__"></a> +<h4>HgCloseHeadSelectionDialog (Constructor)</h4> +<b>HgCloseHeadSelectionDialog</b>(<i>vcs, ppath, parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>vcs</i> (Hg)</dt> +<dd> +reference to the VCS object +</dd><dt><i>ppath</i> (str)</dt> +<dd> +directory containing the repository +</dd><dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget +</dd> +</dl><a NAME="HgCloseHeadSelectionDialog.__getHeads" ID="HgCloseHeadSelectionDialog.__getHeads"></a> +<h4>HgCloseHeadSelectionDialog.__getHeads</h4> +<b>__getHeads</b>(<i>vcs, ppath</i>) +<p> + Private method to get the open heads. +</p><dl> +<dt><i>vcs</i> (Hg)</dt> +<dd> +reference to the VCS object +</dd><dt><i>ppath</i> (str)</dt> +<dd> +directory containing the repository +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +list of tuples containing the revision and the corresponding + branch name +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of tuples of (str, str) +</dd> +</dl><a NAME="HgCloseHeadSelectionDialog.getData" ID="HgCloseHeadSelectionDialog.getData"></a> +<h4>HgCloseHeadSelectionDialog.getData</h4> +<b>getData</b>(<i></i>) +<p> + Public method to retrieve the entered data. +</p><dl> +<dt>Returns:</dt> +<dd> +tuple containing a list of selected revisions and the commit + message +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +tuple of (list of str, str) +</dd> +</dl><a NAME="HgCloseHeadSelectionDialog.on_headsList_itemSelectionChanged" ID="HgCloseHeadSelectionDialog.on_headsList_itemSelectionChanged"></a> +<h4>HgCloseHeadSelectionDialog.on_headsList_itemSelectionChanged</h4> +<b>on_headsList_itemSelectionChanged</b>(<i></i>) +<p> + Private slot handling changes of the selection. +</p> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.html Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,128 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper</h1> +<p> +Module implementing the closehead extension project helper. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#CloseheadProjectHelper">CloseheadProjectHelper</a></td> +<td>Class implementing the closehead extension project helper.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="CloseheadProjectHelper" ID="CloseheadProjectHelper"></a> +<h2>CloseheadProjectHelper</h2> +<p> + Class implementing the closehead extension project helper. +</p> +<h3>Derived from</h3> +HgExtensionProjectHelper +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#CloseheadProjectHelper.__init__">CloseheadProjectHelper</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#CloseheadProjectHelper.__hgClosehead">__hgClosehead</a></td> +<td>Private slot used to close arbitrary heads.</td> +</tr><tr> +<td><a href="#CloseheadProjectHelper.initActions">initActions</a></td> +<td>Public method to generate the action objects.</td> +</tr><tr> +<td><a href="#CloseheadProjectHelper.initMenu">initMenu</a></td> +<td>Public method to generate the extension menu.</td> +</tr><tr> +<td><a href="#CloseheadProjectHelper.menuTitle">menuTitle</a></td> +<td>Public method to get the menu title.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="CloseheadProjectHelper.__init__" ID="CloseheadProjectHelper.__init__"></a> +<h4>CloseheadProjectHelper (Constructor)</h4> +<b>CloseheadProjectHelper</b>(<i></i>) +<p> + Constructor +</p><a NAME="CloseheadProjectHelper.__hgClosehead" ID="CloseheadProjectHelper.__hgClosehead"></a> +<h4>CloseheadProjectHelper.__hgClosehead</h4> +<b>__hgClosehead</b>(<i></i>) +<p> + Private slot used to close arbitrary heads. +</p><a NAME="CloseheadProjectHelper.initActions" ID="CloseheadProjectHelper.initActions"></a> +<h4>CloseheadProjectHelper.initActions</h4> +<b>initActions</b>(<i></i>) +<p> + Public method to generate the action objects. +</p><a NAME="CloseheadProjectHelper.initMenu" ID="CloseheadProjectHelper.initMenu"></a> +<h4>CloseheadProjectHelper.initMenu</h4> +<b>initMenu</b>(<i>mainMenu</i>) +<p> + Public method to generate the extension menu. +</p><dl> +<dt><i>mainMenu</i> (QMenu)</dt> +<dd> +reference to the main menu +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +populated menu (QMenu) +</dd> +</dl><a NAME="CloseheadProjectHelper.menuTitle" ID="CloseheadProjectHelper.menuTitle"></a> +<h4>CloseheadProjectHelper.menuTitle</h4> +<b>menuTitle</b>(<i></i>) +<p> + Public method to get the menu title. +</p><dl> +<dt>Returns:</dt> +<dd> +title of the menu +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead.html Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,97 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead</h1> +<p> +Module implementing the closehead extension interface. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#Closehead">Closehead</a></td> +<td>Class implementing the strip extension interface.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="Closehead" ID="Closehead"></a> +<h2>Closehead</h2> +<p> + Class implementing the strip extension interface. +</p> +<h3>Derived from</h3> +HgExtension +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#Closehead.__init__">Closehead</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#Closehead.hgCloseheads">hgCloseheads</a></td> +<td>Public method to close arbitrary heads.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="Closehead.__init__" ID="Closehead.__init__"></a> +<h4>Closehead (Constructor)</h4> +<b>Closehead</b>(<i>vcs</i>) +<p> + Constructor +</p><dl> +<dt><i>vcs</i> (Hg)</dt> +<dd> +reference to the Mercurial vcs object +</dd> +</dl><a NAME="Closehead.hgCloseheads" ID="Closehead.hgCloseheads"></a> +<h4>Closehead.hgCloseheads</h4> +<b>hgCloseheads</b>(<i>name, revisions=None</i>) +<p> + Public method to close arbitrary heads. +</p><dl> +<dt><i>name</i> (str)</dt> +<dd> +file/directory name +</dd><dt><i>revisions</i> (str)</dt> +<dd> +revisions of branch heads to be closed +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html Mon May 20 22:44:12 2019 +0200 @@ -81,6 +81,9 @@ <td><a href="#HgLogBrowserDialog.__bundleActTriggered">__bundleActTriggered</a></td> <td>Private slot to create a changegroup file.</td> </tr><tr> +<td><a href="#HgLogBrowserDialog.__closeHeadsActTriggered">__closeHeadsActTriggered</a></td> +<td>Private slot to close the selected head revisions.</td> +</tr><tr> <td><a href="#HgLogBrowserDialog.__fetchActTriggered">__fetchActTriggered</a></td> <td>Private slot to fetch changes from a remote repository.</td> </tr><tr> @@ -117,6 +120,9 @@ <td><a href="#HgLogBrowserDialog.__getColor">__getColor</a></td> <td>Private method to get the (rotating) name of the color given an index.</td> </tr><tr> +<td><a href="#HgLogBrowserDialog.__getHeads">__getHeads</a></td> +<td>Private method to get the list of all heads.</td> +</tr><tr> <td><a href="#HgLogBrowserDialog.__getLogEntries">__getLogEntries</a></td> <td>Private method to retrieve log entries from the repository.</td> </tr><tr> @@ -325,19 +331,19 @@ </table> <a NAME="HgLogBrowserDialog.__init__" ID="HgLogBrowserDialog.__init__"></a> <h4>HgLogBrowserDialog (Constructor)</h4> -<b>HgLogBrowserDialog</b>(<i>vcs, mode="log", parent=None</i>) +<b>HgLogBrowserDialog</b>(<i>vcs, mode="", parent=None</i>) <p> Constructor </p><dl> -<dt><i>vcs</i></dt> +<dt><i>vcs</i> (Hg)</dt> <dd> reference to the vcs object -</dd><dt><i>mode</i></dt> +</dd><dt><i>mode</i> (str (one of log, full_log, incoming, outgoing))</dt> <dd> -mode of the dialog (string; one of log, incoming, outgoing) -</dd><dt><i>parent</i></dt> +mode of the dialog +</dd><dt><i>parent</i> (QWidget)</dt> <dd> -parent widget (QWidget) +parent widget </dd> </dl><a NAME="HgLogBrowserDialog.__actionMode" ID="HgLogBrowserDialog.__actionMode"></a> <h4>HgLogBrowserDialog.__actionMode</h4> @@ -402,6 +408,11 @@ <b>__bundleActTriggered</b>(<i></i>) <p> Private slot to create a changegroup file. +</p><a NAME="HgLogBrowserDialog.__closeHeadsActTriggered" ID="HgLogBrowserDialog.__closeHeadsActTriggered"></a> +<h4>HgLogBrowserDialog.__closeHeadsActTriggered</h4> +<b>__closeHeadsActTriggered</b>(<i></i>) +<p> + Private slot to close the selected head revisions. </p><a NAME="HgLogBrowserDialog.__fetchActTriggered" ID="HgLogBrowserDialog.__fetchActTriggered"></a> <h4>HgLogBrowserDialog.__fetchActTriggered</h4> <b>__fetchActTriggered</b>(<i></i>) @@ -485,41 +496,47 @@ </dd> </dl><a NAME="HgLogBrowserDialog.__generateIcon" ID="HgLogBrowserDialog.__generateIcon"></a> <h4>HgLogBrowserDialog.__generateIcon</h4> -<b>__generateIcon</b>(<i>column, color, bottomedges, topedges, dotColor, currentRev, closed</i>) +<b>__generateIcon</b>(<i>column, color, bottomedges, topedges, dotColor, currentRev, closed, isDraft</i>) <p> Private method to generate an icon containing the revision tree for the given data. </p><dl> -<dt><i>column</i></dt> +<dt><i>column</i> (int)</dt> <dd> -column index of the revision (integer) -</dd><dt><i>color</i></dt> +column index of the revision +</dd><dt><i>color</i> (int)</dt> <dd> -color of the node (integer) -</dd><dt><i>bottomedges</i></dt> +color of the node +</dd><dt><i>bottomedges</i> (list of tuples of (int, int, int))</dt> <dd> list of edges for the bottom of the node - (list of tuples of three integers) -</dd><dt><i>topedges</i></dt> +</dd><dt><i>topedges</i> (list of tuples of (int, int, int))</dt> <dd> list of edges for the top of the node - (list of tuples of three integers) -</dd><dt><i>dotColor</i></dt> +</dd><dt><i>dotColor</i> (QColor)</dt> <dd> -color to be used for the dot (QColor) -</dd><dt><i>currentRev</i></dt> +color to be used for the dot +</dd><dt><i>currentRev</i> (bool)</dt> <dd> flag indicating to draw the icon for the - current revision (boolean) -</dd><dt><i>closed</i></dt> + current revision +</dd><dt><i>closed</i> (bool)</dt> <dd> flag indicating to draw an icon for a closed - branch (boolean) + branch +</dd><dt><i>isDraft</i> (bool)</dt> +<dd> +flag indicating an entry of phase 'draft' </dd> </dl><dl> <dt>Returns:</dt> <dd> -icon for the node (QIcon) +icon for the node +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QIcon </dd> </dl><a NAME="HgLogBrowserDialog.__generateLogItem" ID="HgLogBrowserDialog.__generateLogItem"></a> <h4>HgLogBrowserDialog.__generateLogItem</h4> @@ -593,7 +610,12 @@ <dd> color name (string) </dd> -</dl><a NAME="HgLogBrowserDialog.__getLogEntries" ID="HgLogBrowserDialog.__getLogEntries"></a> +</dl><a NAME="HgLogBrowserDialog.__getHeads" ID="HgLogBrowserDialog.__getHeads"></a> +<h4>HgLogBrowserDialog.__getHeads</h4> +<b>__getHeads</b>(<i></i>) +<p> + Private method to get the list of all heads. +</p><a NAME="HgLogBrowserDialog.__getLogEntries" ID="HgLogBrowserDialog.__getLogEntries"></a> <h4>HgLogBrowserDialog.__getLogEntries</h4> <b>__getLogEntries</b>(<i>startRev=None, noEntries=0</i>) <p> @@ -1035,10 +1057,16 @@ </dd> </dl><a NAME="HgLogBrowserDialog.on_refreshButton_clicked" ID="HgLogBrowserDialog.on_refreshButton_clicked"></a> <h4>HgLogBrowserDialog.on_refreshButton_clicked</h4> -<b>on_refreshButton_clicked</b>(<i></i>) +<b>on_refreshButton_clicked</b>(<i>addNext=False</i>) <p> Private slot to refresh the log. -</p><a NAME="HgLogBrowserDialog.on_rxEdit_returnPressed" ID="HgLogBrowserDialog.on_rxEdit_returnPressed"></a> +</p><dl> +<dt><i>addNext</i> (bool)</dt> +<dd> +flag indicating to get a second batch of log entries as + well +</dd> +</dl><a NAME="HgLogBrowserDialog.on_rxEdit_returnPressed" ID="HgLogBrowserDialog.on_rxEdit_returnPressed"></a> <h4>HgLogBrowserDialog.on_rxEdit_returnPressed</h4> <b>on_rxEdit_returnPressed</b>(<i></i>) <p>
--- a/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html Mon May 20 22:44:12 2019 +0200 @@ -63,6 +63,9 @@ <td><a href="#HgTagBranchListDialog.__closeBranch">__closeBranch</a></td> <td>Private slot to close the selected branch.</td> </tr><tr> +<td><a href="#HgTagBranchListDialog.__closeBranchHeads">__closeBranchHeads</a></td> +<td>Private slot to close the selected branches.</td> +</tr><tr> <td><a href="#HgTagBranchListDialog.__finish">__finish</a></td> <td>Private slot called when the process finished or the user pressed the button.</td> </tr><tr> @@ -146,6 +149,11 @@ <b>__closeBranch</b>(<i></i>) <p> Private slot to close the selected branch. +</p><a NAME="HgTagBranchListDialog.__closeBranchHeads" ID="HgTagBranchListDialog.__closeBranchHeads"></a> +<h4>HgTagBranchListDialog.__closeBranchHeads</h4> +<b>__closeBranchHeads</b>(<i></i>) +<p> + Private slot to close the selected branches. </p><a NAME="HgTagBranchListDialog.__finish" ID="HgTagBranchListDialog.__finish"></a> <h4>HgTagBranchListDialog.__finish</h4> <b>__finish</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.html Mon May 20 22:44:12 2019 +0200 @@ -70,13 +70,16 @@ </table> <a NAME="HgShelveDataDialog.__init__" ID="HgShelveDataDialog.__init__"></a> <h4>HgShelveDataDialog (Constructor)</h4> -<b>HgShelveDataDialog</b>(<i>parent=None</i>) +<b>HgShelveDataDialog</b>(<i>version, parent=None</i>) <p> Constructor </p><dl> -<dt><i>parent</i></dt> +<dt><i>version</i> (tuple of three int)</dt> <dd> -reference to the parent widget (QWidget) +Mercurial version +</dd><dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget </dd> </dl><a NAME="HgShelveDataDialog.getData" ID="HgShelveDataDialog.getData"></a> <h4>HgShelveDataDialog.getData</h4> @@ -86,9 +89,14 @@ </p><dl> <dt>Returns:</dt> <dd> -tuple containing the name (string), date (QDateTime), - message (string) and a flag indicating to add/remove - new/missing files (boolean) +tuple containing the name, date, message, a flag indicating + to add/remove new/missing files and a flag indicating to keep the + shelved changes in the working directory +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +tuple of (str, QDateTime, str, bool, bool) </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/eric6/Documentation/Source/eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.WizardPlugins.SetupWizard.SetupWizardDialog.html Mon May 20 22:44:12 2019 +0200 @@ -51,7 +51,7 @@ QDialog, Ui_SetupWizardDialog <h3>Class Attributes</h3> <table> -<tr><td>None</td></tr> +<tr><td>ClassifiersUrl</td></tr> </table> <h3>Class Methods</h3> <table> @@ -69,6 +69,9 @@ <td><a href="#SetupWizardDialog.__addPackage">__addPackage</a></td> <td>Private method to add a package to the list.</td> </tr><tr> +<td><a href="#SetupWizardDialog.__classifiersDownloadDone">__classifiersDownloadDone</a></td> +<td>Private slot called, after the classifiers file has been downloaded from the internet.</td> +</tr><tr> <td><a href="#SetupWizardDialog.__enableOkButton">__enableOkButton</a></td> <td>Private slot to set the state of the OK button.</td> </tr><tr> @@ -78,8 +81,11 @@ <td><a href="#SetupWizardDialog.__getStartDir">__getStartDir</a></td> <td>Private method to get the start directory for selection dialogs.</td> </tr><tr> -<td><a href="#SetupWizardDialog.__populateFromTroveLists">__populateFromTroveLists</a></td> -<td>Private method to populate lists from the Trove list file.</td> +<td><a href="#SetupWizardDialog.__loadClassifiersFromPyPI">__loadClassifiersFromPyPI</a></td> +<td>Private method to populate the classifiers list with data retrieved from PyPI.</td> +</tr><tr> +<td><a href="#SetupWizardDialog.__populateClassifiers">__populateClassifiers</a></td> +<td>Private method to populate the classifiers.</td> </tr><tr> <td><a href="#SetupWizardDialog.getCode">getCode</a></td> <td>Public method to get the source code.</td> @@ -120,6 +126,9 @@ <td><a href="#SetupWizardDialog.on_excludePatternList_itemSelectionChanged">on_excludePatternList_itemSelectionChanged</a></td> <td>Private slot to handle a change of selected items of the exclude pattern list.</td> </tr><tr> +<td><a href="#SetupWizardDialog.on_localClassifiersButton_clicked">on_localClassifiersButton_clicked</a></td> +<td>Private method to populate lists from the Trove list file.</td> +</tr><tr> <td><a href="#SetupWizardDialog.on_modulesList_itemSelectionChanged">on_modulesList_itemSelectionChanged</a></td> <td>Private slot to handle a change of selected items of the modules list.</td> </tr><tr> @@ -188,6 +197,17 @@ <dd> name of the package directory (string) </dd> +</dl><a NAME="SetupWizardDialog.__classifiersDownloadDone" ID="SetupWizardDialog.__classifiersDownloadDone"></a> +<h4>SetupWizardDialog.__classifiersDownloadDone</h4> +<b>__classifiersDownloadDone</b>(<i>reply</i>) +<p> + Private slot called, after the classifiers file has been downloaded + from the internet. +</p><dl> +<dt><i>reply</i> (QNetworkReply)</dt> +<dd> +reference to the network reply +</dd> </dl><a NAME="SetupWizardDialog.__enableOkButton" ID="SetupWizardDialog.__enableOkButton"></a> <h4>SetupWizardDialog.__enableOkButton</h4> <b>__enableOkButton</b>(<i></i>) @@ -213,12 +233,24 @@ <dd> start directory (string) </dd> -</dl><a NAME="SetupWizardDialog.__populateFromTroveLists" ID="SetupWizardDialog.__populateFromTroveLists"></a> -<h4>SetupWizardDialog.__populateFromTroveLists</h4> -<b>__populateFromTroveLists</b>(<i></i>) +</dl><a NAME="SetupWizardDialog.__loadClassifiersFromPyPI" ID="SetupWizardDialog.__loadClassifiersFromPyPI"></a> +<h4>SetupWizardDialog.__loadClassifiersFromPyPI</h4> +<b>__loadClassifiersFromPyPI</b>(<i></i>) <p> - Private method to populate lists from the Trove list file. -</p><a NAME="SetupWizardDialog.getCode" ID="SetupWizardDialog.getCode"></a> + Private method to populate the classifiers list with data retrieved + from PyPI. +</p><a NAME="SetupWizardDialog.__populateClassifiers" ID="SetupWizardDialog.__populateClassifiers"></a> +<h4>SetupWizardDialog.__populateClassifiers</h4> +<b>__populateClassifiers</b>(<i>classifiers</i>) +<p> + Private method to populate the classifiers. +</p><dl> +<dt><i>classifiers</i> (list of str)</dt> +<dd> +list of classifiers read from a local file or + retrieved from PyPI +</dd> +</dl><a NAME="SetupWizardDialog.getCode" ID="SetupWizardDialog.getCode"></a> <h4>SetupWizardDialog.getCode</h4> <b>getCode</b>(<i>indLevel, indString</i>) <p> @@ -303,6 +335,14 @@ <p> Private slot to handle a change of selected items of the exclude pattern list. +</p><a NAME="SetupWizardDialog.on_localClassifiersButton_clicked" ID="SetupWizardDialog.on_localClassifiersButton_clicked"></a> +<h4>SetupWizardDialog.on_localClassifiersButton_clicked</h4> +<b>on_localClassifiersButton_clicked</b>(<i></i>) +<p> + Private method to populate lists from the Trove list file. +</p><p> + Note: The trove list file was created from querying + "https://pypi.org/pypi?%3Aaction=list_classifiers". </p><a NAME="SetupWizardDialog.on_modulesList_itemSelectionChanged" ID="SetupWizardDialog.on_modulesList_itemSelectionChanged"></a> <h4>SetupWizardDialog.on_modulesList_itemSelectionChanged</h4> <b>on_modulesList_itemSelectionChanged</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.Preferences.ConfigurationPages.ConfigurationPageBase.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.Preferences.ConfigurationPages.ConfigurationPageBase.html Mon May 20 22:44:12 2019 +0200 @@ -43,7 +43,13 @@ <h2>ConfigurationPageBase</h2> <p> Class implementing the base class for all configuration pages. -</p> +</p><h3>Signals</h3> +<dl> +<dt>colourChanged(str, QColor)</dt> +<dd> +To inform about a new colour selection +</dd> +</dl> <h3>Derived from</h3> QWidget <h3>Class Attributes</h3>
--- a/eric6/Documentation/Source/eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html Mon May 20 22:44:12 2019 +0200 @@ -32,6 +32,9 @@ <tr> <td><a href="#DebuggerGeneralPage">DebuggerGeneralPage</a></td> <td>Class implementing the Debugger General configuration page.</td> +</tr><tr> +<td><a href="#PreviewModel">PreviewModel</a></td> +<td>Class to show an example of the selected background colours for the debug viewer.</td> </tr> </table> <h3>Functions</h3> @@ -124,6 +127,204 @@ </p> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> +<a NAME="PreviewModel" ID="PreviewModel"></a> +<h2>PreviewModel</h2> +<p> + Class to show an example of the selected background colours for the debug + viewer. +</p> +<h3>Derived from</h3> +QAbstractItemModel +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#PreviewModel.__init__">PreviewModel</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#PreviewModel.columnCount">columnCount</a></td> +<td>Public Qt slot to get the column count.</td> +</tr><tr> +<td><a href="#PreviewModel.data">data</a></td> +<td>Public Qt slot get the role data of item.</td> +</tr><tr> +<td><a href="#PreviewModel.flags">flags</a></td> +<td>Public Qt slot to get the item flags.</td> +</tr><tr> +<td><a href="#PreviewModel.index">index</a></td> +<td>Public Qt slot to get the index of item at row:column of parent.</td> +</tr><tr> +<td><a href="#PreviewModel.parent">parent</a></td> +<td>Public Qt slot to get the parent of the given child.</td> +</tr><tr> +<td><a href="#PreviewModel.rowCount">rowCount</a></td> +<td>Public Qt slot to get the row count.</td> +</tr><tr> +<td><a href="#PreviewModel.setColor">setColor</a></td> +<td>Public slot to update the background colour indexed by key.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="PreviewModel.__init__" ID="PreviewModel.__init__"></a> +<h4>PreviewModel (Constructor)</h4> +<b>PreviewModel</b>(<i></i>) +<p> + Constructor +</p><a NAME="PreviewModel.columnCount" ID="PreviewModel.columnCount"></a> +<h4>PreviewModel.columnCount</h4> +<b>columnCount</b>(<i>parent=QModelIndex()</i>) +<p> + Public Qt slot to get the column count. +</p><dl> +<dt><i>parent</i> (QModelIndex)</dt> +<dd> +the model parent +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +number of columns +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +int +</dd> +</dl><a NAME="PreviewModel.data" ID="PreviewModel.data"></a> +<h4>PreviewModel.data</h4> +<b>data</b>(<i>index, role=Qt.DisplayRole</i>) +<p> + Public Qt slot get the role data of item. +</p><dl> +<dt><i>index</i> (QModelIndex)</dt> +<dd> +the model index +</dd><dt><i>role</i> (QtCore.Qt.ItemDataRole)</dt> +<dd> +the requested data role +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +role data of item +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str, QBrush or None +</dd> +</dl><a NAME="PreviewModel.flags" ID="PreviewModel.flags"></a> +<h4>PreviewModel.flags</h4> +<b>flags</b>(<i>index</i>) +<p> + Public Qt slot to get the item flags. +</p><dl> +<dt><i>index</i> (QModelIndex)</dt> +<dd> +of item +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +item flags +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QtCore.Qt.ItemFlag +</dd> +</dl><a NAME="PreviewModel.index" ID="PreviewModel.index"></a> +<h4>PreviewModel.index</h4> +<b>index</b>(<i>row, column, parent=QModelIndex()</i>) +<p> + Public Qt slot to get the index of item at row:column of parent. +</p><dl> +<dt><i>row</i> (int)</dt> +<dd> +number of rows +</dd><dt><i>column</i> (int)</dt> +<dd> +number of columns +</dd><dt><i>parent</i> (QModelIndex)</dt> +<dd> +the model parent +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +new model index for child +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QModelIndex +</dd> +</dl><a NAME="PreviewModel.parent" ID="PreviewModel.parent"></a> +<h4>PreviewModel.parent</h4> +<b>parent</b>(<i>child</i>) +<p> + Public Qt slot to get the parent of the given child. +</p><dl> +<dt><i>child</i> (QModelIndex)</dt> +<dd> +the model child node +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +new model index for parent +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QModelIndex +</dd> +</dl><a NAME="PreviewModel.rowCount" ID="PreviewModel.rowCount"></a> +<h4>PreviewModel.rowCount</h4> +<b>rowCount</b>(<i>parent=QModelIndex()</i>) +<p> + Public Qt slot to get the row count. +</p><dl> +<dt><i>parent</i> (QModelIndex)</dt> +<dd> +the model parent +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +number of rows +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +int +</dd> +</dl><a NAME="PreviewModel.setColor" ID="PreviewModel.setColor"></a> +<h4>PreviewModel.setColor</h4> +<b>setColor</b>(<i>key, bgcolour</i>) +<p> + Public slot to update the background colour indexed by key. +</p><dl> +<dt><i>key</i> (str)</dt> +<dd> +the name of background +</dd><dt><i>bgcolour</i> (QColor)</dt> +<dd> +the new background colour +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> <a NAME="create" ID="create"></a> <h2>create</h2> <b>create</b>(<i>dlg</i>)
--- a/eric6/Documentation/Source/eric6.Preferences.ConfigurationPages.InterfacePage.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.Preferences.ConfigurationPages.InterfacePage.html Mon May 20 22:44:12 2019 +0200 @@ -64,7 +64,10 @@ <td>Constructor</td> </tr><tr> <td><a href="#InterfacePage.__populateLanguageCombo">__populateLanguageCombo</a></td> -<td>Private method to initialize the language combobox of the Interface configuration page.</td> +<td>Private method to initialize the language combo box.</td> +</tr><tr> +<td><a href="#InterfacePage.__populateShellPositionCombo">__populateShellPositionCombo</a></td> +<td>Private method to initialize the shell position combo box.</td> </tr><tr> <td><a href="#InterfacePage.__populateStyleCombo">__populateStyleCombo</a></td> <td>Private method to populate the style combo box.</td> @@ -89,8 +92,12 @@ <h4>InterfacePage.__populateLanguageCombo</h4> <b>__populateLanguageCombo</b>(<i></i>) <p> - Private method to initialize the language combobox of the Interface - configuration page. + Private method to initialize the language combo box. +</p><a NAME="InterfacePage.__populateShellPositionCombo" ID="InterfacePage.__populateShellPositionCombo"></a> +<h4>InterfacePage.__populateShellPositionCombo</h4> +<b>__populateShellPositionCombo</b>(<i></i>) +<p> + Private method to initialize the shell position combo box. </p><a NAME="InterfacePage.__populateStyleCombo" ID="InterfacePage.__populateStyleCombo"></a> <h4>InterfacePage.__populateStyleCombo</h4> <b>__populateStyleCombo</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.Project.Project.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.Project.Project.html Mon May 20 22:44:12 2019 +0200 @@ -635,8 +635,8 @@ <td><a href="#Project.initFileTypes">initFileTypes</a></td> <td>Public method to initialize the filetype associations with default values.</td> </tr><tr> -<td><a href="#Project.initMenu">initMenu</a></td> -<td>Public slot to initialize the project menu.</td> +<td><a href="#Project.initMenus">initMenus</a></td> +<td>Public slot to initialize the project menus.</td> </tr><tr> <td><a href="#Project.initToolbars">initToolbars</a></td> <td>Public slot to initialize the project toolbar and the basic VCS toolbar.</td> @@ -2271,15 +2271,20 @@ <p> Public method to initialize the filetype associations with default values. -</p><a NAME="Project.initMenu" ID="Project.initMenu"></a> -<h4>Project.initMenu</h4> -<b>initMenu</b>(<i></i>) +</p><a NAME="Project.initMenus" ID="Project.initMenus"></a> +<h4>Project.initMenus</h4> +<b>initMenus</b>(<i></i>) <p> - Public slot to initialize the project menu. + Public slot to initialize the project menus. </p><dl> <dt>Returns:</dt> <dd> -the menu generated (QMenu) +tuple of generated menus +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +tuple of (QMenu, QMenu) </dd> </dl><a NAME="Project.initToolbars" ID="Project.initToolbars"></a> <h4>Project.initToolbars</h4>
--- a/eric6/Documentation/Source/eric6.QScintilla.Editor.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.QScintilla.Editor.html Mon May 20 22:44:12 2019 +0200 @@ -1808,8 +1808,8 @@ Private method to get the requested option via EditorConfig. </p><p> If there is no EditorConfig defined, the equivalent built-in option - will be used (Preferences.getEditor(). The option must be given as the - Preferences option key. The mapping to the EditorConfig option name + will be used (Preferences.getEditor() ). The option must be given as + the Preferences option key. The mapping to the EditorConfig option name will be done within this method. </p><dl> <dt><i>option</i> (str)</dt>
--- a/eric6/Documentation/Source/eric6.QScintilla.Shell.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.QScintilla.Shell.html Mon May 20 22:44:12 2019 +0200 @@ -1586,7 +1586,7 @@ <td>Constructor</td> </tr><tr> <td><a href="#ShellAssembly.shell">shell</a></td> -<td>Public method to get a reference to the terminal widget.</td> +<td>Public method to get a reference to the shell widget.</td> </tr><tr> <td><a href="#ShellAssembly.showFind">showFind</a></td> <td>Public method to display the search widget.</td> @@ -1622,7 +1622,7 @@ <h4>ShellAssembly.shell</h4> <b>shell</b>(<i></i>) <p> - Public method to get a reference to the terminal widget. + Public method to get a reference to the shell widget. </p><dl> <dt>Returns:</dt> <dd>
--- a/eric6/Documentation/Source/eric6.UI.Browser.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.UI.Browser.html Mon May 20 22:44:12 2019 +0200 @@ -124,9 +124,6 @@ <td><a href="#Browser.__addAsToplevelDir">__addAsToplevelDir</a></td> <td>Private slot to handle the Add as toplevel directory popup menu entry.</td> </tr><tr> -<td><a href="#Browser.__configure">__configure</a></td> -<td>Private method to open the configuration dialog.</td> -</tr><tr> <td><a href="#Browser.__createPopupMenus">__createPopupMenus</a></td> <td>Private method to generate the various popup menus.</td> </tr><tr> @@ -237,11 +234,6 @@ <b>__addAsToplevelDir</b>(<i></i>) <p> Private slot to handle the Add as toplevel directory popup menu entry. -</p><a NAME="Browser.__configure" ID="Browser.__configure"></a> -<h4>Browser.__configure</h4> -<b>__configure</b>(<i></i>) -<p> - Private method to open the configuration dialog. </p><a NAME="Browser.__createPopupMenus" ID="Browser.__createPopupMenus"></a> <h4>Browser.__createPopupMenus</h4> <b>__createPopupMenus</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.UI.SearchWidget.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.UI.SearchWidget.html Mon May 20 22:44:12 2019 +0200 @@ -21,7 +21,7 @@ <body><a NAME="top" ID="top"></a> <h1>eric6.UI.SearchWidget</h1> <p> -Module implementing the search box for the shell, terminal and log viewer. +Module implementing the search box for the shell and log viewer. </p> <h3>Global Attributes</h3> <table> @@ -31,7 +31,7 @@ <table> <tr> <td><a href="#SearchWidget">SearchWidget</a></td> -<td>Class implementing the search box for the shell, terminal and log viewer.</td> +<td>Class implementing the search box for the shell and log viewer.</td> </tr> </table> <h3>Functions</h3> @@ -42,7 +42,7 @@ <a NAME="SearchWidget" ID="SearchWidget"></a> <h2>SearchWidget</h2> <p> - Class implementing the search box for the shell, terminal and log viewer. + Class implementing the search box for the shell and log viewer. </p><h3>Signals</h3> <dl> <dt>searchNext(text, caseSensitive, wholeWord, regexp)</dt>
--- a/eric6/Documentation/Source/eric6.UI.UserInterface.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.UI.UserInterface.html Mon May 20 22:44:12 2019 +0200 @@ -270,9 +270,6 @@ <td><a href="#UserInterface.__configViewProfiles">__configViewProfiles</a></td> <td>Private slot to configure the various view profiles.</td> </tr><tr> -<td><a href="#UserInterface.__configureDockareaCornerUsage">__configureDockareaCornerUsage</a></td> -<td>Private method to configure the usage of the dockarea corners.</td> -</tr><tr> <td><a href="#UserInterface.__connectToWebBrowser">__connectToWebBrowser</a></td> <td>Private method to connect to a started web browser.</td> </tr><tr> @@ -783,6 +780,9 @@ <td><a href="#UserInterface.launchHelpViewer">launchHelpViewer</a></td> <td>Public slot to start the help viewer/web browser.</td> </tr><tr> +<td><a href="#UserInterface.networkAccessManager">networkAccessManager</a></td> +<td>Public method to get a reference to the network access manager object.</td> +</tr><tr> <td><a href="#UserInterface.notificationsEnabled">notificationsEnabled</a></td> <td>Public method to check, if notifications are enabled.</td> </tr><tr> @@ -1085,11 +1085,6 @@ <b>__configViewProfiles</b>(<i></i>) <p> Private slot to configure the various view profiles. -</p><a NAME="UserInterface.__configureDockareaCornerUsage" ID="UserInterface.__configureDockareaCornerUsage"></a> -<h4>UserInterface.__configureDockareaCornerUsage</h4> -<b>__configureDockareaCornerUsage</b>(<i></i>) -<p> - Private method to configure the usage of the dockarea corners. </p><a NAME="UserInterface.__connectToWebBrowser" ID="UserInterface.__connectToWebBrowser"></a> <h4>UserInterface.__connectToWebBrowser</h4> <b>__connectToWebBrowser</b>(<i>process</i>) @@ -2530,6 +2525,21 @@ <dd> flag indicating to use a single browser window </dd> +</dl><a NAME="UserInterface.networkAccessManager" ID="UserInterface.networkAccessManager"></a> +<h4>UserInterface.networkAccessManager</h4> +<b>networkAccessManager</b>(<i></i>) +<p> + Public method to get a reference to the network access manager object. +</p><dl> +<dt>Returns:</dt> +<dd> +reference to the network access manager object +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QNetworkAccessManager +</dd> </dl><a NAME="UserInterface.notificationsEnabled" ID="UserInterface.notificationsEnabled"></a> <h4>UserInterface.notificationsEnabled</h4> <b>notificationsEnabled</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.ViewManager.ViewManager.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.ViewManager.ViewManager.html Mon May 20 22:44:12 2019 +0200 @@ -696,7 +696,7 @@ <td>Public method used to split the current view.</td> </tr><tr> <td><a href="#ViewManager.addToExtrasMenu">addToExtrasMenu</a></td> -<td>Public method to add some actions to the extras menu.</td> +<td>Public method to add some actions to the Extras menu.</td> </tr><tr> <td><a href="#ViewManager.addToRecentList">addToRecentList</a></td> <td>Public slot to add a filename to the list of recently opened files.</td> @@ -833,6 +833,9 @@ <td><a href="#ViewManager.initMacroMenu">initMacroMenu</a></td> <td>Public method to create the Macro menu.</td> </tr><tr> +<td><a href="#ViewManager.initSearchMenu">initSearchMenu</a></td> +<td>Public method to create the Search menu.</td> +</tr><tr> <td><a href="#ViewManager.initSearchToolbars">initSearchToolbars</a></td> <td>Public method to create the Search toolbars.</td> </tr><tr> @@ -2181,7 +2184,7 @@ <h4>ViewManager.addToExtrasMenu</h4> <b>addToExtrasMenu</b>(<i>menu</i>) <p> - Public method to add some actions to the extras menu. + Public method to add some actions to the Extras menu. </p><dl> <dt><i>menu</i></dt> <dd> @@ -2778,6 +2781,21 @@ <dd> the generated menu </dd> +</dl><a NAME="ViewManager.initSearchMenu" ID="ViewManager.initSearchMenu"></a> +<h4>ViewManager.initSearchMenu</h4> +<b>initSearchMenu</b>(<i></i>) +<p> + Public method to create the Search menu. +</p><dl> +<dt>Returns:</dt> +<dd> +the generated menu +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QMenu +</dd> </dl><a NAME="ViewManager.initSearchToolbars" ID="ViewManager.initSearchToolbars"></a> <h4>ViewManager.initSearchToolbars</h4> <b>initSearchToolbars</b>(<i>toolbarManager</i>)
--- a/eric6/Documentation/Source/eric6.VirtualEnv.VirtualenvManager.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/eric6.VirtualEnv.VirtualenvManager.html Mon May 20 22:44:12 2019 +0200 @@ -336,10 +336,16 @@ </dd> </dl><a NAME="VirtualenvManager.getVirtualenvNames" ID="VirtualenvManager.getVirtualenvNames"></a> <h4>VirtualenvManager.getVirtualenvNames</h4> -<b>getVirtualenvNames</b>(<i></i>) +<b>getVirtualenvNames</b>(<i>noRemote=False</i>) <p> Public method to get a list of defined virtual environments. </p><dl> +<dt><i>noRemote</i> (bool)</dt> +<dd> +flag indicating to exclude environments for remote + debugging +</dd> +</dl><dl> <dt>Returns:</dt> <dd> list of defined virtual environments
--- a/eric6/Documentation/Source/index-eric6.Debugger.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/index-eric6.Debugger.html Mon May 20 22:44:12 2019 +0200 @@ -89,7 +89,7 @@ <td>Module implementing the variables filter dialog.</td> </tr><tr> <td><a href="eric6.Debugger.VariablesViewer.html">VariablesViewer</a></td> -<td>Module implementing the variables viewer widget.</td> +<td>Module implementing the variables viewer view based on QTreeView.</td> </tr><tr> <td><a href="eric6.Debugger.WatchPointModel.html">WatchPointModel</a></td> <td>Module implementing the Watch expression model.</td>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.html Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body> +<h1>eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension</h1> +<p> +Package implementing the closehead extension support interface. +</p> + + +<h3>Modules</h3> +<table> +<tr> +<td><a href="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.HgCloseHeadSelectionDialog.html">HgCloseHeadSelectionDialog</a></td> +<td>Module implementing a dialog to select the heads to be closed.</td> +</tr><tr> +<td><a href="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.ProjectHelper.html">ProjectHelper</a></td> +<td>Module implementing the closehead extension project helper.</td> +</tr><tr> +<td><a href="eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.closehead.html">closehead</a></td> +<td>Module implementing the closehead extension interface.</td> +</tr> +</table> +</body></html> \ No newline at end of file
--- a/eric6/Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsMercurial.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsMercurial.html Mon May 20 22:44:12 2019 +0200 @@ -30,6 +30,9 @@ <h3>Packages</h3> <table> <tr> +<td><a href="index-eric6.Plugins.VcsPlugins.vcsMercurial.CloseheadExtension.html">CloseheadExtension</a></td> +<td>Package implementing the closehead extension support interface.</td> +</tr><tr> <td><a href="index-eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.html">ConfigurationPage</a></td> <td>Package implementing the the Mercurial configuration page.</td> </tr><tr>
--- a/eric6/Documentation/Source/index-eric6.UI.html Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Documentation/Source/index-eric6.UI.html Mon May 20 22:44:12 2019 +0200 @@ -111,7 +111,7 @@ <td>Module implementing a widget to visualize the Python AST for some Python sources.</td> </tr><tr> <td><a href="eric6.UI.SearchWidget.html">SearchWidget</a></td> -<td>Module implementing the search box for the shell, terminal and log viewer.</td> +<td>Module implementing the search box for the shell and log viewer.</td> </tr><tr> <td><a href="eric6.UI.SplashScreen.html">SplashScreen</a></td> <td>Module implementing a splashscreen for eric6.</td>
--- a/eric6/Helpviewer/HelpTabWidget.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Helpviewer/HelpTabWidget.py Mon May 20 22:44:12 2019 +0200 @@ -116,20 +116,8 @@ self.__closedTabsButton.setEnabled(False) self.__rightCornerWidgetLayout.addWidget(self.__closedTabsButton) - self.__closeButton = QToolButton(self) - self.__closeButton.setIcon(UI.PixmapCache.getIcon("close.png")) - self.__closeButton.setToolTip( - self.tr("Close the current help window")) - self.__closeButton.setEnabled(False) - self.__closeButton.clicked.connect(self.closeBrowser) - self.__rightCornerWidgetLayout.addWidget(self.__closeButton) - if Preferences.getUI("SingleCloseButton") or \ - not hasattr(self, 'setTabsClosable'): - self.__closeButton.show() - else: - self.setTabsClosable(True) - self.tabCloseRequested.connect(self.closeBrowserAt) - self.__closeButton.hide() + self.setTabsClosable(True) + self.tabCloseRequested.connect(self.closeBrowserAt) self.setCornerWidget(self.__rightCornerWidget, Qt.TopRightCorner) @@ -367,7 +355,6 @@ self.__mainWindow.closeAct.setEnabled(True) self.__mainWindow.closeAllAct.setEnabled(True) - self.__closeButton.setEnabled(True) self.__navigationButton.setEnabled(True) if not linkName and not requestData: @@ -737,20 +724,6 @@ for urlbar in self.__stackedUrlBar.urlBars(): urlbar.preferencesChanged() - - if Preferences.getUI("SingleCloseButton") or \ - not hasattr(self, 'setTabsClosable'): - if hasattr(self, 'setTabsClosable'): - self.setTabsClosable(False) - try: - self.tabCloseRequested.disconnect(self.closeBrowserAt) - except TypeError: - pass - self.__closeButton.show() - else: - self.setTabsClosable(True) - self.tabCloseRequested.connect(self.closeBrowserAt) - self.__closeButton.hide() def __loadStarted(self, browser): """
--- a/eric6/PipInterface/Pip.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/PipInterface/Pip.py Mon May 20 22:44:12 2019 +0200 @@ -207,15 +207,19 @@ return interpreter - def getVirtualenvNames(self): + def getVirtualenvNames(self, noRemote=False): """ Public method to get a sorted list of virtual environment names. + @param noRemote flag indicating to exclude environments for remote + debugging + @type bool @return sorted list of virtual environment names @rtype list of str """ return sorted( - e5App().getObject("VirtualEnvManager").getVirtualenvNames()) + e5App().getObject("VirtualEnvManager").getVirtualenvNames( + noRemote=noRemote)) def installPip(self, venvName, userSite=False): """
--- a/eric6/PipInterface/PipPackagesWidget.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/PipInterface/PipPackagesWidget.py Mon May 20 22:44:12 2019 +0200 @@ -133,7 +133,8 @@ projectVenv = self.__pip.getProjectEnvironmentString() if projectVenv: self.environmentsComboBox.addItem(projectVenv) - self.environmentsComboBox.addItems(self.__pip.getVirtualenvNames()) + self.environmentsComboBox.addItems( + self.__pip.getVirtualenvNames(noRemote=True)) def __isPipAvailable(self): """
--- a/eric6/Plugins/PluginVcsMercurial.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/PluginVcsMercurial.py Mon May 20 22:44:12 2019 +0200 @@ -175,6 +175,7 @@ "EncodingMode": "strict", "ConsiderHidden": False, "LogMessageColumnWidth": 30, + "LogBrowserShowFullLog": True, "LogBrowserGeometry": QByteArray(), "LogBrowserSplitterStates": [QByteArray(), QByteArray(), QByteArray()], @@ -266,7 +267,8 @@ @return the requested setting """ if key in ["StopLogOnCopy", "PullUpdate", "PreferUnbundle", - "CreateBackup", "InternalMerge", "ConsiderHidden"]: + "CreateBackup", "InternalMerge", "ConsiderHidden", + "LogBrowserShowFullLog"]: return Preferences.toBool(Preferences.Prefs.settings.value( "Mercurial/" + key, cls.MercurialDefaults[key])) elif key in ["LogLimit", "CommitMessages", "CommitAuthorsLimit",
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/HgCloseHeadSelectionDialog.py Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,113 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to select the heads to be closed. +""" + +from __future__ import unicode_literals + +import os + +from PyQt5.QtCore import pyqtSlot, QProcess +from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QTreeWidgetItem + +from .Ui_HgCloseHeadSelectionDialog import Ui_HgCloseHeadSelectionDialog + + +class HgCloseHeadSelectionDialog(QDialog, Ui_HgCloseHeadSelectionDialog): + """ + Class implementing a dialog to select the heads to be closed. + """ + def __init__(self, vcs, ppath, parent=None): + """ + Constructor + + @param vcs reference to the VCS object + @type Hg + @param ppath directory containing the repository + @type str + @param parent reference to the parent widget + @type QWidget + """ + super(HgCloseHeadSelectionDialog, self).__init__(parent) + self.setupUi(self) + + self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True) + self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False) + + heads = self.__getHeads(vcs, ppath) + for revision, branch in heads: + QTreeWidgetItem(self.headsList, [revision, branch]) + + def __getHeads(self, vcs, ppath): + """ + Private method to get the open heads. + + @param vcs reference to the VCS object + @type Hg + @param ppath directory containing the repository + @type str + @return list of tuples containing the revision and the corresponding + branch name + @rtype list of tuples of (str, str) + """ + args = vcs.initCommand("heads") + args.append('--template') + args.append('{node|short}@@@{branches}\n') + + output = "" + client = vcs.getClient() + if client is None: + # find the root of the repo + repodir = self.splitPath(ppath)[0] + while not os.path.isdir(os.path.join(repodir, self.adminDir)): + repodir = os.path.dirname(repodir) + if os.path.splitdrive(repodir)[1] == os.sep: + return [] + + process = QProcess() + process.setWorkingDirectory(repodir) + process.start('hg', args) + procStarted = process.waitForStarted(5000) + if procStarted: + finished = process.waitForFinished(30000) + if finished and process.exitCode() == 0: + output = str(process.readAllStandardOutput(), + self.getEncoding(), 'replace') + else: + output, error = client.runcommand(args) + + heads = [] + if output: + for line in output.splitlines(): + line = line.strip() + if line: + revision, branch = line.split("@@@") + heads.append((revision, branch)) + + return heads + + @pyqtSlot() + def on_headsList_itemSelectionChanged(self): + """ + Private slot handling changes of the selection. + """ + self.buttonBox.button(QDialogButtonBox.Ok).setEnabled( + len(self.headsList.selectedItems()) > 0 + ) + + def getData(self): + """ + Public method to retrieve the entered data. + + @return tuple containing a list of selected revisions and the commit + message + @rtype tuple of (list of str, str) + """ + revisions = [itm.text(0) for itm in self.headsList.selectedItems()] + message = self.logEdit.toPlainText().strip() + + return revisions, message
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/HgCloseHeadSelectionDialog.ui Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>HgCloseHeadSelectionDialog</class> + <widget class="QDialog" name="HgCloseHeadSelectionDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>532</width> + <height>402</height> + </rect> + </property> + <property name="windowTitle"> + <string>Close Heads</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Select heads to be closed:</string> + </property> + </widget> + </item> + <item> + <widget class="QTreeWidget" name="headsList"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>2</verstretch> + </sizepolicy> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::ExtendedSelection</enum> + </property> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + <column> + <property name="text"> + <string>Revision</string> + </property> + </column> + <column> + <property name="text"> + <string>Branch</string> + </property> + </column> + </widget> + </item> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Commit Message:</string> + </property> + </widget> + </item> + <item> + <widget class="QTextEdit" name="logEdit"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>1</verstretch> + </sizepolicy> + </property> + <property name="tabChangesFocus"> + <bool>true</bool> + </property> + <property name="acceptRichText"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <tabstops> + <tabstop>headsList</tabstop> + <tabstop>logEdit</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>HgCloseHeadSelectionDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>HgCloseHeadSelectionDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/ProjectHelper.py Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the closehead extension project helper. +""" + +from __future__ import unicode_literals + +from PyQt5.QtWidgets import QMenu + +from E5Gui.E5Action import E5Action + +from ..HgExtensionProjectHelper import HgExtensionProjectHelper + +import UI.PixmapCache + + +class CloseheadProjectHelper(HgExtensionProjectHelper): + """ + Class implementing the closehead extension project helper. + """ + def __init__(self): + """ + Constructor + """ + super(CloseheadProjectHelper, self).__init__() + + def initActions(self): + """ + Public method to generate the action objects. + """ + self.hgCloseheadAct = E5Action( + self.tr('Close Heads'), + UI.PixmapCache.getIcon("closehead"), + self.tr('Close Heads'), + 0, 0, self, 'mercurial_closehead') + self.hgCloseheadAct.setStatusTip(self.tr( + 'Close arbitrary heads without checking them out first' + )) + self.hgCloseheadAct.setWhatsThis(self.tr( + """<b>Close Heads</b>""" + """<p>This closes arbitrary heads without the need to check them""" + """ out first.</p>""" + )) + self.hgCloseheadAct.triggered.connect(self.__hgClosehead) + self.actions.append(self.hgCloseheadAct) + + def initMenu(self, mainMenu): + """ + Public method to generate the extension menu. + + @param mainMenu reference to the main menu + @type QMenu + @return populated menu (QMenu) + """ + menu = QMenu(self.menuTitle(), mainMenu) + menu.setIcon(UI.PixmapCache.getIcon("closehead")) + menu.setTearOffEnabled(True) + + menu.addAction(self.hgCloseheadAct) + + return menu + + def menuTitle(self): + """ + Public method to get the menu title. + + @return title of the menu + @rtype str + """ + return self.tr("Close Heads") + + def __hgClosehead(self): + """ + Private slot used to close arbitrary heads. + """ + self.vcs.getExtensionObject("closehead")\ + .hgCloseheads(self.project.getProjectPath())
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/__init__.py Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Package implementing the closehead extension support interface. +"""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/closehead.py Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the closehead extension interface. +""" + +from __future__ import unicode_literals + +import os + +from PyQt5.QtWidgets import QDialog + +from ..HgExtension import HgExtension +from ..HgDialog import HgDialog + + +class Closehead(HgExtension): + """ + Class implementing the strip extension interface. + """ + def __init__(self, vcs): + """ + Constructor + + @param vcs reference to the Mercurial vcs object + @type Hg + """ + super(Closehead, self).__init__(vcs) + + def hgCloseheads(self, name, revisions=None): + """ + Public method to close arbitrary heads. + + @param name file/directory name + @type str + @param revisions revisions of branch heads to be closed + @type str + """ + # find the root of the repo + repodir = self.vcs.splitPath(name)[0] + while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)): + repodir = os.path.dirname(repodir) + if os.path.splitdrive(repodir)[1] == os.sep: + return + + message = "" + if not revisions: + from .HgCloseHeadSelectionDialog import HgCloseHeadSelectionDialog + dlg = HgCloseHeadSelectionDialog(self.vcs, name) + if dlg.exec_() == QDialog.Accepted: + revisions, message = dlg.getData() + + if not revisions: + # still no revisions given; abort... + return + + args = self.vcs.initCommand("close-head") + if not message: + if len(revisions) == 1: + message = self.tr("Revision <{0}> closed.").format( + revisions[0]) + else: + message = self.tr("Revisions <{0}> closed.").format( + ", ".join(revisions)) + args += ["--message", message] + for revision in revisions: + args += ["--rev", revision] + + dia = HgDialog(self.tr("Closing Heads"), self.vcs) + res = dia.startProcess(args, repodir) + if res: + dia.exec_()
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py Mon May 20 22:44:12 2019 +0200 @@ -52,6 +52,8 @@ self.__plugin.getPreferences("LogLimit")) self.logWidthSpinBox.setValue( self.__plugin.getPreferences("LogMessageColumnWidth")) + self.startFullLogCheckBox.setChecked( + self.__plugin.getPreferences("LogBrowserShowFullLog")) # commit self.commitSpinBox.setValue( self.__plugin.getPreferences("CommitMessages")) @@ -88,6 +90,8 @@ "LogLimit", self.logSpinBox.value()) self.__plugin.setPreferences( "LogMessageColumnWidth", self.logWidthSpinBox.value()) + self.__plugin.setPreferences( + "LogBrowserShowFullLog", self.startFullLogCheckBox.isChecked()) # commit self.__plugin.setPreferences( "CommitMessages", self.commitSpinBox.value())
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.ui Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.ui Mon May 20 22:44:12 2019 +0200 @@ -93,6 +93,19 @@ <string>Log</string> </property> <layout class="QGridLayout" name="gridLayout_3"> + <item row="1" column="1"> + <widget class="QSpinBox" name="logWidthSpinBox"> + <property name="toolTip"> + <string>Enter the number of characters of the commit message to be shown in the list</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="minimum"> + <number>10</number> + </property> + </widget> + </item> <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> @@ -113,6 +126,13 @@ </property> </widget> </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_7"> + <property name="text"> + <string>No. of message characters shown in list:</string> + </property> + </widget> + </item> <item row="0" column="2"> <spacer> <property name="orientation"> @@ -126,23 +146,13 @@ </property> </spacer> </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_7"> - <property name="text"> - <string>No. of message characters shown in list:</string> + <item row="2" column="0" colspan="3"> + <widget class="QCheckBox" name="startFullLogCheckBox"> + <property name="toolTip"> + <string>Select to show all incoming and the first batch of local changesets</string> </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QSpinBox" name="logWidthSpinBox"> - <property name="toolTip"> - <string>Enter the number of characters of the commit message to be shown in the list</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="minimum"> - <number>10</number> + <property name="text"> + <string>Start showing incoming and local changesets</string> </property> </widget> </item> @@ -359,6 +369,7 @@ <tabstop>hiddenChangesetsCheckBox</tabstop> <tabstop>logSpinBox</tabstop> <tabstop>logWidthSpinBox</tabstop> + <tabstop>startFullLogCheckBox</tabstop> <tabstop>commitSpinBox</tabstop> <tabstop>commitAuthorsSpinBox</tabstop> <tabstop>pullUpdateCheckBox</tabstop>
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py Mon May 20 22:44:12 2019 +0200 @@ -63,13 +63,16 @@ ClosedIndicator = " \u2612" - def __init__(self, vcs, mode="log", parent=None): + def __init__(self, vcs, mode="", parent=None): """ Constructor @param vcs reference to the vcs object - @param mode mode of the dialog (string; one of log, incoming, outgoing) - @param parent parent widget (QWidget) + @type Hg + @param mode mode of the dialog + @type str (one of log, full_log, incoming, outgoing) + @param parent parent widget + @type QWidget """ super(HgLogBrowserDialog, self).__init__(parent) self.setupUi(self) @@ -84,12 +87,20 @@ self.diffSplitter.setStretchFactor(0, 1) self.diffSplitter.setStretchFactor(1, 2) + if not mode: + if vcs.getPlugin().getPreferences("LogBrowserShowFullLog"): + mode = "full_log" + else: + mode = "log" + if mode == "log": self.setWindowTitle(self.tr("Mercurial Log")) elif mode == "incoming": self.setWindowTitle(self.tr("Mercurial Log (Incoming)")) elif mode == "outgoing": self.setWindowTitle(self.tr("Mercurial Log (Outgoing)")) + elif mode == "full_log": + self.setWindowTitle(self.tr("Mercurial Full Log")) self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False) self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True) @@ -117,6 +128,7 @@ self.fieldCombo.addItem(self.tr("Author"), "author") self.fieldCombo.addItem(self.tr("Message"), "message") self.fieldCombo.addItem(self.tr("File"), "file") + self.fieldCombo.addItem(self.tr("Phase"), "phase") font = Preferences.getEditorOtherFonts("MonospacedFont") self.diffEdit.setFontFamily(font.family()) @@ -127,8 +139,11 @@ self.__diffGenerator.finished.connect(self.__generatorFinished) self.vcs = vcs - if mode in ("log", "incoming", "outgoing"): - self.commandMode = mode + if mode in ("log", "incoming", "outgoing", "full_log"): + if mode == "full_log": + self.commandMode = "incoming" + else: + self.commandMode = mode self.initialCommandMode = mode else: self.commandMode = "log" @@ -181,6 +196,7 @@ self.__edgesRole = Qt.UserRole + 2 self.__parentsRole = Qt.UserRole + 3 self.__latestTagRole = Qt.UserRole + 4 + self.__incomingRole = Qt.UserRole + 5 # roles used in the file tree self.__diffFileLineRole = Qt.UserRole @@ -224,6 +240,8 @@ self.__initActionsMenu() self.__finishCallbacks = [] + if self.initialCommandMode == "full_log": + self.__addFinishCallback(self.on_nextButton_clicked) def __addFinishCallback(self, callback): """ @@ -275,6 +293,11 @@ self.__tagActTriggered) self.__tagAct.setToolTip(self.tr("Tag the selected revision")) + self.__closeHeadsAct = self.__actionsMenu.addAction( + UI.PixmapCache.getIcon("closehead"), self.tr("Close Heads"), + self.__closeHeadsActTriggered) + self.__closeHeadsAct.setToolTip(self.tr("Close the selected heads")) + self.__switchAct = self.__actionsMenu.addAction( UI.PixmapCache.getIcon("vcsSwitch.png"), self.tr("Switch"), self.__switchActTriggered) @@ -499,7 +522,10 @@ self.logTree.clear() - self.commandMode = self.initialCommandMode + if self.initialCommandMode == "full_log": + self.commandMode = "incoming" + else: + self.commandMode = self.initialCommandMode def __resizeColumnsLog(self): """ @@ -595,23 +621,31 @@ return col, color, edges def __generateIcon(self, column, color, bottomedges, topedges, dotColor, - currentRev, closed): + currentRev, closed, isDraft): """ Private method to generate an icon containing the revision tree for the given data. - @param column column index of the revision (integer) - @param color color of the node (integer) + @param column column index of the revision + @type int + @param color color of the node + @type int @param bottomedges list of edges for the bottom of the node - (list of tuples of three integers) + @type list of tuples of (int, int, int) @param topedges list of edges for the top of the node - (list of tuples of three integers) - @param dotColor color to be used for the dot (QColor) + @type list of tuples of (int, int, int) + @param dotColor color to be used for the dot + @type QColor @param currentRev flag indicating to draw the icon for the - current revision (boolean) + current revision + @type bool @param closed flag indicating to draw an icon for a closed - branch (boolean) - @return icon for the node (QIcon) + branch + @type bool + @param isDraft flag indicating an entry of phase 'draft' + @type bool + @return icon for the node + @rtype QIcon """ def col2x(col, radius): """ @@ -677,14 +711,31 @@ radius + 4, radius - 2) elif self.commandMode in ("incoming", "outgoing"): offset = radius // 2 - painter.drawConvexPolygon( - QPoint(dot_x + offset, dot_y), - QPoint(dot_x, dot_y + offset), - QPoint(dot_x + offset, dot_y + 2 * offset), - QPoint(dot_x + 2 * offset, dot_y + offset) - ) + if self.commandMode == "incoming": + # incoming: draw a down arrow + painter.drawConvexPolygon( + QPoint(dot_x, dot_y), + QPoint(dot_x + 2 * offset, dot_y), + QPoint(dot_x + offset, dot_y + 2 * offset) + ) + else: + # outgoing: draw an up arrow + painter.drawConvexPolygon( + QPoint(dot_x + offset, dot_y), + QPoint(dot_x, dot_y + 2 * offset), + QPoint(dot_x + 2 * offset, dot_y + 2 * offset) + ) else: - painter.drawEllipse(dot_x, dot_y, radius, radius) + if isDraft: + # 'draft' phase: draw an up arrow like outgoing + offset = radius // 2 + painter.drawConvexPolygon( + QPoint(dot_x + offset, dot_y), + QPoint(dot_x, dot_y + 2 * offset), + QPoint(dot_x + 2 * offset, dot_y + 2 * offset) + ) + else: + painter.drawEllipse(dot_x, dot_y, radius, radius) painter.end() return QIcon(pix) @@ -833,6 +884,50 @@ self.__closedBranchesRevs.append( parts[-2].split(":", 1)[0]) + def __getHeads(self): + """ + Private method to get the list of all heads. + """ + self.__headRevisions = [] + errMsg = "" + + args = self.vcs.initCommand("heads") + args.append("--closed") + args.append("--template") + args.append("{rev}\n") + + output = "" + if self.__hgClient: + output, errMsg = self.__hgClient.runcommand(args) + else: + process = QProcess() + process.setWorkingDirectory(self.repodir) + process.start('hg', args) + procStarted = process.waitForStarted(5000) + if procStarted: + finished = process.waitForFinished(30000) + if finished and process.exitCode() == 0: + output = str(process.readAllStandardOutput(), + self.vcs.getEncoding(), 'replace') + else: + if not finished: + errMsg = self.tr( + "The hg process did not finish within 30s.") + else: + errMsg = self.tr("Could not start the hg executable.") + + if errMsg: + E5MessageBox.critical( + self, + self.tr("Mercurial Error"), + errMsg) + + if output: + for line in output.splitlines(): + line = line.strip() + if line: + self.__headRevisions.append(line) + def __getRevisionOfTag(self, tag): """ Private method to get the revision of a tag. @@ -962,6 +1057,7 @@ itm.setData(0, self.__parentsRole, parents) for parent in parents: self.__childrenInfo[parent].append(int(rev)) + itm.setData(0, self.__incomingRole, self.commandMode == "incoming") if self.logTree.topLevelItemCount() > 1: topedges = \ @@ -974,7 +1070,8 @@ icon = self.__generateIcon(column, color, edges, topedges, QColor(self.__branchColor(branches[0])), rev == self.__projectRevision, - rev in self.__closedBranchesRevs) + rev in self.__closedBranchesRevs, + phase == "draft") itm.setIcon(0, icon) try: @@ -1056,7 +1153,12 @@ else: err = "" if err: - self.__showError(err) + if self.commandMode == "incoming" and \ + self.initialCommandMode == "full_log": + # ignore the error + self.commandMode = "log" + else: + self.__showError(err) elif self.commandMode != "incoming" or \ (self.vcs.bundleFile and os.path.exists(self.vcs.bundleFile)) or \ @@ -1066,6 +1168,10 @@ if err: self.__showError(err) self.__processBuffer() + elif self.commandMode == "incoming" and \ + self.initialCommandMode == "full_log": + # no incoming changesets, just switch to log mode + self.commandMode = "log" self.__finish() else: self.process.kill() @@ -1112,9 +1218,18 @@ self.__bundle = bundle self.__isFile = isFile + if self.initialCommandMode == "full_log": + if isFile: + self.commandMode = "log" + self.__finishCallbacks = [] + else: + self.commandMode = "incoming" + self.__addFinishCallback(self.on_nextButton_clicked) + self.sbsSelectLabel.clear() self.errorGroup.hide() + self.errors.clear() QApplication.processEvents() self.__initData() @@ -1138,6 +1253,7 @@ self.__started = True self.__identifyProject() self.__getClosedBranches() + self.__getHeads() self.__getLogEntries(noEntries=noEntries) def __procFinished(self, exitCode, exitStatus): @@ -1303,17 +1419,20 @@ self.__resizeColumnsLog() if self.__started: - if self.__selectedRevisions: - foundItems = self.logTree.findItems( - self.__selectedRevisions[0], Qt.MatchExactly, - self.RevisionColumn) - if foundItems: - self.logTree.setCurrentItem(foundItems[0]) + if not self.__finishCallbacks: + # we are really done + if self.__selectedRevisions: + foundItems = self.logTree.findItems( + self.__selectedRevisions[0], Qt.MatchExactly, + self.RevisionColumn) + if foundItems: + self.logTree.setCurrentItem(foundItems[0]) + else: + self.logTree.setCurrentItem( + self.logTree.topLevelItem(0)) else: self.logTree.setCurrentItem(self.logTree.topLevelItem(0)) - else: - self.logTree.setCurrentItem(self.logTree.topLevelItem(0)) - self.__started = False + self.__started = False if self.commandMode in ("incoming", "outgoing"): self.commandMode = "log" # switch to log mode @@ -1348,8 +1467,9 @@ self.__filterLogs() self.__updateToolMenuActions() - # restore current item - if self.__selectedRevisions: + # restore selected item + if self.__selectedRevisions and not self.__finishCallbacks: + # we are really done for revision in self.__selectedRevisions: items = self.logTree.findItems( revision, Qt.MatchExactly, self.RevisionColumn) @@ -1452,13 +1572,15 @@ Private slot to update the status of the tool menu actions and the tool menu button. """ - if self.initialCommandMode == "log" and self.projectMode: + if self.initialCommandMode in ("log", "full_log") and self.projectMode: # do the phase action # step 1: count entries with changeable phases secret = 0 draft = 0 public = 0 - for itm in self.logTree.selectedItems(): + for itm in [item for item in self.logTree.selectedItems() + if not item.data(0, self.__incomingRole)]: + # count phase for local items only phase = itm.text(self.PhaseColumn) if phase == self.phases["draft"]: draft += 1 @@ -1479,7 +1601,9 @@ # step 1: count selected entries not belonging to the # current branch otherBranches = 0 - for itm in self.logTree.selectedItems(): + for itm in [item for item in self.logTree.selectedItems() + if not item.data(0, self.__incomingRole)]: + # for local items only branch = itm.text(self.BranchColumn) if branch != self.__projectBranch: otherBranches += 1 @@ -1487,15 +1611,27 @@ # step 2: set the status of the graft action self.__graftAct.setEnabled(otherBranches > 0) - selectedItemsCount = len(self.logTree.selectedItems()) + selectedItemsCount = len([ + itm for itm in self.logTree.selectedItems() + if not itm.data(0, self.__incomingRole) + ]) + selectedIncomingItemsCount = len([ + itm for itm in self.logTree.selectedItems() + if itm.data(0, self.__incomingRole) + ]) + self.__mergeAct.setEnabled(selectedItemsCount == 1) self.__tagAct.setEnabled(selectedItemsCount == 1) self.__switchAct.setEnabled(selectedItemsCount == 1) self.__bookmarkAct.setEnabled(selectedItemsCount == 1) self.__bookmarkMoveAct.setEnabled(selectedItemsCount == 1) - self.__pullAct.setText(self.tr("Pull Changes")) - self.__fetchAct.setText(self.tr("Fetch Changes")) + if selectedIncomingItemsCount > 0: + self.__pullAct.setText(self.tr("Pull Selected Changes")) + self.__fetchAct.setText(self.tr("Fetch Selected Changes")) + else: + self.__pullAct.setText(self.tr("Pull Changes")) + self.__fetchAct.setText(self.tr("Fetch Changes")) if self.vcs.canPull(): self.__pullAct.setEnabled(True) self.__lfPullAct.setEnabled( @@ -1511,6 +1647,8 @@ if self.vcs.canPush(): self.__pushAct.setEnabled( selectedItemsCount == 1 and + not self.logTree.selectedItems()[0].data( + 0, self.__incomingRole) and self.logTree.selectedItems()[0].text(self.PhaseColumn) == self.phases["draft"]) self.__pushAllAct.setEnabled(True) @@ -1522,7 +1660,20 @@ self.vcs.isExtensionActive("strip") and selectedItemsCount == 1) - self.__bundleAct.setEnabled(self.logTree.topLevelItemCount() > 0) + # count incoming items for 'full_log' + if self.initialCommandMode == "full_log": + # incoming items are at the top + incomingCount = 0 + for row in range(self.logTree.topLevelItemCount()): + if self.logTree.topLevelItem(row).data( + 0, self.__incomingRole): + incomingCount += 1 + else: + break + localCount = self.logTree.topLevelItemCount() - incomingCount + else: + localCount = self.logTree.topLevelItemCount() + self.__bundleAct.setEnabled(localCount > 0) self.__unbundleAct.setEnabled(False) self.__gpgSignAct.setEnabled( @@ -1532,6 +1683,14 @@ self.vcs.isExtensionActive("gpg") and selectedItemsCount == 1) + if self.vcs.isExtensionActive("closehead"): + revs = [itm.text(self.RevisionColumn).strip().split(":", 1)[0] + for itm in self.logTree.selectedItems() + if not itm.data(0, self.__incomingRole)] + revs = [rev for rev in revs if rev in self.__headRevisions] + self.__closeHeadsAct.setEnabled(len(revs) > 0) + else: + self.__closeHeadsAct.setEnabled(False) self.actionsButton.setEnabled(True) elif self.initialCommandMode == "incoming" and self.projectMode: @@ -1545,20 +1704,17 @@ self.__pullAct.setText(self.tr("Pull Selected Changes")) self.__fetchAct.setText(self.tr("Fetch Selected Changes")) if self.vcs.canPull() and not bool(self.__bundle): - # step 1: determine number of selected draft changesets - # i.e. those that can be pulled - selectedDraftItemsCount = 0 - for itm in self.logTree.selectedItems(): - phase = itm.text(self.PhaseColumn) - if phase == self.phases["draft"]: - selectedDraftItemsCount += 1 - self.__pullAct.setEnabled(selectedDraftItemsCount > 0) + selectedIncomingItemsCount = len([ + itm for itm in self.logTree.selectedItems() + if itm.data(0, self.__incomingRole) + ]) + self.__pullAct.setEnabled(selectedIncomingItemsCount > 0) self.__lfPullAct.setEnabled( self.vcs.isExtensionActive("largefiles") and selectedItemsCount > 0) self.__fetchAct.setEnabled( self.vcs.isExtensionActive("fetch") and - selectedDraftItemsCount > 0) + selectedIncomingItemsCount > 0) else: self.__pullAct.setEnabled(False) self.__lfPullAct.setEnabled(False) @@ -1781,8 +1937,11 @@ """ Private slot to handle the Next button. """ - if self.__lastRev > 0 and self.nextButton.isEnabled(): - self.__getLogEntries(startRev=self.__lastRev - 1) + if self.nextButton.isEnabled(): + if self.__lastRev > 0: + self.__getLogEntries(startRev=self.__lastRev - 1) + else: + self.__getLogEntries() @pyqtSlot(QDate) def on_fromDate_dateChanged(self, date): @@ -1913,6 +2072,9 @@ fieldIndex = self.__changesRole searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive) indexIsRole = True + elif txt == "phase": + fieldIndex = self.PhaseColumn + searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive) else: fieldIndex = self.__messageRole searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive) @@ -1933,9 +2095,13 @@ self.limitSpinBox.setEnabled(True) @pyqtSlot() - def on_refreshButton_clicked(self): + def on_refreshButton_clicked(self, addNext=False): """ Private slot to refresh the log. + + @param addNext flag indicating to get a second batch of log entries as + well + @type bool """ self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False) self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True) @@ -1951,12 +2117,18 @@ if self.initialCommandMode in ("incoming", "outgoing"): self.nextButton.setEnabled(False) self.limitSpinBox.setEnabled(False) + if addNext: + self.__addFinishCallback(self.on_nextButton_clicked) else: self.nextButton.setEnabled(True) self.limitSpinBox.setEnabled(True) - self.commandMode = self.initialCommandMode - self.start(self.__filename, isFile=self.__isFile, + if self.initialCommandMode == "full_log": + self.commandMode = "incoming" + self.__addFinishCallback(self.on_nextButton_clicked) + else: + self.commandMode = self.initialCommandMode + self.start(self.__filename, bundle=self.__bundle, isFile=self.__isFile, noEntries=self.logTree.topLevelItemCount()) def on_passwordCheckBox_toggled(self, isOn): @@ -2014,27 +2186,29 @@ """ Private slot to handle the Change Phase action. """ - currentPhase = self.logTree.selectedItems()[0].text(self.PhaseColumn) - revs = [] - for itm in self.logTree.selectedItems(): - if itm.text(self.PhaseColumn) == currentPhase: - revs.append( - itm.text(self.RevisionColumn).split(":")[0].strip()) - - if not revs: - self.__phaseAct.setEnabled(False) - return - - if currentPhase == self.phases["draft"]: - newPhase = self.phases["secret"] - data = (revs, "s", True) - else: - newPhase = self.phases["draft"] - data = (revs, "d", False) - res = self.vcs.hgPhase(self.repodir, data) - if res: + itm = self.logTree.selectedItems()[0] + if not itm.data(0, self.__incomingRole): + currentPhase = itm.text(self.PhaseColumn) + revs = [] for itm in self.logTree.selectedItems(): - itm.setText(self.PhaseColumn, newPhase) + if itm.text(self.PhaseColumn) == currentPhase: + revs.append( + itm.text(self.RevisionColumn).split(":")[0].strip()) + + if not revs: + self.__phaseAct.setEnabled(False) + return + + if currentPhase == self.phases["draft"]: + newPhase = self.phases["secret"] + data = (revs, "s", True) + else: + newPhase = self.phases["draft"] + data = (revs, "d", False) + res = self.vcs.hgPhase(self.repodir, data) + if res: + for itm in self.logTree.selectedItems(): + itm.setText(self.PhaseColumn, newPhase) @pyqtSlot() def __graftActTriggered(self): @@ -2043,7 +2217,8 @@ """ revs = [] - for itm in self.logTree.selectedItems(): + for itm in [item for item in self.logTree.selectedItems() + if not item.data(0, self.__incomingRole)]: branch = itm.text(self.BranchColumn) if branch != self.__projectBranch: revs.append( @@ -2069,7 +2244,8 @@ """ Private slot to tag the selected revision. """ - if len(self.logTree.selectedItems()) == 1: + if len([itm for itm in self.logTree.selectedItems() + if not itm.data(0, self.__incomingRole)]) == 1: itm = self.logTree.selectedItems()[0] rev = itm.text(self.RevisionColumn).strip().split(":", 1)[0] tag = itm.text(self.TagsColumn).strip().split(", ", 1)[0] @@ -2078,12 +2254,31 @@ self.on_refreshButton_clicked() @pyqtSlot() + def __closeHeadsActTriggered(self): + """ + Private slot to close the selected head revisions. + """ + if self.vcs.isExtensionActive("closehead"): + revs = [itm.text(self.RevisionColumn).strip().split(":", 1)[0] + for itm in self.logTree.selectedItems() + if not itm.data(0, self.__incomingRole)] + revs = [rev for rev in revs if rev in self.__headRevisions] + if revs: + closeheadExtension = self.vcs.getExtensionObject("closehead") + if closeheadExtension is not None: + closeheadExtension.hgCloseheads( + self.repodir, revisions=revs) + + self.on_refreshButton_clicked() + + @pyqtSlot() def __switchActTriggered(self): """ Private slot to switch the working directory to the selected revision. """ - if len(self.logTree.selectedItems()) == 1: + if len([itm for itm in self.logTree.selectedItems() + if not itm.data(0, self.__incomingRole)]) == 1: itm = self.logTree.selectedItems()[0] rev = itm.text(self.RevisionColumn).strip().split(":", 1)[0] bookmarks = [bm.strip() for bm in @@ -2121,7 +2316,8 @@ """ Private slot to bookmark the selected revision. """ - if len(self.logTree.selectedItems()) == 1: + if len([itm for itm in self.logTree.selectedItems() + if not itm.data(0, self.__incomingRole)]) == 1: itm = self.logTree.selectedItems()[0] rev, changeset = \ itm.text(self.RevisionColumn).strip().split(":", 1) @@ -2142,7 +2338,8 @@ """ Private slot to move a bookmark to the selected revision. """ - if len(self.logTree.selectedItems()) == 1: + if len([itm for itm in self.logTree.selectedItems() + if not itm.data(0, self.__incomingRole)]) == 1: itm = self.logTree.selectedItems()[0] rev, changeset = \ itm.text(self.RevisionColumn).strip().split(":", 1) @@ -2166,7 +2363,8 @@ Private slot to pull large files of selected revisions. """ revs = [] - for itm in self.logTree.selectedItems(): + for itm in [item for item in self.logTree.selectedItems() + if not item.data(0, self.__incomingRole)]: rev = itm.text(self.RevisionColumn).strip().split(":", 1)[0] if rev: revs.append(rev) @@ -2182,22 +2380,20 @@ """ shouldReopen = False refresh = False + addNext = False - if self.initialCommandMode == "log": - shouldReopen = self.vcs.getExtensionObject("fetch").hgFetch( - self.repodir) - refresh = True - elif self.initialCommandMode == "incoming": + if self.initialCommandMode in ("log", "full_log", "incoming"): revs = [] - for itm in self.logTree.selectedItems(): + for itm in [item for item in self.logTree.selectedItems() + if item.data(0, self.__incomingRole)]: rev = itm.text(self.RevisionColumn).split(":")[1].strip() - phase = itm.text(self.PhaseColumn).strip() - if rev and phase == self.phases["draft"]: + if rev: revs.append(rev) - if revs: - shouldReopen = self.vcs.getExtensionObject("fetch").hgFetch( - self.repodir, ) - refresh = True + shouldReopen = self.vcs.getExtensionObject("fetch").hgFetch( + self.repodir, revisions=revs) + refresh = True + if self.initialCommandMode == "incoming": + addNext = True if shouldReopen: res = E5MessageBox.yesNo( None, @@ -2210,7 +2406,7 @@ return if refresh: - self.on_refreshButton_clicked() + self.on_refreshButton_clicked(addNext=addNext) @pyqtSlot() def __pullActTriggered(self): @@ -2219,20 +2415,19 @@ """ shouldReopen = False refresh = False + addNext = False - if self.initialCommandMode == "log": - shouldReopen = self.vcs.hgPull(self.repodir) - refresh = True - elif self.initialCommandMode == "incoming": + if self.initialCommandMode in ("log", "full_log", "incoming"): revs = [] - for itm in self.logTree.selectedItems(): + for itm in [item for item in self.logTree.selectedItems() + if item.data(0, self.__incomingRole)]: rev = itm.text(self.RevisionColumn).split(":")[1].strip() - phase = itm.text(self.PhaseColumn).strip() - if rev and phase == self.phases["draft"]: + if rev: revs.append(rev) - if revs: - shouldReopen = self.vcs.hgPull(self.repodir, revisions=revs) - refresh = True + shouldReopen = self.vcs.hgPull(self.repodir, revisions=revs) + refresh = True + if self.initialCommandMode == "incoming": + addNext = True if shouldReopen: res = E5MessageBox.yesNo( @@ -2246,7 +2441,7 @@ return if refresh: - self.on_refreshButton_clicked() + self.on_refreshButton_clicked(addNext=addNext) @pyqtSlot() def __pushActTriggered(self): @@ -2255,10 +2450,12 @@ changeset. """ itm = self.logTree.selectedItems()[0] - rev = itm.text(self.RevisionColumn).strip().split(":", 1)[0] - if rev: - self.vcs.hgPush(self.repodir, rev=rev) - self.on_refreshButton_clicked() + if not itm.data(0, self.__incomingRole): + rev = itm.text(self.RevisionColumn).strip().split(":", 1)[0] + if rev: + self.vcs.hgPush(self.repodir, rev=rev) + self.on_refreshButton_clicked( + addNext=self.initialCommandMode == "outgoing") @pyqtSlot() def __pushAllActTriggered(self): @@ -2274,20 +2471,21 @@ Private slot to strip changesets from the repository. """ itm = self.logTree.selectedItems()[0] - rev = itm.text(self.RevisionColumn).strip().split(":", 1)[1] - shouldReopen = self.vcs.getExtensionObject("strip").hgStrip( - self.repodir, rev=rev) - if shouldReopen: - res = E5MessageBox.yesNo( - None, - self.tr("Strip Changesets"), - self.tr( - """The project should be reread. Do this now?"""), - yesDefault=True) - if res: - e5App().getObject("Project").reopenProject() - return - + if not itm.data(0, self.__incomingRole): + rev = itm.text(self.RevisionColumn).strip().split(":", 1)[1] + shouldReopen = self.vcs.getExtensionObject("strip").hgStrip( + self.repodir, rev=rev) + if shouldReopen: + res = E5MessageBox.yesNo( + None, + self.tr("Strip Changesets"), + self.tr( + """The project should be reread. Do this now?"""), + yesDefault=True) + if res: + e5App().getObject("Project").reopenProject() + return + self.on_refreshButton_clicked() @pyqtSlot() @@ -2297,17 +2495,19 @@ changeset. """ itm = self.logTree.selectedItems()[0] - rev = "rev({0})".format( - itm.text(self.RevisionColumn).strip().split(":", 1)[0]) - self.vcs.vcsMerge(self.repodir, rev=rev) + if not itm.data(0, self.__incomingRole): + rev = "rev({0})".format( + itm.text(self.RevisionColumn).strip().split(":", 1)[0]) + self.vcs.vcsMerge(self.repodir, rev=rev) @pyqtSlot() def __bundleActTriggered(self): """ Private slot to create a changegroup file. """ - if self.initialCommandMode == "log": - selectedItems = self.logTree.selectedItems() + if self.initialCommandMode in ("log", "full_log"): + selectedItems = [itm for itm in self.logTree.selectedItems() + if not itm.data(0, self.__incomingRole)] if len(selectedItems) == 0: # all revisions of the local repository will be bundled bundleData = { @@ -2386,7 +2586,8 @@ Private slot to sign the selected revisions. """ revs = [] - for itm in self.logTree.selectedItems(): + for itm in [item for item in self.logTree.selectedItems() + if not item.data(0, self.__incomingRole)]: rev = itm.text(self.RevisionColumn).split(":", 1)[0].strip() if rev: revs.append(rev) @@ -2400,11 +2601,12 @@ """ Private slot to verify the signatures of a selected revisions. """ - rev = self.logTree.selectedItems()[0].text(self.RevisionColumn)\ - .split(":", 1)[0].strip() - if rev: - self.vcs.getExtensionObject("gpg").hgGpgVerifySignatures( - self.repodir, rev=rev) + itm = self.logTree.selectedItems()[0] + if not itm.data(0, self.__incomingRole): + rev = itm.text(self.RevisionColumn).split(":", 1)[0].strip() + if rev: + self.vcs.getExtensionObject("gpg").hgGpgVerifySignatures( + self.repodir, rev=rev) def __selectAllActTriggered(self, select=True): """
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/HgTagBranchListDialog.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/HgTagBranchListDialog.py Mon May 20 22:44:12 2019 +0200 @@ -18,7 +18,7 @@ from PyQt5.QtCore import pyqtSlot, QProcess, Qt, QTimer, QCoreApplication, \ QPoint from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QHeaderView, \ - QTreeWidgetItem, QLineEdit, QMenu + QTreeWidgetItem, QLineEdit, QMenu, QAbstractItemView from E5Gui.E5Application import e5App from E5Gui import E5MessageBox @@ -58,6 +58,7 @@ self.allTagsList = None self.__hgClient = vcs.getClient() self.__currentRevision = "" + self.__currentBranch = "" self.tagList.headerItem().setText(self.tagList.columnCount(), "") self.tagList.header().setSortIndicator(3, Qt.AscendingOrder) @@ -110,6 +111,9 @@ if not tags: self.setWindowTitle(self.tr("Mercurial Branches List")) self.tagList.headerItem().setText(2, self.tr("Status")) + if self.vcs.isExtensionActive("closehead"): + self.tagList.setSelectionMode( + QAbstractItemView.ExtendedSelection) self.activateWindow() self.tagsList = tagsList @@ -377,10 +381,10 @@ """ Private method to highlight the current branch with a bold font. """ - currentBranch = self.vcs.hgGetCurrentBranch(self.__repoDir) - if currentBranch: + self.__currentBranch = self.vcs.hgGetCurrentBranch(self.__repoDir) + if self.__currentBranch: items = self.tagList.findItems( - currentBranch, Qt.MatchCaseSensitive, 3) + self.__currentBranch, Qt.MatchCaseSensitive, 3) if len(items) == 1: font = items[0].font(3) font.setBold(True) @@ -427,13 +431,24 @@ UI.PixmapCache.getIcon("vcsSwitch.png"), self.tr("Switch to"), self.__switchTo) else: - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("vcsSwitch.png"), self.tr("Switch to"), self.__switchTo) + act.setEnabled(itm.text(3) != self.__currentBranch) menu.addSeparator() - act = menu.addAction(self.tr("Close Branch"), - self.__closeBranch) - act.setEnabled(itm.text(3) != "default") + if self.vcs.isExtensionActive("closehead"): + act = menu.addAction( + UI.PixmapCache.getIcon("closehead"), + self.tr("Close Branches"), self.__closeBranchHeads) + act.setEnabled(len([ + itm for itm in self.tagList.selectedItems() + if itm.text(3) != "default" + ]) > 0) + else: + act = menu.addAction( + UI.PixmapCache.getIcon("closehead"), + self.tr("Close Branch"), self.__closeBranch) + act.setEnabled(itm.text(3) != "default") menu.popup(self.tagList.mapToGlobal(pos)) def __switchTo(self): @@ -493,3 +508,23 @@ revision=currentBranch) self.on_refreshButton_clicked() + + def __closeBranchHeads(self): + """ + Private slot to close the selected branches. + """ + branches = [itm.text(3) for itm in self.tagsList.selectedItems() + if itm.text(3) != "default"] + + from UI.DeleteFilesConfirmationDialog import \ + DeleteFilesConfirmationDialog + dlg = DeleteFilesConfirmationDialog( + self.parent(), + self.tr("Close Branches"), + self.tr( + "Do you really want to close all listed branches?"), + branches) + yes = dlg.exec_() == QDialog.Accepted + if yes: + self.vcs.getExtensionObject("closehead").hgCloseheads( + self.__repoDir, branches)
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/HgUserConfigDialog.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/HgUserConfigDialog.py Mon May 20 22:44:12 2019 +0200 @@ -199,6 +199,13 @@ if "largefiles" in self.__config["extensions"]: del self.__config["extensions"]["largefiles"] self.__config["extensions"]["#largefiles"] = "" + + if self.closeheadCheckBox.isChecked() and self.__version >= (4, 8, 0): + self.__config["extensions"]["closehead"] = "" + else: + if "closehead" in self.__config["extensions"]: + del self.__config["extensions"]["closehead"] + self.__config["extensions"]["#closehead"] = "" ################################################################### ## http_proxy section ################################################################### @@ -335,6 +342,9 @@ "strip" in self.__config["extensions"]) self.histeditCheckBox.setChecked( "histedit" in self.__config["extensions"]) + self.closeheadCheckBox.setChecked( + "closehead" in self.__config["extensions"]) + self.closeheadCheckBox.setEnabled(self.__version >= (4, 8, 0)) # step 3: extract large files information if "largefiles" in self.__config:
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/HgUserConfigDialog.ui Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/HgUserConfigDialog.ui Mon May 20 22:44:12 2019 +0200 @@ -20,7 +20,7 @@ <item> <widget class="QTabWidget" name="tabWidget"> <property name="currentIndex"> - <number>3</number> + <number>1</number> </property> <widget class="QWidget" name="tab"> <attribute name="title"> @@ -121,6 +121,16 @@ </property> <layout class="QGridLayout" name="gridLayout_2"> <item row="0" column="0"> + <widget class="QCheckBox" name="closeheadCheckBox"> + <property name="toolTip"> + <string>Select to activate the closehead extension</string> + </property> + <property name="text"> + <string>Close Head</string> + </property> + </widget> + </item> + <item row="0" column="1"> <widget class="QCheckBox" name="fetchCheckBox"> <property name="toolTip"> <string>Select to activate the fetch extension</string> @@ -130,7 +140,7 @@ </property> </widget> </item> - <item row="0" column="1"> + <item row="1" column="0"> <widget class="QCheckBox" name="gpgCheckBox"> <property name="toolTip"> <string>Select to activate the GPG extension</string> @@ -140,7 +150,7 @@ </property> </widget> </item> - <item row="1" column="0"> + <item row="1" column="1"> <widget class="QCheckBox" name="histeditCheckBox"> <property name="toolTip"> <string>Select to activate the histedit extension</string> @@ -150,7 +160,7 @@ </property> </widget> </item> - <item row="1" column="1"> + <item row="2" column="0"> <widget class="QCheckBox" name="largefilesCheckBox"> <property name="toolTip"> <string>Select to activate the largefiles extension</string> @@ -160,7 +170,7 @@ </property> </widget> </item> - <item row="2" column="0"> + <item row="2" column="1"> <widget class="QCheckBox" name="purgeCheckBox"> <property name="toolTip"> <string>Select to activate the Purge extension</string> @@ -170,7 +180,7 @@ </property> </widget> </item> - <item row="2" column="1"> + <item row="3" column="0"> <widget class="QCheckBox" name="queuesCheckBox"> <property name="toolTip"> <string>Select to activate the queues extension</string> @@ -180,7 +190,7 @@ </property> </widget> </item> - <item row="3" column="0"> + <item row="3" column="1"> <widget class="QCheckBox" name="rebaseCheckBox"> <property name="toolTip"> <string>Select to activate the rebase extension</string> @@ -190,7 +200,7 @@ </property> </widget> </item> - <item row="3" column="1"> + <item row="4" column="0"> <widget class="QCheckBox" name="shelveCheckBox"> <property name="toolTip"> <string>Select to activate the shelve extension</string> @@ -200,7 +210,7 @@ </property> </widget> </item> - <item row="4" column="0"> + <item row="4" column="1"> <widget class="QCheckBox" name="stripCheckBox"> <property name="toolTip"> <string>Select to activate the strip extension</string> @@ -672,6 +682,7 @@ <tabstop>tabWidget</tabstop> <tabstop>userNameEdit</tabstop> <tabstop>emailEdit</tabstop> + <tabstop>closeheadCheckBox</tabstop> <tabstop>fetchCheckBox</tabstop> <tabstop>gpgCheckBox</tabstop> <tabstop>histeditCheckBox</tabstop>
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Mon May 20 22:44:12 2019 +0200 @@ -49,6 +49,7 @@ from .LargefilesExtension.ProjectHelper import LargefilesProjectHelper from .StripExtension.ProjectHelper import StripProjectHelper from .HisteditExtension.ProjectHelper import HisteditProjectHelper + from .CloseheadExtension.ProjectHelper import CloseheadProjectHelper self.__extensions = { "mq": QueuesProjectHelper(), "fetch": FetchProjectHelper(), @@ -59,6 +60,7 @@ "largefiles": LargefilesProjectHelper(), "strip": StripProjectHelper(), "histedit": HisteditProjectHelper(), + "closehead": CloseheadProjectHelper(), } self.__extensionMenuTitles = {} @@ -554,6 +556,7 @@ self.hgPushBranchAct = E5Action( self.tr('Push new branch'), + UI.PixmapCache.getIcon("vcsCommit.png"), self.tr('Push new branch'), 0, 0, self, 'mercurial_push_branch') self.hgPushBranchAct.setStatusTip(self.tr( @@ -570,6 +573,7 @@ self.hgCloseBranchAct = E5Action( self.tr('Close branch'), + UI.PixmapCache.getIcon("closehead"), self.tr('Close branch'), 0, 0, self, 'mercurial_close_branch') self.hgCloseBranchAct.setStatusTip(self.tr( @@ -1517,9 +1521,11 @@ title = self.__toolbar.windowTitle() toolbarManager.addToolBar(self.__toolbar, title) + toolbarManager.addAction(self.hgIncomingAct, title) toolbarManager.addAction(self.hgPullAct, title) toolbarManager.addAction(self.vcsUpdateAct, title) toolbarManager.addAction(self.vcsCommitAct, title) + toolbarManager.addAction(self.hgOutgoingAct, title) toolbarManager.addAction(self.hgPushAct, title) toolbarManager.addAction(self.hgPushForcedAct, title) toolbarManager.addAction(self.hgExtDiffAct, title) @@ -1539,13 +1545,18 @@ toolbarManager.addAction(self.hgBookmarkDeleteAct, title) toolbarManager.addAction(self.hgBookmarkRenameAct, title) toolbarManager.addAction(self.hgBookmarkMoveAct, title) + toolbarManager.addAction(self.hgBookmarkIncomingAct, title) toolbarManager.addAction(self.hgBookmarkPullAct, title) + toolbarManager.addAction(self.hgBookmarkPullCurrentAct, title) + toolbarManager.addAction(self.hgBookmarkOutgoingAct, title) toolbarManager.addAction(self.hgBookmarkPushAct, title) + toolbarManager.addAction(self.hgBookmarkPushCurrentAct, title) toolbarManager.addAction(self.hgImportAct, title) toolbarManager.addAction(self.hgExportAct, title) toolbarManager.addAction(self.hgBundleAct, title) toolbarManager.addAction(self.hgPreviewBundleAct, title) toolbarManager.addAction(self.hgUnbundleAct, title) + toolbarManager.addAction(self.hgDeleteBackupsAct, title) self.__toolbar.setEnabled(False) self.__toolbar.setVisible(False) @@ -1613,6 +1624,8 @@ self.extensionMenus[extensionName].menu()\ .isTearOffMenuVisible(): self.extensionMenus[extensionName].menu().hideTearOffMenu() + if self.vcs.version < (4, 8, 0): + self.extensionMenus["closehead"].setEnabled(False) def __hgExtendedDiff(self): """
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.py Mon May 20 22:44:12 2019 +0200 @@ -19,11 +19,14 @@ """ Class implementing a dialog to enter the data for a shelve operation. """ - def __init__(self, parent=None): + def __init__(self, version, parent=None): """ Constructor - @param parent reference to the parent widget (QWidget) + @param version Mercurial version + @type tuple of three int + @param parent reference to the parent widget + @type QWidget """ super(HgShelveDataDialog, self).__init__(parent) self.setupUi(self) @@ -31,6 +34,10 @@ self.__initialDateTime = QDateTime.currentDateTime() self.dateTimeEdit.setDateTime(self.__initialDateTime) + if version < (5, 0, 0): + self.keepCheckBox.setChecked(False) + self.keepCheckBox.hide() + msh = self.minimumSizeHint() self.resize(max(self.width(), msh.width()), msh.height()) @@ -38,9 +45,10 @@ """ Public method to get the user data. - @return tuple containing the name (string), date (QDateTime), - message (string) and a flag indicating to add/remove - new/missing files (boolean) + @return tuple containing the name, date, message, a flag indicating + to add/remove new/missing files and a flag indicating to keep the + shelved changes in the working directory + @rtype tuple of (str, QDateTime, str, bool, bool) """ if self.dateTimeEdit.dateTime() != self.__initialDateTime: dateTime = self.dateTimeEdit.dateTime() @@ -51,4 +59,5 @@ dateTime, self.messageEdit.text(), self.addRemoveCheckBox.isChecked(), + self.keepCheckBox.isChecked(), )
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.ui Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.ui Mon May 20 22:44:12 2019 +0200 @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>500</width> - <height>170</height> + <height>167</height> </rect> </property> <property name="windowTitle"> @@ -93,6 +93,16 @@ </widget> </item> <item row="4" column="0" colspan="2"> + <widget class="QCheckBox" name="keepCheckBox"> + <property name="toolTip"> + <string>Select to shelve, but keep the changes in the working directory</string> + </property> + <property name="text"> + <string>Shelve, but keep changes</string> + </property> + </widget> + </item> + <item row="5" column="0" colspan="2"> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum>
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/shelve.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/shelve.py Mon May 20 22:44:12 2019 +0200 @@ -101,9 +101,9 @@ res = False from .HgShelveDataDialog import HgShelveDataDialog - dlg = HgShelveDataDialog() + dlg = HgShelveDataDialog(self.vcs.version) if dlg.exec_() == QDialog.Accepted: - shelveName, dateTime, message, addRemove = dlg.getData() + shelveName, dateTime, message, addRemove, keep = dlg.getData() args = self.vcs.initCommand("shelve") if shelveName: @@ -117,6 +117,8 @@ if dateTime.isValid(): args.append("--date") args.append(dateTime.toString("yyyy-MM-dd hh:mm:ss")) + if self.vcs.version >= (5, 0, 0) and keep: + args.append("--keep") args.append("-v") if isinstance(name, list):
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/hg.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/hg.py Mon May 20 22:44:12 2019 +0200 @@ -147,6 +147,7 @@ from .LargefilesExtension.largefiles import Largefiles from .StripExtension.strip import Strip from .HisteditExtension.histedit import Histedit + from .CloseheadExtension.closehead import Closehead self.__extensions = { "mq": Queues(self), "fetch": Fetch(self), @@ -157,6 +158,7 @@ "largefiles": Largefiles(self), "strip": Strip(self), "histedit": Histedit(self), + "closehead": Closehead(self), } def getPlugin(self): @@ -3441,6 +3443,8 @@ extensionName = \ line.split("=", 1)[0].strip().split(".")[-1].strip() self.__activeExtensions.append(extensionName) + if self.version < (4, 8, 0) and "closehead" in self.__activeExtensions: + self.__activeExtensions.remove["closehead"] if activeExtensions != sorted(self.__activeExtensions): self.activeExtensionsChanged.emit()
--- a/eric6/Plugins/ViewManagerPlugins/Tabview/Tabview.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/ViewManagerPlugins/Tabview/Tabview.py Mon May 20 22:44:12 2019 +0200 @@ -209,18 +209,7 @@ self.navigationButton.setEnabled(False) self.rightCornerWidgetLayout.addWidget(self.navigationButton) - if Preferences.getUI("SingleCloseButton") or \ - not hasattr(self, 'setTabsClosable'): - self.closeButton = QToolButton(self) - self.closeButton.setIcon(UI.PixmapCache.getIcon("close.png")) - self.closeButton.setToolTip( - self.tr("Close the current editor")) - self.closeButton.setEnabled(False) - self.closeButton.clicked[bool].connect(self.__closeButtonClicked) - self.rightCornerWidgetLayout.addWidget(self.closeButton) - else: - self.tabCloseRequested.connect(self.__closeRequested) - self.closeButton = None + self.tabCloseRequested.connect(self.__closeRequested) self.setCornerWidget(self.rightCornerWidget, Qt.TopRightCorner) @@ -370,10 +359,7 @@ editor = assembly.getEditor() super(TabWidget, self).addTab( assembly, UI.PixmapCache.getIcon("empty.png"), title) - if self.closeButton: - self.closeButton.setEnabled(True) - else: - self.setTabsClosable(True) + self.setTabsClosable(True) self.navigationButton.setEnabled(True) if editor not in self.editors: @@ -404,10 +390,7 @@ index, assembly, UI.PixmapCache.getIcon("empty.png"), title) - if self.closeButton: - self.closeButton.setEnabled(True) - else: - self.setTabsClosable(True) + self.setTabsClosable(True) self.navigationButton.setEnabled(True) if editor not in self.editors: @@ -488,10 +471,7 @@ super(TabWidget, self).addTab( self.emptyLabel, UI.PixmapCache.getIcon("empty.png"), "") self.emptyLabel.show() - if self.closeButton: - self.closeButton.setEnabled(False) - else: - self.setTabsClosable(False) + self.setTabsClosable(False) self.navigationButton.setEnabled(False) def __relocateTab(self, sourceId, sourceIndex, targetIndex):
--- a/eric6/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py Mon May 20 22:44:12 2019 +0200 @@ -17,9 +17,10 @@ import sys import datetime -from PyQt5.QtCore import pyqtSlot, Qt +from PyQt5.QtCore import pyqtSlot, Qt, QUrl from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QTreeWidgetItem, \ QListWidgetItem, QApplication +from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply from E5Gui.E5Application import e5App from E5Gui import E5MessageBox, E5FileDialog @@ -39,6 +40,8 @@ It displays a dialog for entering the parameters for the E5MessageBox code generator. """ + ClassifiersUrl = "https://pypi.org/pypi?%3Aaction=list_classifiers" + def __init__(self, parent=None): """ Constructor @@ -48,6 +51,8 @@ super(SetupWizardDialog, self).__init__(parent) self.setupUi(self) + self.__replies = [] + self.dataTabWidget.setCurrentIndex(0) self.__packageDirCompleter = E5DirCompleter(self.packageEdit) @@ -69,13 +74,7 @@ self.maintainerEmailEdit]: lineEdit.setStyleSheet(self.__mandatoryStyleSheet) - self.developmentStatusComboBox.addItem("", "") - - self.__populateFromTroveLists() - - self.licenseClassifierComboBox.setCurrentIndex( - self.licenseClassifierComboBox.findText( - "(GPLv3)", Qt.MatchContains | Qt.MatchCaseSensitive)) + self.__loadClassifiersFromPyPI() self.__okButton = self.buttonBox.button(QDialogButtonBox.Ok) self.__okButton.setEnabled(False) @@ -109,9 +108,46 @@ self.__okButton.setEnabled(enable) - def __populateFromTroveLists(self): + def __loadClassifiersFromPyPI(self): + """ + Private method to populate the classifiers list with data retrieved + from PyPI. + """ + request = QNetworkRequest(QUrl(SetupWizardDialog.ClassifiersUrl)) + request.setAttribute(QNetworkRequest.CacheLoadControlAttribute, + QNetworkRequest.AlwaysNetwork) + reply = e5App().getObject("UserInterface").networkAccessManager().get( + request) + reply.finished.connect(lambda: self.__classifiersDownloadDone(reply)) + self.__replies.append(reply) + + @pyqtSlot() + def __classifiersDownloadDone(self, reply): + """ + Private slot called, after the classifiers file has been downloaded + from the internet. + + @param reply reference to the network reply + @type QNetworkReply + """ + reply.deleteLater() + if reply in self.__replies: + self.__replies.remove(reply) + if reply.error() == QNetworkReply.NoError: + ioEncoding = Preferences.getSystem("IOEncoding") + lines = str(reply.readAll(), ioEncoding, 'replace').splitlines() + + self.__populateClassifiers(lines) + + reply.close() + + @pyqtSlot() + def on_localClassifiersButton_clicked(self): """ Private method to populate lists from the Trove list file. + + Note: The trove list file was created from querying + "https://pypi.org/pypi?%3Aaction=list_classifiers". """ filename = os.path.join(os.path.dirname(__file__), "data", "trove_classifiers.txt") @@ -128,8 +164,24 @@ .format(filename, str(err))) return + self.__populateClassifiers(lines) + + def __populateClassifiers(self, classifiers): + """ + Private method to populate the classifiers. + + @param classifiers list of classifiers read from a local file or + retrieved from PyPI + @type list of str + """ + self.licenseClassifierComboBox.clear() + self.classifiersList.clear() + self.developmentStatusComboBox.clear() + + self.developmentStatusComboBox.addItem("", "") + self.__classifiersDict = {} - for line in lines: + for line in classifiers: line = line.strip() if line.startswith("License "): self.licenseClassifierComboBox.addItem( @@ -142,6 +194,10 @@ else: self.__addClassifierEntry(line) self.__classifiersDict = {} + + self.licenseClassifierComboBox.setCurrentIndex( + self.licenseClassifierComboBox.findText( + "(GPLv3)", Qt.MatchContains | Qt.MatchCaseSensitive)) def __addClassifierEntry(self, line): """
--- a/eric6/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.ui Mon May 20 22:44:12 2019 +0200 @@ -488,6 +488,16 @@ </property> </spacer> </item> + <item> + <widget class="QPushButton" name="localClassifiersButton"> + <property name="toolTip"> + <string>Press to populate the classifiers with data retrieved from a local file.</string> + </property> + <property name="text"> + <string>Populate from local file</string> + </property> + </widget> + </item> </layout> </item> <item> @@ -904,13 +914,8 @@ <tabstop>licenseEdit</tabstop> <tabstop>platformsEdit</tabstop> <tabstop>developmentStatusComboBox</tabstop> + <tabstop>localClassifiersButton</tabstop> <tabstop>classifiersList</tabstop> - <tabstop>packagesList</tabstop> - <tabstop>deletePackageButton</tabstop> - <tabstop>addPackageButton</tabstop> - <tabstop>packageEdit</tabstop> - <tabstop>packageDirButton</tabstop> - <tabstop>autodiscoverPackagesButton</tabstop> <tabstop>sourceDirectoryEdit</tabstop> <tabstop>sourceDirectoryButton</tabstop> <tabstop>excludePatternList</tabstop> @@ -925,6 +930,12 @@ <tabstop>deleteScriptButton</tabstop> <tabstop>addScriptButton</tabstop> <tabstop>projectButton</tabstop> + <tabstop>autodiscoverPackagesButton</tabstop> + <tabstop>deletePackageButton</tabstop> + <tabstop>addPackageButton</tabstop> + <tabstop>packageEdit</tabstop> + <tabstop>packageDirButton</tabstop> + <tabstop>packagesList</tabstop> </tabstops> <resources/> <connections>
--- a/eric6/Plugins/WizardPlugins/SetupWizard/data/trove_classifiers.txt Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Plugins/WizardPlugins/SetupWizard/data/trove_classifiers.txt Mon May 20 22:44:12 2019 +0200 @@ -55,6 +55,11 @@ Framework :: Django :: 2.0 Framework :: Django :: 2.1 Framework :: Django :: 2.2 +Framework :: Django CMS +Framework :: Django CMS :: 3.4 +Framework :: Django CMS :: 3.5 +Framework :: Django CMS :: 3.6 +Framework :: Django CMS :: 3.7 Framework :: Flake8 Framework :: Flask Framework :: Hypothesis @@ -322,6 +327,7 @@ Programming Language :: Erlang Programming Language :: Euler Programming Language :: Euphoria +Programming Language :: F# Programming Language :: Forth Programming Language :: Fortran Programming Language :: Haskell
--- a/eric6/Preferences/ConfigurationPages/DebuggerGeneralPage.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/DebuggerGeneralPage.py Mon May 20 22:44:12 2019 +0200 @@ -356,7 +356,7 @@ Public Qt slot to get the index of item at row:column of parent. @param row number of rows - @rtype int + @type int @param column number of columns @type int @param parent the model parent @@ -425,7 +425,7 @@ @rtype str, QBrush or None """ if role == Qt.DisplayRole: - return self.tr('Variable name') + return self.tr("Variable Name") elif role == Qt.BackgroundRole: if index.row() >= 2: return self.bgColorChanged
--- a/eric6/Preferences/ConfigurationPages/DebuggerGeneralPage.ui Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/DebuggerGeneralPage.ui Mon May 20 22:44:12 2019 +0200 @@ -666,14 +666,14 @@ <item row="1" column="0"> <widget class="QLabel" name="label_bgChangedItems"> <property name="text"> - <string>Background colour of changed elements:</string> + <string>Changed elements:</string> </property> </widget> </item> <item row="0" column="0"> <widget class="QLabel" name="label_bgFirstLoaded"> <property name="text"> - <string>Background colour of first opened elements:</string> + <string>First time opened elements:</string> </property> </widget> </item>
--- a/eric6/Preferences/ConfigurationPages/EditorTypingPage.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/EditorTypingPage.py Mon May 20 22:44:12 2019 +0200 @@ -53,10 +53,10 @@ Preferences.getEditorTyping("Python/DedentElse")) self.pythonDedentExceptCheckBox.setChecked( Preferences.getEditorTyping("Python/DedentExcept")) - self.pythonDedentExceptPy24CheckBox.setChecked( - Preferences.getEditorTyping("Python/Py24StyleTry")) self.pythonInsertImportCheckBox.setChecked( Preferences.getEditorTyping("Python/InsertImport")) + self.pythonImportBraceTypeCheckBox.setChecked( + Preferences.getEditorTyping("Python/ImportBraceType")) self.pythonInsertSelfCheckBox.setChecked( Preferences.getEditorTyping("Python/InsertSelf")) self.pythonInsertBlankCheckBox.setChecked( @@ -113,12 +113,12 @@ "Python/DedentExcept", self.pythonDedentExceptCheckBox.isChecked()) Preferences.setEditorTyping( - "Python/Py24StyleTry", - self.pythonDedentExceptPy24CheckBox.isChecked()) - Preferences.setEditorTyping( "Python/InsertImport", self.pythonInsertImportCheckBox.isChecked()) Preferences.setEditorTyping( + "Python/ImportBraceType", + self.pythonImportBraceTypeCheckBox.isChecked()) + Preferences.setEditorTyping( "Python/InsertSelf", self.pythonInsertSelfCheckBox.isChecked()) Preferences.setEditorTyping(
--- a/eric6/Preferences/ConfigurationPages/EditorTypingPage.ui Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/EditorTypingPage.ui Mon May 20 22:44:12 2019 +0200 @@ -162,10 +162,10 @@ <item> <widget class="QCheckBox" name="pythonIndentBraceCheckBox"> <property name="toolTip"> - <string>Select to indent to the brace level after typing 'return'</string> + <string>Select to indent after typing 'return'</string> </property> <property name="text"> - <string>After '(' indent to its level</string> + <string>Automatic indent after '('</string> </property> </widget> </item> @@ -200,6 +200,16 @@ </widget> </item> <item> + <widget class="QCheckBox" name="pythonInsertImportCheckBox"> + <property name="toolTip"> + <string>Select to insert the 'import ' string when the line starts with 'from ...'</string> + </property> + <property name="text"> + <string>Automatic insertion of the 'import' string on 'from xxx'</string> + </property> + </widget> + </item> + <item> <layout class="QHBoxLayout"> <item> <spacer> @@ -218,15 +228,15 @@ </spacer> </item> <item> - <widget class="QCheckBox" name="pythonDedentExceptPy24CheckBox"> + <widget class="QCheckBox" name="pythonImportBraceTypeCheckBox"> <property name="enabled"> <bool>false</bool> </property> <property name="toolTip"> - <string>Select to treat code as Python 2.4 code</string> + <string>Select to create import statements of the form 'from ... import (...)'</string> </property> <property name="text"> - <string>Python 2.4 style 'try:' blocks</string> + <string>Generate '(...)' type import</string> </property> </widget> </item> @@ -246,16 +256,6 @@ </layout> </item> <item> - <widget class="QCheckBox" name="pythonInsertImportCheckBox"> - <property name="toolTip"> - <string>Select to insert the 'import' string</string> - </property> - <property name="text"> - <string>Automatic insertion of the 'import' string on 'from xxx'</string> - </property> - </widget> - </item> - <item> <widget class="QCheckBox" name="pythonInsertSelfCheckBox"> <property name="toolTip"> <string>Select to insert the 'self' string when declaring a method</string> @@ -349,10 +349,10 @@ <item> <widget class="QCheckBox" name="rubyIndentBraceCheckBox"> <property name="toolTip"> - <string>Select to indent to the brace level after typing 'return'</string> + <string>Select to indent after typing 'return'</string> </property> <property name="text"> - <string>After '(' indent to its level</string> + <string>Automatic indent after '('</string> </property> </widget> </item> @@ -441,8 +441,8 @@ <tabstop>pythonInsertQuoteCheckBox</tabstop> <tabstop>pythonDedentElseCheckBox</tabstop> <tabstop>pythonDedentExceptCheckBox</tabstop> - <tabstop>pythonDedentExceptPy24CheckBox</tabstop> <tabstop>pythonInsertImportCheckBox</tabstop> + <tabstop>pythonImportBraceTypeCheckBox</tabstop> <tabstop>pythonInsertSelfCheckBox</tabstop> <tabstop>pythonInsertBlankCheckBox</tabstop> <tabstop>pythonDedentDefCheckBox</tabstop> @@ -464,12 +464,12 @@ <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>99</x> - <y>114</y> + <x>118</x> + <y>113</y> </hint> <hint type="destinationlabel"> - <x>116</x> - <y>144</y> + <x>162</x> + <y>139</y> </hint> </hints> </connection> @@ -480,8 +480,8 @@ <slot>setChecked(bool)</slot> <hints> <hint type="sourcelabel"> - <x>196</x> - <y>114</y> + <x>215</x> + <y>113</y> </hint> <hint type="destinationlabel"> <x>198</x> @@ -490,18 +490,18 @@ </hints> </connection> <connection> - <sender>pythonDedentExceptCheckBox</sender> + <sender>pythonInsertImportCheckBox</sender> <signal>toggled(bool)</signal> - <receiver>pythonDedentExceptPy24CheckBox</receiver> + <receiver>pythonImportBraceTypeCheckBox</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>69</x> - <y>279</y> + <x>82</x> + <y>271</y> </hint> <hint type="destinationlabel"> - <x>80</x> - <y>305</y> + <x>92</x> + <y>297</y> </hint> </hints> </connection>
--- a/eric6/Preferences/ConfigurationPages/HelpAppearancePage.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/HelpAppearancePage.py Mon May 20 22:44:12 2019 +0200 @@ -64,8 +64,6 @@ self.styleSheetPicker.setText(Preferences.getHelp("UserStyleSheet")) - self.tabsCloseButtonCheckBox.setChecked( - Preferences.getUI("SingleCloseButton")) self.warnOnMultipleCloseCheckBox.setChecked( Preferences.getHelp("WarnOnMultipleClose")) @@ -86,8 +84,6 @@ ) self.__displayMode = displayMode - if self.__displayMode != ConfigurationWidget.HelpBrowserMode: - self.tabsGroupBox.hide() def save(self): """ @@ -104,12 +100,6 @@ self.saveColours(Preferences.setHelp) - from ..ConfigurationDialog import ConfigurationWidget - if self.__displayMode == ConfigurationWidget.HelpBrowserMode: - Preferences.setUI( - "SingleCloseButton", - self.tabsCloseButtonCheckBox.isChecked()) - Preferences.setHelp( "WarnOnMultipleClose", self.warnOnMultipleCloseCheckBox.isChecked())
--- a/eric6/Preferences/ConfigurationPages/HelpAppearancePage.ui Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/HelpAppearancePage.ui Mon May 20 22:44:12 2019 +0200 @@ -195,13 +195,6 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> - <widget class="QCheckBox" name="tabsCloseButtonCheckBox"> - <property name="text"> - <string>Show only one close button instead of one for each tab</string> - </property> - </widget> - </item> - <item> <widget class="QCheckBox" name="warnOnMultipleCloseCheckBox"> <property name="toolTip"> <string>Select to issue a warning, if multiple tabs are about to be closed</string> @@ -243,7 +236,6 @@ <tabstop>secureURLsColourButton</tabstop> <tabstop>autoLoadImagesCheckBox</tabstop> <tabstop>styleSheetPicker</tabstop> - <tabstop>tabsCloseButtonCheckBox</tabstop> <tabstop>warnOnMultipleCloseCheckBox</tabstop> </tabstops> <resources/>
--- a/eric6/Preferences/ConfigurationPages/IconsPreviewDialog.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/IconsPreviewDialog.py Mon May 20 22:44:12 2019 +0200 @@ -33,7 +33,7 @@ self.setupUi(self) directory = QDir(dirName) - for icon in directory.entryList(["*.png"]): + for icon in directory.entryList(["*.svg", "*.svgz", "*.png"]): QListWidgetItem( QIcon(os.path.join(dirName, icon)), icon, self.iconView)
--- a/eric6/Preferences/ConfigurationPages/InterfacePage.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/InterfacePage.py Mon May 20 22:44:12 2019 +0200 @@ -47,6 +47,7 @@ # set initial values self.__populateStyleCombo() self.__populateLanguageCombo() + self.__populateShellPositionCombo() self.uiBrowsersListFoldersFirstCheckBox.setChecked( Preferences.getUI("BrowsersListFoldersFirst")) @@ -65,23 +66,6 @@ Preferences.getUI("CaptionFilenameLength")) self.styleSheetPicker.setText(Preferences.getUI("StyleSheet")) - if Preferences.getUI("TopLeftByLeft"): - self.tlLeftButton.setChecked(True) - else: - self.tlTopButton.setChecked(True) - if Preferences.getUI("BottomLeftByLeft"): - self.blLeftButton.setChecked(True) - else: - self.blBottomButton.setChecked(True) - if Preferences.getUI("TopRightByRight"): - self.trRightButton.setChecked(True) - else: - self.trTopButton.setChecked(True) - if Preferences.getUI("BottomRightByRight"): - self.brRightButton.setChecked(True) - else: - self.brTopButton.setChecked(True) - layoutType = Preferences.getUI("LayoutType") if layoutType == "Sidebars": index = 0 @@ -114,10 +98,6 @@ self.numbersCheckBox.setChecked( Preferences.getUI("ShowNumbersViewer")) - self.tabsGroupBox.setEnabled(True) - self.tabsCloseButtonCheckBox.setChecked( - Preferences.getUI("SingleCloseButton")) - self.delaySpinBox.setValue(Preferences.getUI("SidebarDelay")) def save(self): @@ -156,20 +136,6 @@ "StyleSheet", self.styleSheetPicker.text()) - # save the dockarea corner settings - Preferences.setUI( - "TopLeftByLeft", - self.tlLeftButton.isChecked()) - Preferences.setUI( - "BottomLeftByLeft", - self.blLeftButton.isChecked()) - Preferences.setUI( - "TopRightByRight", - self.trRightButton.isChecked()) - Preferences.setUI( - "BottomRightByRight", - self.brRightButton.isChecked()) - # save the language settings uiLanguageIndex = self.languageComboBox.currentIndex() if uiLanguageIndex: @@ -188,6 +154,11 @@ layoutType = "Sidebars" # just in case Preferences.setUI("LayoutType", layoutType) + # save the shell position setting + shellPositionIndex = self.shellPositionComboBox.currentIndex() + shellPosition = self.shellPositionComboBox.itemData(shellPositionIndex) + Preferences.setUI("ShellPosition", shellPosition) + # save the integrated tools activation # left side Preferences.setUI( @@ -220,10 +191,6 @@ "ShowNumbersViewer", self.numbersCheckBox.isChecked()) - Preferences.setUI( - "SingleCloseButton", - self.tabsCloseButtonCheckBox.isChecked()) - Preferences.setUI("SidebarDelay", self.delaySpinBox.value()) def __populateStyleCombo(self): @@ -242,8 +209,7 @@ def __populateLanguageCombo(self): """ - Private method to initialize the language combobox of the Interface - configuration page. + Private method to initialize the language combo box. """ self.languageComboBox.clear() @@ -279,7 +245,21 @@ for locale in localeList: self.languageComboBox.addItem(locales[locale], locale) self.languageComboBox.setCurrentIndex(currentIndex) + + def __populateShellPositionCombo(self): + """ + Private method to initialize the shell position combo box. + """ + self.shellPositionComboBox.addItem(self.tr("Left Side"), "left") + self.shellPositionComboBox.addItem(self.tr("Right Side"), "right") + self.shellPositionComboBox.addItem(self.tr("Bottom Side"), "bottom") + shellPosition = Preferences.getUI("ShellPosition") + if shellPosition not in ("left", "right", "bottom"): + shellPosition = "bottom" + index = self.shellPositionComboBox.findData(shellPosition) + self.shellPositionComboBox.setCurrentIndex(index) + @pyqtSlot() def on_resetLayoutButton_clicked(self): """
--- a/eric6/Preferences/ConfigurationPages/InterfacePage.ui Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/InterfacePage.ui Mon May 20 22:44:12 2019 +0200 @@ -7,10 +7,10 @@ <x>0</x> <y>0</y> <width>557</width> - <height>1300</height> + <height>858</height> </rect> </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> + <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <widget class="QLabel" name="headerLabel"> <property name="text"> @@ -197,131 +197,6 @@ </layout> </item> <item> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string>Dockarea Corner Usage</string> - </property> - <layout class="QGridLayout"> - <item row="0" column="0"> - <widget class="QGroupBox" name="groupBox_2"> - <property name="title"> - <string>Top Left Corner</string> - </property> - <layout class="QVBoxLayout"> - <item> - <widget class="QRadioButton" name="tlTopButton"> - <property name="toolTip"> - <string>Select to assign the top left corner to the top dockarea</string> - </property> - <property name="text"> - <string>Top dockarea</string> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="tlLeftButton"> - <property name="toolTip"> - <string>Select to assign the top left corner to the left dockarea</string> - </property> - <property name="text"> - <string>Left dockarea</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="0" column="1"> - <widget class="QGroupBox" name="groupBox_5"> - <property name="title"> - <string>Top Right Corner</string> - </property> - <layout class="QVBoxLayout"> - <item> - <widget class="QRadioButton" name="trTopButton"> - <property name="toolTip"> - <string>Select to assign the top right corner to the top dockarea</string> - </property> - <property name="text"> - <string>Top dockarea</string> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="trRightButton"> - <property name="toolTip"> - <string>Select to assign the top right corner to the right dockarea</string> - </property> - <property name="text"> - <string>Right dockarea</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="1" column="0"> - <widget class="QGroupBox" name="groupBox_6"> - <property name="title"> - <string>Bottom Left Corner</string> - </property> - <layout class="QVBoxLayout"> - <item> - <widget class="QRadioButton" name="blBottomButton"> - <property name="toolTip"> - <string>Select to assign the bottom left corner to the bottom dockarea</string> - </property> - <property name="text"> - <string>Bottom dockarea</string> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="blLeftButton"> - <property name="toolTip"> - <string>Select to assign the bottom left corner to the left dockarea</string> - </property> - <property name="text"> - <string>Left dockarea</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="1" column="1"> - <widget class="QGroupBox" name="groupBox_7"> - <property name="title"> - <string>Bottom Right Corner</string> - </property> - <layout class="QVBoxLayout"> - <item> - <widget class="QRadioButton" name="brTopButton"> - <property name="toolTip"> - <string>Select to assign the bottom right corner to the bottom dockarea</string> - </property> - <property name="text"> - <string>Bottom dockarea</string> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="brRightButton"> - <property name="toolTip"> - <string>Select to assign the bottom right corner to the right dockarea</string> - </property> - <property name="text"> - <string>Right dockarea</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - </item> - <item> <widget class="QGroupBox" name="groupBox_8"> <property name="title"> <string>Sidebars</string> @@ -453,6 +328,20 @@ </item> </widget> </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>Shell Position:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QComboBox" name="shellPositionComboBox"> + <property name="toolTip"> + <string>Select the position for the Shell window</string> + </property> + </widget> + </item> </layout> </item> <item> @@ -582,22 +471,6 @@ </widget> </item> <item> - <widget class="QGroupBox" name="tabsGroupBox"> - <property name="title"> - <string>Tabs</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QCheckBox" name="tabsCloseButtonCheckBox"> - <property name="text"> - <string>Show only one close button instead of one for each tab</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -637,17 +510,10 @@ <tabstop>filenameLengthSpinBox</tabstop> <tabstop>styleComboBox</tabstop> <tabstop>styleSheetPicker</tabstop> - <tabstop>tlTopButton</tabstop> - <tabstop>tlLeftButton</tabstop> - <tabstop>trTopButton</tabstop> - <tabstop>trRightButton</tabstop> - <tabstop>blBottomButton</tabstop> - <tabstop>blLeftButton</tabstop> - <tabstop>brTopButton</tabstop> - <tabstop>brRightButton</tabstop> <tabstop>delaySpinBox</tabstop> <tabstop>languageComboBox</tabstop> <tabstop>layoutComboBox</tabstop> + <tabstop>shellPositionComboBox</tabstop> <tabstop>templateViewerCheckBox</tabstop> <tabstop>fileBrowserCheckBox</tabstop> <tabstop>symbolsCheckBox</tabstop> @@ -657,7 +523,6 @@ <tabstop>cooperationCheckBox</tabstop> <tabstop>ircCheckBox</tabstop> <tabstop>numbersCheckBox</tabstop> - <tabstop>tabsCloseButtonCheckBox</tabstop> <tabstop>resetLayoutButton</tabstop> </tabstops> <resources/>
--- a/eric6/Preferences/ConfigurationPages/WebBrowserAppearancePage.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/WebBrowserAppearancePage.py Mon May 20 22:44:12 2019 +0200 @@ -90,8 +90,6 @@ self.styleSheetPicker.setText( Preferences.getWebBrowser("UserStyleSheet")) - self.tabsCloseButtonCheckBox.setChecked( - Preferences.getUI("SingleCloseButton")) self.warnOnMultipleCloseCheckBox.setChecked( Preferences.getWebBrowser("WarnOnMultipleClose")) @@ -120,8 +118,6 @@ ) self.__displayMode = displayMode - if self.__displayMode != ConfigurationWidget.WebBrowserMode: - self.tabsGroupBox.hide() def save(self): """ @@ -173,12 +169,6 @@ self.saveColours(Preferences.setWebBrowser) - from ..ConfigurationDialog import ConfigurationWidget - if self.__displayMode == ConfigurationWidget.WebBrowserMode: - Preferences.setUI( - "SingleCloseButton", - self.tabsCloseButtonCheckBox.isChecked()) - Preferences.setWebBrowser( "WarnOnMultipleClose", self.warnOnMultipleCloseCheckBox.isChecked())
--- a/eric6/Preferences/ConfigurationPages/WebBrowserAppearancePage.ui Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/WebBrowserAppearancePage.ui Mon May 20 22:44:12 2019 +0200 @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>499</width> - <height>1116</height> + <height>905</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_5"> @@ -376,13 +376,6 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> - <widget class="QCheckBox" name="tabsCloseButtonCheckBox"> - <property name="text"> - <string>Show only one close button instead of one for each tab</string> - </property> - </widget> - </item> - <item> <widget class="QCheckBox" name="warnOnMultipleCloseCheckBox"> <property name="toolTip"> <string>Select to issue a warning, if multiple tabs are about to be closed</string> @@ -491,7 +484,6 @@ <tabstop>secureURLsColourButton</tabstop> <tabstop>autoLoadImagesCheckBox</tabstop> <tabstop>styleSheetPicker</tabstop> - <tabstop>tabsCloseButtonCheckBox</tabstop> <tabstop>warnOnMultipleCloseCheckBox</tabstop> <tabstop>scrollbarsCheckBox</tabstop> <tabstop>toolbarsCheckBox</tabstop>
--- a/eric6/Preferences/ConfigurationPages/WebBrowserPage.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/ConfigurationPages/WebBrowserPage.py Mon May 20 22:44:12 2019 +0200 @@ -234,7 +234,7 @@ self.webInspectorPortSpinBox.setValue( Preferences.getWebBrowser("WebInspectorPort")) else: - self.webInspectorGroup.setEnabled(False) + self.webInspectorGroup.hide() if qVersionTuple() >= (5, 11, 0): self.protocolHandlerComboBox.setCurrentIndex(
--- a/eric6/Preferences/__init__.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Preferences/__init__.py Mon May 20 22:44:12 2019 +0200 @@ -139,14 +139,9 @@ "Style": "System", "StyleSheet": "", "ViewManager": "tabview", - "LayoutType": "Sidebars", + "LayoutType": "Sidebars", # "Toolboxes" or "Sidebars" + "ShellPosition": "bottom", # "left", "right" or "bottom" "SidebarDelay": 200, - # allowed values are "Toolboxes" and "Sidebars" - "LayoutShellEmbedded": 0, # 0 = separate - # 1 = embedded in debug browser - "LayoutFileBrowserEmbedded": 0, # 0 = separate - # 1 = embedded in debug browser - # 2 = embedded in project browser "BrowsersListFoldersFirst": True, "BrowsersHideNonPublic": False, "BrowsersListContentsByOccurrence": False, @@ -160,10 +155,6 @@ "CaptionShowsFilename": True, "CaptionFilenameLength": 100, "RecentNumber": 9, - "TopLeftByLeft": True, - "BottomLeftByLeft": False, - "TopRightByRight": True, - "BottomRightByRight": False, "TabViewManagerFilenameLength": 40, "TabViewManagerFilenameOnly": True, "ShowFilePreview": True, @@ -209,11 +200,10 @@ "ToolbarManagerState": QByteArray(), "PreviewSplitterState": QByteArray(), "ShowSplash": True, - "SingleCloseButton": False, "SplitOrientationVertical": False, "UseNativeMenuBar": True, - "PerformVersionCheck": 4, + "PerformVersionCheck": 3, # 0 = off # 1 = at startup # 2 = daily @@ -242,9 +232,9 @@ "PluginRepositoryUrl6": "https://eric-ide.python-projects.org/plugins6/repository.xml", "VersionsUrls6": [ + "https://eric-ide.python-projects.org/versions/versions6", "https://die-offenbachs.homelinux.org/eric/versions/" "versions6", - "https://eric-ide.python-projects.org/versions/versions6", ], "OpenOnStartup": 0, # 0 = nothing @@ -708,8 +698,8 @@ "Python/InsertQuote": True, "Python/DedentElse": True, "Python/DedentExcept": True, - "Python/Py24StyleTry": True, "Python/InsertImport": True, + "Python/ImportBraceType": False, "Python/InsertSelf": True, "Python/InsertBlank": True, "Python/ColonDetection": True, @@ -1997,12 +1987,9 @@ "SingleApplicationMode", "TabViewManagerFilenameOnly", "ShowFilePreview", "ShowFilePreviewJS", "ShowFilePreviewSSI", "CaptionShowsFilename", "ShowSplash", - "SingleCloseButton", "SplitOrientationVertical", + "SplitOrientationVertical", "UseProxy", "UseSystemProxy", "UseHttpProxyForAll", - "TopLeftByLeft", "BottomLeftByLeft", - "TopRightByRight", "BottomRightByRight", "RequestDownloadFilename", - "LayoutShellEmbedded", "LayoutFileBrowserEmbedded", "CheckErrorLog", "NotificationsEnabled", "DynamicOnlineCheck", "OpenCrashSessionOnStartup", "CrashSessionEnabled", "ShowCodeDocumentationViewer", "ShowPyPIPackageManager",
--- a/eric6/Project/Project.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/Project/Project.py Mon May 20 22:44:12 2019 +0200 @@ -4247,28 +4247,31 @@ self.dbgActGrp.setEnabled(False) self.pluginGrp.setEnabled(False) - def initMenu(self): - """ - Public slot to initialize the project menu. - - @return the menu generated (QMenu) + def initMenus(self): + """ + Public slot to initialize the project menus. + + @return tuple of generated menus + @rtype tuple of (QMenu, QMenu) """ menu = QMenu(self.tr('&Project'), self.parent()) self.recentMenu = QMenu(self.tr('Open &Recent Projects'), menu) - self.vcsMenu = QMenu(self.tr('&Version Control'), menu) + self.sessionMenu = QMenu(self.tr('Session'), menu) + self.debuggerMenu = QMenu(self.tr('Debugger'), menu) + + toolsMenu = QMenu(self.tr('Project-T&ools'), self.parent()) + self.vcsMenu = QMenu(self.tr('&Version Control'), toolsMenu) self.vcsMenu.setTearOffEnabled(True) self.vcsProjectHelper.initMenu(self.vcsMenu) self.vcsMenu.setEnabled(self.vcsSoftwareAvailable()) - self.checksMenu = QMenu(self.tr('Chec&k'), menu) + self.checksMenu = QMenu(self.tr('Chec&k'), toolsMenu) self.checksMenu.setTearOffEnabled(True) - self.menuShow = QMenu(self.tr('Sho&w'), menu) - self.graphicsMenu = QMenu(self.tr('&Diagrams'), menu) - self.sessionMenu = QMenu(self.tr('Session'), menu) - self.apidocMenu = QMenu(self.tr('Source &Documentation'), menu) + self.menuShow = QMenu(self.tr('Sho&w'), toolsMenu) + self.graphicsMenu = QMenu(self.tr('&Diagrams'), toolsMenu) + self.packagersMenu = QMenu(self.tr('Pac&kagers'), toolsMenu) + self.apidocMenu = QMenu(self.tr('Source &Documentation'), toolsMenu) self.apidocMenu.setTearOffEnabled(True) - self.debuggerMenu = QMenu(self.tr('Debugger'), menu) - self.packagersMenu = QMenu(self.tr('Pac&kagers'), menu) - self.makeMenu = QMenu(self.tr('Make'), menu) + self.makeMenu = QMenu(self.tr('Make'), toolsMenu) self.__menus = { "Main": menu, @@ -4328,7 +4331,7 @@ self.makeMenu.addActions(self.makeGrp.actions()) self.makeMenu.addSeparator() - # build the main menu + # build the project main menu menu.setTearOffEnabled(True) menu.addActions(self.actGrp1.actions()) self.menuRecentAct = menu.addMenu(self.recentMenu) @@ -4340,20 +4343,6 @@ menu.addSeparator() menu.addActions(self.actGrp2.actions()) menu.addSeparator() - self.menuMakeAct = menu.addMenu(self.makeMenu) - menu.addSeparator() - self.menuDiagramAct = menu.addMenu(self.graphicsMenu) - menu.addSeparator() - self.menuCheckAct = menu.addMenu(self.checksMenu) - menu.addSeparator() - menu.addMenu(self.vcsMenu) - menu.addSeparator() - self.menuShowAct = menu.addMenu(self.menuShow) - menu.addSeparator() - self.menuApidocAct = menu.addMenu(self.apidocMenu) - menu.addSeparator() - self.menuPackagersAct = menu.addMenu(self.packagersMenu) - menu.addSeparator() menu.addAction(self.propsAct) menu.addAction(self.userPropsAct) menu.addAction(self.filetypesAct) @@ -4362,6 +4351,23 @@ self.menuDebuggerAct = menu.addMenu(self.debuggerMenu) self.menuSessionAct = menu.addMenu(self.sessionMenu) + # build the project tools menu + toolsMenu.setTearOffEnabled(True) + toolsMenu.addSeparator() + self.menuMakeAct = toolsMenu.addMenu(self.makeMenu) + toolsMenu.addSeparator() + self.menuDiagramAct = toolsMenu.addMenu(self.graphicsMenu) + toolsMenu.addSeparator() + self.menuCheckAct = toolsMenu.addMenu(self.checksMenu) + toolsMenu.addSeparator() + toolsMenu.addMenu(self.vcsMenu) + toolsMenu.addSeparator() + self.menuShowAct = toolsMenu.addMenu(self.menuShow) + toolsMenu.addSeparator() + self.menuApidocAct = toolsMenu.addMenu(self.apidocMenu) + toolsMenu.addSeparator() + self.menuPackagersAct = toolsMenu.addMenu(self.packagersMenu) + self.menuCheckAct.setEnabled(False) self.menuShowAct.setEnabled(False) self.menuDiagramAct.setEnabled(False) @@ -4371,8 +4377,10 @@ self.menuPackagersAct.setEnabled(False) self.menuMakeAct.setEnabled(False) - self.menu = menu - return menu + self.__menu = menu + self.__toolsMenu = toolsMenu + + return menu, toolsMenu def initToolbars(self, toolbarManager): """
--- a/eric6/QScintilla/Editor.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/QScintilla/Editor.py Mon May 20 22:44:12 2019 +0200 @@ -8159,8 +8159,8 @@ Private method to get the requested option via EditorConfig. If there is no EditorConfig defined, the equivalent built-in option - will be used (Preferences.getEditor(). The option must be given as the - Preferences option key. The mapping to the EditorConfig option name + will be used (Preferences.getEditor() ). The option must be given as + the Preferences option key. The mapping to the EditorConfig option name will be done within this method. @param option Preferences option key
--- a/eric6/QScintilla/Shell.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/QScintilla/Shell.py Mon May 20 22:44:12 2019 +0200 @@ -89,7 +89,7 @@ def shell(self): """ - Public method to get a reference to the terminal widget. + Public method to get a reference to the shell widget. @return reference to the shell widget (Shell) """
--- a/eric6/QScintilla/TypingCompleters/CompleterPython.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/QScintilla/TypingCompleters/CompleterPython.py Mon May 20 22:44:12 2019 +0200 @@ -16,7 +16,7 @@ import re from PyQt5.QtCore import QRegExp -from PyQt5.Qsci import QsciLexerPython +from PyQt5.Qsci import QsciLexerPython, QsciScintilla from .CompleterBase import CompleterBase @@ -78,10 +78,10 @@ Preferences.getEditorTyping("Python/DedentElse") self.__dedentExcept = \ Preferences.getEditorTyping("Python/DedentExcept") - self.__py24StyleTry = \ - Preferences.getEditorTyping("Python/Py24StyleTry") self.__insertImport = \ Preferences.getEditorTyping("Python/InsertImport") + self.__importBraceType = \ + Preferences.getEditorTyping("Python/ImportBraceType") self.__insertSelf = \ Preferences.getEditorTyping("Python/InsertSelf") self.__insertBlank = \ @@ -148,8 +148,12 @@ elif char == ' ': txt = self.editor.text(line)[:col] if self.__insertImport and self.__importRX.exactMatch(txt): - self.editor.insert('import ') - self.editor.setCursorPosition(line, col + 7) + if self.__importBraceType: + self.editor.insert('import ()') + self.editor.setCursorPosition(line, col + 8) + else: + self.editor.insert('import ') + self.editor.setCursorPosition(line, col + 7) elif self.__dedentElse and self.__elifRX.exactMatch(txt): self.__dedentToIf() elif self.__dedentExcept and self.__exceptRX.exactMatch(txt): @@ -211,23 +215,31 @@ if self.__indentBrace: txt = self.editor.text(line - 1) if re.search(":\r?\n", txt) is None: - openCount = len(re.findall("[({[]", txt)) - closeCount = len(re.findall(r"[)}\]]", txt)) - if openCount > closeCount: - openCount = 0 - closeCount = 0 - openList = list(re.finditer("[({[]", txt)) - index = len(openList) - 1 - while index > -1 and openCount == closeCount: - lastOpenIndex = openList[index].start() - txt2 = txt[lastOpenIndex:] - openCount = len(re.findall("[({[]", txt2)) - closeCount = len(re.findall(r"[)}\]]", txt2)) - index -= 1 - if openCount > closeCount and lastOpenIndex > col: - self.editor.insert(' ' * (lastOpenIndex - col + 1)) - self.editor.setCursorPosition( - line, lastOpenIndex + 1) + stxt = txt.strip() + if stxt and stxt[-1] in ("(", "[", "{"): + # indent one more level + self.editor.indent(line) + self.editor.editorCommand(QsciScintilla.SCI_VCHOME) + else: + # indent to the level of the opening brace + openCount = len(re.findall("[({[]", txt)) + closeCount = len(re.findall(r"[)}\]]", txt)) + if openCount > closeCount: + openCount = 0 + closeCount = 0 + openList = list(re.finditer("[({[]", txt)) + index = len(openList) - 1 + while index > -1 and openCount == closeCount: + lastOpenIndex = openList[index].start() + txt2 = txt[lastOpenIndex:] + openCount = len(re.findall("[({[]", txt2)) + closeCount = len(re.findall(r"[)}\]]", txt2)) + index -= 1 + if openCount > closeCount and lastOpenIndex > col: + self.editor.insert( + ' ' * (lastOpenIndex - col + 1)) + self.editor.setCursorPosition( + line, lastOpenIndex + 1) def __dedentToIf(self): """ @@ -313,26 +325,15 @@ while tryLine >= 0: txt = self.editor.text(tryLine) edInd = self.editor.indentation(tryLine) - if self.__py24StyleTry: - if (self.__exceptcRX.indexIn(txt) == 0 or - self.__exceptRX.indexIn(txt) == 0 or - self.__finallyRX.indexIn(txt) == 0) and \ - edInd <= indentation: - indentation = edInd - 1 - elif self.__tryRX.indexIn(txt) == 0 and edInd <= indentation: - self.editor.cancelList() - self.editor.setIndentation(line, edInd) - break - else: - if self.__finallyRX.indexIn(txt) == 0 and edInd <= indentation: - indentation = edInd - 1 - elif (self.__tryRX.indexIn(txt) == 0 or - self.__exceptcRX.indexIn(txt) == 0 or - self.__exceptRX.indexIn(txt) == 0) and \ - edInd <= indentation: - self.editor.cancelList() - self.editor.setIndentation(line, edInd) - break + if self.__finallyRX.indexIn(txt) == 0 and edInd <= indentation: + indentation = edInd - 1 + elif (self.__tryRX.indexIn(txt) == 0 or + self.__exceptcRX.indexIn(txt) == 0 or + self.__exceptRX.indexIn(txt) == 0) and \ + edInd <= indentation: + self.editor.cancelList() + self.editor.setIndentation(line, edInd) + break tryLine -= 1 def __dedentDefStatement(self):
--- a/eric6/QScintilla/TypingCompleters/CompleterRuby.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/QScintilla/TypingCompleters/CompleterRuby.py Mon May 20 22:44:12 2019 +0200 @@ -12,7 +12,7 @@ import re from PyQt5.QtCore import QRegExp -from PyQt5.Qsci import QsciLexerRuby +from PyQt5.Qsci import QsciLexerRuby, QsciScintilla from .CompleterBase import CompleterBase @@ -141,22 +141,30 @@ elif self.__insertHereDoc and self.__hereRX.exactMatch(txt): self.editor.insert(self.__hereRX.cap(1)) elif self.__indentBrace and re.search(":\r?\n", txt) is None: - openCount = len(re.findall("[({[]", txt)) - closeCount = len(re.findall(r"[)}\]]", txt)) - if openCount > closeCount: - openCount = 0 - closeCount = 0 - openList = list(re.finditer("[({[]", txt)) - index = len(openList) - 1 - while index > -1 and openCount == closeCount: - lastOpenIndex = openList[index].start() - txt2 = txt[lastOpenIndex:] - openCount = len(re.findall("[({[]", txt2)) - closeCount = len(re.findall(r"[)}\]]", txt2)) - index -= 1 - if openCount > closeCount and lastOpenIndex > col: - self.editor.insert(' ' * (lastOpenIndex - col + 1)) - self.editor.setCursorPosition(line, lastOpenIndex + 1) + stxt = txt.strip() + if stxt and stxt[-1] in ("(", "[", "{"): + # indent one more level + self.editor.indent(line) + self.editor.editorCommand(QsciScintilla.SCI_VCHOME) + else: + # indent to the level of the opening brace + openCount = len(re.findall("[({[]", txt)) + closeCount = len(re.findall(r"[)}\]]", txt)) + if openCount > closeCount: + openCount = 0 + closeCount = 0 + openList = list(re.finditer("[({[]", txt)) + index = len(openList) - 1 + while index > -1 and openCount == closeCount: + lastOpenIndex = openList[index].start() + txt2 = txt[lastOpenIndex:] + openCount = len(re.findall("[({[]", txt2)) + closeCount = len(re.findall(r"[)}\]]", txt2)) + index -= 1 + if openCount > closeCount and lastOpenIndex > col: + self.editor.insert(' ' * (lastOpenIndex - col + 1)) + self.editor.setCursorPosition(line, + lastOpenIndex + 1) def __inComment(self, line, col): """
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/ThirdParty/EditorConfig/COPYING Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,11 @@ +Copyright 2011-2018 EditorConfig Team, including Hong Xu and Trey Hunner + +editorconfig-core-py is free software. You are free to copy, +modify, and/or redistribute this work under the terms of the BSD +2-clause license. See the file "LICENSE.BSD" for details. + +Parts of this work – the files "fnmatch.py" and "ini.py" - +are derived from work with copyright held by the Python Software +Foundation. You are free to copy, modify, and/or redistribute +those parts under the terms of the Python Software Foundation +license. See the file "LICENSE.PSF" for details.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/ThirdParty/EditorConfig/LICENSE.BSD Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,22 @@ +Copyright 2011-2018 EditorConfig Team, including Hong Xu and Trey Hunner + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/ThirdParty/EditorConfig/LICENSE.PSF Mon May 20 22:44:12 2019 +0200 @@ -0,0 +1,192 @@ +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +Python Software Foundation; All Rights Reserved" are retained in Python alone or +in any derivative version prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 +------------------------------------------- + +BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 + +1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an +office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the +Individual or Organization ("Licensee") accessing and otherwise using +this software in source or binary form and its associated +documentation ("the Software"). + +2. Subject to the terms and conditions of this BeOpen Python License +Agreement, BeOpen hereby grants Licensee a non-exclusive, +royalty-free, world-wide license to reproduce, analyze, test, perform +and/or display publicly, prepare derivative works, distribute, and +otherwise use the Software alone or in any derivative version, +provided, however, that the BeOpen Python License is retained in the +Software, alone or in any derivative version prepared by Licensee. + +3. BeOpen is making the Software available to Licensee on an "AS IS" +basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +5. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +6. This License Agreement shall be governed by and interpreted in all +respects by the law of the State of California, excluding conflict of +law provisions. Nothing in this License Agreement shall be deemed to +create any relationship of agency, partnership, or joint venture +between BeOpen and Licensee. This License Agreement does not grant +permission to use BeOpen trademarks or trade names in a trademark +sense to endorse or promote products or services of Licensee, or any +third party. As an exception, the "BeOpen Python" logos available at +http://www.pythonlabs.com/logos.html may be used according to the +permissions granted on that web page. + +7. By copying, installing or otherwise using the software, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 +--------------------------------------- + +1. This LICENSE AGREEMENT is between the Corporation for National +Research Initiatives, having an office at 1895 Preston White Drive, +Reston, VA 20191 ("CNRI"), and the Individual or Organization +("Licensee") accessing and otherwise using Python 1.6.1 software in +source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, CNRI +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python 1.6.1 +alone or in any derivative version, provided, however, that CNRI's +License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) +1995-2001 Corporation for National Research Initiatives; All Rights +Reserved" are retained in Python 1.6.1 alone or in any derivative +version prepared by Licensee. Alternately, in lieu of CNRI's License +Agreement, Licensee may substitute the following text (omitting the +quotes): "Python 1.6.1 is made available subject to the terms and +conditions in CNRI's License Agreement. This Agreement together with +Python 1.6.1 may be located on the Internet using the following +unique, persistent identifier (known as a handle): 1895.22/1013. This +Agreement may also be obtained from a proxy server on the Internet +using the following URL: http://hdl.handle.net/1895.22/1013". + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python 1.6.1 or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python 1.6.1. + +4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" +basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. This License Agreement shall be governed by the federal +intellectual property law of the United States, including without +limitation the federal copyright law, and, to the extent such +U.S. federal law does not apply, by the law of the Commonwealth of +Virginia, excluding Virginia's conflict of law provisions. +Notwithstanding the foregoing, with regard to derivative works based +on Python 1.6.1 that incorporate non-separable material that was +previously distributed under the GNU General Public License (GPL), the +law of the Commonwealth of Virginia shall govern this License +Agreement only as to issues arising under or with respect to +Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this +License Agreement shall be deemed to create any relationship of +agency, partnership, or joint venture between CNRI and Licensee. This +License Agreement does not grant permission to use CNRI trademarks or +trade name in a trademark sense to endorse or promote products or +services of Licensee, or any third party. + +8. By clicking on the "ACCEPT" button where indicated, or by copying, +installing or otherwise using Python 1.6.1, Licensee agrees to be +bound by the terms and conditions of this License Agreement. + + ACCEPT + + +CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, +The Netherlands. All rights reserved. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--- a/eric6/ThirdParty/EditorConfig/LICENSE.txt Wed May 15 22:26:22 2019 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,192 +0,0 @@ -PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 --------------------------------------------- - -1. This LICENSE AGREEMENT is between the Python Software Foundation -("PSF"), and the Individual or Organization ("Licensee") accessing and -otherwise using this software ("Python") in source or binary form and -its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, PSF hereby -grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, -analyze, test, perform and/or display publicly, prepare derivative works, -distribute, and otherwise use Python alone or in any derivative version, -provided, however, that PSF's License Agreement and PSF's notice of copyright, -i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -Python Software Foundation; All Rights Reserved" are retained in Python alone or -in any derivative version prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on -or incorporates Python or any part thereof, and wants to make -the derivative work available to others as provided herein, then -Licensee hereby agrees to include in any such work a brief summary of -the changes made to Python. - -4. PSF is making Python available to Licensee on an "AS IS" -basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON -FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS -A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, -OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any -relationship of agency, partnership, or joint venture between PSF and -Licensee. This License Agreement does not grant permission to use PSF -trademarks or trade name in a trademark sense to endorse or promote -products or services of Licensee, or any third party. - -8. By copying, installing or otherwise using Python, Licensee -agrees to be bound by the terms and conditions of this License -Agreement. - - -BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 -------------------------------------------- - -BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 - -1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an -office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the -Individual or Organization ("Licensee") accessing and otherwise using -this software in source or binary form and its associated -documentation ("the Software"). - -2. Subject to the terms and conditions of this BeOpen Python License -Agreement, BeOpen hereby grants Licensee a non-exclusive, -royalty-free, world-wide license to reproduce, analyze, test, perform -and/or display publicly, prepare derivative works, distribute, and -otherwise use the Software alone or in any derivative version, -provided, however, that the BeOpen Python License is retained in the -Software, alone or in any derivative version prepared by Licensee. - -3. BeOpen is making the Software available to Licensee on an "AS IS" -basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE -SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS -AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY -DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -5. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -6. This License Agreement shall be governed by and interpreted in all -respects by the law of the State of California, excluding conflict of -law provisions. Nothing in this License Agreement shall be deemed to -create any relationship of agency, partnership, or joint venture -between BeOpen and Licensee. This License Agreement does not grant -permission to use BeOpen trademarks or trade names in a trademark -sense to endorse or promote products or services of Licensee, or any -third party. As an exception, the "BeOpen Python" logos available at -http://www.pythonlabs.com/logos.html may be used according to the -permissions granted on that web page. - -7. By copying, installing or otherwise using the software, Licensee -agrees to be bound by the terms and conditions of this License -Agreement. - - -CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 ---------------------------------------- - -1. This LICENSE AGREEMENT is between the Corporation for National -Research Initiatives, having an office at 1895 Preston White Drive, -Reston, VA 20191 ("CNRI"), and the Individual or Organization -("Licensee") accessing and otherwise using Python 1.6.1 software in -source or binary form and its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, CNRI -hereby grants Licensee a nonexclusive, royalty-free, world-wide -license to reproduce, analyze, test, perform and/or display publicly, -prepare derivative works, distribute, and otherwise use Python 1.6.1 -alone or in any derivative version, provided, however, that CNRI's -License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) -1995-2001 Corporation for National Research Initiatives; All Rights -Reserved" are retained in Python 1.6.1 alone or in any derivative -version prepared by Licensee. Alternately, in lieu of CNRI's License -Agreement, Licensee may substitute the following text (omitting the -quotes): "Python 1.6.1 is made available subject to the terms and -conditions in CNRI's License Agreement. This Agreement together with -Python 1.6.1 may be located on the Internet using the following -unique, persistent identifier (known as a handle): 1895.22/1013. This -Agreement may also be obtained from a proxy server on the Internet -using the following URL: http://hdl.handle.net/1895.22/1013". - -3. In the event Licensee prepares a derivative work that is based on -or incorporates Python 1.6.1 or any part thereof, and wants to make -the derivative work available to others as provided herein, then -Licensee hereby agrees to include in any such work a brief summary of -the changes made to Python 1.6.1. - -4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" -basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON -1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS -A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, -OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -7. This License Agreement shall be governed by the federal -intellectual property law of the United States, including without -limitation the federal copyright law, and, to the extent such -U.S. federal law does not apply, by the law of the Commonwealth of -Virginia, excluding Virginia's conflict of law provisions. -Notwithstanding the foregoing, with regard to derivative works based -on Python 1.6.1 that incorporate non-separable material that was -previously distributed under the GNU General Public License (GPL), the -law of the Commonwealth of Virginia shall govern this License -Agreement only as to issues arising under or with respect to -Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this -License Agreement shall be deemed to create any relationship of -agency, partnership, or joint venture between CNRI and Licensee. This -License Agreement does not grant permission to use CNRI trademarks or -trade name in a trademark sense to endorse or promote products or -services of Licensee, or any third party. - -8. By clicking on the "ACCEPT" button where indicated, or by copying, -installing or otherwise using Python 1.6.1, Licensee agrees to be -bound by the terms and conditions of this License Agreement. - - ACCEPT - - -CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 --------------------------------------------------- - -Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, -The Netherlands. All rights reserved. - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Stichting Mathematisch -Centrum or CWI not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO -THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE -FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT -OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--- a/eric6/ThirdParty/EditorConfig/README.rst Wed May 15 22:26:22 2019 +0200 +++ b/eric6/ThirdParty/EditorConfig/README.rst Mon May 20 22:44:12 2019 +0200 @@ -85,6 +85,4 @@ License ======= -Unless otherwise stated, all files are distributed under the PSF license. The -odict library (editorconfig/odict.py) is distributed under the New BSD license. -See LICENSE.txt file for details on PSF license. +See COPYING file for licensing details.
--- a/eric6/ThirdParty/EditorConfig/editorconfig/__init__.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/ThirdParty/EditorConfig/editorconfig/__init__.py Mon May 20 22:44:12 2019 +0200 @@ -2,7 +2,7 @@ from editorconfig.versiontools import join_version -VERSION = (0, 12, 0, "final") +VERSION = (0, 12, 2, "final") __all__ = ['get_properties', 'EditorConfigError', 'exceptions']
--- a/eric6/ThirdParty/EditorConfig/editorconfig/exceptions.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/ThirdParty/EditorConfig/editorconfig/exceptions.py Mon May 20 22:44:12 2019 +0200 @@ -1,6 +1,6 @@ """EditorConfig exception classes -Licensed under PSF License (see LICENSE.txt file). +Licensed under Simplified BSD License (see LICENSE.BSD file). """
--- a/eric6/ThirdParty/EditorConfig/editorconfig/fnmatch.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/ThirdParty/EditorConfig/editorconfig/fnmatch.py Mon May 20 22:44:12 2019 +0200 @@ -11,7 +11,7 @@ Based on code from fnmatch.py file distributed with Python 2.6. -Licensed under PSF License (see LICENSE.txt file). +Licensed under PSF License (see LICENSE.PSF file). Changes to original fnmatch module: - translate function supports ``*`` and ``**`` similarly to fnmatch C library
--- a/eric6/ThirdParty/EditorConfig/editorconfig/handler.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/ThirdParty/EditorConfig/editorconfig/handler.py Mon May 20 22:44:12 2019 +0200 @@ -3,7 +3,7 @@ Provides ``EditorConfigHandler`` class for locating and parsing EditorConfig files relevant to a given filepath. -Licensed under PSF License (see LICENSE.txt file). +Licensed under Simplified BSD License (see LICENSE.BSD file). """
--- a/eric6/ThirdParty/EditorConfig/editorconfig/ini.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/ThirdParty/EditorConfig/editorconfig/ini.py Mon May 20 22:44:12 2019 +0200 @@ -2,7 +2,7 @@ Based on code from ConfigParser.py file distributed with Python 2.6. -Licensed under PSF License (see LICENSE.txt file). +Licensed under PSF License (see LICENSE.PSF file). Changes to original ConfigParser:
--- a/eric6/ThirdParty/EditorConfig/editorconfig/main.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/ThirdParty/EditorConfig/editorconfig/main.py Mon May 20 22:44:12 2019 +0200 @@ -1,6 +1,6 @@ """EditorConfig command line interface -Licensed under PSF License (see LICENSE.txt file). +Licensed under Simplified BSD License (see LICENSE.BSD file). """
--- a/eric6/UI/Browser.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/UI/Browser.py Mon May 20 22:44:12 2019 +0200 @@ -90,8 +90,6 @@ 'File-Browser')) self.setWindowIcon(UI.PixmapCache.getIcon("eric.png")) - self.__embeddedBrowser = Preferences.getUI("LayoutFileBrowserEmbedded") - self.__model = BrowserModel() self.__sortModel = BrowserSortFilterProxyModel() self.__sortModel.setSourceModel(self.__model) @@ -243,21 +241,11 @@ self.menu.addAction( QCoreApplication.translate('Browser', 'Copy Path to Clipboard'), self._copyToClipboard) - if self.__embeddedBrowser in [1, 2]: - self.menu.addSeparator() - self.menu.addAction( - QCoreApplication.translate('Browser', 'Configure...'), - self.__configure) # create the menu for multiple selected files self.multiMenu = QMenu(self) self.multiMenu.addAction( QCoreApplication.translate('Browser', 'Open'), self._openItem) - if self.__embeddedBrowser in [1, 2]: - self.multiMenu.addSeparator() - self.multiMenu.addAction( - QCoreApplication.translate('Browser', 'Configure...'), - self.__configure) # create the directory menu self.dirMenu = QMenu(self) @@ -285,11 +273,6 @@ self.dirMenu.addAction( QCoreApplication.translate('Browser', 'Copy Path to Clipboard'), self._copyToClipboard) - if self.__embeddedBrowser in [1, 2]: - self.dirMenu.addSeparator() - self.dirMenu.addAction( - QCoreApplication.translate('Browser', 'Configure...'), - self.__configure) # create the attribute menu self.gotoMenu = QMenu(QCoreApplication.translate('Browser', "Goto"), @@ -303,22 +286,12 @@ self.__newToplevelDir) self.attributeMenu.addSeparator() self.attributeMenu.addMenu(self.gotoMenu) - if self.__embeddedBrowser in [1, 2]: - self.attributeMenu.addSeparator() - self.attributeMenu.addAction( - QCoreApplication.translate('Browser', 'Configure...'), - self.__configure) # create the background menu self.backMenu = QMenu(self) self.backMenu.addAction( QCoreApplication.translate('Browser', 'New toplevel directory...'), self.__newToplevelDir) - if self.__embeddedBrowser in [1, 2]: - self.backMenu.addSeparator() - self.backMenu.addAction( - QCoreApplication.translate('Browser', 'Configure...'), - self.__configure) def mouseDoubleClickEvent(self, mouseEvent): """ @@ -749,17 +722,6 @@ """ self.__model.saveToplevelDirs() - def __configure(self): - """ - Private method to open the configuration dialog. - """ - if self.__embeddedBrowser == 1: - e5App().getObject("UserInterface")\ - .showPreferences("debuggerGeneralPage") - elif self.__embeddedBrowser == 2: - e5App().getObject("UserInterface")\ - .showPreferences("projectBrowserPage") - def keyboardSearch(self, search): """ Public function to search the tree via the keyboard.
--- a/eric6/UI/SearchWidget.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/UI/SearchWidget.py Mon May 20 22:44:12 2019 +0200 @@ -4,7 +4,7 @@ # """ -Module implementing the search box for the shell, terminal and log viewer. +Module implementing the search box for the shell and log viewer. """ from __future__ import unicode_literals @@ -17,7 +17,7 @@ class SearchWidget(QWidget): """ - Class implementing the search box for the shell, terminal and log viewer. + Class implementing the search box for the shell and log viewer. @signal searchNext(text, caseSensitive, wholeWord, regexp) emitted when the user pressed the next button (string, boolean, boolean)
--- a/eric6/UI/UserInterface.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/UI/UserInterface.py Mon May 20 22:44:12 2019 +0200 @@ -316,6 +316,7 @@ self.__notification = None self.__readingSession = False self.__versionsDialog = None + self.__configurationDialog = None # now setup the connections splash.showMessage(self.tr("Setting up connections...")) @@ -724,6 +725,15 @@ if interval > 0: QApplication.setKeyboardInputInterval(interval) + def networkAccessManager(self): + """ + Public method to get a reference to the network access manager object. + + @return reference to the network access manager object + @rtype QNetworkAccessManager + """ + return self.__networkManager + def __createLayout(self, debugServer): """ Private method to create the layout of the various windows. @@ -809,6 +819,10 @@ self.__setupDockWindow(self.rToolboxDock, Qt.RightDockWidgetArea, self.rToolbox, self.tr("Right Toolbox")) + #################################################### + ## Populate the left toolbox + #################################################### + # Create the project browser logging.debug("Creating Project Browser...") from Project.ProjectBrowser import ProjectBrowser @@ -836,6 +850,10 @@ UI.PixmapCache.getIcon("templateViewer.png"), self.tr("Template-Viewer")) + #################################################### + ## Populate the right toolbox + #################################################### + if Preferences.getUI("ShowCodeDocumentationViewer"): # Create the code documentation viewer logging.debug("Creating Code Documentation Viewer...") @@ -845,10 +863,10 @@ UI.PixmapCache.getIcon("codeDocuViewer.png"), self.tr("Code Documentation Viewer")) - # Create the debug viewer maybe without the embedded shell + # Create the debug viewer logging.debug("Creating Debug Viewer...") from Debugger.DebugViewer import DebugViewer - self.debugViewer = DebugViewer(debugServer, True, self.viewmanager) + self.debugViewer = DebugViewer(debugServer) self.rToolbox.addItem(self.debugViewer, UI.PixmapCache.getIcon("debugViewer.png"), self.tr("Debug-Viewer")) @@ -889,6 +907,10 @@ UI.PixmapCache.getIcon("irc.png"), self.tr("IRC")) + #################################################### + ## Populate the bottom toolbox + #################################################### + # Create the task viewer part of the user interface logging.debug("Creating Task Viewer...") from Tasks.TaskViewer import TaskViewer @@ -905,16 +927,6 @@ UI.PixmapCache.getIcon("logViewer.png"), self.tr("Log-Viewer")) - # Create the shell - logging.debug("Creating Shell...") - from QScintilla.Shell import ShellAssembly - self.shellAssembly = \ - ShellAssembly(debugServer, self.viewmanager, self.project, True) - self.shell = self.shellAssembly.shell() - self.hToolbox.insertItem(0, self.shellAssembly, - UI.PixmapCache.getIcon("shell.png"), - self.tr("Shell")) - if Preferences.getUI("ShowFileBrowser"): # Create the file browser logging.debug("Creating File Browser...") @@ -942,6 +954,33 @@ UI.PixmapCache.getIcon("numbers.png"), self.tr("Numbers")) + #################################################### + ## Populate the configurable widgets + #################################################### + + # Create the shell + logging.debug("Creating Shell...") + self.__shellPosition = Preferences.getUI("ShellPosition") + if self.__shellPosition == "left": + self.__shellParent = self.lToolboxDock + elif self.__shellPosition == "right": + self.__shellParent = self.rToolboxDock + else: + self.__shellParent = self.hToolboxDock + from QScintilla.Shell import ShellAssembly + self.shellAssembly = \ + ShellAssembly(debugServer, self.viewmanager, self.project, True) + self.shell = self.shellAssembly.shell() + self.__shellParent.widget().insertItem( + 0, self.shellAssembly, UI.PixmapCache.getIcon("shell.png"), + self.tr("Shell")) + + #################################################### + ## Set the start index of each toolbox + #################################################### + + self.lToolbox.setCurrentIndex(0) + self.rToolbox.setCurrentIndex(0) self.hToolbox.setCurrentIndex(0) def __createSidebarsLayout(self, debugServer): @@ -964,6 +1003,10 @@ # Create the right sidebar self.rightSidebar = E5SideBar(E5SideBar.East, delay) + #################################################### + ## Populate the left side bar + #################################################### + # Create the project browser logging.debug("Creating Project Browser...") from Project.ProjectBrowser import ProjectBrowser @@ -994,6 +1037,10 @@ UI.PixmapCache.getIcon("templateViewer.png"), self.tr("Template-Viewer")) + #################################################### + ## Populate the right side bar + #################################################### + if Preferences.getUI("ShowCodeDocumentationViewer"): # Create the code documentation viewer logging.debug("Creating Code Documentation Viewer...") @@ -1004,10 +1051,10 @@ UI.PixmapCache.getIcon("codeDocuViewer.png"), self.tr("Code Documentation Viewer")) - # Create the debug viewer maybe without the embedded shell + # Create the debug viewer logging.debug("Creating Debug Viewer...") from Debugger.DebugViewer import DebugViewer - self.debugViewer = DebugViewer(debugServer, True, self.viewmanager) + self.debugViewer = DebugViewer(debugServer) self.rightSidebar.addTab( self.debugViewer, UI.PixmapCache.getIcon("debugViewer.png"), self.tr("Debug-Viewer")) @@ -1048,6 +1095,10 @@ self.irc, UI.PixmapCache.getIcon("irc.png"), self.tr("IRC")) + #################################################### + ## Populate the bottom side bar + #################################################### + # Create the task viewer part of the user interface logging.debug("Creating Task Viewer...") from Tasks.TaskViewer import TaskViewer @@ -1064,16 +1115,6 @@ UI.PixmapCache.getIcon("logViewer.png"), self.tr("Log-Viewer")) - # Create the shell - logging.debug("Creating Shell...") - from QScintilla.Shell import ShellAssembly - self.shellAssembly = \ - ShellAssembly(debugServer, self.viewmanager, self.project, True) - self.shell = self.shellAssembly.shell() - self.bottomSidebar.insertTab(0, self.shellAssembly, - UI.PixmapCache.getIcon("shell.png"), - self.tr("Shell")) - if Preferences.getUI("ShowFileBrowser"): # Create the file browser logging.debug("Creating File Browser...") @@ -1101,6 +1142,33 @@ UI.PixmapCache.getIcon("numbers.png"), self.tr("Numbers")) + #################################################### + ## Populate the configurable widgets + #################################################### + + # Create the shell + logging.debug("Creating Shell...") + self.__shellPosition = Preferences.getUI("ShellPosition") + if self.__shellPosition == "left": + self.__shellParent = self.leftSidebar + elif self.__shellPosition == "right": + self.__shellParent = self.rightSidebar + else: + self.__shellParent = self.bottomSidebar + from QScintilla.Shell import ShellAssembly + self.shellAssembly = \ + ShellAssembly(debugServer, self.viewmanager, self.project, True) + self.shell = self.shellAssembly.shell() + self.__shellParent.insertTab(0, self.shellAssembly, + UI.PixmapCache.getIcon("shell.png"), + self.tr("Shell")) + + #################################################### + ## Set the start index of each side bar + #################################################### + + self.leftSidebar.setCurrentIndex(0) + self.rightSidebar.setCurrentIndex(0) self.bottomSidebar.setCurrentIndex(0) # create the central widget @@ -1121,27 +1189,6 @@ self.rightSidebar.setSplitter(self.rightSplitter) self.bottomSidebar.setSplitter(self.verticalSplitter) - def __configureDockareaCornerUsage(self): - """ - Private method to configure the usage of the dockarea corners. - """ - if Preferences.getUI("TopLeftByLeft"): - self.setCorner(Qt.TopLeftCorner, Qt.LeftDockWidgetArea) - else: - self.setCorner(Qt.TopLeftCorner, Qt.TopDockWidgetArea) - if Preferences.getUI("BottomLeftByLeft"): - self.setCorner(Qt.BottomLeftCorner, Qt.LeftDockWidgetArea) - else: - self.setCorner(Qt.BottomLeftCorner, Qt.BottomDockWidgetArea) - if Preferences.getUI("TopRightByRight"): - self.setCorner(Qt.TopRightCorner, Qt.RightDockWidgetArea) - else: - self.setCorner(Qt.TopRightCorner, Qt.TopDockWidgetArea) - if Preferences.getUI("BottomRightByRight"): - self.setCorner(Qt.BottomRightCorner, Qt.RightDockWidgetArea) - else: - self.setCorner(Qt.BottomRightCorner, Qt.BottomDockWidgetArea) - def addSideWidget(self, side, widget, icon, label): """ Public method to add a widget to the sides. @@ -2746,6 +2793,10 @@ not Preferences.getUI("UseNativeMenuBar"): mb.setNativeMenuBar(False) + ############################################################## + ## File menu + ############################################################## + self.__menus["file"] = self.viewmanager.initFileMenu() mb.addMenu(self.__menus["file"]) self.__menus["file"].addSeparator() @@ -2759,20 +2810,122 @@ self.__menus["file"].insertAction(sep, self.newWindowAct) self.__menus["file"].aboutToShow.connect(self.__showFileMenu) + ############################################################## + ## Edit menu + ############################################################## + self.__menus["edit"] = self.viewmanager.initEditMenu() mb.addMenu(self.__menus["edit"]) + ############################################################## + ## Search menu + ############################################################## + + self.__menus["search"] = self.viewmanager.initSearchMenu() + mb.addMenu(self.__menus["search"]) + + ############################################################## + ## View menu + ############################################################## + self.__menus["view"] = self.viewmanager.initViewMenu() mb.addMenu(self.__menus["view"]) + + ############################################################## + ## Bookmarks menu + ############################################################## + + self.__menus["bookmarks"] = self.viewmanager.initBookmarkMenu() + mb.addMenu(self.__menus["bookmarks"]) + self.__menus["bookmarks"].setTearOffEnabled(True) + + ############################################################## + ## Multiproject menu + ############################################################## + + self.__menus["multiproject"] = self.multiProject.initMenu() + mb.addMenu(self.__menus["multiproject"]) + + ############################################################## + ## Project menu + ############################################################## + + self.__menus["project"], self.__menus["project_tools"] = \ + self.project.initMenus() + mb.addMenu(self.__menus["project"]) + mb.addMenu(self.__menus["project_tools"]) + + ############################################################## + ## Start and Debug menus + ############################################################## self.__menus["start"], self.__menus["debug"] = \ self.debuggerUI.initMenus() mb.addMenu(self.__menus["start"]) mb.addMenu(self.__menus["debug"]) + ############################################################## + ## Extras menu + ############################################################## + + self.__menus["extras"] = QMenu(self.tr('E&xtras'), self) + self.__menus["extras"].setTearOffEnabled(True) + self.__menus["extras"].aboutToShow.connect(self.__showExtrasMenu) + mb.addMenu(self.__menus["extras"]) + self.viewmanager.addToExtrasMenu(self.__menus["extras"]) + + ############################################################## + ## Extras/Wizards menu + ############################################################## + + self.__menus["wizards"] = QMenu(self.tr('Wi&zards'), self) + self.__menus["wizards"].setTearOffEnabled(True) + self.__menus["wizards"].aboutToShow.connect(self.__showWizardsMenu) + self.wizardsMenuAct = self.__menus["extras"].addMenu( + self.__menus["wizards"]) + self.wizardsMenuAct.setEnabled(False) + + ############################################################## + ## Extras/Macros menu + ############################################################## + + self.__menus["macros"] = self.viewmanager.initMacroMenu() + self.__menus["extras"].addMenu(self.__menus["macros"]) + self.__menus["extras"].addSeparator() + + ############################################################## + ## Extras/VirtualEnv Manager menu entries + ############################################################## + + self.__menus["extras"].addAction(self.virtualenvManagerAct) + self.__menus["extras"].addAction(self.virtualenvConfigAct) + self.__menus["extras"].addSeparator() + + ############################################################## + ## Extras/Plugins menu + ############################################################## + + pluginsMenu = QMenu(self.tr('P&lugins'), self) + pluginsMenu.setIcon(UI.PixmapCache.getIcon("plugin.png")) + pluginsMenu.setTearOffEnabled(True) + pluginsMenu.addAction(self.pluginInfoAct) + pluginsMenu.addAction(self.pluginInstallAct) + pluginsMenu.addAction(self.pluginDeinstallAct) + pluginsMenu.addSeparator() + pluginsMenu.addAction(self.pluginRepoAct) + pluginsMenu.addSeparator() + pluginsMenu.addAction( + self.tr("Configure..."), self.__pluginsConfigure) + + self.__menus["extras"].addMenu(pluginsMenu) + self.__menus["extras"].addSeparator() + + ############################################################## + ## Extras/Unittest menu + ############################################################## + self.__menus["unittest"] = QMenu(self.tr('&Unittest'), self) self.__menus["unittest"].setTearOffEnabled(True) - mb.addMenu(self.__menus["unittest"]) self.__menus["unittest"].addAction(self.utDialogAct) self.__menus["unittest"].addSeparator() self.__menus["unittest"].addAction(self.utRestartAct) @@ -2781,39 +2934,28 @@ self.__menus["unittest"].addAction(self.utScriptAct) self.__menus["unittest"].addAction(self.utProjectAct) - self.__menus["multiproject"] = self.multiProject.initMenu() - mb.addMenu(self.__menus["multiproject"]) - - self.__menus["project"] = self.project.initMenu() - mb.addMenu(self.__menus["project"]) - - self.__menus["extras"] = QMenu(self.tr('E&xtras'), self) - self.__menus["extras"].setTearOffEnabled(True) - self.__menus["extras"].aboutToShow.connect(self.__showExtrasMenu) - mb.addMenu(self.__menus["extras"]) - self.viewmanager.addToExtrasMenu(self.__menus["extras"]) - self.__menus["wizards"] = QMenu(self.tr('Wi&zards'), self) - self.__menus["wizards"].setTearOffEnabled(True) - self.__menus["wizards"].aboutToShow.connect(self.__showWizardsMenu) - self.wizardsMenuAct = self.__menus["extras"].addMenu( - self.__menus["wizards"]) - self.wizardsMenuAct.setEnabled(False) - self.__menus["macros"] = self.viewmanager.initMacroMenu() - self.__menus["extras"].addMenu(self.__menus["macros"]) + self.__menus["extras"].addMenu(self.__menus["unittest"]) self.__menus["extras"].addSeparator() - self.__menus["extras"].addAction(self.virtualenvManagerAct) - self.__menus["extras"].addAction(self.virtualenvConfigAct) + + ############################################################## + ## Extras/Builtin,Plugin,User tools menus + ############################################################## + self.toolGroupsMenu = QMenu(self.tr("Select Tool Group"), self) self.toolGroupsMenu.aboutToShow.connect(self.__showToolGroupsMenu) self.toolGroupsMenu.triggered.connect(self.__toolGroupSelected) self.toolGroupsMenuTriggered = False - self.__menus["extras"].addSeparator() self.__initToolsMenus(self.__menus["extras"]) self.__menus["extras"].addSeparator() + ############################################################## + ## Settings menu + ############################################################## + self.__menus["settings"] = QMenu(self.tr('Se&ttings'), self) mb.addMenu(self.__menus["settings"]) self.__menus["settings"].setTearOffEnabled(True) + self.__menus["settings"].addAction(self.prefAct) self.__menus["settings"].addAction(self.prefExportAct) self.__menus["settings"].addAction(self.prefImportAct) @@ -2836,11 +2978,19 @@ self.__menus["settings"].addSeparator() self.__menus["settings"].addAction(self.clearPrivateDataAct) + ############################################################## + ## Window menu + ############################################################## + self.__menus["window"] = QMenu(self.tr('&Window'), self) mb.addMenu(self.__menus["window"]) self.__menus["window"].setTearOffEnabled(True) self.__menus["window"].aboutToShow.connect(self.__showWindowMenu) + ############################################################## + ## Window/Windows menu + ############################################################## + self.__menus["subwindow"] = QMenu(self.tr("&Windows"), self.__menus["window"]) self.__menus["subwindow"].setTearOffEnabled(True) @@ -2850,6 +3000,8 @@ except AttributeError: # Qt4 pass + if self.__shellPosition == "left": + self.__menus["subwindow"].addAction(self.shellActivateAct) self.__menus["subwindow"].addAction(self.pbActivateAct) self.__menus["subwindow"].addAction(self.mpbActivateAct) if self.templateViewer is not None: @@ -2864,7 +3016,8 @@ except AttributeError: # Qt4 self.__menus["subwindow"].addSeparator() - self.__menus["subwindow"].addAction(self.shellActivateAct) + if self.__shellPosition == "bottom": + self.__menus["subwindow"].addAction(self.shellActivateAct) self.__menus["subwindow"].addAction(self.taskViewerActivateAct) self.__menus["subwindow"].addAction(self.logViewerActivateAct) if self.numbersViewer is not None: @@ -2875,6 +3028,8 @@ # Qt4 self.__menus["subwindow"].addSeparator() # right side + if self.__shellPosition == "right": + self.__menus["subwindow"].addAction(self.shellActivateAct) if self.codeDocumentationViewer is not None: self.__menus["subwindow"].addAction( self.tr("Code Documentation Viewer"), @@ -2899,6 +3054,10 @@ # Qt4 self.__menus["subwindow"].addSeparator() + ############################################################## + ## Window/Toolbars menu + ############################################################## + self.__menus["toolbars"] = \ QMenu(self.tr("&Toolbars"), self.__menus["window"]) self.__menus["toolbars"].setTearOffEnabled(True) @@ -2907,24 +3066,12 @@ self.__showWindowMenu() # to initialize these actions - self.__menus["bookmarks"] = self.viewmanager.initBookmarkMenu() - mb.addMenu(self.__menus["bookmarks"]) - self.__menus["bookmarks"].setTearOffEnabled(True) - - self.__menus["plugins"] = QMenu(self.tr('P&lugins'), self) - mb.addMenu(self.__menus["plugins"]) - self.__menus["plugins"].setTearOffEnabled(True) - self.__menus["plugins"].addAction(self.pluginInfoAct) - self.__menus["plugins"].addAction(self.pluginInstallAct) - self.__menus["plugins"].addAction(self.pluginDeinstallAct) - self.__menus["plugins"].addSeparator() - self.__menus["plugins"].addAction(self.pluginRepoAct) - self.__menus["plugins"].addSeparator() - self.__menus["plugins"].addAction( - self.tr("Configure..."), self.__pluginsConfigure) - mb.addSeparator() + ############################################################## + ## Help menu + ############################################################## + self.__menus["help"] = QMenu(self.tr('&Help'), self) mb.addMenu(self.__menus["help"]) self.__menus["help"].setTearOffEnabled(True) @@ -3218,7 +3365,7 @@ self.__statusBar.addPermanentWidget(self.sbZoom) self.sbZoom.setWhatsThis(self.tr( """<p>This part of the status bar allows zooming the current""" - """ editor, shell or terminal.</p>""" + """ editor or shell.</p>""" )) self.viewmanager.setSbInfo( @@ -4085,7 +4232,17 @@ state = self.profiles[name][2][5] if not state.isEmpty(): self.rightSidebar.restoreState(state) - self.__configureDockareaCornerUsage() + + if self.__layoutType == "Toolboxes": + # set the corner usages + self.setCorner(Qt.TopLeftCorner, + Qt.LeftDockWidgetArea) + self.setCorner(Qt.BottomLeftCorner, + Qt.LeftDockWidgetArea) + self.setCorner(Qt.TopRightCorner, + Qt.RightDockWidgetArea) + self.setCorner(Qt.BottomRightCorner, + Qt.RightDockWidgetArea) # step 3: activate the windows of the new profile if self.__layoutType == "Toolboxes": @@ -4196,8 +4353,6 @@ elif self.__layoutType == "Sidebars": self.leftSidebar.show() self.leftSidebar.setCurrentWidget(self.projectBrowser) - else: - self.projectBrowser.show() self.projectBrowser.currentWidget().setFocus( Qt.ActiveWindowFocusReason) @@ -4211,8 +4366,6 @@ elif self.__layoutType == "Sidebars": self.leftSidebar.show() self.leftSidebar.setCurrentWidget(self.multiProjectBrowser) - else: - self.multiProjectBrowser.show() self.multiProjectBrowser.setFocus(Qt.ActiveWindowFocusReason) def activateDebugViewer(self): @@ -4225,8 +4378,6 @@ elif self.__layoutType == "Sidebars": self.rightSidebar.show() self.rightSidebar.setCurrentWidget(self.debugViewer) - else: - self.debugViewer.show() self.debugViewer.currentWidget().setFocus(Qt.ActiveWindowFocusReason) def __activateShell(self): @@ -4234,13 +4385,11 @@ Private slot to handle the activation of the Shell window. """ if self.__layoutType == "Toolboxes": - self.hToolboxDock.show() - self.hToolbox.setCurrentWidget(self.shellAssembly) + self.__shellParent.show() + self.__shellParent.widget().setCurrentWidget(self.shellAssembly) elif self.__layoutType == "Sidebars": - self.bottomSidebar.show() - self.bottomSidebar.setCurrentWidget(self.shellAssembly) - else: - self.shell.show() + self.__shellParent.show() + self.__shellParent.setCurrentWidget(self.shellAssembly) self.shell.setFocus(Qt.ActiveWindowFocusReason) def __activateLogViewer(self): @@ -4253,8 +4402,6 @@ elif self.__layoutType == "Sidebars": self.bottomSidebar.show() self.bottomSidebar.setCurrentWidget(self.logViewer) - else: - self.logViewer.show() self.logViewer.setFocus(Qt.ActiveWindowFocusReason) def __activateTaskViewer(self): @@ -4267,8 +4414,6 @@ elif self.__layoutType == "Sidebars": self.bottomSidebar.show() self.bottomSidebar.setCurrentWidget(self.taskViewer) - else: - self.taskViewer.show() self.taskViewer.setFocus(Qt.ActiveWindowFocusReason) def __activateTemplateViewer(self): @@ -4282,8 +4427,6 @@ elif self.__layoutType == "Sidebars": self.leftSidebar.show() self.leftSidebar.setCurrentWidget(self.templateViewer) - else: - self.templateViewer.show() self.templateViewer.setFocus(Qt.ActiveWindowFocusReason) def __activateBrowser(self): @@ -4297,8 +4440,6 @@ elif self.__layoutType == "Sidebars": self.leftSidebar.show() self.leftSidebar.setCurrentWidget(self.browser) - else: - self.browser.show() self.browser.setFocus(Qt.ActiveWindowFocusReason) def __toggleLeftToolbox(self): @@ -4387,8 +4528,6 @@ elif self.__layoutType == "Sidebars": self.rightSidebar.show() self.rightSidebar.setCurrentWidget(self.cooperation) - else: - self.cooperation.show() self.cooperation.setFocus(Qt.ActiveWindowFocusReason) def __activateIRC(self): @@ -4402,8 +4541,6 @@ elif self.__layoutType == "Sidebars": self.rightSidebar.show() self.rightSidebar.setCurrentWidget(self.irc) - else: - self.irc.show() self.irc.setFocus(Qt.ActiveWindowFocusReason) def __activateSymbolsViewer(self): @@ -4417,8 +4554,6 @@ elif self.__layoutType == "Sidebars": self.leftSidebar.show() self.leftSidebar.setCurrentWidget(self.symbolsViewer) - else: - self.symbolsViewer.show() self.symbolsViewer.setFocus(Qt.ActiveWindowFocusReason) def __activateNumbersViewer(self): @@ -4432,8 +4567,6 @@ elif self.__layoutType == "Sidebars": self.bottomSidebar.show() self.bottomSidebar.setCurrentWidget(self.numbersViewer) - else: - self.numbersViewer.show() self.numbersViewer.setFocus(Qt.ActiveWindowFocusReason) def __activateViewmanager(self): @@ -4459,8 +4592,6 @@ self.rightSidebar.show() self.rightSidebar.setCurrentWidget( self.codeDocumentationViewer) - else: - self.codeDocumentationViewer.show() if switchFocus: self.codeDocumentationViewer.setFocus( Qt.ActiveWindowFocusReason) @@ -4476,8 +4607,6 @@ elif self.__layoutType == "Sidebars": self.rightSidebar.show() self.rightSidebar.setCurrentWidget(self.pipWidget) - else: - self.pipWidget.show() self.pipWidget.setFocus(Qt.ActiveWindowFocusReason) def __activateCondaWidget(self): @@ -4491,8 +4620,6 @@ elif self.__layoutType == "Sidebars": self.rightSidebar.show() self.rightSidebar.setCurrentWidget(self.condaWidget) - else: - self.condaWidget.show() self.condaWidget.setFocus(Qt.ActiveWindowFocusReason) def __toggleWindow(self, w): @@ -5853,28 +5980,39 @@ @param pageName name of the configuration page to show (string) """ - from Preferences.ConfigurationDialog import ConfigurationDialog - dlg = ConfigurationDialog( - self, 'Configuration', - expandedEntries=self.__expandedConfigurationEntries, - ) - dlg.preferencesChanged.connect(self.__preferencesChanged) - dlg.masterPasswordChanged.connect(self.__masterPasswordChanged) - dlg.show() - if pageName is not None: - dlg.showConfigurationPageByName(pageName) - elif self.__lastConfigurationPageName: - dlg.showConfigurationPageByName(self.__lastConfigurationPageName) - else: - dlg.showConfigurationPageByName("empty") - dlg.exec_() - QApplication.processEvents() - if dlg.result() == QDialog.Accepted: - dlg.setPreferences() - Preferences.syncPreferences() - self.__preferencesChanged() - self.__lastConfigurationPageName = dlg.getConfigurationPageName() - self.__expandedConfigurationEntries = dlg.getExpandedEntries() + if self.__configurationDialog is None: + # only one invocation at a time is allowed + from Preferences.ConfigurationDialog import ConfigurationDialog + self.__configurationDialog = ConfigurationDialog( + self, 'Configuration', + expandedEntries=self.__expandedConfigurationEntries, + ) + self.__configurationDialog.preferencesChanged.connect( + self.__preferencesChanged) + self.__configurationDialog.masterPasswordChanged.connect( + self.__masterPasswordChanged) + self.__configurationDialog.show() + if pageName is not None: + self.__configurationDialog.showConfigurationPageByName( + pageName) + elif self.__lastConfigurationPageName: + self.__configurationDialog.showConfigurationPageByName( + self.__lastConfigurationPageName) + else: + self.__configurationDialog.showConfigurationPageByName("empty") + self.__configurationDialog.exec_() + QApplication.processEvents() + if self.__configurationDialog.result() == QDialog.Accepted: + self.__configurationDialog.setPreferences() + Preferences.syncPreferences() + self.__preferencesChanged() + self.__lastConfigurationPageName = \ + self.__configurationDialog.getConfigurationPageName() + self.__expandedConfigurationEntries = \ + self.__configurationDialog.getExpandedEntries() + + self.__configurationDialog.deleteLater() + self.__configurationDialog = None def __exportPreferences(self): """ @@ -5921,8 +6059,6 @@ self.__httpAlternatives = Preferences.getUI("VersionsUrls6") self.performVersionCheck(False) - self.__configureDockareaCornerUsage() - from QScintilla.SpellChecker import SpellChecker SpellChecker.setDefaultLanguage( Preferences.getEditor("SpellCheckingDefaultLanguage"))
--- a/eric6/ViewManager/ViewManager.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/ViewManager/ViewManager.py Mon May 20 22:44:12 2019 +0200 @@ -2770,27 +2770,6 @@ autocompletionMenu.addAction(self.autoCompleteFromAPIsAct) autocompletionMenu.addAction(self.autoCompleteFromAllAct) - searchMenu = QMenu( - QCoreApplication.translate('ViewManager', '&Search'), - self.ui) - searchMenu.setTearOffEnabled(True) - searchMenu.addAction(self.quickSearchAct) - searchMenu.addAction(self.quickSearchBackAct) - searchMenu.addAction(self.searchAct) - searchMenu.addAction(self.searchNextAct) - searchMenu.addAction(self.searchPrevAct) - searchMenu.addAction(self.searchNextWordAct) - searchMenu.addAction(self.searchPrevWordAct) - searchMenu.addAction(self.replaceAct) - searchMenu.addSeparator() - searchMenu.addAction(self.searchClearMarkersAct) - searchMenu.addSeparator() - searchMenu.addAction(self.searchFilesAct) - searchMenu.addAction(self.replaceFilesAct) - searchMenu.addSeparator() - searchMenu.addAction(self.searchOpenFilesAct) - searchMenu.addAction(self.replaceOpenFilesAct) - menu = QMenu(QCoreApplication.translate('ViewManager', '&Edit'), self.ui) menu.setTearOffEnabled(True) @@ -2821,8 +2800,6 @@ menu.addAction(self.calltipsAct) menu.addAction(self.codeInfoAct) menu.addSeparator() - menu.addMenu(searchMenu) - menu.addSeparator() menu.addAction(self.gotoAct) menu.addAction(self.gotoBraceAct) menu.addAction(self.gotoLastEditAct) @@ -3351,6 +3328,36 @@ )) self.replaceOpenFilesAct.triggered.connect(self.__replaceOpenFiles) self.searchActions.append(self.replaceOpenFilesAct) + + def initSearchMenu(self): + """ + Public method to create the Search menu. + + @return the generated menu + @rtype QMenu + """ + menu = QMenu( + QCoreApplication.translate('ViewManager', '&Search'), + self.ui) + menu.setTearOffEnabled(True) + menu.addAction(self.quickSearchAct) + menu.addAction(self.quickSearchBackAct) + menu.addAction(self.searchAct) + menu.addAction(self.searchNextAct) + menu.addAction(self.searchPrevAct) + menu.addAction(self.searchNextWordAct) + menu.addAction(self.searchPrevWordAct) + menu.addAction(self.replaceAct) + menu.addSeparator() + menu.addAction(self.searchClearMarkersAct) + menu.addSeparator() + menu.addAction(self.searchFilesAct) + menu.addAction(self.replaceFilesAct) + menu.addSeparator() + menu.addAction(self.searchOpenFilesAct) + menu.addAction(self.replaceOpenFilesAct) + + return menu def initSearchToolbars(self, toolbarManager): """ @@ -4375,7 +4382,7 @@ def addToExtrasMenu(self, menu): """ - Public method to add some actions to the extras menu. + Public method to add some actions to the Extras menu. @param menu reference to the menu to add actions to (QMenu) """
--- a/eric6/VirtualEnv/VirtualenvManager.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/VirtualEnv/VirtualenvManager.py Mon May 20 22:44:12 2019 +0200 @@ -515,14 +515,22 @@ else: return "" - def getVirtualenvNames(self): + def getVirtualenvNames(self, noRemote=False): """ Public method to get a list of defined virtual environments. + @param noRemote flag indicating to exclude environments for remote + debugging + @type bool @return list of defined virtual environments @rtype list of str """ - return list(self.__virtualEnvironments.keys()) + environments = list(self.__virtualEnvironments.keys()) + if noRemote: + environments = [name for name in environments + if not self.isRemoteEnvironment(name)] + + return environments def getVirtualenvNamesForVariant(self, variant): """
--- a/eric6/WebBrowser/WebBrowserTabWidget.py Wed May 15 22:26:22 2019 +0200 +++ b/eric6/WebBrowser/WebBrowserTabWidget.py Mon May 20 22:44:12 2019 +0200 @@ -127,20 +127,8 @@ self.__closedTabsButton.setEnabled(False) self.__rightCornerWidgetLayout.addWidget(self.__closedTabsButton) - self.__closeButton = QToolButton(self) - self.__closeButton.setIcon(UI.PixmapCache.getIcon("close.png"))