mirror of https://github.com/PCSX2/pcsx2.git
Working on a new replacement for pxStaticText, which should hopefully have more reliable centering and wrapping behavior. Will finish it up later.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3143 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
2f69597052
commit
dd021b1ea1
|
@ -291,122 +291,6 @@
|
||||||
RelativePath="..\..\src\Utilities\wxHelpers.cpp"
|
RelativePath="..\..\src\Utilities\wxHelpers.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<Filter
|
|
||||||
Name="Linux"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\Utilities\Linux\LnxHostSys.cpp"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Devel|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\Utilities\Linux\LnxMisc.cpp"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Devel|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\Utilities\Linux\LnxThreads.cpp"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Devel|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\Utilities\x86\MemcpyFast.S"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Devel|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
<Filter
|
||||||
Name="Windows"
|
Name="Windows"
|
||||||
>
|
>
|
||||||
|
|
|
@ -273,38 +273,6 @@
|
||||||
RelativePath="..\..\src\x86emitter\x86emitter.cpp"
|
RelativePath="..\..\src\x86emitter\x86emitter.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<Filter
|
|
||||||
Name="Linux"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\x86emitter\LnxCpuDetect.cpp"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Devel|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
<Filter
|
||||||
Name="Windows"
|
Name="Windows"
|
||||||
>
|
>
|
||||||
|
|
|
@ -456,6 +456,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
pxTextWrapper& Wrap( const wxWindow& win, const wxString& text, int widthMax );
|
pxTextWrapper& Wrap( const wxWindow& win, const wxString& text, int widthMax );
|
||||||
|
pxTextWrapper& Wrap( const wxWindow* win, const wxString& text, int widthMax );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void OnOutputLine(const wxString& line);
|
virtual void OnOutputLine(const wxString& line);
|
||||||
|
@ -484,8 +485,8 @@ public:
|
||||||
m_curpos = wxPoint();
|
m_curpos = wxPoint();
|
||||||
m_align = wxALIGN_CENTER;
|
m_align = wxALIGN_CENTER;
|
||||||
m_leading = 2;
|
m_leading = 2;
|
||||||
|
|
||||||
OnFontChanged();
|
OnFontChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~pxWindowTextWriter() throw()
|
virtual ~pxWindowTextWriter() throw()
|
||||||
|
@ -537,6 +538,35 @@ public:
|
||||||
pxWindowTextWriter& MoveY( int ydelta );
|
pxWindowTextWriter& MoveY( int ydelta );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------
|
||||||
|
// pxStaticTextImproved
|
||||||
|
// --------------------------------------------------------------------------------------
|
||||||
|
class pxStaticTextImproved : public wxPanelWithHelpers
|
||||||
|
{
|
||||||
|
typedef wxPanelWithHelpers _parent;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxAlignment m_align;
|
||||||
|
wxString m_wrappedLabel;
|
||||||
|
bool m_autowrap;
|
||||||
|
int m_wrappedWidth;
|
||||||
|
int m_padding_horiz;
|
||||||
|
|
||||||
|
public:
|
||||||
|
pxStaticTextImproved( wxWindow* parent=NULL, const wxString& label=wxEmptyString, wxAlignment align=wxALIGN_CENTER );
|
||||||
|
pxStaticTextImproved( wxWindow* parent, int heightInLines, const wxString& label=wxEmptyString, wxAlignment align=wxALIGN_CENTER );
|
||||||
|
virtual ~pxStaticTextImproved() throw() {}
|
||||||
|
|
||||||
|
virtual void SetLabel(const wxString& label);
|
||||||
|
pxStaticTextImproved& Unwrapped();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void Init();
|
||||||
|
void paintEvent(wxPaintEvent& evt);
|
||||||
|
void UpdateWrapping( bool textChanged );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
// MoreStockCursors
|
// MoreStockCursors
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -134,3 +134,120 @@ pxWindowTextWriter& pxWindowTextWriter::WriteLn( const wxChar* fmt, ... )
|
||||||
va_end(args);
|
va_end(args);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------
|
||||||
|
// pxStaticTextImproved (implementations)
|
||||||
|
// --------------------------------------------------------------------------------------
|
||||||
|
pxStaticTextImproved::pxStaticTextImproved( wxWindow* parent, const wxString& label, wxAlignment align )
|
||||||
|
: wxPanelWithHelpers( parent )
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
|
||||||
|
m_align = align;
|
||||||
|
SetLabel( label );
|
||||||
|
}
|
||||||
|
|
||||||
|
pxStaticTextImproved::pxStaticTextImproved( wxWindow* parent, int heightInLines, const wxString& label, wxAlignment align )
|
||||||
|
: wxPanelWithHelpers( parent )
|
||||||
|
{
|
||||||
|
SetMinSize( wxSize( wxDefaultCoord, heightInLines*16 ) );
|
||||||
|
Init();
|
||||||
|
|
||||||
|
m_align = align;
|
||||||
|
SetLabel( label );
|
||||||
|
}
|
||||||
|
|
||||||
|
void pxStaticTextImproved::Init()
|
||||||
|
{
|
||||||
|
m_autowrap = true;
|
||||||
|
m_wrappedWidth = -1;
|
||||||
|
m_padding_horiz = 8;
|
||||||
|
|
||||||
|
Connect( wxEVT_PAINT, wxPaintEventHandler(pxStaticTextImproved::paintEvent) );
|
||||||
|
}
|
||||||
|
|
||||||
|
pxStaticTextImproved& pxStaticTextImproved::Unwrapped()
|
||||||
|
{
|
||||||
|
m_autowrap = false;
|
||||||
|
UpdateWrapping( false );
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
void pxStaticTextImproved::UpdateWrapping( bool textChanged )
|
||||||
|
{
|
||||||
|
if( !m_autowrap )
|
||||||
|
{
|
||||||
|
m_wrappedLabel = wxEmptyString;
|
||||||
|
m_wrappedWidth = -1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxString wrappedLabel;
|
||||||
|
const int newWidth( GetSize().GetWidth() );
|
||||||
|
|
||||||
|
if( !textChanged && (newWidth == m_wrappedWidth) ) return;
|
||||||
|
|
||||||
|
// Note: during various stages of sizer-calc, width can be 1, 0, or -1.
|
||||||
|
// We ignore wrapping in these cases. (the PaintEvent also checks the wrapping
|
||||||
|
// and updates it if needed, in case the control's size isn't figured out prior
|
||||||
|
// to being painted).
|
||||||
|
|
||||||
|
m_wrappedWidth = newWidth;
|
||||||
|
if( m_wrappedWidth > 1 )
|
||||||
|
{
|
||||||
|
wxString label( GetLabel() );
|
||||||
|
wrappedLabel = pxTextWrapper().Wrap( this, label, m_wrappedWidth-(m_padding_horiz*2) ).GetResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( m_wrappedLabel == wrappedLabel ) return;
|
||||||
|
m_wrappedLabel = wrappedLabel;
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
void pxStaticTextImproved::SetLabel(const wxString& label)
|
||||||
|
{
|
||||||
|
const bool labelChanged( label != GetLabel() );
|
||||||
|
if( labelChanged )
|
||||||
|
{
|
||||||
|
_parent::SetLabel( label );
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Always update wrapping, in case window width or something else also changed.
|
||||||
|
UpdateWrapping( labelChanged );
|
||||||
|
}
|
||||||
|
|
||||||
|
void pxStaticTextImproved::paintEvent(wxPaintEvent& evt)
|
||||||
|
{
|
||||||
|
wxPaintDC dc( this );
|
||||||
|
const int dcWidth( dc.GetSize().GetWidth() );
|
||||||
|
if( dcWidth < 1 ) return;
|
||||||
|
|
||||||
|
dc.SetFont( GetFont() );
|
||||||
|
pxWindowTextWriter writer( dc );
|
||||||
|
wxString label;
|
||||||
|
|
||||||
|
if( m_autowrap )
|
||||||
|
{
|
||||||
|
if( m_wrappedLabel.IsEmpty() || m_wrappedWidth != dcWidth )
|
||||||
|
{
|
||||||
|
const wxString original( GetLabel() );
|
||||||
|
if( original.IsEmpty() ) return;
|
||||||
|
m_wrappedLabel = pxTextWrapper().Wrap( this, original, dcWidth-(m_padding_horiz*2) ).GetResult();
|
||||||
|
}
|
||||||
|
label = m_wrappedLabel;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
label = GetLabel();
|
||||||
|
}
|
||||||
|
|
||||||
|
int tWidth, tHeight;
|
||||||
|
GetTextExtent( label, &tWidth, &tHeight );
|
||||||
|
|
||||||
|
writer.Align( m_align );
|
||||||
|
if( m_align & wxALIGN_CENTER_VERTICAL )
|
||||||
|
writer.SetY( (dc.GetSize().GetHeight() - tHeight) / 2 );
|
||||||
|
|
||||||
|
writer.WriteLn( label );
|
||||||
|
}
|
||||||
|
|
|
@ -349,6 +349,12 @@ pxTextWrapper& pxTextWrapper::Wrap( const wxWindow& win, const wxString& text, i
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pxTextWrapper& pxTextWrapper::Wrap( const wxWindow* win, const wxString& text, int widthMax )
|
||||||
|
{
|
||||||
|
if( win ) _parent::Wrap( *win, text, widthMax );
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
void pxTextWrapper::OnOutputLine(const wxString& line)
|
void pxTextWrapper::OnOutputLine(const wxString& line)
|
||||||
{
|
{
|
||||||
m_text += line;
|
m_text += line;
|
||||||
|
|
|
@ -74,7 +74,9 @@ FirstTimeWizard::UsermodePage::UsermodePage( wxWizard* parent ) :
|
||||||
m_panel_LangSel = new LanguageSelectionPanel( &panel );
|
m_panel_LangSel = new LanguageSelectionPanel( &panel );
|
||||||
m_panel_UserSel = new DocsFolderPickerPanel( &panel );
|
m_panel_UserSel = new DocsFolderPickerPanel( &panel );
|
||||||
|
|
||||||
panel += panel.Heading(_("PCSX2 is starting from a new or unknown folder and needs to be configured."));
|
panel += new pxStaticTextImproved( this,
|
||||||
|
_("PCSX2 is starting from a new or unknown folder and needs to be configured.")
|
||||||
|
) | pxExpand;
|
||||||
|
|
||||||
panel += m_panel_LangSel | StdCenter();
|
panel += m_panel_LangSel | StdCenter();
|
||||||
panel += m_panel_UserSel | pxExpand.Border( wxALL, 8 );
|
panel += m_panel_UserSel | pxExpand.Border( wxALL, 8 );
|
||||||
|
|
|
@ -25,17 +25,6 @@
|
||||||
|
|
||||||
using namespace pxSizerFlags;
|
using namespace pxSizerFlags;
|
||||||
|
|
||||||
namespace Panels
|
|
||||||
{
|
|
||||||
// Helper class since the 'AddPage' template system needs a single-parameter constructor.
|
|
||||||
class McdConfigPanel_Multitap2 : public McdConfigPanel_Multitap
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
McdConfigPanel_Multitap2( wxWindow* parent ) : McdConfigPanel_Multitap( parent, 1 ) {}
|
|
||||||
virtual ~McdConfigPanel_Multitap2() throw() { }
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
wxString GetMsg_McdNtfsCompress()
|
wxString GetMsg_McdNtfsCompress()
|
||||||
{
|
{
|
||||||
return pxE( ".Panel:Mcd:NtfsCompress",
|
return pxE( ".Panel:Mcd:NtfsCompress",
|
||||||
|
@ -109,55 +98,6 @@ void Panels::McdConfigPanel_Toggles::AppStatusEvent_OnSettingsApplied()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Panels::McdConfigPanel_Standard::McdConfigPanel_Standard(wxWindow *parent)
|
|
||||||
: _parent( parent )
|
|
||||||
{
|
|
||||||
m_panel_cardinfo[0] = new MemoryCardInfoPanel( this, 0 );
|
|
||||||
m_panel_cardinfo[1] = new MemoryCardInfoPanel( this, 1 );
|
|
||||||
|
|
||||||
for( uint port=0; port<2; ++port )
|
|
||||||
{
|
|
||||||
wxStaticBoxSizer& portSizer( *new wxStaticBoxSizer( wxVERTICAL, this, wxsFormat(_("Port %u"), port+1) ) );
|
|
||||||
portSizer += m_panel_cardinfo[port] | pxExpand;
|
|
||||||
|
|
||||||
*this += portSizer | StdExpand();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Panels::McdConfigPanel_Standard::Apply()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Panels::McdConfigPanel_Standard::AppStatusEvent_OnSettingsApplied()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Panels::McdConfigPanel_Multitap::McdConfigPanel_Multitap(wxWindow *parent, int port) : _parent( parent )
|
|
||||||
{
|
|
||||||
m_port = port;
|
|
||||||
|
|
||||||
m_check_Multitap = new pxCheckBox( this, wxsFormat(_("Enable Multitap on Port %u"), m_port+1) );
|
|
||||||
m_check_Multitap->SetFont( wxFont( m_check_Multitap->GetFont().GetPointSize()+1, wxFONTFAMILY_MODERN, wxNORMAL, wxNORMAL, false, L"Lucida Console" ) );
|
|
||||||
|
|
||||||
*this += m_check_Multitap;
|
|
||||||
|
|
||||||
Connect( m_check_Multitap->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(McdConfigPanel_Multitap::OnMultitapChecked));
|
|
||||||
}
|
|
||||||
|
|
||||||
void Panels::McdConfigPanel_Multitap::OnMultitapChecked( wxCommandEvent& evt )
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void Panels::McdConfigPanel_Multitap::Apply()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void Panels::McdConfigPanel_Multitap::AppStatusEvent_OnSettingsApplied()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
using namespace Panels;
|
using namespace Panels;
|
||||||
using namespace pxSizerFlags;
|
using namespace pxSizerFlags;
|
||||||
|
|
|
@ -411,8 +411,6 @@ namespace Panels
|
||||||
virtual bool ValidateEnumerationStatus();
|
virtual bool ValidateEnumerationStatus();
|
||||||
};
|
};
|
||||||
|
|
||||||
class MemoryCardInfoPanel;
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
// PluginSelectorPanel
|
// PluginSelectorPanel
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -243,31 +243,6 @@ namespace Panels
|
||||||
virtual bool ValidateEnumerationStatus();
|
virtual bool ValidateEnumerationStatus();
|
||||||
};
|
};
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------
|
|
||||||
// MemoryCardInfoPanel
|
|
||||||
// --------------------------------------------------------------------------------------
|
|
||||||
class MemoryCardInfoPanel : public BaseApplicableConfigPanel
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
//uint m_port;
|
|
||||||
uint m_slot;
|
|
||||||
|
|
||||||
wxString m_DisplayName;
|
|
||||||
wxString m_ErrorMessage;
|
|
||||||
ScopedPtr<McdListItem> m_cardInfo;
|
|
||||||
|
|
||||||
public:
|
|
||||||
virtual ~MemoryCardInfoPanel() throw() {}
|
|
||||||
MemoryCardInfoPanel( wxWindow* parent, uint slot );
|
|
||||||
void Apply();
|
|
||||||
void Eject();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void AppStatusEvent_OnSettingsApplied();
|
|
||||||
void paintEvent( wxPaintEvent& evt );
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
// McdConfigPanel_Toggles / McdConfigPanel_Standard / McdConfigPanel_Multitap
|
// McdConfigPanel_Toggles / McdConfigPanel_Standard / McdConfigPanel_Multitap
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
|
@ -293,40 +268,6 @@ namespace Panels
|
||||||
void OnMultitapClicked();
|
void OnMultitapClicked();
|
||||||
};
|
};
|
||||||
|
|
||||||
class McdConfigPanel_Standard : public BaseApplicableConfigPanel
|
|
||||||
{
|
|
||||||
typedef BaseApplicableConfigPanel _parent;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
MemoryCardInfoPanel* m_panel_cardinfo[2];
|
|
||||||
|
|
||||||
public:
|
|
||||||
McdConfigPanel_Standard( wxWindow* parent );
|
|
||||||
virtual ~McdConfigPanel_Standard() throw() { }
|
|
||||||
void Apply();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void AppStatusEvent_OnSettingsApplied();
|
|
||||||
};
|
|
||||||
|
|
||||||
class McdConfigPanel_Multitap : public BaseApplicableConfigPanel
|
|
||||||
{
|
|
||||||
typedef BaseApplicableConfigPanel _parent;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
int m_port;
|
|
||||||
pxCheckBox* m_check_Multitap;
|
|
||||||
|
|
||||||
public:
|
|
||||||
McdConfigPanel_Multitap( wxWindow* parent, int port=0 );
|
|
||||||
virtual ~McdConfigPanel_Multitap() throw() { }
|
|
||||||
void Apply();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void OnMultitapChecked( wxCommandEvent& evt );
|
|
||||||
void AppStatusEvent_OnSettingsApplied();
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern bool EnumerateMemoryCard( McdListItem& dest, const wxFileName& filename );
|
extern bool EnumerateMemoryCard( McdListItem& dest, const wxFileName& filename );
|
||||||
|
|
|
@ -1,165 +0,0 @@
|
||||||
/* PCSX2 - PS2 Emulator for PCs
|
|
||||||
* Copyright (C) 2002-2010 PCSX2 Dev Team
|
|
||||||
*
|
|
||||||
* PCSX2 is free software: you can redistribute it and/or modify it under the terms
|
|
||||||
* of the GNU Lesser General Public License as published by the Free Software Found-
|
|
||||||
* ation, either version 3 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* PCSX2 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 for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along with PCSX2.
|
|
||||||
* If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "PrecompiledHeader.h"
|
|
||||||
#include "ConfigurationPanels.h"
|
|
||||||
#include "MemoryCardPanels.h"
|
|
||||||
|
|
||||||
#include "Dialogs/ConfigurationDialog.h"
|
|
||||||
|
|
||||||
#include <wx/filepicker.h>
|
|
||||||
#include <wx/ffile.h>
|
|
||||||
#include <wx/dir.h>
|
|
||||||
|
|
||||||
using namespace pxSizerFlags;
|
|
||||||
using namespace Panels;
|
|
||||||
|
|
||||||
|
|
||||||
// =====================================================================================================
|
|
||||||
// MemoryCardInfoPanel (implementations)
|
|
||||||
// =====================================================================================================
|
|
||||||
MemoryCardInfoPanel::MemoryCardInfoPanel( wxWindow* parent, uint slot )
|
|
||||||
: BaseApplicableConfigPanel( parent, wxVERTICAL ) //, wxEmptyString )
|
|
||||||
{
|
|
||||||
m_slot = slot;
|
|
||||||
|
|
||||||
SetMinSize( wxSize(128, 48) );
|
|
||||||
|
|
||||||
Connect( wxEVT_PAINT, wxPaintEventHandler(MemoryCardInfoPanel::paintEvent) );
|
|
||||||
|
|
||||||
// [TODO] Add Unmount button.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void MemoryCardInfoPanel::paintEvent(wxPaintEvent & evt)
|
|
||||||
{
|
|
||||||
wxPaintDC dc( this );
|
|
||||||
pxWindowTextWriter writer( dc );
|
|
||||||
|
|
||||||
writer.Bold();
|
|
||||||
|
|
||||||
// Create DC and plot some text (and images!)
|
|
||||||
writer.WriteLn( m_DisplayName );
|
|
||||||
|
|
||||||
//dc.DrawCircle( dc.GetSize().GetWidth()/2, 24, dc.GetSize().GetWidth()/4 );
|
|
||||||
|
|
||||||
if( !m_ErrorMessage.IsEmpty() )
|
|
||||||
{
|
|
||||||
writer.WriteLn();
|
|
||||||
writer.WriteLn( m_ErrorMessage );
|
|
||||||
}
|
|
||||||
else if( m_cardInfo )
|
|
||||||
{
|
|
||||||
writer.Normal();
|
|
||||||
|
|
||||||
writer.WriteLn( wxsFormat( L"%d MB (%s)",
|
|
||||||
m_cardInfo->SizeInMB,
|
|
||||||
m_cardInfo->IsFormatted ? _("Formatted") : _("Unformatted") )
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MemoryCardInfoPanel::Eject()
|
|
||||||
{
|
|
||||||
m_cardInfo = NULL;
|
|
||||||
Refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MemoryCardInfoPanel::Apply()
|
|
||||||
{
|
|
||||||
if( m_cardInfo && m_cardInfo->Filename.GetFullName().IsEmpty() ) m_cardInfo = NULL;
|
|
||||||
|
|
||||||
if( m_cardInfo )
|
|
||||||
{
|
|
||||||
wxFileName absfile( Path::Combine( g_Conf->Folders.MemoryCards, m_cardInfo->Filename ) );
|
|
||||||
|
|
||||||
// The following checks should be theoretically unreachable, unless the user's
|
|
||||||
// filesystem is changed form under our nose. A little validation goes a
|
|
||||||
// long way. :p
|
|
||||||
|
|
||||||
if( absfile.IsDir() )
|
|
||||||
{
|
|
||||||
Eject();
|
|
||||||
throw Exception::CannotApplySettings( this,
|
|
||||||
// Diagnostic
|
|
||||||
wxsFormat( L"Memory card in slot %u conflicts with an existing directory.", m_slot ),
|
|
||||||
// Translated
|
|
||||||
wxsFormat(
|
|
||||||
_("Cannot use or create the memory card in slot %u: the filename conflicts with an existing directory."),
|
|
||||||
m_slot
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !absfile.FileExists() )
|
|
||||||
{
|
|
||||||
Eject();
|
|
||||||
throw Exception::CannotApplySettings( this,
|
|
||||||
// Diagnostic
|
|
||||||
wxsFormat( L"Memory card in slot %u is no longer valid.", m_slot ),
|
|
||||||
// Translated
|
|
||||||
wxsFormat(
|
|
||||||
_("The configured memory card in slot %u no longer exists. Please create a new memory card, or leave the slot unmounted."),
|
|
||||||
m_slot
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_Conf->Mcd[m_slot].Filename = m_cardInfo->Filename;
|
|
||||||
g_Conf->Mcd[m_slot].Enabled = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Card is either disabled or in an error state.
|
|
||||||
|
|
||||||
g_Conf->Mcd[m_slot].Enabled = false;
|
|
||||||
g_Conf->Mcd[m_slot].Filename.Clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MemoryCardInfoPanel::AppStatusEvent_OnSettingsApplied()
|
|
||||||
{
|
|
||||||
m_cardInfo = NULL;
|
|
||||||
|
|
||||||
// Collect Info and Format Strings
|
|
||||||
|
|
||||||
wxString fname( g_Conf->Mcd[m_slot].Filename.GetFullPath() );
|
|
||||||
if( fname.IsEmpty() )
|
|
||||||
{
|
|
||||||
m_DisplayName = _("No Card (empty)");
|
|
||||||
m_cardInfo = NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wxFileName absfile( Path::Combine( g_Conf->Folders.MemoryCards, fname ) );
|
|
||||||
wxFileName relfile( fname );
|
|
||||||
|
|
||||||
if( !m_cardInfo )
|
|
||||||
{
|
|
||||||
m_cardInfo = new McdListItem();
|
|
||||||
if( !EnumerateMemoryCard( *m_cardInfo, absfile.GetFullPath() ) )
|
|
||||||
{
|
|
||||||
m_ErrorMessage = _("Read Error: Card is truncated or corrupted.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
absfile.Normalize();
|
|
||||||
relfile.Normalize();
|
|
||||||
|
|
||||||
m_DisplayName = ( absfile == relfile ) ? relfile.GetFullName() : relfile.GetFullPath();
|
|
||||||
}
|
|
||||||
|
|
||||||
Refresh();
|
|
||||||
}
|
|
|
@ -32,6 +32,8 @@ using namespace pxSizerFlags;
|
||||||
Panels::DocsFolderPickerPanel::DocsFolderPickerPanel( wxWindow* parent, bool isFirstTime )
|
Panels::DocsFolderPickerPanel::DocsFolderPickerPanel( wxWindow* parent, bool isFirstTime )
|
||||||
: BaseApplicableConfigPanel( parent, wxVERTICAL, _("Usermode Selection") )
|
: BaseApplicableConfigPanel( parent, wxVERTICAL, _("Usermode Selection") )
|
||||||
{
|
{
|
||||||
|
SetMinSize( wxSize( GetIdealWidth() - 16, wxDefaultCoord ) );
|
||||||
|
|
||||||
const wxString usermodeExplained( pxE( ".Panel:Usermode:Explained",
|
const wxString usermodeExplained( pxE( ".Panel:Usermode:Explained",
|
||||||
L"Please select your preferred default location for PCSX2 user-level documents below "
|
L"Please select your preferred default location for PCSX2 user-level documents below "
|
||||||
L"(includes memory cards, screenshots, settings, and savestates). "
|
L"(includes memory cards, screenshots, settings, and savestates). "
|
||||||
|
@ -64,7 +66,7 @@ Panels::DocsFolderPickerPanel::DocsFolderPickerPanel( wxWindow* parent, bool isF
|
||||||
|
|
||||||
m_dirpicker_custom = new DirPickerPanel( this, FolderId_Documents, _("Select a document root for PCSX2") );
|
m_dirpicker_custom = new DirPickerPanel( this, FolderId_Documents, _("Select a document root for PCSX2") );
|
||||||
|
|
||||||
*this += Text( isFirstTime ? usermodeExplained : usermodeWarning );
|
*this += new pxStaticTextImproved( this, 3, isFirstTime ? usermodeExplained : usermodeWarning ) | pxExpand;
|
||||||
*this += m_radio_UserMode | StdExpand();
|
*this += m_radio_UserMode | StdExpand();
|
||||||
*this += m_dirpicker_custom | pxExpand.Border( wxLEFT, StdPadding + m_radio_UserMode->GetIndentation() );
|
*this += m_dirpicker_custom | pxExpand.Border( wxLEFT, StdPadding + m_radio_UserMode->GetIndentation() );
|
||||||
*this += 4;
|
*this += 4;
|
||||||
|
|
|
@ -100,7 +100,8 @@ Panels::FramelimiterPanel::FramelimiterPanel( wxWindow* parent )
|
||||||
|
|
||||||
*this += 5;
|
*this += 5;
|
||||||
|
|
||||||
*this += Heading( pxE( ".Panel:Framelimiter:Heading",
|
//*this += Heading( pxE( ".Panel:Framelimiter:Heading",
|
||||||
|
*this += new pxStaticTextImproved( this, pxE( ".Panel:Framelimiter:Heading",
|
||||||
L"The internal framelimiter regulates the speed of the virtual machine. Adjustment values below are in "
|
L"The internal framelimiter regulates the speed of the virtual machine. Adjustment values below are in "
|
||||||
L"percentages of the default region-based framerate, which can also be configured below." )
|
L"percentages of the default region-based framerate, which can also be configured below." )
|
||||||
);
|
);
|
||||||
|
|
|
@ -492,54 +492,6 @@
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
|
||||||
Name="Linux"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\x86\aMicroVU.S"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\x86\ix86-32\aR5900-32.S"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\x86\aVif.S"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\x86\aVUzerorec.S"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\Linux\LnxHostSys.cpp"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Devel|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
<Filter
|
||||||
Name="Ps2"
|
Name="Ps2"
|
||||||
>
|
>
|
||||||
|
@ -2936,10 +2888,6 @@
|
||||||
RelativePath="..\..\gui\Panels\MemoryCardPanels.h"
|
RelativePath="..\..\gui\Panels\MemoryCardPanels.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\gui\Panels\MemoryCardsPanel.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
</Filter>
|
||||||
</Filter>
|
</Filter>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
|
Loading…
Reference in New Issue