diff --git a/src/Tools/tim_tool/src/gui/file_tab/callbacks.rs b/src/Tools/tim_tool/src/gui/file_tab/callbacks.rs index f1d11052..16c2d63a 100644 --- a/src/Tools/tim_tool/src/gui/file_tab/callbacks.rs +++ b/src/Tools/tim_tool/src/gui/file_tab/callbacks.rs @@ -65,8 +65,12 @@ pub(super) fn on_load_project_clicked() -> impl FnMut(&mut FileTab, &MainWindow) } } -pub(super) fn on_save_project_clicked() -> impl FnMut(&mut FileTab, &MainWindow) -> Result<(), Error> + 'static { - move |_file_tab, _main_window| { +pub(super) fn on_save_project_clicked(tim_manager: MutexTIMManager) -> impl FnMut(&mut FileTab, &MainTab, &MainWindow) -> Result<(), Error> + 'static { + move |_file_tab, main_tab, _main_window| { + let _tim_info = tim_manager.lock().expect("VRAM already locked").clone_added_tims(); + let _vram_info = main_tab.clone_vram_info(); + + Err(Error::not_implemented("on_save_project_clicked")) } } diff --git a/src/Tools/tim_tool/src/gui/file_tab/mod.rs b/src/Tools/tim_tool/src/gui/file_tab/mod.rs index 21f3bb4e..1c06be47 100644 --- a/src/Tools/tim_tool/src/gui/file_tab/mod.rs +++ b/src/Tools/tim_tool/src/gui/file_tab/mod.rs @@ -65,9 +65,9 @@ impl FileTab { } }); - let (cloned_object, cloned_main_window, mut function) = (object.clone(), main_window.clone(), callbacks::on_add_image(tim_manager.clone())); + let (cloned_object, cloned_main_tab, cloned_main_window, mut function) = (object.clone(), main_tab.clone(), main_window.clone(), callbacks::on_add_image(tim_manager.clone())); main_window.borrow().on_file_tab_add_convert_image(move || { - if let Err(error) = function(&mut cloned_object.borrow_mut(), &mut main_tab.borrow_mut(), &cloned_main_window.borrow()) { + if let Err(error) = function(&mut cloned_object.borrow_mut(), &mut cloned_main_tab.borrow_mut(), &cloned_main_window.borrow()) { display_error("Adding file failed", &error.to_string()); } }); @@ -80,9 +80,9 @@ impl FileTab { } }); - let (cloned_object, cloned_main_window, mut function) = (object.clone(), main_window.clone(), callbacks::on_save_project_clicked()); + let (cloned_object, cloned_main_tab, cloned_main_window, mut function) = (object.clone(), main_tab.clone(), main_window.clone(), callbacks::on_save_project_clicked(tim_manager.clone())); main_window.borrow().on_project_widget_save_project_clicked (move || { - if let Err(error) = function(&mut cloned_object.borrow_mut(), &cloned_main_window.borrow()) { + if let Err(error) = function(&mut cloned_object.borrow_mut(), &cloned_main_tab.borrow(), &cloned_main_window.borrow()) { display_error("Saving project failed", &error.to_string()); } }); diff --git a/src/Tools/tim_tool/src/gui/main_tab/mod.rs b/src/Tools/tim_tool/src/gui/main_tab/mod.rs index 8b4c0870..a980ff97 100644 --- a/src/Tools/tim_tool/src/gui/main_tab/mod.rs +++ b/src/Tools/tim_tool/src/gui/main_tab/mod.rs @@ -155,13 +155,13 @@ impl MainTab { } } - /*pub fn _clone_vram_images(&self) -> Vec { + pub fn clone_vram_info(&self) -> Vec { let vram_data = self.vram.lock().expect("VRAM already locked"); - let mut images = Vec::new(); + let mut infos = Vec::new(); - for image in vram_data.image_list.iter() { - images.push(image.clone()); + for vram_data in vram_data.info.iter() { + infos.push(vram_data.info.clone()); } - images - }*/ + infos + } } \ No newline at end of file diff --git a/src/Tools/tim_tool/src/logic/mod.rs b/src/Tools/tim_tool/src/logic/mod.rs index e5dc964f..bdb4faae 100644 --- a/src/Tools/tim_tool/src/logic/mod.rs +++ b/src/Tools/tim_tool/src/logic/mod.rs @@ -1,3 +1,4 @@ +pub mod project; pub mod tim; pub mod tim_mgr; diff --git a/src/Tools/tim_tool/src/logic/project/mod.rs b/src/Tools/tim_tool/src/logic/project/mod.rs new file mode 100644 index 00000000..5797515e --- /dev/null +++ b/src/Tools/tim_tool/src/logic/project/mod.rs @@ -0,0 +1,22 @@ +use std::path::PathBuf; + +struct Job { + name: String, + file_path: PathBuf, +} + +impl Job { + pub fn new(name: String, file_path: PathBuf) -> Job { + Job{name, file_path} + } +} + +struct Project { + jobs: Vec +} + +impl Project { + pub fn new(jobs: Vec) -> Project { + Project{jobs} + } +} \ No newline at end of file diff --git a/src/Tools/tim_tool/src/logic/tim/mod.rs b/src/Tools/tim_tool/src/logic/tim/mod.rs index ab0f8c5b..96e4f54b 100644 --- a/src/Tools/tim_tool/src/logic/tim/mod.rs +++ b/src/Tools/tim_tool/src/logic/tim/mod.rs @@ -5,6 +5,7 @@ use slint::{Rgba8Pixel, SharedPixelBuffer}; use tool_helper::Error; use types::Encoding; +#[derive(Clone)] pub struct TIMInfo { _path: PathBuf, image_data: SharedPixelBuffer, @@ -119,6 +120,7 @@ impl TIMInfo { } } +#[derive(Clone)] struct PaletteInfo { data: Vec, width: u32, diff --git a/src/Tools/tim_tool/src/logic/tim_mgr.rs b/src/Tools/tim_tool/src/logic/tim_mgr.rs index 36d09310..63c6e994 100644 --- a/src/Tools/tim_tool/src/logic/tim_mgr.rs +++ b/src/Tools/tim_tool/src/logic/tim_mgr.rs @@ -69,4 +69,8 @@ impl TIMManager { Ok(None) } } + + pub fn clone_added_tims(&self) -> Vec> { + self.added_tims.clone() + } } \ No newline at end of file