UI/BrowserModel.py

changeset 3357
2390df6f42ba
parent 3160
209a07d7e401
child 3358
57af7e9fda48
--- a/UI/BrowserModel.py	Tue Mar 11 18:56:38 2014 +0100
+++ b/UI/BrowserModel.py	Tue Mar 11 20:07:05 2014 +0100
@@ -49,6 +49,9 @@
         self.watcher = QFileSystemWatcher(self)
         self.watcher.directoryChanged.connect(self.directoryChanged)
         
+        self.__sysPathInterpreter = ""
+        self.__sysPathItem = None
+        
         if not nopopulate:
             rootData = QApplication.translate("BrowserModel", "Name")
             self.rootItem = BrowserItem(None, rootData)
@@ -350,8 +353,6 @@
         """
         Private method to populate the browser model.
         """
-        self._addItem(BrowserSysPathItem(self.rootItem), self.rootItem)
-        
         self.toplevelDirs = []
         tdp = Preferences.Prefs.settings.value('BrowserModel/ToplevelDirs')
         if tdp:
@@ -367,6 +368,41 @@
             itm = BrowserDirectoryItem(self.rootItem, d)
             self._addItem(itm, self.rootItem)
     
+    def interpreterChanged(self, interpreter):
+        """
+        Public method to handle a change of the debug client's interpreter.
+        
+        @param interpreter interpreter of the debug client (string)
+        """
+        if interpreter and "python" in interpreter.lower():
+            if interpreter.endswith("w.exe"):
+                interpreter = interpreter.replace("w.exe", ".exe")
+            if self.__sysPathInterpreter != interpreter:
+                self.__sysPathInterpreter = interpreter
+                # step 1: remove sys.path entry
+                if self.__sysPathItem is not None:
+                    self.beginRemoveRows(
+                        QModelIndex(), self.__sysPathItem.row(),
+                        self.__sysPathItem.row())
+                    self.rootItem.removeChild(self.__sysPathItem)
+                    self.endRemoveRows()
+                    self.__sysPathItem = None
+                
+                if self.__sysPathInterpreter:
+                    # step 2: add a new one
+                    self.__sysPathItem = BrowserSysPathItem(self.rootItem)
+                    self.addItem(self.__sysPathItem)
+        else:
+            # remove sys.path entry
+            if self.__sysPathItem is not None:
+                self.beginRemoveRows(
+                    QModelIndex(), self.__sysPathItem.row(),
+                    self.__sysPathItem.row())
+                self.rootItem.removeChild(self.__sysPathItem)
+                self.endRemoveRows()
+                self.__sysPathItem = None
+            self.__sysPathInterpreter = ""
+    
     def programChange(self, dirname):
         """
         Public method to change the entry for the directory of file being
@@ -522,17 +558,16 @@
         @param parentItem reference to the sys.path item to be populated
         @param repopulate flag indicating a repopulation (boolean)
         """
+        # TODO: make this dynamic depending on interpreter
         if len(sys.path) > 0:
             if repopulate:
                 self.beginInsertRows(
                     self.createIndex(parentItem.row(), 0, parentItem),
                     0, len(sys.path) - 1)
             for p in sys.path:
-                if p == '':
-                    p = os.getcwd()
-                
-                node = BrowserDirectoryItem(parentItem, p)
-                self._addItem(node, parentItem)
+                if p:
+                    node = BrowserDirectoryItem(parentItem, p)
+                    self._addItem(node, parentItem)
             if repopulate:
                 self.endInsertRows()
 

eric ide

mercurial