from PySide2.QtCore import QSize
from PySide2.QtGui import QTextDocument
from PySide2.QtGui import QPen
from PySide2.QtWidgets import QMenu
from PySide2.QtGui import QTextOption
from PySide2.QtWidgets import QListWidget
from PySide2.QtWidgets import QAction
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QAbstractItemView
from PySide2.QtGui import QPainter
from PySide2.QtWidgets import QStyle
from PySide2.QtGui import QPalette
from PySide2.QtWidgets import QApplication
from PySide2.QtCore import QRect
from PySide2.QtWidgets import QStyledItemDelegate
from PySide2.QtGui import QAbstractTextDocumentLayout
from PySide2.QtWidgets import QStyleOptionViewItem
from PySide2.QtGui import QColor
from functools import partial
from PySide2.QtWidgets import QShortcut
from PySide2.QtGui import QKeySequence

if False:
    from typing import Dict, List, Tuple, Union, Optional


class HTMLDelegate(QStyledItemDelegate):
    def __init__(self, selector): pass

    def paint(self, painter, option, index):
        """
        Renders the delegate using the given painter and style option for the item specified by index.
        """
        pass

    def sizeHint(self, option, index): pass

    staticMetaObject = None


class CollectionStaticSelectionWidget(QListWidget):
    """
    This class implements a widget that displays a list of dropped Outliner objects.
    """

    def __init__(self, selector, parent='None'): pass

    def addEntry(self):
        """
        Adds the selected items to the list
        """
        pass

    def dragEnterEvent(self, event):
        """
        Accepts drag events if the dragged event text contains only commands
        """
        pass

    def dragMoveEvent(self, event):
        """
        Accepts drag move events. Validation is already done in the enter event
        """
        pass

    def dropEvent(self, event):
        """
        Adds the dropped object names to the list (if they don't already exist)
        """
        pass

    def highlight(self, names): pass

    def onDoubleClick(self, item): pass

    def paintEvent(self, e):
        """
        Overrides the paint event to make it so that place holder text is displayed when the list is empty.
        """
        pass

    def populate(self): pass

    def removeEntry(self):
        """
        Removes the selected items from the list
        """
        pass

    def removeFilteredObjects(self): pass

    def removeMissingObjects(self): pass

    def rightClicked(self, point):
        """
        Displays the right click context menu
        """
        pass

    def selectEntry(self):
        """
        Selects the selected items from the list
        """
        pass

    def selectFilteredObjects(self): pass

    def selectMembers(self): pass

    def selectMissingObjects(self): pass

    def setSortingEnabled(self, enabled): pass

    def sizeHintForRow(self, row): pass

    MAX_VISIBLE_ENTRIES = 10

    MIN_VISIBLE_ENTRIES = 4

    PLACEHOLDER_TEXT_PEN = None

    ROW_HEIGHT = 42.0

    staticMetaObject = None


kCouldNotSelectMissingObject = []
