feat: display errors

This commit is contained in:
electria 2026-08-04 16:49:09 -07:00
commit 29a9ce5d75
Signed by: electria
SSH key fingerprint: SHA256:8LlB3ucPbBHqozqkhsNbaV5oG3SlzzqUj8FZDL6IPQs

View file

@ -1,6 +1,6 @@
use std::{borrow::Cow, collections::HashMap, env, path::PathBuf, process};
use iced::{Color, Element, Renderer, Task, Theme, application, theme, widget};
use iced::{Color, Element, Length, Renderer, Task, Theme, application, theme, widget};
use ignore::{WalkBuilder, types::TypesBuilder};
use rayon::iter::{ParallelBridge, ParallelIterator};
@ -76,22 +76,35 @@ impl State {
Task::none()
}
fn view(&self) -> Element<'_, Message, Theme, Renderer> {
widget::scrollable(
widget::grid(self.images.iter().map(|(path, opt_handle)| {
widget::mouse_area(
widget::sensor(opt_handle.as_ref().map_or_else(
|| Element::from(widget::space()),
|handle| widget::image(handle).into(),
))
.on_show(|_size| Message::LoadImage(path.clone()))
.on_hide(Message::UnloadImage(path.clone())),
widget::column([
widget::scrollable(widget::grid(self.images.iter().map(
|(path, opt_handle)| {
widget::button(
widget::container(
widget::sensor(opt_handle.as_ref().map_or_else(
|| Element::from(widget::space()),
|handle| widget::image(handle).into(),
))
.on_show(|_size| Message::LoadImage(path.clone()))
.on_hide(Message::UnloadImage(path.clone())),
)
.center(Length::Fill),
)
.style(widget::button::subtle)
.on_press(Message::OpenImage(path.clone()))
.into()
},
)))
.height(Length::Fill)
.into(),
self.error
.as_ref()
.map_or_else(
|| Element::from(widget::space()),
|error| widget::text(error).style(widget::text::danger).into(),
)
.on_press(Message::OpenImage(path.clone()))
.into()
}))
.fluid(500)
.spacing(0),
)
.into(),
])
.into()
}
}