]> git.saurik.com Git - wxWidgets.git/blame - wxPython/src/_sound.i
save a reference to the bitmap so it doesn't get destroyed before the
[wxWidgets.git] / wxPython / src / _sound.i
CommitLineData
78862f24
RD
1/////////////////////////////////////////////////////////////////////////////
2// Name: _sound.i
3// Purpose: SWIG interface stuff for wxSound
4//
5// Author: Robin Dunn
6//
7// Created: 18-June-1999
8// RCS-ID: $Id$
9// Copyright: (c) 2003 by Total Control Software
10// Licence: wxWindows license
11/////////////////////////////////////////////////////////////////////////////
12
13// Not a %module
14
15
16//---------------------------------------------------------------------------
17%newgroup
18
19%{
20#include <wx/sound.h>
21%}
22
23//---------------------------------------------------------------------------
24
25enum wxSoundFlags
26{
de3ac0f5
RD
27 wxSOUND_SYNC,
28 wxSOUND_ASYNC,
29 wxSOUND_LOOP
78862f24
RD
30};
31
32
33
34%{
35#if !wxUSE_SOUND
36// A C++ stub class for wxWave for platforms that don't have it.
37class wxSound : public wxObject
38{
39public:
40 wxSound() {
6e6b3557 41 wxPyBlock_t blocked = wxPyBeginBlockThreads();
78862f24
RD
42 PyErr_SetString(PyExc_NotImplementedError,
43 "wxSound is not available on this platform.");
da32eb53 44 wxPyEndBlockThreads(blocked);
78862f24 45 }
e0f0eaba 46 wxSound(const wxString&/*, bool*/) {
6e6b3557 47 wxPyBlock_t blocked = wxPyBeginBlockThreads();
78862f24
RD
48 PyErr_SetString(PyExc_NotImplementedError,
49 "wxSound is not available on this platform.");
da32eb53 50 wxPyEndBlockThreads(blocked);
78862f24
RD
51 }
52 wxSound(int, const wxByte*) {
6e6b3557 53 wxPyBlock_t blocked = wxPyBeginBlockThreads();
78862f24
RD
54 PyErr_SetString(PyExc_NotImplementedError,
55 "wxSound is not available on this platform.");
da32eb53 56 wxPyEndBlockThreads(blocked);
78862f24
RD
57 }
58
59 ~wxSound() {};
60
e0f0eaba 61 bool Create(const wxString&/*, bool*/) { return false; }
78862f24
RD
62 bool Create(int, const wxByte*) { return false; };
63 bool IsOk() { return false; };
64 bool Play(unsigned) const { return false; }
65 static bool Play(const wxString&, unsigned) { return false; }
66 static void Stop() {}
67};
68
69#endif
70%}
71
72
73
ab1f7d2a
RD
74MustHaveApp(wxSound);
75MustHaveApp(wxSound::Play);
76MustHaveApp(wxSound::Stop);
77
78862f24
RD
78class wxSound /*: public wxObject*/
79{
80public:
e0f0eaba
RD
81 %extend {
82 wxSound(const wxString& fileName = wxPyEmptyString /*, bool isResource = false*/) {
83 if (fileName.Length() == 0)
84 return new wxSound;
85 else
86 return new wxSound(fileName);
87 }
1b8c7ba6
RD
88 %RenameCtor(SoundFromData, wxSound(PyObject* data))
89 {
68cc4013
RD
90 unsigned char* buffer; int size;
91 wxSound *sound = NULL;
92
6e6b3557 93 wxPyBlock_t blocked = wxPyBeginBlockThreads();
68cc4013
RD
94 if (!PyArg_Parse(data, "t#", &buffer, &size))
95 goto done;
96 sound = new wxSound(size, buffer);
97 done:
98 wxPyEndBlockThreads(blocked);
99 return sound;
e0f0eaba
RD
100 }
101 }
102
78862f24
RD
103 ~wxSound();
104
78862f24
RD
105
106 // Create from resource or file
e0f0eaba 107 bool Create(const wxString& fileName/*, bool isResource = false*/);
e8e4a2a4 108
e8e4a2a4 109 %extend {
68cc4013
RD
110 bool CreateFromData(PyObject* data) {
111 %#ifndef __WXMAC__
112 unsigned char* buffer;
113 int size;
a72f4631 114 bool rv = false;
68cc4013 115
6e6b3557 116 wxPyBlock_t blocked = wxPyBeginBlockThreads();
68cc4013
RD
117 if (!PyArg_Parse(data, "t#", &buffer, &size))
118 goto done;
119 rv = self->Create(size, buffer);
120 done:
121 wxPyEndBlockThreads(blocked);
122 return rv;
123 %#else
6e6b3557 124 wxPyBlock_t blocked = wxPyBeginBlockThreads();
e0f0eaba
RD
125 PyErr_SetString(PyExc_NotImplementedError,
126 "Create from data is not available on this platform.");
127 wxPyEndBlockThreads(blocked);
a72f4631 128 return false;
68cc4013 129 %#endif
e8e4a2a4
RD
130 }
131 }
e8e4a2a4 132
78862f24
RD
133 bool IsOk();
134
135 // Play the sound:
136 bool Play(unsigned flags = wxSOUND_ASYNC) const;
137
138 // Plays sound from filename:
1b8c7ba6 139 %Rename(PlaySound, static bool, Play(const wxString& filename, unsigned flags = wxSOUND_ASYNC));
78862f24
RD
140
141 static void Stop();
78862f24
RD
142
143 %pythoncode { def __nonzero__(self): return self.IsOk() }
144};
145
146
147
148
149//---------------------------------------------------------------------------