mirror of
https://gitlab.com/manzerbredes/ochess.git
synced 2025-06-14 18:07:40 +00:00
Improve engine support
This commit is contained in:
parent
e5aa5be42c
commit
65e9049351
9 changed files with 761 additions and 10 deletions
|
@ -1,5 +1,6 @@
|
|||
#include "MainWindow.hpp"
|
||||
#include "ChessArbiter.hpp"
|
||||
#include "engine_tab/EngineTab.hpp"
|
||||
#include "pgnp.hpp"
|
||||
#include "preferences/preferences.hpp"
|
||||
|
||||
|
@ -40,11 +41,16 @@ MainWindow::MainWindow()
|
|||
wxMenu *menuBase = new wxMenu;
|
||||
menuBase->Append(5, "New", "Create new database");
|
||||
|
||||
// Engine menu
|
||||
wxMenu *engineMenu = new wxMenu;
|
||||
engineMenu->Append(6, "New", "Create a new engine configuration");
|
||||
|
||||
/// Menu bar
|
||||
menuBar = new wxMenuBar;
|
||||
menuBar->Append(menuFile, "&File");
|
||||
menuBar->Append(menuGame, "&Game");
|
||||
menuBar->Append(menuBase, "&Database");
|
||||
menuBar->Append(engineMenu, "&Engines");
|
||||
SetMenuBar(menuBar);
|
||||
|
||||
// Create the wxNotebook widget
|
||||
|
@ -57,8 +63,12 @@ MainWindow::MainWindow()
|
|||
Bind(NEW_GAME_EVENT, &MainWindow::OnNewGame, this, wxID_ANY);
|
||||
Bind(wxEVT_CLOSE_WINDOW, &MainWindow::OnClose, this);
|
||||
|
||||
/*BaseTab *bt = new BaseTab((wxFrame *)notebook, "/home/loic/hartwig_tests.pgn");
|
||||
notebook->AddPage(bt, bt->GetLabel());
|
||||
/*BaseTab *bt = new BaseTab((wxFrame *)notebook,
|
||||
"/home/loic/hartwig_tests.pgn"); notebook->AddPage(bt, bt->GetLabel());
|
||||
notebook->SetSelection(notebook->GetPageIndex(bt));*/
|
||||
|
||||
/*EngineTab *bt = new EngineTab((wxWindow *)notebook,
|
||||
"/home/loic/.local/bin/stockfish"); notebook->AddPage(bt, bt->GetLabel());
|
||||
notebook->SetSelection(notebook->GetPageIndex(bt));*/
|
||||
}
|
||||
|
||||
|
|
21
src/engine_tab/EngineTab.cpp
Normal file
21
src/engine_tab/EngineTab.cpp
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
13
src/engine_tab/EngineTab.hpp
Normal file
13
src/engine_tab/EngineTab.hpp
Normal 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); };
|
||||
};
|
63
src/engine_tab/EngineTabBF.cpp
Normal file
63
src/engine_tab/EngineTabBF.cpp
Normal 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()
|
||||
{
|
||||
}
|
56
src/engine_tab/EngineTabBF.h
Normal file
56
src/engine_tab/EngineTabBF.h
Normal 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();
|
||||
|
||||
};
|
||||
|
|
@ -50,7 +50,7 @@ void Abort(std::string msg);
|
|||
*/
|
||||
class TabInfos {
|
||||
public:
|
||||
typedef enum Type { GAME, BASE, NONE } Type;
|
||||
typedef enum Type { GAME, BASE, ENGINE, NONE } Type;
|
||||
Type type;
|
||||
TabInfos(Type type_) : type(type_) {}
|
||||
virtual void ApplyPreferences() = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue