Skip to content

Commit

Permalink
feat: some methods for StyleOptionViewItem
Browse files Browse the repository at this point in the history
  • Loading branch information
phil65 committed May 11, 2023
1 parent 3c4616d commit caded8e
Showing 1 changed file with 35 additions and 2 deletions.
37 changes: 35 additions & 2 deletions 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

Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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())

0 comments on commit caded8e

Please sign in to comment.