def selected_page_idxs(self, idxs): idxs = sorted(idxs) if not idxs: self.pages_view.selectionModel().clearSelection() return page_count = len(self.pages) idxs = [idx for idx in sorted(idxs) if 0 <= idx < page_count] # "run" as in consecutive indexes specified as range rather than individually run_start_idx = idxs[0] run_end_idx = idxs[0] runs = [] for idx in idxs[1:]: if idx == run_end_idx + 1: run_end_idx = idx else: runs.append((run_start_idx, run_end_idx)) run_end_idx = run_start_idx = idx runs.append((run_start_idx, run_end_idx)) m = self.pages_model item_selection = Qt.QItemSelection() for run_start_idx, run_end_idx in runs: item_selection.append(Qt.QItemSelectionRange(m.index(run_start_idx, 0), m.index(run_end_idx, 0))) sm = self.pages_view.selectionModel() sm.select(item_selection, Qt.QItemSelectionModel.ClearAndSelect) if self.focused_page_idx not in idxs: sm.setCurrentIndex(m.index(idxs[0], 0), Qt.QItemSelectionModel.Current)
def selected_page_idxs(self, idxs): item_selection = Qt.QItemSelection() for idx in idxs: item_selection.append(Qt.QItemSelectionRange(self.pages_model.index(idx, 0))) sm = self.pages_view.selectionModel() sm.select(item_selection, Qt.QItemSelectionModel.ClearAndSelect) if idxs and self.current_page_idx not in idxs: sm.setCurrentIndex(self.pages_model.index(idxs[0], 0), Qt.QItemSelectionModel.Current)
def treeSelectByLocation(self, location): self.currentLocation = location modelindex = self._tree_model.indexByLocation(location) if modelindex is not None: selection = Qt.QItemSelection(modelindex, modelindex) selectmodel = self.ui.treeView.selectionModel() selectmodel.clear() selectmodel.select(selection, Qt.QItemSelectionModel.Select) self.treeSelectByIndex(modelindex)
def actionGoUpMth(self): selectmodel = self.ui.treeView.selectionModel() indexes = selectmodel.selectedIndexes() if len(indexes) > 0: index = indexes[0] modelindex = self._tree_model.parent(index) if modelindex.row() > -1: self.addToPrevious(self.currentLocation) selection = Qt.QItemSelection(modelindex, modelindex) selectmodel = self.ui.treeView.selectionModel() selectmodel.clear() selectmodel.select(selection, Qt.QItemSelectionModel.Select) self.treeSelectByIndex(modelindex)
def on_current_frame_changed(self, frame: Frame, time: Time) -> None: if not self.isVisible(): return if self.tableview.selectionModel() is None: return selection = Qt.QItemSelection() for i, scene in enumerate(self.scening_list): if frame in scene: index = self.scening_list.index(i, 0) selection.select(index, index) self.tableview.selectionModel().select( selection, Qt.QItemSelectionModel.SelectionFlags( # type: ignore Qt.QItemSelectionModel.Rows + Qt.QItemSelectionModel.ClearAndSelect))