Added support for cancel button in crop window
This commit is contained in:
parent
93c085fffd
commit
e8cc6965f0
|
|
@ -33,6 +33,7 @@ use std::{
|
||||||
pub(crate) struct CropWindow {
|
pub(crate) struct CropWindow {
|
||||||
pub(crate) win: Window,
|
pub(crate) win: Window,
|
||||||
apply_btn: Button,
|
apply_btn: Button,
|
||||||
|
cancel_btn: Button,
|
||||||
container: Rc<RefCell<Option<ImageContainer>>>,
|
container: Rc<RefCell<Option<ImageContainer>>>,
|
||||||
page: Page,
|
page: Page,
|
||||||
}
|
}
|
||||||
|
|
@ -70,9 +71,11 @@ impl CropWindow {
|
||||||
let top_padding_btn = Frame::default();
|
let top_padding_btn = Frame::default();
|
||||||
let mut panel_flex = Flex::default().row();
|
let mut panel_flex = Flex::default().row();
|
||||||
Frame::default();
|
Frame::default();
|
||||||
let apply_btn = Button::default().with_label("apply");
|
let apply_btn = Button::default().with_label("Apply");
|
||||||
Frame::default();
|
|
||||||
panel_flex.set_size(&apply_btn, 100);
|
panel_flex.set_size(&apply_btn, 100);
|
||||||
|
let cancel_btn = Button::default().with_label("Cancel");
|
||||||
|
panel_flex.set_size(&cancel_btn, 100);
|
||||||
|
panel_flex.set_size(&Frame::default(), 10);
|
||||||
panel_flex.end();
|
panel_flex.end();
|
||||||
let bottom_padding_btn = Frame::default();
|
let bottom_padding_btn = Frame::default();
|
||||||
|
|
||||||
|
|
@ -88,6 +91,7 @@ impl CropWindow {
|
||||||
let mut crop_win = Self {
|
let mut crop_win = Self {
|
||||||
win,
|
win,
|
||||||
apply_btn,
|
apply_btn,
|
||||||
|
cancel_btn,
|
||||||
container: Rc::new(RefCell::new(None)),
|
container: Rc::new(RefCell::new(None)),
|
||||||
page: Page {
|
page: Page {
|
||||||
image_view: img_view,
|
image_view: img_view,
|
||||||
|
|
@ -199,7 +203,11 @@ impl CropWindow {
|
||||||
|
|
||||||
let mut prop = cont.properties.write().unwrap();
|
let mut prop = cont.properties.write().unwrap();
|
||||||
|
|
||||||
let (original_x, original_y) = prop.crop_position.unwrap();
|
let (original_x, original_y) = match prop.crop_position {
|
||||||
|
Some(v) => v,
|
||||||
|
None => return true,
|
||||||
|
};
|
||||||
|
|
||||||
let (original_width, original_heigth) = prop.original_dimension;
|
let (original_width, original_heigth) = prop.original_dimension;
|
||||||
let (original_bound_width, original_bound_height) =
|
let (original_bound_width, original_bound_height) =
|
||||||
utils::croped_ratio(original_width, original_heigth);
|
utils::croped_ratio(original_width, original_heigth);
|
||||||
|
|
@ -251,9 +259,22 @@ impl CropWindow {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Window close
|
// Window close
|
||||||
let mut wind = self.win.clone();
|
let mut win = self.win.clone();
|
||||||
self.apply_btn.set_callback(move |_| {
|
self.apply_btn.set_callback(move |_| {
|
||||||
wind.do_callback();
|
win.hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
let mut win = self.win.clone();
|
||||||
|
self.cancel_btn.set_callback(move |_| {
|
||||||
|
win.do_callback();
|
||||||
|
});
|
||||||
|
|
||||||
|
let container = Rc::clone(&self.container);
|
||||||
|
self.win.set_callback(move |f| {
|
||||||
|
if let Some(cont) = &*container.borrow_mut() {
|
||||||
|
cont.properties.write().unwrap().crop_position = None;
|
||||||
|
}
|
||||||
|
f.hide();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue