use gtk4 as gtk; use std::str::FromStr; use crate::{ model::{models::SignalReduce, Error, Frequency, Result}, model_utils::signal_reducer::*, view::components::input::Input, }; use gtk::{ prelude::{Cast, CastNone, EditableExt, ListItemExt, ObjectExt, WidgetExt}, ColumnView, Entry, Label, ListItem, SignalListItemFactory, }; pub fn get_error_message(error: Error) -> Option<&'static str> { match error.to_string().as_str() { "cannot parse float from empty string" => Some("Вы не ввели данные в поле/-я"), "invalid float literal" => Some("Вы ввели не корректные данные в поле/-я"), _ => None, } } pub fn parse_fields(all_inputs: Vec>) -> Result { let mut values: [f64; 6] = [0.0; 6]; for (i, input) in all_inputs.iter().enumerate() { let input_text_buffer = input.get_input(); let extracted_value = f64::from_str(input_text_buffer.text().as_str().trim())?; values[i] = extracted_value; } Ok(SignalReduce { length: values[0], wire_resistance: values[1], wire_capacity: values[2], source_resistance: values[3], source_voltage: values[4], frequency: values[5], }) }