]> git.saurik.com Git - wxWidgets.git/blame - contrib/samples/animate/anitest.cpp
Added support for toggle button on OS/2.
[wxWidgets.git] / contrib / samples / animate / anitest.cpp
CommitLineData
4638d697
JS
1/////////////////////////////////////////////////////////////////////////////
2// Name: anitest.cpp
3// Purpose: Animation sample
4// Author: Julian Smart
5// Modified by:
6// Created: 02/07/2001
7// RCS-ID: $Id$
8// Copyright: (c) Julian Smart
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12// ===========================================================================
13// declarations
14// ===========================================================================
15
16// ---------------------------------------------------------------------------
17// headers
18// ---------------------------------------------------------------------------
19
20// For compilers that support precompilation, includes "wx/wx.h".
21#include "wx/wxprec.h"
22
23#ifdef __BORLANDC__
24 #pragma hdrstop
25#endif
26
27#ifndef WX_PRECOMP
28 #include "wx/wx.h"
29#endif
30
618f2efa 31#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__)
4638d697
JS
32 #include "mondrian.xpm"
33#endif
34
35#include "anitest.h"
36
37IMPLEMENT_APP(MyApp)
38
39// ---------------------------------------------------------------------------
40// global variables
41// ---------------------------------------------------------------------------
42
43// ---------------------------------------------------------------------------
44// event tables
45// ---------------------------------------------------------------------------
46
47BEGIN_EVENT_TABLE(MyFrame, wxFrame)
48 EVT_MENU(ANITEST_ABOUT, MyFrame::OnAbout)
49 EVT_MENU(ANITEST_QUIT, MyFrame::OnQuit)
50 EVT_MENU(ANITEST_OPEN, MyFrame::OnOpen)
51
52 EVT_SIZE(MyFrame::OnSize)
53END_EVENT_TABLE()
54
55// ===========================================================================
56// implementation
57// ===========================================================================
58
59// ---------------------------------------------------------------------------
60// MyApp
61// ---------------------------------------------------------------------------
62
63// Initialise this in OnInit, not statically
64bool MyApp::OnInit()
65{
66 // Create the main frame window
67
10217444 68 MyFrame* frame = new MyFrame((wxFrame *)NULL, -1, _T("Animation Demo"),
4638d697
JS
69 wxPoint(-1, -1), wxSize(500, 400),
70 wxDEFAULT_FRAME_STYLE);
71
72 // Give it an icon
73#ifdef __WXMSW__
ee0d4b46 74 frame->SetIcon(wxIcon(_T("mdi_icn")));
4638d697
JS
75#else
76 frame->SetIcon(wxIcon( mondrian_xpm ));
77#endif
78
79 // Make a menubar
80 wxMenu *file_menu = new wxMenu;
81
10217444
VS
82 file_menu->Append(ANITEST_OPEN, _T("&Open Animation...\tCtrl+O"), _T("Open a GIF animation"));
83 file_menu->Append(ANITEST_QUIT, _T("&Exit\tAlt+X"), _T("Quit the program"));
4638d697
JS
84
85 wxMenu *help_menu = new wxMenu;
10217444 86 help_menu->Append(ANITEST_ABOUT, _T("&About\tF1"));
4638d697
JS
87
88 wxMenuBar *menu_bar = new wxMenuBar;
89
10217444
VS
90 menu_bar->Append(file_menu, _T("&File"));
91 menu_bar->Append(help_menu, _T("&Help"));
4638d697
JS
92
93 // Associate the menu bar with the frame
94 frame->SetMenuBar(menu_bar);
95
d96cdd4a 96#if wxUSE_STATUSBAR
4638d697 97 frame->CreateStatusBar();
d96cdd4a 98#endif // wxUSE_STATUSBAR
4638d697
JS
99
100 frame->Show(TRUE);
101
102 SetTopWindow(frame);
103
104 return TRUE;
105}
106
107// ---------------------------------------------------------------------------
108// MyFrame
109// ---------------------------------------------------------------------------
110
111// Define my frame constructor
112MyFrame::MyFrame(wxWindow *parent,
113 const wxWindowID id,
114 const wxString& title,
115 const wxPoint& pos,
116 const wxSize& size,
117 const long style)
118 : wxFrame(parent, id, title, pos, size,
119 style | wxNO_FULL_REPAINT_ON_RESIZE)
120{
121// m_animation = NULL;
122 m_canvas = new MyCanvas(this, wxPoint(0, 0), wxSize(-1, -1));
123#if 0
124 m_player.SetDestroyAnimation(FALSE);
125 m_player.SetWindow(m_canvas);
126 m_player.SetPosition(wxPoint(0, 0));
127#endif
128 m_animationCtrl = new wxGIFAnimationCtrl(m_canvas, -1, wxEmptyString,
129 wxPoint(0, 0), wxSize(200, 200));
130}
131
132MyFrame::~MyFrame()
133{
134// m_player.Stop();
135}
136
137void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
138{
139 Close();
140}
141
142void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )
143{
be5a51fb 144 (void)wxMessageBox(_T("wxWidgets 2 Animation Demo\n")
10217444
VS
145 _T("Author: Julian Smart (c) 2001\n"),
146 _T("About Animation Demo"));
4638d697
JS
147}
148
ee0d4b46 149void MyFrame::OnOpen(wxCommandEvent& WXUNUSED(event))
4638d697 150{
10217444 151 wxFileDialog dialog(this, _T("Please choose an animated GIF"),
4638d697
JS
152 wxEmptyString, wxEmptyString, wxT("*.gif"), wxOPEN);
153 if (dialog.ShowModal() == wxID_OK)
154 {
155 wxString filename(dialog.GetPath());
156
157 m_animationCtrl->Stop();
158 if (m_animationCtrl->LoadFile(filename))
159 {
160 m_animationCtrl->Play();
161 }
162 else
163 {
10217444 164 wxMessageBox(_T("Sorry, this animation was not a valid animated GIF."));
4638d697
JS
165 }
166 }
167}
168
169
170// ---------------------------------------------------------------------------
171// MyCanvas
172// ---------------------------------------------------------------------------
173
174BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
175 EVT_PAINT(MyCanvas::OnPaint)
176END_EVENT_TABLE()
177
178// Define a constructor for my canvas
179MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size)
180 : wxScrolledWindow(parent, -1, pos, size,
181 wxSUNKEN_BORDER |
182 wxNO_FULL_REPAINT_ON_RESIZE |
183 wxVSCROLL | wxHSCROLL)
184{
ee0d4b46 185 SetBackgroundColour(wxColour(_T("YELLOW")));
4638d697
JS
186}
187
ee0d4b46 188void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event))
4638d697
JS
189{
190 wxPaintDC dc(this);
191#if 0
192 MyFrame* frame = (MyFrame*) GetParent();
193 if (frame->GetPlayer().IsPlaying())
194 {
195 frame->GetPlayer().Draw(dc);
196 }
197#endif
198}
199