Implement game tree navigation #237

Merged
savanni merged 6 commits from savanni/tree-navigation into main 2024-05-23 13:04:25 +00:00
2 changed files with 14 additions and 4 deletions
Showing only changes of commit 6165d65977 - Show all commits

View File

@ -87,6 +87,10 @@ impl GameReviewViewModel {
}
}
pub fn tree_max_depth(&self) -> usize {
self.imp.read().unwrap().review_tree.max_depth()
}
pub fn move_forward(&self) {
unimplemented!()
}

View File

@ -23,21 +23,27 @@ const HEIGHT: i32 = 800;
#[derive(Clone)]
pub struct ReviewTree {
widget: gtk::DrawingArea,
widget: gtk::ScrolledWindow,
drawing_area: gtk::DrawingArea,
view: GameReviewViewModel,
}
impl ReviewTree {
pub fn new(view: GameReviewViewModel) -> ReviewTree {
let widget = gtk::DrawingArea::new();
let drawing_area = gtk::DrawingArea::new();
let widget = gtk::ScrolledWindow::builder()
.child(&drawing_area)
.build();
widget.set_width_request(WIDTH);
widget.set_height_request(HEIGHT);
let s = Self { widget, view };
drawing_area.set_height_request(view.tree_max_depth() as i32 * 20 + 40);
s.widget.set_draw_func({
let s = Self { widget, drawing_area, view };
s.drawing_area.set_draw_func({
let s = s.clone();
move |_, ctx, width, height| {
s.redraw(ctx, width, height);