diff --git a/src/base_tab/BaseTab.cpp b/src/base_tab/BaseTab.cpp index bc1c09f..9234a47 100644 --- a/src/base_tab/BaseTab.cpp +++ b/src/base_tab/BaseTab.cpp @@ -2,7 +2,8 @@ #include BaseTab::BaseTab(wxFrame *parent, std::string base_file) - : BasePanelBF(parent), base_file(base_file), TabInfos(TabInfos::BASE), base(NULL) { + : BasePanelBF(parent), base_file(base_file), TabInfos(TabInfos::BASE), + base(NULL) { game_list->InsertColumn(0, L"id", wxLIST_FORMAT_LEFT, 50); game_list->InsertColumn(1, L"White", wxLIST_FORMAT_LEFT, 200); @@ -38,6 +39,9 @@ void BaseTab::OnDelete(wxCommandEvent &event) { void BaseTab::OnSave(wxCommandEvent &event) { std::vector new_games_bases; std::vector new_games; + new_games.insert( + new_games.end(), edited.begin(), + edited.end()); // Add edited game (since they are also deleted) base->Save(deleted, new_games_bases, new_games); game_list->DeleteAllItems(); deleted.clear(); @@ -49,6 +53,9 @@ void BaseTab::OnOpenGame(wxListEvent &event) { long id = std::stoi(event.GetItem().GetText().ToStdString()); Game *g = base->GetGame(id); if (g != NULL) { + edited.push_back(g); + deleted.push_back(id); + game_list->SetItemBackgroundColour(event.GetIndex(), *wxGREEN); wxCommandEvent newGameEvent(NEW_GAME_EVENT, GetId()); newGameEvent.SetEventObject(this); newGameEvent.SetClientData(g); diff --git a/src/base_tab/BaseTab.hpp b/src/base_tab/BaseTab.hpp index 2980b22..cd3aff0 100644 --- a/src/base_tab/BaseTab.hpp +++ b/src/base_tab/BaseTab.hpp @@ -11,6 +11,7 @@ wxDECLARE_EVENT(REFRESH_TAB_TITLE, wxCommandEvent); class BaseTab : public BasePanelBF, public TabInfos { GameBase *base; std::vector deleted; + std::vector edited; std::string base_file; public: diff --git a/src/base_tab/gamebase/PGNGameBase.cpp b/src/base_tab/gamebase/PGNGameBase.cpp index a5a8b02..bd83abc 100644 --- a/src/base_tab/gamebase/PGNGameBase.cpp +++ b/src/base_tab/gamebase/PGNGameBase.cpp @@ -79,6 +79,11 @@ void PGNGameBase::Save(std::vector to_ignore, } // Now add new games + for (Game *g : new_games) { + new_pgn.Write(g->GetPGN()); + new_pgn.Write("\n\n"); + } + // new_games->Reset(); // while (new_games->NextGame()) { // Game *g = new_games->GetCurrentGame();