Added support for cancel button in crop window

This commit is contained in:
Piyush मिश्रः 2022-01-27 15:04:25 +05:30
parent 93c085fffd
commit e8cc6965f0
1 changed files with 26 additions and 5 deletions

View File

@ -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();
}); });
} }
} }