X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e0f0eaba3d19f3e2d7783373a9cfc677bb9e107a..c4287548985b4a8246eb1d9b4ced2f346fc95253:/wxPython/src/_sound.i diff --git a/wxPython/src/_sound.i b/wxPython/src/_sound.i index 8f9f560a5f..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,19 +38,19 @@ class wxSound : public wxObject { public: wxSound() { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); PyErr_SetString(PyExc_NotImplementedError, "wxSound is not available on this platform."); wxPyEndBlockThreads(blocked); } wxSound(const wxString&/*, bool*/) { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); PyErr_SetString(PyExc_NotImplementedError, "wxSound is not available on this platform."); wxPyEndBlockThreads(blocked); } wxSound(int, const wxByte*) { - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); PyErr_SetString(PyExc_NotImplementedError, "wxSound is not available on this platform."); wxPyEndBlockThreads(blocked); @@ -71,6 +71,10 @@ public: +MustHaveApp(wxSound); +MustHaveApp(wxSound::Play); +MustHaveApp(wxSound::Stop); + class wxSound /*: public wxObject*/ { public: @@ -81,30 +85,48 @@ public: else return new wxSound(fileName); } - %name(SoundFromData) wxSound(const wxMemoryBuffer& data) { - return new wxSound((int)data.GetDataLen(), (wxByte*)data.GetData()); + %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*/); %extend { - bool CreateFromData(const wxMemoryBuffer& data) { - %#ifndef __WXMAC__ - return self->Create((int)data.GetDataLen(), (wxByte*)data.GetData()); - %#else - bool blocked = wxPyBeginBlockThreads(); + 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 + return false; + %#endif } } @@ -114,16 +136,9 @@ public: 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)); -#ifndef __WXMAC__ static void Stop(); -#else - %extend { - static void Stop() - { wxPyRaiseNotImplemented(); } - } -#endif %pythoncode { def __nonzero__(self): return self.IsOk() } };