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

import NodegraphAPI as NodegraphAPI
import PyFnAttribute
import PyQt5.QtWidgets
import PyQt5.QtGui as QtGui
import UI4.Widgets.SceneGraphView.ColumnPresetManager
import UI4.Widgets.SceneGraphView.Filtering
import UI4.Widgets.SceneGraphView.SceneGraphViewColumn
import Utils as Utils
import typing
from UI4.Widgets.SceneGraphView.BridgeImpl import BridgeImpl as BridgeImpl
from UI4.Widgets.SceneGraphView.ColumnDataType import ColumnDataType as ColumnDataType
from UI4.Widgets.SceneGraphView.Filtering.RuleConfigDialog import RuleConfigDialog as RuleConfigDialog
from UI4.Widgets.SceneGraphView.SceneGraphHandle import SceneGraphHandle as SceneGraphHandle
from UI4.Widgets.SceneGraphView.SceneGraphViewColumn import SceneGraphColumnTitle as SceneGraphColumnTitle
from UI4.Widgets.SceneGraphView.TreeWidgetViewLink import TreeWidgetViewLink as TreeWidgetViewLink
from Utils.Decorators import deprecated as deprecated
from _typeshed import Incomplete
from typing import Set, Tuple

class SceneGraphView:
    def __init__(self, debugMode: bool = ..., parent: Incomplete | None = ...) -> None: ...
    @classmethod
    def GetStopAtLocationTypes(cls) -> tuple[str, ...]: ...
    @classmethod
    def Initialize(cls): ...
    @classmethod
    def SetStopAtLocationTypes(cls, *locationTypes): ...
    def addAttributeDataItemType(self, itemTypeClass: type): ...
    def addColumn(self, columnName: str) -> SceneGraphColumn[UI4.Widgets.SceneGraphView.SceneGraphViewColumn.SceneGraphColumn]: ...
    def addColumnSet(self, columnSetName: str) -> SceneGraphColumnSet[UI4.Widgets.SceneGraphView.SceneGraphViewColumn.SceneGraphColumnSet]: ...
    def addRule(self, ruleName: str): ...
    def addTopLevelLocation(self, topLevelLocationPath: str, index: Incomplete | None = ...): ...
    def addWorkingSetColumn(self, workingSetName: str, columnIcon: Incomplete | None = ..., columnTitle: Incomplete | None = ..., columnTitleToolTip: Incomplete | None = ...) -> SceneGraphColumn[UI4.Widgets.SceneGraphView.SceneGraphViewColumn.SceneGraphColumn]: ...
    def allowMultipleSelection(self) -> bool | None: ...
    def applyColumnVisibilitySettings(self, columnVisibility: dict): ...
    def applyColumnWidthsSettings(self, columnWidths: dict): ...
    def beginColumnConfiguration(self): ...
    def clearExpandedLocationsRegistry(self, clearCurrent: bool = ...): ...
    def clearTopLevelLocations(self): ...
    def endColumnConfiguration(self): ...
    def frozenWhenHidden(self) -> bool | None: ...
    def getAllLocations(self, visibleOnly: bool = ...) -> list[tuple | None]: ...
    def getChildLocations(self, locationPath: str, topLevelLocationPath: str | None, visibleOnly: bool = ..., allDescendants: bool = ...) -> list[str | None]: ...
    def getChildNameByIndex(self, parentLocationPath, childIndex): ...
    def getColumnByName(self, columnName: str) -> SceneGraphColumn[UI4.Widgets.SceneGraphView.SceneGraphViewColumn.SceneGraphColumn] | None: ...
    def getColumnPresetManager(self) -> ColumnPresetManager[UI4.Widgets.SceneGraphView.ColumnPresetManager.ColumnPresetManager]: ...
    def getColumnVisibilitySettings(self) -> dict: ...
    def getColumnWidthsSettings(self) -> dict: ...
    def getCurrentRules(self): ...
    def getNumberOfChildren(self, parentLocationPath): ...
    def getParent(self, locationPath: str) -> str | None: ...
    def getRootColumnSet(self) -> SceneGraphColumnSet[UI4.Widgets.SceneGraphView.SceneGraphViewColumn.SceneGraphColumnSet]: ...
    def getSceneGraphAttributes(self, locationPath: str, callback: Incomplete | None = ..., oneShot: bool = ...) -> PyFnAttribute.GroupAttribute | None: ...
    def getSceneGraphChildren(self, parentLocationPath: str, callback: Incomplete | None = ..., oneShot: bool = ...) -> list | None: ...
    def getSelectedItems(self) -> list[TreeWidgetItem | None]: ...
    def getSelectedLocations(self, sortBySceneGraphOrder: bool = ...) -> list[tuple | None]: ...
    def getTopLevelLocations(self) -> list[str]: ...
    def getWidget(self) -> PyQt5.QtWidgets.QWidget | None: ...
    def hideColumnSet(self, columnSetName: str): ...
    def interruptClientProcessing(self): ...
    def isFrozen(self) -> bool: ...
    def isLocationExpanded(self, topLevelLocationPath: str, locationPath: str) -> bool | None: ...
    def isProcessing(self) -> bool: ...
    def isStopping(self) -> bool: ...
    def locationNamesPolished(self) -> bool | None: ...
    def removeRule(self, ruleName: str): ...
    def removeTopLevelLocation(self, topLevelLocationPath: str): ...
    def saveExpandedLocations(self): ...
    def scrollToLocation(self, topLevelLocationPath: str, locationPath: str): ...
    def selectChildLocations(self, replaceSelection: bool = ...): ...
    def selectLocations(self, locations, replaceSelection: bool = ...): ...
    def selectParentLocations(self, replaceSelection: bool = ...): ...
    def setAboutToDragCallback(self, callback: typing.Callable): ...
    def setAllowMultipleSelection(self, allowMultipleSelection: bool): ...
    def setContextMenuEventCallback(self, callback): ...
    def setDragMoveEventCallback(self, callback: typing.Callable): ...
    def setDropEventCallback(self, callback: typing.Callable): ...
    def setExpandsOnDoubleClick(self, expandsOnDoubleClick: bool): ...
    def setFrozenWhenHidden(self, frozenWhenHidden: bool = ...): ...
    def setKeyPressEventCallback(self, callback: typing.Callable): ...
    def setLocationActive(self, locationPath: str): ...
    def setLocationAddedOrUpdatedCallback(self, callback: typing.Callable): ...
    def setLocationCollapsed(self, topLevelLocationPath: str, locationPath: str): ...
    def setLocationCollapsedCallback(self, callback: typing.Callable): ...
    def setLocationDataProcessedCallback(self, callback: typing.Callable): ...
    def setLocationExpanded(self, topLevelLocationPath: str, locationPath: str): ...
    def setLocationExpandedCallback(self, callback: typing.Callable): ...
    def setLocationExpandedRecursive(self, topLevelLocationPath: str, locationPath: str): ...
    def setLocationNamePolishCallback(self, callback: typing.Callable): ...
    def setLocationNamesPolished(self, namesPolished: bool): ...
    def setLocationRemovedCallback(self, callback: typing.Callable): ...
    def setMaxEventsToProcess(self, maxEventsToProcess: int): ...
    def setOverrideParameterRequestCallback(self, callback: typing.Callable): ...
    def setRuleCriteria(self, ruleName: str, criteriaName: str, criteria: Criteria[UI4.Widgets.SceneGraphView.Filtering.Criteria]): ...
    def setRuleEvaluator(self, ruleName: str, evaluator: Evaluator[UI4.Widgets.SceneGraphView.Filtering.Evaluator]): ...
    def setRuleMatchPolicy(self, ruleMatchPolicy: int): ...
    def setRuleTarget(self, ruleName: str, column: SceneGraphColumn[UI4.Widgets.SceneGraphView.SceneGraphViewColumn.SceneGraphColumn]): ...
    def setSelectionChangedCallback(self, callback: typing.Callable): ...
    def setSelectionState(self, topLevelLocationPath: str, locationPath: str, selected: bool): ...
    def setStopRecursiveExpandAttributeNames(self, attributeNames: list[str]): ...
    def setStopRecursiveExpandLocationTypes(self, locationTypes: list[str]): ...
    def setTerminalOps(self, terminalOpArgs): ...
    def setTopLevelDisplayIndex(self, locationPath: str, index: int): ...
    def setTopLevelLocations(self, topLevelLocationPaths: list[str]): ...
    def setUpdateViewportAutomatically(self, updateViewportAutomatically: bool): ...
    def setViewNode(self, node: NodegraphAPI.Node | None, applyImplicitResolvers: bool = ..., extraImplicitResolverOpArgs: Incomplete | None = ...): ...
    def setViewOp(self, op: FnGeolibOp | None, applyImplicitResolvers: bool = ..., extraImplicitResolverOpArgs: Incomplete | None = ...): ...
    def showColumnSet(self, columnSetName: str): ...
    def showRuleConfigDialog(self): ...
    def topLevelLocationRenamed(self, oldLocationPath, newLocationPath): ...
    def updateLocation(self, topLevelLocationPath: str, locationPath: str): ...
    def updateLocationIcons(self, topLevelLocationPath: str, locationPath: str): ...
    def updateSelection(self, selectedLocations, deselectedLocations): ...
    def updateTerminalOps(self, terminalOpArgs, txn: Incomplete | None = ...): ...
    def updateViewport(self): ...
    def updateWidget(self): ...
