Improve engine support

This commit is contained in:
Loic Guegan 2022-02-26 17:05:47 +01:00
parent e5aa5be42c
commit 65e9049351
9 changed files with 761 additions and 10 deletions

View file

@ -0,0 +1,21 @@
#include "EngineTab.hpp"
EngineTab::EngineTab(wxWindow *parent, std::string engine_path_or_name)
: EngineTabBF(parent), TabInfos(TabInfos::ENGINE) {
SetLabel("New Engine");
engine = new uciadapter::UCI(engine_path_or_name);
engine_location->SetValue(engine_path_or_name);
std::vector<uciadapter::Option> opts = engine->GetOptions();
for (uciadapter::Option &opt : opts) {
if (opt.type == "check") {
engine_parameters->Append(new wxBoolProperty(
opt.name, wxPG_LABEL, opt.default_value == "true"));
} else if (opt.type == "spin") {
engine_parameters->Append(new wxIntProperty(
opt.name, wxPG_LABEL, std::stoi(opt.default_value)));
} else if (opt.type == "string") {
engine_parameters->Append(
new wxStringProperty(opt.name, wxPG_LABEL, opt.default_value));
}
}
}

View file

@ -0,0 +1,13 @@
#include "EngineTabBF.h"
#include "ochess.hpp"
#include "UCI.hpp"
class EngineTab : public EngineTabBF, public TabInfos {
uciadapter::UCI *engine;
public:
EngineTab(wxWindow *parent, std::string engine_path_or_name);
void ApplyPreferences() {}
void *GetGame() { return (NULL); }
void *GetBase() { return (NULL); };
};

View file

@ -0,0 +1,63 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-40-g8042f487)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "EngineTabBF.h"
///////////////////////////////////////////////////////////////////////////
EngineTabBF::EngineTabBF( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name )
{
wxBoxSizer* main_sizer;
main_sizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* engine_name_sizer;
engine_name_sizer = new wxBoxSizer( wxHORIZONTAL );
engine_name_label = new wxStaticText( this, wxID_ANY, wxT("Name:"), wxDefaultPosition, wxDefaultSize, 0 );
engine_name_label->Wrap( -1 );
engine_name_sizer->Add( engine_name_label, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
engine_name = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
engine_name_sizer->Add( engine_name, 1, wxALL, 5 );
main_sizer->Add( engine_name_sizer, 0, wxEXPAND, 5 );
wxBoxSizer* engine_location_sizer;
engine_location_sizer = new wxBoxSizer( wxHORIZONTAL );
engine_location_label = new wxStaticText( this, wxID_ANY, wxT("Location:"), wxDefaultPosition, wxDefaultSize, 0 );
engine_location_label->Wrap( -1 );
engine_location_sizer->Add( engine_location_label, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
engine_location = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
engine_location_sizer->Add( engine_location, 1, wxALL, 5 );
main_sizer->Add( engine_location_sizer, 0, wxEXPAND, 5 );
separator_1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
main_sizer->Add( separator_1, 0, wxEXPAND | wxALL, 5 );
params_label = new wxStaticText( this, wxID_ANY, wxT("Parameters:"), wxDefaultPosition, wxDefaultSize, 0 );
params_label->Wrap( -1 );
main_sizer->Add( params_label, 0, wxALL, 5 );
engine_parameters = new wxPropertyGrid(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxPG_DEFAULT_STYLE|wxPG_SPLITTER_AUTO_CENTER);
main_sizer->Add( engine_parameters, 1, wxALL|wxEXPAND, 5 );
save_button = new wxButton( this, wxID_ANY, wxT("Save"), wxDefaultPosition, wxDefaultSize, 0 );
main_sizer->Add( save_button, 0, wxALL|wxEXPAND, 5 );
this->SetSizer( main_sizer );
this->Layout();
}
EngineTabBF::~EngineTabBF()
{
}

View file

@ -0,0 +1,56 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-40-g8042f487)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#pragma once
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/textctrl.h>
#include <wx/sizer.h>
#include <wx/statline.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/propgrid/propgrid.h>
#include <wx/propgrid/advprops.h>
#include <wx/button.h>
#include <wx/panel.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class EngineTabBF
///////////////////////////////////////////////////////////////////////////////
class EngineTabBF : public wxPanel
{
private:
protected:
wxStaticText* engine_name_label;
wxTextCtrl* engine_name;
wxStaticText* engine_location_label;
wxTextCtrl* engine_location;
wxStaticLine* separator_1;
wxStaticText* params_label;
wxPropertyGrid* engine_parameters;
wxButton* save_button;
public:
EngineTabBF( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,300 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
~EngineTabBF();
};