Add images
This commit is contained in:
parent
5a4760b272
commit
6fa574c921
|
@ -34,6 +34,10 @@ impl FileTab {
|
||||||
main_window.set_file_tab_enable(true);
|
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) {
|
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 main_window_cloned = self.main_window.clone();
|
||||||
let gui_cloned = gui_elements.clone();
|
let gui_cloned = gui_elements.clone();
|
||||||
|
|
|
@ -22,7 +22,7 @@ impl MainTab {
|
||||||
MainTab{main_window, vram_file_list, vram_image_list}
|
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{
|
let vram_image = VRAMImage{
|
||||||
img: image,
|
img: image,
|
||||||
x: 0,
|
x: 0,
|
||||||
|
|
|
@ -1,12 +1,45 @@
|
||||||
pub mod tim;
|
pub mod tim;
|
||||||
|
use slint::Image;
|
||||||
use tim::TIMInfo;
|
use tim::TIMInfo;
|
||||||
|
|
||||||
pub struct Logic {
|
pub struct Logic {
|
||||||
pub unadded_tim: TIMInfo,
|
unadded_tim: UnaddedTIM,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Logic {
|
impl Logic {
|
||||||
pub fn new() -> 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 {}
|
pub struct TIMInfo {}
|
||||||
|
|
||||||
|
impl std::default::Default for TIMInfo {
|
||||||
|
fn default() -> Self {
|
||||||
|
TIMInfo{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn load_image(path: PathBuf) -> Result<(slint::Image, TIMInfo), Error> {
|
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{}))
|
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>>) {
|
fn setup_file_tab(gui_elements_ref: Rc<RefCell<GUIElements>>, logic_ref: Rc<RefCell<Logic>>) {
|
||||||
let gui_elements = gui_elements_ref.borrow();
|
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| {
|
gui_elements.file_tab.on_browse_file(gui_elements_ref.clone(), move |gui_elements, main_window| {
|
||||||
fn show_error_message(text: String) {
|
fn show_error_message(text: String) {
|
||||||
MessageDialog::new().set_title("Loading Image failed").set_level(rfd::MessageLevel::Error).set_description(text).show();
|
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;
|
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);
|
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_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();
|
file_tab.clear_load();
|
||||||
|
main_window.invoke_change_to_main();
|
||||||
});
|
});
|
||||||
}
|
}
|
Loading…
Reference in New Issue