Loading ui/scenetext_manager.py +1 −0 Original line number Diff line number Diff line Loading @@ -428,6 +428,7 @@ class SceneTextManager(QObject): pair_widget.e_trans.show_select_menu.connect(self.on_show_select_menu) pair_widget.e_trans.focus_out.connect(self.on_pairw_focusout) pair_widget.drag_move.connect(self.textEditList.handle_drag_pos) pair_widget.pw_drop.connect(self.textEditList.on_pw_dropped) pair_widget.idx_edited.connect(self.textEditList.on_idx_edited) self.new_textblk.emit(blk_item.idx) Loading ui/textedit_area.py +60 −51 Original line number Diff line number Diff line Loading @@ -401,6 +401,7 @@ class TransPairWidget(Widget): check_state_changed = Signal(object, bool, bool) drag_move = Signal(int) idx_edited = Signal(int, int) pw_drop = Signal() def __init__(self, textblock: TextBlock = None, idx: int = None, fold: bool = False, *args, **kwargs) -> None: super().__init__(*args, **kwargs) Loading Loading @@ -454,6 +455,11 @@ class TransPairWidget(Widget): return super().dragMoveEvent(e) def dropEvent(self, e: QDropEvent) -> None: if isinstance(e.source(), TransPairWidget): e.acceptProposedAction() self.pw_drop.emit() def _set_checked_state(self, checked: bool): """ this wont emit state_change signal and take care of the style Loading Loading @@ -500,7 +506,7 @@ class TextEditListScrollArea(QScrollArea): def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) self.scrollContent = Widget() self.scrollContent = Widget(parent=self) self.setWidget(self.scrollContent) # ScrollBar(Qt.Orientation.Horizontal, self) Loading @@ -517,12 +523,12 @@ class TextEditListScrollArea(QScrollArea): self.checked_list: List[TransPairWidget] = [] self.sel_anchor_widget: TransPairWidget = None self.drag: QDrag = None self.dragStartPosition = None self.source_visible = True self.trans_visible = True self.drag_to_pos: int = -1 self.setAcceptDrops(True) self.setSizePolicy(self.sizePolicy().horizontalPolicy(), QSizePolicy.Policy.Expanding) self.setContextMenuPolicy(Qt.ContextMenuPolicy.NoContextMenu) Loading @@ -533,8 +539,16 @@ class TextEditListScrollArea(QScrollArea): self.textpanel_contextmenu_requested.emit(pos, True) super().mouseReleaseEvent(e) def mousePressEvent(self, e: QMouseEvent) -> None: if e.button() == Qt.MouseButton.LeftButton: self.dragStartPosition = e.pos() return super().mousePressEvent(e) def mouseMoveEvent(self, e: QMouseEvent) -> None: if self.drag is None and self.sel_anchor_widget is not None: if self.drag is None and self.sel_anchor_widget is not None and self.dragStartPosition is not None: if (e.pos() - self.dragStartPosition).manhattanLength() < QApplication.startDragDistance(): return self.dragStartPosition = None w = self.sel_anchor_widget drag = self.drag = QDrag(w) mime = QMimeData() Loading @@ -543,6 +557,45 @@ class TextEditListScrollArea(QScrollArea): w.render(pixmap) drag.setPixmap(pixmap) ac = drag.exec(Qt.DropAction.MoveAction) self.drag = None if self.drag_to_pos != -1: self.set_drag_style(self.drag_to_pos, True) self.drag_to_pos = -1 pass return super().mouseMoveEvent(e) def set_drag_style(self, pos: int, clear_style: bool = False): if pos == len(self.pairwidget_list): pos -= 1 style = STYLE_TRANSPAIR_BOTTOM else: style = STYLE_TRANSPAIR_TOP if clear_style: style = "" pw = self.pairwidget_list[pos] if pw.checked: style += STYLE_TRANSPAIR_CHECKED style = "TransPairWidget{" + style + "}" pw.setStyleSheet(style) def clearDrag(self): self.drag_to_pos = -1 if self.drag is not None: try: self.drag.cancel() except RuntimeError: pass self.drag = None def handle_drag_pos(self, to_pos: int): if self.drag_to_pos != to_pos: if self.drag_to_pos is not None: self.set_drag_style(self.drag_to_pos, True) self.drag_to_pos = to_pos self.set_drag_style(to_pos) def on_pw_dropped(self): if self.drag_to_pos != -1: to_pos = self.drag_to_pos self.drag_to_pos = -1 Loading Loading @@ -581,49 +634,6 @@ class TextEditListScrollArea(QScrollArea): self.rearrange_blks.emit((drags_ori, drags_tgt)) return super().mouseMoveEvent(e) def set_drag_style(self, pos: int, clear_style: bool = False): if pos == len(self.pairwidget_list): pos -= 1 style = STYLE_TRANSPAIR_BOTTOM else: style = STYLE_TRANSPAIR_TOP if clear_style: style = "" pw = self.pairwidget_list[pos] if pw.checked: style += STYLE_TRANSPAIR_CHECKED style = "TransPairWidget{" + style + "}" pw.setStyleSheet(style) def clearDrag(self): self.drag_to_pos = -1 if self.drag is not None: try: self.drag.cancel() except RuntimeError: pass self.drag = None def dragMoveEvent(self, e: QDragMoveEvent) -> None: e.accept() return super().dragMoveEvent(e) def dragEnterEvent(self, e: QDragEnterEvent): if isinstance(e.source(), TransPairWidget): e.accept() def dropEvent(self, e: QDropEvent) -> None: e.accept() return super().dropEvent(e) def handle_drag_pos(self, to_pos: int): if self.drag_to_pos != to_pos: if self.drag_to_pos is not None: self.set_drag_style(self.drag_to_pos, True) self.drag_to_pos = to_pos self.set_drag_style(to_pos) def on_idx_edited(self, src_idx: int, tgt_idx: int): src_idx_ori = tgt_idx Loading @@ -643,7 +653,6 @@ class TextEditListScrollArea(QScrollArea): ids_ori.append(idx) ids_tgt.append(idx+1) self.rearrange_blks.emit((ids_ori, ids_tgt, (tgt_idx, src_idx))) # self.ensureVisible def addPairWidget(self, pairwidget: TransPairWidget): self.vlayout.insertWidget(pairwidget.idx, pairwidget) Loading Loading
ui/scenetext_manager.py +1 −0 Original line number Diff line number Diff line Loading @@ -428,6 +428,7 @@ class SceneTextManager(QObject): pair_widget.e_trans.show_select_menu.connect(self.on_show_select_menu) pair_widget.e_trans.focus_out.connect(self.on_pairw_focusout) pair_widget.drag_move.connect(self.textEditList.handle_drag_pos) pair_widget.pw_drop.connect(self.textEditList.on_pw_dropped) pair_widget.idx_edited.connect(self.textEditList.on_idx_edited) self.new_textblk.emit(blk_item.idx) Loading
ui/textedit_area.py +60 −51 Original line number Diff line number Diff line Loading @@ -401,6 +401,7 @@ class TransPairWidget(Widget): check_state_changed = Signal(object, bool, bool) drag_move = Signal(int) idx_edited = Signal(int, int) pw_drop = Signal() def __init__(self, textblock: TextBlock = None, idx: int = None, fold: bool = False, *args, **kwargs) -> None: super().__init__(*args, **kwargs) Loading Loading @@ -454,6 +455,11 @@ class TransPairWidget(Widget): return super().dragMoveEvent(e) def dropEvent(self, e: QDropEvent) -> None: if isinstance(e.source(), TransPairWidget): e.acceptProposedAction() self.pw_drop.emit() def _set_checked_state(self, checked: bool): """ this wont emit state_change signal and take care of the style Loading Loading @@ -500,7 +506,7 @@ class TextEditListScrollArea(QScrollArea): def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) self.scrollContent = Widget() self.scrollContent = Widget(parent=self) self.setWidget(self.scrollContent) # ScrollBar(Qt.Orientation.Horizontal, self) Loading @@ -517,12 +523,12 @@ class TextEditListScrollArea(QScrollArea): self.checked_list: List[TransPairWidget] = [] self.sel_anchor_widget: TransPairWidget = None self.drag: QDrag = None self.dragStartPosition = None self.source_visible = True self.trans_visible = True self.drag_to_pos: int = -1 self.setAcceptDrops(True) self.setSizePolicy(self.sizePolicy().horizontalPolicy(), QSizePolicy.Policy.Expanding) self.setContextMenuPolicy(Qt.ContextMenuPolicy.NoContextMenu) Loading @@ -533,8 +539,16 @@ class TextEditListScrollArea(QScrollArea): self.textpanel_contextmenu_requested.emit(pos, True) super().mouseReleaseEvent(e) def mousePressEvent(self, e: QMouseEvent) -> None: if e.button() == Qt.MouseButton.LeftButton: self.dragStartPosition = e.pos() return super().mousePressEvent(e) def mouseMoveEvent(self, e: QMouseEvent) -> None: if self.drag is None and self.sel_anchor_widget is not None: if self.drag is None and self.sel_anchor_widget is not None and self.dragStartPosition is not None: if (e.pos() - self.dragStartPosition).manhattanLength() < QApplication.startDragDistance(): return self.dragStartPosition = None w = self.sel_anchor_widget drag = self.drag = QDrag(w) mime = QMimeData() Loading @@ -543,6 +557,45 @@ class TextEditListScrollArea(QScrollArea): w.render(pixmap) drag.setPixmap(pixmap) ac = drag.exec(Qt.DropAction.MoveAction) self.drag = None if self.drag_to_pos != -1: self.set_drag_style(self.drag_to_pos, True) self.drag_to_pos = -1 pass return super().mouseMoveEvent(e) def set_drag_style(self, pos: int, clear_style: bool = False): if pos == len(self.pairwidget_list): pos -= 1 style = STYLE_TRANSPAIR_BOTTOM else: style = STYLE_TRANSPAIR_TOP if clear_style: style = "" pw = self.pairwidget_list[pos] if pw.checked: style += STYLE_TRANSPAIR_CHECKED style = "TransPairWidget{" + style + "}" pw.setStyleSheet(style) def clearDrag(self): self.drag_to_pos = -1 if self.drag is not None: try: self.drag.cancel() except RuntimeError: pass self.drag = None def handle_drag_pos(self, to_pos: int): if self.drag_to_pos != to_pos: if self.drag_to_pos is not None: self.set_drag_style(self.drag_to_pos, True) self.drag_to_pos = to_pos self.set_drag_style(to_pos) def on_pw_dropped(self): if self.drag_to_pos != -1: to_pos = self.drag_to_pos self.drag_to_pos = -1 Loading Loading @@ -581,49 +634,6 @@ class TextEditListScrollArea(QScrollArea): self.rearrange_blks.emit((drags_ori, drags_tgt)) return super().mouseMoveEvent(e) def set_drag_style(self, pos: int, clear_style: bool = False): if pos == len(self.pairwidget_list): pos -= 1 style = STYLE_TRANSPAIR_BOTTOM else: style = STYLE_TRANSPAIR_TOP if clear_style: style = "" pw = self.pairwidget_list[pos] if pw.checked: style += STYLE_TRANSPAIR_CHECKED style = "TransPairWidget{" + style + "}" pw.setStyleSheet(style) def clearDrag(self): self.drag_to_pos = -1 if self.drag is not None: try: self.drag.cancel() except RuntimeError: pass self.drag = None def dragMoveEvent(self, e: QDragMoveEvent) -> None: e.accept() return super().dragMoveEvent(e) def dragEnterEvent(self, e: QDragEnterEvent): if isinstance(e.source(), TransPairWidget): e.accept() def dropEvent(self, e: QDropEvent) -> None: e.accept() return super().dropEvent(e) def handle_drag_pos(self, to_pos: int): if self.drag_to_pos != to_pos: if self.drag_to_pos is not None: self.set_drag_style(self.drag_to_pos, True) self.drag_to_pos = to_pos self.set_drag_style(to_pos) def on_idx_edited(self, src_idx: int, tgt_idx: int): src_idx_ori = tgt_idx Loading @@ -643,7 +653,6 @@ class TextEditListScrollArea(QScrollArea): ids_ori.append(idx) ids_tgt.append(idx+1) self.rearrange_blks.emit((ids_ori, ids_tgt, (tgt_idx, src_idx))) # self.ensureVisible def addPairWidget(self, pairwidget: TransPairWidget): self.vlayout.insertWidget(pairwidget.idx, pairwidget) Loading