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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
use crate::window::JoshutoPanel;
#[derive(Debug)]
pub struct JoshutoView {
pub top_win: JoshutoPanel,
pub tab_win: JoshutoPanel,
pub left_win: JoshutoPanel,
pub mid_win: JoshutoPanel,
pub right_win: JoshutoPanel,
pub bot_win: JoshutoPanel,
pub win_ratio: (usize, usize, usize),
}
impl JoshutoView {
pub fn new(win_ratio: (usize, usize, usize)) -> Self {
let sum_ratio: usize = win_ratio.0 + win_ratio.1 + win_ratio.2;
let mut term_rows: i32 = 0;
let mut term_cols: i32 = 0;
ncurses::getmaxyx(ncurses::stdscr(), &mut term_rows, &mut term_cols);
let term_divide: i32 = term_cols / sum_ratio as i32;
let win_xy: (i32, i32) = (1, 10);
let win_coord: (usize, usize) = (0, term_cols as usize - win_xy.1 as usize);
let tab_win = JoshutoPanel::new(win_xy.0, win_xy.1, win_coord);
let win_xy: (i32, i32) = (1, term_cols - tab_win.cols);
let win_coord: (usize, usize) = (0, 0);
let top_win = JoshutoPanel::new(win_xy.0, win_xy.1, win_coord);
let win_xy: (i32, i32) = (term_rows - 2, (term_divide * win_ratio.0 as i32) - 1);
let win_coord: (usize, usize) = (1, 0);
let left_win = JoshutoPanel::new(win_xy.0, win_xy.1, win_coord);
let win_xy: (i32, i32) = (term_rows - 2, (term_divide * win_ratio.1 as i32) - 1);
let win_coord: (usize, usize) = (1, term_divide as usize * win_ratio.0);
let mid_win = JoshutoPanel::new(win_xy.0, win_xy.1, win_coord);
let win_xy: (i32, i32) = (term_rows - 2, (term_divide * win_ratio.2 as i32) - 1);
let win_coord: (usize, usize) = (1, term_divide as usize * win_ratio.2);
let right_win = JoshutoPanel::new(win_xy.0, win_xy.1, win_coord);
let win_xy: (i32, i32) = (1, term_cols);
let win_coord: (usize, usize) = (term_rows as usize - 1, 0);
let bot_win = JoshutoPanel::new(win_xy.0, win_xy.1, win_coord);
JoshutoView {
top_win,
tab_win,
left_win,
mid_win,
right_win,
bot_win,
win_ratio,
}
}
pub fn resize_views(&mut self) {
let new_view = Self::new(self.win_ratio);
self.top_win = new_view.top_win;
self.bot_win = new_view.bot_win;
self.tab_win = new_view.tab_win;
self.left_win = new_view.left_win;
self.mid_win = new_view.mid_win;
self.right_win = new_view.right_win;
}
}
|