diff --git a/kifu/kifu-gtk/src/ui/goban.rs b/kifu/kifu-gtk/src/ui/goban.rs new file mode 100644 index 0000000..6c30670 --- /dev/null +++ b/kifu/kifu-gtk/src/ui/goban.rs @@ -0,0 +1,30 @@ +use glib::Object; +use gtk::{prelude::*, subclass::prelude::*}; + +#[derive(Default)] +pub struct GobanPrivate; + +#[glib::object_subclass] +impl ObjectSubclass for GobanPrivate { + const NAME: &'static str = "Goban"; + type Type = Goban; + type ParentType = gtk::DrawingArea; +} + +impl ObjectImpl for GobanPrivate {} +impl WidgetImpl for GobanPrivate {} +impl DrawingAreaImpl for GobanPrivate {} + +glib::wrapper! { + pub struct Goban(ObjectSubclass) @extends gtk::DrawingArea, gtk::Widget; +} + +impl Goban { + pub fn new() -> Self { + let s: Self = Object::builder().build(); + s.set_width_request(1024); + s.set_height_request(768); + + s + } +} diff --git a/kifu/kifu-gtk/src/ui/mod.rs b/kifu/kifu-gtk/src/ui/mod.rs index 930b200..cd9a856 100644 --- a/kifu/kifu-gtk/src/ui/mod.rs +++ b/kifu/kifu-gtk/src/ui/mod.rs @@ -6,3 +6,6 @@ pub use chat::Chat; mod playing_field; pub use playing_field::{playing_field, PlayingField}; + +mod goban; +pub use goban::Goban; diff --git a/kifu/kifu-gtk/src/ui/playing_field.rs b/kifu/kifu-gtk/src/ui/playing_field.rs index bb7c0ba..7e6eac2 100644 --- a/kifu/kifu-gtk/src/ui/playing_field.rs +++ b/kifu/kifu-gtk/src/ui/playing_field.rs @@ -1,4 +1,4 @@ -use crate::ui::{Chat, PlayerCard}; +use crate::ui::{Chat, Goban, PlayerCard}; use glib::Object; use gtk::{prelude::*, subclass::prelude::*}; use kifu_core::{ @@ -53,10 +53,12 @@ impl PlayingField { pub fn new(view: PlayingFieldView) -> PlayingField { let s: Self = Object::builder().build(); + let goban = Goban::new(); let player_card_white = PlayerCard::new(view.player_card_white); let player_card_black = PlayerCard::new(view.player_card_black); let chat = Chat::new(view.chat); + s.attach(&goban, 1, 1, 1, 2); s.attach(&player_card_black, 2, 1, 1, 1); s.attach(&player_card_white, 3, 1, 1, 1); s.attach(&chat, 2, 2, 2, 1);