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

import Callbacks as Callbacks
import QT4FormWidgets.MenuUtils as MenuUtils
import NodegraphAPI as NodegraphAPI
import PyQt5.QtCore
import PyQt5.QtGui
import PyQt5.QtWidgets
import QT4FormWidgets as QT4FormWidgets
import QT4FormWidgets.ValuePolicy
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
import UI4 as UI4
import UI4.FormMaster.BaseParameterPolicy
import UI4.Widgets.SceneGraphView.Bridge
import PyUtilModule.UndoEntries as UndoEntries
import Utils as Utils
import typing
from QT4FormWidgets.ExpressionEditDialog import ExpressionEditDialog as ExpressionEditDialog
from UI4.Widgets.SceneGraphView.ColumnDataType import RegisterDataType as RegisterDataType
from UI4.Widgets.SceneGraphView.ItemDelegates.BaseItemDelegate import BaseItemDelegate as BaseItemDelegate
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class ParameterItemDelegate(BaseItemDelegate):
    _OnParameterSetCallbackID: ClassVar[None] = ...
    def __init__(self, bridge: Bridge[UI4.Widgets.SceneGraphView.Bridge.Bridge], treeWidget: PyQt5.QtWidgets.QTreeWidget, parent: Incomplete | None = ...) -> None: ...
    def _ParameterItemDelegate__on_cacheManager_flush(self): ...
    def _ParameterItemDelegate__on_closeEditor(self, editor: PyQt5.QtWidgets.QWidget, endEditHint: PyQt5.QtWidgets.QAbstractItemDelegate.EndEditHint): ...
    def _ParameterItemDelegate__on_sceneGraph_locationDeleted(self, eventType: str | None, eventID: object, locationPath: str): ...
    def _ParameterItemDelegate__on_sceneGraph_locationRenamed(self, eventType: str | None, eventID: object, oldLocationPath: str, newLocationPath: str, selectLocation: bool = ..., replaceSelection: bool = ...): ...
    def _ParameterItemDelegate__parameterPolicyEventHandler(self, valuePolicyEvent: QT4FormWidgets.ValuePolicy.ValuePolicyEvent): ...
    def canChangeSelection(self, index: PyQt5.QtCore.QModelIndex, event: PyQt5.QtCore.QEvent) -> bool: ...
    def clone(self, parent: Incomplete | None = ...) -> ParameterItemDelegate: ...
    def createContextMenu(self, index: PyQt5.QtCore.QModelIndex, selectedItems: list[PyQt5.QtWidgets.QTreeWidgetItem]) -> PyQt5.QtWidgets.QMenu | None: ...
    def createEditor(self, parent: PyQt5.QtWidgets.QWidget, option: PyQt5.QtWidgets.QStyleOptionViewItem, index: PyQt5.QtCore.QModelIndex) -> PyQt5.QtWidgets.QWidget | None: ...
    def doesParameterValueMatchModelValue(self, parameterPolicy: BaseParameterPolicy[UI4.FormMaster.BaseParameterPolicy.BaseParameterPolicy], index: PyQt5.QtCore.QModelIndex) -> bool: ...
    def editorClosed(self, editor: PyQt5.QtWidgets.QWidget, endEditHint: PyQt5.QtWidgets.QAbstractItemDelegate.EndEditHint): ...
    def executeOnParameterSetCallback(self, node: typing.Optional[NodegraphAPI.Node] = ..., parameterPolicy: Incomplete | None = ...): ...
    def getEditorClass(self) -> PyQt5.QtWidgets.QWidget | None: ...
    def getModelIndexesForEditing(self, editedCellIndex: PyQt5.QtCore.QModelIndex) -> list[PyQt5.QtCore.QModelIndex]: ...
    def getNodeAndParameterPolicy(self, index: PyQt5.QtCore.QModelIndex, requestIfNotCached: bool = ...) -> None: ...
    def getNodesAndParameterPoliciesForEditing(self, editedCellIndex: PyQt5.QtCore.QModelIndex, requestIfNotCached: bool = ...) -> list[None]: ...
    def getParameterPoliciesForEditing(self, editedCellIndex: PyQt5.QtCore.QModelIndex) -> list[BaseParameterPolicy[UI4.FormMaster.BaseParameterPolicy.BaseParameterPolicy]]: ...
    def getStateColor(self, option: PyQt5.QtWidgets.QStyleOptionViewItem, index: PyQt5.QtCore.QModelIndex) -> PyQt5.QtGui.QColor | None: ...
    def initStyleOption(self, option: PyQt5.QtWidgets.QStyleOptionViewItem, index: PyQt5.QtCore.QModelIndex): ...
    def setModelData(self, editor, model, index): ...
    def setNodeAndParameter(self, locationPath: str, node: NodegraphAPI.Node | None, parameter: NodegraphAPI.Parameter | None): ...
    def setShowFinalValue(self, state: bool): ...
    def showFinalValue(self) -> bool: ...
    def toolTipEvent(self, index: PyQt5.QtCore.QModelIndex): ...
    def updateEditorGeometry(self, editor: PyQt5.QtWidgets.QWidget, option: PyQt5.QtWidgets.QStyleOptionViewItem, index: PyQt5.QtCore.QModelIndex): ...
