2013-04-18 03:43:35 +00:00
// Copyright 2013 Dolphin Emulator Project
// Licensed under GPLv2
// Refer to the license.txt file included.
2011-02-03 21:11:06 +00:00
2014-02-22 22:36:30 +00:00
# include <cstdio>
# include <string>
# include <wx/checkbox.h>
# include <wx/choice.h>
# include <wx/defs.h>
# include <wx/dialog.h>
# include <wx/event.h>
# include <wx/gdicmn.h>
# include <wx/sizer.h>
# include <wx/stattext.h>
# include <wx/string.h>
# include <wx/textctrl.h>
# include <wx/translation.h>
# include <wx/windowid.h>
2014-02-17 10:18:15 +00:00
# include "Common/CommonPaths.h"
2014-02-22 22:36:30 +00:00
# include "Common/FileUtil.h"
# include "Common/IniFile.h"
# include "DolphinWX/ISOProperties.h"
2014-02-17 10:18:15 +00:00
# include "DolphinWX/PHackSettings.h"
# include "DolphinWX/WxUtils.h"
2011-02-03 21:11:06 +00:00
2014-02-22 22:36:30 +00:00
class wxWindow ;
2011-02-03 21:11:06 +00:00
extern PHackData PHack_Data ;
BEGIN_EVENT_TABLE ( CPHackSettings , wxDialog )
EVT_CHOICE ( ID_PHACK_CHOICE , CPHackSettings : : SetRefresh )
EVT_BUTTON ( wxID_OK , CPHackSettings : : SavePHackData )
END_EVENT_TABLE ( )
CPHackSettings : : CPHackSettings ( wxWindow * parent , wxWindowID id , const wxString & title , const wxPoint & position , const wxSize & size , long style )
: wxDialog ( parent , id , title , position , size , style )
{
CreateGUIControls ( ) ;
2014-03-12 19:33:41 +00:00
std : : string _iniFilename = File : : GetSysDirectory ( ) + GAMESETTINGS_DIR DIR_SEP " PH_PRESETS.ini " ;
PHPresetsIni . Load ( _iniFilename ) ;
2013-09-07 21:02:49 +00:00
PHPresetsIni . SortSections ( ) ;
2011-02-03 21:11:06 +00:00
LoadPHackData ( ) ;
}
CPHackSettings : : ~ CPHackSettings ( )
{
}
void CPHackSettings : : CreateGUIControls ( )
{
2011-03-17 04:26:01 +00:00
wxStaticText * PHackChoiceText = new wxStaticText ( this , wxID_ANY , _ ( " Presets: " ) ) ;
2011-05-31 19:58:15 +00:00
PHackChoice = new wxChoice ( this , ID_PHACK_CHOICE ) ;
2011-02-03 21:11:06 +00:00
PHackChoice - > SetToolTip ( _ ( " Load preset values from hack patterns available. " ) ) ;
2011-03-17 04:26:01 +00:00
wxStaticText * PHackZNearText = new wxStaticText ( this , wxID_ANY , _ ( " zNear Correction: " ) ) ;
PHackZNear = new wxTextCtrl ( this , ID_PHACK_ZNEAR ) ;
2011-02-03 21:11:06 +00:00
PHackZNear - > SetToolTip ( _ ( " Adds the specified value to zNear Parameter. \n Two ways to express the floating point values. \n Example: entering ' \' 200' \' or ' \' 0.0002' \' directly, it produces equal effects, the acquired value will be ' \' 0.0002' \' . \n Values: (0->+/-Integer) or (0->+/-FP[6 digits of precision]) \n \n NOTE: Check LogWindow/Console for the acquired values. " ) ) ;
2011-03-17 04:26:01 +00:00
PHackSZNear = new wxCheckBox ( this , ID_PHACK_SZNEAR , _ ( " (-)+zNear " ) ) ;
2011-02-03 21:11:06 +00:00
PHackSZNear - > SetToolTip ( _ ( " Changes sign to zNear Parameter (after correction) " ) ) ;
2011-03-17 04:26:01 +00:00
wxStaticText * PHackZFarText = new wxStaticText ( this , wxID_ANY , _ ( " zFar Correction: " ) ) ;
PHackZFar = new wxTextCtrl ( this , ID_PHACK_ZFAR ) ;
2011-02-03 21:11:06 +00:00
PHackZFar - > SetToolTip ( _ ( " Adds the specified value to zFar Parameter. \n Two ways to express the floating point values. \n Example: entering ' \' 200' \' or ' \' 0.0002' \' directly, it produces equal effects, the acquired value will be ' \' 0.0002' \' . \n Values: (0->+/-Integer) or (0->+/-FP[6 digits of precision]) \n \n NOTE: Check LogWindow/Console for the acquired values. " ) ) ;
2011-03-17 04:26:01 +00:00
PHackSZFar = new wxCheckBox ( this , ID_PHACK_SZFAR , _ ( " (-)+zFar " ) ) ;
2011-02-03 21:11:06 +00:00
PHackSZFar - > SetToolTip ( _ ( " Changes sign to zFar Parameter (after correction) " ) ) ;
wxStaticBoxSizer * sbPHackSettings = new wxStaticBoxSizer ( wxVERTICAL , this , _ ( " Parameters " ) ) ;
wxFlexGridSizer * szrPHackSettings = new wxFlexGridSizer ( 3 , 5 , 5 ) ;
sbPHackSettings - > Add ( szrPHackSettings , 0 , wxEXPAND | wxLEFT | wxTOP , 5 ) ;
szrPHackSettings - > Add ( PHackZNearText , 0 , wxALIGN_CENTER_VERTICAL ) ;
szrPHackSettings - > Add ( PHackZNear , 1 , wxEXPAND ) ;
szrPHackSettings - > Add ( PHackSZNear , 0 , wxEXPAND | wxLEFT , 5 ) ;
szrPHackSettings - > Add ( PHackZFarText , 0 , wxALIGN_CENTER_VERTICAL ) ;
szrPHackSettings - > Add ( PHackZFar , 1 , wxEXPAND ) ;
szrPHackSettings - > Add ( PHackSZFar , 0 , wxEXPAND | wxLEFT , 5 ) ;
wxBoxSizer * sPHack = new wxBoxSizer ( wxVERTICAL ) ;
sPHack - > Add ( PHackChoiceText , 0 , wxEXPAND | wxLEFT | wxRIGHT | wxTOP , 5 ) ;
sPHack - > Add ( PHackChoice , 0 , wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM , 5 ) ;
sPHack - > Add ( sbPHackSettings , 0 , wxEXPAND | wxALL , 5 ) ;
2011-03-17 04:26:01 +00:00
sPHack - > Add ( CreateButtonSizer ( wxOK | wxCANCEL ) , 0 , wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM , 5 ) ;
2011-02-03 21:11:06 +00:00
SetSizerAndFit ( sPHack ) ;
2011-03-17 04:26:01 +00:00
SetFocus ( ) ;
2011-02-03 21:11:06 +00:00
}
void CPHackSettings : : LoadPHackData ( )
{
std : : string sTemp ;
2014-03-16 22:42:56 +00:00
std : : string sIndex ;
2011-02-03 21:11:06 +00:00
PHackChoice - > Clear ( ) ;
PHackChoice - > Append ( _ ( " [Custom] " ) ) ;
2014-03-16 22:42:56 +00:00
for ( int i = 0 ; ; i + + )
2011-02-03 21:11:06 +00:00
{
2014-03-16 22:42:56 +00:00
sIndex = std : : to_string ( i ) ;
2011-02-03 21:11:06 +00:00
if ( ! PHPresetsIni . Exists ( sIndex , " Title " ) )
break ;
2014-03-16 22:42:56 +00:00
2011-02-03 21:11:06 +00:00
PHPresetsIni . Get ( sIndex , " Title " , & sTemp ) ;
2014-03-16 22:42:56 +00:00
2011-02-03 21:11:06 +00:00
if ( sTemp . empty ( ) )
2014-03-16 22:42:56 +00:00
sTemp = WxStrToStr ( _ ( " (UNKNOWN) " ) ) ;
2011-02-03 21:11:06 +00:00
if ( i = = 0 )
2013-02-28 04:37:38 +00:00
PHackChoice - > Append ( StrToWxStr ( " ------------- " ) ) ;
2014-03-16 22:42:56 +00:00
2013-02-28 04:37:38 +00:00
PHackChoice - > Append ( StrToWxStr ( sTemp ) ) ;
2011-02-03 21:11:06 +00:00
}
PHackChoice - > Select ( 0 ) ;
PHackSZNear - > Set3StateValue ( ( wxCheckBoxState ) PHack_Data . PHackSZNear ) ;
PHackSZFar - > Set3StateValue ( ( wxCheckBoxState ) PHack_Data . PHackSZFar ) ;
2013-02-28 04:37:38 +00:00
PHackZNear - > SetValue ( StrToWxStr ( PHack_Data . PHZNear ) ) ;
PHackZFar - > SetValue ( StrToWxStr ( PHack_Data . PHZFar ) ) ;
2011-02-03 21:11:06 +00:00
}
void CPHackSettings : : SetRefresh ( wxCommandEvent & event )
{
bool bTemp ;
std : : string sTemp ;
2014-03-16 22:42:56 +00:00
std : : string sIndex ;
2011-02-03 21:11:06 +00:00
int index = event . GetSelection ( ) ;
if ( index > 1 )
{
index - = 2 ;
2014-03-16 22:42:56 +00:00
sIndex = std : : to_string ( index ) ;
2011-02-03 21:11:06 +00:00
PHPresetsIni . Get ( sIndex , " PH_SZNear " , & bTemp ) ;
PHackSZNear - > Set3StateValue ( ( wxCheckBoxState ) bTemp ) ;
PHPresetsIni . Get ( sIndex , " PH_SZFar " , & bTemp ) ;
PHackSZFar - > Set3StateValue ( ( wxCheckBoxState ) bTemp ) ;
PHPresetsIni . Get ( sIndex , " PH_ZNear " , & sTemp ) ;
2013-02-28 04:37:38 +00:00
PHackZNear - > SetValue ( StrToWxStr ( sTemp ) ) ;
2011-02-03 21:11:06 +00:00
PHPresetsIni . Get ( sIndex , " PH_ZFar " , & sTemp ) ;
2013-02-28 04:37:38 +00:00
PHackZFar - > SetValue ( StrToWxStr ( sTemp ) ) ;
2011-02-03 21:11:06 +00:00
}
}
2011-03-17 04:26:01 +00:00
void CPHackSettings : : SavePHackData ( wxCommandEvent & event )
2011-02-03 21:11:06 +00:00
{
PHack_Data . PHackSZNear = PHackSZNear - > GetValue ( ) ;
PHack_Data . PHackSZFar = PHackSZFar - > GetValue ( ) ;
PHack_Data . PHZNear = PHackZNear - > GetValue ( ) . char_str ( ) ;
PHack_Data . PHZFar = PHackZFar - > GetValue ( ) . char_str ( ) ;
AcceptAndClose ( ) ;
2011-03-17 04:26:01 +00:00
event . Skip ( ) ;
2011-02-03 21:11:06 +00:00
}