From ce941c146aea7925bded6b9d2a0d0559d3156ad3 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Wed, 23 Feb 2022 18:11:55 +0100 Subject: Create repository --- src/game_tab/GameTab.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/game_tab/GameTab.cpp (limited to 'src/game_tab/GameTab.cpp') diff --git a/src/game_tab/GameTab.cpp b/src/game_tab/GameTab.cpp new file mode 100644 index 0000000..3e32b4e --- /dev/null +++ b/src/game_tab/GameTab.cpp @@ -0,0 +1,52 @@ +#include "GameTab.hpp" +#include + +wxDEFINE_EVENT(GAME_CHANGE, wxCommandEvent); + +GameTab::GameTab(wxFrame *parent, Game *game) + : wxPanel(parent), game(game), TabInfos(TabInfos::GAME) { + // Splitter + wxSplitterWindow *splitter = new wxSplitterWindow(this, wxID_ANY); + splitter->SetMinimumPaneSize(100); + + // Panels + board_panel = new BoardPanel((wxFrame *)splitter, game); + editor_panel = new EditorPanel((wxFrame *)splitter, game); + splitter->SplitVertically(board_panel, editor_panel); + + // Setup splitter + wxBoxSizer *topSizer = new wxBoxSizer(wxHORIZONTAL); + topSizer->Add(splitter, 1, wxEXPAND); + SetSizerAndFit(topSizer); + + // Refresh panels + wxCommandEvent event(REFRESH_TAB_TITLE, GetId()); + event.SetEventObject(this); + OnRefreshTabTitle(event); + board_panel->Notify(); + editor_panel->Notify(); + + Bind(REFRESH_TAB_TITLE, &GameTab::OnRefreshTabTitle, this, wxID_ANY); + Bind(GAME_CHANGE, &GameTab::OnGameChange, this, wxID_ANY); +} + +void GameTab::OnGameChange(wxCommandEvent &event) { + board_panel->Notify(); + editor_panel->Notify(); +} + +void GameTab::OnRefreshTabTitle(wxCommandEvent &event) { + std::string white = game->GetTag("White"); + std::string black = game->GetTag("Black"); + if (white.size() == 0 && black.size() == 0) { + SetLabel("New Game"); + } else { + SetLabel(white + "-" + black); + } + event.SetEventObject(this); + event.Skip(); +} + +void GameTab::ApplyPreferences() { + board_panel->ApplyPreferences(); +} -- cgit v1.2.3