 f857933748
			
		
	
	f857933748
	
	
	
		
			
			* 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
 |