13 |
13 |
14 class EricTableView(QTableView): |
14 class EricTableView(QTableView): |
15 """ |
15 """ |
16 Class implementing a table view supporting removal of entries. |
16 Class implementing a table view supporting removal of entries. |
17 """ |
17 """ |
|
18 |
18 def keyPressEvent(self, evt): |
19 def keyPressEvent(self, evt): |
19 """ |
20 """ |
20 Protected method implementing special key handling. |
21 Protected method implementing special key handling. |
21 |
22 |
22 @param evt reference to the event (QKeyEvent) |
23 @param evt reference to the event (QKeyEvent) |
23 """ |
24 """ |
24 if ( |
25 if ( |
25 evt.key() in [Qt.Key.Key_Delete, Qt.Key.Key_Backspace] and |
26 evt.key() in [Qt.Key.Key_Delete, Qt.Key.Key_Backspace] |
26 self.model() is not None |
27 and self.model() is not None |
27 ): |
28 ): |
28 self.removeSelected() |
29 self.removeSelected() |
29 evt.setAccepted(True) |
30 evt.setAccepted(True) |
30 else: |
31 else: |
31 super().keyPressEvent(evt) |
32 super().keyPressEvent(evt) |
32 |
33 |
33 def removeSelected(self): |
34 def removeSelected(self): |
34 """ |
35 """ |
35 Public method to remove the selected entries. |
36 Public method to remove the selected entries. |
36 """ |
37 """ |
37 if self.model() is None or self.selectionModel() is None: |
38 if self.model() is None or self.selectionModel() is None: |
38 # no models available |
39 # no models available |
39 return |
40 return |
40 |
41 |
41 row = 0 |
42 row = 0 |
42 selectedRows = self.selectionModel().selectedRows() |
43 selectedRows = self.selectionModel().selectedRows() |
43 for selectedRow in reversed(selectedRows): |
44 for selectedRow in reversed(selectedRows): |
44 row = selectedRow.row() |
45 row = selectedRow.row() |
45 self.model().removeRow(row, self.rootIndex()) |
46 self.model().removeRow(row, self.rootIndex()) |
46 |
47 |
47 idx = self.model().index(row, 0, self.rootIndex()) |
48 idx = self.model().index(row, 0, self.rootIndex()) |
48 if not idx.isValid(): |
49 if not idx.isValid(): |
49 idx = self.model().index(row - 1, 0, self.rootIndex()) |
50 idx = self.model().index(row - 1, 0, self.rootIndex()) |
50 self.selectionModel().select( |
51 self.selectionModel().select( |
51 idx, |
52 idx, |
52 QItemSelectionModel.SelectionFlag.SelectCurrent | |
53 QItemSelectionModel.SelectionFlag.SelectCurrent |
53 QItemSelectionModel.SelectionFlag.Rows) |
54 | QItemSelectionModel.SelectionFlag.Rows, |
|
55 ) |
54 self.setCurrentIndex(idx) |
56 self.setCurrentIndex(idx) |
55 |
57 |
56 def removeAll(self): |
58 def removeAll(self): |
57 """ |
59 """ |
58 Public method to clear the view. |
60 Public method to clear the view. |
59 """ |
61 """ |
60 if self.model() is not None: |
62 if self.model() is not None: |
61 self.model().removeRows(0, self.model().rowCount(self.rootIndex()), |
63 self.model().removeRows( |
62 self.rootIndex()) |
64 0, self.model().rowCount(self.rootIndex()), self.rootIndex() |
|
65 ) |