Add images
This commit is contained in:
parent
5a4760b272
commit
6fa574c921
|
@ -34,6 +34,10 @@ impl FileTab {
|
|||
main_window.set_file_tab_enable(true);
|
||||
}
|
||||
|
||||
pub fn get_file_name(&self) -> String {
|
||||
self.main_window.borrow().get_file_tab_image_name().to_string()
|
||||
}
|
||||
|
||||
pub fn on_browse_file(&self, gui_elements: GUIElementsRef, mut function: impl FnMut(&mut GUIElements, &MainWindow) + 'static) {
|
||||
let main_window_cloned = self.main_window.clone();
|
||||
let gui_cloned = gui_elements.clone();
|
||||
|
|
|
@ -22,7 +22,7 @@ impl MainTab {
|
|||
MainTab{main_window, vram_file_list, vram_image_list}
|
||||
}
|
||||
|
||||
pub fn _add_new_vram_file(&mut self, file_name: String, image: slint::Image) {
|
||||
pub fn add_new_vram_file(&mut self, file_name: &String, image: slint::Image) {
|
||||
let vram_image = VRAMImage{
|
||||
img: image,
|
||||
x: 0,
|
||||
|
|
|
@ -1,12 +1,45 @@
|
|||
pub mod tim;
|
||||
use slint::Image;
|
||||
use tim::TIMInfo;
|
||||
|
||||
pub struct Logic {
|
||||
pub unadded_tim: TIMInfo,
|
||||
unadded_tim: UnaddedTIM,
|
||||
}
|
||||
|
||||
impl Logic {
|
||||
pub fn new() -> Logic {
|
||||
Logic{unadded_tim: TIMInfo{}}
|
||||
Logic{unadded_tim: UnaddedTIM::empty()}
|
||||
}
|
||||
|
||||
pub fn set_unadded_tim(&mut self, info: TIMInfo, image: Image) {
|
||||
self.unadded_tim = UnaddedTIM::new(info, image);
|
||||
}
|
||||
|
||||
pub fn add_unadded_tim_as(&mut self, _name: &String) -> Image {
|
||||
let _info = self.unadded_tim.take_info();
|
||||
self.unadded_tim.take_image()
|
||||
}
|
||||
}
|
||||
|
||||
struct UnaddedTIM {
|
||||
info: TIMInfo,
|
||||
image: Image,
|
||||
}
|
||||
|
||||
impl UnaddedTIM {
|
||||
pub fn new(info: TIMInfo, image: Image) -> UnaddedTIM {
|
||||
UnaddedTIM{info, image}
|
||||
}
|
||||
|
||||
pub fn take_info(&mut self) -> TIMInfo {
|
||||
std::mem::take(&mut self.info)
|
||||
}
|
||||
|
||||
pub fn take_image(&mut self) -> Image {
|
||||
std::mem::take(&mut self.image)
|
||||
}
|
||||
|
||||
fn empty() -> UnaddedTIM {
|
||||
UnaddedTIM{info: TIMInfo{}, image: Image::default()}
|
||||
}
|
||||
}
|
|
@ -3,6 +3,12 @@ use tool_helper::Error;
|
|||
|
||||
pub struct TIMInfo {}
|
||||
|
||||
impl std::default::Default for TIMInfo {
|
||||
fn default() -> Self {
|
||||
TIMInfo{}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn load_image(path: PathBuf) -> Result<(slint::Image, TIMInfo), Error> {
|
||||
Ok((slint::Image::load_from_path(&path).or_else(|_| {Err(Error::from_str("Failed loading image"))})?, TIMInfo{}))
|
||||
}
|
|
@ -40,6 +40,7 @@ fn setup_main_tab(gui_elements_ref: Rc<RefCell<GUIElements>>) {
|
|||
fn setup_file_tab(gui_elements_ref: Rc<RefCell<GUIElements>>, logic_ref: Rc<RefCell<Logic>>) {
|
||||
let gui_elements = gui_elements_ref.borrow();
|
||||
|
||||
let logic = logic_ref.clone();
|
||||
gui_elements.file_tab.on_browse_file(gui_elements_ref.clone(), move |gui_elements, main_window| {
|
||||
fn show_error_message(text: String) {
|
||||
MessageDialog::new().set_title("Loading Image failed").set_level(rfd::MessageLevel::Error).set_description(text).show();
|
||||
|
@ -74,15 +75,20 @@ fn setup_file_tab(gui_elements_ref: Rc<RefCell<GUIElements>>, logic_ref: Rc<RefC
|
|||
return;
|
||||
}
|
||||
|
||||
logic_ref.borrow_mut().unadded_tim = info;
|
||||
logic.borrow_mut().set_unadded_tim(info, image.clone());
|
||||
file_tab.update_new_load(file_name, image);
|
||||
|
||||
//main_window.invoke_change_to_main();
|
||||
}
|
||||
});
|
||||
|
||||
gui_elements.file_tab.on_add_image(gui_elements_ref.clone(), move |gui_elements, _main_window| {
|
||||
let logic = logic_ref.clone();
|
||||
gui_elements.file_tab.on_add_image(gui_elements_ref.clone(), move |gui_elements, main_window| {
|
||||
let main_tab = &mut gui_elements.main_tab;
|
||||
let file_tab = &gui_elements.file_tab;
|
||||
|
||||
let file_name = file_tab.get_file_name();
|
||||
main_tab.add_new_vram_file(&file_name, logic.borrow_mut().add_unadded_tim_as(&file_name));
|
||||
|
||||
file_tab.clear_load();
|
||||
main_window.invoke_change_to_main();
|
||||
});
|
||||
}
|
Loading…
Reference in New Issue