From 7ad2298676ff6c0983a6c0c932716b5334f4288f Mon Sep 17 00:00:00 2001 From: leca Date: Tue, 26 Mar 2024 14:11:46 +0300 Subject: [PATCH] rustfmt and fixed not respecting kana preferences in ktr mode --- src/game.rs | 34 +++++---- src/labled_switch/mod.rs | 10 +-- src/main.rs | 156 ++++++++++++++++++++++----------------- 3 files changed, 113 insertions(+), 87 deletions(-) diff --git a/src/game.rs b/src/game.rs index 1803086..26da014 100644 --- a/src/game.rs +++ b/src/game.rs @@ -12,13 +12,17 @@ pub enum Kanas { Katakana, } -impl std::fmt::Display for Kanas{ +impl std::fmt::Display for Kanas { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", match self { - Kanas::Romaji => "Romaji", - Kanas::Hiragana => "Hiragana", - Kanas::Katakana => "Katakana" - }) + write!( + f, + "{}", + match self { + Kanas::Romaji => "Romaji", + Kanas::Hiragana => "Hiragana", + Kanas::Katakana => "Katakana", + } + ) } } @@ -30,27 +34,31 @@ pub struct Hieroglyph { pub trait Useful { // fn get_syllable (&self) -> String; - fn get_kana (&self) -> Kanas; + fn get_kana(&self) -> Kanas; } impl Useful for Hieroglyph { // fn get_syllable (&self) -> String { // self.syllable.to_string() // } - fn get_kana (&self) -> Kanas { + fn get_kana(&self) -> Kanas { for row in ROMAJI { - if row.contains(&(self.syllable).as_str()) { return Kanas::Romaji; } + if row.contains(&(self.syllable).as_str()) { + return Kanas::Romaji; + } } for row in HIRAGANA { - if row.contains(&(self.syllable).as_str()) { return Kanas::Hiragana; } + if row.contains(&(self.syllable).as_str()) { + return Kanas::Hiragana; + } } for row in KATAKANA { - if row.contains(&(self.syllable).as_str()) { return Kanas::Katakana; } + if row.contains(&(self.syllable).as_str()) { + return Kanas::Katakana; + } } Kanas::Romaji // /shrug } - - } impl std::fmt::Display for Hieroglyph { diff --git a/src/labled_switch/mod.rs b/src/labled_switch/mod.rs index b838ec9..88bd76b 100644 --- a/src/labled_switch/mod.rs +++ b/src/labled_switch/mod.rs @@ -7,10 +7,10 @@ pub fn build(text: &str) -> (Box, Switch, Label) { .build(); let label: Label = Label::builder() - .valign(gtk::Align::End) - .halign(gtk::Align::BaselineCenter) - .label(text) - .build(); + .valign(gtk::Align::End) + .halign(gtk::Align::BaselineCenter) + .label(text) + .build(); let container = Box::builder() .orientation(gtk::Orientation::Horizontal) @@ -20,4 +20,4 @@ pub fn build(text: &str) -> (Box, Switch, Label) { container.append(&label); (container, switch, label) -} \ No newline at end of file +} diff --git a/src/main.rs b/src/main.rs index 9f66bd4..309f006 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,13 +1,13 @@ mod game; mod labled_switch; +use crate::game::*; use gio::Settings; +use gtk::{gio, prelude::*, Button, Entry, Label}; +use gtk::{glib, glib::clone, Application, ApplicationWindow, Box}; +use rand::prelude::*; use std::cell::{Cell, RefCell}; use std::ops::Deref; -use gtk::{gio, prelude::*, Button, Entry, Label}; -use gtk::{glib::clone, glib, Application, ApplicationWindow, Box}; -use crate::game::*; -use rand::prelude::*; const APP_ID: &str = "org.foxarmy.learn-hieroglyph"; @@ -48,13 +48,11 @@ fn build_menu(w: &RefCell) -> Box { .valign(gtk::Align::Center) .halign(gtk::Align::Center) .build(); - - let start_button: Button = Button::builder() - .label("Start!") - .build(); + + let start_button: Button = Button::builder().label("Start!").build(); let mut settings = Cell::new(Settings::new(APP_ID)); - + start_button.connect_clicked(clone!( @strong w => move |_| { w.borrow_mut().set_child(Some(&build_game(&w))) })); @@ -75,43 +73,45 @@ fn build_menu(w: &RefCell) -> Box { let s = settings.get_mut(); s.bind("is-ktr-enabled", &ktr_switch.1, "active").build(); s.bind("is-rtk-enabled", &rtk_switch.1, "active").build(); - s.bind("is-hiragana-enabled", &hiragana_switch.1, "active").build(); - s.bind("is-katakana-enabled", &katakana_switch.1, "active").build(); + s.bind("is-hiragana-enabled", &hiragana_switch.1, "active") + .build(); + s.bind("is-katakana-enabled", &katakana_switch.1, "active") + .build(); settings_container.append(&gamemode_settings_container); settings_container.append(&hiragana_setting_container); settings_container.append(&katakana_setting_container); - menu.append(&settings_container); + menu.append(&settings_container); menu.append(&start_button); menu } -fn random_kana(hiragana: bool, katakana: bool) -> Hieroglyph{ - if hiragana && katakana { - generate_random_hieroglyph( - if rand::thread_rng().gen_bool(0.5) { - Kanas::Katakana - } else { - Kanas::Hiragana - } - ) +fn random_kana(hiragana: bool, katakana: bool) -> Hieroglyph { + if hiragana && katakana { + generate_random_hieroglyph(if rand::thread_rng().gen_bool(0.5) { + Kanas::Katakana + } else { + Kanas::Hiragana + }) } else { - generate_random_hieroglyph( - if hiragana { - Kanas::Hiragana - } else { - Kanas::Katakana - } - ) + generate_random_hieroglyph(if hiragana { + Kanas::Hiragana + } else { + Kanas::Katakana + }) } } fn ask(ktr: bool, rtk: bool, hiragana: bool, katakana: bool) -> Hieroglyph { if ktr && rtk { - return if rand::thread_rng().gen_bool(0.5) { random_kana(hiragana, katakana) } else { generate_random_hieroglyph(Kanas::Romaji) }; + return if rand::thread_rng().gen_bool(0.5) { + random_kana(hiragana, katakana) + } else { + generate_random_hieroglyph(Kanas::Romaji) + }; } else if ktr { return random_kana(hiragana, katakana); } else { @@ -119,45 +119,43 @@ fn ask(ktr: bool, rtk: bool, hiragana: bool, katakana: bool) -> Hieroglyph { } } -fn generate_question_text(question: & Hieroglyph, exact_kana: &Kanas) -> String { +fn generate_question_text(question: &Hieroglyph, exact_kana: &Kanas) -> String { return String::from(match question.get_kana() { - Kanas::Romaji => { - match exact_kana { - Kanas::Hiragana => { - format!("Name corresponding hiragana for {}", question.to_string()) - }, - Kanas::Katakana => { - format!("Name corresponding katakana for {}", question.to_string()) - }, - _ => { - panic!("HOW DID YOU GET HERE!?"); - } + Kanas::Romaji => match exact_kana { + Kanas::Hiragana => { + format!("Name corresponding hiragana for {}", question.to_string()) + } + Kanas::Katakana => { + format!("Name corresponding katakana for {}", question.to_string()) + } + _ => { + panic!("HOW DID YOU GET HERE!?"); } }, Kanas::Hiragana => { - format!("Name corresponding romaji for hiragana {}", question.to_string()) - }, + format!( + "Name corresponding romaji for hiragana {}", + question.to_string() + ) + } Kanas::Katakana => { - format!("Name corresponding romaji for katakana {}", question.to_string()) + format!( + "Name corresponding romaji for katakana {}", + question.to_string() + ) } }); } - fn build_game(_w: &RefCell) -> Box { let game: Box = Box::builder() - .orientation(gtk::Orientation::Vertical) - .build(); - let mut question_label: RefCell