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

import CatalogAPI as CatalogAPI
import CatalogAPI.CatalogItem
import ConfigurationAPI_cmodule as Configuration
import UI4.Util.IconManager as IconManager
import UI4.Tabs.Catalog.ImageImportDialog as ImageImportDialog
import UI4.KatanaPrefs as KatanaPrefs
import KatanaResources as KatanaResources
import NodegraphAPI as NodegraphAPI
import UI4.KatanaPrefs.PrefNames as PrefNames
import PyQt5.QtCore
import PyQt5.QtGui
import PyQt5.QtWidgets
import QT4Widgets.SortableTreeWidget
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
import UI4 as UI4
import UI4.Widgets.CatalogThumbnailWidget
from CatalogAPI.CatalogItem import CatalogItem
from CatalogWidget import CatalogWidget
from PyUtilModule.VirtualKatana import RenderManager as RenderManager
from QT4Widgets.SortableTreeWidget import SortableTreeWidgetItem as SortableTreeWidgetItem, SortableTreeWidgetItemDelegate as SortableTreeWidgetItemDelegate
from UI4.KatanaPrefs.KatanaPrefsObject import Prefs as Prefs
from UI4.Widgets.CatalogThumbnailWidget import CatalogItemThumbnailMixin as CatalogItemThumbnailMixin
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

BOUNDS_COLUMN: int
COMMENT_COLUMN: int
ELAPSED_COLUMN: int
FRAME_COLUMN: int
GSVS_COLUMN: int
ID_COLUMN: int
IRFS_COLUMN: int
ISVIEWED_COLUMN: int
LAYERVIEWS_COLUMN: int
LOCKED_COLUMN: int
NODENAME_COLUMN: int
NUM_COLUMNS: int
PIN_COLUMN: int
SAVED_COLUMN: int
SLOT_COLUMN: int
SPACER_COLUMN: int
START_COLUMN: int
THUMBNAIL_COLUMN: int

class CatalogSlotParentItem(QT4Widgets.SortableTreeWidget.SortableTreeWidgetItem):
    def __init__(self, slot, *args) -> None: ...
    def getCatalogItem(self): ...
    def getSlot(self): ...
    def paintDelegate(self, baseClass, delegate, painter, option, index): ...
    def updateTextColor(self): ...

class CatalogWidgetItem(UI4.Widgets.CatalogThumbnailWidget.CatalogItemThumbnailMixin, QT4Widgets.SortableTreeWidget.SortableTreeWidgetItem):
    _kMaxThumbnailHeight: ClassVar[int] = ...
    _kUnpinnedColor: ClassVar[PyQt5.QtGui.QColor] = ...
    def __init__(self, catalogItem, *args) -> None: ...
    def _CatalogWidgetItem__adoptFrameTime(self): ...
    def _CatalogWidgetItem__adoptROI(self): ...
    def _CatalogWidgetItem__canFindInNodeGraph(self) -> bool: ...
    def _CatalogWidgetItem__duplicateItem(self): ...
    def _CatalogWidgetItem__findInNodegraph(self): ...
    def _CatalogWidgetItem__getIndividualGSVLabeL(self, column: int) -> _GSVLabel: ...
    def _CatalogWidgetItem__importImageSequence(self, location, view): ...
    def _CatalogWidgetItem__regenerateThumbnail(self): ...
    @staticmethod
    def _CatalogWidgetItem__selectPrimaryCatalogItem(clientKey: int, catalogItem: CatalogItem): ...
    @staticmethod
    def _CatalogWidgetItem__updateClientPinned(clientKey: int, catalogItem: CatalogItem): ...
    def _onCatalogItemChanged(self): ...
    def buildContextMenu(self, parent: CatalogWidget, column: int) -> PyQt5.QtWidgets.QWidget: ...
    def handleMousePressEvent(self, button, col): ...
    def paintDelegate(self, baseClass, delegate, painter, option, index): ...
    def refreshEverything(self): ...
    def refreshGSVsAndIRFs(self): ...
    def refreshProperties(self): ...
    def refreshUserComment(self): ...
    def updateThumbnailPixmap(self, width: int) -> bool: ...

class CatalogWidgetItemDelegate(QT4Widgets.SortableTreeWidget.SortableTreeWidgetItemDelegate):
    _CatalogWidgetItemDelegate__minHeight: ClassVar[int] = ...
    def createEditor(self, parent, option, index): ...
    def paint(self, painter, option, index): ...
    def setModelData(self, editor, model, index): ...
    def sizeHint(self, option, index): ...

class _FrameLabel(_PinnableLabel):
    def _getLabelCheckedStateAndVisibility(self): ...
    def _on_checkBox_stateChanged(self, state): ...

class _GSVLabel(_PinnableLabel):
    def __init__(self) -> None: ...
    def _getLabelCheckedStateAndVisibility(self): ...
    def _on_checkBox_stateChanged(self, state): ...
    def setName(self, name: str): ...

class _GSVsLabel(PyQt5.QtWidgets.QLabel):
    class _GSV(tuple):
        _field_defaults: ClassVar[dict] = ...
        _fields: ClassVar[tuple] = ...
        _fields_defaults: ClassVar[dict] = ...
        def __init__(self, _cls, key, value, isPinned) -> None: ...
        def _asdict(self): ...
        @classmethod
        def _make(cls, iterable): ...
        def _replace(self, _self, **kwds): ...
        def __getnewargs__(self): ...
        @property
        def isPinned(self): ...
        @property
        def key(self): ...
        @property
        def value(self): ...
    _kUnpinnedGSVColour: ClassVar[str] = ...
    def __init__(self) -> None: ...
    def _GSVsLabel__updateText(self): ...
    def resizeEvent(self, event: PyQt5.QtGui.QResizeEvent): ...
    def updateGSVs(self, catalogItem: CatalogItem): ...

class _Icon(PyQt5.QtWidgets.QLabel):
    kAlignment: ClassVar[PyQt5.QtCore.Qt.Alignment] = ...
    kTopBottomMargin: ClassVar[int] = ...
    def __init__(self) -> None: ...
    def updatePixmap(self, pixmap: PyQt5.QtGui.QPixmap | None): ...

class _PinColumnCheckBox(PyQt5.QtWidgets.QWidget):
    def __init__(self) -> None: ...
    def _PinColumnCheckBox__on_checkBox_stateChanged(self, state: int): ...
    def updateItem(self, catalogItem: CatalogAPI.CatalogItem.CatalogItem | None): ...

class _PinnableLabel(PyQt5.QtWidgets.QWidget):
    _kHighlightColor: ClassVar[PyQt5.QtGui.QColor] = ...
    def __init__(self) -> None: ...
    def _getLabelCheckedStateAndVisibility(self) -> Tuple[str, bool, bool]: ...
    def _on_checkBox_stateChanged(self, state: int): ...
    def getText(self) -> str: ...
    def updateItem(self, catalogItem: CatalogItem): ...
    def updateTextColor(self, defaultTextColor: Incomplete | None = ...): ...

class _PinnedVariablesMenu(PyQt5.QtWidgets.QDialog):
    def __init__(self, parent: PyQt5.QtWidgets.QWidget, catalogItem: CatalogItem) -> None: ...
    def _PinnedVariablesMenu__buildHeaderWidget(self) -> PyQt5.QtWidgets.QWidget: ...
    def _PinnedVariablesMenu__buildScrollAreaWidget(self) -> PyQt5.QtWidgets.QWidget: ...
    def _PinnedVariablesMenu__on_button_clicked(self): ...
    def _PinnedVariablesMenu__on_frameCheckBox_stateChanged(self, state: int): ...
    def _PinnedVariablesMenu__on_varCheckBox_stateChanged(self, state: int): ...
    def _PinnedVariablesMenu__updateOnAndOffButtons(self): ...
    def exec_(self, pos: PyQt5.QtCore.QPoint) -> int: ...

class _TickIcon(_Icon):
    def __init__(self) -> None: ...

def GetColumnID(columnKeyName: str) -> int | None: ...
def GetColumnKeyName(columnID: int) -> str: ...
def GetColumnName(columnID): ...
def GetDefaultColumnWidth(columnID): ...
def SetDefaultColumnWidth(columnID, size): ...
