1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
extern crate tui; use tui::Terminal; use tui::backend::Backend; use tui::layout::Rect; use tui::text::Text; use crate::log; use crate::userinterface::widgets::{BORDERS, EMPTY_SPACES, selectorpopup}; pub const BOX_HEIGHT: u16 = 11; pub const TEXT_HEIGHT: u16 = 7; const EXTRA_SPACES: u16 = 3; const LARGER_ROW: u16 = 34; pub const WIN_WIDTH: u16 = LARGER_ROW + (EXTRA_SPACES + EMPTY_SPACES) * 2 + BORDERS; pub const WIN_HEIGHT: u16 = TEXT_HEIGHT + EMPTY_SPACES + BORDERS + BOX_HEIGHT + 1; pub fn render<B: Backend>(terminal: &mut Terminal<B>, log: &mut log::Log) { terminal.draw(|frame| { let frame_area = frame.size(); let frame_left = frame_area.left(); let frame_top = frame_area.top(); let frame_width = frame_area.right() - frame_left; let frame_height = frame_area.bottom() - frame_top; let window_area = Rect::new(frame_left + frame_width/2 - WIN_WIDTH/2, frame_top + frame_height/2 - WIN_HEIGHT/2, WIN_WIDTH, WIN_HEIGHT); let keyboard_instructions = Text::from("More a grid is near to the top of the stack more the content of this grid is important than other With which grid do you want switch the order of the current grid ? < ↑ | ↓ > to move, < Enter > to make your choice"); let current_grid = log.grids_getcurrentgridid(); let mut i = 0; let mut names = log.grids_getnames(); names.retain(|_| (i != current_grid, i += 1).0); let cursor = log.grids_getswitchcursor(); frame.render_widget(selectorpopup::SelectorPopupWidget::new( keyboard_instructions, names, cursor), window_area); }).unwrap(); }