diff --git a/src/controller/controller.rs b/src/controller/controller.rs index aebedf1..d1b912c 100644 --- a/src/controller/controller.rs +++ b/src/controller/controller.rs @@ -1,7 +1,11 @@ -use gtk4 as gtk; use gtk::*; +use gtk4 as gtk; + +pub fn state_controller(switch: &Switch, label: &Label) -> () { + if switch.state() == true { + label.set_label("Режим: проверка"); + } else { + label.set_label("Режим: кодирование"); + } +} -pub fn state_controller(switch: &Switch, label: &Label) -> (){ - if switch.state() == true { label.set_label("Режим: проверка"); } - else { label.set_label("Режим: кодирование"); } -} \ No newline at end of file diff --git a/src/controller/event_handlers/switch_event_handlers.rs b/src/controller/event_handlers/switch_event_handlers.rs index dade2be..018c4e1 100644 --- a/src/controller/event_handlers/switch_event_handlers.rs +++ b/src/controller/event_handlers/switch_event_handlers.rs @@ -1,26 +1,16 @@ -use crate::{ - model::model::*, - view::components::switch::SwitchExt, - gtk::{ - *, - prelude::* - }, -}; +use crate::{gtk::prelude::*, model::model::*, view::components::switch::SwitchExt}; -pub trait SwEventHandler{ +pub trait SwEventHandler { fn on_toggle(self) -> (); } impl SwEventHandler for EventHandler - where F: Fn(&C) + FnOnce(&C) + FnMut(&C) + 'static, C: SwitchExt + WidgetExt{ +where + F: Fn(&C) + FnOnce(&C) + FnMut(&C) + 'static, + C: SwitchExt + WidgetExt, +{ fn on_toggle(self) -> () { - self.component.connect_state_notify(move |switch| { - (self.callback)(switch) - }); + self.component + .connect_state_notify(move |switch| (self.callback)(switch)); } } - -pub fn clearing(output : &TextView, input: &TextView){ - input.buffer().set_text(""); - output.buffer().set_text(""); -} \ No newline at end of file diff --git a/src/controller/model_utils/hamming_code_seven_four.rs b/src/controller/model_utils/hamming_code_seven_four.rs index d2d5577..15ae669 100644 --- a/src/controller/model_utils/hamming_code_seven_four.rs +++ b/src/controller/model_utils/hamming_code_seven_four.rs @@ -83,52 +83,49 @@ pub fn hamming_decrypt_data(data: &Vec, result_string: &mut String, length_o (data_bits[3] ^ data_bits[5] ^ data_bits[6]) == data_bits[4], ); - match checked_bits { - (true, true, true) => { - general_length += length_of_code; - continue; - } - _ => { - let error_position = syndromes - .iter() - .find(move |&(&_error_position, &error)| error == checked_bits) - .unwrap() - .0; + if let (true, true, true) = checked_bits { + general_length += length_of_code; + continue; + } else { + let error_position = syndromes + .iter() + .find(move |&(&_error_position, &error)| error == checked_bits) + .unwrap() + .0; - let correctly_code: Vec = data_bits - .iter() - .enumerate() - .map(|(index, bit)| { - if index == error_position - 1 { - if *bit == 1u8 { - 0u8 - } else { - 1u8 - } - } else { - *bit - } - }) - .collect(); + let correctly_code: Vec = data_bits + .iter() + .enumerate() + .map(|(index, bit)| { + if index == error_position - 1 { + (*bit == 0u8).into() + } else { + *bit + } + }) + .collect(); - let error = format!( - "Ошибка в коде {} {:?}, позиция ошибки {}, корректный код: {:?}; \n", - general_length / 7, - &data_bits, - error_position, - correctly_code - ); + let error = format!( + "Ошибка в коде {} {:?}, позиция ошибки {}, корректный код: {:?}; \n", + general_length / 7, + &data_bits, + error_position, + correctly_code + ); - errors.push_str(error.as_str()); + errors.push_str(error.as_str()); - general_length += length_of_code; - } + general_length += length_of_code; } } - if errors.len() == 0 { - result_string.push_str("Все коды корректны."); + if data.len() > 0 { + if errors.len() == 0 { + result_string.push_str("Все коды корректны."); + } else { + result_string.push_str(errors.as_str()); + } } else { - result_string.push_str(errors.as_str()) + result_string.push_str("Введите код для проверки.") } } diff --git a/src/controller/view_utils/input_utils.rs b/src/controller/view_utils/input_utils.rs index ca2a21a..9b6a37d 100644 --- a/src/controller/view_utils/input_utils.rs +++ b/src/controller/view_utils/input_utils.rs @@ -1,18 +1,14 @@ use gtk4 as gtk; -use std::ops::Deref; -use gtk::{*, prelude::*}; use bitvec::{order::Lsb0, view::AsBits}; +use gtk::{prelude::*, *}; +use std::ops::Deref; -use crate::{ - model::model::*, - model_utils::hamming_code_seven_four::* -}; - -pub fn parse_input(input : &TextView, output : &TextView, mode: bool) -> (){ +use crate::{model::model::*, model_utils::hamming_code_seven_four::*}; +pub fn parse_input(input: &TextView, output: &TextView, mode: bool) -> () { let (iter_start, iter_end) = input.buffer().bounds(); - let parsed_input : String = input + let parsed_input: String = input .buffer() .text(&iter_start, &iter_end, false) .to_string() @@ -30,39 +26,33 @@ pub fn parse_input(input : &TextView, output : &TextView, mode: bool) -> (){ Ok(res) => output.buffer().set_text(res.trim_end()), Err(rej) => output.buffer().set_text(rej.as_str()), } - } -pub fn processing_input(input : &String) -> String { - +pub fn processing_input(input: &String) -> String { input .split_ascii_whitespace() - .filter(|&x| { - x != "" - }) - .fold(String::new(), |c: String, n: &str| { c + n }) - + .filter(|&x| x != "") + .fold(String::new(), |c: String, n: &str| c + n) } -pub fn check_correct_input(input: &String, prepared_input: &String, l: usize) -> (bool, bool){ - - let first_condition = input - .chars() - .all(|c| {c == '1' || c == '0' || c == ' '}); +pub fn check_correct_input(input: &String, prepared_input: &String, l: usize) -> (bool, bool) { + let first_condition = input.chars().all(|c| c == '1' || c == '0' || c == ' '); let second_condition = prepared_input.len() % l == 0; (first_condition, second_condition) - } -pub fn from_string_to_vec_bits(raw_data: String) -> Vec{ - +pub fn from_string_to_vec_bits(raw_data: String) -> Vec { raw_data .as_bits::() .iter() .step_by(8) .map(|x| *x.deref() as u8) .collect() +} -} \ No newline at end of file +pub fn clearing(output: &TextView, input: &TextView) { + input.buffer().set_text(""); + output.buffer().set_text(""); +} diff --git a/src/view/pages/signal_reducing.rs b/src/view/pages/signal_reducing.rs index e2a954f..6ccf32f 100644 --- a/src/view/pages/signal_reducing.rs +++ b/src/view/pages/signal_reducing.rs @@ -25,9 +25,6 @@ pub fn signal_reducing_page(wrapper: &Box) { .build(monospace, input_wrapping, input_height) .get(); - wire_length_input.set_halign(input_alignment); - wire_length_input.set_hexpand(true); - let resistance_per_meter_input = Input::builder() .set_label("Rм, Ом:") .set_margins(MarginData::EqualsMargin(5)) @@ -35,9 +32,6 @@ pub fn signal_reducing_page(wrapper: &Box) { .build(monospace, input_wrapping, input_height) .get(); - resistance_per_meter_input.set_halign(input_alignment); - resistance_per_meter_input.set_hexpand(true); - let capacity_per_meter_input = Input::builder() .set_label("Cм, пФ:") .set_margins(MarginData::EqualsMargin(5)) @@ -45,18 +39,24 @@ pub fn signal_reducing_page(wrapper: &Box) { .build(monospace, input_wrapping, input_height) .get(); - capacity_per_meter_input.set_halign(input_alignment); - capacity_per_meter_input.set_hexpand(true); - let wrapper_first_row = Wrapper::col_builder() .halign(Align::Fill) .hexpand(true) .spacing(5) .build(); - wrapper_first_row.append(&wire_length_input); - wrapper_first_row.append(&resistance_per_meter_input); - wrapper_first_row.append(&capacity_per_meter_input); + let first_row_elements: Vec<&Box> = vec![ + &wire_length_input, + &resistance_per_meter_input, + &capacity_per_meter_input, + ]; + + for elem in first_row_elements { + elem.set_halign(input_alignment); + elem.set_hexpand(true); + + wrapper_first_row.append(elem); + } let info_signal_voltage_input = Input::builder() .set_label("Vи, мВ:") @@ -65,9 +65,6 @@ pub fn signal_reducing_page(wrapper: &Box) { .build(monospace, input_wrapping, input_height) .get(); - info_signal_voltage_input.set_halign(input_alignment); - info_signal_voltage_input.set_hexpand(true); - let resistance_of_info_voltage_source_input = Input::builder() .set_label("Rи, Ом:") .set_margins(MarginData::EqualsMargin(5)) @@ -75,9 +72,6 @@ pub fn signal_reducing_page(wrapper: &Box) { .build(monospace, input_wrapping, input_height) .get(); - resistance_of_info_voltage_source_input.set_halign(input_alignment); - resistance_of_info_voltage_source_input.set_hexpand(true); - let info_voltage_source_frequency_input = Input::builder() .set_label("f, мГц:") .set_margins(MarginData::EqualsMargin(5)) @@ -85,18 +79,24 @@ pub fn signal_reducing_page(wrapper: &Box) { .build(monospace, input_wrapping, input_height) .get(); - info_voltage_source_frequency_input.set_halign(input_alignment); - info_voltage_source_frequency_input.set_hexpand(true); - let wrapper_second_row = Wrapper::col_builder() .halign(Align::Fill) .hexpand(true) .spacing(5) .build(); - wrapper_second_row.append(&info_signal_voltage_input); - wrapper_second_row.append(&resistance_of_info_voltage_source_input); - wrapper_second_row.append(&info_voltage_source_frequency_input); + let second_row_elements: Vec<&Box> = vec![ + &info_signal_voltage_input, + &resistance_of_info_voltage_source_input, + &info_voltage_source_frequency_input, + ]; + + for elem in second_row_elements { + elem.set_halign(input_alignment); + elem.set_hexpand(true); + + wrapper_second_row.append(elem); + } let main_wpapper = Wrapper::row_builder().spacing(5).build();