From bf485fa577a76731f9eac97de3b0a647cd492e49 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Mon, 28 Feb 2022 13:44:27 +0100 Subject: Refactoring game tab --- src/game_tab/editor/EditorPanel.cpp | 193 ------------------------------------ 1 file changed, 193 deletions(-) delete mode 100644 src/game_tab/editor/EditorPanel.cpp (limited to 'src/game_tab/editor/EditorPanel.cpp') diff --git a/src/game_tab/editor/EditorPanel.cpp b/src/game_tab/editor/EditorPanel.cpp deleted file mode 100644 index 9f14f37..0000000 --- a/src/game_tab/editor/EditorPanel.cpp +++ /dev/null @@ -1,193 +0,0 @@ -#include "EditorPanel.hpp" -#include "LiveEngineDialog.hpp" - -wxDEFINE_EVENT(GOTO_MOVE_EVENT, wxCommandEvent); -wxDEFINE_EVENT(DELETE_MOVE_EVENT, wxCommandEvent); -wxDEFINE_EVENT(PROMOTE_MOVE_EVENT, wxCommandEvent); -wxDEFINE_EVENT(SET_AS_MAINLINE_EVENT, wxCommandEvent); -wxDEFINE_EVENT(PREVIOUS_MOVE_EVENT, wxCommandEvent); -wxDEFINE_EVENT(NEXT_MOVE_EVENT, wxCommandEvent); - -EditorPanel::EditorPanel(wxFrame *parent, Game *game) - : TabGameRightPanel(parent), game(game), selected_item(-1) { - editor_canvas = new EditorCanvas((wxFrame *)editor_page); - editor_canvas_sizer->Add(editor_canvas, 1, wxEXPAND); - tags_list->InsertColumn(0, L"Name", wxLIST_FORMAT_LEFT, 200); - tags_list->InsertColumn(1, L"Value", wxLIST_FORMAT_LEFT, 500); - tagTextCtrl->SetHint("Tag"); - valueTextCtrl->SetHint("Value"); - - /*LiveEngineDialog *diag=new LiveEngineDialog(this, "Stockfish"); - diag->SetFEN("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"); - - diag->Show();*/ - RefreshTagsList(); - - // Bind events - this->Bind(wxEVT_TEXT, &EditorPanel::OnCommentChange, this, - COMMENT_INPUT_BOX); - this->Bind(GOTO_MOVE_EVENT, &EditorPanel::OnGotoMove, this, wxID_ANY); - this->Bind(DELETE_MOVE_EVENT, &EditorPanel::OnMoveDelete, this, wxID_ANY); - this->Bind(PROMOTE_MOVE_EVENT, &EditorPanel::OnMovePromote, this, wxID_ANY); - this->Bind(SET_AS_MAINLINE_EVENT, &EditorPanel::OnMoveSetAsMainline, this, - wxID_ANY); - this->Bind(NEXT_MOVE_EVENT, &EditorPanel::OnNextMove, this, wxID_ANY); - this->Bind(PREVIOUS_MOVE_EVENT, &EditorPanel::OnPreviousMove, this, wxID_ANY); - this->Bind(wxEVT_LIST_ITEM_SELECTED, &EditorPanel::OnTagSelected, this, - wxID_ANY); - this->Bind(wxEVT_LIST_ITEM_DESELECTED, &EditorPanel::OnTagDeselected, this, - wxID_ANY); - this->Bind(wxEVT_BUTTON, &EditorPanel::OnApply, this, UPDATE_BTN); - this->Bind(wxEVT_BUTTON, &EditorPanel::OnDelete, this, DELETE_BTN); - this->Bind(wxEVT_BUTTON, &EditorPanel::OnLiveAnalysis, this, - LIVE_ANALYSIS_GAME_BUTTON); - - ApplyPreferences(); -} - -void EditorPanel::OnLiveAnalysis(wxCommandEvent &event) { - int selection = engine_list->GetSelection(); - if (selection != wxNOT_FOUND) { - LiveEngineDialog *diag = new LiveEngineDialog(this, engine_list->GetString(selection).ToStdString()); - diag->SetFEN("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"); - diag->Show(); - } -} - -void EditorPanel::OnTagSelected(wxListEvent &event) { - wxListItem item = event.GetItem(); - std::string key = item.GetText().ToStdString(); - tagTextCtrl->ChangeValue(key); - item.SetColumn(1); - tags_list->GetItem(item); - valueTextCtrl->ChangeValue(item.GetText().ToStdString()); - selected_item = item.GetId(); - delete_button->Enable(true); -} - -void EditorPanel::OnTagDeselected(wxListEvent &event) { - selected_item = -1; - delete_button->Enable(false); -} - -void EditorPanel::NotifyBoard() { - wxCommandEvent previousEvent(GAME_CHANGE, GetId()); - previousEvent.SetEventObject(this); - ProcessEvent(previousEvent); -} - -void EditorPanel::OnCommentChange(wxCommandEvent &event) { - wxLogDebug("EditorPanel: comment input change"); - HalfMove *m = game->GetCurrentMove(); - if (m != NULL) { - m->SetComment(event.GetString().ToStdString()); - } - editor_canvas->Refresh(); -} - -void EditorPanel::OnApply(wxCommandEvent &event) { - std::string key = tagTextCtrl->GetValue().ToStdString(); - if (key == "FEN") { - SHOW_DIALOG_ERROR("Editing the FEN tag is forbidden"); - return; - } - if (key.size() > 0) { - std::string value = valueTextCtrl->GetValue().ToStdString(); - game->SetTag(key, value); - RefreshTagsList(); - wxCommandEvent event(REFRESH_TAB_TITLE, GetId()); - event.SetEventObject(this); - ProcessEvent(event); - } -} - -void EditorPanel::OnDelete(wxCommandEvent &event) { - if (selected_item >= 0) { - wxListItem item; - item.SetColumn(0); - item.SetId(selected_item); - tags_list->GetItem(item); - std::string key = item.GetText().ToStdString(); - if (key != "FEN") { - game->DeleteTag(key); - selected_item = -1; - RefreshTagsList(); - } else { - SHOW_DIALOG_ERROR("Deleting the FEN tag is forbidden."); - } - } -} - -void EditorPanel::OnGotoMove(wxCommandEvent &event) { - wxLogDebug("EditorPanel: received GOTO_MOVE_EVENT"); - game->SetCurrent((HalfMove *)event.GetClientData()); - NotifyBoard(); - editor_canvas->Refresh(); -} - -void EditorPanel::OnMoveDelete(wxCommandEvent &event) { - game->DeleteMove((HalfMove *)event.GetClientData()); - NotifyBoard(); - editor_canvas->Refresh(); -} - -void EditorPanel::OnMovePromote(wxCommandEvent &event) { - wxLogDebug("EditorPanel: promote move called"); - game->PromoteMove((HalfMove *)event.GetClientData()); - NotifyBoard(); - editor_canvas->Refresh(); -} - -void EditorPanel::OnMoveSetAsMainline(wxCommandEvent &event) { - wxLogDebug("EditorPanel: set move as mainline called"); - game->SetMoveAsMainline((HalfMove *)event.GetClientData()); - NotifyBoard(); - editor_canvas->Refresh(); -} - -void EditorPanel::Notify() { - HalfMove *m = game->GetCurrentMove(); - if (m != NULL) { - comment_input->ChangeValue( - m->GetComment()); // ChangeValue do not raise events - } - editor_canvas->SetMoves(game->GetMoves(), m); -} - -void EditorPanel::ApplyPreferences() { - engine_list->Clear(); - CONFIG_OPEN(conf); - conf->SetPath("engines/"); - wxString engine_name; - long index; - if (conf->GetFirstGroup(engine_name, index)) { - do { - engine_list->Append(engine_name); - } while (conf->GetNextGroup(engine_name, index)); - } - - CONFIG_CLOSE(conf); -} - -void EditorPanel::RefreshTagsList() { - tags_list->DeleteAllItems(); - for (std::string s : game->ListTags()) { - long index = tags_list->InsertItem(0, s); - tags_list->SetItem(index, 1, game->GetTag(s)); - if (s == "FEN") { - tags_list->SetItemBackgroundColour(index, wxColour(200, 200, 200)); - } - } -} - -void EditorPanel::OnPreviousMove(wxCommandEvent &event) { - game->Previous(); - Notify(); - NotifyBoard(); -} - -void EditorPanel::OnNextMove(wxCommandEvent &event) { - game->Next(); - Notify(); - NotifyBoard(); -} \ No newline at end of file -- cgit v1.2.3