From e601902dd5a9f023594fef6a0f4995e59b4d9a0e Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Sat, 26 Feb 2022 20:34:42 +0100 Subject: Improve engine managemen --- src/engine_tab/EngineTab.cpp | 40 ++++++++++++++++++++++++++++++++-------- src/engine_tab/EngineTab.hpp | 6 +++++- src/engine_tab/EngineTabBF.cpp | 3 +++ src/engine_tab/EngineTabBF.h | 2 ++ 4 files changed, 42 insertions(+), 9 deletions(-) (limited to 'src/engine_tab') diff --git a/src/engine_tab/EngineTab.cpp b/src/engine_tab/EngineTab.cpp index ae9b447..ca2880f 100644 --- a/src/engine_tab/EngineTab.cpp +++ b/src/engine_tab/EngineTab.cpp @@ -1,20 +1,27 @@ #include "EngineTab.hpp" -EngineTab::EngineTab(wxWindow *parent, uciadapter::UCI *engine,std::string engine_path_or_name) +EngineTab::EngineTab(wxWindow *parent, uciadapter::UCI *engine, + std::string engine_path_or_name) : EngineTabBF(parent), TabInfos(TabInfos::ENGINE), enginePath(engine_path_or_name), engine(engine) { SetLabel("New Engine"); engine_location->SetValue(engine_path_or_name); - confGroup = "engines/bob"; CONFIG_OPEN(conf); - conf->DeleteGroup(confGroup); - bool configExists = conf->HasGroup(confGroup); - conf->Write(confGroup + "/path", wxString(engine_path_or_name)); - CONFIG_CLOSE(conf); - if (!configExists) { - InitConfiguration(); + // conf->DeleteGroup(confGroup); + engineName = "NewEngine"; + confGroup = "engines/" + engineName; + std::uint32_t key = 2; + while (conf->HasGroup(confGroup)) { + engineName = "NewEngine" + std::to_string(key); + confGroup = "engines/" + engineName; + key++; } + engine_name->SetValue(engineName); + + // conf->Write(confGroup + "/path", wxString(engine_path_or_name)); + CONFIG_CLOSE(conf); + InitConfiguration(); // Build wxPropertyGrid according to engine configuration CONFIG_OPEN(conf2); @@ -43,10 +50,27 @@ EngineTab::EngineTab(wxWindow *parent, uciadapter::UCI *engine,std::string engin CONFIG_CLOSE(conf2); Bind(wxEVT_BUTTON, &EngineTab::OnSave, this, ENGINE_SAVE_CONF_BUTTON); + Bind(wxEVT_BUTTON, &EngineTab::OnDelete, this, ENGINE_DELETE_CONF_BUTTON); +} + +void EngineTab::OnDelete(wxCommandEvent &event) { + CONFIG_OPEN(conf); + conf->DeleteGroup(confGroup); + CONFIG_CLOSE(conf); + + wxCommandEvent closeTabEvent(CLOSE_TAB_EVENT, GetId()); + closeTabEvent.SetEventObject(this); + ProcessEvent(closeTabEvent); } void EngineTab::OnSave(wxCommandEvent &event) { CONFIG_OPEN(conf2); + wxString new_engine_name = engine_name->GetValue(); + if (new_engine_name != engineName) { + conf2->RenameGroup(confGroup, "engines/" + new_engine_name); + engineName = new_engine_name; + confGroup = "engines/" + engineName; + } long index; std::string optsPath = confGroup + "/options"; conf2->SetPath(optsPath); diff --git a/src/engine_tab/EngineTab.hpp b/src/engine_tab/EngineTab.hpp index c4e8a52..6e4913b 100644 --- a/src/engine_tab/EngineTab.hpp +++ b/src/engine_tab/EngineTab.hpp @@ -2,10 +2,13 @@ #include "UCI.hpp" #include "ochess.hpp" +// Foreign event +wxDECLARE_EVENT(CLOSE_TAB_EVENT, wxCommandEvent); + class EngineTab : public EngineTabBF, public TabInfos { uciadapter::UCI *engine; std::string confGroup, enginePath; - + std::string engineName; void InitConfiguration(); public: @@ -15,4 +18,5 @@ public: void *GetGame() { return (NULL); } void *GetBase() { return (NULL); } void OnSave(wxCommandEvent &event); + void OnDelete(wxCommandEvent &event); }; \ No newline at end of file diff --git a/src/engine_tab/EngineTabBF.cpp b/src/engine_tab/EngineTabBF.cpp index 0e33939..90ba99d 100644 --- a/src/engine_tab/EngineTabBF.cpp +++ b/src/engine_tab/EngineTabBF.cpp @@ -53,6 +53,9 @@ EngineTabBF::EngineTabBF( wxWindow* parent, wxWindowID id, const wxPoint& pos, c save_button = new wxButton( this, ENGINE_SAVE_CONF_BUTTON, wxT("Save"), wxDefaultPosition, wxDefaultSize, 0 ); main_sizer->Add( save_button, 0, wxALL|wxEXPAND, 5 ); + delete_button = new wxButton( this, ENGINE_DELETE_CONF_BUTTON, wxT("Delete engine"), wxDefaultPosition, wxDefaultSize, 0 ); + main_sizer->Add( delete_button, 0, wxALL|wxEXPAND, 5 ); + this->SetSizer( main_sizer ); this->Layout(); diff --git a/src/engine_tab/EngineTabBF.h b/src/engine_tab/EngineTabBF.h index fc65a03..fe7dae1 100644 --- a/src/engine_tab/EngineTabBF.h +++ b/src/engine_tab/EngineTabBF.h @@ -29,6 +29,7 @@ /////////////////////////////////////////////////////////////////////////// #define ENGINE_SAVE_CONF_BUTTON 1000 +#define ENGINE_DELETE_CONF_BUTTON 1001 /////////////////////////////////////////////////////////////////////////////// /// Class EngineTabBF @@ -46,6 +47,7 @@ class EngineTabBF : public wxPanel wxStaticText* params_label; wxPropertyGrid* engine_parameters; wxButton* save_button; + wxButton* delete_button; public: -- cgit v1.2.3