# Pastebin ecNETh5f whereas generally , class TrackItem(TreeItem): def update(self, update_album=True): track = self.obj if track.num_linked_files == 1: file = track.linked_files[0] file.item = self color = TrackItem.track_colors[file.state] bgcolor = get_match_color(file.similarity, TreeItem.base_color) icon = FileItem.decide_file_icon(file) self.takeChildren() else: if track.ignored_for_completeness(): color = TreeItem.text_color_secondary else: color = TreeItem.text_color bgcolor = get_match_color(1, TreeItem.base_color) if track.is_video(): icon = TrackItem.icon_video elif track.is_data(): icon = TrackItem.icon_data else: icon = TrackItem.icon_audio oldnum = self.childCount() newnum = track.num_linked_files if oldnum > newnum: # remove old items for i in xrange(oldnum - newnum): self.takeChild(newnum - 1).obj.item = None oldnum = newnum for i in xrange(oldnum): # update existing items item = self.child(i) file = track.linked_files[i] item.obj = file file.item = item item.update() if newnum > oldnum: # add new items items = [] for i in xrange(newnum - 1, oldnum - 1, -1): item = FileItem(track.linked_files[i], False) item.update() items.append(item) self.addChildren(items) self.setExpanded(True) self.setIcon(0, icon) for i, column in enumerate(MainPanel.columns): self.setText(i, track.column(column[1])) self.setForeground(i, color) self.setBackground(i, bgcolor) if self.isSelected(): TreeItem.window.update_selection() import pudb; pudb.set_trace() if update_album: self.parent().update(update_tracks=False)