-
Notifications
You must be signed in to change notification settings - Fork 181
/
Copy pathwidgets.py
95 lines (79 loc) · 2.51 KB
/
widgets.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
from textual.widget import Widget
from textual.widgets import Input, Label, Select
class LabelledInput(Widget):
DEFAULT_CSS = """
LabelledInput {
height: 4;
margin-bottom: 1;
}
LabelledInput Label {
padding-left: 1;
}
"""
label_widget: Label
input_widget: Input
def set_input_value(self, value):
self.input_widget.value = value
def get_input_value(self):
return self.input_widget.value
def __init__(self,
label,
*,
placeholder="",
value="",
name=None,
id=None,
classes=None,
disabled=False):
super().__init__(name=name, id=id, classes=classes, disabled=disabled)
self.__label = label
self.__placeholder = placeholder
self.__init_value = value
def compose(self):
self.label_widget = Label(f"{self.__label}:")
self.input_widget = Input(placeholder=self.__placeholder, value=self.__init_value)
yield self.label_widget
yield self.input_widget
class LabelledSelect(Widget):
DEFAULT_CSS = """
LabelledSelect {
height: 4;
margin-bottom: 1;
}
LabelledSelect Label {
padding-left: 1;
}
"""
label_widget: Label
select_widget: Select
def set_select_options(self, options):
self.__options = options
self.select_widget.options = options
def get_select_options(self):
return self.__options
def set_select_value(self, value):
self.select_widget.value = value
def get_select_value(self):
return self.select_widget.value
def __init__(self,
label,
options,
*,
prompt="Select",
allow_blank=True,
value=Select.BLANK,
name=None,
id=None,
classes=None,
disabled=False):
super().__init__(name=name, id=id, classes=classes, disabled=disabled)
self.__label = label
self.__options = options
self.__init_value = value
self.__prompt = prompt
self.__allow_blank = allow_blank
def compose(self):
self.label_widget = Label(f"{self.__label}:")
self.select_widget = Select(options=self.__options, value=self.__init_value, prompt=self.__prompt, allow_blank=self.__allow_blank)
yield self.label_widget
yield self.select_widget