src/eric7/UI/BrowserModel.py

branch
eric7
changeset 10468
fcae57045733
parent 10439
21c28b0f9e41
child 10470
cd7bfd539ac9
equal deleted inserted replaced
10467:b3929f6748ae 10468:fcae57045733
689 parentItem.isPython3File() or parentItem.isCythonFile(), 689 parentItem.isPython3File() or parentItem.isCythonFile(),
690 ) 690 )
691 except ImportError: 691 except ImportError:
692 return 692 return
693 693
694 keys = list(dictionary) 694 if bool(dictionary):
695 if len(keys) > 0:
696 if repopulate: 695 if repopulate:
697 last = len(keys) - 1 696 last = len(dictionary) - 1
698 if "@@Coding@@" in keys and not Preferences.getUI("BrowserShowCoding"): 697 if "@@Coding@@" in dictionary and not Preferences.getUI(
698 "BrowserShowCoding"
699 ):
699 last -= 1 700 last -= 1
700 self.beginInsertRows( 701 self.beginInsertRows(
701 self.createIndex(parentItem.row(), 0, parentItem), 0, last 702 self.createIndex(parentItem.row(), 0, parentItem), 0, last
702 ) 703 )
703 704
704 for key in keys: 705 for key in dictionary:
705 if key.startswith("@@"): 706 if key.startswith("@@"):
706 # special treatment done later 707 # special treatment done later
707 continue 708 continue
708 cl = dictionary[key] 709 cl = dictionary[key]
709 with contextlib.suppress(AttributeError): 710 with contextlib.suppress(AttributeError):
710 if cl.module == moduleName: 711 if cl.module == moduleName:
711 node = BrowserClassItem(parentItem, cl, fileName) 712 if isinstance(cl, ClbrBaseClasses.Class):
713 node = BrowserClassItem(parentItem, cl, fileName)
714 elif isinstance(cl, ClbrBaseClasses.Function):
715 node = BrowserMethodItem(parentItem, cl, fileName)
712 self._addItem(node, parentItem) 716 self._addItem(node, parentItem)
713 if "@@Coding@@" in keys and Preferences.getUI("BrowserShowCoding"): 717 if "@@Coding@@" in dictionary and Preferences.getUI("BrowserShowCoding"):
714 node = BrowserCodingItem( 718 node = BrowserCodingItem(
715 parentItem, 719 parentItem,
716 QCoreApplication.translate("BrowserModel", "Coding: {0}").format( 720 QCoreApplication.translate("BrowserModel", "Coding: {0}").format(
717 dictionary["@@Coding@@"].coding 721 dictionary["@@Coding@@"].coding
718 ), 722 ),
719 dictionary["@@Coding@@"].linenumber, 723 dictionary["@@Coding@@"].linenumber,
720 ) 724 )
721 self._addItem(node, parentItem) 725 self._addItem(node, parentItem)
722 if "@@Globals@@" in keys: 726 if "@@Globals@@" in dictionary:
723 node = BrowserGlobalsItem( 727 node = BrowserGlobalsItem(
724 parentItem, 728 parentItem,
725 dictionary["@@Globals@@"].globals, 729 dictionary["@@Globals@@"].globals,
726 QCoreApplication.translate("BrowserModel", "Globals"), 730 QCoreApplication.translate("BrowserModel", "Globals"),
727 ) 731 )
728 self._addItem(node, parentItem) 732 self._addItem(node, parentItem)
729 if "@@Import@@" in keys or "@@ImportFrom@@" in keys: 733 if "@@Import@@" in dictionary or "@@ImportFrom@@" in dictionary:
730 node = BrowserImportsItem( 734 node = BrowserImportsItem(
731 parentItem, QCoreApplication.translate("BrowserModel", "Imports") 735 parentItem, QCoreApplication.translate("BrowserModel", "Imports")
732 ) 736 )
733 self._addItem(node, parentItem) 737 self._addItem(node, parentItem)
734 if "@@Import@@" in keys: 738 if "@@Import@@" in dictionary:
735 for importedModule in ( 739 for importedModule in (
736 dictionary["@@Import@@"].getImports().values() 740 dictionary["@@Import@@"].getImports().values()
737 ): 741 ):
738 m_node = BrowserImportItem( 742 m_node = BrowserImportItem(
739 node, 743 node,
880 keys = [] 884 keys = []
881 for name in fn.classes: 885 for name in fn.classes:
882 keys.append((name, "c")) 886 keys.append((name, "c"))
883 for name in fn.methods: 887 for name in fn.methods:
884 keys.append((name, "m")) 888 keys.append((name, "m"))
889 for name in fn.attributes:
890 keys.append((name, "a"))
885 891
886 if len(keys) > 0: 892 if len(keys) > 0:
887 if repopulate: 893 if repopulate:
888 self.beginInsertRows( 894 self.beginInsertRows(
889 self.createIndex(parentItem.row(), 0, parentItem), 0, len(keys) - 1 895 self.createIndex(parentItem.row(), 0, parentItem), 0, len(keys) - 1
891 for key, kind in keys: 897 for key, kind in keys:
892 if kind == "c": 898 if kind == "c":
893 node = BrowserClassItem(parentItem, fn.classes[key], file_) 899 node = BrowserClassItem(parentItem, fn.classes[key], file_)
894 elif kind == "m": 900 elif kind == "m":
895 node = BrowserMethodItem(parentItem, fn.methods[key], file_) 901 node = BrowserMethodItem(parentItem, fn.methods[key], file_)
902 elif kind == "a":
903 node = BrowserClassAttributeItem(parentItem, fn.attributes[key])
896 self._addItem(node, parentItem) 904 self._addItem(node, parentItem)
897 if repopulate: 905 if repopulate:
898 self.endInsertRows() 906 self.endInsertRows()
899 907
900 def populateClassAttributesItem(self, parentItem, repopulate=False): 908 def populateClassAttributesItem(self, parentItem, repopulate=False):
1839 # if no defaults are wanted 1847 # if no defaults are wanted
1840 # ....format(name, 1848 # ....format(name,
1841 # ", ".join([e.split('=')[0].strip() 1849 # ", ".join([e.split('=')[0].strip()
1842 # for e in self._functionObject.parameters])) 1850 # for e in self._functionObject.parameters]))
1843 if self._functionObject and ( 1851 if self._functionObject and (
1844 self._functionObject.methods or self._functionObject.classes 1852 self._functionObject.methods
1853 or self._functionObject.classes
1854 or self._functionObject.attributes
1845 ): 1855 ):
1846 self._populated = False 1856 self._populated = False
1847 self._lazyPopulation = True 1857 self._lazyPopulation = True
1848 1858
1849 def name(self): 1859 def name(self):

eric ide

mercurial