ce7fe42e84
Use the same short names as are used by the event table macros for the event type constants themselves. This makes them much more comfortable to use, e.g. Bind(wxEVT_BUTTON) compared to Bind(wxEVT_COMMAND_BUTTON_CLICKED). The old long names are still kept for backwards compatibility and shouldn't be removed as it doesn't really cost anything to continue providing them, but all new event types should only use the short versions. Closes #10661. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73850 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
144 lines
4.3 KiB
C++
144 lines
4.3 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Program: wxWidgets Widgets Sample
|
|
// Name: statbmp.cpp
|
|
// Purpose: Part of the widgets sample showing wxStaticBitmap
|
|
// Author: Marcin Wojdyr
|
|
// Created: 2008-06-19
|
|
// Id: $Id$
|
|
// 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();
|
|
}
|
|
|