implement images support for wxButton under XP and later
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61054 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -58,6 +58,14 @@ enum
|
||||
};
|
||||
|
||||
// radio boxes
|
||||
enum
|
||||
{
|
||||
ButtonImagePos_Left,
|
||||
ButtonImagePos_Right,
|
||||
ButtonImagePos_Top,
|
||||
ButtonImagePos_Bottom
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
ButtonHAlign_Left,
|
||||
@@ -124,6 +132,9 @@ protected:
|
||||
*m_chkUseHover,
|
||||
*m_chkUseDisabled;
|
||||
|
||||
// and an image position choice used if m_chkImage is on
|
||||
wxRadioBox *m_radioImagePos;
|
||||
|
||||
wxRadioBox *m_radioHAlign,
|
||||
*m_radioVAlign;
|
||||
|
||||
@@ -179,6 +190,7 @@ ButtonWidgetsPage::ButtonWidgetsPage(WidgetsBookCtrl *book,
|
||||
m_chkUseHover =
|
||||
m_chkUseDisabled = (wxCheckBox *)NULL;
|
||||
|
||||
m_radioImagePos =
|
||||
m_radioHAlign =
|
||||
m_radioVAlign = (wxRadioBox *)NULL;
|
||||
|
||||
@@ -202,21 +214,26 @@ void ButtonWidgetsPage::CreateContent()
|
||||
m_chkFit = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Fit exactly"));
|
||||
m_chkDefault = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Default"));
|
||||
|
||||
#ifndef __WXUNIVERSAL__
|
||||
// only wxUniv currently supports buttons with images
|
||||
m_chkImage->Disable();
|
||||
#endif // !wxUniv
|
||||
|
||||
sizerLeft->AddSpacer(5);
|
||||
|
||||
wxSizer *sizerUseLabels =
|
||||
new wxStaticBoxSizer(wxVERTICAL, this, _T("&Use the following labels?"));
|
||||
new wxStaticBoxSizer(wxVERTICAL, this, _T("&Use the following bitmaps?"));
|
||||
m_chkUseSelected = CreateCheckBoxAndAddToSizer(sizerUseLabels, _T("&Pushed"));
|
||||
m_chkUseFocused = CreateCheckBoxAndAddToSizer(sizerUseLabels, _T("&Focused"));
|
||||
m_chkUseHover = CreateCheckBoxAndAddToSizer(sizerUseLabels, _T("&Hover"));
|
||||
m_chkUseDisabled = CreateCheckBoxAndAddToSizer(sizerUseLabels, _T("&Disabled"));
|
||||
sizerLeft->Add(sizerUseLabels, wxSizerFlags().Expand().Border());
|
||||
|
||||
sizerLeft->AddSpacer(10);
|
||||
|
||||
static const wxString dirs[] =
|
||||
{
|
||||
"left", "right", "top", "bottom",
|
||||
};
|
||||
m_radioImagePos = new wxRadioBox(this, wxID_ANY, "Image &position",
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
WXSIZEOF(dirs), dirs);
|
||||
sizerLeft->Add(m_radioImagePos, 0, wxGROW | wxALL, 5);
|
||||
sizerLeft->AddSpacer(15);
|
||||
|
||||
// should be in sync with enums Button[HV]Align!
|
||||
@@ -293,6 +310,7 @@ void ButtonWidgetsPage::Reset()
|
||||
m_chkUseHover->SetValue(true);
|
||||
m_chkUseDisabled->SetValue(true);
|
||||
|
||||
m_radioImagePos->SetSelection(ButtonImagePos_Left);
|
||||
m_radioHAlign->SetSelection(ButtonHAlign_Centre);
|
||||
m_radioVAlign->SetSelection(ButtonVAlign_Centre);
|
||||
}
|
||||
@@ -385,12 +403,16 @@ void ButtonWidgetsPage::CreateButton()
|
||||
m_chkUseHover->Enable(isBitmapButton);
|
||||
m_chkUseDisabled->Enable(isBitmapButton);
|
||||
|
||||
#ifdef __WXUNIVERSAL__
|
||||
if ( m_chkImage->GetValue() )
|
||||
{
|
||||
m_button->SetImageLabel(wxArtProvider::GetIcon(wxART_INFORMATION));
|
||||
static const wxDirection positions[] =
|
||||
{
|
||||
wxLEFT, wxRIGHT, wxTOP, wxBOTTOM
|
||||
};
|
||||
|
||||
m_button->SetBitmap(wxArtProvider::GetIcon(wxART_INFORMATION),
|
||||
positions[m_radioImagePos->GetSelection()]);
|
||||
}
|
||||
#endif // wxUniv
|
||||
|
||||
if ( m_chkDefault->GetValue() )
|
||||
{
|
||||
|
Reference in New Issue
Block a user