Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def main(page):
rows=1,
auto_adjust_height=True,
shift_enter=True,
resizable=True,
resizable=False,
)

def on_message(user, message):
Expand Down
25 changes: 12 additions & 13 deletions pglet/combobox.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
from typing import List, Optional
from typing import List, Optional, Union

from beartype import beartype

from pglet.control import Control

try:
from typing import Literal
except:
from typing_extensions import Literal

from beartype import beartype

from pglet.control import Control

ItemType = Literal[None, "normal", "divider", "header", "selectAll", "select_all"]
ComboBoxValue = Union[None, str, List[str]]


class ComboBox(Control):
def __init__(
self,
label=None,
id=None,
value=None,
value: ComboBoxValue = None,
placeholder=None,
error_message=None,
on_change=None,
Expand Down Expand Up @@ -95,16 +98,12 @@ def label(self, value):
# value
@property
def value(self):
v = self._get_attr("value")
if v and self.multi_select:
return [x.strip() for x in v.split(",")]
return v
return self._get_value_or_list_attr("value", ",")

@value.setter
def value(self, value):
if isinstance(value, List):
value = ",".join(value)
self._set_attr("value", value)
@beartype
def value(self, value: ComboBoxValue):
self._set_value_or_list_attr("value", value, ",")

# placeholder
@property
Expand Down
14 changes: 14 additions & 0 deletions pglet/control.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
]

BorderStyle = Union[None, BorderStyles, List[BorderStyles]]
BorderWidth = Union[None, str, List[str]]
BorderColor = Union[None, str, List[str]]
BorderRadius = Union[None, str, List[str]]

TextSize = Literal[
None,
Expand Down Expand Up @@ -103,6 +106,17 @@ def _get_attr(self, name, def_value=None, data_type="string"):
def _set_attr(self, name, value, dirty=True):
self._set_attr_internal(name, value, dirty)

def _get_value_or_list_attr(self, name, delimiter):
v = self._get_attr(name)
if v and delimiter in v:
return [x.strip() for x in v.split(delimiter)]
return v

def _set_value_or_list_attr(self, name, value, delimiter):
if isinstance(value, List):
value = delimiter.join(value)
self._set_attr(name, value)

def _set_attr_internal(self, name, value, dirty=True):
name = name.lower()
orig_val = self.__attrs.get(name)
Expand Down
38 changes: 18 additions & 20 deletions pglet/iframe.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from beartype import beartype

from pglet.control import BorderStyle, Control
from pglet.control import BorderColor, BorderRadius, BorderStyle, BorderWidth, Control


class IFrame(Control):
Expand All @@ -11,9 +11,9 @@ def __init__(
id=None,
src=None,
border_style: BorderStyle = None,
border_width=None,
border_color=None,
border_radius=None,
border_width: BorderWidth = None,
border_color: BorderColor = None,
border_radius: BorderRadius = None,
title=None,
width=None,
height=None,
Expand Down Expand Up @@ -56,44 +56,42 @@ def src(self, value):
# border_style
@property
def border_style(self):
v = self._get_attr("borderStyle")
if v:
return [x.strip() for x in v.split(" ")]
return v
return self._get_value_or_list_attr("borderStyle", " ")

@border_style.setter
@beartype
def border_style(self, value: BorderStyle):
if isinstance(value, List):
value = " ".join(value)
self._set_attr("borderStyle", value)
self._set_value_or_list_attr("borderStyle", value, " ")

# border_width
@property
def border_width(self):
return self._get_attr("borderWidth")
return self._get_value_or_list_attr("borderWidth", " ")

@border_width.setter
def border_width(self, value):
self._set_attr("borderWidth", value)
@beartype
def border_width(self, value: BorderWidth):
self._set_value_or_list_attr("borderWidth", value, " ")

# border_color
@property
def border_color(self):
return self._get_attr("borderColor")
return self._get_value_or_list_attr("borderColor", " ")

@border_color.setter
def border_color(self, value):
self._set_attr("borderColor", value)
@beartype
def border_color(self, value: BorderColor):
self._set_value_or_list_attr("borderColor", value, " ")

# border_radius
@property
def border_radius(self):
return self._get_attr("borderRadius")
return self._get_value_or_list_attr("borderRadius", " ")

@border_radius.setter
def border_radius(self, value):
self._set_attr("borderRadius", value)
@beartype
def border_radius(self, value: BorderRadius):
self._set_value_or_list_attr("borderRadius", value, " ")

# title
@property
Expand Down
38 changes: 18 additions & 20 deletions pglet/image.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from beartype import beartype

from pglet.control import BorderStyle, Control
from pglet.control import BorderColor, BorderRadius, BorderStyle, BorderWidth, Control

try:
from typing import Literal
Expand All @@ -25,9 +25,9 @@ def __init__(
maximize_frame=None,
fit: Fit = None,
border_style: BorderStyle = None,
border_width=None,
border_color=None,
border_radius=None,
border_width: BorderWidth = None,
border_color: BorderColor = None,
border_radius: BorderRadius = None,
width=None,
height=None,
padding=None,
Expand Down Expand Up @@ -110,41 +110,39 @@ def fit(self, value: Fit):
# border_style
@property
def border_style(self):
v = self._get_attr("borderStyle")
if v:
return [x.strip() for x in v.split(" ")]
return v
return self._get_value_or_list_attr("borderStyle", " ")

@border_style.setter
@beartype
def border_style(self, value: BorderStyle):
if isinstance(value, List):
value = " ".join(value)
self._set_attr("borderStyle", value)
self._set_value_or_list_attr("borderStyle", value, " ")

# border_width
@property
def border_width(self):
return self._get_attr("borderWidth")
return self._get_value_or_list_attr("borderWidth", " ")

@border_width.setter
def border_width(self, value):
self._set_attr("borderWidth", value)
@beartype
def border_width(self, value: BorderWidth):
self._set_value_or_list_attr("borderWidth", value, " ")

# border_color
@property
def border_color(self):
return self._get_attr("borderColor")
return self._get_value_or_list_attr("borderColor", " ")

@border_color.setter
def border_color(self, value):
self._set_attr("borderColor", value)
@beartype
def border_color(self, value: BorderColor):
self._set_value_or_list_attr("borderColor", value, " ")

# border_radius
@property
def border_radius(self):
return self._get_attr("borderRadius")
return self._get_value_or_list_attr("borderRadius", " ")

@border_radius.setter
def border_radius(self, value):
self._set_attr("borderRadius", value)
@beartype
def border_radius(self, value: BorderRadius):
self._set_value_or_list_attr("borderRadius", value, " ")
38 changes: 18 additions & 20 deletions pglet/stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from beartype import beartype

from pglet.control import BorderStyle, Control
from pglet.control import BorderColor, BorderRadius, BorderStyle, BorderWidth, Control

try:
from typing import Literal
Expand Down Expand Up @@ -40,9 +40,9 @@ def __init__(
wrap=None,
bgcolor=None,
border_style: BorderStyle = None,
border_width=None,
border_color=None,
border_radius=None,
border_width: BorderWidth = None,
border_color: BorderColor = None,
border_radius: BorderRadius = None,
scroll_x=None,
scroll_y=None,
auto_scroll=None,
Expand Down Expand Up @@ -215,44 +215,42 @@ def bgcolor(self, value):
# border_style
@property
def border_style(self):
v = self._get_attr("borderStyle")
if v:
return [x.strip() for x in v.split(" ")]
return v
return self._get_value_or_list_attr("borderStyle", " ")

@border_style.setter
@beartype
def border_style(self, value: BorderStyle):
if isinstance(value, List):
value = " ".join(value)
self._set_attr("borderStyle", value)
self._set_value_or_list_attr("borderStyle", value, " ")

# border_width
@property
def border_width(self):
return self._get_attr("borderWidth")
return self._get_value_or_list_attr("borderWidth", " ")

@border_width.setter
def border_width(self, value):
self._set_attr("borderWidth", value)
@beartype
def border_width(self, value: BorderWidth):
self._set_value_or_list_attr("borderWidth", value, " ")

# border_color
@property
def border_color(self):
return self._get_attr("borderColor")
return self._get_value_or_list_attr("borderColor", " ")

@border_color.setter
def border_color(self, value):
self._set_attr("borderColor", value)
@beartype
def border_color(self, value: BorderColor):
self._set_value_or_list_attr("borderColor", value, " ")

# border_radius
@property
def border_radius(self):
return self._get_attr("borderRadius")
return self._get_value_or_list_attr("borderRadius", " ")

@border_radius.setter
def border_radius(self, value):
self._set_attr("borderRadius", value)
@beartype
def border_radius(self, value: BorderRadius):
self._set_value_or_list_attr("borderRadius", value, " ")

# scroll_x
@property
Expand Down
Loading