mirror of
https://github.com/ihabunek/toot.git
synced 2024-11-03 04:17:21 -05:00
Added styled radio buttons and checkboxes
This commit is contained in:
parent
d399eec6f5
commit
3b67c85dfc
@ -4,7 +4,7 @@ from toot import api
|
|||||||
from toot.exceptions import ApiError
|
from toot.exceptions import ApiError
|
||||||
from toot.utils import format_content
|
from toot.utils import format_content
|
||||||
from .utils import highlight_hashtags, parse_datetime
|
from .utils import highlight_hashtags, parse_datetime
|
||||||
from .widgets import Button
|
from .widgets import Button, CheckBox, RadioButton
|
||||||
|
|
||||||
|
|
||||||
class Poll(urwid.ListBox):
|
class Poll(urwid.ListBox):
|
||||||
@ -33,7 +33,7 @@ class Poll(urwid.ListBox):
|
|||||||
poll = self.status.data.get("poll")
|
poll = self.status.data.get("poll")
|
||||||
choices = []
|
choices = []
|
||||||
for idx, b in enumerate(self.button_group):
|
for idx, b in enumerate(self.button_group):
|
||||||
if b.state:
|
if b.get_state():
|
||||||
choices.append(idx)
|
choices.append(idx)
|
||||||
|
|
||||||
if len(choices):
|
if len(choices):
|
||||||
@ -62,11 +62,11 @@ class Poll(urwid.ListBox):
|
|||||||
yield urwid.Text(("gray", prefix + f'{option["title"]}'))
|
yield urwid.Text(("gray", prefix + f'{option["title"]}'))
|
||||||
else:
|
else:
|
||||||
if poll["multiple"]:
|
if poll["multiple"]:
|
||||||
cb = urwid.CheckBox(f'{option["title"]}')
|
cb = CheckBox(f'{option["title"]}')
|
||||||
self.button_group.append(cb)
|
self.button_group.append(cb)
|
||||||
yield cb
|
yield cb
|
||||||
else:
|
else:
|
||||||
yield urwid.RadioButton(self.button_group, f'{option["title"]}')
|
yield RadioButton(self.button_group, f'{option["title"]}')
|
||||||
|
|
||||||
yield urwid.Divider()
|
yield urwid.Divider()
|
||||||
|
|
||||||
|
@ -46,3 +46,23 @@ class Button(urwid.AttrWrap):
|
|||||||
def set_label(self, *args, **kwargs):
|
def set_label(self, *args, **kwargs):
|
||||||
self.original_widget.original_widget.set_label(*args, **kwargs)
|
self.original_widget.original_widget.set_label(*args, **kwargs)
|
||||||
self.original_widget.width = len(args[0]) + 4
|
self.original_widget.width = len(args[0]) + 4
|
||||||
|
|
||||||
|
|
||||||
|
class CheckBox(urwid.AttrWrap):
|
||||||
|
"""Styled checkbox."""
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.button = urwid.CheckBox(*args, **kwargs)
|
||||||
|
padding = urwid.Padding(self.button, width=len(args[0]) + 4)
|
||||||
|
return super().__init__(padding, "button", "button_focused")
|
||||||
|
|
||||||
|
def get_state(self):
|
||||||
|
"""Return the state of the checkbox."""
|
||||||
|
return self.button._state
|
||||||
|
|
||||||
|
|
||||||
|
class RadioButton(urwid.AttrWrap):
|
||||||
|
"""Styled radiobutton."""
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
button = urwid.RadioButton(*args, **kwargs)
|
||||||
|
padding = urwid.Padding(button, width=len(args[1]) + 4)
|
||||||
|
return super().__init__(padding, "button", "button_focused")
|
||||||
|
Loading…
Reference in New Issue
Block a user