UI/BrowserModel.py

changeset 3357
2390df6f42ba
parent 3160
209a07d7e401
child 3358
57af7e9fda48
equal deleted inserted replaced
3356:22633c0739e2 3357:2390df6f42ba
46 46
47 self.progDir = None 47 self.progDir = None
48 self.watchedItems = {} 48 self.watchedItems = {}
49 self.watcher = QFileSystemWatcher(self) 49 self.watcher = QFileSystemWatcher(self)
50 self.watcher.directoryChanged.connect(self.directoryChanged) 50 self.watcher.directoryChanged.connect(self.directoryChanged)
51
52 self.__sysPathInterpreter = ""
53 self.__sysPathItem = None
51 54
52 if not nopopulate: 55 if not nopopulate:
53 rootData = QApplication.translate("BrowserModel", "Name") 56 rootData = QApplication.translate("BrowserModel", "Name")
54 self.rootItem = BrowserItem(None, rootData) 57 self.rootItem = BrowserItem(None, rootData)
55 58
348 351
349 def __populateModel(self): 352 def __populateModel(self):
350 """ 353 """
351 Private method to populate the browser model. 354 Private method to populate the browser model.
352 """ 355 """
353 self._addItem(BrowserSysPathItem(self.rootItem), self.rootItem)
354
355 self.toplevelDirs = [] 356 self.toplevelDirs = []
356 tdp = Preferences.Prefs.settings.value('BrowserModel/ToplevelDirs') 357 tdp = Preferences.Prefs.settings.value('BrowserModel/ToplevelDirs')
357 if tdp: 358 if tdp:
358 self.toplevelDirs = tdp 359 self.toplevelDirs = tdp
359 else: 360 else:
364 d.absoluteFilePath())) 365 d.absoluteFilePath()))
365 366
366 for d in self.toplevelDirs: 367 for d in self.toplevelDirs:
367 itm = BrowserDirectoryItem(self.rootItem, d) 368 itm = BrowserDirectoryItem(self.rootItem, d)
368 self._addItem(itm, self.rootItem) 369 self._addItem(itm, self.rootItem)
370
371 def interpreterChanged(self, interpreter):
372 """
373 Public method to handle a change of the debug client's interpreter.
374
375 @param interpreter interpreter of the debug client (string)
376 """
377 if interpreter and "python" in interpreter.lower():
378 if interpreter.endswith("w.exe"):
379 interpreter = interpreter.replace("w.exe", ".exe")
380 if self.__sysPathInterpreter != interpreter:
381 self.__sysPathInterpreter = interpreter
382 # step 1: remove sys.path entry
383 if self.__sysPathItem is not None:
384 self.beginRemoveRows(
385 QModelIndex(), self.__sysPathItem.row(),
386 self.__sysPathItem.row())
387 self.rootItem.removeChild(self.__sysPathItem)
388 self.endRemoveRows()
389 self.__sysPathItem = None
390
391 if self.__sysPathInterpreter:
392 # step 2: add a new one
393 self.__sysPathItem = BrowserSysPathItem(self.rootItem)
394 self.addItem(self.__sysPathItem)
395 else:
396 # remove sys.path entry
397 if self.__sysPathItem is not None:
398 self.beginRemoveRows(
399 QModelIndex(), self.__sysPathItem.row(),
400 self.__sysPathItem.row())
401 self.rootItem.removeChild(self.__sysPathItem)
402 self.endRemoveRows()
403 self.__sysPathItem = None
404 self.__sysPathInterpreter = ""
369 405
370 def programChange(self, dirname): 406 def programChange(self, dirname):
371 """ 407 """
372 Public method to change the entry for the directory of file being 408 Public method to change the entry for the directory of file being
373 debugged. 409 debugged.
520 Public method to populate a sys.path item's subtree. 556 Public method to populate a sys.path item's subtree.
521 557
522 @param parentItem reference to the sys.path item to be populated 558 @param parentItem reference to the sys.path item to be populated
523 @param repopulate flag indicating a repopulation (boolean) 559 @param repopulate flag indicating a repopulation (boolean)
524 """ 560 """
561 # TODO: make this dynamic depending on interpreter
525 if len(sys.path) > 0: 562 if len(sys.path) > 0:
526 if repopulate: 563 if repopulate:
527 self.beginInsertRows( 564 self.beginInsertRows(
528 self.createIndex(parentItem.row(), 0, parentItem), 565 self.createIndex(parentItem.row(), 0, parentItem),
529 0, len(sys.path) - 1) 566 0, len(sys.path) - 1)
530 for p in sys.path: 567 for p in sys.path:
531 if p == '': 568 if p:
532 p = os.getcwd() 569 node = BrowserDirectoryItem(parentItem, p)
533 570 self._addItem(node, parentItem)
534 node = BrowserDirectoryItem(parentItem, p)
535 self._addItem(node, parentItem)
536 if repopulate: 571 if repopulate:
537 self.endInsertRows() 572 self.endInsertRows()
538 573
539 def populateFileItem(self, parentItem, repopulate=False): 574 def populateFileItem(self, parentItem, repopulate=False):
540 """ 575 """

eric ide

mercurial