diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index a1afc7b..83fd964 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -2,7 +2,6 @@ #include "ChessArbiter.hpp" #include "pgnp.hpp" #include "preferences/preferences.hpp" -#include wxDEFINE_EVENT(REFRESH_TAB_TITLE, wxCommandEvent); @@ -10,7 +9,8 @@ wxDEFINE_EVENT(REFRESH_TAB_TITLE, wxCommandEvent); MainWindow::MainWindow() : wxFrame(NULL, wxID_ANY, "OChess: The Open Chess software", - wxDefaultPosition, wxSize(1500, 1000)) { + wxDefaultPosition, wxSize(1500, 1000)), + prefsEditor(NULL) { CreateStatusBar(); SetStatusText("OChess"); @@ -46,6 +46,7 @@ MainWindow::MainWindow() Bind(wxEVT_AUINOTEBOOK_PAGE_CHANGED, &MainWindow::OnPageChange, this, wxID_ANY); Bind(REFRESH_TAB_TITLE, &MainWindow::OnRefreshTabTitle, this, wxID_ANY); + Bind(wxEVT_CLOSE_WINDOW, &MainWindow::OnClose, this); } class AdvancePage : public wxPreferencesPage { @@ -65,9 +66,13 @@ public: }; void MainWindow::OnSettings(wxCommandEvent &event) { - wxPreferencesEditor *edt = new wxPreferencesEditor("Preferences"); - edt->AddPage(new BoardPrefs()); - edt->Show(this); + if (prefsEditor != NULL) { + delete prefsEditor; + } + prefsEditor = new wxPreferencesEditor("Preferences"); + prefsEditor->AddPage(new BoardPrefs()); + prefsEditor->AddPage(new EditorPrefs()); + prefsEditor->Show(this); } void MainWindow::ApplyPreferences() { @@ -79,6 +84,13 @@ void MainWindow::ApplyPreferences() { void MainWindow::OnExit(wxCommandEvent &event) { Close(true); } +void MainWindow::OnClose(wxCloseEvent &e) { + if (prefsEditor != NULL) { + prefsEditor->Dismiss(); + } + e.Skip(); +} + void MainWindow::OnOpen(wxCommandEvent &event) { wxFileDialog openFileDialog(this, _("Open file"), "", "", "PGN files (*.pgn)|*.pgn", @@ -97,9 +109,9 @@ void MainWindow::OnOpen(wxCommandEvent &event) { fen = pgn.GetTagValue("FEN"); } HalfMove *m = new HalfMove(pgnp_moves, fen); - Game *g=new Game(m,fen); - for(std::string &s:pgn.GetTagList()){ - g->SetTag(s,pgn.GetTagValue(s)); + Game *g = new Game(m, fen); + for (std::string &s : pgn.GetTagList()) { + g->SetTag(s, pgn.GetTagValue(s)); } NewGame(g); } catch (std::exception &e) { diff --git a/src/MainWindow.hpp b/src/MainWindow.hpp index 78d481e..31e63d8 100644 --- a/src/MainWindow.hpp +++ b/src/MainWindow.hpp @@ -3,6 +3,7 @@ #include #include #include +#include wxDECLARE_EVENT(REFRESH_TAB_TITLE, wxCommandEvent); @@ -10,8 +11,10 @@ class MainWindow : public wxFrame { wxAuiNotebook *notebook; wxMenu *menuGame; wxMenuBar *menuBar; + wxPreferencesEditor *prefsEditor; void OnExit(wxCommandEvent &event); + void OnClose(wxCloseEvent &e); void OnNewGame(wxCommandEvent &event); void OnOpen(wxCommandEvent &event); void OnPageChange(wxAuiNotebookEvent &event); diff --git a/src/preferences/BoardPrefs.hpp b/src/preferences/BoardPrefs.hpp index eff3b58..21fe1ce 100644 --- a/src/preferences/BoardPrefs.hpp +++ b/src/preferences/BoardPrefs.hpp @@ -96,7 +96,6 @@ public: virtual bool TransferDataFromWindow() { ApplyPreferences(); - MAINWIN->ApplyPreferences(); return (true); } }; diff --git a/src/preferences/EditorPrefs.hpp b/src/preferences/EditorPrefs.hpp new file mode 100644 index 0000000..dab05ca --- /dev/null +++ b/src/preferences/EditorPrefs.hpp @@ -0,0 +1,44 @@ +#include "EditorPrefsPanelBF.h" +#include "game_tab/board/BoardCanvas.hpp" +#include "ochess.hpp" +#include +#include +#include +#include +#include +#include + +class EditorPrefsPanel : public EditorPrefsPanelBF { + +public: + EditorPrefsPanel(wxWindow *parent) : EditorPrefsPanelBF(parent) { + + // Bind(wxEVT_SPINCTRL, &BoardPrefsPanel::OnConfChange, this, wxID_ANY); + } + void OnConfChange(wxCommandEvent &event) { + } + + virtual bool TransferDataToWindow() { + return true; + } + + void ApplyPreferences() { + + } + + virtual bool TransferDataFromWindow() { + + return (true); + } +}; + +class EditorPrefs : public wxPreferencesPage { +public: + virtual wxString GetName() const { return "Editor"; } + virtual wxBitmap GetLargeIcon() { + return wxArtProvider::GetBitmap(wxART_HELP, wxART_TOOLBAR); + } + virtual wxWindow *CreateWindow(wxWindow *parent) { + return new EditorPrefsPanel(parent); + } +}; \ No newline at end of file diff --git a/src/preferences/EditorPrefsPanelBF.cpp b/src/preferences/EditorPrefsPanelBF.cpp new file mode 100644 index 0000000..08a1b50 --- /dev/null +++ b/src/preferences/EditorPrefsPanelBF.cpp @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version 3.10.1-40-g8042f487) +// http://www.wxformbuilder.org/ +// +// PLEASE DO *NOT* EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#include "EditorPrefsPanelBF.h" + +/////////////////////////////////////////////////////////////////////////// + +EditorPrefsPanelBF::EditorPrefsPanelBF( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) +{ +} + +EditorPrefsPanelBF::~EditorPrefsPanelBF() +{ +} diff --git a/src/preferences/EditorPrefsPanelBF.h b/src/preferences/EditorPrefsPanelBF.h new file mode 100644 index 0000000..8736a59 --- /dev/null +++ b/src/preferences/EditorPrefsPanelBF.h @@ -0,0 +1,38 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version 3.10.1-40-g8042f487) +// http://www.wxformbuilder.org/ +// +// PLEASE DO *NOT* EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + + +/////////////////////////////////////////////////////////////////////////////// +/// Class EditorPrefsPanelBF +/////////////////////////////////////////////////////////////////////////////// +class EditorPrefsPanelBF : public wxPanel +{ + private: + + protected: + + public: + + EditorPrefsPanelBF( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,300 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); + + ~EditorPrefsPanelBF(); + +}; + diff --git a/src/preferences/preferences.hpp b/src/preferences/preferences.hpp index d5dd603..2566111 100644 --- a/src/preferences/preferences.hpp +++ b/src/preferences/preferences.hpp @@ -1,2 +1,3 @@ #pragma once -#include "BoardPrefs.hpp" \ No newline at end of file +#include "BoardPrefs.hpp" +#include "EditorPrefs.hpp" diff --git a/tools/wxframebuilder/EditorPrefs.fbp b/tools/wxframebuilder/EditorPrefs.fbp new file mode 100644 index 0000000..586f241 --- /dev/null +++ b/tools/wxframebuilder/EditorPrefs.fbp @@ -0,0 +1,57 @@ + + + + + ; + C++ + 1 + source_name + 0 + 0 + res + UTF-8 + connect + EditorPrefsPanelBF + 1000 + none + + + 0 + EditorPrefsPanelBF + + ../../src/preferences/ + + 1 + 1 + 1 + 1 + UI + 0 + 0 + 0 + + 0 + wxAUI_MGR_DEFAULT + + + 1 + 1 + impl_virtual + + + 0 + wxID_ANY + + + EditorPrefsPanelBF + + 500,300 + ; ; forward_declare + + 0 + + + wxTAB_TRAVERSAL + + +