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

import UI4.Widgets.CollectAndSelect as CollectAndSelect
import PyFnAttribute as FnAttribute
import UI4.Util.IconManager as IconManager
import QT4FormWidgets.InputWidgets as InputWidgets
import UI4.Widgets.MessageBox as MessageBox
import NodegraphAPI as NodegraphAPI
import Nodes3DAPI as Nodes3DAPI
import UI4.KatanaPrefs.PrefNames as PrefNames
import PyCEL.CanonicalCELEntry
import PyQt5.QtCore
import PyQt5.QtGui
import PyQt5.QtWidgets
import QT4FormWidgets as QT4FormWidgets
import QT4FormWidgets.ValuePolicy
import QT4Widgets as QT4Widgets
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
import UI4.Util.ScenegraphIconManager as ScenegraphIconManager
import Nodes3DAPI.ScenegraphManager as ScenegraphManager
import UI4.FormMaster
import UI4.Widgets.SortablePanel
import Utils as Utils
from QT4Widgets.MenuButton import MenuButton as MenuButton
from QT4Widgets.StretchBox import StretchBox as StretchBox
from UI4.FormMaster.BaseParameterPolicy import BaseParameterPolicy as BaseParameterPolicy
from UI4.KatanaPrefs.KatanaPrefsObject import Prefs as Prefs
from UI4.Util.ScenegraphLocation import GetNodesCreatingSceneGraphLocations as GetNodesCreatingSceneGraphLocations
from UI4.Widgets.CelResultsWidget import CelResultsWidget as CelResultsWidget, CelResultsWindow as CelResultsWindow
from UI4.Widgets.ComboBoxNoWheel import ComboBoxNoWheel as ComboBoxNoWheel
from UI4.Widgets.RolloverPixmap import RolloverPixmap as RolloverPixmap
from UI4.Widgets.SortablePanel import ParameterExpressionPanel as ParameterExpressionPanel, SortablePanelBase as SortablePanelBase, SortablePanelFormWidget as SortablePanelFormWidget
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class CelEditorFormWidget(UI4.Widgets.SortablePanel.SortablePanelFormWidget):
    _CelEditorFormWidget__typeDict: ClassVar[dict] = ...
    _CelEditorFormWidget__typeTitle: ClassVar[dict] = ...
    def __init__(self, parent, policy, factory) -> None: ...
    def _CelEditorFormWidget__addMenuCallback(self, actionText): ...
    def _CelEditorFormWidget__allowNewPanels(self): ...
    def _CelEditorFormWidget__appendScenegraphSelection(self): ...
    def _CelEditorFormWidget__buildValueFromPanels(self): ...
    def _CelEditorFormWidget__calcCelAndLoc(self, index, useThisStatement): ...
    def _CelEditorFormWidget__confirmAndGetLastPathsPanel(self): ...
    def _CelEditorFormWidget__copyCelStatementAsText(self): ...
    def _CelEditorFormWidget__fillCollectFMenu(self, menu): ...
    def _CelEditorFormWidget__getCollectionStatement(self, locationPath, collectionName): ...
    def _CelEditorFormWidget__getStringParameterPolicy(self, fullParameterName: str | None) -> UI4.FormMaster.BaseParameterPolicy | None: ...
    def _CelEditorFormWidget__getValidDroppedNode(self, mimeData): ...
    def _CelEditorFormWidget__handleScenegraphLocationContextParameterPolicyChange(self, valuePolicyEvent: QT4FormWidgets.ValuePolicy.ValuePolicyEvent): ...
    def _CelEditorFormWidget__on_findAndSelectAction_triggered(self): ...
    def _CelEditorFormWidget__pasteCelStatementAsText(self): ...
    def _CelEditorFormWidget__replaceWithScenegraphSelection(self): ...
    def _CelEditorFormWidget__setLabel(self): ...
    def _participatesInLabelAlignment(self): ...
    def addButtonCheckDragEvent(self, event): ...
    def addButtonDropEvent(self, event): ...
    def buildAddMenu(self, menu): ...
    def collectAndDisplayResults(self, index: int = ..., useThisStatement: Incomplete | None = ...): ...
    def doMenuExp(self): ...
    def event(self, e): ...
    def findAndSelectInScenegraph(self, index: int = ..., useThisStatement: Incomplete | None = ..., replace: bool = ...): ...
    def getCollectionName(self) -> str: ...
    def getScenegraphLocationContext(self) -> str: ...
    def getScenegraphSelection(self): ...
    def panelDeleted(self, index): ...
    def panelValueChanged(self, index): ...
    def updatePanels(self): ...

class CelStatementPanel(UI4.Widgets.SortablePanel.SortablePanelBase):
    class AddRemoveExprButton(RolloverPixmap, PyQt5.QtWidgets.QPushButton):
        def __init__(self, parent) -> None: ...
        def isPlus(self): ...
        def setPlus(self, value): ...
    _CelStatementPanel__displayToIndex: ClassVar[dict] = ...
    _CelStatementPanel__displayToOp: ClassVar[dict] = ...
    _CelStatementPanel__opToDisplay: ClassVar[dict] = ...
    k: ClassVar[str] = ...
    v: ClassVar[PyCEL.CanonicalCELEntry.OpType] = ...
    def __init__(self, parent, name, value, argdict: Incomplete | None = ...) -> None: ...
    def _CelStatementPanel__collectAndDisplayResultsOfPanel(self): ...
    def _CelStatementPanel__findAndSelectPanel(self): ...
    def _CelStatementPanel__modeboxChangeCallback(self, value): ...
    def _CelStatementPanel__valueExprButtonClicked(self): ...
    def _CelStatementPanel__valueExprChangedCallback(self): ...
    def buildEntry(self, data, entryType): ...
    def getContentArea(self): ...
    def getFindMenu(self): ...
    def getScenegraphLocationContext(self): ...
    def hideValueExpression(self): ...
    def setIndex(self, index): ...
    def setLocked(self, value): ...
    def showValueExpression(self, exprValue: str = ...): ...

class CollectionsStatementPanel(PathListStatementPanel):
    class CollectionSelectionDialog(PyQt5.QtWidgets.QDialog):
        def __init__(self, parent, possiblelist, alreadylist) -> None: ...
        def _CollectionSelectionDialog__itemSelectionChanged(self): ...
        def _CollectionSelectionDialog__okClicked(self): ...
        def _CollectionSelectionDialog__updateFilter(self, text): ...
        def getResults(self): ...
    def __init__(self, parent, value: Incomplete | None = ...) -> None: ...
    def _CollectionsStatementPanel__addCollectionsFromSelection(self, selection): ...
    def _CollectionsStatementPanel__addGlobalCollectionsCallback(self): ...
    def _CollectionsStatementPanel__addScenegraphSelectionCallback(self): ...
    def _CollectionsStatementPanel__findAndSelectItemsCallback(self): ...
    def _CollectionsStatementPanel__getExistingPaths(self): ...
    def actionMenuAboutToShow(self): ...
    def dragEnterEvent(self, event): ...
    def dropEvent(self, event): ...
    def event(self, e): ...
    def getMinLines(self): ...
    def getValue(self, onlySelected: bool = ..., includeBaseValue: bool = ...): ...
    def processDialogResults(self, results, sendUpdate: bool = ...): ...

class CustomStatementPanel(CelStatementPanel):
    def __init__(self, parent, value: Incomplete | None = ...) -> None: ...
    def _CustomStatementPanel__changedCallback(self): ...
    def dragEnterEvent(self, event): ...
    def dropEvent(self, event): ...
    def getValue(self): ...

class MenuShiftFilter(PyQt5.QtCore.QObject):
    def __init__(self, menu, action) -> None: ...
    def _MenuShiftFilter__aboutToShow(self): ...
    def _MenuShiftFilter__setLabelState(self, state): ...
    def eventFilter(self, receiver, event): ...

class PathListStatementPanel(CelStatementPanel):
    class PathItem(PyQt5.QtWidgets.QTreeWidgetItem):
        def clearMessage(self): ...
        def setErrorMessage(self, message): ...
        def setWarningMessage(self, message): ...
    def __init__(self, parent, name, value: Incomplete | None = ..., argdict: Incomplete | None = ...) -> None: ...
    def _PathListStatementPanel__actionMenuAboutToShow(self): ...
    def _PathListStatementPanel__contextMenuCallback(self, point): ...
    def actionMenuAboutToShow(self): ...
    def copySelectedPathsCallback(self): ...
    def getActionMenu(self): ...
    def getMinLines(self): ...
    def getScenegraphSelection(self): ...
    def getValueTreeWidget(self): ...
    def removeSelectedPathsCallback(self): ...
    def selectAll(self): ...
    def sendChange(self): ...
    def setLocked(self, value): ...
    def updateLabel(self): ...
    def zoomBoxClicked(self): ...

class PathsStatementPanel(PathListStatementPanel):
    class PathListExtendedDialog(PyQt5.QtWidgets.QDialog):
        def __init__(self, paths) -> None: ...
        def getPaths(self): ...
    def __init__(self, parent, value: Incomplete | None = ..., argdict: Incomplete | None = ...) -> None: ...
    def _PathsStatementPanel__getPaths(self): ...
    def _PathsStatementPanel__showExtendedView(self): ...
    def actionMenuAboutToShow(self): ...
    def addScenegraphSelection(self, sendUpdate: bool = ..., selection: Incomplete | None = ...): ...
    def added(self): ...
    def dragEnterEvent(self, event): ...
    def dropEvent(self, event): ...
    def event(self, e): ...
    def getValue(self): ...
    def keyPressEvent(self, event: PyQt5.QtGui.QKeyEvent): ...
    def removeScenegraphSelection(self): ...
    def selectSelectedPathsInScenegraph(self): ...
    def update(self): ...
