-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommon_app.py
119 lines (96 loc) · 3.42 KB
/
common_app.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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
from kivy.utils import hex_colormap
from kivymd.uix.menu import MDDropdownMenu
KV = """
MDScreen:
md_bg_color: self.theme_cls.backgroundColor
MDBoxLayout:
id: root_box
orientation: "vertical"
spacing: "12dp"
padding: "12dp"
MDIconButton:
on_release: app.open_menu(self)
icon: "menu"
ScrollView:
MDBoxLayout:
orientation: "vertical"
padding: "32dp", 0, "32dp", "32dp"
spacing: "24dp"
adaptive_height: True
MDLabel:
adaptive_height: True
text: "Standard widget"
MDBoxLayout:
id: widget_box
adaptive_height: True
spacing: "24dp"
Widget:
size_hint_y: None
height: "12dp"
MDLabel:
adaptive_height: True
text: "Custom widget"
MDBoxLayout:
id: custom_widget_box
adaptive_height: True
spacing: "24dp"
"""
class CommonApp:
menu: MDDropdownMenu = None
def open_menu(self, menu_button):
menu_items = []
for item, method in {
"Set palette": lambda: self.set_palette(),
"Switch theme style": lambda: self.theme_cls.switch_theme(),
"Disabled widgets": lambda: self.disabled_widgets(),
}.items():
menu_items.append(
{
"text": item,
"on_release": method,
}
)
self.menu = MDDropdownMenu(
caller=menu_button,
items=menu_items,
)
self.menu.open()
def switch_palette(self, selected_palette):
self.theme_cls.primary_palette = selected_palette
# def switch_palette(self, selected_palette):
# self.theme_cls.primary_palette = selected_palette
def set_palette(self):
instance_from_menu = self.get_instance_from_menu("Set palette")
available_palettes = [
name_color.capitalize() for name_color in hex_colormap.keys()
]
menu_items = []
for name_palette in available_palettes:
menu_items.append(
{
"text": name_palette,
"on_release": lambda x=name_palette: self.switch_palette(x),
}
)
MDDropdownMenu(
caller=instance_from_menu,
items=menu_items,
).open()
def get_instance_from_menu(self, name_item):
index = 0
rv = self.menu.ids.md_menu
opts = rv.layout_manager.view_opts
datas = rv.data[0]
for data in rv.data:
if data["text"] == name_item:
index = rv.data.index(data)
break
instance = rv.view_adapter.get_view(
index, datas, opts[index]["viewclass"]
)
return instance
def disabled_widgets(self):
for widget in self.root.ids.widget_box.children:
widget.disabled = not widget.disabled
for widget in self.root.ids.custom_widget_box.children:
widget.disabled = not widget.disabled