From 18e857b40c2a1182521ccabbb1d1c77e0aba40eb Mon Sep 17 00:00:00 2001 From: doryan Date: Mon, 29 Jul 2024 01:17:52 +0400 Subject: [PATCH] refactor: move parse field algorithm to a separate file --- src/view/pages/signal_reducing.rs | 36 ++++--------------------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/src/view/pages/signal_reducing.rs b/src/view/pages/signal_reducing.rs index 0a6dd3b..6ef60d1 100644 --- a/src/view/pages/signal_reducing.rs +++ b/src/view/pages/signal_reducing.rs @@ -1,5 +1,5 @@ use gtk4 as gtk; -use std::{str::FromStr, sync::Arc, time::Duration}; +use std::{fmt::Debug, num::ParseFloatError, str::FromStr, sync::Arc, time::Duration}; use crate::{ event_handlers::button_event_handlers::BtnEventHandler, @@ -8,6 +8,7 @@ use crate::{ components::{info_bar::InfoBar, input::Input}, properties::*, }, + view_utils::signal_reduce_input_utils::{get_error_message, parse_fields}, }; use gtk::{ prelude::{BoxExt, GridExt, TextBufferExt, TextViewExt}, @@ -66,39 +67,10 @@ pub fn signal_reducing_page(wrapper: &Box) { let calculate_button = Button::builder().label("Расчитать").build(); - let info_bar: Arc = Arc::new(InfoBar::get_instance()); - EventHandler::new(calculate_button.clone(), move |_| { - let mut values: [f64; 6] = [0f64; 6]; + let values: Option<[f64; 6]> = parse_fields(all_inputs.clone()); - for (i, input) in all_inputs.iter().enumerate() { - let input_text_buffer: TextBuffer = input.clone().get_input().buffer(); - let try_extract_value = f64::from_str( - input_text_buffer - .text( - &input_text_buffer.start_iter(), - &input_text_buffer.end_iter(), - false, - ) - .as_str() - .trim(), - ); - if let Ok(value) = try_extract_value { - values[i] = value; - } else { - info_bar.set_text_label(Some("Вы ввели некорректное значение поля.")); - info_bar.set_reveal_child(true); - - let info_bar_reference = info_bar.clone(); - - gio::spawn_blocking(move || { - std::thread::sleep(Duration::from_secs(5)); - info_bar_reference.set_reveal_child(false); - }); - - break; - } - } + println!("values: {:?}", values); }) .on_click();