From d8534a08eb82522bc781a446644b28cbf4c32b9e Mon Sep 17 00:00:00 2001 From: Savanni D'Gerinel Date: Sun, 20 Aug 2023 12:53:14 -0400 Subject: [PATCH] Show the name of the game, and create one if it doesn't exist --- kifu/core/src/ui/elements/game_preview.rs | 7 +++++++ kifu/gtk/src/ui/game_preview.rs | 1 + sgf/src/go.rs | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/kifu/core/src/ui/elements/game_preview.rs b/kifu/core/src/ui/elements/game_preview.rs index 410f583..afc9e2b 100644 --- a/kifu/core/src/ui/elements/game_preview.rs +++ b/kifu/core/src/ui/elements/game_preview.rs @@ -6,6 +6,7 @@ use typeshare::typeshare; #[typeshare] pub struct GamePreviewElement { pub date: Vec, + pub name: String, pub black_player: String, pub white_player: String, } @@ -31,6 +32,11 @@ impl GamePreviewElement { None => white_player, }; + let name = match game.info.game_name { + Some(ref name) => name.clone(), + None => format!("{} vs. {}", black_player, white_player), + }; + GamePreviewElement { date: game .info @@ -38,6 +44,7 @@ impl GamePreviewElement { .iter() .map(|dt| dt.to_string()) .collect::>(), + name, black_player, white_player, } diff --git a/kifu/gtk/src/ui/game_preview.rs b/kifu/gtk/src/ui/game_preview.rs index 99ec42c..ed0d131 100644 --- a/kifu/gtk/src/ui/game_preview.rs +++ b/kifu/gtk/src/ui/game_preview.rs @@ -43,6 +43,7 @@ impl GamePreview { pub fn set_game(&self, element: GamePreviewElement) { self.imp().black_player.set_text(&element.black_player); self.imp().white_player.set_text(&element.white_player); + self.imp().title.set_text(&element.name); if let Some(date) = element.date.first() { self.imp().date.set_text(&date); } diff --git a/sgf/src/go.rs b/sgf/src/go.rs index 167b0c2..283ba2d 100644 --- a/sgf/src/go.rs +++ b/sgf/src/go.rs @@ -99,6 +99,11 @@ impl TryFrom for Game { info.app_name = tree.sequence[0] .find_prop("AP") .map(|prop| prop.values[0].clone()); + + info.game_name = tree.sequence[0] + .find_prop("GN") + .map(|prop| prop.values[0].clone()); + info.black_player = tree.sequence[0] .find_prop("PB") .map(|prop| prop.values.join(", "));