diff --git a/prettyqt/widgets/styleoptionviewitem.py b/prettyqt/widgets/styleoptionviewitem.py index 112742d82..23f763590 100644 --- a/prettyqt/widgets/styleoptionviewitem.py +++ b/prettyqt/widgets/styleoptionviewitem.py @@ -1,6 +1,8 @@ from __future__ import annotations -from prettyqt import widgets +from typing import Literal + +from prettyqt import constants, widgets from prettyqt.qt import QtWidgets from prettyqt.utils import bidict @@ -12,6 +14,8 @@ bottom=QtWidgets.QStyleOptionViewItem.Position.Bottom, ) +PositionStr = Literal["left", "right", "top", "bottom"] + VIEW_ITEM_FEATURE = bidict( none=QtWidgets.QStyleOptionViewItem.ViewItemFeature(0), # type: ignore wrap_text=QtWidgets.QStyleOptionViewItem.ViewItemFeature.WrapText, @@ -21,6 +25,15 @@ has_decoration=QtWidgets.QStyleOptionViewItem.ViewItemFeature.HasDecoration, ) +ViewItemFeatureStr = Literal[ + "none", + "wrap_text", + "alternate", + "has_check_indicator", + "has_display", + "has_decoration", +] + VIEW_ITEM_POSITION = bidict( invalid=QtWidgets.QStyleOptionViewItem.ViewItemPosition.Invalid, beginning=QtWidgets.QStyleOptionViewItem.ViewItemPosition.Beginning, @@ -29,6 +42,26 @@ only_one=QtWidgets.QStyleOptionViewItem.ViewItemPosition.OnlyOne, ) +ViewItemPositionStr = Literal["invalid", "beginning", "middle", "end", "only_one"] + class StyleOptionViewItem(widgets.StyleOptionMixin, QtWidgets.QStyleOptionViewItem): - pass + def get_view_item_position(self) -> ViewItemPositionStr: + return VIEW_ITEM_POSITION.inverse[self.viewItemPosition] + + def get_features(self) -> ViewItemFeatureStr: + return VIEW_ITEM_FEATURE.get_list(self.features) + + def get_decoration_position(self) -> PositionStr: + return POSITION.inverse[self.decorationPosition] + + def get_checkstate(self) -> constants.StateStr: + return constants.STATE.inverse[self.checkState] + + def get_decoration_alignment(self) -> constants.AlignmentStr: + return constants.ALIGNMENTS.inverse[self.decorationAlignment] + + +if __name__ == "__main__": + item = StyleOptionViewItem() + print(item.get_decoration_alignment())