added table and it needed to fix

This commit is contained in:
doryan 2024-04-19 12:03:16 +04:00
parent b6d0eb0508
commit 7c16964b83
2 changed files with 117 additions and 10 deletions

View File

@ -1,5 +1,6 @@
use gtk4 as gtk; use gtk4 as gtk;
use crate::controller::model_utils::signal_reducer::*;
use crate::model::model::SchemeCharacteristics; use crate::model::model::SchemeCharacteristics;
use gtk::{prelude::*, *}; use gtk::{prelude::*, *};
@ -38,7 +39,12 @@ pub fn check_characteristics(
} }
} }
pub fn start_algorithm(error_log_label: &Label, raw_characteristics: &Vec<TextView>) { pub fn start_algorithm(
error_log_label: &Label,
raw_characteristics: &Vec<TextView>,
table: &Frame,
header: &ListBoxRow,
) {
let mut all_inputs_data: Vec<f64> = Vec::new(); let mut all_inputs_data: Vec<f64> = Vec::new();
let mut output: String = String::new(); let mut output: String = String::new();
@ -47,6 +53,10 @@ pub fn start_algorithm(error_log_label: &Label, raw_characteristics: &Vec<TextVi
} else { } else {
error_log_label.set_text(""); error_log_label.set_text("");
let new_table = ListBox::builder().hexpand(true).halign(Align::Fill).build();
new_table.append(header);
let (L, Rm, Cm, Vs, Rs, f): SchemeCharacteristics = ( let (L, Rm, Cm, Vs, Rs, f): SchemeCharacteristics = (
all_inputs_data[0], all_inputs_data[0],
all_inputs_data[1], all_inputs_data[1],
@ -59,5 +69,55 @@ pub fn start_algorithm(error_log_label: &Label, raw_characteristics: &Vec<TextVi
let mut frequencies: Vec<usize> = vec![f as usize, 1usize]; let mut frequencies: Vec<usize> = vec![f as usize, 1usize];
frequencies.append(&mut (0..100).step_by(5).collect()); frequencies.append(&mut (0..100).step_by(5).collect());
for i in frequencies {
if i == 0 {
continue;
}
let table_row = ListBoxRow::new();
let columns = ColumnView::builder().reorderable(false).build();
let frequency_column = ColumnViewColumn::builder()
.title(format!("{i}"))
.fixed_width(200)
.expand(true)
.build();
let Xc: f64 = reactive_resistance_of_capacitor(Cm, L, f);
let Z: f64 = full_resistance_of_capacitor(Xc, Vs, Rm, L);
let V: f64 = voltage_from_signal_source(Vs, Xc, Z);
let xi: f64 = coef_of_signal_reduce(Vs, V);
let reactive_resistance_column = ColumnViewColumn::builder()
.title(format!("{:?}", Xc))
.fixed_width(200)
.expand(true)
.build();
let voltage_column = ColumnViewColumn::builder()
.title(format!("{:?}", V))
.fixed_width(200)
.expand(true)
.build();
let coef_column = ColumnViewColumn::builder()
.title(format!("{:?}", xi))
.fixed_width(200)
.expand(true)
.build();
columns.append_column(&frequency_column);
columns.append_column(&reactive_resistance_column);
columns.append_column(&voltage_column);
columns.append_column(&coef_column);
table_row.set_child(Some(&columns));
new_table.append(&table_row);
table.set_child(Some(&new_table));
}
} }
} }

View File

@ -2,17 +2,17 @@ use gtk4 as gtk;
use crate::{ use crate::{
controller::event_handlers::button_event_handlers::*, controller::event_handlers::button_event_handlers::*,
model::{ model::{builder_traits::Product, model::*},
builder_traits::Product,
model::{EventHandler, SchemeCharacteristics},
},
view::{ view::{
components::{input::Input, wrapper::Wrapper}, components::{input::Input, wrapper::Wrapper},
properties::*, properties::*,
}, },
view_utils::signal_reduce_input_utils::start_algorithm, view_utils::signal_reduce_input_utils::start_algorithm,
}; };
use gtk::{prelude::*, Align, WrapMode, *}; use gtk::{
prelude::{BoxExt, ListBoxRowExt, WidgetExt},
Align, WrapMode, *,
};
pub fn signal_reducing_page(wrapper: &Box) { pub fn signal_reducing_page(wrapper: &Box) {
let (input_height, monospace, input_alignment, input_wrapping): (i32, bool, Align, WrapMode) = let (input_height, monospace, input_alignment, input_wrapping): (i32, bool, Align, WrapMode) =
@ -125,7 +125,9 @@ pub fn signal_reducing_page(wrapper: &Box) {
let table_header = ColumnView::builder() let table_header = ColumnView::builder()
.focusable(false) .focusable(false)
.reorderable(true) .reorderable(false)
.show_row_separators(true)
.show_column_separators(true)
.halign(Align::Fill) .halign(Align::Fill)
.hexpand(true) .hexpand(true)
.build(); .build();
@ -140,25 +142,70 @@ pub fn signal_reducing_page(wrapper: &Box) {
table_header.append_column(&column); table_header.append_column(&column);
} }
let mut table = ListBox::builder().hexpand(true).halign(Align::Fill).build();
let header = ListBoxRow::builder().child(&table_header).build();
table.append(&header);
for i in (0..=100).step_by(5) {
if i == 0 {
continue;
}
let table_row = ListBoxRow::new();
let columns = ColumnView::builder().reorderable(false).build();
let column = ColumnViewColumn::builder()
.title(format!("{i}"))
.fixed_width(200)
.expand(true)
.build();
columns.append_column(&column);
for table_row_label in 1..=3 {
let column = ColumnViewColumn::builder()
.title(format!("{table_row_label}"))
.fixed_width(200)
.expand(true)
.build();
columns.append_column(&column);
}
table_row.set_child(Some(&columns));
table.append(&table_row);
}
let table_of_calculated_values = Frame::builder() let table_of_calculated_values = Frame::builder()
.height_request(64) .height_request(64)
.hexpand(true) .hexpand(true)
.child(&table_header) .child(&table)
.halign(Align::Fill) .halign(Align::Fill)
.set_margin(MarginData::MultipleMargin((10, 5, 0, 0))) .set_margin(MarginData::MultipleMargin((10, 5, 0, 0)))
.build(); .build();
let table_frame = table_of_calculated_values.clone();
let errors_label: Label = Label::new(Some("")); let errors_label: Label = Label::new(Some(""));
let errors_label_for_handler: Label = errors_label.clone(); let errors_label_for_handler: Label = errors_label.clone();
EventHandler::new(calculate_button.clone(), move |_| { EventHandler::new(calculate_button.clone(), move |_| {
start_algorithm(&errors_label_for_handler, &all_text_views) start_algorithm(
&errors_label_for_handler,
&all_text_views,
&table_frame.clone(),
&header,
)
}) })
.on_click(); .on_click();
main_wrapper.append(&errors_label);
main_wrapper.append(&calculate_button); main_wrapper.append(&calculate_button);
main_wrapper.append(&table_of_calculated_values); main_wrapper.append(&table_of_calculated_values);
main_wrapper.append(&errors_label);
wrapper.append(&main_wrapper); wrapper.append(&main_wrapper);
} }