Compare commits
1 changed files with 10 additions and 11 deletions
21
src/main.rs
21
src/main.rs
|
|
@ -88,12 +88,10 @@ impl State {
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|error| widget::text(error).style(widget::text::danger));
|
.map(|error| widget::text(error).style(widget::text::danger));
|
||||||
|
|
||||||
let info = self.infobar_shown.then_some(()).and_then(|()| {
|
let info = (self.infobar_shown && self.info.is_some()).then(|| {
|
||||||
self.info.as_ref().map(|info| {
|
widget::container(widget::text(self.title()))
|
||||||
widget::container(widget::text(info))
|
.align_x(Alignment::End)
|
||||||
.align_x(Alignment::End)
|
.width(Length::Fill)
|
||||||
.width(Length::Fill)
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
|
|
||||||
widget::column![main, widget::row![error, info]]
|
widget::column![main, widget::row![error, info]]
|
||||||
|
|
@ -114,6 +112,7 @@ impl State {
|
||||||
}
|
}
|
||||||
Message::SavePathPicked(result) => {
|
Message::SavePathPicked(result) => {
|
||||||
self.error = result
|
self.error = result
|
||||||
|
.map_err(Cow::from)
|
||||||
.and_then(|path| {
|
.and_then(|path| {
|
||||||
self.image.as_ref().map_or_else(
|
self.image.as_ref().map_or_else(
|
||||||
|| Err("no image to save".into()),
|
|| Err("no image to save".into()),
|
||||||
|
|
@ -168,7 +167,7 @@ impl State {
|
||||||
|
|
||||||
Message::Yank => {
|
Message::Yank => {
|
||||||
if let Some(image) = self.image.as_ref() {
|
if let Some(image) = self.image.as_ref() {
|
||||||
return clipboard::write(utils::clipboard_image_from_rgbaimage(image))
|
return clipboard::write(utils::clipboard_image_from_rgbaimage(&image))
|
||||||
.map(Message::ImageYanked);
|
.map(Message::ImageYanked);
|
||||||
} else {
|
} else {
|
||||||
self.error = Some("no image to yank".into());
|
self.error = Some("no image to yank".into());
|
||||||
|
|
@ -183,7 +182,7 @@ impl State {
|
||||||
self.error = result.as_ref().err().map(|e| format!("{e:?}").into());
|
self.error = result.as_ref().err().map(|e| format!("{e:?}").into());
|
||||||
|
|
||||||
if let Ok(image) = result {
|
if let Ok(image) = result {
|
||||||
self.info = Some(format!("{}x{}", image.size.width, image.size.height));
|
self.info = Some(format!("{}x{}", image.size.width, image.size.height,));
|
||||||
if (image.size.width, image.size.height) < (100, 100) {
|
if (image.size.width, image.size.height) < (100, 100) {
|
||||||
self.image_filter = widget::image::FilterMethod::Nearest;
|
self.image_filter = widget::image::FilterMethod::Nearest;
|
||||||
}
|
}
|
||||||
|
|
@ -221,7 +220,7 @@ impl State {
|
||||||
image.width(),
|
image.width(),
|
||||||
image.height(),
|
image.height(),
|
||||||
));
|
));
|
||||||
if image.dimensions() < (192, 192) {
|
if image.dimensions() < (100, 100) {
|
||||||
self.image_filter = widget::image::FilterMethod::Nearest;
|
self.image_filter = widget::image::FilterMethod::Nearest;
|
||||||
}
|
}
|
||||||
self.image = Some(image);
|
self.image = Some(image);
|
||||||
|
|
@ -273,8 +272,8 @@ impl State {
|
||||||
Key::Character("s") => Some(Message::Save),
|
Key::Character("s") => Some(Message::Save),
|
||||||
Key::Character("q") => Some(Message::Quit),
|
Key::Character("q") => Some(Message::Quit),
|
||||||
|
|
||||||
Key::Character("y" | "c") => Some(Message::Yank),
|
Key::Character("y") | Key::Character("c") => Some(Message::Yank),
|
||||||
Key::Character("p" | "v") => Some(Message::Put),
|
Key::Character("p") | Key::Character("v") => Some(Message::Put),
|
||||||
|
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue