VideoConfigDiag: Move event implementations into the cpp file

Also removes the unused Event_Adapter event stub which did nothing. It
wasn't even hooked up to wx's event system.

Allows removing several includes from the header file and moving them to
the cpp file. Prevents includes being dumped into other source files
that include the header.

This uncovered an indirect include in Main for MsgHandler utilities.
This commit is contained in:
Lioncash
2017-04-06 21:55:43 -04:00
parent f94cd57a70
commit 0540950e7a
3 changed files with 190 additions and 177 deletions

View File

@ -18,15 +18,9 @@
#include <wx/stattext.h>
#include "Common/CommonTypes.h"
#include "Common/SysConf.h"
#include "Core/ConfigManager.h"
#include "Core/Core.h"
#include "DolphinWX/DolphinSlider.h"
#include "DolphinWX/PostProcessingConfigDiag.h"
#include "DolphinWX/WxUtils.h"
#include "VideoCommon/PostProcessing.h"
#include "VideoCommon/VideoBackendBase.h"
#include "VideoCommon/VideoConfig.h"
class DolphinSlider;
struct VideoConfig;
class wxBoxSizer;
class wxControl;
@ -87,171 +81,22 @@ public:
VideoConfigDiag(wxWindow* parent, const std::string& title);
protected:
void Event_Backend(wxCommandEvent& ev)
{
auto& new_backend = g_available_video_backends[ev.GetInt()];
if (g_video_backend != new_backend.get())
{
bool do_switch = !Core::IsRunning();
if (new_backend->GetName() == "Software Renderer")
{
do_switch =
(wxYES ==
wxMessageBox(_("Software rendering is an order of magnitude slower than using the "
"other backends.\nIt's only useful for debugging purposes.\nDo you "
"really want to enable software rendering? If unsure, select 'No'."),
_("Warning"), wxYES_NO | wxNO_DEFAULT | wxICON_EXCLAMATION, this));
}
if (do_switch)
{
// TODO: Only reopen the dialog if the software backend is
// selected (make sure to reinitialize backend info)
// reopen the dialog
Close();
g_video_backend = new_backend.get();
SConfig::GetInstance().m_strVideoBackend = g_video_backend->GetName();
g_video_backend->ShowConfig(GetParent());
}
else
{
// Select current backend again
choice_backend->SetStringSelection(StrToWxStr(g_video_backend->GetName()));
}
}
ev.Skip();
}
void Event_Adapter(wxCommandEvent& ev) { ev.Skip(); } // TODO
void Event_Backend(wxCommandEvent& ev);
void Event_DisplayResolution(wxCommandEvent& ev);
void Event_ProgressiveScan(wxCommandEvent& ev);
void Event_SafeTextureCache(wxCommandEvent& ev);
void Event_ProgressiveScan(wxCommandEvent& ev)
{
SConfig::GetInstance().bProgressive = ev.IsChecked();
ev.Skip();
}
void Event_PPShader(wxCommandEvent& ev);
void Event_ConfigurePPShader(wxCommandEvent& ev);
void Event_Stc(wxCommandEvent& ev)
{
int samples[] = {0, 512, 128};
vconfig.iSafeTextureCache_ColorSamples = samples[ev.GetInt()];
ev.Skip();
}
void Event_PPShader(wxCommandEvent& ev)
{
const int sel = ev.GetInt();
if (sel)
vconfig.sPostProcessingShader = WxStrToStr(ev.GetString());
else
vconfig.sPostProcessingShader.clear();
// Should we enable the configuration button?
PostProcessingShaderConfiguration postprocessing_shader;
postprocessing_shader.LoadShader(vconfig.sPostProcessingShader);
button_config_pp->Enable(postprocessing_shader.HasOptions());
ev.Skip();
}
void Event_ConfigurePPShader(wxCommandEvent& ev)
{
PostProcessingConfigDiag dialog(this, vconfig.sPostProcessingShader);
dialog.ShowModal();
ev.Skip();
}
void Event_StereoDepth(wxCommandEvent& ev)
{
vconfig.iStereoDepth = ev.GetInt();
ev.Skip();
}
void Event_StereoConvergence(wxCommandEvent& ev)
{
// Snap the slider
int value = ev.GetInt();
if (90 < value && value < 110)
conv_slider->SetValue(100);
vconfig.iStereoConvergencePercentage = conv_slider->GetValue();
ev.Skip();
}
void Event_StereoMode(wxCommandEvent& ev)
{
if (vconfig.backend_info.bSupportsPostProcessing)
{
// Anaglyph overrides post-processing shaders
choice_ppshader->Clear();
}
ev.Skip();
}
void Event_StereoDepth(wxCommandEvent& ev);
void Event_StereoConvergence(wxCommandEvent& ev);
void Event_StereoMode(wxCommandEvent& ev);
void Event_Close(wxCommandEvent&);
// Enables/disables UI elements depending on current config
void OnUpdateUI(wxUpdateUIEvent& ev)
{
// Anti-aliasing
choice_aamode->Enable(vconfig.backend_info.AAModes.size() > 1);
text_aamode->Enable(vconfig.backend_info.AAModes.size() > 1);
// XFB
virtual_xfb->Enable(vconfig.bUseXFB);
real_xfb->Enable(vconfig.bUseXFB);
// custom textures
cache_hires_textures->Enable(vconfig.bHiresTextures);
// Repopulating the post-processing shaders can't be done from an event
if (choice_ppshader && choice_ppshader->IsEmpty())
PopulatePostProcessingShaders();
// Things which shouldn't be changed during emulation
if (Core::IsRunning())
{
choice_backend->Disable();
label_backend->Disable();
// D3D only
if (vconfig.backend_info.Adapters.size())
{
choice_adapter->Disable();
label_adapter->Disable();
}
#ifndef __APPLE__
// This isn't supported on OS X.
choice_display_resolution->Disable();
label_display_resolution->Disable();
#endif
progressive_scan_checkbox->Disable();
render_to_main_checkbox->Disable();
}
// Don't enable 'vertex rounding' at native
if (vconfig.iEFBScale == SCALE_1X)
{
vertex_rounding_checkbox->Enable(false);
}
else
{
vertex_rounding_checkbox->Enable(true);
}
ev.Skip();
}
void OnUpdateUI(wxUpdateUIEvent& ev);
// Creates controls and connects their enter/leave window events to Evt_Enter/LeaveControl
SettingCheckBox* CreateCheckBox(wxWindow* parent, const wxString& label,