fix switch and some changes
This commit is contained in:
@@ -10,9 +10,7 @@ use crate::ui::cards::new::*;
|
||||
use crate::widgets::card_entry::CardEntry;
|
||||
use glib::subclass::InitializingObject;
|
||||
use gtk::gio::ListStore;
|
||||
// use gtk::glib::ffi::GString;
|
||||
use gtk::glib::object::ObjectExt;
|
||||
use gtk::glib::GString;
|
||||
use gtk::glib::{clone, closure_local};
|
||||
use gtk::prelude::WidgetExt;
|
||||
use gtk::subclass::prelude::*;
|
||||
@@ -21,7 +19,7 @@ use gtk::{
|
||||
Window,
|
||||
};
|
||||
use gtk::{prelude::*, FileDialog};
|
||||
use gtk::{ListBox, ListItem, SignalListItemFactory};
|
||||
use gtk::{ListItem, SignalListItemFactory};
|
||||
use rusqlite::Connection;
|
||||
use sha256::try_digest;
|
||||
|
||||
@@ -73,6 +71,7 @@ impl ObjectImpl for MemoryCardsEditScene {
|
||||
}));
|
||||
new_win.get_done_button().connect_closure("clicked", true, closure_local!(@strong binding => move |_w: &Button| {
|
||||
binding.imp().query_cards(None);
|
||||
binding.imp().update_state();
|
||||
}));
|
||||
new_win.present();
|
||||
}));
|
||||
@@ -88,51 +87,18 @@ impl ObjectImpl for MemoryCardsEditScene {
|
||||
}
|
||||
}
|
||||
);
|
||||
binding.imp().update_state();
|
||||
}));
|
||||
self.query_cards(None);
|
||||
// self.query_cards(None);
|
||||
self.update_state();
|
||||
println!("Constructed");
|
||||
}
|
||||
}
|
||||
|
||||
impl MemoryCardsEditScene {
|
||||
pub fn query_cards(&self, options: Option<String>) {
|
||||
let conn = Connection::open(get_db_path()).unwrap();
|
||||
|
||||
let selector = match options {
|
||||
Some(s) => "WHERE ".to_owned() + &s,
|
||||
None => "".to_owned(),
|
||||
};
|
||||
|
||||
let sql = format!(
|
||||
"SELECT imagename, hieroglyph, reading, translation, is_learning FROM cards {selector}"
|
||||
);
|
||||
let mut stmt = conn.prepare(sql.as_str()).unwrap();
|
||||
let cards_iter = stmt
|
||||
.query_map([], |row| {
|
||||
let image_path: String = match row.get(0) {
|
||||
Ok(path) => path,
|
||||
Err(_) => String::from(""),
|
||||
};
|
||||
let c = Card::new(
|
||||
Some(get_images_store_path() + &image_path),
|
||||
Some(row.get(1).unwrap()),
|
||||
Some(row.get(2).unwrap()),
|
||||
Some(row.get(3).unwrap()),
|
||||
Some(row.get(4).unwrap()),
|
||||
);
|
||||
// println!("{c:?} ");
|
||||
|
||||
let entry = CardEntry::new(Some(&c));
|
||||
entry.update_state();
|
||||
Ok(entry)
|
||||
})
|
||||
.unwrap();
|
||||
self.displaying_cards.borrow_mut().clear();
|
||||
println!("pos1");
|
||||
for c in cards_iter {
|
||||
self.displaying_cards.borrow_mut().push(c.unwrap());
|
||||
}
|
||||
println!("pos2");
|
||||
|
||||
pub fn update_state(&self) {
|
||||
println!("Updating state");
|
||||
let model = ListStore::new::<CardEntry>();
|
||||
model.extend_from_slice(&*self.displaying_cards.borrow());
|
||||
|
||||
@@ -160,16 +126,6 @@ impl MemoryCardsEditScene {
|
||||
.and_downcast::<CardEntry>()
|
||||
.unwrap();
|
||||
|
||||
// let path =
|
||||
// // card_object_to_display.get_image_widget().set_file(Some(
|
||||
// // // &card_object.get_image_widget().file().unwrap()
|
||||
// // match card_object.get_image_widget().file() {
|
||||
// // None => "",
|
||||
// // Some(t) => {
|
||||
// // t.to_string().to_owned().as_str()
|
||||
// // }
|
||||
// // }
|
||||
// // ));
|
||||
card_object_to_display.get_image_widget().set_file(Some(card_object.get_image_file_path().as_str()));
|
||||
card_object_to_display.set_hieroglyph(card_object.hieroglyph());
|
||||
card_object_to_display.set_reading(card_object.reading());
|
||||
@@ -177,12 +133,48 @@ impl MemoryCardsEditScene {
|
||||
card_object_to_display.set_islearning(card_object.islearning());
|
||||
});
|
||||
|
||||
println!("pos3");
|
||||
|
||||
let no_selection_model = NoSelection::new(Some(model));
|
||||
let list_view = ListView::new(Some(no_selection_model), Some(factory));
|
||||
self.cards_scrolled_window.set_child(Some(&list_view));
|
||||
println!("pos4");
|
||||
}
|
||||
|
||||
pub fn query_cards(&self, options: Option<String>) {
|
||||
let conn = Connection::open(get_db_path()).unwrap();
|
||||
|
||||
let selector = match options {
|
||||
Some(s) => "WHERE ".to_owned() + &s,
|
||||
None => "".to_owned(),
|
||||
};
|
||||
|
||||
let sql = format!(
|
||||
"SELECT imagename, hieroglyph, reading, translation, is_learning FROM cards {selector}"
|
||||
);
|
||||
let mut stmt = conn.prepare(sql.as_str()).unwrap();
|
||||
let cards_iter = stmt
|
||||
.query_map([], |row| {
|
||||
let image_path: String = match row.get(0) {
|
||||
Ok(path) => path,
|
||||
Err(_) => String::from(""),
|
||||
};
|
||||
let c = Card::new(
|
||||
Some(get_images_store_path() + &image_path),
|
||||
Some(row.get(1).unwrap()),
|
||||
Some(row.get(2).unwrap()),
|
||||
Some(row.get(3).unwrap()),
|
||||
Some(row.get(4).unwrap()),
|
||||
);
|
||||
if c.is_learning().unwrap() {
|
||||
println!("{c:?}");
|
||||
}
|
||||
let entry = CardEntry::new(Some(&c));
|
||||
entry.update_state();
|
||||
Ok(entry)
|
||||
})
|
||||
.unwrap();
|
||||
self.displaying_cards.borrow_mut().clear();
|
||||
for c in cards_iter {
|
||||
self.displaying_cards.borrow_mut().push(c.unwrap());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,7 +196,6 @@ async fn new_card_setup<W: IsA<gtk::Window>>(window: Rc<W>) {
|
||||
let path: String = path.as_path().to_str().unwrap().to_owned();
|
||||
|
||||
picture_widget.set_file(Some(&gio::File::for_path(&path)));
|
||||
println!("Image path has changed");
|
||||
|
||||
let images_store_path = get_program_home_path() + "/images";
|
||||
|
||||
@@ -215,6 +206,7 @@ async fn new_card_setup<W: IsA<gtk::Window>>(window: Rc<W>) {
|
||||
_ => panic!("Could not create directory for storing images!"),
|
||||
},
|
||||
};
|
||||
|
||||
w.get_done_button().connect_closure(
|
||||
"clicked",
|
||||
false,
|
||||
@@ -246,8 +238,10 @@ async fn new_card_setup<W: IsA<gtk::Window>>(window: Rc<W>) {
|
||||
)
|
||||
)", (&new_filename, &hieroglyph, &reading, &translation)).unwrap();
|
||||
conn.execute("UPDATE cards SET is_learning = TRUE WHERE hieroglyph = ?1", [&hieroglyph]).unwrap();
|
||||
w.close();
|
||||
|
||||
|
||||
|
||||
w.close();
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
use crate::ui::cards::{edit::MemoryCardsEditScene, game::MemoryCardsGameScene};
|
||||
|
||||
use glib::subclass::InitializingObject;
|
||||
use gtk::glib::closure_local;
|
||||
use gtk::subclass::prelude::*;
|
||||
use gtk::{glib, prelude::*, Button, CompositeTemplate};
|
||||
use gtk::{glib, Button, CompositeTemplate};
|
||||
|
||||
#[derive(CompositeTemplate, Default)]
|
||||
#[template(resource = "/org/foxarmy/learn-hieroglyph/cards/setup/ui.xml")]
|
||||
@@ -33,21 +30,7 @@ impl ObjectSubclass for MemoryCardsSetupScene {
|
||||
|
||||
impl ObjectImpl for MemoryCardsSetupScene {
|
||||
fn constructed(&self) {
|
||||
self.parent_constructed();
|
||||
|
||||
let binding = self.obj();
|
||||
|
||||
self.edit_button.connect_closure("clicked",false, closure_local!(@strong binding => move |_b: &Button| {
|
||||
let new_win: MemoryCardsEditScene = MemoryCardsEditScene::new(&binding.application().unwrap());
|
||||
new_win.present();
|
||||
})
|
||||
);
|
||||
|
||||
self.start_button.connect_closure("clicked", false, closure_local!(@strong binding => move |_b: &Button| {
|
||||
let new_win: MemoryCardsGameScene = MemoryCardsGameScene::new(&binding.application().unwrap());
|
||||
new_win.present();
|
||||
}),
|
||||
);
|
||||
self.parent_constructed();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user