dolphin/Source/Core/DolphinWX/ConfigMain.h
skidau 2140ac15e4 Removed the DSP LLE on separate thread option.
The DSP thread will be enabled if the game is an AX ucode game and if the host has more than two cores (not including hyperthreading).
2014-11-05 17:42:42 +11:00

278 lines
5.9 KiB
C++

// Copyright 2013 Dolphin Emulator Project
// Licensed under GPLv2
// Refer to the license.txt file included.
#pragma once
#include <cstdio>
#include <string>
#include <wx/arrstr.h>
#include <wx/defs.h>
#include <wx/dialog.h>
#include <wx/event.h>
#include <wx/gdicmn.h>
#include <wx/string.h>
#include <wx/translation.h>
#include <wx/windowid.h>
#include "Common/CommonTypes.h"
#if defined(HAVE_XRANDR) && HAVE_XRANDR
#include "VideoBackends/OGL/GLInterface/X11Utils.h"
#endif
class wxBoxSizer;
class wxButton;
class wxCheckBox;
class wxChoice;
class wxDirPickerCtrl;
class wxFileDirPickerEvent;
class wxFilePickerCtrl;
class wxGridBagSizer;
class wxListBox;
class wxNotebook;
class wxPanel;
class wxRadioBox;
class wxSlider;
class wxSpinCtrl;
class wxSpinEvent;
class wxStaticBoxSizer;
class wxStaticText;
class wxWindow;
class CConfigMain : public wxDialog
{
public:
CConfigMain(wxWindow* parent,
wxWindowID id = 1,
const wxString& title = _("Dolphin Configuration"),
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_DIALOG_STYLE);
virtual ~CConfigMain();
void OnOk(wxCommandEvent& event);
void CloseClick(wxCommandEvent& event);
void OnSelectionChanged(wxCommandEvent& event);
void OnConfig(wxCommandEvent& event);
void SetSelectedTab(int tab);
bool bRefreshList;
enum
{
ID_NOTEBOOK = 1000,
ID_GENERALPAGE,
ID_DISPLAYPAGE,
ID_AUDIOPAGE,
ID_GAMECUBEPAGE,
ID_WIIPAGE,
ID_PATHSPAGE,
};
private:
enum
{
ID_CPUTHREAD = 1010,
ID_IDLESKIP,
ID_ENABLECHEATS,
ID_FRAMELIMIT,
ID_CPUENGINE,
ID_NTSCJ,
// Audio Settings
ID_DSPENGINE,
ID_ENABLE_HLE_AUDIO,
ID_ENABLE_THROTTLE,
ID_DPL2DECODER,
ID_LATENCY,
ID_BACKEND,
ID_VOLUME,
// Interface settings
ID_INTERFACE_CONFIRMSTOP,
ID_INTERFACE_USEPANICHANDLERS,
ID_INTERFACE_ONSCREENDISPLAYMESSAGES,
ID_INTERFACE_LANG,
ID_HOTKEY_CONFIG,
ID_GC_SRAM_LNG,
ID_GC_ALWAYS_HLE_BS2,
ID_GC_EXIDEVICE_SLOTA,
ID_GC_EXIDEVICE_SLOTA_PATH,
ID_GC_EXIDEVICE_SLOTB,
ID_GC_EXIDEVICE_SLOTB_PATH,
ID_GC_EXIDEVICE_SP1,
ID_GC_SIDEVICE0,
ID_GC_SIDEVICE1,
ID_GC_SIDEVICE2,
ID_GC_SIDEVICE3,
ID_WII_IPL_SSV,
ID_WII_IPL_E60,
ID_WII_IPL_AR,
ID_WII_IPL_LNG,
ID_WII_SD_CARD,
ID_WII_KEYBOARD,
ID_ISOPATHS,
ID_RECURSIVEISOPATH,
ID_ADDISOPATH,
ID_REMOVEISOPATH,
ID_DEFAULTISO,
ID_DVDROOT,
ID_APPLOADERPATH,
ID_NANDROOT,
ID_DSP_CB,
ID_DSP_CONFIG,
ID_DSP_ABOUT,
};
wxNotebook* Notebook;
wxPanel* PathsPage;
// Basic
wxCheckBox* CPUThread;
wxCheckBox* SkipIdle;
wxCheckBox* EnableCheats;
wxChoice* Framelimit;
// Advanced
wxRadioBox* CPUEngine;
wxCheckBox* _NTSCJ;
wxBoxSizer* sDisplayPage; // Display settings
wxStaticBoxSizer* sbInterface; // Display and Interface sections
// Audio
wxBoxSizer* sAudioPage; // GC settings
wxRadioBox* DSPEngine;
wxSlider* VolumeSlider;
wxStaticText* VolumeText;
wxCheckBox* DPL2Decoder;
wxArrayString wxArrayBackends;
wxChoice* BackendSelection;
wxSpinCtrl* Latency;
// Interface
wxCheckBox* ConfirmStop;
wxCheckBox* UsePanicHandlers;
wxCheckBox* OnScreenDisplayMessages;
wxChoice* InterfaceLang;
wxButton* HotkeyConfig;
wxBoxSizer* sGamecubePage; // GC settings
wxStaticBoxSizer* sbGamecubeIPLSettings;
wxGridBagSizer* sGamecubeIPLSettings;
// IPL
wxChoice* GCSystemLang;
wxCheckBox* GCAlwaysHLE_BS2;
// Device
wxChoice* GCEXIDevice[3];
wxButton* GCMemcardPath[2];
wxChoice* GCSIDevice[4];
wxBoxSizer* sWiiPage; // Wii settings
wxStaticBoxSizer* /*sbWiimoteSettings, **/sbWiiIPLSettings, *sbWiiDeviceSettings; // Wiimote, Misc and Device sections
wxGridBagSizer* /*sWiimoteSettings, **/sWiiIPLSettings;
// Misc
wxCheckBox* WiiScreenSaver;
wxCheckBox* WiiEuRGB60;
wxChoice* WiiAspectRatio;
wxChoice* WiiSystemLang;
// Device
wxCheckBox* WiiSDCard;
wxCheckBox* WiiKeyboard;
wxBoxSizer* sPathsPage; // Paths settings
wxStaticBoxSizer* sbISOPaths;
wxGridBagSizer* sOtherPaths;
// ISO Directories
wxListBox* ISOPaths;
wxCheckBox* RecursiveISOPath;
wxButton* AddISOPath;
wxButton* RemoveISOPath;
// DefaultISO, DVD Root, Apploader, NANDPath
wxFilePickerCtrl* DefaultISO;
wxDirPickerCtrl* DVDRoot;
wxFilePickerCtrl* ApploaderPath;
wxDirPickerCtrl* NANDRoot;
// Graphics
wxChoice* GraphicSelection;
wxButton* GraphicConfig;
wxButton* m_Ok;
FILE* pStream;
wxArrayString arrayStringFor_Framelimit;
wxArrayString arrayStringFor_CPUEngine;
wxArrayString arrayStringFor_DSPEngine;
wxArrayString arrayStringFor_FullscreenResolution;
wxArrayString arrayStringFor_InterfaceLang;
wxArrayString arrayStringFor_GCSystemLang;
wxArrayString arrayStringFor_WiiSensBarPos;
wxArrayString arrayStringFor_WiiAspectRatio;
wxArrayString arrayStringFor_WiiSystemLang;
wxArrayString arrayStringFor_ISOPaths;
void InitializeGUILists();
void InitializeGUIValues();
void InitializeGUITooltips();
void CreateGUIControls();
void UpdateGUI();
void OnClose(wxCloseEvent& event);
void CoreSettingsChanged(wxCommandEvent& event);
void DisplaySettingsChanged(wxCommandEvent& event);
void OnSpin(wxSpinEvent& event);
void AudioSettingsChanged(wxCommandEvent& event);
void AddAudioBackends();
void GCSettingsChanged(wxCommandEvent& event);
void ChooseMemcardPath(std::string& strMemcard, bool isSlotA);
void ChooseSIDevice(wxString deviceName, int deviceNum);
void ChooseEXIDevice(wxString deviceName, int deviceNum);
void WiiSettingsChanged(wxCommandEvent& event);
// Change from IPL.LNG value to country code
inline u8 GetSADRCountryCode(int language);
void ISOPathsSelectionChanged(wxCommandEvent& event);
void RecursiveDirectoryChanged(wxCommandEvent& event);
void AddRemoveISOPaths(wxCommandEvent& event);
void DefaultISOChanged(wxFileDirPickerEvent& event);
void DVDRootChanged(wxFileDirPickerEvent& event);
void ApploaderPathChanged(wxFileDirPickerEvent& WXUNUSED (event));
void NANDRootChanged(wxFileDirPickerEvent& event);
private:
DECLARE_EVENT_TABLE();
static bool SupportsVolumeChanges(std::string backend);
};