diff --git a/common/build/Utilities/utilities.vcproj b/common/build/Utilities/utilities.vcproj
index bf262becb..a6fb4cd83 100644
--- a/common/build/Utilities/utilities.vcproj
+++ b/common/build/Utilities/utilities.vcproj
@@ -219,6 +219,10 @@
RelativePath="..\..\src\Utilities\HashTools.cpp"
>
+
+
@@ -381,6 +385,10 @@
RelativePath="..\..\include\Utilities\HashMap.h"
>
+
+
diff --git a/pcsx2/gui/IniInterface.h b/common/include/Utilities/IniInterface.h
similarity index 85%
rename from pcsx2/gui/IniInterface.h
rename to common/include/Utilities/IniInterface.h
index 852db56a4..fe564890b 100644
--- a/pcsx2/gui/IniInterface.h
+++ b/common/include/Utilities/IniInterface.h
@@ -15,11 +15,13 @@
#pragma once
+#include "FixedPointTypes.h"
+#include "path.h"
#include
-//////////////////////////////////////////////////////////////////////////////////////////
-// IniInterface class (abstract base class)
-//
+// --------------------------------------------------------------------------------------
+// IniInterface (abstract base class)
+// --------------------------------------------------------------------------------------
// This is used as an interchangable interface for both loading and saving options from an
// ini/configuration file. The LoadSave code takes an IniInterface, and the interface
// implementation defines whether the options are read or written.
@@ -29,17 +31,19 @@
class IniInterface
{
protected:
- wxConfigBase& m_Config;
+ wxConfigBase* m_Config;
public:
virtual ~IniInterface();
explicit IniInterface();
explicit IniInterface( wxConfigBase& config );
+ explicit IniInterface( wxConfigBase* config );
void SetPath( const wxString& path );
void Flush();
- wxConfigBase& GetConfig() { return m_Config; }
+ wxConfigBase& GetConfig() { pxAssume( m_Config ); return *m_Config; }
+ bool IsOk() const { return m_Config != NULL; }
virtual bool IsLoading() const=0;
bool IsSaving() const { return !IsLoading(); }
@@ -76,8 +80,9 @@ protected:
virtual void _EnumEntry( const wxString& var, int& value, const wxChar* const* enumArray, int defvalue )=0;
};
-//////////////////////////////////////////////////////////////////////////////////////////
-//
+// --------------------------------------------------------------------------------------
+// IniScopedGroup
+// --------------------------------------------------------------------------------------
class IniScopedGroup
{
protected:
@@ -88,9 +93,9 @@ public:
virtual ~IniScopedGroup();
};
-//////////////////////////////////////////////////////////////////////////////////////////
-// IniLoader class
-//
+// --------------------------------------------------------------------------------------
+// IniLoader
+// --------------------------------------------------------------------------------------
// Implementation of the IniInterface base class, which maps ini actions to loading from
// an ini source file.
//
@@ -102,6 +107,7 @@ public:
virtual ~IniLoader() throw();
explicit IniLoader();
explicit IniLoader( wxConfigBase& config );
+ explicit IniLoader( wxConfigBase* config );
bool IsLoading() const { return true; }
@@ -125,9 +131,9 @@ protected:
void _EnumEntry( const wxString& var, int& value, const wxChar* const* enumArray, int defvalue );
};
-//////////////////////////////////////////////////////////////////////////////////////////
-// IniSaver class
-//
+// --------------------------------------------------------------------------------------
+// IniSaver
+// --------------------------------------------------------------------------------------
// Implementation of the IniInterface base class, which maps ini actions to saving to
// an ini dest file.
//
@@ -139,6 +145,7 @@ public:
virtual ~IniSaver();
explicit IniSaver();
explicit IniSaver( wxConfigBase& config );
+ explicit IniSaver( wxConfigBase* config );
bool IsLoading() const { return false; }
diff --git a/common/include/Utilities/Path.h b/common/include/Utilities/Path.h
index fae61dd6f..351e99d85 100644
--- a/common/include/Utilities/Path.h
+++ b/common/include/Utilities/Path.h
@@ -129,7 +129,7 @@ namespace Path
extern s64 GetFileSize( const wxString& path );
extern wxString Normalize( const wxString& srcpath );
- extern wxString Normalize( wxDirName srcpath );
+ extern wxString Normalize( const wxDirName& srcpath );
extern wxString Combine( const wxString& srcPath, const wxString& srcFile );
extern wxString Combine( const wxDirName& srcPath, const wxFileName& srcFile );
diff --git a/common/include/Utilities/pxStaticText.h b/common/include/Utilities/pxStaticText.h
index 086d37250..dada22a01 100644
--- a/common/include/Utilities/pxStaticText.h
+++ b/common/include/Utilities/pxStaticText.h
@@ -26,19 +26,21 @@
// * An inability to wrap text to conform to a fitted window (a limitation imposed by
// wxWidgets inability to fit individual directions, ie fit widths and then fit heights,
// which would allow a textbox to wrap text to a sizer-determined width, and then grow
-// the sizers vertically to fit the calcuated text-wrapped height).
+// the sizers vertically to fit the calculated text-wrapped height).
//
// * Textbox alignment requires aligning both the textbox contents, and aligning the text
// control within it's containing sizer. If both alignment flags do not match the result
// is typically undesirable.
//
-class pxStaticText : public wxPanel
+class pxStaticText : public wxWindow
{
- typedef wxPanel _parent;
+ typedef wxWindow _parent;
protected:
- wxAlignment m_align;
+ wxString m_label;
wxString m_wrappedLabel;
+
+ wxAlignment m_align;
bool m_autowrap;
int m_wrappedWidth;
int m_heightInLines;
@@ -51,6 +53,11 @@ protected:
protected:
explicit pxStaticText( wxWindow* parent=NULL );
+ // wxWindow overloads!
+ bool AcceptsFocus() const { return false; }
+ bool HasTransparentBackground() { return true; }
+ void DoSetSize(int x, int y, int w, int h, int sizeFlags = wxSIZE_AUTO);
+
public:
pxStaticText( wxWindow* parent, const wxString& label, wxAlignment align=wxALIGN_CENTRE_HORIZONTAL );
pxStaticText( wxWindow* parent, int heightInLines, const wxString& label, wxAlignment align=wxALIGN_CENTRE_HORIZONTAL );
@@ -61,6 +68,11 @@ public:
virtual void SetLabel(const wxString& label);
+ virtual wxString GetLabel() const { return m_label; }
+
+ pxStaticText& SetMinWidth( int width );
+ pxStaticText& SetMinHeight( int height );
+
pxStaticText& SetHeight( int lines );
pxStaticText& Bold();
pxStaticText& WrapAt( int width );
diff --git a/common/include/Utilities/wxGuiTools.h b/common/include/Utilities/wxGuiTools.h
index 014ab1246..4d2cdb9aa 100644
--- a/common/include/Utilities/wxGuiTools.h
+++ b/common/include/Utilities/wxGuiTools.h
@@ -310,7 +310,7 @@ END_DECLARE_EVENT_TYPES()
class pxDialogCreationFlags
{
public:
- int MinimumWidth;
+ wxSize MinimumSize;
wxOrientation BoxSizerOrient;
bool isResizable;
@@ -326,7 +326,7 @@ public:
pxDialogCreationFlags()
{
- MinimumWidth = wxDefaultCoord;
+ MinimumSize = wxDefaultSize;
BoxSizerOrient = wxVERTICAL;
isResizable = false;
hasContextHelp = false;
@@ -362,6 +362,8 @@ public:
return *this;
}
+ // NOTE: Enabling system menu on dialogs usually doesn't work, and might cause
+ // other unwanted behavior, such as a missing close button.
pxDialogCreationFlags& SetSystemMenu( bool enable=true )
{
hasSystemMenu = enable;
@@ -388,10 +390,20 @@ public:
pxDialogCreationFlags& SetMinWidth( int width )
{
- if( width > MinimumWidth ) MinimumWidth = width;
+ if( width > MinimumSize.x ) MinimumSize.SetWidth( width );
return *this;
}
+ pxDialogCreationFlags& SetMinHeight( int height )
+ {
+ if( height > MinimumSize.y ) MinimumSize.SetHeight( height );
+ return *this;
+ }
+
+ pxDialogCreationFlags& SetMinSize( const wxSize& size )
+ {
+ return SetMinWidth(size.x).SetMinHeight(size.y);
+ }
pxDialogCreationFlags Horizontal() const
@@ -424,6 +436,8 @@ public:
return pxDialogCreationFlags(*this).SetMaximize( enable );
}
+ // NOTE: Enabling system menu on dialogs usually doesn't work, and might cause
+ // other unwanted behavior, such as a missing close button.
pxDialogCreationFlags SystemMenu( bool enable=true ) const
{
return pxDialogCreationFlags(*this).SetSystemMenu( false );
@@ -473,6 +487,21 @@ public:
{
return pxDialogCreationFlags(*this).SetMinWidth( width );
}
+
+ pxDialogCreationFlags MinHeight( int height ) const
+ {
+ return pxDialogCreationFlags(*this).SetMinHeight( height );
+ }
+
+ pxDialogCreationFlags MinSize( const wxSize& size ) const
+ {
+ return pxDialogCreationFlags(*this).SetMinSize( size );
+ }
+
+ pxDialogCreationFlags MinSize( int width, int height ) const
+ {
+ return pxDialogCreationFlags(*this).SetMinWidth( width ).SetMinHeight( height );
+ }
int GetWxWindowFlags() const
{
@@ -498,13 +527,14 @@ class wxDialogWithHelpers : public wxDialog
protected:
bool m_hasContextHelp;
wxBoxSizer* m_extraButtonSizer;
-
+ wxRect m_CreatedRect;
+
public:
wxDialogWithHelpers();
wxDialogWithHelpers(wxWindow* parent, const wxString& title, const pxDialogCreationFlags& cflags = pxDialogCreationFlags() );
virtual ~wxDialogWithHelpers() throw();
- void Init();
+ void Init( const pxDialogCreationFlags& cflags );
void AddOkCancel( wxSizer& sizer, bool hasApply=false );
void AddOkCancel( wxSizer* sizer=NULL, bool hasApply=false );
@@ -522,12 +552,15 @@ public:
virtual pxStaticText& Text( const wxString& label );
virtual pxStaticText& Heading( const wxString& label );
- virtual wxDialogWithHelpers& SetMinWidth( int newWidth );
+ wxDialogWithHelpers& SetMinWidth( int newWidth );
+ wxDialogWithHelpers& SetMinHeight( int newHeight );
protected:
void OnDialogCreated( wxCommandEvent& evt );
void OnOkCancel(wxCommandEvent& evt);
void OnCloseWindow(wxCloseEvent& event);
+
+ void DoAutoCenter();
};
// --------------------------------------------------------------------------------------
diff --git a/pcsx2/gui/IniInterface.cpp b/common/src/Utilities/IniInterface.cpp
similarity index 66%
rename from pcsx2/gui/IniInterface.cpp
rename to common/src/Utilities/IniInterface.cpp
index d5f53c6c4..37ca02246 100644
--- a/pcsx2/gui/IniInterface.cpp
+++ b/common/src/Utilities/IniInterface.cpp
@@ -14,7 +14,6 @@
*/
#include "PrecompiledHeader.h"
-#include "System.h"
#include "IniInterface.h"
static int _calcEnumLength( const wxChar* const* enumArray )
@@ -29,37 +28,8 @@ static int _calcEnumLength( const wxChar* const* enumArray )
return cnt;
}
-//////////////////////////////////////////////////////////////////////////////////////////
-//
-IniInterface::IniInterface( wxConfigBase& config ) :
- m_Config( config )
-{
-}
-
-IniInterface::IniInterface() :
- m_Config( *wxConfigBase::Get() )
-{
-}
-
-IniInterface::~IniInterface()
-{
- Flush();
-}
-
-void IniInterface::SetPath( const wxString& path )
-{
- m_Config.SetPath( path );
-}
-
-void IniInterface::Flush()
-{
- m_Config.Flush();
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////
-//
-IniScopedGroup::IniScopedGroup( IniInterface& mommy, const wxString& group ) :
- m_mom( mommy )
+IniScopedGroup::IniScopedGroup( IniInterface& mommy, const wxString& group )
+ : m_mom( mommy )
{
pxAssertDev( wxStringTokenize( group, L"/" ).Count() <= 1, L"Cannot nest more than one group deep per instance of IniScopedGroup." );
m_mom.SetPath( group );
@@ -70,26 +40,62 @@ IniScopedGroup::~IniScopedGroup()
m_mom.SetPath( L".." );
}
-//////////////////////////////////////////////////////////////////////////////////////////
-//
-
-IniLoader::IniLoader( wxConfigBase& config ) : IniInterface( config )
+// --------------------------------------------------------------------------------------
+// IniInterface (implementations)
+// --------------------------------------------------------------------------------------
+IniInterface::IniInterface( wxConfigBase& config )
{
+ m_Config = &config;
}
+IniInterface::IniInterface( wxConfigBase* config )
+{
+ m_Config = config;
+}
+
+IniInterface::IniInterface()
+{
+ m_Config = wxConfigBase::Get( false );
+}
+
+IniInterface::~IniInterface()
+{
+ Flush();
+}
+
+void IniInterface::SetPath( const wxString& path )
+{
+ if( m_Config ) m_Config->SetPath( path );
+}
+
+void IniInterface::Flush()
+{
+ if( m_Config ) m_Config->Flush();
+}
+
+
+// --------------------------------------------------------------------------------------
+// IniLoader (implementations)
+// --------------------------------------------------------------------------------------
+IniLoader::IniLoader( wxConfigBase& config ) : IniInterface( config ) { }
+IniLoader::IniLoader( wxConfigBase* config ) : IniInterface( config ) { }
+
IniLoader::IniLoader() : IniInterface() {}
IniLoader::~IniLoader() throw() {}
void IniLoader::Entry( const wxString& var, wxString& value, const wxString& defvalue )
{
- m_Config.Read( var, &value, defvalue );
+ if( m_Config )
+ m_Config->Read( var, &value, defvalue );
+ else
+ value = defvalue;
}
void IniLoader::Entry( const wxString& var, wxDirName& value, const wxDirName& defvalue )
{
wxString dest;
- m_Config.Read( var, &dest, wxEmptyString );
+ if( m_Config ) m_Config->Read( var, &dest, wxEmptyString );
if( dest.IsEmpty() )
value = defvalue;
@@ -99,26 +105,32 @@ void IniLoader::Entry( const wxString& var, wxDirName& value, const wxDirName& d
void IniLoader::Entry( const wxString& var, wxFileName& value, const wxFileName& defvalue )
{
- wxString dest;
- m_Config.Read( var, &dest, defvalue.GetFullPath() );
+ wxString dest( defvalue.GetFullPath() );
+ if( m_Config ) m_Config->Read( var, &dest, defvalue.GetFullPath() );
value = dest;
}
void IniLoader::Entry( const wxString& var, int& value, const int defvalue )
{
- m_Config.Read( var, &value, defvalue );
+ if( m_Config )
+ m_Config->Read( var, &value, defvalue );
+ else
+ value = defvalue;
}
void IniLoader::Entry( const wxString& var, uint& value, const uint defvalue )
{
- m_Config.Read( var, (int*)&value, (int)defvalue );
+ if( m_Config )
+ m_Config->Read( var, (int*)&value, (int)defvalue );
+ else
+ value = defvalue;
}
void IniLoader::Entry( const wxString& var, bool& value, const bool defvalue )
{
// TODO : Stricter value checking on enabled/disabled?
- wxString dest;
- m_Config.Read( var, &dest, defvalue ? L"enabled" : L"disabled" );
+ wxString dest(defvalue ? L"enabled" : L"disabled");
+ if( m_Config ) m_Config->Read( var, &dest, dest );
value = (dest == L"enabled") || (dest == L"1");
}
@@ -143,23 +155,35 @@ void IniLoader::Entry( const wxString& var, Fixed100& value, const Fixed100& def
// has way too much rounding error so we really need to do things out manually.. >_<
wxString readval( value.ToString() );
- m_Config.Read( var, &readval );
+ if( m_Config ) m_Config->Read( var, &readval );
value = Fixed100::FromString( readval, value );
}
void IniLoader::Entry( const wxString& var, wxPoint& value, const wxPoint& defvalue )
{
- TryParse( value, m_Config.Read( var, ToString( defvalue ) ), defvalue );
+ if( !m_Config )
+ {
+ value = defvalue; return;
+ }
+ TryParse( value, m_Config->Read( var, ToString( defvalue ) ), defvalue );
}
void IniLoader::Entry( const wxString& var, wxSize& value, const wxSize& defvalue )
{
- TryParse( value, m_Config.Read( var, ToString( defvalue ) ), defvalue );
+ if( !m_Config )
+ {
+ value = defvalue; return;
+ }
+ TryParse( value, m_Config->Read( var, ToString( defvalue ) ), defvalue );
}
void IniLoader::Entry( const wxString& var, wxRect& value, const wxRect& defvalue )
{
- TryParse( value, m_Config.Read( var, ToString( defvalue ) ), defvalue );
+ if( !m_Config )
+ {
+ value = defvalue; return;
+ }
+ TryParse( value, m_Config->Read( var, ToString( defvalue ) ), defvalue );
}
void IniLoader::_EnumEntry( const wxString& var, int& value, const wxChar* const* enumArray, int defvalue )
@@ -175,8 +199,14 @@ void IniLoader::_EnumEntry( const wxString& var, int& value, const wxChar* const
// Sanity confirmed, proceed with craziness!
+ if( !m_Config )
+ {
+ value = defvalue;
+ return;
+ }
+
wxString retval;
- m_Config.Read( var, &retval, enumArray[defvalue] );
+ m_Config->Read( var, &retval, enumArray[defvalue] );
int i=0;
while( enumArray[i] != NULL && ( retval != enumArray[i] ) ) i++;
@@ -192,82 +222,95 @@ void IniLoader::_EnumEntry( const wxString& var, int& value, const wxChar* const
value = i;
}
-//////////////////////////////////////////////////////////////////////////////////////////
-//
+// --------------------------------------------------------------------------------------
+// IniSaver (implementations)
+// --------------------------------------------------------------------------------------
+
+IniSaver::IniSaver( wxConfigBase& config ) : IniInterface( config ) { }
+IniSaver::IniSaver( wxConfigBase* config ) : IniInterface( config ) { }
-IniSaver::IniSaver( wxConfigBase& config ) : IniInterface( config )
-{
-}
IniSaver::IniSaver() : IniInterface() {}
IniSaver::~IniSaver() {}
void IniSaver::Entry( const wxString& var, wxString& value, const wxString& defvalue )
{
- m_Config.Write( var, value );
+ if( !m_Config ) return;
+ m_Config->Write( var, value );
}
void IniSaver::Entry( const wxString& var, wxDirName& value, const wxDirName& defvalue )
{
+ if( !m_Config ) return;
+
/*if( value == defvalue )
- m_Config.Write( var, wxString() );
+ m_Config->Write( var, wxString() );
else*/
- m_Config.Write( var, value.ToString() );
+ m_Config->Write( var, value.ToString() );
}
void IniSaver::Entry( const wxString& var, wxFileName& value, const wxFileName& defvalue )
{
- m_Config.Write( var, value.GetFullPath() );
+ if( !m_Config ) return;
+ m_Config->Write( var, value.GetFullPath() );
}
void IniSaver::Entry( const wxString& var, int& value, const int defvalue )
{
- m_Config.Write( var, value );
+ if( !m_Config ) return;
+ m_Config->Write( var, value );
}
void IniSaver::Entry( const wxString& var, uint& value, const uint defvalue )
{
- m_Config.Write( var, (int)value );
+ if( !m_Config ) return;
+ m_Config->Write( var, (int)value );
}
void IniSaver::Entry( const wxString& var, bool& value, const bool defvalue )
{
- m_Config.Write( var, value ? L"enabled" : L"disabled" );
+ if( !m_Config ) return;
+ m_Config->Write( var, value ? L"enabled" : L"disabled" );
}
bool IniSaver::EntryBitBool( const wxString& var, bool value, const bool defvalue )
{
- m_Config.Write( var, value ? L"enabled" : L"disabled" );
+ if( m_Config ) m_Config->Write( var, value ? L"enabled" : L"disabled" );
return value;
}
int IniSaver::EntryBitfield( const wxString& var, int value, const int defvalue )
{
- m_Config.Write( var, value );
+ if( m_Config ) m_Config->Write( var, value );
return value;
}
void IniSaver::Entry( const wxString& var, Fixed100& value, const Fixed100& defvalue )
{
+ if( !m_Config ) return;
+
// Note: the "easy" way would be to convert to double and load/save that, but floating point
// has way too much rounding error so we really need to do things out manually, using strings.
- m_Config.Write( var, value.ToString() );
+ m_Config->Write( var, value.ToString() );
}
void IniSaver::Entry( const wxString& var, wxPoint& value, const wxPoint& defvalue )
{
- m_Config.Write( var, ToString( value ) );
+ if( !m_Config ) return;
+ m_Config->Write( var, ToString( value ) );
}
void IniSaver::Entry( const wxString& var, wxSize& value, const wxSize& defvalue )
{
- m_Config.Write( var, ToString( value ) );
+ if( !m_Config ) return;
+ m_Config->Write( var, ToString( value ) );
}
void IniSaver::Entry( const wxString& var, wxRect& value, const wxRect& defvalue )
{
- m_Config.Write( var, ToString( value ) );
+ if( !m_Config ) return;
+ m_Config->Write( var, ToString( value ) );
}
void IniSaver::_EnumEntry( const wxString& var, int& value, const wxChar* const* enumArray, int defvalue )
@@ -282,6 +325,8 @@ void IniSaver::_EnumEntry( const wxString& var, int& value, const wxChar* const*
defvalue = cnt-1;
}
+ if( !m_Config ) return;
+
if( value >= cnt )
{
Console.Warning( L"(SaveSettings) An illegal enumerated index was detected when saving '%s'", var.c_str() );
@@ -297,6 +342,6 @@ void IniSaver::_EnumEntry( const wxString& var, int& value, const wxChar* const*
value = defvalue;
}
- m_Config.Write( var, enumArray[value] );
+ m_Config->Write( var, enumArray[value] );
}
diff --git a/common/src/Utilities/PathUtils.cpp b/common/src/Utilities/PathUtils.cpp
index a8c9cddf2..efa9d6ae2 100644
--- a/common/src/Utilities/PathUtils.cpp
+++ b/common/src/Utilities/PathUtils.cpp
@@ -20,7 +20,7 @@
#include
// ---------------------------------------------------------------------------------
-// wxDirName Implementations
+// wxDirName (implementations)
// ---------------------------------------------------------------------------------
wxFileName wxDirName::Combine( const wxFileName& right ) const
@@ -116,10 +116,9 @@ wxString Path::Normalize( const wxString& src )
return normalize.GetFullPath();
}
-wxString Path::Normalize( wxDirName src )
+wxString Path::Normalize( const wxDirName& src )
{
- src.Normalize();
- return src.ToString();
+ return wxDirName(src).Normalize().ToString();
}
// Concatenates two pathnames together, inserting delimiters (backslash on win32)
diff --git a/common/src/Utilities/pxStaticText.cpp b/common/src/Utilities/pxStaticText.cpp
index 2db912aa8..843beeecb 100644
--- a/common/src/Utilities/pxStaticText.cpp
+++ b/common/src/Utilities/pxStaticText.cpp
@@ -21,13 +21,13 @@
// pxStaticText (implementations)
// --------------------------------------------------------------------------------------
pxStaticText::pxStaticText( wxWindow* parent )
- : _parent( parent )
+ : _parent( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNO_BORDER )
{
m_heightInLines = 1;
}
pxStaticText::pxStaticText( wxWindow* parent, const wxString& label, wxAlignment align )
- : _parent( parent )
+ : _parent( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNO_BORDER )
{
m_heightInLines = 1;
m_align = align;
@@ -40,12 +40,19 @@ void pxStaticText::Init( const wxString& label )
{
m_autowrap = true;
m_wrappedWidth = -1;
-
- //SetHeight( 1 );
- SetLabel( label );
+ m_label = label;
Connect( wxEVT_PAINT, wxPaintEventHandler(pxStaticText::paintEvent) );
}
+// we need to refresh the window after changing its size as the standard
+// control doesn't always update itself properly (fials typically on window resizes where
+// the control is expanded to fit -- ie the control's size changes but the position does not)
+void pxStaticText::DoSetSize(int x, int y, int w, int h, int sizeFlags)
+{
+ _parent::DoSetSize(x, y, w, h, sizeFlags);
+ Refresh();
+}
+
void pxStaticText::SetPaddingDefaults()
{
m_paddingPix_horiz = 7;
@@ -55,6 +62,18 @@ void pxStaticText::SetPaddingDefaults()
m_paddingPct_vert = 0.0f;
}
+pxStaticText& pxStaticText::SetMinWidth( int width )
+{
+ SetMinSize( wxSize( width, GetMinHeight() ) );
+ return *this;
+}
+
+pxStaticText& pxStaticText::SetMinHeight( int height )
+{
+ SetMinSize( wxSize( GetMinWidth(), height) );
+ return *this;
+}
+
pxStaticText& pxStaticText::SetHeight( int lines )
{
if( !pxAssert(lines > 0) ) lines = 2;
@@ -165,8 +184,7 @@ wxSize pxStaticText::GetBestWrappedSize( const wxClientDC& dc ) const
idealWidth = (int)(wxGetDisplaySize().GetWidth() * 0.66) - (parentalAdjust*2);
}
- wxString label(GetLabel());
- return dc.GetMultiLineTextExtent(pxTextWrapper().Wrap( this, label, idealWidth - calcPaddingWidth(idealWidth) ).GetResult());
+ return dc.GetMultiLineTextExtent(pxTextWrapper().Wrap( this, m_label, idealWidth - calcPaddingWidth(idealWidth) ).GetResult());
}
pxStaticText& pxStaticText::WrapAt( int width )
@@ -179,10 +197,7 @@ pxStaticText& pxStaticText::WrapAt( int width )
m_wrappedWidth = width;
if( width > 1 )
- {
- wxString label( GetLabel() );
- wrappedLabel = pxTextWrapper().Wrap( this, label, width ).GetResult();
- }
+ wrappedLabel = pxTextWrapper().Wrap( this, m_label, width ).GetResult();
if(m_wrappedLabel != wrappedLabel )
{
@@ -218,10 +233,7 @@ bool pxStaticText::_updateWrapping( bool textChanged )
m_wrappedWidth = newWidth;
if( m_wrappedWidth > 1 )
- {
- wxString label( GetLabel() );
- wrappedLabel = pxTextWrapper().Wrap( this, label, m_wrappedWidth ).GetResult();
- }
+ wrappedLabel = pxTextWrapper().Wrap( this, m_label, m_wrappedWidth ).GetResult();
if( m_wrappedLabel == wrappedLabel ) return false;
m_wrappedLabel = wrappedLabel;
@@ -236,10 +248,10 @@ void pxStaticText::UpdateWrapping( bool textChanged )
void pxStaticText::SetLabel(const wxString& label)
{
- const bool labelChanged( label != GetLabel() );
+ const bool labelChanged( label != m_label );
if( labelChanged )
{
- _parent::SetLabel( label );
+ m_label = label;
Refresh();
}
@@ -280,17 +292,8 @@ void pxStaticText::paintEvent(wxPaintEvent& evt)
pxWindowTextWriter writer( dc );
writer.Align( m_align );
- wxString label;
-
- if( m_autowrap )
- {
- _updateWrapping( false );
- label = m_wrappedLabel;
- }
- else
- {
- label = GetLabel();
- }
+ const wxString& label( m_autowrap ? m_wrappedLabel : m_label );
+ if( m_autowrap ) _updateWrapping( false );
int tWidth, tHeight;
dc.GetMultiLineTextExtent( label, &tWidth, &tHeight );
diff --git a/common/src/Utilities/pxWindowTextWriter.cpp b/common/src/Utilities/pxWindowTextWriter.cpp
index 0416a1acd..2fe1b3916 100644
--- a/common/src/Utilities/pxWindowTextWriter.cpp
+++ b/common/src/Utilities/pxWindowTextWriter.cpp
@@ -87,8 +87,9 @@ pxWindowTextWriter& pxWindowTextWriter::MoveY( int ydelta )
void pxWindowTextWriter::_DoWriteLn( const wxChar* msg )
{
pxAssume( msg );
+
int tWidth, tHeight;
- m_dc.GetTextExtent( msg, &tWidth, &tHeight );
+ m_dc.GetMultiLineTextExtent( msg, &tWidth, &tHeight );
wxPoint dispos( m_curpos );
diff --git a/common/src/Utilities/wxHelpers.cpp b/common/src/Utilities/wxHelpers.cpp
index 0e2ff22cd..bb2a7f2d1 100644
--- a/common/src/Utilities/wxHelpers.cpp
+++ b/common/src/Utilities/wxHelpers.cpp
@@ -18,6 +18,7 @@
#include "wxGuiTools.h"
#include "pxStaticText.h"
#include "Threading.h"
+#include "IniInterface.h"
#include
#include
@@ -27,7 +28,7 @@ using namespace pxSizerFlags;
pxDialogCreationFlags pxDialogFlags()
{
- return pxDialogCreationFlags().CloseBox().SystemMenu().Caption().Vertical();
+ return pxDialogCreationFlags().CloseBox().Caption().Vertical();
}
@@ -116,7 +117,7 @@ wxDialogWithHelpers::wxDialogWithHelpers()
m_hasContextHelp = false;
m_extraButtonSizer = NULL;
- Init();
+ Init( pxDialogFlags() );
}
wxDialogWithHelpers::wxDialogWithHelpers( wxWindow* parent, const wxString& title, const pxDialogCreationFlags& cflags )
@@ -129,16 +130,21 @@ wxDialogWithHelpers::wxDialogWithHelpers( wxWindow* parent, const wxString& titl
*this += StdPadding;
}
- Init();
- SetMinWidth( cflags.MinimumWidth );
+ Init( cflags );
+ SetMinSize( cflags.MinimumSize );
}
wxDialogWithHelpers::~wxDialogWithHelpers() throw()
{
}
-void wxDialogWithHelpers::Init()
+void wxDialogWithHelpers::Init( const pxDialogCreationFlags& cflags )
{
+ // This fixes it so that the dialogs show up in the task bar in Vista:
+ // (otherwise they go stupid iconized mode if the user minimizes them)
+ if( cflags.hasMinimizeBox )
+ SetExtraStyle(GetExtraStyle() & ~wxTOPLEVEL_EX_DIALOG);
+
m_extraButtonSizer = NULL;
if( m_hasContextHelp )
@@ -172,10 +178,8 @@ wxString wxDialogWithHelpers::GetDialogName() const
return wxEmptyString;
}
-void wxDialogWithHelpers::SmartCenterFit()
+void wxDialogWithHelpers::DoAutoCenter()
{
- Fit();
-
// Smart positioning logic! If our parent window is larger than our window by some
// good amount, then we center on that. If not, center relative to the screen. This
// avoids the popup automatically eclipsing the parent window (which happens in PCSX2
@@ -196,12 +200,50 @@ void wxDialogWithHelpers::SmartCenterFit()
if( centerfail ) CenterOnScreen();
}
+void wxDialogWithHelpers::SmartCenterFit()
+{
+ Fit();
+
+ const wxString dlgName( GetDialogName() );
+ if( dlgName.IsEmpty() )
+ {
+ DoAutoCenter(); return;
+ }
+
+ if( wxConfigBase* cfg = wxConfigBase::Get( false ) )
+ {
+ wxRect screenRect( GetScreenRect() );
+
+ IniLoader loader( cfg );
+ IniScopedGroup group( loader, L"DialogPositions" );
+ cfg->SetRecordDefaults( false );
+
+ if( GetWindowStyle() & wxRESIZE_BORDER )
+ {
+ wxSize size;
+ loader.Entry( dlgName + L"_Size", size, screenRect.GetSize() );
+ SetSize( size );
+ }
+
+ if( !cfg->Exists( dlgName + L"_Pos" ) )
+ DoAutoCenter();
+ else
+ {
+ wxPoint pos;
+ loader.Entry( dlgName + L"_Pos", pos, screenRect.GetPosition() );
+ SetPosition( pos );
+ }
+ cfg->SetRecordDefaults( true );
+ }
+}
+
// Overrides wxDialog behavior to include automatic Fit() and CenterOnParent/Screen. The centering
// is based on a heuristic the centers against the parent window if the parent window is at least
// 75% larger than the fitted dialog.
int wxDialogWithHelpers::ShowModal()
{
SmartCenterFit();
+ m_CreatedRect = GetScreenRect();
return wxDialog::ShowModal();
}
@@ -210,7 +252,11 @@ int wxDialogWithHelpers::ShowModal()
// 75% larger than the fitted dialog.
bool wxDialogWithHelpers::Show( bool show )
{
- if( show ) SmartCenterFit();
+ if( show )
+ {
+ SmartCenterFit();
+ m_CreatedRect = GetScreenRect();
+ }
return wxDialog::Show( show );
}
@@ -231,6 +277,30 @@ pxStaticText& wxDialogWithHelpers::Heading( const wxString& label )
void wxDialogWithHelpers::OnCloseWindow( wxCloseEvent& evt )
{
+ // Save the dialog position if the dialog is named...
+ // FIXME : This doesn't get called if the app is exited by alt-f4'ing the main app window.
+ // ... not sure how to fix that yet. I could register a list of open windows into wxAppWithHelpers
+ // that systematically get closed. Seems like work, maybe later. --air
+
+ if( wxConfigBase* cfg = wxConfigBase::Get( false ) )
+ {
+ const wxString dlgName( GetDialogName() );
+ const wxRect screenRect( GetScreenRect() );
+ if( !dlgName.IsEmpty() && ( m_CreatedRect != screenRect) )
+ {
+ wxPoint pos( screenRect.GetPosition() );
+ IniSaver saver( cfg );
+ IniScopedGroup group( saver, L"DialogPositions" );
+
+ if( GetWindowStyle() & wxRESIZE_BORDER )
+ {
+ wxSize size( screenRect.GetSize() );
+ saver.Entry( dlgName + L"_Size", size, screenRect.GetSize() );
+ }
+ saver.Entry( dlgName + L"_Pos", pos, screenRect.GetPosition() );
+ }
+ }
+
if( !IsModal() ) Destroy();
evt.Skip();
}
@@ -292,6 +362,14 @@ wxDialogWithHelpers& wxDialogWithHelpers::SetMinWidth( int newWidth )
return *this;
}
+wxDialogWithHelpers& wxDialogWithHelpers::SetMinHeight( int newHeight )
+{
+ SetMinSize( wxSize( GetMinWidth(), newHeight ) );
+ if( wxSizer* sizer = GetSizer() )
+ sizer->SetMinSize( wxSize( sizer->GetMinSize().GetWidth(), newHeight ) );
+ return *this;
+}
+
// --------------------------------------------------------------------------------------
// wxPanelWithHelpers Implementations
// --------------------------------------------------------------------------------------
diff --git a/pcsx2/Pcsx2Config.cpp b/pcsx2/Pcsx2Config.cpp
index 79ce512e5..1b992e232 100644
--- a/pcsx2/Pcsx2Config.cpp
+++ b/pcsx2/Pcsx2Config.cpp
@@ -17,7 +17,7 @@
#include
-#include "IniInterface.h"
+#include "Utilities/IniInterface.h"
#include "Config.h"
#include "GS.h"
diff --git a/pcsx2/gui/AppConfig.cpp b/pcsx2/gui/AppConfig.cpp
index 6cbdaa564..9bc375f4e 100644
--- a/pcsx2/gui/AppConfig.cpp
+++ b/pcsx2/gui/AppConfig.cpp
@@ -16,11 +16,12 @@
#include "PrecompiledHeader.h"
#include "App.h"
#include "MainFrame.h"
-#include "IniInterface.h"
#include "Plugins.h"
#include "MemoryCardFile.h"
+#include "Utilities/IniInterface.h"
+
#include
#include "DebugTools/Debug.h"
@@ -317,13 +318,10 @@ wxString AppConfig::FullpathTo( PluginsEnum_t pluginidx ) const
// rather than any other type of more direct string comparison!
bool AppConfig::FullpathMatchTest( PluginsEnum_t pluginId, const wxString& cmpto ) const
{
- wxFileName right( cmpto );
- wxFileName left( FullpathTo(pluginId) );
+ // Implementation note: wxFileName automatically normalizes things as needed in it's
+ // equality comparison implementations, so we can do a simple comparison as follows:
- left.MakeAbsolute();
- right.MakeAbsolute();
-
- return left == right;
+ return wxFileName(cmpto).SameAs( FullpathTo(pluginId) );
}
wxDirName GetLogFolder()
@@ -352,7 +350,7 @@ AppConfig::AppConfig()
: MainGuiPosition( wxDefaultPosition )
, SysSettingsTabName( L"Cpu" )
, McdSettingsTabName( L"Standard" )
- , AppSettingsTabName( L"GS Window" )
+ , AppSettingsTabName( L"Plugins" )
, DeskTheme( L"default" )
{
LanguageId = wxLANGUAGE_DEFAULT;
diff --git a/pcsx2/gui/AppEventSources.cpp b/pcsx2/gui/AppEventSources.cpp
index f9c752798..62539020f 100644
--- a/pcsx2/gui/AppEventSources.cpp
+++ b/pcsx2/gui/AppEventSources.cpp
@@ -15,7 +15,7 @@
#include "PrecompiledHeader.h"
#include "App.h"
-#include "IniInterface.h"
+#include "Utilities/IniInterface.h"
#include "Utilities/EventSource.inl"
template class EventSource< IEventListener_CoreThread >;
diff --git a/pcsx2/gui/AppInit.cpp b/pcsx2/gui/AppInit.cpp
index 84b2977b1..67ae7c006 100644
--- a/pcsx2/gui/AppInit.cpp
+++ b/pcsx2/gui/AppInit.cpp
@@ -14,11 +14,11 @@
*/
#include "PrecompiledHeader.h"
-#include "IniInterface.h"
#include "MainFrame.h"
#include "ConsoleLogger.h"
#include "MSWstuff.h"
+#include "Utilities/IniInterface.h"
#include "DebugTools/Debug.h"
#include "Dialogs/ModalPopups.h"
@@ -61,6 +61,9 @@ void Pcsx2App::WipeUserModeSettings()
if( !usrlocaldir.Exists() ) return;
wxString cwd( Path::Normalize( wxGetCwd() ) );
+#ifdef __WXMSW__
+ cwd.MakeLower();
+#endif
u32 hashres = HashTools::Hash( (char*)cwd.c_str(), cwd.Length()*sizeof(wxChar) );
wxFileName usermodefile( FilenameDefs::GetUsermodeConfig() );
@@ -91,6 +94,10 @@ void Pcsx2App::ReadUserModeSettings()
}
wxString cwd( Path::Normalize( wxGetCwd() ) );
+#ifdef __WXMSW__
+ cwd.MakeLower();
+#endif
+
u32 hashres = HashTools::Hash( (char*)cwd.c_str(), cwd.Length()*sizeof(wxChar) );
wxFileName usermodefile( FilenameDefs::GetUsermodeConfig() );
diff --git a/pcsx2/gui/AppMain.cpp b/pcsx2/gui/AppMain.cpp
index df2c04567..970014cfc 100644
--- a/pcsx2/gui/AppMain.cpp
+++ b/pcsx2/gui/AppMain.cpp
@@ -14,7 +14,6 @@
*/
#include "PrecompiledHeader.h"
-#include "IniInterface.h"
#include "MainFrame.h"
#include "GSFrame.h"
@@ -26,6 +25,7 @@
#include "Dialogs/ConfigurationDialog.h"
#include "Dialogs/LogOptionsDialog.h"
+#include "Utilities/IniInterface.h"
#include "Utilities/HashMap.h"
#ifdef __WXMSW__
diff --git a/pcsx2/gui/Dialogs/AboutBoxDialog.cpp b/pcsx2/gui/Dialogs/AboutBoxDialog.cpp
index 3272a20a9..93e85ae54 100644
--- a/pcsx2/gui/Dialogs/AboutBoxDialog.cpp
+++ b/pcsx2/gui/Dialogs/AboutBoxDialog.cpp
@@ -32,16 +32,13 @@ using namespace pxSizerFlags;
// --------------------------------------------------------------------------------------
Dialogs::AboutBoxDialog::AboutBoxDialog( wxWindow* parent )
- : wxDialogWithHelpers( parent, _("About PCSX2") )
+ : wxDialogWithHelpers( parent, _("About PCSX2"), pxDialogFlags().Resize().MinWidth( 460 ) )
, m_bitmap_dualshock( this, wxID_ANY, wxBitmap( EmbeddedImage().Get() ),
wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN
)
{
static const wxString LabelAuthors = fromUTF8(
- "Developers"
- "\n\n"
- "v0.9.6+: Arcum42, Refraction, "
- "drk||raziel, cottonvibes, gigaherz, "
+ "Arcum42, Refraction, drk||raziel, cottonvibes, gigaherz, "
"rama, Jake.Stine, saqib, Tmkk, pseudonym"
"\n\n"
"Previous versions: Alexey silinov, Aumatt, "
@@ -56,38 +53,36 @@ Dialogs::AboutBoxDialog::AboutBoxDialog( wxWindow* parent )
);
static const wxString LabelGreets = fromUTF8(
- "Contributors"
- "\n\n"
- "Hiryu and Sjeep (libcdvd / iso filesystem), nneeve (fpu and vu)"
+ "Hiryu and Sjeep (libcdvd / iso filesystem), nneeve (fpu and vu), gregory (linux distros)"
"\n\n"
"Plugin Specialists: ChickenLiver (Lilypad), Efp (efp), "
"Gabest (Gsdx, Cdvdolio, Xpad), Zeydlitz (ZZogl)"
"\n\n"
"Special thanks to: black_wd, Belmont, BGome, _Demo_, Dreamtime, "
- "F|RES, MrBrown, razorblade, Seta-san, Skarmeth, feal87, Athos, gregory"
+ "F|RES, MrBrown, razorblade, Seta-san, Skarmeth, feal87, Athos"
);
// This sizer holds text of the authors and a logo!
- wxBoxSizer& AuthLogoSizer = *new wxBoxSizer( wxHORIZONTAL );
+ wxFlexGridSizer& AuthLogoSizer = *new wxFlexGridSizer( 2, 0, StdPadding );
+ AuthLogoSizer.AddGrowableCol(0, 4);
+ AuthLogoSizer.AddGrowableCol(1, 3);
// this sizer holds text of the contributors/testers, and a ps2 image!
wxBoxSizer& ContribSizer = *new wxBoxSizer( wxHORIZONTAL );
- wxStaticBoxSizer& aboutUs = *new wxStaticBoxSizer( wxVERTICAL, this );
- wxStaticBoxSizer& contribs = *new wxStaticBoxSizer( wxVERTICAL, this );
+ wxStaticBoxSizer& aboutUs = *new wxStaticBoxSizer( wxVERTICAL, this );
+ wxStaticBoxSizer& contribs = *new wxStaticBoxSizer( wxVERTICAL, this );
- pxStaticText& label_auth = Text( LabelAuthors );
- pxStaticText& label_greets = Text( LabelGreets );
+ pxStaticText& label_auth = Text( LabelAuthors ).SetMinWidth(240);
+ pxStaticText& label_greets = Text( LabelGreets ).SetMinWidth(200);
- //label_auth->Wrap( 340 );
- //label_greets->Wrap( 200 );
+ aboutUs += Heading(L"Developers").Bold() | StdExpand();
+ aboutUs += label_auth | StdExpand();
+ contribs += Heading(L"Contributors").Bold() | StdExpand();
+ contribs += label_greets | StdExpand();
- aboutUs += label_auth | StdExpand();
- contribs += label_greets | StdExpand();
-
- AuthLogoSizer += aboutUs;
- AuthLogoSizer += 7;
- AuthLogoSizer += contribs;
+ AuthLogoSizer += aboutUs | StdExpand();
+ AuthLogoSizer += contribs | StdExpand();
ContribSizer += pxStretchSpacer( 1 );
ContribSizer += m_bitmap_dualshock | StdSpace();
@@ -95,17 +90,23 @@ Dialogs::AboutBoxDialog::AboutBoxDialog( wxWindow* parent )
// Main (top-level) layout
- *this += Text(_("PCSX2 - Playstation 2 Emulator")) | StdCenter();
- *this += AuthLogoSizer | StdSpace();
+ *this += StdPadding;
+ *this += Text(_("PCSX2")).Bold() | pxExpand;
+ *this += Text(_("A Playstation 2 Emulator")) | pxExpand;
+ *this += AuthLogoSizer | StdExpand();
*this += new wxHyperlinkCtrl( this, wxID_ANY,
- _("Pcsx2 Official Website and Forums"), L"http://www.pcsx2.net"
- ) | wxSizerFlags(1).Center().Border( wxALL, 3 );
+ _("PCSX2 Official Website and Forums"), L"http://www.pcsx2.net"
+ ) | pxProportion(1).Center().Border( wxALL, 3 );
*this += new wxHyperlinkCtrl( this, wxID_ANY,
- _("Pcsx2 Official Svn Repository at Googlecode"), L"http://code.google.com/p/pcsx2"
- ) | wxSizerFlags(1).Center().Border( wxALL, 3 );
+ _("PCSX2 Official Svn Repository at Googlecode"), L"http://code.google.com/p/pcsx2"
+ ) | pxProportion(1).Center().Border( wxALL, 3 );
*this += ContribSizer | StdExpand();
*this += new wxButton( this, wxID_OK, L"I've seen enough") | StdCenter();
+
+ int bestHeight = GetBestSize().GetHeight();
+ if( bestHeight < 400 ) bestHeight = 400;
+ SetMinHeight( bestHeight );
}
diff --git a/pcsx2/gui/Dialogs/BaseConfigurationDialog.cpp b/pcsx2/gui/Dialogs/BaseConfigurationDialog.cpp
index 87a94c1b7..15d8f00ca 100644
--- a/pcsx2/gui/Dialogs/BaseConfigurationDialog.cpp
+++ b/pcsx2/gui/Dialogs/BaseConfigurationDialog.cpp
@@ -64,10 +64,6 @@ wxString BaseApplicableDialog::GetDialogName() const
void BaseApplicableDialog::Init()
{
- // This fixes it so that the dialogs show up in the task bar in Vista:
- // (otherwise they go stupid iconized mode if the user minimizes them)
- SetExtraStyle(GetExtraStyle() & ~wxTOPLEVEL_EX_DIALOG);
-
Connect( pxEvt_ApplySettings, wxCommandEventHandler (BaseApplicableDialog::OnSettingsApplied) );
wxCommandEvent applyEvent( pxEvt_ApplySettings );
diff --git a/pcsx2/gui/MainFrame.cpp b/pcsx2/gui/MainFrame.cpp
index fa3330b21..a54cf1552 100644
--- a/pcsx2/gui/MainFrame.cpp
+++ b/pcsx2/gui/MainFrame.cpp
@@ -132,7 +132,7 @@ void MainEmuFrame::OnMoveAround( wxMoveEvent& evt )
proglog->SetPosition( g_Conf->ProgLogBox.DisplayPosition );
}
- //evt.Skip();
+ evt.Skip();
}
void MainEmuFrame::OnLogBoxHidden()
diff --git a/pcsx2/gui/MainMenuClicks.cpp b/pcsx2/gui/MainMenuClicks.cpp
index 12245ab27..194a27e67 100644
--- a/pcsx2/gui/MainMenuClicks.cpp
+++ b/pcsx2/gui/MainMenuClicks.cpp
@@ -20,12 +20,13 @@
#include "GS.h"
#include "MainFrame.h"
+#include "IsoDropTarget.h"
+
#include "Dialogs/ModalPopups.h"
#include "Dialogs/ConfigurationDialog.h"
#include "Dialogs/LogOptionsDialog.h"
-#include "IniInterface.h"
-#include "IsoDropTarget.h"
+#include "Utilities/IniInterface.h"
using namespace Dialogs;
@@ -51,7 +52,7 @@ void MainEmuFrame::Menu_McdSettings_Click(wxCommandEvent &event)
void MainEmuFrame::Menu_WindowSettings_Click(wxCommandEvent &event)
{
wxCommandEvent evt( pxEvt_SetSettingsPage );
- evt.SetString( L"Window" );
+ evt.SetString( L"GS Window" );
AppOpenDialog( this )->GetEventHandler()->ProcessEvent( evt );
}
@@ -64,7 +65,6 @@ void MainEmuFrame::Menu_GSSettings_Click(wxCommandEvent &event)
void MainEmuFrame::Menu_SelectPluginsBios_Click(wxCommandEvent &event)
{
- //AppOpenDialog( this );
AppOpenDialog( this );
}
diff --git a/pcsx2/gui/Panels/BiosSelectorPanel.cpp b/pcsx2/gui/Panels/BiosSelectorPanel.cpp
index ab1ff50be..4b87163f4 100644
--- a/pcsx2/gui/Panels/BiosSelectorPanel.cpp
+++ b/pcsx2/gui/Panels/BiosSelectorPanel.cpp
@@ -165,8 +165,7 @@ void Panels::BiosSelectorPanel::DoRefresh()
m_ComboBox->Clear();
- wxFileName right( g_Conf->FullpathToBios() );
- right.MakeAbsolute();
+ const wxFileName right( g_Conf->FullpathToBios() );
for( size_t i=0; iGetCount(); ++i )
{
@@ -174,10 +173,7 @@ void Panels::BiosSelectorPanel::DoRefresh()
if( !IsBIOS((*m_BiosList)[i], description) ) continue;
int sel = m_ComboBox->Append( description, (void*)i );
- wxFileName left( (*m_BiosList)[i] );
- left.MakeAbsolute();
-
- if( left == right )
+ if( wxFileName((*m_BiosList)[i] ) == right )
m_ComboBox->SetSelection( sel );
}
}
diff --git a/pcsx2/gui/RecentIsoList.cpp b/pcsx2/gui/RecentIsoList.cpp
index 64ddf54fd..8fcfcd210 100644
--- a/pcsx2/gui/RecentIsoList.cpp
+++ b/pcsx2/gui/RecentIsoList.cpp
@@ -16,7 +16,7 @@
#include "PrecompiledHeader.h"
#include "MainFrame.h"
#include "IsoDropTarget.h"
-#include "IniInterface.h"
+#include "Utilities/IniInterface.h"
extern wxString GetMsg_IsoImageChanged();
diff --git a/pcsx2/windows/VCprojects/pcsx2_2008.vcproj b/pcsx2/windows/VCprojects/pcsx2_2008.vcproj
index fbe579356..e775aa4d9 100644
--- a/pcsx2/windows/VCprojects/pcsx2_2008.vcproj
+++ b/pcsx2/windows/VCprojects/pcsx2_2008.vcproj
@@ -1964,10 +1964,6 @@
RelativePath="..\..\gui\i18n.cpp"
>
-
-
@@ -2689,10 +2685,6 @@
RelativePath="..\..\HostGui.h"
>
-
-