autoupdate on card_entry add
This commit is contained in:
		@@ -14,6 +14,7 @@ use gtk::{gio, glib, Box, Button, CompositeTemplate, ScrolledWindow, SearchEntry
 | 
				
			|||||||
use gtk::{prelude::*, FileDialog};
 | 
					use gtk::{prelude::*, FileDialog};
 | 
				
			||||||
use rusqlite::Connection;
 | 
					use rusqlite::Connection;
 | 
				
			||||||
use sha256::try_digest;
 | 
					use sha256::try_digest;
 | 
				
			||||||
 | 
					use gtk::prelude::WidgetExt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(CompositeTemplate, Default)]
 | 
					#[derive(CompositeTemplate, Default)]
 | 
				
			||||||
#[template(resource = "/org/foxarmy/learn-hieroglyph/cards/edit/ui.xml")]
 | 
					#[template(resource = "/org/foxarmy/learn-hieroglyph/cards/edit/ui.xml")]
 | 
				
			||||||
@@ -56,7 +57,11 @@ impl ObjectImpl for MemoryCardsEditScene {
 | 
				
			|||||||
                                        new_win.get_file_choose_button().connect_clicked(clone!(@strong new_win => move |_| {
 | 
					                                        new_win.get_file_choose_button().connect_clicked(clone!(@strong new_win => move |_| {
 | 
				
			||||||
                                            gtk::glib::MainContext::default().spawn_local(file_choose_dialog(Rc::clone(&new_win)));
 | 
					                                            gtk::glib::MainContext::default().spawn_local(file_choose_dialog(Rc::clone(&new_win)));
 | 
				
			||||||
                                        }));
 | 
					                                        }));
 | 
				
			||||||
 | 
					                                        new_win.get_done_button().connect_closure("clicked", true, closure_local!(@strong binding => move |_w: &Button| {
 | 
				
			||||||
 | 
					                                            binding.imp().update_card_list();
 | 
				
			||||||
 | 
					                                        }));
 | 
				
			||||||
                                        new_win.present();
 | 
					                                        new_win.present();
 | 
				
			||||||
 | 
					                                        
 | 
				
			||||||
        }));
 | 
					        }));
 | 
				
			||||||
        self.update_card_list();
 | 
					        self.update_card_list();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -86,14 +91,13 @@ impl MemoryCardsEditScene {
 | 
				
			|||||||
            .unwrap();
 | 
					            .unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for card in cards_iter {
 | 
					        for card in cards_iter {
 | 
				
			||||||
            // let card_binding = card.unwrap();
 | 
					 | 
				
			||||||
            // let path = &card_binding.imagepath();
 | 
					 | 
				
			||||||
            // println!("path: {}", path);
 | 
					 | 
				
			||||||
            // card_binding.set_imagepath(&*path);
 | 
					 | 
				
			||||||
            // card_binding.get_picture_widget().set_file(Some(&gio::File::for_path(&path)));
 | 
					 | 
				
			||||||
            let card_binding = card.unwrap();
 | 
					            let card_binding = card.unwrap();
 | 
				
			||||||
            let self_binding = self.obj();
 | 
					            let self_binding = self.obj();
 | 
				
			||||||
            c.append(&card_binding);
 | 
					            c.append(&card_binding);
 | 
				
			||||||
 | 
					            card_binding.connect_closure("created", false, closure_local!(move | | {
 | 
				
			||||||
 | 
					                println!("New card created");
 | 
				
			||||||
 | 
					            }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            card_binding.get_delete_button_widget().connect_closure("clicked", false, closure_local!(@strong card_binding, @strong self_binding => move |_b: &Button| {
 | 
					            card_binding.get_delete_button_widget().connect_closure("clicked", false, closure_local!(@strong card_binding, @strong self_binding => move |_b: &Button| {
 | 
				
			||||||
                let connection = Connection::open(get_db_path()).unwrap();
 | 
					                let connection = Connection::open(get_db_path()).unwrap();
 | 
				
			||||||
                let imagepath = card_binding.imagepath();
 | 
					                let imagepath = card_binding.imagepath();
 | 
				
			||||||
@@ -146,7 +150,6 @@ async fn file_choose_dialog<W: IsA<gtk::Window>>(window: Rc<W>) {
 | 
				
			|||||||
            let query = "INSERT INTO cards (imagename, hieroglyph, reading) VALUES(?1, ?2, ?3)";
 | 
					            let query = "INSERT INTO cards (imagename, hieroglyph, reading) VALUES(?1, ?2, ?3)";
 | 
				
			||||||
            conn.execute(query, (&new_filename, &hieroglyph, &reading)).unwrap();      
 | 
					            conn.execute(query, (&new_filename, &hieroglyph, &reading)).unwrap();      
 | 
				
			||||||
            w.close();
 | 
					            w.close();
 | 
				
			||||||
 | 
					 | 
				
			||||||
        }),
 | 
					        }),
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,9 @@
 | 
				
			|||||||
use std::cell::RefCell;
 | 
					use std::cell::RefCell;
 | 
				
			||||||
 | 
					use std::sync::OnceLock;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use glib::subclass::InitializingObject;
 | 
					use glib::subclass::InitializingObject;
 | 
				
			||||||
use glib::Properties;
 | 
					use glib::Properties;
 | 
				
			||||||
 | 
					use gtk::glib::subclass::Signal;
 | 
				
			||||||
use gtk::subclass::prelude::*;
 | 
					use gtk::subclass::prelude::*;
 | 
				
			||||||
use gtk::{glib, prelude::*, Button, CompositeTemplate, Label, Picture};
 | 
					use gtk::{glib, prelude::*, Button, CompositeTemplate, Label, Picture};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -42,6 +44,15 @@ impl ObjectSubclass for CardEntry {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#[glib::derived_properties]
 | 
					#[glib::derived_properties]
 | 
				
			||||||
impl ObjectImpl for CardEntry {
 | 
					impl ObjectImpl for CardEntry {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn signals() -> &'static [Signal] {
 | 
				
			||||||
 | 
					        static SIGNALS: OnceLock<Vec<Signal>> = OnceLock::new();
 | 
				
			||||||
 | 
					        SIGNALS.get_or_init(|| {
 | 
				
			||||||
 | 
					            vec![Signal::builder("created")
 | 
				
			||||||
 | 
					                .build()]
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn constructed(&self) {
 | 
					    fn constructed(&self) {
 | 
				
			||||||
        self.parent_constructed();
 | 
					        self.parent_constructed();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -57,7 +68,6 @@ impl ObjectImpl for CardEntry {
 | 
				
			|||||||
            .bind_property("reading", reading_label_binding, "label")
 | 
					            .bind_property("reading", reading_label_binding, "label")
 | 
				
			||||||
            .sync_create()
 | 
					            .sync_create()
 | 
				
			||||||
            .build();
 | 
					            .build();
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn dispose(&self) {
 | 
					    fn dispose(&self) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user