Add images

This commit is contained in:
Jaby 2025-02-15 14:38:25 +01:00
parent 5a4760b272
commit 6fa574c921
5 changed files with 56 additions and 7 deletions

View File

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

View File

@ -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,

View File

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

View File

@ -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{}))
}

View File

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