aboutsummaryrefslogtreecommitdiff
path: root/src/base_tab/BaseTab.cpp
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-12-23 16:49:33 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-12-23 16:49:33 +0100
commitc49b48df010c97553aec80491c8fb505e21bcbf1 (patch)
treeebd2d97591c08f1b10fc49670a63dde43786ef6c /src/base_tab/BaseTab.cpp
parent42ca3ee005118f656f29190120c68f99692ab1be (diff)
Improve db tab
Diffstat (limited to 'src/base_tab/BaseTab.cpp')
-rw-r--r--src/base_tab/BaseTab.cpp126
1 files changed, 11 insertions, 115 deletions
diff --git a/src/base_tab/BaseTab.cpp b/src/base_tab/BaseTab.cpp
index 19e9f0e..67577e0 100644
--- a/src/base_tab/BaseTab.cpp
+++ b/src/base_tab/BaseTab.cpp
@@ -3,125 +3,21 @@
#include <wx/filename.h>
BaseTab::BaseTab(wxFrame *parent, std::string base_file)
- : TabBase_TabGames(parent), base_file(base_file), TabInfos(TabInfos::BASE),
- base(NULL) {
+ : TabBase(parent), TabInfos(TabInfos::BASE){
- game_list->InsertColumn(0, L"id", wxLIST_FORMAT_LEFT, 50);
- game_list->InsertColumn(1, L"White", wxLIST_FORMAT_LEFT, 200);
- game_list->InsertColumn(2, L"Black", wxLIST_FORMAT_LEFT, 200);
- game_list->InsertColumn(3, L"Event", wxLIST_FORMAT_LEFT, 150);
- game_list->InsertColumn(4, L"Round", wxLIST_FORMAT_LEFT, 100);
- game_list->InsertColumn(5, L"Result", wxLIST_FORMAT_LEFT, 200);
- game_list->InsertColumn(6, L"ECO", wxLIST_FORMAT_LEFT, 200);
+ // Games tab
+ games_tab=new BaseGameTab((wxFrame *)notebook,base_file);
+ notebook->AddPage(games_tab, "Games",true); // true for selecting the tab
- this->Bind(wxEVT_BUTTON, &BaseTab::OnDelete, this, ID_DELETE_BUTTON);
- this->Bind(wxEVT_BUTTON, &BaseTab::OnSave, this, ID_SAVE_BUTTON);
- this->Bind(wxEVT_BUTTON, &BaseTab::OnExport, this, ID_EXPORT_BUTTON);
- this->Bind(wxEVT_LIST_ITEM_ACTIVATED, &BaseTab::OnOpenGame, this, wxID_ANY);
- this->Bind(wxEVT_BUTTON, &BaseTab::OnImport, this, ID_IMPORT_BUTTON);
+ // Import tab
+ import_tab=new BaseImportTab((wxFrame *)notebook);
+ notebook->AddPage(import_tab, "Import");
- current_base->SetLabel(base_file);
- LoadFile();
-}
-
-void BaseTab::OnImport(wxCommandEvent &event) {
- AppendGameDialog *dia = new AppendGameDialog(this, base);
- dia->ShowModal();
- game_list->DeleteAllItems();
- deleted.clear();
- edited.clear();
- LoadFile();
-}
-
-void BaseTab::OnDelete(wxCommandEvent &event) {
- long selected = -1;
-
- while ((selected = game_list->GetNextItem(selected, wxLIST_NEXT_ALL,
- wxLIST_STATE_SELECTED)) !=
- wxNOT_FOUND) {
- wxListItem listItem;
- listItem.m_itemId = selected; // sets row
- listItem.m_col = 0; // sets column
- game_list->GetItem(listItem); // gets item
- deleted.push_back(std::stoi(listItem.GetText().ToStdString()));
- for (std::uint32_t &i : deleted) {
- wxLogDebug("%d", i);
- }
- game_list->SetItemBackgroundColour(selected, *wxRED);
- }
-}
-
-void BaseTab::OnSave(wxCommandEvent &event) {
- std::vector<std::shared_ptr<GameBase>> new_games_bases;
- std::vector<std::shared_ptr<Game>> 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();
- edited.clear();
- deleted.clear();
- LoadFile();
-}
-
-void BaseTab::OnOpenGame(wxListEvent &event) {
- wxLogDebug("Open!");
- long id = std::stoi(event.GetItem().GetText().ToStdString());
- std::shared_ptr<Game> *g = new std::shared_ptr<Game>(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);
- ProcessEvent(newGameEvent);
- }
+ RefreshLabel();
}
void BaseTab::ApplyPreferences() {}
-void BaseTab::OnExport(wxCommandEvent &event) {
- wxFileDialog openFileDialog(this, _("Export database"), "", "",
- "Database files (*.pgn)|*.pgn",
- wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
- if (openFileDialog.ShowModal() != wxID_CANCEL) {
- std::string path = openFileDialog.GetPath().ToStdString();
- wxFileName file(base_file);
- wxString ext = file.GetExt().Lower();
- GameBase *base;
- if (ext == "pgn") {
- base = new PGNGameBase(path);
- base->Export(this->base);
- delete base;
- }
- }
-}
-
-void BaseTab::LoadFile() {
- wxFileName file(base_file);
- wxString ext = file.GetExt().Lower();
- if (ext == "pgn") {
- base = std::shared_ptr<GameBase>(new PGNGameBase(base_file));
- SetLabel(file.GetName() + "(PGN)");
- }
-
- if (base != NULL) {
- long id = 0;
- while (base->NextGame()) {
- long index =
- game_list->InsertItem(0, std::to_string(id)); // want this for col. 1
- game_list->SetItem(index, 1, base->GetTag("White"));
- game_list->SetItem(index, 2, base->GetTag("Black"));
- game_list->SetItem(index, 3, base->GetTag("Event"));
- game_list->SetItem(index, 4, base->GetTag("Round"));
- game_list->SetItem(index, 5, base->GetTag("Result"));
- game_list->SetItem(index, 6, base->GetTag("ECO"));
- id++;
- }
- }
-
- wxCommandEvent event(REFRESH_TAB_TITLE, GetId());
- event.SetEventObject(this);
- ProcessEvent(event);
-}
+void BaseTab::RefreshLabel(){
+ SetLabel("Database XX");
+} \ No newline at end of file