Implement game tree navigation #237
|
@ -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!()
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue