diff --git a/src/view/pages/signal_reducing.rs b/src/view/pages/signal_reducing.rs index 703a633..63fd2f2 100644 --- a/src/view/pages/signal_reducing.rs +++ b/src/view/pages/signal_reducing.rs @@ -67,7 +67,7 @@ pub fn signal_reducing_page(wrapper: &Box) { let result_table_headers_labels: [&str; 4] = ["f, МГц", "Xc, Ом", "Vп, мВ", "ζ"]; - let model = gio::ListStore::new::(); + let model = ListStore::new::(); let model_for_events = model.clone(); for number in (0..=100).step_by(5) { @@ -78,7 +78,16 @@ pub fn signal_reducing_page(wrapper: &Box) { } } - let selection_model = NoSelection::new(Some(model)); + let numeric_sorter = CustomSorter::new(|a, b| { + let a = a.downcast_ref::().unwrap().frequency(); + let b = b.downcast_ref::().unwrap().frequency(); + + a.total_cmp(&b).into() + }); + + let sorted_model = SortListModel::new(Some(model), Some(numeric_sorter.clone())); + + let selection_model = NoSelection::new(Some(sorted_model)); let result_table = ColumnView::builder() .reorderable(true) @@ -86,6 +95,14 @@ pub fn signal_reducing_page(wrapper: &Box) { .model(&selection_model) .build(); + result_table.connect_activate(clone!( + #[strong] + numeric_sorter, + move |_, _| { + numeric_sorter.changed(SorterChange::Different); + } + )); + for label in result_table_headers_labels { let factory = SignalListItemFactory::new();