2024-08-15 22:17:00 +03:00
|
|
|
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,
|
|
|
|
};
|
2024-08-15 22:18:55 +03:00
|
|
|
|
|
|
|
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,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-08-15 22:23:12 +03:00
|
|
|
pub fn parse_fields(all_inputs: Vec<Input<Entry>>) -> Result<SignalReduce> {
|
|
|
|
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],
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|