async def _on_add_button_click(self) -> None: style_name = await self._prompt_for_unique_style_name() if not style_name: return style = AssStyle(name=style_name) self._api.subs.styles.append(style) idx = style.index self._styles_list_view.selectionModel().select( self._model.index(idx, 0), QItemSelectionModel.SelectionFlag( QItemSelectionModel.SelectionFlag.Clear | QItemSelectionModel.SelectionFlag.Select), )
def _sync_api_selection_to_grid(self, rows: list[int], changed: bool) -> None: if not self.model(): return if self._collect_rows() == self._api.subs.selected_indexes: return self.setUpdatesEnabled(False) self.selectionModel().selectionChanged.disconnect( self._sync_grid_selection_to_api) selection = QItemSelection() for row in self._api.subs.selected_indexes: idx = self.model().index(row, 0) selection.select(idx, idx) self.selectionModel().clear() if self._api.subs.selected_indexes: first_row = self._api.subs.selected_indexes[0] cell_index = self.model().index(first_row, 0) self.setCurrentIndex(cell_index) self.scrollTo(cell_index) self.selectionModel().select( selection, QItemSelectionModel.SelectionFlag( QItemSelectionModel.SelectionFlag.Rows | QItemSelectionModel.SelectionFlag.Current | QItemSelectionModel.SelectionFlag.Select), ) self.selectionModel().selectionChanged.connect( self._sync_grid_selection_to_api) self.setUpdatesEnabled(True)