aboutsummaryrefslogtreecommitdiff
path: root/src/base_tab
diff options
context:
space:
mode:
Diffstat (limited to 'src/base_tab')
-rw-r--r--src/base_tab/AppendGameDialog.cpp14
-rw-r--r--src/base_tab/BaseTab.cpp7
-rw-r--r--src/base_tab/gamebase/PGNGameBase.cpp14
3 files changed, 33 insertions, 2 deletions
diff --git a/src/base_tab/AppendGameDialog.cpp b/src/base_tab/AppendGameDialog.cpp
index 8a76028..bfa33f3 100644
--- a/src/base_tab/AppendGameDialog.cpp
+++ b/src/base_tab/AppendGameDialog.cpp
@@ -24,5 +24,19 @@ void AppendGameDialog::OnImport(wxCommandEvent &event) {
std::vector<GameBase *> new_games_bases;
std::vector<Game *> new_games;
+ wxArrayInt selections;
+ game_list->GetSelections(selections);
+
+ for (int &i : selections) {
+ TabInfos *tinfo = tinfos[i];
+ if (tinfo->type == TabInfos::BASE) {
+ new_games_bases.push_back(static_cast<GameBase *>(tinfo->GetBase()));
+ } else if (tinfo->type == TabInfos::GAME) {
+ new_games.push_back(static_cast<Game *>(tinfo->GetGame()));
+ }
+ }
+
+ base->Save(to_ignore, new_games_bases, new_games);
+
this->Close();
} \ No newline at end of file
diff --git a/src/base_tab/BaseTab.cpp b/src/base_tab/BaseTab.cpp
index 3816b59..fab165e 100644
--- a/src/base_tab/BaseTab.cpp
+++ b/src/base_tab/BaseTab.cpp
@@ -1,6 +1,6 @@
#include "BaseTab.hpp"
-#include <wx/filename.h>
#include "AppendGameDialog.hpp"
+#include <wx/filename.h>
BaseTab::BaseTab(wxFrame *parent, std::string base_file)
: BasePanelBF(parent), base_file(base_file), TabInfos(TabInfos::BASE),
@@ -25,8 +25,11 @@ BaseTab::BaseTab(wxFrame *parent, std::string base_file)
}
void BaseTab::OnImport(wxCommandEvent &event) {
- AppendGameDialog *dia=new AppendGameDialog(this,base);
+ AppendGameDialog *dia = new AppendGameDialog(this, base);
dia->ShowModal();
+ game_list->DeleteAllItems();
+ deleted.clear();
+ LoadFile();
}
void BaseTab::OnDelete(wxCommandEvent &event) {
diff --git a/src/base_tab/gamebase/PGNGameBase.cpp b/src/base_tab/gamebase/PGNGameBase.cpp
index 3be65d7..7a1a6a4 100644
--- a/src/base_tab/gamebase/PGNGameBase.cpp
+++ b/src/base_tab/gamebase/PGNGameBase.cpp
@@ -84,6 +84,20 @@ void PGNGameBase::Save(std::vector<std::uint32_t> to_ignore,
}
// Now add new games
+ for (GameBase *current : new_games_bases) {
+ current->Reset();
+ while (current->NextGame()) {
+ if (several) {
+ new_pgn.Write("\n\n");
+ } else {
+ several = true;
+ }
+ Game *g = current->GetCurrentGame();
+ new_pgn.Write(g->GetPGN());
+ delete g;
+ }
+ }
+
for (Game *g : new_games) {
if (several) {
new_pgn.Write("\n\n");