blob: a56b0cddf07a7c321231c5ed5cc1728b2f943f8b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
from typing import Iterable
from PyQt6.QtCore import QModelIndex, Qt, pyqtSignal
from PyQt6.QtGui import QDropEvent
from PyQt6.QtWidgets import QAbstractItemView, QTreeView, QWidget
class PaksView(QTreeView):
data_dropped = pyqtSignal()
def __init__(self, parent: QWidget | None):
super().__init__(parent)
self.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
self.setDragEnabled(True)
self.setAcceptDrops(True)
self.setDropIndicatorShown(True)
self.setDragDropMode(QAbstractItemView.DragDropMode.InternalMove)
self.setDefaultDropAction(Qt.DropAction.MoveAction)
if (viewport := self.viewport()) is not None:
viewport.setAcceptDrops(True)
self.setItemsExpandable(False)
self.setRootIsDecorated(False)
def dropEvent(self, e: QDropEvent | None):
super().dropEvent(e)
self.clearSelection()
self.data_dropped.emit()
def dataChanged(
self, topLeft: QModelIndex, bottomRight: QModelIndex, roles: Iterable[int] = ()
):
super().dataChanged(topLeft, bottomRight, roles)
self.repaint()
|