mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-20 20:01:31 -06:00

* Add fuzzy search box to Launcher. * move func bind to the kv and prefer substring matching (#79) * move the func bind to the kv * prefer substr matching * Remove fuzzy results, rely on substring only. * Use early return instead of else. * Add type hint to filter_clients_by_type. * Activate search on keyboard input. * Clear search box when filtering by type. * Update Launcher.py Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> --------- Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com> Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
162 lines
4.6 KiB
Plaintext
162 lines
4.6 KiB
Plaintext
<LauncherCard>:
|
|
id: main
|
|
style: "filled"
|
|
padding: "4dp"
|
|
size_hint: 1, None
|
|
height: "75dp"
|
|
context_button: context
|
|
focus_behavior: False
|
|
|
|
MDRelativeLayout:
|
|
ApAsyncImage:
|
|
source: main.image
|
|
size: (48, 48)
|
|
size_hint: None, None
|
|
pos_hint: {"center_x": 0.1, "center_y": 0.5}
|
|
|
|
MDLabel:
|
|
text: main.component.display_name
|
|
pos_hint:{"center_x": 0.5, "center_y": 0.75 if main.component.description else 0.65}
|
|
halign: "center"
|
|
font_style: "Title"
|
|
role: "medium"
|
|
theme_text_color: "Custom"
|
|
text_color: app.theme_cls.primaryColor
|
|
|
|
MDLabel:
|
|
text: main.component.description
|
|
pos_hint: {"center_x": 0.5, "center_y": 0.35}
|
|
halign: "center"
|
|
role: "small"
|
|
theme_text_color: "Custom"
|
|
text_color: app.theme_cls.primaryColor
|
|
|
|
MDIconButton:
|
|
component: main.component
|
|
icon: "star" if self.component.display_name in app.favorites else "star-outline"
|
|
style: "standard"
|
|
pos_hint:{"center_x": 0.85, "center_y": 0.8}
|
|
theme_text_color: "Custom"
|
|
text_color: app.theme_cls.primaryColor
|
|
detect_visible: False
|
|
on_release: app.set_favorite(self)
|
|
|
|
MDIconButton:
|
|
id: context
|
|
icon: "menu"
|
|
style: "standard"
|
|
pos_hint:{"center_x": 0.95, "center_y": 0.8}
|
|
theme_text_color: "Custom"
|
|
text_color: app.theme_cls.primaryColor
|
|
detect_visible: False
|
|
|
|
MDButton:
|
|
pos_hint:{"center_x": 0.9, "center_y": 0.25}
|
|
size_hint_y: None
|
|
height: "25dp"
|
|
component: main.component
|
|
on_release: app.component_action(self)
|
|
detect_visible: False
|
|
MDButtonText:
|
|
text: "Open"
|
|
|
|
|
|
#:import Type worlds.LauncherComponents.Type
|
|
MDFloatLayout:
|
|
id: top_screen
|
|
|
|
MDGridLayout:
|
|
id: grid
|
|
cols: 2
|
|
spacing: "5dp"
|
|
padding: "10dp"
|
|
|
|
MDGridLayout:
|
|
id: navigation
|
|
cols: 1
|
|
size_hint_x: 0.25
|
|
|
|
MDButton:
|
|
id: all
|
|
style: "text"
|
|
type: (Type.CLIENT, Type.TOOL, Type.ADJUSTER, Type.MISC)
|
|
on_release: app.filter_clients_by_type(self)
|
|
|
|
MDButtonIcon:
|
|
icon: "asterisk"
|
|
MDButtonText:
|
|
text: "All"
|
|
MDButton:
|
|
id: client
|
|
style: "text"
|
|
type: (Type.CLIENT, )
|
|
on_release: app.filter_clients_by_type(self)
|
|
|
|
MDButtonIcon:
|
|
icon: "controller"
|
|
MDButtonText:
|
|
text: "Client"
|
|
MDButton:
|
|
id: Tool
|
|
style: "text"
|
|
type: (Type.TOOL, )
|
|
on_release: app.filter_clients_by_type(self)
|
|
|
|
MDButtonIcon:
|
|
icon: "desktop-classic"
|
|
MDButtonText:
|
|
text: "Tool"
|
|
MDButton:
|
|
id: adjuster
|
|
style: "text"
|
|
type: (Type.ADJUSTER, )
|
|
on_release: app.filter_clients_by_type(self)
|
|
|
|
MDButtonIcon:
|
|
icon: "wrench"
|
|
MDButtonText:
|
|
text: "Adjuster"
|
|
MDButton:
|
|
id: misc
|
|
style: "text"
|
|
type: (Type.MISC, )
|
|
on_release: app.filter_clients_by_type(self)
|
|
|
|
MDButtonIcon:
|
|
icon: "dots-horizontal-circle-outline"
|
|
MDButtonText:
|
|
text: "Misc"
|
|
|
|
MDButton:
|
|
id: favorites
|
|
style: "text"
|
|
type: ("favorites", )
|
|
on_release: app.filter_clients_by_type(self)
|
|
|
|
MDButtonIcon:
|
|
icon: "star"
|
|
MDButtonText:
|
|
text: "Favorites"
|
|
|
|
MDNavigationDrawerDivider:
|
|
|
|
|
|
MDGridLayout:
|
|
id: main_layout
|
|
cols: 1
|
|
spacing: "10dp"
|
|
|
|
MDTextField:
|
|
id: search_box
|
|
mode: "outlined"
|
|
set_text: app.filter_clients_by_name
|
|
|
|
MDTextFieldLeadingIcon:
|
|
icon: "magnify"
|
|
|
|
MDTextFieldHintText:
|
|
text: "Search"
|
|
|
|
ScrollBox:
|
|
id: button_layout
|