Package pyforms :: Package gui :: Package Controls :: Module ControlTreeView
[hide private]
[frames] | no frames]

Source Code for Module pyforms.gui.Controls.ControlTreeView

  1  from pyforms.gui.Controls.ControlBase import ControlBase 
  2  from PyQt4 import uic 
  3  from PyQt4 import QtGui, QtCore 
4 5 6 -class ControlTreeView(ControlBase):
7
8 - def initForm(self):
9 self._form = QtGui.QTreeView() 10 11 view = self._form 12 view.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) 13 view.header().hide() 14 view.setUniformRowHeights(True) 15 view.setDragDropMode(QtGui.QAbstractItemView.InternalMove) 16 view.setDragEnabled(True) 17 view.setAcceptDrops(True) 18 19 view.setModel(QtGui.QStandardItemModel()) 20 #self._model = TreeModel() 21 #view.setModel(self._model) 22 23 view.model().itemChanged.connect(self.__itemChangedEvent) 24 25 view.selectionChanged = self.selectionChanged 26 27 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 28 # populate data 29 """ 30 for i in range(3): 31 parent1 = QtGui.QStandardItem('Family {}. Some long status text for sp'.format(i)) 32 for j in range(3): 33 child1 = QtGui.QStandardItem('Child {}'.format(i*3+j)) 34 parent1.appendRow(child1) 35 model.appendRow(parent1) 36 # span container columns 37 view.setFirstColumnSpanned(i, view.rootIndex(), True) 38 """
39 40 41 42 @property
43 - def model(self): return self._form.model()
44 @model.setter
45 - def model(self, value):
46 self._model = value 47 self._form.setModel(value)
48
49 - def __itemChangedEvent(self, item): self.itemChangedEvent(item)
50
51 - def itemChangedEvent(self, item): pass
52 53
54 - def itemSelectionChanged(self):pass
55
56 - def selectionChanged(self, selected, deselected ):
57 super(QtGui.QTreeView, self._form).selectionChanged(selected, deselected) 58 self.itemSelectionChanged()
59 60 @property
61 - def mouseSelectedRowsIndexes(self):
62 result = [] 63 for index in self._form.selectedIndexes(): 64 result.append( index.row() ) 65 return list( set(result) )
66 67 68 @property
69 - def mouseSelectedRowIndex(self):
70 indexes = self.mouseSelectedRowsIndexes 71 if len(indexes)>0: return indexes[0] 72 else: return None
73 74 @property
75 - def selectedItem(self):
76 for index in self._form.selectedIndexes(): 77 item = index.model().itemFromIndex(index) 78 return item 79 else: 80 return None
81 82 @property
83 - def cells(self):
84 results = [] 85 for row in range(self._model.rowCount()): 86 r = [] 87 for col in range(self._model.columnCount()): 88 r.append( self._model.item(row, col) ) 89 if len(r)>0: results.append(r) 90 # print r, '---' 91 92 return results 93 94
95 - def __add__(self, other):
96 if isinstance(other, TreeItem): 97 self._model.invisibleRootItem().appendRow( other ) 98 99 elif isinstance(other, list): 100 for x in other: 101 item = QtGui.QStandardItem( x ) 102 self._model.appendRow( item ) 103 else: 104 item = QtGui.QStandardItem( other ) 105 self._model.appendRow( item ) 106 107 self._form.setFirstColumnSpanned(self._model.rowCount()-1, self._form.rootIndex(), True) 108 return self
109
110 - def __sub__(self, other):
111 if isinstance(other, int): 112 if other < 0: 113 indexToRemove = self.mouseSelectedRowIndex 114 else: 115 indexToRemove = other 116 self.model.removeRow(indexToRemove) 117 return self
118 119 120 121 @property
122 - def value(self):
123 return self._form.model().invisibleRootItem() 124 return self.recursivelyReadRoot(root) 125 126 @value.setter
127 - def value(self, value):
128 for row in value: self += row
129 130
131 - def getAllSceneObjects(self): return self._model.getChildrens()
132