From 62b703693371a504a82aa265be7264feea35c512 Mon Sep 17 00:00:00 2001 From: doryan Date: Thu, 15 Aug 2024 23:37:34 +0400 Subject: [PATCH] I'm too lazy to commit to the latest files --- .../view_utils/hamming_code_input_utils.rs | 33 ----- .../view_utils/hamming_code_utils.rs | 25 ++++ .../view_utils/signal_reduce_utils.rs | 85 ++++++++++++ src/view/pages/hamming_code.rs | 13 +- src/view/pages/signal_reducing.rs | 127 +++++------------- 5 files changed, 149 insertions(+), 134 deletions(-) delete mode 100644 src/controller/view_utils/hamming_code_input_utils.rs diff --git a/src/controller/view_utils/hamming_code_input_utils.rs b/src/controller/view_utils/hamming_code_input_utils.rs deleted file mode 100644 index fe8a58f..0000000 --- a/src/controller/view_utils/hamming_code_input_utils.rs +++ /dev/null @@ -1,33 +0,0 @@ -use gtk4 as gtk; - -use crate::{ - model::{models::*, Result}, - model_utils::hamming_code_seven_four::*, -}; -use gtk::{prelude::*, *}; - -pub fn start_hamming_algorithm(input: &TextView, state: bool) -> Result { - let (iter_start, iter_end) = input.buffer().bounds(); - let parsed_input: String = input - .buffer() - .text(&iter_start, &iter_end, false) - .to_string() - .trim() - .parse() - .unwrap(); - - let operation = if !state { - HammingMode::Encrypt - } else { - HammingMode::Decrypt - }; - - hamming(parsed_input, operation) -} - -pub fn check_correct_binary_code(input: &str, prepared_input: &str, l: usize) -> (bool, bool) { - let first_condition: bool = prepared_input.len() % l == 0; - - - (first_condition, second_condition) -} diff --git a/src/controller/view_utils/hamming_code_utils.rs b/src/controller/view_utils/hamming_code_utils.rs index f93278f..49fffc7 100644 --- a/src/controller/view_utils/hamming_code_utils.rs +++ b/src/controller/view_utils/hamming_code_utils.rs @@ -6,4 +6,29 @@ use crate::{ }; use gtk::{prelude::*, *}; +pub fn start_hamming_algorithm(input: &TextView, state: bool) -> Result { + let (iter_start, iter_end) = input.buffer().bounds(); + let parsed_input: String = input + .buffer() + .text(&iter_start, &iter_end, false) + .to_string() + .trim() + .parse() + .unwrap(); + + let operation = if !state { + HammingMode::Encrypt + } else { + HammingMode::Decrypt + }; + + hamming(parsed_input, operation) +} + +pub fn check_correct_binary_code(prepared_input: &str, l: usize) -> (bool, bool) { + let first_condition: bool = prepared_input.len() % l == 0; + let second_condition: bool = prepared_input.chars().all(|c| c == '1' || c == '0'); + + (first_condition, second_condition) +} diff --git a/src/controller/view_utils/signal_reduce_utils.rs b/src/controller/view_utils/signal_reduce_utils.rs index 0e8dc49..4042bb2 100644 --- a/src/controller/view_utils/signal_reduce_utils.rs +++ b/src/controller/view_utils/signal_reduce_utils.rs @@ -41,3 +41,88 @@ pub fn parse_fields(all_inputs: Vec>) -> Result { } #[inline] +pub fn update_column_view(column_view: &ColumnView) { + column_view.hide(); + column_view.show(); +} + +#[inline] +pub fn column_view_setup_factory(_factory: &SignalListItemFactory, list_item: &ListItem) { + list_item + .downcast_ref::() + .expect("Needs to be ListItem") + .set_child(Some(&Label::new(None))); +} + +pub fn column_view_bind_factory( + _factory: &SignalListItemFactory, + list_item: &ListItem, + values: SignalReduce, + label: &str, +) { + let cell_value = list_item + .downcast_ref::() + .expect("Needs to be ListItem") + .item() + .and_downcast::() + .expect("The item has to be an `IntegerObject`."); + + let cell_label = list_item + .downcast_ref::() + .expect("Needs to be ListItem") + .child() + .and_downcast::