add edit step + do recipe in main view, added carousel for recipe selection
This commit is contained in:
47
frontend/views/list_select/item.py
Normal file
47
frontend/views/list_select/item.py
Normal file
@@ -0,0 +1,47 @@
|
||||
from typing import Callable, Tuple
|
||||
|
||||
from PIL import ImageDraw
|
||||
|
||||
|
||||
RenderFn = Callable[[ImageDraw.ImageDraw, Tuple[int, int], str], None]
|
||||
|
||||
|
||||
class ListItem:
|
||||
"""A renderable item for use in ListView or CarouselView.
|
||||
|
||||
Each item carries a render function called as render_fn(draw, (x, y), fill).
|
||||
An optional render_large_fn is used by CarouselView for a more prominent
|
||||
display; it falls back to render_fn when not provided.
|
||||
"""
|
||||
|
||||
def __init__(self,
|
||||
render_fn: RenderFn,
|
||||
render_large_fn: RenderFn | None = None):
|
||||
self._render_fn = render_fn
|
||||
self._render_large_fn = render_large_fn
|
||||
|
||||
def render(self,
|
||||
draw: ImageDraw.ImageDraw,
|
||||
position: Tuple[int, int],
|
||||
fill: str = 'black',
|
||||
**kwargs):
|
||||
"""Render the item at normal (list) size.
|
||||
|
||||
Extra keyword arguments (e.g. ``font_size``) are forwarded to the
|
||||
underlying render function.
|
||||
"""
|
||||
self._render_fn(draw, position, fill, **kwargs)
|
||||
|
||||
def render_large(self,
|
||||
draw: ImageDraw.ImageDraw,
|
||||
position: Tuple[int, int],
|
||||
fill: str = 'black',
|
||||
**kwargs):
|
||||
"""Render the item at large (carousel) size.
|
||||
|
||||
Uses render_large_fn if provided, otherwise falls back to render_fn.
|
||||
Extra keyword arguments (e.g. ``font_size``) are forwarded to the
|
||||
underlying render function.
|
||||
"""
|
||||
fn = self._render_large_fn or self._render_fn
|
||||
fn(draw, position, fill, **kwargs)
|
||||
Reference in New Issue
Block a user