aboutsummaryrefslogtreecommitdiff
path: root/src/MainWindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/MainWindow.cpp')
-rw-r--r--src/MainWindow.cpp19
1 files changed, 19 insertions, 0 deletions
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;