| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- /////////////////////////////////////////////////////////////////////////////
- // Program: wxWidgets Widgets Sample
- // Name: statbmp.cpp
- // Purpose: Part of the widgets sample showing wxStaticBitmap
- // Author: Marcin Wojdyr
- // Created: 2008-06-19
- // Copyright: (c) 2008 Marcin Wojdyr
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- // ============================================================================
- // declarations
- // ============================================================================
- // ----------------------------------------------------------------------------
- // headers
- // ----------------------------------------------------------------------------
- // for compilers that support precompilation, includes "wx/wx.h".
- #include "wx/wxprec.h"
- #ifdef __BORLANDC__
- #pragma hdrstop
- #endif
- // for all others, include the necessary headers
- #ifndef WX_PRECOMP
- #include "wx/log.h"
- #include "wx/button.h"
- #include "wx/image.h"
- #include "wx/radiobox.h"
- #include "wx/statbmp.h"
- #include "wx/statbox.h"
- #include "wx/textctrl.h"
- #endif
- #include "wx/filename.h"
- #include "wx/generic/statbmpg.h"
- #include "wx/sizer.h"
- #include "wx/filepicker.h"
- #include "widgets.h"
- #include "icons/statbmp.xpm"
- class StatBmpWidgetsPage : public WidgetsPage
- {
- public:
- StatBmpWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist)
- : WidgetsPage(book, imaglist, statbmp_xpm) {}
- virtual void CreateContent();
- virtual wxControl *GetWidget() const { return m_statbmp; }
- virtual void RecreateWidget();
- private:
- void OnFileChange(wxFileDirPickerEvent &WXUNUSED(ev)) { RecreateWidget(); }
- void OnRadioChange(wxCommandEvent &WXUNUSED(ev)) { RecreateWidget(); }
- void OnMouseEvent(wxMouseEvent& WXUNUSED(event))
- {
- wxLogMessage(wxT("wxStaticBitmap clicked."));
- }
- wxStaticBitmapBase *m_statbmp;
- wxFilePickerCtrl *m_filepicker;
- wxRadioBox *m_radio;
- wxStaticBoxSizer *m_sbsizer;
- DECLARE_WIDGETS_PAGE(StatBmpWidgetsPage)
- };
- IMPLEMENT_WIDGETS_PAGE(StatBmpWidgetsPage, wxT("StaticBitmap"),
- ALL_CTRLS);
- void StatBmpWidgetsPage::CreateContent()
- {
- static const wxString choices[] = { "native", "generic" };
- m_radio = new wxRadioBox(this, wxID_ANY, "implementation",
- wxDefaultPosition, wxDefaultSize,
- WXSIZEOF(choices), choices);
- wxString testImage;
- #if wxUSE_LIBPNG
- wxFileName fn("../image/toucan.png");
- if ( fn.FileExists() )
- testImage = fn.GetFullPath();
- #endif // wxUSE_LIBPNG
- m_filepicker = new wxFilePickerCtrl(this, wxID_ANY, testImage);
- m_sbsizer = new wxStaticBoxSizer(wxVERTICAL, this, "wxStaticBitmap inside");
- wxSizer *leftsizer = new wxBoxSizer(wxVERTICAL);
- leftsizer->Add(m_radio, wxSizerFlags().Expand().Border());
- leftsizer->Add(m_filepicker, wxSizerFlags().Expand().Border());
- wxSizer *sizer = new wxBoxSizer(wxHORIZONTAL);
- sizer->Add(leftsizer, wxSizerFlags().Border());
- sizer->Add(m_sbsizer, wxSizerFlags().Center());
- SetSizer(sizer);
- wxInitAllImageHandlers();
- Connect(wxEVT_FILEPICKER_CHANGED,
- wxFileDirPickerEventHandler(StatBmpWidgetsPage::OnFileChange));
- Connect(wxEVT_RADIOBOX,
- wxCommandEventHandler(StatBmpWidgetsPage::OnRadioChange));
- m_statbmp = NULL;
- RecreateWidget();
- }
- void StatBmpWidgetsPage::RecreateWidget()
- {
- wxDELETE(m_statbmp);
- wxString filepath = m_filepicker->GetPath();
- if ( filepath.empty() )
- return;
- wxImage image(filepath);
- if (! image.IsOk() )
- {
- wxLogMessage("Reading image from file '%s' failed.", filepath.c_str());
- return;
- }
- if (m_radio->GetSelection() == 0)
- m_statbmp = new wxStaticBitmap(this, wxID_ANY, wxBitmap(image));
- else
- m_statbmp = new wxGenericStaticBitmap(this, wxID_ANY, wxBitmap(image));
- m_sbsizer->Add(m_statbmp, wxSizerFlags(1).Expand());
- GetSizer()->Layout();
- m_statbmp->Connect(wxEVT_LEFT_DOWN,
- wxMouseEventHandler(StatBmpWidgetsPage::OnMouseEvent),
- NULL, this);
- // When switching from generic to native control on wxMSW under Wine,
- // the explicit Refresh() is necessary
- m_statbmp->Refresh();
- }
|