AIT/src/view/ui.rs

64 lines
1.7 KiB
Rust

use crate::model::builder_traits::*;
use gtk4 as gtk;
use gtk::{prelude::*, StackTransitionType::SlideLeftRight, *};
use info_bar::InfoBar;
#[allow(unused)]
use crate::view::{
components::{pages::Pages, wrapper::*, *},
pages::*,
properties::*,
};
use super::styles::load_css;
pub fn ui(application: &adw::Application) {
load_css();
let hamming_code = Wrapper::row_builder()
.set_align(Alignment::new(Align::Fill, Align::Fill))
.set_margin(MarginData::EqualsMargin(15))
.spacing(10)
.build();
let info_bar = InfoBar::builder()
.set_text_label("Sample text")
.set_button_icon("close")
.build();
hamming_code::hamming_code_page(&hamming_code);
let signal_reducing = Wrapper::row_builder()
.set_align(Alignment::new(Align::Fill, Align::Fill))
.set_margin(MarginData::EqualsMargin(15))
.spacing(10)
.build();
signal_reducing::signal_reducing_page(&signal_reducing);
let pages = Pages::builder()
.set_transition(SlideLeftRight, 200)
.append_items(vec![
("Код Хэмминга", "Код Хэмминга", &hamming_code),
("Затухание сигнала", "Затухание сигнала", &signal_reducing),
])
.build(5);
let application_box = Box::new(Orientation::Vertical, 0);
application_box.append(info_bar.get());
application_box.append(pages.get());
let window = ApplicationWindow::builder()
.title("Комплексная программа для лаб. работ")
.width_request(700)
.height_request(400)
.application(application)
.child(&application_box)
.build();
window.show();
}