コード例 #1
0
    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),
        )
コード例 #2
0
ファイル: subs_grid.py プロジェクト: zeromind/bubblesub
    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)