X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/78862f240c167007c922e5fc6105e4d9522f332f..a9a04486a2fc7be11a42343070ff8dd859618c46:/wxPython/src/_sound.i diff --git a/wxPython/src/_sound.i b/wxPython/src/_sound.i index b26dbd859c..bed230c51c 100644 --- a/wxPython/src/_sound.i +++ b/wxPython/src/_sound.i @@ -24,9 +24,9 @@ enum wxSoundFlags { - wxSOUND_SYNC = 0, - wxSOUND_ASYNC = 1, - wxSOUND_LOOP = 2 + wxSOUND_SYNC, + wxSOUND_ASYNC, + wxSOUND_LOOP }; @@ -38,27 +38,27 @@ class wxSound : public wxObject { public: wxSound() { - wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); PyErr_SetString(PyExc_NotImplementedError, "wxSound is not available on this platform."); - wxPyEndBlockThreads(); + wxPyEndBlockThreads(blocked); } - wxSound(const wxString&, bool) { - wxPyBeginBlockThreads(); + wxSound(const wxString&/*, bool*/) { + wxPyBlock_t blocked = wxPyBeginBlockThreads(); PyErr_SetString(PyExc_NotImplementedError, "wxSound is not available on this platform."); - wxPyEndBlockThreads(); + wxPyEndBlockThreads(blocked); } wxSound(int, const wxByte*) { - wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); PyErr_SetString(PyExc_NotImplementedError, "wxSound is not available on this platform."); - wxPyEndBlockThreads(); + wxPyEndBlockThreads(blocked); } ~wxSound() {}; - bool Create(const wxString&, bool) { return false; } + bool Create(const wxString&/*, bool*/) { return false; } bool Create(int, const wxByte*) { return false; }; bool IsOk() { return false; }; bool Play(unsigned) const { return false; } @@ -71,35 +71,75 @@ public: +MustHaveApp(wxSound); +MustHaveApp(wxSound::Play); +MustHaveApp(wxSound::Stop); + class wxSound /*: public wxObject*/ { public: - %nokwargs wxSound; - wxSound(); - wxSound(const wxString& fileName, bool isResource = false); - wxSound(int size, const wxByte* data); + %extend { + wxSound(const wxString& fileName = wxPyEmptyString /*, bool isResource = false*/) { + if (fileName.Length() == 0) + return new wxSound; + else + return new wxSound(fileName); + } + %RenameCtor(SoundFromData, wxSound(PyObject* data)) + { + unsigned char* buffer; int size; + wxSound *sound = NULL; + + wxPyBlock_t blocked = wxPyBeginBlockThreads(); + if (!PyArg_Parse(data, "t#", &buffer, &size)) + goto done; + sound = new wxSound(size, buffer); + done: + wxPyEndBlockThreads(blocked); + return sound; + } + } + ~wxSound(); - %nokwargs Create; - %nokwargs Play; // Create from resource or file - bool Create(const wxString& fileName, bool isResource = false); + bool Create(const wxString& fileName/*, bool isResource = false*/); + + %extend { + bool CreateFromData(PyObject* data) { + %#ifndef __WXMAC__ + unsigned char* buffer; + int size; + bool rv = false; + + wxPyBlock_t blocked = wxPyBeginBlockThreads(); + if (!PyArg_Parse(data, "t#", &buffer, &size)) + goto done; + rv = self->Create(size, buffer); + done: + wxPyEndBlockThreads(blocked); + return rv; + %#else + wxPyBlock_t blocked = wxPyBeginBlockThreads(); + PyErr_SetString(PyExc_NotImplementedError, + "Create from data is not available on this platform."); + wxPyEndBlockThreads(blocked); + return false; + %#endif + } + } - // Create from data - bool Create(int size, const wxByte* data); - bool IsOk(); // Play the sound: bool Play(unsigned flags = wxSOUND_ASYNC) const; // Plays sound from filename: - %name(PlaySound)static bool Play(const wxString& filename, unsigned flags = wxSOUND_ASYNC); + %Rename(PlaySound, static bool, Play(const wxString& filename, unsigned flags = wxSOUND_ASYNC)); static void Stop(); - %pythoncode { def __nonzero__(self): return self.IsOk() } };