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

import PyFnAttribute as FnAttribute
import UI4.Util.IconManager as IconManager
import NodegraphAPI as NodegraphAPI
import UI4.KatanaPrefs.PrefNames as PrefNames
import PyFnAttribute
import PyQt5.QtCore
import PyQt5.QtGui
import PyQt5.QtWidgets
import QT4FormWidgets as QT4FormWidgets
import QT4Widgets as QT4Widgets
import QT4Widgets.FilterablePopupButton
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
import Nodes3DAPI.ScenegraphManager as ScenegraphManager
import Utils as Utils
import typing
from QT4Widgets.FilterablePopupButton import FilterablePopupButton
from QT4Widgets.SortableTreeWidget import SortableTreeWidget
from UI4.KatanaPrefs.KatanaPrefsObject import Prefs as Prefs
from UI4.Util.AttributeHistory import AttributeHistory as AttributeHistory
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class AttributeHistoryPopup(_BasePopup):
    def _startHistoryComputation(self): ...

class AttributeHistoryPopupWidget(_BasePopupWidget):
    def _buildPopupWindow(self): ...

class AttributeHistoryTreeWidget(SortableTreeWidget):
    AttributeValueColumnTitle: ClassVar[str] = ...
    GrayIcon: ClassVar[int] = ...
    GreenIcon: ClassVar[int] = ...
    HistoryEntryColumnTitle: ClassVar[str] = ...
    MaxNumValuesToDisplay: ClassVar[int] = ...
    MaxStringCharsToDisplay: ClassVar[int] = ...
    NothingFoundDummyItemText: ClassVar[str] = ...
    ProcessingDummyItemText: ClassVar[str] = ...
    TimerDelay: ClassVar[int] = ...
    _AttributeHistoryTreeWidget__IconFiles: ClassVar[dict] = ...
    _AttributeHistoryTreeWidget__pixmaps: ClassVar[None] = ...
    released: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    def __init__(self, parent: Incomplete | None = ...) -> None: ...
    @classmethod
    def GetAttributeDataToDisplay(cls, attribute: PyFnAttribute.DataAttribute) -> str: ...
    @classmethod
    def GetDisplayTextAndIconType(cls, historyEntry: str) -> tuple[str, int]: ...
    @classmethod
    def GetPixmap(cls, iconType: int) -> PyQt5.QtGui.QPixmap: ...
    def _AttributeHistoryTreeWidget__addDummyItem(self, text): ...
    def _AttributeHistoryTreeWidget__doHistoryCalculation(self, historyFunction): ...
    def _AttributeHistoryTreeWidget__historyCompleteCallback(self, historyEntries): ...
    def _AttributeHistoryTreeWidget__historyUpdateCallback(self, historyEntries): ...
    def _AttributeHistoryTreeWidget__on_treeWidget_itemActivated(self, item, index): ...
    def _AttributeHistoryTreeWidget__removeDummyItem(self): ...
    def _AttributeHistoryTreeWidget__setCallbacks(self, completeCallback: typing.Callable, updateCallback: typing.Callable): ...
    def _AttributeHistoryTreeWidget__setNodeEdited(self): ...
    def _AttributeHistoryTreeWidget__setNumberOfItems(self, numberOfItems): ...
    def _AttributeHistoryTreeWidget__updateFromHistory(self, historyEntries): ...
    def _AttributeHistoryTreeWidget__updateItem(self, index, historyEntry, attrValueText, meta, iconType): ...
    def deleteHistory(self): ...
    def getAttributeCreationNode(self, completeCallback: typing.Optional[typing.Callable] = ..., updateCallback: typing.Optional[typing.Callable] = ...): ...
    def getAttributeInheritance(self, completeCallback: typing.Optional[typing.Callable] = ..., updateCallback: typing.Optional[typing.Callable] = ...): ...
    def getAttributeSetNode(self, completeCallback: typing.Optional[typing.Callable] = ..., updateCallback: typing.Optional[typing.Callable] = ...): ...
    def getNodeHistory(self, completeCallback: typing.Optional[typing.Callable] = ..., updateCallback: typing.Optional[typing.Callable] = ...): ...
    def initializeHistory(self, locationPath, attributeName, startNode: Incomplete | None = ..., startOp: Incomplete | None = ..., startPort: Incomplete | None = ..., startGraphState: Incomplete | None = ..., delegateNodes: bool = ...): ...
    def setProcessing(self, isProcessing): ...

class AttributeInheritancePopup(_BasePopup):
    def __init__(self, parent) -> None: ...
    def _startHistoryComputation(self): ...

class AttributeInheritancePopupWidget(_BasePopupWidget):
    def _buildPopupWindow(self): ...

class _BasePopup(QT4Widgets.FilterablePopupButton.FilterablePopup):
    class ElidedLabel(PyQt5.QtWidgets.QLabel):
        def minimumSizeHint(self): ...
        def paintEvent(self, event): ...
    ShowInternalNodesPrefKey: ClassVar[str] = ...
    TimerDelay: ClassVar[int] = ...
    def __init__(self, parent) -> None: ...
    def _BasePopup__on_hide(self): ...
    def _BasePopup__on_itemChosen(self): ...
    def _BasePopup__on_pref_changed(self, args): ...
    def _BasePopup__on_showInternalNodesCheckBox_stateChanged(self, state: PyQt5.QtCore.Qt.CheckState): ...
    def _BasePopup__on_timer_timeout(self): ...
    def _BasePopup__refreshFromPrefs(self): ...
    def _BasePopup__setProcessing(self, isProcessing): ...
    def _BasePopup__startProcessing(self): ...
    def _buildTreeWidget(self): ...
    def _getShowInternalNodesCheckBox(self): ...
    def _historyCompleteCallback(self, nodeHistory): ...
    def _historyUpdateCallback(self, nodeHistory): ...
    def _startHistoryComputation(self): ...
    def computeHistory(self, locationPath, attributeName, startNode: Incomplete | None = ..., startOp: Incomplete | None = ..., startPort: Incomplete | None = ..., startGraphState: Incomplete | None = ...): ...

class _BasePopupWidget(FilterablePopupButton):
    pressed: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    def __init__(self, parent) -> None: ...
    def popup(self, locationPath, attributeName, startNode: Incomplete | None = ..., startOp: Incomplete | None = ..., startPort: Incomplete | None = ..., startGraphState: Incomplete | None = ..., pos: Incomplete | None = ...): ...

def AddAttributeHistoryActionsToMenu(policy: AbstractValuePolicy, menu: QMenu, includeInheritance: bool = ...): ...
