use gtk4 as gtk; use crate::{ model::builder_traits::Product, view::{ components::{input::Input, wrapper::Wrapper}, properties::*, }, }; use gtk::{prelude::*, Align, WrapMode, *}; pub fn signal_reducing_page(wrapper: &Box) { let (input_height, monospace, input_alignment, input_wrapping): (i32, bool, Align, WrapMode) = (24, true, Align::Fill, WrapMode::Word); let input_label_alignment = Alignment { horizontal: Align::Start, vertical: Align::Fill, }; let wire_length_input = Input::builder() .set_label("l, м:") .set_margins(MarginData::EqualsMargin(5)) .set_align(input_label_alignment) .build(monospace, input_wrapping, input_height) .get(); let resistance_per_meter_input = Input::builder() .set_label("Rм, Ом:") .set_margins(MarginData::EqualsMargin(5)) .set_align(input_label_alignment) .build(monospace, input_wrapping, input_height) .get(); let capacity_per_meter_input = Input::builder() .set_label("Cм, пФ:") .set_margins(MarginData::EqualsMargin(5)) .set_align(input_label_alignment) .build(monospace, input_wrapping, input_height) .get(); let wrapper_first_row = Wrapper::col_builder() .halign(Align::Fill) .hexpand(true) .spacing(5) .build(); 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и, мВ:") .set_margins(MarginData::EqualsMargin(5)) .set_align(input_label_alignment) .build(monospace, input_wrapping, input_height) .get(); let resistance_of_info_voltage_source_input = Input::builder() .set_label("Rи, Ом:") .set_margins(MarginData::EqualsMargin(5)) .set_align(input_label_alignment) .build(monospace, input_wrapping, input_height) .get(); let info_voltage_source_frequency_input = Input::builder() .set_label("f, мГц:") .set_margins(MarginData::EqualsMargin(5)) .set_align(input_label_alignment) .build(monospace, input_wrapping, input_height) .get(); let wrapper_second_row = Wrapper::col_builder() .halign(Align::Fill) .hexpand(true) .spacing(5) .build(); 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(); main_wpapper.append(&wrapper_first_row); main_wpapper.append(&wrapper_second_row); wrapper.append(&main_wpapper); }