diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2022-12-25 18:30:56 +0100 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2022-12-25 18:30:56 +0100 |
| commit | 5df6e9395c4ec744f38e7ce874ff7c02e8a3afbd (patch) | |
| tree | c8435f7b80ee82adee59a0e1a7e84abc6302b3e2 /src | |
| parent | 8cc460fd202703646f7c908a4fb2a485b21dc9e1 (diff) | |
Improve game filtering
Diffstat (limited to 'src')
| -rw-r--r-- | src/base_tab/BaseGameTab.cpp | 11 | ||||
| -rw-r--r-- | src/base_tab/BaseGameTab.hpp | 1 | ||||
| -rw-r--r-- | src/base_tab/GameListManager.cpp | 22 | ||||
| -rw-r--r-- | src/base_tab/GameListManager.hpp | 4 | ||||
| -rw-r--r-- | src/gui.cpp | 4 | ||||
| -rw-r--r-- | src/gui.h | 6 |
6 files changed, 44 insertions, 4 deletions
diff --git a/src/base_tab/BaseGameTab.cpp b/src/base_tab/BaseGameTab.cpp index 6084d67..29729c4 100644 --- a/src/base_tab/BaseGameTab.cpp +++ b/src/base_tab/BaseGameTab.cpp @@ -16,12 +16,23 @@ BaseGameTab::BaseGameTab(wxFrame *parent, std::string base_file, TabInfos *main_ this->Bind(wxEVT_BUTTON, &BaseGameTab::OnExport, this, ID_EXPORT_BUTTON); this->Bind(wxEVT_LIST_ITEM_ACTIVATED, &BaseGameTab::OnOpenGame, this, wxID_ANY); this->Bind(wxEVT_BUTTON, &BaseGameTab::OnImport, this, ID_IMPORT_BUTTON); + this->Bind(wxEVT_BUTTON, &BaseGameTab::OnApplyFilter, this, ID_APPLY_FILTER_BUTTON); + this->Bind(wxEVT_TEXT_ENTER, &BaseGameTab::OnApplyFilter, this, ID_SEARCH_TERMS); current_base->SetLabel(base_file); search_terms->SetHint("e.g: Paul Morphy"); LoadFile(); } +void BaseGameTab::OnApplyFilter(wxCommandEvent &event){ + wxString terms=search_terms->GetValue(); + if(terms.length()>0){ + glm->Filter(terms.ToStdString()); + } else { + glm->ClearFilter(); + } +} + void BaseGameTab::OnImport(wxCommandEvent &event) { AppendGameDialog *dia = new AppendGameDialog(this, base); dia->ShowModal(); diff --git a/src/base_tab/BaseGameTab.hpp b/src/base_tab/BaseGameTab.hpp index 45cc552..c9be350 100644 --- a/src/base_tab/BaseGameTab.hpp +++ b/src/base_tab/BaseGameTab.hpp @@ -27,6 +27,7 @@ public: void OnExport(wxCommandEvent &event); void OnOpenGame(wxListEvent &event); void OnImport(wxCommandEvent &event); + void OnApplyFilter(wxCommandEvent &event); std::shared_ptr<Game> GetGame() { return (std::shared_ptr<Game>(NULL)); } std::shared_ptr<GameBase> GetBase() { return (std::shared_ptr<GameBase>(base)); }; };
\ No newline at end of file diff --git a/src/base_tab/GameListManager.cpp b/src/base_tab/GameListManager.cpp index e073eed..35b6158 100644 --- a/src/base_tab/GameListManager.cpp +++ b/src/base_tab/GameListManager.cpp @@ -68,3 +68,25 @@ long GameListManager::GetItemGameId(long item){ return std::stol(listItem.GetText().ToStdString()); } +void GameListManager::Filter(std::string terms){ + ClearDisplayedRow(); + for(int i=0;i<rows.size();i++){ + RType row=rows[i]; + if(TERMS_IN(White) || + TERMS_IN(Black) || + TERMS_IN(Event) || + TERMS_IN(Round) || + TERMS_IN(Result) || + TERMS_IN(Eco)){ + DisplayRow(i); + } + } +} + +void GameListManager::ClearFilter() { + ClearDisplayedRow(); + for(int i=0;i<rows.size();i++){ + DisplayRow(i); + } +} + diff --git a/src/base_tab/GameListManager.hpp b/src/base_tab/GameListManager.hpp index edfd18b..5c80a68 100644 --- a/src/base_tab/GameListManager.hpp +++ b/src/base_tab/GameListManager.hpp @@ -1,5 +1,7 @@ #include "ochess.hpp" +#define TERMS_IN(COL) (row.COL.find(terms) != std::string::npos) + typedef std::string CType; typedef struct Item { @@ -26,4 +28,6 @@ public: void MarkItemAsDeleted(long item); std::vector<long> GetSelectedItems(); long GetItemGameId(long item); + void Filter(std::string terms); + void ClearFilter(); };
\ No newline at end of file diff --git a/src/gui.cpp b/src/gui.cpp index db34ebb..ae717a5 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -549,10 +549,10 @@ TabBase_TabGames::TabBase_TabGames( wxWindow* parent, wxWindowID id, const wxPoi m_staticText28->Wrap( -1 ); bSizer34->Add( m_staticText28, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - search_terms = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + search_terms = new wxTextCtrl( this, ID_SEARCH_TERMS, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); bSizer34->Add( search_terms, 1, wxALL|wxEXPAND, 5 ); - apply_filter_button = new wxButton( this, wxID_ANY, wxT("Apply"), wxDefaultPosition, wxDefaultSize, 0 ); + apply_filter_button = new wxButton( this, ID_APPLY_FILTER_BUTTON, wxT("Apply"), wxDefaultPosition, wxDefaultSize, 0 ); bSizer34->Add( apply_filter_button, 0, wxALL, 5 ); @@ -57,8 +57,10 @@ #define LIVE_ANALYSIS_GAME_BUTTON 1012 #define ID_SAVE_BUTTON 1013 #define ID_EXPORT_BUTTON 1014 -#define ID_IMPORT_BUTTON 1015 -#define ID_DELETE_BUTTON 1016 +#define ID_SEARCH_TERMS 1015 +#define ID_APPLY_FILTER_BUTTON 1016 +#define ID_IMPORT_BUTTON 1017 +#define ID_DELETE_BUTTON 1018 /////////////////////////////////////////////////////////////////////////////// /// Class MainFrame |
