| 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();
 
- }
 
 
  |