2015-05-24 04:55:12 +00:00
|
|
|
// Copyright 2015 Dolphin Emulator Project
|
2015-05-17 23:08:10 +00:00
|
|
|
// Licensed under GPLv2+
|
2015-03-18 22:00:27 +00:00
|
|
|
// 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"
|
2016-07-05 16:50:06 +00:00
|
|
|
#include "Core/Core.h"
|
2015-03-07 01:28:38 +00:00
|
|
|
#include "Core/Movie.h"
|
|
|
|
#include "Core/NetPlayProto.h"
|
2015-03-18 22:00:27 +00:00
|
|
|
#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"
|
2016-06-24 08:43:46 +00:00
|
|
|
#include "DolphinWX/WxUtils.h"
|
2015-03-18 22:00:27 +00:00
|
|
|
|
2015-03-19 00:33:20 +00:00
|
|
|
// 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);
|
|
|
|
|
2015-03-18 22:00:27 +00:00
|
|
|
CConfigMain::CConfigMain(wxWindow* parent, wxWindowID id, const wxString& title,
|
2016-06-24 08:43:46 +00:00
|
|
|
const wxPoint& position, const wxSize& size, long style)
|
|
|
|
: wxDialog(parent, id, title, position, size, style)
|
2015-03-18 22:00:27 +00:00
|
|
|
{
|
2016-06-24 08:43:46 +00:00
|
|
|
// Control refreshing of the ISOs list
|
|
|
|
m_refresh_game_list_on_close = false;
|
2015-03-18 22:00:27 +00:00
|
|
|
|
2016-06-24 08:43:46 +00:00
|
|
|
Bind(wxEVT_CLOSE_WINDOW, &CConfigMain::OnClose, this);
|
2016-08-15 19:18:58 +00:00
|
|
|
Bind(wxEVT_BUTTON, &CConfigMain::OnCloseButton, this, wxID_CLOSE);
|
2016-06-24 08:43:46 +00:00
|
|
|
Bind(wxDOLPHIN_CFG_REFRESH_LIST, &CConfigMain::OnSetRefreshGameListOnClose, this);
|
2015-03-18 23:23:11 +00:00
|
|
|
|
2016-06-24 08:43:46 +00:00
|
|
|
CreateGUIControls();
|
2015-03-18 22:00:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
CConfigMain::~CConfigMain()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void CConfigMain::SetSelectedTab(int tab)
|
|
|
|
{
|
2016-06-24 08:43:46 +00:00
|
|
|
// TODO : this is just a quick and dirty way to do it, possible cleanup
|
|
|
|
|
|
|
|
switch (tab)
|
|
|
|
{
|
|
|
|
case ID_AUDIOPAGE:
|
|
|
|
Notebook->SetSelection(2);
|
|
|
|
break;
|
|
|
|
}
|
2015-03-18 22:00:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void CConfigMain::CreateGUIControls()
|
|
|
|
{
|
2016-06-24 08:43:46 +00:00
|
|
|
// 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"));
|
|
|
|
|
2016-08-02 06:22:37 +00:00
|
|
|
const int space5 = FromDIP(5);
|
|
|
|
|
2016-06-24 08:43:46 +00:00
|
|
|
wxBoxSizer* const main_sizer = new wxBoxSizer(wxVERTICAL);
|
2016-08-02 06:22:37 +00:00
|
|
|
main_sizer->AddSpacer(space5);
|
|
|
|
main_sizer->Add(Notebook, 1, wxEXPAND | wxLEFT | wxRIGHT, space5);
|
|
|
|
main_sizer->AddSpacer(space5);
|
|
|
|
main_sizer->Add(CreateButtonSizer(wxCLOSE), 0, wxEXPAND | wxLEFT | wxRIGHT, space5);
|
|
|
|
main_sizer->AddSpacer(space5);
|
2015-03-18 22:00:27 +00:00
|
|
|
|
2016-06-23 11:26:47 +00:00
|
|
|
#ifdef __APPLE__
|
2016-06-24 08:43:46 +00:00
|
|
|
main_sizer->SetMinSize(550, 0);
|
2016-06-23 11:26:47 +00:00
|
|
|
#else
|
2016-08-02 06:22:37 +00:00
|
|
|
main_sizer->SetMinSize(FromDIP(400), 0);
|
2016-06-23 11:26:47 +00:00
|
|
|
#endif
|
2015-04-28 05:33:11 +00:00
|
|
|
|
2016-08-02 06:22:37 +00:00
|
|
|
SetLayoutAdaptationMode(wxDIALOG_ADAPTATION_MODE_ENABLED);
|
|
|
|
SetLayoutAdaptationLevel(wxDIALOG_ADAPTATION_STANDARD_SIZER);
|
2016-06-24 08:43:46 +00:00
|
|
|
SetSizerAndFit(main_sizer);
|
|
|
|
Center();
|
|
|
|
SetFocus();
|
2015-03-18 22:00:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void CConfigMain::OnClose(wxCloseEvent& WXUNUSED(event))
|
|
|
|
{
|
2016-06-24 08:43:46 +00:00
|
|
|
EndModal((m_refresh_game_list_on_close) ? wxID_OK : wxID_CANCEL);
|
2016-06-25 15:24:43 +00:00
|
|
|
|
|
|
|
// Save the config. Dolphin crashes too often to only save the settings on closing
|
|
|
|
SConfig::GetInstance().SaveSettings();
|
2015-03-18 22:00:27 +00:00
|
|
|
}
|
|
|
|
|
2016-08-15 19:18:58 +00:00
|
|
|
void CConfigMain::OnCloseButton(wxCommandEvent& WXUNUSED(event))
|
2015-03-18 22:00:27 +00:00
|
|
|
{
|
2016-06-24 08:43:46 +00:00
|
|
|
Close();
|
2015-03-18 22:00:27 +00:00
|
|
|
}
|
2015-03-19 00:33:20 +00:00
|
|
|
|
|
|
|
void CConfigMain::OnSetRefreshGameListOnClose(wxCommandEvent& WXUNUSED(event))
|
|
|
|
{
|
2016-06-24 08:43:46 +00:00
|
|
|
m_refresh_game_list_on_close = true;
|
2015-03-19 00:33:20 +00:00
|
|
|
}
|