aboutsummaryrefslogtreecommitdiff
path: root/libs/basic_games/games/oblivion_remaster/ue4ss/view.py
blob: bb994ca65d1ef812c70e3aef8c59f07c476448d0 (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
from typing import Iterable

from PyQt6.QtCore import QModelIndex, Qt, pyqtSignal
from PyQt6.QtGui import QDropEvent
from PyQt6.QtWidgets import QAbstractItemView, QListView, QWidget


class UE4SSView(QListView):
    data_dropped = pyqtSignal()

    def __init__(self, parent: QWidget | None):
        super().__init__(parent)
        self.setAcceptDrops(True)
        self.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection)
        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)

    def dropEvent(self, e: QDropEvent | None):
        super().dropEvent(e)
        self.data_dropped.emit()

    def dataChanged(
        self, topLeft: QModelIndex, bottomRight: QModelIndex, roles: Iterable[int] = ()
    ):
        super().dataChanged(topLeft, bottomRight, roles)
        self.repaint()