51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
from FileHandler import read_ingredient_json, combine_ingredients, write_checklist
|
|
|
|
import flet as ft
|
|
|
|
selected_meals = {}
|
|
meal_json = read_ingredient_json()
|
|
|
|
def selector(page: ft.Page):
|
|
def update_meal_selection(event):
|
|
for meal in meal_list:
|
|
if meal.value == False:
|
|
if meal.label in selected_meals:
|
|
selected_meals.pop(meal.label)
|
|
else:
|
|
selected_meals[meal.label] = meal_json[meal.label]
|
|
if selected_meals == {}:
|
|
page.show_dialog(ft.SnackBar(ft.Text("Please select at least one meal.")))
|
|
return
|
|
|
|
write_checklist(combine_ingredients(selected_meals))
|
|
|
|
|
|
page.title = "Select Some Meals"
|
|
meal_list = []
|
|
for name, _ in meal_json.items():
|
|
meal_list.append(ft.Checkbox(
|
|
label = name,
|
|
active_color = '#6da0cd',
|
|
|
|
)
|
|
)
|
|
|
|
submit_button = ft.Button(content=ft.Text("Make Shopping List"), on_click=update_meal_selection)
|
|
|
|
page.controls[0].content = ft.Column(
|
|
controls = [
|
|
ft.ListView(
|
|
controls=meal_list,
|
|
expand=True,
|
|
spacing=10,
|
|
padding=10,
|
|
),
|
|
submit_button,
|
|
],
|
|
height = 700,
|
|
expand = False,
|
|
)
|
|
page.update()
|
|
|
|
if __name__ == "__main__":
|
|
ft.app(selector) |