aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/base_tab/BaseGameTab.cpp127
-rw-r--r--src/base_tab/BaseGameTab.hpp28
-rw-r--r--src/base_tab/BaseImportTab.cpp8
-rw-r--r--src/base_tab/BaseImportTab.hpp10
-rw-r--r--src/base_tab/BaseTab.cpp126
-rw-r--r--src/base_tab/BaseTab.hpp21
-rw-r--r--src/gui.cpp48
-rw-r--r--src/gui.h28
8 files changed, 263 insertions, 133 deletions
diff --git a/src/base_tab/BaseGameTab.cpp b/src/base_tab/BaseGameTab.cpp
new file mode 100644
index 0000000..79f28c1
--- /dev/null
+++ b/src/base_tab/BaseGameTab.cpp
@@ -0,0 +1,127 @@
+#include "BaseGameTab.hpp"
+#include "AppendGameDialog.hpp"
+#include <wx/filename.h>
+
+BaseGameTab::BaseGameTab(wxFrame *parent, std::string base_file)
+ : TabBase_TabGames(parent), base_file(base_file),
+ base(NULL) {
+
+ game_list->InsertColumn(0, L"id", wxLIST_FORMAT_LEFT, 50);
+ game_list->InsertColumn(1, L"White", wxLIST_FORMAT_LEFT, 200);
+ game_list->InsertColumn(2, L"Black", wxLIST_FORMAT_LEFT, 200);
+ game_list->InsertColumn(3, L"Event", wxLIST_FORMAT_LEFT, 150);
+ game_list->InsertColumn(4, L"Round", wxLIST_FORMAT_LEFT, 100);
+ game_list->InsertColumn(5, L"Result", wxLIST_FORMAT_LEFT, 200);
+ game_list->InsertColumn(6, L"ECO", wxLIST_FORMAT_LEFT, 200);
+
+ this->Bind(wxEVT_BUTTON, &BaseGameTab::OnDelete, this, ID_DELETE_BUTTON);
+ this->Bind(wxEVT_BUTTON, &BaseGameTab::OnSave, this, ID_SAVE_BUTTON);
+ this->Bind(wxEVT_BUTTON, &BaseGameTab::OnExport, this, ID_EXPORT_BUTTON);
+ this->Bind(wxEVT_LIST_ITEM_ACTIVATED, &BaseGameTab::OnOpenGame, this, wxID_ANY);
+ this->Bind(wxEVT_BUTTON, &BaseGameTab::OnImport, this, ID_IMPORT_BUTTON);
+
+ current_base->SetLabel(base_file);
+ LoadFile();
+}
+
+void BaseGameTab::OnImport(wxCommandEvent &event) {
+ AppendGameDialog *dia = new AppendGameDialog(this, base);
+ dia->ShowModal();
+ game_list->DeleteAllItems();
+ deleted.clear();
+ edited.clear();
+ LoadFile();
+}
+
+void BaseGameTab::OnDelete(wxCommandEvent &event) {
+ long selected = -1;
+
+ while ((selected = game_list->GetNextItem(selected, wxLIST_NEXT_ALL,
+ wxLIST_STATE_SELECTED)) !=
+ wxNOT_FOUND) {
+ wxListItem listItem;
+ listItem.m_itemId = selected; // sets row
+ listItem.m_col = 0; // sets column
+ game_list->GetItem(listItem); // gets item
+ deleted.push_back(std::stoi(listItem.GetText().ToStdString()));
+ for (std::uint32_t &i : deleted) {
+ wxLogDebug("%d", i);
+ }
+ game_list->SetItemBackgroundColour(selected, *wxRED);
+ }
+}
+
+void BaseGameTab::OnSave(wxCommandEvent &event) {
+ std::vector<std::shared_ptr<GameBase>> new_games_bases;
+ std::vector<std::shared_ptr<Game>> new_games;
+ new_games.insert(
+ new_games.end(), edited.begin(),
+ edited.end()); // Add edited game (since they are also deleted)
+ base->Save(deleted, new_games_bases, new_games);
+ game_list->DeleteAllItems();
+ edited.clear();
+ deleted.clear();
+ LoadFile();
+}
+
+void BaseGameTab::OnOpenGame(wxListEvent &event) {
+ wxLogDebug("Open!");
+ long id = std::stoi(event.GetItem().GetText().ToStdString());
+ std::shared_ptr<Game> *g = new std::shared_ptr<Game>(base->GetGame(id));
+ if (g != NULL) {
+ edited.push_back(*g);
+ deleted.push_back(id);
+ game_list->SetItemBackgroundColour(event.GetIndex(), *wxGREEN);
+ wxCommandEvent newGameEvent(NEW_GAME_EVENT, GetId());
+ newGameEvent.SetEventObject(this);
+ newGameEvent.SetClientData(g);
+ ProcessEvent(newGameEvent);
+ }
+}
+
+void BaseGameTab::ApplyPreferences() {}
+
+void BaseGameTab::OnExport(wxCommandEvent &event) {
+ wxFileDialog openFileDialog(this, _("Export database"), "", "",
+ "Database files (*.pgn)|*.pgn",
+ wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
+ if (openFileDialog.ShowModal() != wxID_CANCEL) {
+ std::string path = openFileDialog.GetPath().ToStdString();
+ wxFileName file(base_file);
+ wxString ext = file.GetExt().Lower();
+ GameBase *base;
+ if (ext == "pgn") {
+ base = new PGNGameBase(path);
+ base->Export(this->base);
+ delete base;
+ }
+ }
+}
+
+void BaseGameTab::LoadFile() {
+ wxFileName file(base_file);
+ wxString ext = file.GetExt().Lower();
+ if (ext == "pgn") {
+ base = std::shared_ptr<GameBase>(new PGNGameBase(base_file));
+ SetLabel(file.GetName() + "(PGN)");
+ }
+
+ if (base != NULL) {
+ long id = 0;
+ while (base->NextGame()) {
+ long index =
+ game_list->InsertItem(0, std::to_string(id)); // want this for col. 1
+ game_list->SetItem(index, 1, base->GetTag("White"));
+ game_list->SetItem(index, 2, base->GetTag("Black"));
+ game_list->SetItem(index, 3, base->GetTag("Event"));
+ game_list->SetItem(index, 4, base->GetTag("Round"));
+ game_list->SetItem(index, 5, base->GetTag("Result"));
+ game_list->SetItem(index, 6, base->GetTag("ECO"));
+ id++;
+ }
+ }
+
+ wxCommandEvent event(REFRESH_TAB_TITLE, GetId());
+ event.SetEventObject(this);
+ ProcessEvent(event);
+}
diff --git a/src/base_tab/BaseGameTab.hpp b/src/base_tab/BaseGameTab.hpp
new file mode 100644
index 0000000..d90163f
--- /dev/null
+++ b/src/base_tab/BaseGameTab.hpp
@@ -0,0 +1,28 @@
+
+#include "gamebase/GameBase.hpp"
+#include "gamebase/PGNGameBase.hpp"
+#include "ochess.hpp"
+
+// Foreign events
+wxDECLARE_EVENT(NEW_GAME_EVENT, wxCommandEvent);
+wxDECLARE_EVENT(REFRESH_TAB_TITLE, wxCommandEvent);
+
+class BaseGameTab : public TabBase_TabGames {
+ std::shared_ptr<GameBase> base;
+ std::vector<std::uint32_t> deleted;
+ std::vector<std::shared_ptr<Game>> edited;
+ std::string base_file;
+
+public:
+ BaseGameTab(wxFrame *parent, std::string base_file);
+
+ void ApplyPreferences();
+ void LoadFile();
+ void OnDelete(wxCommandEvent &event);
+ void OnSave(wxCommandEvent &event);
+ void OnExport(wxCommandEvent &event);
+ void OnOpenGame(wxListEvent &event);
+ void OnImport(wxCommandEvent &event);
+ std::shared_ptr<Game> GetGame() { return (std::shared_ptr<Game>(NULL)); }
+ std::shared_ptr<GameBase> GetBase() { return (std::shared_ptr<GameBase>(base)); };
+}; \ No newline at end of file
diff --git a/src/base_tab/BaseImportTab.cpp b/src/base_tab/BaseImportTab.cpp
new file mode 100644
index 0000000..8b7cb1f
--- /dev/null
+++ b/src/base_tab/BaseImportTab.cpp
@@ -0,0 +1,8 @@
+#include "BaseImportTab.hpp"
+
+
+BaseImportTab::BaseImportTab(wxFrame *parent):
+TabBase_TabImport(parent)
+{
+
+}
diff --git a/src/base_tab/BaseImportTab.hpp b/src/base_tab/BaseImportTab.hpp
new file mode 100644
index 0000000..e39f921
--- /dev/null
+++ b/src/base_tab/BaseImportTab.hpp
@@ -0,0 +1,10 @@
+#include "ochess.hpp"
+
+
+
+class BaseImportTab : public TabBase_TabImport {
+
+
+public:
+ BaseImportTab(wxFrame *parent);
+}; \ No newline at end of file
diff --git a/src/base_tab/BaseTab.cpp b/src/base_tab/BaseTab.cpp
index 19e9f0e..67577e0 100644
--- a/src/base_tab/BaseTab.cpp
+++ b/src/base_tab/BaseTab.cpp
@@ -3,125 +3,21 @@
#include <wx/filename.h>
BaseTab::BaseTab(wxFrame *parent, std::string base_file)
- : TabBase_TabGames(parent), base_file(base_file), TabInfos(TabInfos::BASE),
- base(NULL) {
+ : TabBase(parent), TabInfos(TabInfos::BASE){
- game_list->InsertColumn(0, L"id", wxLIST_FORMAT_LEFT, 50);
- game_list->InsertColumn(1, L"White", wxLIST_FORMAT_LEFT, 200);
- game_list->InsertColumn(2, L"Black", wxLIST_FORMAT_LEFT, 200);
- game_list->InsertColumn(3, L"Event", wxLIST_FORMAT_LEFT, 150);
- game_list->InsertColumn(4, L"Round", wxLIST_FORMAT_LEFT, 100);
- game_list->InsertColumn(5, L"Result", wxLIST_FORMAT_LEFT, 200);
- game_list->InsertColumn(6, L"ECO", wxLIST_FORMAT_LEFT, 200);
+ // Games tab
+ games_tab=new BaseGameTab((wxFrame *)notebook,base_file);
+ notebook->AddPage(games_tab, "Games",true); // true for selecting the tab
- this->Bind(wxEVT_BUTTON, &BaseTab::OnDelete, this, ID_DELETE_BUTTON);
- this->Bind(wxEVT_BUTTON, &BaseTab::OnSave, this, ID_SAVE_BUTTON);
- this->Bind(wxEVT_BUTTON, &BaseTab::OnExport, this, ID_EXPORT_BUTTON);
- this->Bind(wxEVT_LIST_ITEM_ACTIVATED, &BaseTab::OnOpenGame, this, wxID_ANY);
- this->Bind(wxEVT_BUTTON, &BaseTab::OnImport, this, ID_IMPORT_BUTTON);
+ // Import tab
+ import_tab=new BaseImportTab((wxFrame *)notebook);
+ notebook->AddPage(import_tab, "Import");
- current_base->SetLabel(base_file);
- LoadFile();
-}
-
-void BaseTab::OnImport(wxCommandEvent &event) {
- AppendGameDialog *dia = new AppendGameDialog(this, base);
- dia->ShowModal();
- game_list->DeleteAllItems();
- deleted.clear();
- edited.clear();
- LoadFile();
-}
-
-void BaseTab::OnDelete(wxCommandEvent &event) {
- long selected = -1;
-
- while ((selected = game_list->GetNextItem(selected, wxLIST_NEXT_ALL,
- wxLIST_STATE_SELECTED)) !=
- wxNOT_FOUND) {
- wxListItem listItem;
- listItem.m_itemId = selected; // sets row
- listItem.m_col = 0; // sets column
- game_list->GetItem(listItem); // gets item
- deleted.push_back(std::stoi(listItem.GetText().ToStdString()));
- for (std::uint32_t &i : deleted) {
- wxLogDebug("%d", i);
- }
- game_list->SetItemBackgroundColour(selected, *wxRED);
- }
-}
-
-void BaseTab::OnSave(wxCommandEvent &event) {
- std::vector<std::shared_ptr<GameBase>> new_games_bases;
- std::vector<std::shared_ptr<Game>> new_games;
- new_games.insert(
- new_games.end(), edited.begin(),
- edited.end()); // Add edited game (since they are also deleted)
- base->Save(deleted, new_games_bases, new_games);
- game_list->DeleteAllItems();
- edited.clear();
- deleted.clear();
- LoadFile();
-}
-
-void BaseTab::OnOpenGame(wxListEvent &event) {
- wxLogDebug("Open!");
- long id = std::stoi(event.GetItem().GetText().ToStdString());
- std::shared_ptr<Game> *g = new std::shared_ptr<Game>(base->GetGame(id));
- if (g != NULL) {
- edited.push_back(*g);
- deleted.push_back(id);
- game_list->SetItemBackgroundColour(event.GetIndex(), *wxGREEN);
- wxCommandEvent newGameEvent(NEW_GAME_EVENT, GetId());
- newGameEvent.SetEventObject(this);
- newGameEvent.SetClientData(g);
- ProcessEvent(newGameEvent);
- }
+ RefreshLabel();
}
void BaseTab::ApplyPreferences() {}
-void BaseTab::OnExport(wxCommandEvent &event) {
- wxFileDialog openFileDialog(this, _("Export database"), "", "",
- "Database files (*.pgn)|*.pgn",
- wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
- if (openFileDialog.ShowModal() != wxID_CANCEL) {
- std::string path = openFileDialog.GetPath().ToStdString();
- wxFileName file(base_file);
- wxString ext = file.GetExt().Lower();
- GameBase *base;
- if (ext == "pgn") {
- base = new PGNGameBase(path);
- base->Export(this->base);
- delete base;
- }
- }
-}
-
-void BaseTab::LoadFile() {
- wxFileName file(base_file);
- wxString ext = file.GetExt().Lower();
- if (ext == "pgn") {
- base = std::shared_ptr<GameBase>(new PGNGameBase(base_file));
- SetLabel(file.GetName() + "(PGN)");
- }
-
- if (base != NULL) {
- long id = 0;
- while (base->NextGame()) {
- long index =
- game_list->InsertItem(0, std::to_string(id)); // want this for col. 1
- game_list->SetItem(index, 1, base->GetTag("White"));
- game_list->SetItem(index, 2, base->GetTag("Black"));
- game_list->SetItem(index, 3, base->GetTag("Event"));
- game_list->SetItem(index, 4, base->GetTag("Round"));
- game_list->SetItem(index, 5, base->GetTag("Result"));
- game_list->SetItem(index, 6, base->GetTag("ECO"));
- id++;
- }
- }
-
- wxCommandEvent event(REFRESH_TAB_TITLE, GetId());
- event.SetEventObject(this);
- ProcessEvent(event);
-}
+void BaseTab::RefreshLabel(){
+ SetLabel("Database XX");
+} \ No newline at end of file
diff --git a/src/base_tab/BaseTab.hpp b/src/base_tab/BaseTab.hpp
index b265414..e025c63 100644
--- a/src/base_tab/BaseTab.hpp
+++ b/src/base_tab/BaseTab.hpp
@@ -1,28 +1,19 @@
#include "gamebase/GameBase.hpp"
-#include "gamebase/PGNGameBase.hpp"
#include "ochess.hpp"
+#include "BaseGameTab.hpp"
+#include "BaseImportTab.hpp"
-// Foreign events
-wxDECLARE_EVENT(NEW_GAME_EVENT, wxCommandEvent);
-wxDECLARE_EVENT(REFRESH_TAB_TITLE, wxCommandEvent);
-
-class BaseTab : public TabBase_TabGames, public TabInfos {
+class BaseTab : public TabBase, public TabInfos {
std::shared_ptr<GameBase> base;
- std::vector<std::uint32_t> deleted;
- std::vector<std::shared_ptr<Game>> edited;
- std::string base_file;
+ BaseGameTab *games_tab;
+ BaseImportTab *import_tab;
public:
BaseTab(wxFrame *parent, std::string base_file);
void ApplyPreferences();
- void LoadFile();
- void OnDelete(wxCommandEvent &event);
- void OnSave(wxCommandEvent &event);
- void OnExport(wxCommandEvent &event);
- void OnOpenGame(wxListEvent &event);
- void OnImport(wxCommandEvent &event);
+ void RefreshLabel();
std::shared_ptr<Game> GetGame() { return (std::shared_ptr<Game>(NULL)); }
std::shared_ptr<GameBase> GetBase() { return (std::shared_ptr<GameBase>(base)); };
}; \ No newline at end of file
diff --git a/src/gui.cpp b/src/gui.cpp
index f706a5e..c14d000 100644
--- a/src/gui.cpp
+++ b/src/gui.cpp
@@ -375,7 +375,7 @@ TabBase::TabBase( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxS
wxBoxSizer* main_sizer;
main_sizer = new wxBoxSizer( wxVERTICAL );
- notebook = new wxAuiNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_NB_DEFAULT_STYLE );
+ notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
main_sizer->Add( notebook, 1, wxEXPAND | wxALL, 5 );
@@ -568,3 +568,49 @@ TabBase_TabGames::TabBase_TabGames( wxWindow* parent, wxWindowID id, const wxPoi
TabBase_TabGames::~TabBase_TabGames()
{
}
+
+TabBase_TabImport::TabBase_TabImport( 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* top_sizer;
+ top_sizer = new wxBoxSizer( wxHORIZONTAL );
+
+ from_game_label = new wxStaticText( this, wxID_ANY, wxT("From opened games:"), wxDefaultPosition, wxDefaultSize, 0 );
+ from_game_label->Wrap( -1 );
+ top_sizer->Add( from_game_label, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+
+ m_comboBox1 = new wxComboBox( this, wxID_ANY, wxT("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
+ top_sizer->Add( m_comboBox1, 100, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+
+ import_from_game_button = new wxButton( this, wxID_ANY, wxT("Import"), wxDefaultPosition, wxDefaultSize, 0 );
+ top_sizer->Add( import_from_game_button, 0, wxALL, 5 );
+
+
+ main_sizer->Add( top_sizer, 1, wxEXPAND, 5 );
+
+ m_staticline4 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+ main_sizer->Add( m_staticline4, 0, wxEXPAND | wxALL, 5 );
+
+ wxBoxSizer* bottom_sizer;
+ bottom_sizer = new wxBoxSizer( wxHORIZONTAL );
+
+ from_db_label = new wxStaticText( this, wxID_ANY, wxT("From opened databases:"), wxDefaultPosition, wxDefaultSize, 0 );
+ from_db_label->Wrap( -1 );
+ bottom_sizer->Add( from_db_label, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+
+
+ main_sizer->Add( bottom_sizer, 1, wxEXPAND, 5 );
+
+ game_list = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_ICON );
+ main_sizer->Add( game_list, 20, wxALL|wxEXPAND, 5 );
+
+
+ this->SetSizer( main_sizer );
+ this->Layout();
+}
+
+TabBase_TabImport::~TabBase_TabImport()
+{
+}
diff --git a/src/gui.h b/src/gui.h
index dc4a14b..fb2e3e2 100644
--- a/src/gui.h
+++ b/src/gui.h
@@ -36,8 +36,9 @@
#include <wx/clrpicker.h>
#include <wx/checkbox.h>
#include <wx/splitter.h>
-#include <wx/bmpbuttn.h>
#include <wx/notebook.h>
+#include <wx/bmpbuttn.h>
+#include <wx/combobox.h>
///////////////////////////////////////////////////////////////////////////
@@ -232,7 +233,7 @@ class TabBase : public wxPanel
private:
protected:
- wxAuiNotebook* notebook;
+ wxNotebook* notebook;
public:
@@ -323,3 +324,26 @@ class TabBase_TabGames : public wxPanel
};
+///////////////////////////////////////////////////////////////////////////////
+/// Class TabBase_TabImport
+///////////////////////////////////////////////////////////////////////////////
+class TabBase_TabImport : public wxPanel
+{
+ private:
+
+ protected:
+ wxStaticText* from_game_label;
+ wxComboBox* m_comboBox1;
+ wxButton* import_from_game_button;
+ wxStaticLine* m_staticline4;
+ wxStaticText* from_db_label;
+ wxListCtrl* game_list;
+
+ public:
+
+ TabBase_TabImport( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,200 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
+
+ ~TabBase_TabImport();
+
+};
+