def updateTreeView(self, newList): scrollItem = None isExpand = False parentItem = None if (newList.dsType == FtpResult.PDS): # Handle directory level path = newList.currentDir if path not in self.itemDict: newItem = QStandardItem(newList.currentDir) newType = QStandardItem('PO') newItem.setAccessibleText(path) self.itemDict[path] = newItem parentItem = newItem self.model.appendRow([newItem, newType]) else: parentItem = self.itemDict[path] # Handle member level for member in newList.data: memberPath = '{}({})'.format(path, member.name) if memberPath not in self.itemDict: newItem = QStandardItem(member.name) newType = QStandardItem(member.type) newItem.setAccessibleText(memberPath) self.itemDict[memberPath] = newItem parentItem.appendRow([newItem, newType]) scrollItem = parentItem isExpand = True elif (newList.dsType == FtpResult.PS): # for each member check to see if they already existed in the tree for member in newList.data: memberPath = member.name if memberPath not in self.itemDict: newItem = QStandardItem(memberPath) newType = QStandardItem(member.type) newItem.setAccessibleText(memberPath) if (member.type == 'PO'): self.addDummyChild(newItem) self.itemDict[memberPath] = newItem self.model.appendRow([newItem, newType]) else: newItem = self.itemDict[memberPath] if not scrollItem: scrollItem = newItem elif (newList.dsType == FtpResult.USS): path = '' dirArr = newList.currentDir.split('/') dirArr.pop(0) for dirMember in dirArr: path = path + '/' + dirMember #build the directory path if path not in self.itemDict: newItem = QStandardItem(dirMember) newType = QStandardItem('DIR') newItem.setAccessibleText(path) if not parentItem: self.model.appendRow([newItem, newType]) else: parentItem.appendRow([newItem, newType]) self.itemDict[path] = newItem parentItem = newItem else: parentItem = self.itemDict[path] scrollItem = parentItem isExpand = True for member in newList.data: memberPath = path + '/' + member.name if memberPath not in self.itemDict: newItem = QStandardItem(member.name) newType = QStandardItem(member.type) newItem.setAccessibleText(memberPath) if (member.type == 'DIR'): self.addDummyChild(newItem) if not parentItem: self.model.appendRow([newItem, newType]) else: parentItem.appendRow([newItem, newType]) self.itemDict[memberPath] = newItem self.treeView_Browse.sortByColumn(self.__NAME_COLUMN) scrollIndex = self.model.indexFromItem(scrollItem) self.treeView_Browse.reset() self.treeView_Browse.scrollTo(scrollIndex, QAbstractItemView.PositionAtTop) if isExpand: self.treeView_Browse.expand(scrollIndex)