From ca6c1b1e75e771e3bea596367e502b77dea2c3aa Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Sat, 26 Feb 2022 19:21:52 +0100 Subject: Improve engine support --- src/MainWindow.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/MainWindow.cpp') diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index b3ed9c4..efe3f06 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -1,5 +1,6 @@ #include "MainWindow.hpp" #include "ChessArbiter.hpp" +#include "UCI.hpp" #include "engine_tab/EngineTab.hpp" #include "pgnp.hpp" #include "preferences/preferences.hpp" @@ -44,6 +45,7 @@ MainWindow::MainWindow() // Engine menu wxMenu *engineMenu = new wxMenu; engineMenu->Append(6, "New", "Create a new engine configuration"); + Bind(wxEVT_MENU, &MainWindow::OnNewEngine, this, 6); /// Menu bar menuBar = new wxMenuBar; @@ -72,6 +74,23 @@ MainWindow::MainWindow() notebook->SetSelection(notebook->GetPageIndex(bt));*/ } +void MainWindow::OnNewEngine(wxCommandEvent &event) { + wxFileDialog openFileDialog(this, _("Use engine"), "", "", "Executable|*", + wxFD_OPEN | wxFD_FILE_MUST_EXIST); + if (openFileDialog.ShowModal() != wxID_CANCEL) { + std::string path = openFileDialog.GetPath().ToStdString(); + uciadapter::UCI *engine; + try { + engine = new uciadapter::UCI(path); + EngineTab *bt = new EngineTab((wxWindow *)notebook, engine, path); + notebook->AddPage(bt, bt->GetLabel()); + notebook->SetSelection(notebook->GetPageIndex(bt)); + } catch (...) { + SHOW_DIALOG_ERROR("Could not communicate with the engine"); + } + } +} + void MainWindow::OnSettings(wxCommandEvent &event) { if (prefsEditor != NULL) { delete prefsEditor; -- cgit v1.2.3