示例#1
0
class Notificator(Factory.BoxLayout, Factory.StencilView):
    default_font_size = NumericProperty(16)
    color = ListProperty((1, 1, 1, 1, ))
    icon_texture_dict = DictProperty()

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.icon_texture_dict = Atlas(ATLAS_PATH).textures

    def add_notification(
            self, *,
            text,
            font_size=None,
            icon_key='',
            duration='4'):
        item = NotificatorItem(
            text=text,
            icon_texture=self.icon_texture_dict.get(icon_key),
            font_size=(
                self.default_font_size if font_size is None else font_size),
            color=self.color,
            x=self.x,
            top=self.y,
            width=self.width,)
        magnet = Magnet(
            transitions={'pos': 'linear', },
            duration=0.5,
            size_hint_y=None)
        item.bind(height=magnet.setter('height'))
        magnet.add_widget(item)
        self.add_widget(magnet)
        Clock.schedule_once(
            lambda __: fadeout_widget(magnet, duration=2),
            duration)