Wed, 03 Jan 2024 12:05:03 +0100
Changed the browser item types to an enum in BrowserModel and ProjectBrowserModel.
--- a/src/eric7/Project/ProjectBrowserModel.py Wed Jan 03 11:25:17 2024 +0100 +++ b/src/eric7/Project/ProjectBrowserModel.py Wed Jan 03 12:05:03 2024 +0100 @@ -20,15 +20,12 @@ BrowserDirectoryItem, BrowserFileItem, BrowserItem, + BrowserItemType, BrowserModel, BrowserSimpleDirectoryItem, ) from eric7.Utilities import ModuleParser -ProjectBrowserItemSimpleDirectory = 100 -ProjectBrowserItemDirectory = 101 -ProjectBrowserItemFile = 102 - class ProjectBrowserItemMixin: """ @@ -132,7 +129,7 @@ BrowserSimpleDirectoryItem.__init__(self, parent, text, path=path) ProjectBrowserItemMixin.__init__(self, projectType) - self.type_ = ProjectBrowserItemSimpleDirectory + self.type_ = BrowserItemType.PbSimpleDirectory class ProjectBrowserDirectoryItem(BrowserDirectoryItem, ProjectBrowserItemMixin): @@ -158,7 +155,7 @@ BrowserDirectoryItem.__init__(self, parent, dinfo, full) ProjectBrowserItemMixin.__init__(self, projectType, bold) - self.type_ = ProjectBrowserItemDirectory + self.type_ = BrowserItemType.PbDirectory class ProjectBrowserFileItem(BrowserFileItem, ProjectBrowserItemMixin): @@ -188,7 +185,7 @@ BrowserFileItem.__init__(self, parent, finfo, full, sourceLanguage) ProjectBrowserItemMixin.__init__(self, projectType, bold) - self.type_ = ProjectBrowserItemFile + self.type_ = BrowserItemType.PbFile class ProjectBrowserModel(BrowserModel): @@ -299,11 +296,11 @@ @param repopulate flag indicating a repopulation @type bool """ - if parentItem.type() == ProjectBrowserItemSimpleDirectory: + if parentItem.type() == BrowserItemType.PbSimpleDirectory: return # nothing to do - elif parentItem.type() == ProjectBrowserItemDirectory: + elif parentItem.type() == BrowserItemType.PbDirectory: self.populateProjectDirectoryItem(parentItem, repopulate) - elif parentItem.type() == ProjectBrowserItemFile: + elif parentItem.type() == BrowserItemType.PbFile: self.populateFileItem(parentItem, repopulate) else: BrowserModel.populateItem(self, parentItem, repopulate)
--- a/src/eric7/UI/Browser.py Wed Jan 03 11:25:17 2024 +0100 +++ b/src/eric7/UI/Browser.py Wed Jan 03 12:05:03 2024 +0100 @@ -47,7 +47,7 @@ BrowserGlobalsItem, BrowserImportItem, BrowserImportsItem, - BrowserItemDirectory, + BrowserItemType, BrowserMethodItem, BrowserModel, BrowserSimpleDirectoryItem, @@ -1076,7 +1076,7 @@ index = self.currentIndex() if index.isValid(): itm = self.model().item(index) - if itm.type() == BrowserItemDirectory: + if itm.type() == BrowserItemType.Directory: self.__deleteDirectory(itm.dirName()) else: self.__deleteFile(itm.fileName())
--- a/src/eric7/UI/BrowserModel.py Wed Jan 03 11:25:17 2024 +0100 +++ b/src/eric7/UI/BrowserModel.py Wed Jan 03 12:05:03 2024 +0100 @@ -8,6 +8,7 @@ """ import contextlib +import enum import fnmatch import json import os @@ -30,19 +31,30 @@ from eric7.Utilities import ClassBrowsers from eric7.Utilities.ClassBrowsers import ClbrBaseClasses -# TODO: change this to enum.Enum -BrowserItemRoot = 0 -BrowserItemSimpleDirectory = 1 -BrowserItemDirectory = 2 -BrowserItemSysPath = 3 -BrowserItemFile = 4 -BrowserItemClass = 5 -BrowserItemMethod = 6 -BrowserItemAttributes = 7 -BrowserItemAttribute = 8 -BrowserItemCoding = 9 -BrowserItemImports = 10 -BrowserItemImport = 11 + +class BrowserItemType(enum.Enum): + """ + Class defining the various browser item types. + """ + + # Base types used everywhere + Root = 0 + SimpleDirectory = 1 + Directory = 2 + SysPath = 3 + File = 4 + Class = 5 + Method = 6 + Attributes = 7 + Attribute = 8 + Coding = 9 + Imports = 10 + Import = 11 + + # Types used by the project browser model + PbSimpleDirectory = 100 + PbDirectory = 101 + PbFile = 102 class BrowserModel(QAbstractItemModel): @@ -571,17 +583,17 @@ @param repopulate flag indicating a repopulation @type bool """ - if parentItem.type() == BrowserItemDirectory: + if parentItem.type() == BrowserItemType.Directory: self.populateDirectoryItem(parentItem, repopulate) - elif parentItem.type() == BrowserItemSysPath: + elif parentItem.type() == BrowserItemType.SysPath: self.populateSysPathItem(parentItem, repopulate) - elif parentItem.type() == BrowserItemFile: + elif parentItem.type() == BrowserItemType.File: self.populateFileItem(parentItem, repopulate) - elif parentItem.type() == BrowserItemClass: + elif parentItem.type() == BrowserItemType.Class: self.populateClassItem(parentItem, repopulate) - elif parentItem.type() == BrowserItemMethod: + elif parentItem.type() == BrowserItemType.Method: self.populateMethodItem(parentItem, repopulate) - elif parentItem.type() == BrowserItemAttributes: + elif parentItem.type() == BrowserItemType.Attributes: self.populateClassAttributesItem(parentItem, repopulate) def populateDirectoryItem(self, parentItem, repopulate=False): @@ -764,7 +776,7 @@ parentItem._populated = True if ( - parentItem.type_ == BrowserItemFile + parentItem.type_ == BrowserItemType.File and fileName not in self.watchedFileItems ): # watch the file only in the file browser not the project viewer @@ -953,7 +965,7 @@ self.parentItem = parent self.itemData = [data] - self.type_ = BrowserItemRoot + self.type_ = BrowserItemType.Root self.icon = EricPixmapCache.getIcon("empty") self._populated = True self._lazyPopulation = False @@ -1062,9 +1074,8 @@ Public method to get the item type. @return type of the item - @rtype int + @rtype BrowserItemType """ - # TODO: change this to reference the new Enum return self.type_ def isPublic(self): @@ -1149,7 +1160,7 @@ """ BrowserItem.__init__(self, parent, text) - self.type_ = BrowserItemSimpleDirectory + self.type_ = BrowserItemType.SimpleDirectory self._dirName = path if not os.path.isdir(self._dirName): @@ -1232,7 +1243,7 @@ dn = self._dirName if full else os.path.basename(self._dirName) BrowserItem.__init__(self, parent, dn) - self.type_ = BrowserItemDirectory + self.type_ = BrowserItemType.Directory if ( not FileSystemUtilities.isDrive(self._dirName) and os.path.lexists(self._dirName) @@ -1311,7 +1322,7 @@ """ BrowserItem.__init__(self, parent, "sys.path") - self.type_ = BrowserItemSysPath + self.type_ = BrowserItemType.SysPath self.icon = EricPixmapCache.getIcon("filePython") self._populated = False self._lazyPopulation = True @@ -1346,7 +1357,7 @@ """ BrowserItem.__init__(self, parent, os.path.basename(finfo)) - self.type_ = BrowserItemFile + self.type_ = BrowserItemType.File self.fileext = os.path.splitext(finfo)[1].lower() self._filename = os.path.abspath(finfo) self._dirName = os.path.dirname(finfo) @@ -1679,7 +1690,7 @@ BrowserItem.__init__(self, parent, name) - self.type_ = BrowserItemClass + self.type_ = BrowserItemType.Class self._name = name self._classObject = cl self._filename = filename @@ -1823,7 +1834,7 @@ name = fn.name BrowserItem.__init__(self, parent, name) - self.type_ = BrowserItemMethod + self.type_ = BrowserItemType.Method self._name = name self._functionObject = fn self._filename = filename @@ -1960,7 +1971,7 @@ """ BrowserItem.__init__(self, parent, text) - self.type_ = BrowserItemAttributes + self.type_ = BrowserItemType.Attributes self._attributes = attributes.copy() self._populated = False self._lazyPopulation = True @@ -2036,7 +2047,7 @@ """ BrowserItem.__init__(self, parent, attribute.name) - self.type_ = BrowserItemAttribute + self.type_ = BrowserItemType.Attribute self._attributeObject = attribute self.__public = attribute.isPublic() if isClass: @@ -2152,7 +2163,7 @@ """ BrowserItem.__init__(self, parent, text) - self.type_ = BrowserItemCoding + self.type_ = BrowserItemType.Coding self.icon = EricPixmapCache.getIcon("textencoding") self.__lineno = linenumber @@ -2204,7 +2215,7 @@ """ BrowserItem.__init__(self, parent, text) - self.type_ = BrowserItemImports + self.type_ = BrowserItemType.Imports self.icon = EricPixmapCache.getIcon("imports") def lessThan(self, other, column, order): @@ -2252,7 +2263,7 @@ self.__filename = filename self.__linenos = lineNumbers[:] - self.type_ = BrowserItemImport + self.type_ = BrowserItemType.Import if isModule: self.icon = EricPixmapCache.getIcon("importedModule") else:
--- a/src/eric7/UI/BrowserSortFilterProxyModel.py Wed Jan 03 11:25:17 2024 +0100 +++ b/src/eric7/UI/BrowserSortFilterProxyModel.py Wed Jan 03 12:05:03 2024 +0100 @@ -121,9 +121,9 @@ sindex = self.sourceModel().index(source_row, 0, source_parent) itm = self.sourceModel().item(sindex) if self.hideHiddenFiles: - if itm.type() == BrowserModel.BrowserItemDirectory: + if itm.type() == BrowserModel.BrowserItemType.Directory: return not os.path.basename(itm.dirName()).startswith(".") - elif itm.type() == BrowserModel.BrowserItemFile: + elif itm.type() == BrowserModel.BrowserItemType.File: return not os.path.basename(itm.fileName()).startswith(".") elif self.hideNonPublic: return itm.isPublic()