2010-12-05 15:59:11 +00:00
|
|
|
// Copyright (C) 2003 Dolphin Project.
|
|
|
|
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
|
|
// it under the terms of the GNU General Public License as published by
|
|
|
|
// the Free Software Foundation, version 2.0.
|
|
|
|
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// GNU General Public License 2.0 for more details.
|
|
|
|
|
|
|
|
// A copy of the GPL 2.0 should have been included with the program.
|
|
|
|
// If not, see http://www.gnu.org/licenses/
|
|
|
|
|
|
|
|
// Official SVN repository and contact information can be found at
|
|
|
|
// http://code.google.com/p/dolphin-emu/
|
|
|
|
|
2011-02-12 09:10:11 +00:00
|
|
|
#include "VideoConfigDiag.h"
|
2010-12-05 15:59:11 +00:00
|
|
|
#include "VideoConfigDialog.h"
|
|
|
|
|
|
|
|
#include "FileUtil.h"
|
2011-06-02 19:32:34 +00:00
|
|
|
#include "Core.h"
|
2010-12-05 15:59:11 +00:00
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
IntegerSetting<T>::IntegerSetting(wxWindow* parent, const wxString& label, T& setting, int minVal, int maxVal, long style) :
|
|
|
|
wxSpinCtrl(parent, -1, label, wxDefaultPosition, wxDefaultSize, style),
|
|
|
|
m_setting(setting)
|
|
|
|
{
|
|
|
|
SetRange(minVal, maxVal);
|
|
|
|
SetValue(m_setting);
|
2013-01-13 09:33:11 +00:00
|
|
|
Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &IntegerSetting::UpdateValue, this);
|
2010-12-05 15:59:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
VideoConfigDialog::VideoConfigDialog(wxWindow* parent, const std::string& title, const std::string& _ininame) :
|
|
|
|
wxDialog(parent, -1,
|
|
|
|
wxString(wxT("Dolphin ")).append(wxString::FromAscii(title.c_str())).append(wxT(" Graphics Configuration")),
|
|
|
|
wxDefaultPosition, wxDefaultSize),
|
2011-01-29 04:52:19 +00:00
|
|
|
vconfig(g_SWVideoConfig),
|
2010-12-05 15:59:11 +00:00
|
|
|
ininame(_ininame)
|
|
|
|
{
|
|
|
|
vconfig.Load((File::GetUserPath(D_CONFIG_IDX) + ininame + ".ini").c_str());
|
|
|
|
|
|
|
|
wxNotebook* const notebook = new wxNotebook(this, -1, wxDefaultPosition, wxDefaultSize);
|
|
|
|
|
|
|
|
// -- GENERAL --
|
|
|
|
{
|
|
|
|
wxPanel* const page_general= new wxPanel(notebook, -1, wxDefaultPosition);
|
|
|
|
notebook->AddPage(page_general, wxT("General"));
|
|
|
|
wxBoxSizer* const szr_general = new wxBoxSizer(wxVERTICAL);
|
|
|
|
|
|
|
|
// - rendering
|
|
|
|
{
|
|
|
|
wxStaticBoxSizer* const group_rendering = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Rendering"));
|
|
|
|
szr_general->Add(group_rendering, 0, wxEXPAND | wxALL, 5);
|
|
|
|
wxGridSizer* const szr_rendering = new wxGridSizer(2, 5, 5);
|
|
|
|
group_rendering->Add(szr_rendering, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
|
|
|
|
2011-06-02 19:32:34 +00:00
|
|
|
// backend
|
|
|
|
wxStaticText* const label_backend = new wxStaticText(page_general, wxID_ANY, _("Backend:"));
|
|
|
|
wxChoice* const choice_backend = new wxChoice(page_general, wxID_ANY, wxDefaultPosition);
|
|
|
|
|
|
|
|
std::vector<VideoBackend*>::const_iterator
|
|
|
|
it = g_available_video_backends.begin(),
|
|
|
|
itend = g_available_video_backends.end();
|
|
|
|
for (; it != itend; ++it)
|
|
|
|
choice_backend->AppendString(wxString::FromAscii((*it)->GetName().c_str()));
|
|
|
|
|
|
|
|
// TODO: How to get the translated plugin name?
|
|
|
|
choice_backend->SetStringSelection(wxString::FromAscii(g_video_backend->GetName().c_str()));
|
2013-01-13 08:28:12 +00:00
|
|
|
choice_backend->Bind(wxEVT_COMMAND_CHOICE_SELECTED, &VideoConfigDialog::Event_Backend, this);
|
2011-06-02 19:32:34 +00:00
|
|
|
|
|
|
|
szr_rendering->Add(label_backend, 1, wxALIGN_CENTER_VERTICAL, 5);
|
|
|
|
szr_rendering->Add(choice_backend, 1, 0, 0);
|
|
|
|
|
|
|
|
if (Core::GetState() != Core::CORE_UNINITIALIZED)
|
|
|
|
{
|
|
|
|
label_backend->Disable();
|
|
|
|
choice_backend->Disable();
|
|
|
|
}
|
|
|
|
|
|
|
|
// rasterizer
|
2011-02-12 09:10:11 +00:00
|
|
|
szr_rendering->Add(new SettingCheckBox(page_general, wxT("Hardware rasterization"), wxT(""), vconfig.bHwRasterizer));
|
2010-12-05 15:59:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// - info
|
|
|
|
{
|
|
|
|
wxStaticBoxSizer* const group_info = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Overlay Information"));
|
|
|
|
szr_general->Add(group_info, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
|
|
|
wxGridSizer* const szr_info = new wxGridSizer(2, 5, 5);
|
|
|
|
group_info->Add(szr_info, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
|
|
|
|
2011-02-12 09:10:11 +00:00
|
|
|
szr_info->Add(new SettingCheckBox(page_general, wxT("Various Statistics"), wxT(""), vconfig.bShowStats));
|
2010-12-05 15:59:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// - utility
|
|
|
|
{
|
|
|
|
wxStaticBoxSizer* const group_utility = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Utility"));
|
|
|
|
szr_general->Add(group_utility, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
|
|
|
wxGridSizer* const szr_utility = new wxGridSizer(2, 5, 5);
|
|
|
|
group_utility->Add(szr_utility, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
|
|
|
|
2011-02-12 09:10:11 +00:00
|
|
|
szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Textures"), wxT(""), vconfig.bDumpTextures));
|
|
|
|
szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Objects"), wxT(""), vconfig.bDumpObjects));
|
|
|
|
szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Frames"), wxT(""), vconfig.bDumpFrames));
|
2010-12-05 15:59:11 +00:00
|
|
|
|
|
|
|
// - debug only
|
|
|
|
wxStaticBoxSizer* const group_debug_only_utility = new wxStaticBoxSizer(wxHORIZONTAL, page_general, wxT("Debug Only"));
|
|
|
|
group_utility->Add(group_debug_only_utility, 0, wxEXPAND | wxBOTTOM, 5);
|
|
|
|
wxGridSizer* const szr_debug_only_utility = new wxGridSizer(2, 5, 5);
|
|
|
|
group_debug_only_utility->Add(szr_debug_only_utility, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
|
|
|
|
2011-02-12 09:10:11 +00:00
|
|
|
szr_debug_only_utility->Add(new SettingCheckBox(page_general, wxT("Dump TEV Stages"), wxT(""), vconfig.bDumpTevStages));
|
|
|
|
szr_debug_only_utility->Add(new SettingCheckBox(page_general, wxT("Dump Texture Fetches"), wxT(""), vconfig.bDumpTevTextureFetches));
|
2010-12-05 15:59:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// - misc
|
|
|
|
{
|
|
|
|
wxStaticBoxSizer* const group_misc = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Drawn Object Range"));
|
|
|
|
szr_general->Add(group_misc, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
|
|
|
wxFlexGridSizer* const szr_misc = new wxFlexGridSizer(2, 5, 5);
|
|
|
|
group_misc->Add(szr_misc, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
|
|
|
|
|
|
|
szr_misc->Add(new U32Setting(page_general, wxT("Start"), vconfig.drawStart, 0, 100000));
|
|
|
|
szr_misc->Add(new U32Setting(page_general, wxT("End"), vconfig.drawEnd, 0, 100000));
|
|
|
|
}
|
|
|
|
|
|
|
|
page_general->SetSizerAndFit(szr_general);
|
|
|
|
}
|
|
|
|
|
|
|
|
wxBoxSizer* const szr_main = new wxBoxSizer(wxVERTICAL);
|
|
|
|
szr_main->Add(notebook, 1, wxEXPAND | wxALL, 5);
|
2011-03-16 22:22:21 +00:00
|
|
|
szr_main->Add(new wxButton(this, wxID_OK, wxT("Close"), wxDefaultPosition),
|
|
|
|
0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM, 5);
|
2010-12-05 15:59:11 +00:00
|
|
|
|
|
|
|
SetSizerAndFit(szr_main);
|
|
|
|
Center();
|
2011-03-16 22:22:21 +00:00
|
|
|
SetFocus();
|
2010-12-05 15:59:11 +00:00
|
|
|
}
|
|
|
|
|
2011-03-16 22:22:21 +00:00
|
|
|
VideoConfigDialog::~VideoConfigDialog()
|
2010-12-05 15:59:11 +00:00
|
|
|
{
|
2011-01-29 04:52:19 +00:00
|
|
|
g_SWVideoConfig.Save((File::GetUserPath(D_CONFIG_IDX) + ininame + ".ini").c_str());
|
2010-12-05 15:59:11 +00:00
|
|
|
}
|