eric6/UI/BrowserModel.py

changeset 7690
a59680062837
parent 7678
285c786c4a9c
child 7708
b2c315bcb1c0
--- a/eric6/UI/BrowserModel.py	Fri Sep 04 18:48:52 2020 +0200
+++ b/eric6/UI/BrowserModel.py	Fri Sep 04 18:50:43 2020 +0200
@@ -199,7 +199,7 @@
         childItem = index.internalPointer()
         parentItem = childItem.parent()
         
-        if parentItem == self.rootItem:
+        if parentItem is None or parentItem == self.rootItem:
             return QModelIndex()
         
         return self.createIndex(parentItem.row(), 0, parentItem)
@@ -657,7 +657,8 @@
                 node = BrowserCodingItem(
                     parentItem,
                     QCoreApplication.translate("BrowserModel", "Coding: {0}")
-                    .format(dictionary["@@Coding@@"].coding))
+                    .format(dictionary["@@Coding@@"].coding),
+                    dictionary["@@Coding@@"].linenumber)
                 self._addItem(node, parentItem)
             if "@@Globals@@" in keys:
                 node = BrowserGlobalsItem(
@@ -693,7 +694,8 @@
             if repopulate:
                 self.endInsertRows()
         parentItem._populated = True
-        if (parentItem.type_ == BrowserItemFile and
+        if (
+            parentItem.type_ == BrowserItemFile and
             fileName not in self.watchedFileItems
         ):
             # watch the file only in the file browser not the project viewer
@@ -755,21 +757,6 @@
         for name in list(cl.methods.keys()):
             keys.append((name, 'm'))
         
-        if len(keys) > 0:
-            if repopulate:
-                self.beginInsertRows(
-                    self.createIndex(parentItem.row(), 0, parentItem),
-                    0, len(keys) - 1)
-            for key, kind in keys:
-                if kind == 'c':
-                    node = BrowserClassItem(parentItem, cl.classes[key], file_)
-                elif kind == 'm':
-                    node = BrowserMethodItem(parentItem, cl.methods[key],
-                                             file_)
-                self._addItem(node, parentItem)
-            if repopulate:
-                self.endInsertRows()
-        
         if len(cl.attributes):
             node = BrowserClassAttributesItem(
                 parentItem, cl.attributes,
@@ -790,6 +777,21 @@
                     node, self.createIndex(parentItem.row(), 0, parentItem))
             else:
                 self._addItem(node, parentItem)
+        
+        if len(keys) > 0:
+            if repopulate:
+                self.beginInsertRows(
+                    self.createIndex(parentItem.row(), 0, parentItem),
+                    0, len(keys) - 1)
+            for key, kind in keys:
+                if kind == 'c':
+                    node = BrowserClassItem(parentItem, cl.classes[key], file_)
+                elif kind == 'm':
+                    node = BrowserMethodItem(parentItem, cl.methods[key],
+                                             file_)
+                self._addItem(node, parentItem)
+            if repopulate:
+                self.endInsertRows()
 
     def populateMethodItem(self, parentItem, repopulate=False):
         """
@@ -1862,17 +1864,32 @@
     """
     Class implementing the data structure for browser coding items.
     """
-    def __init__(self, parent, text):
+    def __init__(self, parent, text, linenumber):
         """
         Constructor
         
         @param parent parent item
-        @param text text to be shown by this item (string)
+        @type BrowserItem
+        @param text text to be shown by this item
+        @type str
+        @param linenumber line number of the coding line
+        @type int
         """
         BrowserItem.__init__(self, parent, text)
         
         self.type_ = BrowserItemCoding
         self.icon = UI.PixmapCache.getIcon("textencoding")
+        
+        self.__lineno = linenumber
+    
+    def lineno(self):
+        """
+        Public method returning the line number of the coding line.
+        
+        @return line number defining the coding line
+        @rtype int
+        """
+        return self.__lineno
     
     def lessThan(self, other, column, order):
         """

eric ide

mercurial