summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinWX/Config/ConfigMain.cpp
diff options
context:
space:
mode:
authorJules Blok <jules.blok@gmail.com>2015-06-10 00:00:12 +0200
committerJules Blok <jules.blok@gmail.com>2015-06-10 00:00:12 +0200
commit7dfced21a2e5aac7195e0e1ad76468e30306766b (patch)
treebd671b639d3d911460b767caabad8fc8a759a6bf /Source/Core/DolphinWX/Config/ConfigMain.cpp
parentc25be031fc1031d795157d8344b87b7841145197 (diff)
parent7b0a65e295c784f9d573f2ef52d4e2a7b9bb2889 (diff)
Merge branch 'master' into stable
Diffstat (limited to 'Source/Core/DolphinWX/Config/ConfigMain.cpp')
-rw-r--r--Source/Core/DolphinWX/Config/ConfigMain.cpp107
1 files changed, 107 insertions, 0 deletions
diff --git a/Source/Core/DolphinWX/Config/ConfigMain.cpp b/Source/Core/DolphinWX/Config/ConfigMain.cpp
new file mode 100644
index 0000000000..1cd7421f65
--- /dev/null
+++ b/Source/Core/DolphinWX/Config/ConfigMain.cpp
@@ -0,0 +1,107 @@
+// Copyright 2015 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include <wx/notebook.h>
+#include <wx/panel.h>
+#include <wx/sizer.h>
+#include <wx/stattext.h>
+
+#include "Common/CommonTypes.h"
+#include "Core/ConfigManager.h"
+#include "Core/Movie.h"
+#include "Core/NetPlayProto.h"
+#include "DolphinWX/WxUtils.h"
+#include "DolphinWX/Config/AdvancedConfigPane.h"
+#include "DolphinWX/Config/AudioConfigPane.h"
+#include "DolphinWX/Config/ConfigMain.h"
+#include "DolphinWX/Config/GameCubeConfigPane.h"
+#include "DolphinWX/Config/GeneralConfigPane.h"
+#include "DolphinWX/Config/InterfaceConfigPane.h"
+#include "DolphinWX/Config/PathConfigPane.h"
+#include "DolphinWX/Config/WiiConfigPane.h"
+
+// Sent by child panes to signify that the game list should
+// be updated when this modal dialog closes.
+wxDEFINE_EVENT(wxDOLPHIN_CFG_REFRESH_LIST, wxCommandEvent);
+
+CConfigMain::CConfigMain(wxWindow* parent, wxWindowID id, const wxString& title,
+ const wxPoint& position, const wxSize& size, long style)
+ : wxDialog(parent, id, title, position, size, style)
+{
+ // Control refreshing of the ISOs list
+ m_refresh_game_list_on_close = false;
+
+ Bind(wxEVT_CLOSE_WINDOW, &CConfigMain::OnClose, this);
+ Bind(wxEVT_BUTTON, &CConfigMain::OnOk, this, wxID_OK);
+ Bind(wxDOLPHIN_CFG_REFRESH_LIST, &CConfigMain::OnSetRefreshGameListOnClose, this);
+
+ CreateGUIControls();
+}
+
+CConfigMain::~CConfigMain()
+{
+}
+
+void CConfigMain::SetSelectedTab(int tab)
+{
+ // TODO : this is just a quick and dirty way to do it, possible cleanup
+
+ switch (tab)
+ {
+ case ID_AUDIOPAGE:
+ Notebook->SetSelection(2);
+ break;
+ }
+}
+
+void CConfigMain::CreateGUIControls()
+{
+ // Create the notebook and pages
+ Notebook = new wxNotebook(this, ID_NOTEBOOK);
+ wxPanel* const general_pane = new GeneralConfigPane(Notebook, ID_GENERALPAGE);
+ wxPanel* const interface_pane = new InterfaceConfigPane(Notebook, ID_DISPLAYPAGE);
+ wxPanel* const audio_pane = new AudioConfigPane(Notebook, ID_AUDIOPAGE);
+ wxPanel* const gamecube_pane = new GameCubeConfigPane(Notebook, ID_GAMECUBEPAGE);
+ wxPanel* const wii_pane = new WiiConfigPane(Notebook, ID_WIIPAGE);
+ wxPanel* const path_pane = new PathConfigPane(Notebook, ID_PATHSPAGE);
+ wxPanel* const advanced_pane = new AdvancedConfigPane(Notebook, ID_ADVANCEDPAGE);
+
+ Notebook->AddPage(general_pane, _("General"));
+ Notebook->AddPage(interface_pane, _("Interface"));
+ Notebook->AddPage(audio_pane, _("Audio"));
+ Notebook->AddPage(gamecube_pane, _("GameCube"));
+ Notebook->AddPage(wii_pane, _("Wii"));
+ Notebook->AddPage(path_pane, _("Paths"));
+ Notebook->AddPage(advanced_pane, _("Advanced"));
+ if (Movie::IsMovieActive() || NetPlay::IsNetPlayRunning())
+ advanced_pane->Disable();
+
+ wxBoxSizer* const main_sizer = new wxBoxSizer(wxVERTICAL);
+ main_sizer->Add(Notebook, 1, wxEXPAND | wxALL, 5);
+ main_sizer->Add(CreateButtonSizer(wxOK), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
+
+ main_sizer->SetMinSize(400, 0);
+
+ SetSizerAndFit(main_sizer);
+ Center();
+ SetFocus();
+}
+
+void CConfigMain::OnClose(wxCloseEvent& WXUNUSED(event))
+{
+ EndModal((m_refresh_game_list_on_close) ? wxID_OK : wxID_CANCEL);
+}
+
+void CConfigMain::OnOk(wxCommandEvent& WXUNUSED(event))
+{
+ Close();
+
+ // Save the config. Dolphin crashes too often to only save the settings on closing
+ SConfig::GetInstance().SaveSettings();
+}
+
+void CConfigMain::OnSetRefreshGameListOnClose(wxCommandEvent& WXUNUSED(event))
+{
+ m_refresh_game_list_on_close = true;
+}