2023-11-17 14:22:28 +01:00
""" The settings page. """
2023-12-12 21:27:48 +01:00
import asyncio
2023-11-17 14:22:28 +01:00
from blurme . templates import template
2023-12-12 21:27:48 +01:00
from blurme . state import State
2023-11-17 14:22:28 +01:00
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 " )
2023-11-17 14:22:28 +01:00
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 " ) ,
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 " ,
) , )