BlurMe/blurme/pages/settings.py

74 lines
3.5 KiB
Python
Raw Normal View History

"""The settings page."""
2023-12-12 21:27:48 +01:00
import asyncio
from blurme.templates import template
2023-12-12 21:27:48 +01:00
from blurme.state import State
import reflex as rx
2023-12-12 21:27:48 +01:00
color = "rgb(107,99,246)"
2023-11-22 15:54:26 +01:00
@template(route="/settings", title="Zdjęcie", image = "/image-icon.png")
def settings() -> rx.Component:
2024-01-10 14:16:32 +01:00
icon_style = {"width": "20px", "height": "30px", "margin-right": "10px"}
2024-01-09 02:15:41 +01:00
2023-12-19 13:39:26 +01:00
return rx.vstack(
2024-01-10 14:16:32 +01:00
rx.wrap(
rx.hstack(
rx.vstack(
rx.image(src="/brush-logo.png",height="5.2em", margin_bottom="15px"),
rx.heading("Anonimizuj już teraz!", font_size="2em", margin_bottom="15px", background_image="linear-gradient(271.68deg, #7566fe 0.75%, #f96caf 88.52%)", background_clip="text", padding = "5px"),
rx.text("Dodaj zdjęcie, wybierz obszar i ukryj tożsamość: Anonimizacja zdjęć w mgnieniu oka szybko, łatwo, bezpłatnie!", font_size="1.2em", text_align = "center"), width = "50%", margin_left = "50px"),
rx.vstack(rx.upload(
rx.vstack(rx.image(src="/upload-icon.png",height="5em"),
rx.text("Przeciągnij, aby wybrać pliki", font_size = "1em"),
rx.text("albo", font_size = "0.8em"),
rx.button("Kliknij", font_size = "1em", color="rgba(117,102,254,255)"),
rx.text(" "),
rx.text("Dostępne rozszerzenia plików: png, jpg, webp, tiff", font_size = "0.8em"),),
2023-12-12 21:27:48 +01:00
border=f"1px dotted {color}",
2024-01-10 14:16:32 +01:00
padding="1em",
width = "90%",
2024-01-08 18:59:34 +01:00
multiple=True,
accept={
"image/png": [".png"],
"image/jpeg": [".jpg", ".jpeg"],
"image/webp": [".webp"],
"image/tiff": [".tif", ".tiff"], },
max_files=5,
2024-01-10 14:16:32 +01:00
margin_top = "15px",
2024-01-08 18:59:34 +01:00
),
2023-12-12 21:27:48 +01:00
rx.hstack(rx.foreach(rx.selected_files, rx.text)),
2023-12-19 13:39:26 +01:00
rx.button( "Załaduj zdjęcie",
2023-12-12 21:27:48 +01:00
on_click=lambda: State.handle_upload(
2024-01-10 14:16:32 +01:00
rx.upload_files()),color = "rgba(47, 187, 74,255)"),width = "60%", margin_left = "50px"),), margin_bottom = "25px", style={"align-self": "center", "align-items": "flex-start"}, spacing="2em"),
2024-01-08 18:59:34 +01:00
rx.responsive_grid(
rx.foreach(
State.img,
lambda img: rx.vstack(
2024-01-10 14:16:32 +01:00
rx.image(src=f'/{img}', max_height = "450px"),
rx.text(img, font_size="15px" ),
2024-01-08 22:08:23 +01:00
2024-01-08 18:59:34 +01:00
2024-01-10 14:16:32 +01:00
rx.hstack(rx.button(rx.icon(tag="delete", margin_right = "8px"), " Usuń",
2024-01-08 22:08:23 +01:00
on_click=lambda img_name=img: State.delete_image(img_name), color="rgba(255, 75, 42,255)",
2024-01-10 14:16:32 +01:00
width = "100px"),
2024-01-15 21:25:58 +01:00
rx.button(rx.icon(tag="edit", margin_right="8px"), " Analizuj",
on_click=lambda img_name=img: State.image_analysis(img_name),
width="130px"),
2024-01-10 14:16:32 +01:00
rx.button(rx.icon(tag="edit", margin_right = "8px"), " Anonimizuj",
2024-01-09 02:15:41 +01:00
on_click=lambda img_name=img: State.image_anonymization(img_name),
2024-01-10 14:16:32 +01:00
width = "130px"),
rx.button(rx.icon(tag="download", margin_right = "8px"), " Pobierz",
2023-12-19 16:13:56 +01:00
on_click=lambda img_name=img: State.download_image(img_name),
2024-01-10 14:16:32 +01:00
width = "100px"),
2023-12-19 13:39:26 +01:00
padding="1em"
),
2024-01-08 18:59:34 +01:00
),
2024-01-10 14:16:32 +01:00
),columns=[1],
2024-01-08 18:59:34 +01:00
spacing="5px",
),)