]> git.saurik.com Git - wxWidgets.git/blob - wxPython/src/_sound.i
This workaround is no longer needed because of fix in
[wxWidgets.git] / wxPython / src / _sound.i
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
25 enum wxSoundFlags
26 {
27 wxSOUND_SYNC = 0,
28 wxSOUND_ASYNC = 1,
29 wxSOUND_LOOP = 2
30 };
31
32
33
34 %{
35 #if !wxUSE_SOUND
36 // A C++ stub class for wxWave for platforms that don't have it.
37 class wxSound : public wxObject
38 {
39 public:
40 wxSound() {
41 bool blocked = wxPyBeginBlockThreads();
42 PyErr_SetString(PyExc_NotImplementedError,
43 "wxSound is not available on this platform.");
44 wxPyEndBlockThreads(blocked);
45 }
46 wxSound(const wxString&/*, bool*/) {
47 bool blocked = wxPyBeginBlockThreads();
48 PyErr_SetString(PyExc_NotImplementedError,
49 "wxSound is not available on this platform.");
50 wxPyEndBlockThreads(blocked);
51 }
52 wxSound(int, const wxByte*) {
53 bool blocked = wxPyBeginBlockThreads();
54 PyErr_SetString(PyExc_NotImplementedError,
55 "wxSound is not available on this platform.");
56 wxPyEndBlockThreads(blocked);
57 }
58
59 ~wxSound() {};
60
61 bool Create(const wxString&/*, bool*/) { return false; }
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
74 MustHaveApp(wxSound);
75 MustHaveApp(wxSound::Play);
76 MustHaveApp(wxSound::Stop);
77
78 class wxSound /*: public wxObject*/
79 {
80 public:
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 }
88 %name(SoundFromData) wxSound(PyObject* data) {
89 unsigned char* buffer; int size;
90 wxSound *sound = NULL;
91
92 bool blocked = wxPyBeginBlockThreads();
93 if (!PyArg_Parse(data, "t#", &buffer, &size))
94 goto done;
95 sound = new wxSound(size, buffer);
96 done:
97 wxPyEndBlockThreads(blocked);
98 return sound;
99 }
100 }
101
102 ~wxSound();
103
104
105 // Create from resource or file
106 bool Create(const wxString& fileName/*, bool isResource = false*/);
107
108 %extend {
109 bool CreateFromData(PyObject* data) {
110 %#ifndef __WXMAC__
111 unsigned char* buffer;
112 int size;
113 bool rv = False;
114
115 bool blocked = wxPyBeginBlockThreads();
116 if (!PyArg_Parse(data, "t#", &buffer, &size))
117 goto done;
118 rv = self->Create(size, buffer);
119 done:
120 wxPyEndBlockThreads(blocked);
121 return rv;
122 %#else
123 bool blocked = wxPyBeginBlockThreads();
124 PyErr_SetString(PyExc_NotImplementedError,
125 "Create from data is not available on this platform.");
126 wxPyEndBlockThreads(blocked);
127 return False;
128 %#endif
129 }
130 }
131
132 bool IsOk();
133
134 // Play the sound:
135 bool Play(unsigned flags = wxSOUND_ASYNC) const;
136
137 // Plays sound from filename:
138 %name(PlaySound) static bool Play(const wxString& filename, unsigned flags = wxSOUND_ASYNC);
139
140 #ifndef __WXMAC__
141 static void Stop();
142 #else
143 %extend {
144 static void Stop()
145 { wxPyRaiseNotImplemented(); }
146 }
147 #endif
148
149 %pythoncode { def __nonzero__(self): return self.IsOk() }
150 };
151
152
153
154
155 //---------------------------------------------------------------------------