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

import PyFnAttribute as FnAttribute
import PyFnAttribute
import PyQt5.QtCore
import PyQt5.QtWidgets
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
import UI4.Widgets.SceneGraphView.SceneGraphViewColumn as SceneGraphViewColumn
import UI4.Widgets.SceneGraphView.Bridge
from UI4.Widgets.SceneGraphView.ColumnDataType import RegisterDataType as RegisterDataType
from UI4.Widgets.SceneGraphView.ItemDelegates.BaseItemDelegate import BaseItemDelegate as BaseItemDelegate
from UI4.Widgets.SceneGraphView.SceneGraphHandle import SceneGraphHandle as SceneGraphHandle
from _typeshed import Incomplete
from typing import Any, ClassVar, Set, Tuple

class BaseItemDelegate(PyQt5.QtWidgets.QStyledItemDelegate):
    MaximumColumnWidth: ClassVar[int] = ...
    _BaseItemDelegate__defaultTextColor: ClassVar[None] = ...
    def __init__(self, bridge: Bridge[UI4.Widgets.SceneGraphView.Bridge.Bridge], treeWidget: PyQt5.QtWidgets.QTreeWidget, parent: Incomplete | None = ...) -> None: ...
    def _expandRectToRightBorder(self, option: PyQt5.QtWidgets.QStyleOptionViewItem, index: PyQt5.QtCore.QModelIndex): ...
    def _getAttribute(self, locationPath: str, attributeName: str) -> PyFnAttribute.Attribute | None: ...
    def _getColumnIndices(self) -> list[int]: ...
    def _getDefaultTextColor(self) -> None: ...
    def _getLocationPath(self, index: PyQt5.QtCore.QModelIndex) -> str | None: ...
    def _getLocationType(self, locationPath: str) -> str | None: ...
    def _isLocationExpanded(self, topLevelLocationPath: str, locationPath: str) -> bool: ...
    def _repaintTreeWidgetColumns(self): ...
    def _updateColumnAttributeNames(self): ...
    def canChangeSelection(self, index: PyQt5.QtCore.QModelIndex, event: PyQt5.QtCore.QEvent) -> bool: ...
    def customizeColumnTitleContextMenu(self, menu: PyQt5.QtWidgets.QMenu): ...
    def editorEvent(self, event: PyQt5.QtCore.QEvent, model: PyQt5.QtCore.QAbstractItemModel, option: PyQt5.QtWidgets.QStyleOptionViewItem, index: PyQt5.QtCore.QModelIndex) -> bool: ...
    def getAttributeName(self) -> str | None: ...
    def getAttributeNames(self) -> list: ...
    def getAttributesForLocationPath(self, locationPath: str) -> PyFnAttribute.GroupAttribute | None: ...
    def getLocationPathsForEditing(self, editedItem: LocationTreeWidgetItem | None) -> list[str]: ...
    def getProperty(self, propertyName: str) -> Any | None: ...
    def initStyleOption(self, option: PyQt5.QtWidgets.QStyleOptionViewItem, index: PyQt5.QtCore.QModelIndex): ...
    def isEditable(self) -> bool: ...
    @classmethod
    def isPropertyValid(cls, propertyName: str) -> bool: ...
    def isValueComparisonEnabled(self) -> bool: ...
    def setAttributeName(self, attributeName: str | None, updateColumns: bool = ...): ...
    def setAttributeNames(self, attributeNames: tuple[str, ...]): ...
    def setEditable(self, editable: bool): ...
    def setProperty(self, propertyName: str, propertyValue: object | None): ...
    def setValueComparisonEnabled(self, valueComparisonEnabled: bool): ...
    def updateEditorGeometry(self, editor: PyQt5.QtWidgets.QWidget, option: PyQt5.QtWidgets.QStyleOptionViewItem, index: PyQt5.QtCore.QModelIndex): ...

class DummyItemDelegate(BaseItemDelegate):
    FixedColumnWidth: ClassVar[float] = ...
    def initStyleOption(self, option: PyQt5.QtWidgets.QStyleOptionViewItem, index: PyQt5.QtCore.QModelIndex): ...
