From 5df6e9395c4ec744f38e7ce874ff7c02e8a3afbd Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Sun, 25 Dec 2022 18:30:56 +0100 Subject: [PATCH] Improve game filtering --- src/base_tab/BaseGameTab.cpp | 11 +++++++++++ src/base_tab/BaseGameTab.hpp | 1 + src/base_tab/GameListManager.cpp | 22 ++++++++++++++++++++++ src/base_tab/GameListManager.hpp | 4 ++++ src/gui.cpp | 4 ++-- src/gui.h | 6 ++++-- tools/wxFrameBuilder.fbp | 6 +++--- 7 files changed, 47 insertions(+), 7 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 GetGame() { return (std::shared_ptr(NULL)); } std::shared_ptr GetBase() { return (std::shared_ptr(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 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 ); diff --git a/src/gui.h b/src/gui.h index 3775973..347cd89 100644 --- a/src/gui.h +++ b/src/gui.h @@ -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 diff --git a/tools/wxFrameBuilder.fbp b/tools/wxFrameBuilder.fbp index 99b3709..2e67c94 100644 --- a/tools/wxFrameBuilder.fbp +++ b/tools/wxFrameBuilder.fbp @@ -5540,7 +5540,7 @@ 0 0 - wxID_ANY + ID_SEARCH_TERMS 0 @@ -5559,7 +5559,7 @@ Resizable 1 - + wxTE_PROCESS_ENTER ; ; forward_declare 0 @@ -5610,7 +5610,7 @@ 0 0 - wxID_ANY + ID_APPLY_FILTER_BUTTON Apply 0