diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2022-12-23 16:49:33 +0100 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2022-12-23 16:49:33 +0100 |
| commit | c49b48df010c97553aec80491c8fb505e21bcbf1 (patch) | |
| tree | ebd2d97591c08f1b10fc49670a63dde43786ef6c /src/base_tab/BaseTab.cpp | |
| parent | 42ca3ee005118f656f29190120c68f99692ab1be (diff) | |
Improve db tab
Diffstat (limited to 'src/base_tab/BaseTab.cpp')
| -rw-r--r-- | src/base_tab/BaseTab.cpp | 126 |
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 |
