mirror of
https://github.com/ComradCollective/Comrad
synced 2024-11-05 21:20:51 +00:00
96 lines
2.2 KiB
Python
96 lines
2.2 KiB
Python
from kivy.lang import Builder
|
|
from kivy.properties import StringProperty
|
|
from kivy.uix.screenmanager import Screen
|
|
|
|
from kivymd.icon_definitions import md_icons
|
|
from kivymd.app import MDApp
|
|
from kivymd.uix.list import OneLineIconListItem
|
|
|
|
|
|
Builder.load_string(
|
|
'''
|
|
#:import images_path kivymd.images_path
|
|
|
|
|
|
<CustomOneLineIconListItem>:
|
|
|
|
IconLeftWidget:
|
|
icon: root.icon
|
|
|
|
|
|
<PreviousMDIcons>:
|
|
|
|
BoxLayout:
|
|
orientation: 'vertical'
|
|
spacing: dp(10)
|
|
padding: dp(20)
|
|
|
|
BoxLayout:
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
|
|
MDIconButton:
|
|
icon: 'magnify'
|
|
|
|
MDTextField:
|
|
id: search_field
|
|
hint_text: 'Search icon'
|
|
on_text: root.set_list_md_icons(self.text, True)
|
|
|
|
RecycleView:
|
|
id: rv
|
|
key_viewclass: 'viewclass'
|
|
key_size: 'height'
|
|
|
|
RecycleBoxLayout:
|
|
padding: dp(10)
|
|
default_size: None, dp(48)
|
|
default_size_hint: 1, None
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
orientation: 'vertical'
|
|
'''
|
|
)
|
|
|
|
|
|
class CustomOneLineIconListItem(OneLineIconListItem):
|
|
icon = StringProperty()
|
|
|
|
|
|
class PreviousMDIcons(Screen):
|
|
|
|
def set_list_md_icons(self, text="", search=False):
|
|
'''Builds a list of icons for the screen MDIcons.'''
|
|
|
|
def add_icon_item(name_icon):
|
|
self.ids.rv.data.append(
|
|
{
|
|
"viewclass": "CustomOneLineIconListItem",
|
|
"icon": name_icon,
|
|
"text": name_icon,
|
|
"callback": lambda x: x,
|
|
}
|
|
)
|
|
|
|
self.ids.rv.data = []
|
|
for name_icon in md_icons.keys():
|
|
if search:
|
|
if text in name_icon:
|
|
add_icon_item(name_icon)
|
|
else:
|
|
add_icon_item(name_icon)
|
|
|
|
|
|
class MainApp(MDApp):
|
|
def __init__(self, **kwargs):
|
|
super().__init__(**kwargs)
|
|
self.screen = PreviousMDIcons()
|
|
|
|
def build(self):
|
|
return self.screen
|
|
|
|
def on_start(self):
|
|
self.screen.set_list_md_icons()
|
|
|
|
|
|
MainApp().run() |