requirements: install newer versions of send2trash
[git-cola.git] / cola / widgets / filetree.py
blobc43574a994d4e539caed7ef6405d7ac16e2467ce
1 from qtpy import QtCore
2 from qtpy import QtWidgets
4 from .. import icons
5 from . import standard
8 # pylint: disable=too-many-ancestors
9 class FileTree(standard.TreeWidget):
10 def __init__(self, parent=None):
11 standard.TreeWidget.__init__(self, parent=parent)
12 self.setSelectionMode(self.ExtendedSelection)
13 self.setHeaderHidden(True)
15 def set_filenames(self, filenames, select=False):
16 self.clear()
17 if not filenames:
18 return
19 items = []
20 from_filename = icons.from_filename
21 for filename in filenames:
22 icon = from_filename(filename)
23 item = QtWidgets.QTreeWidgetItem()
24 item.setIcon(0, icon)
25 item.setText(0, filename)
26 item.setData(0, QtCore.Qt.UserRole, filename)
27 items.append(item)
28 self.addTopLevelItems(items)
29 if select and items:
30 items[0].setSelected(True)
32 def has_selection(self):
33 return bool(self.selectedItems())
35 def selected_filenames(self):
36 items = self.selectedItems()
37 if not items:
38 return []
39 return [filename_from_item(i) for i in items]
42 def filename_from_item(item):
43 return item.data(0, QtCore.Qt.UserRole)