added tests for background colour, static bitmap &c (part of patch 1598005)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43476 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -33,6 +33,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/aboutdlg.h"
|
#include "wx/aboutdlg.h"
|
||||||
|
#include "wx/artprov.h"
|
||||||
|
#include "wx/colordlg.h"
|
||||||
#include "anitest.h"
|
#include "anitest.h"
|
||||||
|
|
||||||
#if !wxUSE_ANIMATIONCTRL
|
#if !wxUSE_ANIMATIONCTRL
|
||||||
@@ -52,11 +54,20 @@ IMPLEMENT_APP(MyApp)
|
|||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
ID_PLAY = 1
|
ID_PLAY = 1,
|
||||||
|
ID_SET_NULL_ANIMATION,
|
||||||
|
ID_SET_INACTIVE_BITMAP,
|
||||||
|
ID_SET_NO_AUTO_RESIZE,
|
||||||
|
ID_SET_BGCOLOR
|
||||||
};
|
};
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||||
EVT_MENU(ID_PLAY, MyFrame::OnPlay)
|
EVT_MENU(ID_PLAY, MyFrame::OnPlay)
|
||||||
|
EVT_MENU(ID_SET_NULL_ANIMATION, MyFrame::OnSetNullAnimation)
|
||||||
|
EVT_MENU(ID_SET_INACTIVE_BITMAP, MyFrame::OnSetInactiveBitmap)
|
||||||
|
EVT_MENU(ID_SET_NO_AUTO_RESIZE, MyFrame::OnSetNoAutoResize)
|
||||||
|
EVT_MENU(ID_SET_BGCOLOR, MyFrame::OnSetBgColor)
|
||||||
|
|
||||||
EVT_MENU(wxID_STOP, MyFrame::OnStop)
|
EVT_MENU(wxID_STOP, MyFrame::OnStop)
|
||||||
EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
|
EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
|
||||||
EVT_MENU(wxID_EXIT, MyFrame::OnQuit)
|
EVT_MENU(wxID_EXIT, MyFrame::OnQuit)
|
||||||
@@ -82,8 +93,8 @@ bool MyApp::OnInit()
|
|||||||
// Create the main frame window
|
// Create the main frame window
|
||||||
|
|
||||||
MyFrame* frame = new MyFrame((wxFrame *)NULL, wxID_ANY, _T("Animation Demo"),
|
MyFrame* frame = new MyFrame((wxFrame *)NULL, wxID_ANY, _T("Animation Demo"),
|
||||||
wxDefaultPosition, wxSize(500, 400),
|
wxDefaultPosition, wxSize(500, 400),
|
||||||
wxDEFAULT_FRAME_STYLE);
|
wxDEFAULT_FRAME_STYLE);
|
||||||
|
|
||||||
// Give it an icon
|
// Give it an icon
|
||||||
frame->SetIcon(wxICON(sample));
|
frame->SetIcon(wxICON(sample));
|
||||||
@@ -99,6 +110,15 @@ bool MyApp::OnInit()
|
|||||||
wxMenu *play_menu = new wxMenu;
|
wxMenu *play_menu = new wxMenu;
|
||||||
play_menu->Append(ID_PLAY, _T("Play\tCtrl+P"), _T("Play the animation"));
|
play_menu->Append(ID_PLAY, _T("Play\tCtrl+P"), _T("Play the animation"));
|
||||||
play_menu->Append(wxID_STOP, _T("Stop\tCtrl+P"), _T("Stop the animation"));
|
play_menu->Append(wxID_STOP, _T("Stop\tCtrl+P"), _T("Stop the animation"));
|
||||||
|
play_menu->AppendSeparator();
|
||||||
|
play_menu->Append(ID_SET_NULL_ANIMATION, _T("Set null animation"),
|
||||||
|
_T("Sets the empty animation in the control"));
|
||||||
|
play_menu->AppendCheckItem(ID_SET_INACTIVE_BITMAP, _T("Set inactive bitmap"),
|
||||||
|
_T("Sets an inactive bitmap for the control"));
|
||||||
|
play_menu->AppendCheckItem(ID_SET_NO_AUTO_RESIZE, _T("Set no autoresize"),
|
||||||
|
_T("Tells the control not to resize automatically"));
|
||||||
|
play_menu->Append(ID_SET_BGCOLOR, _T("Set background colour..."),
|
||||||
|
_T("Sets the background colour of the control"));
|
||||||
|
|
||||||
wxMenu *help_menu = new wxMenu;
|
wxMenu *help_menu = new wxMenu;
|
||||||
help_menu->Append(wxID_ABOUT);
|
help_menu->Append(wxID_ABOUT);
|
||||||
@@ -139,10 +159,19 @@ MyFrame::MyFrame(wxWindow *parent,
|
|||||||
: wxFrame(parent, id, title, pos, size,
|
: wxFrame(parent, id, title, pos, size,
|
||||||
style | wxNO_FULL_REPAINT_ON_RESIZE)
|
style | wxNO_FULL_REPAINT_ON_RESIZE)
|
||||||
{
|
{
|
||||||
m_animationCtrl = new wxAnimationCtrl(this, wxID_ANY, wxNullAnimation,
|
// use a wxBoxSizer otherwise wxFrame will automatically
|
||||||
wxPoint(0,0),wxSize(100,100));
|
// resize the m_animationCtrl to fill its client area on
|
||||||
|
// user resizes
|
||||||
|
wxSizer *sz = new wxBoxSizer(wxVERTICAL);
|
||||||
|
sz->Add(new wxStaticText(this, wxID_ANY, wxT("wxAnimationCtrl:")),
|
||||||
|
wxSizerFlags().Centre().Border());
|
||||||
|
|
||||||
|
m_animationCtrl = new wxAnimationCtrl(this, wxID_ANY);
|
||||||
if (m_animationCtrl->LoadFile(wxT("throbber.gif")))
|
if (m_animationCtrl->LoadFile(wxT("throbber.gif")))
|
||||||
m_animationCtrl->Play();
|
m_animationCtrl->Play();
|
||||||
|
|
||||||
|
sz->Add(m_animationCtrl, wxSizerFlags().Centre().Border());
|
||||||
|
SetSizer(sz);
|
||||||
}
|
}
|
||||||
|
|
||||||
MyFrame::~MyFrame()
|
MyFrame::~MyFrame()
|
||||||
@@ -160,6 +189,62 @@ void MyFrame::OnStop(wxCommandEvent& WXUNUSED(event))
|
|||||||
m_animationCtrl->Stop();
|
m_animationCtrl->Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnSetNullAnimation(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
m_animationCtrl->SetAnimation(wxNullAnimation);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnSetInactiveBitmap(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
if (event.IsChecked())
|
||||||
|
{
|
||||||
|
// set a dummy bitmap as the inactive bitmap
|
||||||
|
wxBitmap bmp = wxArtProvider::GetBitmap(wxART_MISSING_IMAGE);
|
||||||
|
m_animationCtrl->SetInactiveBitmap(bmp);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_animationCtrl->SetInactiveBitmap(wxNullBitmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnSetNoAutoResize(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
// recreate the control with the new flag if necessary
|
||||||
|
long style = wxAC_DEFAULT_STYLE |
|
||||||
|
(event.IsChecked() ? wxAC_NO_AUTORESIZE : 0);
|
||||||
|
|
||||||
|
if (style != m_animationCtrl->GetWindowStyle())
|
||||||
|
{
|
||||||
|
// save status of the control before destroying it
|
||||||
|
wxAnimation curr = m_animationCtrl->GetAnimation();
|
||||||
|
wxBitmap inactive = m_animationCtrl->GetInactiveBitmap();
|
||||||
|
wxColour bg = m_animationCtrl->GetBackgroundColour();
|
||||||
|
|
||||||
|
// destroy & rebuild
|
||||||
|
wxAnimationCtrl *old = m_animationCtrl;
|
||||||
|
m_animationCtrl = new wxAnimationCtrl(this, wxID_ANY, curr,
|
||||||
|
wxDefaultPosition, wxDefaultSize,
|
||||||
|
style);
|
||||||
|
|
||||||
|
GetSizer()->Replace(old, m_animationCtrl);
|
||||||
|
delete old;
|
||||||
|
|
||||||
|
// load old status in new control
|
||||||
|
m_animationCtrl->SetInactiveBitmap(inactive);
|
||||||
|
m_animationCtrl->SetBackgroundColour(bg);
|
||||||
|
|
||||||
|
GetSizer()->Layout();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnSetBgColor(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
wxColour clr = wxGetColourFromUser(this, m_animationCtrl->GetBackgroundColour(),
|
||||||
|
wxT("Choose the background colour"));
|
||||||
|
|
||||||
|
if (clr.IsOk())
|
||||||
|
m_animationCtrl->SetBackgroundColour(clr);
|
||||||
|
}
|
||||||
|
|
||||||
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
|
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
Close();
|
Close();
|
||||||
@@ -224,6 +309,8 @@ void MyFrame::OnOpen(wxCommandEvent& WXUNUSED(event))
|
|||||||
m_animationCtrl->Play();
|
m_animationCtrl->Play();
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
GetSizer()->Layout();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // wxUSE_FILEDLG
|
#endif // wxUSE_FILEDLG
|
||||||
@@ -232,5 +319,6 @@ void MyFrame::OnUpdateUI(wxUpdateUIEvent& WXUNUSED(event) )
|
|||||||
{
|
{
|
||||||
GetMenuBar()->FindItem(wxID_STOP)->Enable(m_animationCtrl->IsPlaying());
|
GetMenuBar()->FindItem(wxID_STOP)->Enable(m_animationCtrl->IsPlaying());
|
||||||
GetMenuBar()->FindItem(ID_PLAY)->Enable(!m_animationCtrl->IsPlaying());
|
GetMenuBar()->FindItem(ID_PLAY)->Enable(!m_animationCtrl->IsPlaying());
|
||||||
|
GetMenuBar()->FindItem(ID_SET_NO_AUTO_RESIZE)->Enable(!m_animationCtrl->IsPlaying());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -31,6 +31,10 @@ public:
|
|||||||
void OnQuit(wxCommandEvent& event);
|
void OnQuit(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnPlay(wxCommandEvent& event);
|
void OnPlay(wxCommandEvent& event);
|
||||||
|
void OnSetNullAnimation(wxCommandEvent& event);
|
||||||
|
void OnSetInactiveBitmap(wxCommandEvent& event);
|
||||||
|
void OnSetNoAutoResize(wxCommandEvent& event);
|
||||||
|
void OnSetBgColor(wxCommandEvent& event);
|
||||||
void OnStop(wxCommandEvent& event);
|
void OnStop(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnUpdateUI(wxUpdateUIEvent& event);
|
void OnUpdateUI(wxUpdateUIEvent& event);
|
||||||
|
Reference in New Issue
Block a user