diff --git a/samples/widgets/button.cpp b/samples/widgets/button.cpp index 98d9473a39..2fa95866a7 100644 --- a/samples/widgets/button.cpp +++ b/samples/widgets/button.cpp @@ -115,7 +115,7 @@ protected: void AddButtonToSizer(); // helper function: create a bitmap for wxBitmapButton - wxBitmap CreateBitmap(const wxString& label); + wxBitmap CreateBitmap(const wxString& label, const wxArtID& type); // the controls @@ -133,7 +133,8 @@ protected: *m_chkUseMarkup, #endif // wxUSE_MARKUP *m_chkDefault, - *m_chkUseBitmapClass; + *m_chkUseBitmapClass, + *m_chkDisable; // more checkboxes for wxBitmapButton only wxCheckBox *m_chkUsePressed, @@ -216,6 +217,7 @@ ButtonWidgetsPage::ButtonWidgetsPage(WidgetsBookCtrl *book, #endif // wxUSE_MARKUP m_chkDefault = m_chkUseBitmapClass = + m_chkDisable = m_chkUsePressed = m_chkUseFocused = m_chkUseCurrent = @@ -256,6 +258,8 @@ void ButtonWidgetsPage::CreateContent() "Use wxBitmapButton"); m_chkUseBitmapClass->SetValue(true); + m_chkDisable = CreateCheckBoxAndAddToSizer(sizerLeft, "Disable"); + sizerLeft->AddSpacer(5); wxSizer *sizerUseLabels = @@ -368,6 +372,7 @@ void ButtonWidgetsPage::Reset() m_chkUseMarkup->SetValue(false); #endif // wxUSE_MARKUP m_chkUseBitmapClass->SetValue(true); + m_chkDisable->SetValue(false); m_chkUsePressed->SetValue(true); m_chkUseFocused->SetValue(true); @@ -456,22 +461,22 @@ void ButtonWidgetsPage::CreateButton() if ( m_chkUseBitmapClass->GetValue() ) { bbtn = new wxBitmapButton(this, ButtonPage_Button, - CreateBitmap("normal"), + CreateBitmap("normal", wxART_INFORMATION), wxDefaultPosition, wxDefaultSize, flags); } else { bbtn = new wxButton(this, ButtonPage_Button); - bbtn->SetBitmapLabel(CreateBitmap("normal")); + bbtn->SetBitmapLabel(CreateBitmap("normal", wxART_INFORMATION)); } if ( m_chkUsePressed->GetValue() ) - bbtn->SetBitmapPressed(CreateBitmap("pushed")); + bbtn->SetBitmapPressed(CreateBitmap("pushed", wxART_HELP)); if ( m_chkUseFocused->GetValue() ) - bbtn->SetBitmapFocus(CreateBitmap("focused")); + bbtn->SetBitmapFocus(CreateBitmap("focused", wxART_ERROR)); if ( m_chkUseCurrent->GetValue() ) - bbtn->SetBitmapCurrent(CreateBitmap("hover")); + bbtn->SetBitmapCurrent(CreateBitmap("hover", wxART_WARNING)); if ( m_chkUseDisabled->GetValue() ) - bbtn->SetBitmapDisabled(CreateBitmap("disabled")); + bbtn->SetBitmapDisabled(CreateBitmap("disabled", wxART_MISSING_IMAGE)); m_button = bbtn; #if wxUSE_COMMANDLINKBUTTON m_cmdLnkButton = NULL; @@ -543,6 +548,8 @@ void ButtonWidgetsPage::CreateButton() if ( m_chkDefault->GetValue() ) m_button->SetDefault(); + m_button->Enable(!m_chkDisable->IsChecked()); + AddButtonToSizer(); m_sizerButton->Layout(); @@ -597,6 +604,9 @@ void ButtonWidgetsPage::OnButtonChangeLabel(wxCommandEvent& WXUNUSED(event)) m_button->SetLabel(labelText); } + if ( m_chkBitmapOnly->IsChecked() ) + CreateButton(); + m_sizerButton->Layout(); } @@ -618,17 +628,18 @@ void ButtonWidgetsPage::OnButton(wxCommandEvent& WXUNUSED(event)) // bitmap button stuff // ---------------------------------------------------------------------------- -wxBitmap ButtonWidgetsPage::CreateBitmap(const wxString& label) +wxBitmap ButtonWidgetsPage::CreateBitmap(const wxString& label, const wxArtID& type) { - wxBitmap bmp(180, 70); // shouldn't hardcode but it's simpler like this + wxBitmap bmp(FromDIP(wxSize(180, 70))); // shouldn't hardcode but it's simpler like this wxMemoryDC dc; dc.SelectObject(bmp); + dc.SetFont(GetFont()); dc.SetBackground(*wxCYAN_BRUSH); dc.Clear(); dc.SetTextForeground(*wxBLACK); dc.DrawLabel(wxStripMenuCodes(m_textLabel->GetValue()) + "\n" "(" + label + " state)", - wxArtProvider::GetBitmap(wxART_INFORMATION), + wxArtProvider::GetBitmap(type), wxRect(10, 10, bmp.GetWidth() - 20, bmp.GetHeight() - 20), wxALIGN_CENTRE); diff --git a/samples/widgets/toggle.cpp b/samples/widgets/toggle.cpp index d435642951..ecfeaeb0c9 100644 --- a/samples/widgets/toggle.cpp +++ b/samples/widgets/toggle.cpp @@ -108,8 +108,11 @@ protected: // (re)create the toggle void CreateToggle(); + // add m_button to m_sizerButton using current value of m_chkFit + void AddButtonToSizer(); + // helper function: create a bitmap for wxBitmapToggleButton - wxBitmap CreateBitmap(const wxString& label); + wxBitmap CreateBitmap(const wxString& label, const wxArtID& type); // the controls // ------------ @@ -122,7 +125,8 @@ protected: wxCheckBox *m_chkBitmapOnly, *m_chkTextAndBitmap, *m_chkFit, - *m_chkUseBitmapClass; + *m_chkUseBitmapClass, + *m_chkDisable; // more checkboxes for wxBitmapToggleButton only wxCheckBox *m_chkUsePressed, @@ -192,6 +196,7 @@ ToggleWidgetsPage::ToggleWidgetsPage(WidgetsBookCtrl *book, m_chkTextAndBitmap = m_chkFit = m_chkUseBitmapClass = + m_chkDisable = m_chkUsePressed = m_chkUseFocused = m_chkUseCurrent = @@ -231,6 +236,8 @@ void ToggleWidgetsPage::CreateContent() "Use wxBitmapToggleButton"); m_chkUseBitmapClass->SetValue(true); + m_chkDisable = CreateCheckBoxAndAddToSizer(sizerLeft, "Disable"); + sizerLeft->AddSpacer(5); wxSizer *sizerUseLabels = @@ -327,6 +334,7 @@ void ToggleWidgetsPage::Reset() m_chkUseMarkup->SetValue(false); #endif // wxUSE_MARKUP m_chkUseBitmapClass->SetValue(true); + m_chkDisable->SetValue(false); m_chkUsePressed->SetValue(true); m_chkUseFocused->SetValue(true); @@ -419,22 +427,22 @@ void ToggleWidgetsPage::CreateToggle() if ( m_chkUseBitmapClass->GetValue() ) { btgl = new wxBitmapToggleButton(this, TogglePage_Picker, - CreateBitmap("normal")); + CreateBitmap("normal", wxART_INFORMATION)); } else { btgl = new wxToggleButton(this, TogglePage_Picker, ""); - btgl->SetBitmapLabel(CreateBitmap("normal")); + btgl->SetBitmapLabel(CreateBitmap("normal", wxART_INFORMATION)); } #ifdef wxHAS_ANY_BUTTON if ( m_chkUsePressed->GetValue() ) - btgl->SetBitmapPressed(CreateBitmap("pushed")); + btgl->SetBitmapPressed(CreateBitmap("pushed", wxART_HELP)); if ( m_chkUseFocused->GetValue() ) - btgl->SetBitmapFocus(CreateBitmap("focused")); + btgl->SetBitmapFocus(CreateBitmap("focused", wxART_ERROR)); if ( m_chkUseCurrent->GetValue() ) - btgl->SetBitmapCurrent(CreateBitmap("hover")); + btgl->SetBitmapCurrent(CreateBitmap("hover", wxART_WARNING)); if ( m_chkUseDisabled->GetValue() ) - btgl->SetBitmapDisabled(CreateBitmap("disabled")); + btgl->SetBitmapDisabled(CreateBitmap("disabled", wxART_MISSING_IMAGE)); #endif // wxHAS_ANY_BUTTON m_toggle = btgl; } @@ -473,6 +481,7 @@ void ToggleWidgetsPage::CreateToggle() #endif // wxHAS_ANY_BUTTON m_chkUseBitmapClass->Enable(showsBitmap); + m_chkTextAndBitmap->Enable(!m_chkBitmapOnly->IsChecked()); m_chkUsePressed->Enable(showsBitmap); m_chkUseFocused->Enable(showsBitmap); @@ -480,12 +489,27 @@ void ToggleWidgetsPage::CreateToggle() m_chkUseDisabled->Enable(showsBitmap); #endif // wxHAS_BITMAPTOGGLEBUTTON - m_sizerToggle->Add(0, 0, 1, wxCENTRE); - m_sizerToggle->Add(m_toggle, 1, wxCENTRE); - m_sizerToggle->Add(0, 0, 1, wxCENTRE); + m_toggle->Enable(!m_chkDisable->IsChecked()); + + AddButtonToSizer(); + m_sizerToggle->Layout(); } +void ToggleWidgetsPage::AddButtonToSizer() +{ + if ( m_chkFit->GetValue() ) + { + m_sizerToggle->AddStretchSpacer(1); + m_sizerToggle->Add(m_toggle, wxSizerFlags(0).Centre().Border()); + m_sizerToggle->AddStretchSpacer(1); + } + else // take up the entire space + { + m_sizerToggle->Add(m_toggle, wxSizerFlags(1).Expand().Border()); + } +} + // ---------------------------------------------------------------------------- // event handlers // ---------------------------------------------------------------------------- @@ -512,6 +536,9 @@ void ToggleWidgetsPage::OnButtonChangeLabel(wxCommandEvent& WXUNUSED(event)) else #endif // wxUSE_MARKUP m_toggle->SetLabel(labelText); + + if ( m_chkBitmapOnly->IsChecked() ) + CreateToggle(); } #ifdef wxHAS_BITMAPTOGGLEBUTTON @@ -519,17 +546,18 @@ void ToggleWidgetsPage::OnButtonChangeLabel(wxCommandEvent& WXUNUSED(event)) // bitmap toggle button stuff // ---------------------------------------------------------------------------- -wxBitmap ToggleWidgetsPage::CreateBitmap(const wxString& label) +wxBitmap ToggleWidgetsPage::CreateBitmap(const wxString& label, const wxArtID& type) { - wxBitmap bmp(180, 70); // shouldn't hardcode but it's simpler like this + wxBitmap bmp(FromDIP(wxSize(180, 70))); // shouldn't hardcode but it's simpler like this wxMemoryDC dc; dc.SelectObject(bmp); + dc.SetFont(GetFont()); dc.SetBackground(*wxCYAN_BRUSH); dc.Clear(); dc.SetTextForeground(*wxBLACK); dc.DrawLabel(wxStripMenuCodes(m_textLabel->GetValue()) + "\n" "(" + label + " state)", - wxArtProvider::GetBitmap(wxART_INFORMATION), + wxArtProvider::GetBitmap(type), wxRect(10, 10, bmp.GetWidth() - 20, bmp.GetHeight() - 20), wxALIGN_CENTRE);