43 lines
1.3 KiB
Rust
43 lines
1.3 KiB
Rust
use glib::Object;
|
|
use gtk::{glib, prelude::*, subclass::prelude::*};
|
|
use kifu_core::ui::GamePreviewElement;
|
|
|
|
#[derive(Default)]
|
|
pub struct GamePreviewPrivate;
|
|
|
|
#[glib::object_subclass]
|
|
impl ObjectSubclass for GamePreviewPrivate {
|
|
const NAME: &'static str = "GamePreview";
|
|
type Type = GamePreview;
|
|
type ParentType = gtk::Box;
|
|
}
|
|
|
|
impl ObjectImpl for GamePreviewPrivate {}
|
|
impl WidgetImpl for GamePreviewPrivate {}
|
|
impl BoxImpl for GamePreviewPrivate {}
|
|
|
|
glib::wrapper! {
|
|
pub struct GamePreview(ObjectSubclass<GamePreviewPrivate>) @extends gtk::Box, gtk::Widget, @implements gtk::Orientable;
|
|
}
|
|
|
|
impl GamePreview {
|
|
pub fn new(element: GamePreviewElement) -> GamePreview {
|
|
let s: Self = Object::builder().build();
|
|
s.set_orientation(gtk::Orientation::Horizontal);
|
|
|
|
println!("game_preview: {:?}", element);
|
|
let black_player = match element.black_rank {
|
|
Some(rank) => format!("{} ({})", element.black_player, rank.to_string()),
|
|
None => element.black_player,
|
|
};
|
|
let white_player = match element.white_rank {
|
|
Some(rank) => format!("{} ({})", element.white_player, rank.to_string()),
|
|
None => element.white_player,
|
|
};
|
|
s.append(>k::Label::new(Some(&black_player)));
|
|
s.append(>k::Label::new(Some(&white_player)));
|
|
|
|
s
|
|
}
|
|
}
|