2009-07-28 21:32:10 +00:00
// Copyright (C) 2003 Dolphin Project.
2009-03-23 20:55:32 +00:00
// 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/
# include "Config.h"
2009-03-29 21:00:26 +00:00
# include "DSPConfigDlgLLE.h"
2009-03-23 20:55:32 +00:00
2009-03-29 21:00:26 +00:00
BEGIN_EVENT_TABLE ( DSPConfigDialogLLE , wxDialog )
2010-02-06 16:20:54 +00:00
EVT_BUTTON ( wxID_OK , DSPConfigDialogLLE : : SettingsChanged )
EVT_CHECKBOX ( ID_ENABLE_DTK_MUSIC , DSPConfigDialogLLE : : SettingsChanged )
EVT_CHECKBOX ( ID_ENABLE_THROTTLE , DSPConfigDialogLLE : : SettingsChanged )
2010-04-07 15:04:45 +00:00
EVT_CHECKBOX ( ID_ENABLE_JIT , DSPConfigDialogLLE : : SettingsChanged )
2010-02-25 06:12:35 +00:00
EVT_CHOICE ( ID_BACKEND , DSPConfigDialogLLE : : BackendChanged )
2010-02-06 16:20:54 +00:00
EVT_COMMAND_SCROLL ( ID_VOLUME , DSPConfigDialogLLE : : VolumeChanged )
2009-03-23 20:55:32 +00:00
END_EVENT_TABLE ( )
2009-03-29 21:00:26 +00:00
DSPConfigDialogLLE : : DSPConfigDialogLLE ( wxWindow * parent , wxWindowID id , const wxString & title , const wxPoint & position , const wxSize & size , long style )
2009-03-23 20:55:32 +00:00
: wxDialog ( parent , id , title , position , size , style )
{
// Load config settings
g_Config . Load ( ) ;
2011-01-06 18:08:16 +00:00
m_OK = new wxButton ( this , wxID_OK , _ ( " OK " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
2010-02-06 16:20:54 +00:00
2011-01-06 18:08:16 +00:00
wxStaticBoxSizer * sbSettings = new wxStaticBoxSizer ( wxVERTICAL , this , _ ( " Sound Settings " ) ) ;
wxStaticBoxSizer * sbSettingsV = new wxStaticBoxSizer ( wxVERTICAL , this , _ ( " Volume " ) ) ;
2009-03-23 20:55:32 +00:00
// Create items
2011-01-06 18:08:16 +00:00
m_buttonEnableDTKMusic = new wxCheckBox ( this , ID_ENABLE_DTK_MUSIC , _ ( " Enable DTK Music " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_buttonEnableThrottle = new wxCheckBox ( this , ID_ENABLE_THROTTLE , _ ( " Enable Audio Throttle " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
m_buttonEnableJIT = new wxCheckBox ( this , ID_ENABLE_JIT , _ ( " Enable JIT Dynarec " ) , wxDefaultPosition , wxDefaultSize , 0 , wxDefaultValidator ) ;
wxStaticText * BackendText = new wxStaticText ( this , wxID_ANY , _ ( " Audio Backend " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
2010-06-11 08:39:03 +00:00
m_BackendSelection = new wxChoice ( this , ID_BACKEND , wxDefaultPosition , wxSize ( 110 , 20 ) , wxArrayBackends , 0 , wxDefaultValidator , wxEmptyString ) ;
2009-05-20 09:13:28 +00:00
m_volumeSlider = new wxSlider ( this , ID_VOLUME , ac_Config . m_Volume , 1 , 100 , wxDefaultPosition , wxDefaultSize , wxSL_VERTICAL | wxSL_INVERSE ) ;
2010-02-07 14:51:12 +00:00
m_volumeSlider - > Enable ( SupportsVolumeChanges ( ac_Config . sBackend ) ) ;
2011-01-06 18:08:16 +00:00
m_volumeText = new wxStaticText ( this , wxID_ANY , wxString : : Format ( _ ( " %d %% " ) , ac_Config . m_Volume ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
2009-03-23 20:55:32 +00:00
// Update values
2009-03-30 09:55:50 +00:00
m_buttonEnableDTKMusic - > SetValue ( ac_Config . m_EnableDTKMusic ? true : false ) ;
m_buttonEnableThrottle - > SetValue ( ac_Config . m_EnableThrottle ? true : false ) ;
2010-04-07 15:04:45 +00:00
m_buttonEnableJIT - > SetValue ( ac_Config . m_EnableJIT ? true : false ) ;
2009-03-23 20:55:32 +00:00
// Add tooltips
2011-01-06 18:08:16 +00:00
m_buttonEnableDTKMusic - > SetToolTip ( _ ( " This is used to play music tracks, like BGM. " ) ) ;
m_buttonEnableThrottle - > SetToolTip ( _ ( " This is used to control game speed by sound throttle. \n Disabling this could cause abnormal game speed, such as too fast. \n But sometimes enabling this could cause constant noise. \n \n Keyboard Shortcut <TAB>: Hold down to instantly disable Throttle. " ) ) ;
m_buttonEnableJIT - > SetToolTip ( _ ( " Enables dynamic recompilation of DSP code. \n Changing this will have no effect while the emulator is running! " ) ) ;
m_BackendSelection - > SetToolTip ( _ ( " Changing this will have no effect while the emulator is running! " ) ) ;
2009-03-23 20:55:32 +00:00
// Create sizer and add items to dialog
wxBoxSizer * sMain = new wxBoxSizer ( wxVERTICAL ) ;
2009-05-20 09:13:28 +00:00
wxBoxSizer * sSettings = new wxBoxSizer ( wxHORIZONTAL ) ;
wxBoxSizer * sBackend = new wxBoxSizer ( wxHORIZONTAL ) ;
wxBoxSizer * sButtons = new wxBoxSizer ( wxHORIZONTAL ) ;
2009-03-30 09:55:50 +00:00
sbSettings - > Add ( m_buttonEnableDTKMusic , 0 , wxALL , 5 ) ;
2009-03-23 20:55:32 +00:00
sbSettings - > Add ( m_buttonEnableThrottle , 0 , wxALL , 5 ) ;
2010-04-07 15:04:45 +00:00
sbSettings - > Add ( m_buttonEnableJIT , 0 , wxALL , 5 ) ;
2009-05-20 09:13:28 +00:00
sBackend - > Add ( BackendText , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
sBackend - > Add ( m_BackendSelection , 0 , wxALL , 1 ) ;
sbSettings - > Add ( sBackend , 0 , wxALL , 2 ) ;
2010-08-17 02:14:04 +00:00
sbSettingsV - > Add ( m_volumeSlider , 1 , wxLEFT | wxRIGHT | wxALIGN_CENTER , 6 ) ;
2010-02-06 16:20:54 +00:00
sbSettingsV - > Add ( m_volumeText , 0 , wxALL | wxALIGN_LEFT , 4 ) ;
2010-02-07 14:51:12 +00:00
sSettings - > Add ( sbSettings , 0 , wxALL | wxEXPAND , 4 ) ;
2009-05-20 09:13:28 +00:00
sSettings - > Add ( sbSettingsV , 0 , wxALL | wxEXPAND , 4 ) ;
sMain - > Add ( sSettings , 0 , wxALL | wxEXPAND , 4 ) ;
sButtons - > AddStretchSpacer ( ) ;
sButtons - > Add ( m_OK , 0 , wxALL , 1 ) ;
sMain - > Add ( sButtons , 0 , wxALL | wxEXPAND , 4 ) ;
SetSizerAndFit ( sMain ) ;
2010-02-25 06:12:35 +00:00
// Center window
CenterOnParent ( ) ;
2009-03-23 20:55:32 +00:00
}
// Add audio output options
2009-03-29 21:00:26 +00:00
void DSPConfigDialogLLE : : AddBackend ( const char * backend )
2009-03-23 20:55:32 +00:00
{
2010-02-06 16:20:54 +00:00
// Update value
2009-03-23 20:55:32 +00:00
m_BackendSelection - > Append ( wxString : : FromAscii ( backend ) ) ;
2009-05-20 09:13:28 +00:00
2009-04-25 16:47:45 +00:00
# ifdef __APPLE__
2010-02-19 23:20:13 +00:00
int num = m_BackendSelection - > FindString ( wxString : : FromAscii ( ac_Config . sBackend ) ) ;
2009-04-25 16:47:45 +00:00
# else
2010-02-19 23:20:13 +00:00
int num = m_BackendSelection - > FindString ( wxString : : FromAscii ( ac_Config . sBackend . c_str ( ) ) ) ;
2009-04-25 16:47:45 +00:00
# endif
2010-02-19 23:24:33 +00:00
m_BackendSelection - > SetSelection ( num ) ;
2009-03-23 20:55:32 +00:00
}
2009-12-22 07:26:30 +00:00
void DSPConfigDialogLLE : : ClearBackends ( )
{
m_BackendSelection - > Clear ( ) ;
}
2009-03-29 21:00:26 +00:00
DSPConfigDialogLLE : : ~ DSPConfigDialogLLE ( )
2009-03-23 20:55:32 +00:00
{
}
2009-05-20 09:13:28 +00:00
void DSPConfigDialogLLE : : VolumeChanged ( wxScrollEvent & WXUNUSED ( event ) )
{
ac_Config . m_Volume = m_volumeSlider - > GetValue ( ) ;
ac_Config . Update ( ) ;
m_volumeText - > SetLabel ( wxString : : Format ( wxT ( " %d %% " ) , m_volumeSlider - > GetValue ( ) ) ) ;
}
2009-03-29 21:00:26 +00:00
void DSPConfigDialogLLE : : SettingsChanged ( wxCommandEvent & event )
2009-03-23 20:55:32 +00:00
{
2009-03-30 09:55:50 +00:00
ac_Config . m_EnableDTKMusic = m_buttonEnableDTKMusic - > GetValue ( ) ;
ac_Config . m_EnableThrottle = m_buttonEnableThrottle - > GetValue ( ) ;
2010-04-07 15:04:45 +00:00
ac_Config . m_EnableJIT = m_buttonEnableJIT - > GetValue ( ) ;
2009-04-27 23:27:56 +00:00
2009-04-25 16:47:45 +00:00
# ifdef __APPLE__
2010-02-19 23:20:13 +00:00
strncpy ( ac_Config . sBackend , m_BackendSelection - > GetStringSelection ( ) . mb_str ( ) , 128 ) ;
2009-04-25 16:47:45 +00:00
# else
2010-02-19 23:20:13 +00:00
ac_Config . sBackend = m_BackendSelection - > GetStringSelection ( ) . mb_str ( ) ;
2009-04-25 16:47:45 +00:00
# endif
2009-03-30 09:55:50 +00:00
ac_Config . Update ( ) ;
2009-03-23 20:55:32 +00:00
g_Config . Save ( ) ;
2009-03-30 09:55:50 +00:00
2009-03-23 20:55:32 +00:00
if ( event . GetId ( ) = = wxID_OK )
EndModal ( wxID_OK ) ;
}
2010-02-07 14:51:12 +00:00
bool DSPConfigDialogLLE : : SupportsVolumeChanges ( std : : string backend )
{
//FIXME: this one should ask the backend whether it supports it.
// but getting the backend from string etc. is probably
// too much just to enable/disable a stupid slider...
return ( backend = = BACKEND_DIRECTSOUND | |
2011-01-02 02:49:30 +00:00
backend = = BACKEND_COREAUDIO | |
backend = = BACKEND_OPENAL | |
2010-11-10 08:41:10 +00:00
backend = = BACKEND_XAUDIO2 | |
2010-08-17 02:14:04 +00:00
backend = = BACKEND_PULSEAUDIO ) ;
2010-02-07 14:51:12 +00:00
}
void DSPConfigDialogLLE : : BackendChanged ( wxCommandEvent & event )
{
2010-02-19 23:20:13 +00:00
m_volumeSlider - > Enable ( SupportsVolumeChanges ( std : : string ( m_BackendSelection - > GetStringSelection ( ) . mb_str ( ) ) ) ) ;
2010-02-07 14:51:12 +00:00
}