X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fb81ee210393b52d2cfbf02a3245076de46cb5ea..a7ebaf0ddd8556929c923329e4d61cb0b6520109:/samples/shaped/shaped.cpp diff --git a/samples/shaped/shaped.cpp b/samples/shaped/shaped.cpp index df4afac07e..6e9a0d955c 100644 --- a/samples/shaped/shaped.cpp +++ b/samples/shaped/shaped.cpp @@ -40,6 +40,10 @@ #include "wx/dcclient.h" #include "wx/image.h" +#ifndef __WXMSW__ + #include "../sample.xpm" +#endif + // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -107,7 +111,6 @@ public: void OnMouseMove(wxMouseEvent& evt); void OnExit(wxMouseEvent& evt); void OnPaint(wxPaintEvent& evt); - void OnWindowCreate(wxWindowCreateEvent& evt); private: bool m_hasShape; @@ -153,15 +156,13 @@ public: wxShowEffect effect, // TODO: add menu command to the main frame to allow changing // these parameters - unsigned timeout = 1000, - wxDirection dir = wxBOTTOM) + unsigned timeout = 1000) : wxFrame(parent, wxID_ANY, wxString::Format("Frame shown with %s effect", GetEffectName(effect)), wxDefaultPosition, wxSize(450, 300)), m_effect(effect), - m_timeout(timeout), - m_dir(dir) + m_timeout(timeout) { new wxStaticText(this, wxID_ANY, wxString::Format("Effect: %s", GetEffectName(effect)), @@ -170,7 +171,7 @@ public: wxString::Format("Timeout: %ums", m_timeout), wxPoint(20, 60)); - ShowWithEffect(m_effect, m_timeout, m_dir); + ShowWithEffect(m_effect, m_timeout); Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(EffectFrame::OnClose)); } @@ -180,7 +181,17 @@ private: { static const char *names[] = { - "roll", "slide", "fade", "expand", + "none", + "roll to left", + "roll to right", + "roll to top", + "roll to bottom", + "slide to left", + "slide to right", + "slide to top", + "slide to bottom", + "fade", + "expand", }; wxCOMPILE_TIME_ASSERT( WXSIZEOF(names) == wxSHOW_EFFECT_MAX, EffectNamesMismatch ); @@ -190,14 +201,13 @@ private: void OnClose(wxCloseEvent& event) { - HideWithEffect(m_effect, m_timeout, m_dir); + HideWithEffect(m_effect, m_timeout); event.Skip(); } wxShowEffect m_effect; unsigned m_timeout; - wxDirection m_dir; }; // ============================================================================ @@ -240,6 +250,8 @@ MainFrame::MainFrame() : wxFrame(NULL, wxID_ANY, "wxWidgets Shaped Sample", wxDefaultPosition, wxSize(200, 100)) { + SetIcon(wxICON(sample)); + wxMenuBar * const mbar = new wxMenuBar; wxMenu * const menuFrames = new wxMenu; menuFrames->Append(Show_Shaped, "Show &shaped window\tCtrl-S"); @@ -272,12 +284,70 @@ void MainFrame::OnShowTransparent(wxCommandEvent& WXUNUSED(event)) void MainFrame::OnShowEffect(wxCommandEvent& event) { - int effect = wxSHOW_EFFECT_ROLL + event.GetId() - Show_Effect_Roll; + int effect = event.GetId(); static wxDirection direction = wxLEFT; direction = (wxDirection)(((int)direction)<< 1); if ( direction > wxDOWN ) direction = wxLEFT ; - new EffectFrame(this, wx_static_cast(wxShowEffect, effect),1000,direction); + + wxShowEffect eff; + switch ( effect ) + { + case Show_Effect_Roll: + switch ( direction ) + { + case wxLEFT: + eff = wxSHOW_EFFECT_ROLL_TO_LEFT; + break; + case wxRIGHT: + eff = wxSHOW_EFFECT_ROLL_TO_RIGHT; + break; + case wxTOP: + eff = wxSHOW_EFFECT_ROLL_TO_TOP; + break; + case wxBOTTOM: + eff = wxSHOW_EFFECT_ROLL_TO_BOTTOM; + break; + default: + wxFAIL_MSG( "invalid direction" ); + return; + } + break; + case Show_Effect_Slide: + switch ( direction ) + { + case wxLEFT: + eff = wxSHOW_EFFECT_SLIDE_TO_LEFT; + break; + case wxRIGHT: + eff = wxSHOW_EFFECT_SLIDE_TO_RIGHT; + break; + case wxTOP: + eff = wxSHOW_EFFECT_SLIDE_TO_TOP; + break; + case wxBOTTOM: + eff = wxSHOW_EFFECT_SLIDE_TO_BOTTOM; + break; + default: + wxFAIL_MSG( "invalid direction" ); + return; + } + break; + + case Show_Effect_Blend: + eff = wxSHOW_EFFECT_BLEND; + break; + + case Show_Effect_Expand: + eff = wxSHOW_EFFECT_EXPAND; + break; + + default: + wxFAIL_MSG( "invalid effect" ); + return; + } + + new EffectFrame(this, eff, 1000); } // ---------------------------------------------------------------------------- @@ -290,12 +360,7 @@ BEGIN_EVENT_TABLE(ShapedFrame, wxFrame) EVT_LEFT_UP(ShapedFrame::OnLeftUp) EVT_MOTION(ShapedFrame::OnMouseMove) EVT_RIGHT_UP(ShapedFrame::OnExit) - EVT_PAINT(ShapedFrame::OnPaint) - -#ifdef __WXGTK__ - EVT_WINDOW_CREATE(ShapedFrame::OnWindowCreate) -#endif END_EVENT_TABLE() @@ -311,17 +376,10 @@ ShapedFrame::ShapedFrame(wxFrame *parent) ) { m_hasShape = false; - m_bmp = wxBitmap(_T("star.png"), wxBITMAP_TYPE_PNG); + m_bmp = wxBitmap(wxT("star.png"), wxBITMAP_TYPE_PNG); SetSize(wxSize(m_bmp.GetWidth(), m_bmp.GetHeight())); SetToolTip(wxT("Right-click to close")); - -#ifndef __WXGTK__ - // On wxGTK we can't do this yet because the window hasn't been created - // yet so we wait until the EVT_WINDOW_CREATE event happens. On wxMSW and - // wxMac the window has been created at this point so we go ahead and set - // the shape now. SetWindowShape(); -#endif } void ShapedFrame::SetWindowShape() @@ -381,11 +439,6 @@ void ShapedFrame::OnPaint(wxPaintEvent& WXUNUSED(evt)) dc.DrawBitmap(m_bmp, 0, 0, true); } -void ShapedFrame::OnWindowCreate(wxWindowCreateEvent& WXUNUSED(evt)) -{ - SetWindowShape(); -} - // ---------------------------------------------------------------------------- // see-through frame // ----------------------------------------------------------------------------