From 6fa574c921ee195b66a17455c0cebd5a6c94d582 Mon Sep 17 00:00:00 2001 From: Jaby Date: Sat, 15 Feb 2025 14:38:25 +0100 Subject: [PATCH] Add images --- src/Tools/tim_tool/src/gui/file_tab.rs | 4 +++ src/Tools/tim_tool/src/gui/main_tab.rs | 2 +- src/Tools/tim_tool/src/logic/mod.rs | 37 ++++++++++++++++++++++++-- src/Tools/tim_tool/src/logic/tim.rs | 6 +++++ src/Tools/tim_tool/src/main.rs | 14 +++++++--- 5 files changed, 56 insertions(+), 7 deletions(-) diff --git a/src/Tools/tim_tool/src/gui/file_tab.rs b/src/Tools/tim_tool/src/gui/file_tab.rs index fa889cbf..32c09761 100644 --- a/src/Tools/tim_tool/src/gui/file_tab.rs +++ b/src/Tools/tim_tool/src/gui/file_tab.rs @@ -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(); diff --git a/src/Tools/tim_tool/src/gui/main_tab.rs b/src/Tools/tim_tool/src/gui/main_tab.rs index e0fa5b4b..86980bee 100644 --- a/src/Tools/tim_tool/src/gui/main_tab.rs +++ b/src/Tools/tim_tool/src/gui/main_tab.rs @@ -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, diff --git a/src/Tools/tim_tool/src/logic/mod.rs b/src/Tools/tim_tool/src/logic/mod.rs index 76929b11..d7acaf11 100644 --- a/src/Tools/tim_tool/src/logic/mod.rs +++ b/src/Tools/tim_tool/src/logic/mod.rs @@ -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()} } } \ No newline at end of file diff --git a/src/Tools/tim_tool/src/logic/tim.rs b/src/Tools/tim_tool/src/logic/tim.rs index 735bb81e..e92945d5 100644 --- a/src/Tools/tim_tool/src/logic/tim.rs +++ b/src/Tools/tim_tool/src/logic/tim.rs @@ -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{})) } \ No newline at end of file diff --git a/src/Tools/tim_tool/src/main.rs b/src/Tools/tim_tool/src/main.rs index 3f497eb6..60479f3b 100644 --- a/src/Tools/tim_tool/src/main.rs +++ b/src/Tools/tim_tool/src/main.rs @@ -40,6 +40,7 @@ fn setup_main_tab(gui_elements_ref: Rc>) { fn setup_file_tab(gui_elements_ref: Rc>, logic_ref: Rc>) { 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>, logic_ref: Rc