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

import PyQt5.QtWidgets
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
import UI4.Widgets.SceneGraphView.Filtering.RuleManager as RuleManager
import UI4.Widgets.SceneGraphView.SceneGraphViewIconManager as SceneGraphViewIconManager
import typing
from UI4.Widgets.SceneGraphView.Filtering.Criteria import Criteria as Criteria
from UI4.Widgets.SceneGraphView.Filtering.Evaluator import GetEvaluatorCriteria as GetEvaluatorCriteria, GetEvaluatorInstance as GetEvaluatorInstance, GetRegisteredEvaluators as GetRegisteredEvaluators
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class CheckBoxItemDelegate(PyQt5.QtWidgets.QStyledItemDelegate):
    PaddingRight: ClassVar[int] = ...
    def __init__(self, bridge, treeWidget, getStateCallback: typing.Callable, changedHandler, parent: Incomplete | None = ...) -> None: ...
    def editorEvent(self, event, itemModel, option, index): ...
    def getCurrentStateIcon(self, ruleName): ...
    def initStyleOption(self, option, index): ...
    def sizeHint(self, option, index): ...
    def updateEditorGeometry(self, editor, option, index): ...

class ComboBoxItemDelegate(PyQt5.QtWidgets.QStyledItemDelegate):
    ITEM_HEIGHT: ClassVar[int] = ...
    def __init__(self, bridge, treeWidget, optionProviderCallback: typing.Callable, indexChangedHandler, parent: Incomplete | None = ...) -> None: ...
    def addOption(self, option): ...
    def createEditor(self, parent, option, index): ...
    def on_comboBox_currentIndexChanged(self, index): ...
    def setEditorData(self, editor, index): ...
    def setModelData(self, editor, model, index): ...
    def sizeHint(self, option, index): ...

class CriteriaEntryItemDelegate(PyQt5.QtWidgets.QStyledItemDelegate):
    ITEM_HEIGHT: ClassVar[int] = ...
    def __init__(self, bridge, treeWidget, changedHandler, parent: Incomplete | None = ...) -> None: ...
    def createEditor(self, parent, option, index): ...
    def on_criteriaValueEntry_textEdited(self, newValue): ...

class CriteriaEntryLineEdit(EntryLineEdit):
    def __init__(self, ruleName, criteriaName, parent) -> None: ...
    def getCriteriaName(self): ...
    def getRuleName(self): ...

class EntryLineEdit(PyQt5.QtWidgets.QLineEdit):
    def __init__(self, parent) -> None: ...
    def keyPressEvent(self, event): ...

class RuleComboBox(PyQt5.QtWidgets.QComboBox):
    def __init__(self, ruleName, parent) -> None: ...
    def getRuleName(self): ...

class RuleConfigDialog(PyQt5.QtWidgets.QDialog):
    COLUMN_ID_COMMENT: ClassVar[int] = ...
    COLUMN_ID_CRITERIA: ClassVar[int] = ...
    COLUMN_ID_ENABLE: ClassVar[int] = ...
    COLUMN_ID_EVALUATOR: ClassVar[int] = ...
    COLUMN_ID_INVERT: ClassVar[int] = ...
    COLUMN_ID_NAME: ClassVar[int] = ...
    COLUMN_ID_SHOWCHILDREN: ClassVar[int] = ...
    COLUMN_ID_TARGET: ClassVar[int] = ...
    COLUMN_ID_VALUE: ClassVar[int] = ...
    def __init__(self, bridge, parent: Incomplete | None = ...) -> None: ...
    def _RuleConfigDialog__getCriteriaComboList(self, ruleName): ...
    def _RuleConfigDialog__getEvaluatorOptions(self, ruleName): ...
    def _RuleConfigDialog__getRuleEnabledStateCallback(self, ruleName): ...
    def _RuleConfigDialog__getRuleInvertedStateCallback(self, ruleName): ...
    def _RuleConfigDialog__getRuleShowChildrenStateCallback(self, ruleName): ...
    def _RuleConfigDialog__getTargetOptions(self, ruleName): ...
    def _RuleConfigDialog__handleCommentValueChanged(self, index, ruleName, comment): ...
    def _RuleConfigDialog__handleCriteriaComboBoxIndexChanged(self, ruleName, newCriteria): ...
    def _RuleConfigDialog__handleCriteriaValueChanged(self, ruleName, criteriaName, criteriaValue): ...
    def _RuleConfigDialog__handleEvaluatorComboBoxIndexChanged(self, ruleName, newEvaluator): ...
    def _RuleConfigDialog__handleNameValueChanged(self, index, ruleName, newName): ...
    def _RuleConfigDialog__handleRuleEnableValueChanged(self, ruleName): ...
    def _RuleConfigDialog__handleRuleInvertValueChanged(self, ruleName): ...
    def _RuleConfigDialog__handleRuleShowChildrenValueChanged(self, ruleName): ...
    def _RuleConfigDialog__handleTargetComboBoxIndexChanged(self, ruleName, newTarget): ...
    def _RuleConfigDialog__populateEvaluatorsMenu(self): ...
    def _RuleConfigDialog__populatePolicyMenu(self): ...
    def _RuleConfigDialog__populateRuleSet(self): ...
    def _RuleConfigDialog__refreshUI(self): ...
    def _RuleConfigDialog__updateInvertMatchCheckbox(self): ...
    def on_availableRulesMenu_triggered(self, action): ...
    def on_deleteSelectedButton_clicked(self): ...
    def on_invertMatchCheckBox_stateChanged(self, state): ...
    def on_matchPolicyCombo_currentIndexChanged(self, index): ...
    def showEvent(self, event): ...

class RuleItem(PyQt5.QtWidgets.QTreeWidgetItem):
    def __init__(self, ruleName, parent) -> None: ...
    def getRuleName(self): ...
    def setRuleName(self, ruleName): ...

class TextEntryItemDelegate(PyQt5.QtWidgets.QStyledItemDelegate):
    ITEM_HEIGHT: ClassVar[int] = ...
    def __init__(self, bridge, treeWidget, changedHandler, italic: bool = ..., parent: Incomplete | None = ...) -> None: ...
    def createEditor(self, parent, option, index): ...
    def initStyleOption(self, option, index): ...
    def setModelData(self, editor, model, index): ...
