# mypy: disable-error-code="misc, override, attr-defined, no-redef, assignment"

import QT4Panels.DragOverlay as DragOverlay
import QT4Panels.Edge as Edge
import PyQt5.QtCore
import PyQt5.QtWidgets
import QT4Widgets as QT4Widgets
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class DragTabBar(DroppableTabBar):
    tabDoubleClick: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    tabRightMouse: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    tabStartDrag: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    def __init__(self, parent: Incomplete | None = ...) -> None: ...
    def _DragTabBar__startDrag(self): ...
    def customEvent(self, event): ...
    def keyPressEvent(self, event): ...
    def keyReleaseEvent(self, event): ...
    def mouseDoubleClickEvent(self, event): ...
    def mouseMoveEvent(self, event): ...
    def mousePressEvent(self, event): ...
    def mouseReleaseEvent(self, event): ...

class DragTool:
    def __init__(self, source, index, pos, detach) -> None: ...
    def _IsSplittable(self, frame): ...
    def doDragEnd(self): ...
    def doDragMove(self, pos): ...
    def doDragStart(self): ...
    def doDrop(self): ...
    def doMove(self, pos): ...
    def isTargettingSource(self, widget, action, value): ...
    def positionRubberBand(self, widget, action, value, splittable): ...
    def setDetach(self, state): ...

class DroppableTabBar(PyQt5.QtWidgets.QTabBar):
    def __init__(self, parent: Incomplete | None = ...) -> None: ...
    def _DroppableTabBar__clearDragTimer(self): ...
    def _DroppableTabBar__mouseDrag(self, event): ...
    def _DroppableTabBar__timerCallback(self): ...
    def dragEnterEvent(self, event): ...
    def dragLeaveEvent(self, event): ...
    def dragMoveEvent(self, event): ...
    def dropEvent(self, event): ...

class TabDragHandle(PyQt5.QtWidgets.QLabel):
    def __init__(self, parent, frame, index) -> None: ...
    def keyPressEvent(self, event): ...
    def keyReleaseEvent(self, event): ...
    def mouseMoveEvent(self, event): ...
    def mousePressEvent(self, event): ...
    def mouseReleaseEvent(self, event): ...
    def paintEvent(self, event): ...
