]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_sound.i
update from herbert breunung
[wxWidgets.git] / wxPython / src / _sound.i
index 8f9f560a5f1cdc8fac18950dca7613dc9e7a9de1..ad1e0ea9a87796c2dcbfb1a35cf9fac57e6bef8c 100644 (file)
@@ -71,6 +71,10 @@ public:
 
 
 
+MustHaveApp(wxSound);
+MustHaveApp(wxSound::Play);
+MustHaveApp(wxSound::Stop);
+
 class wxSound /*: public wxObject*/
 {
 public:
@@ -81,30 +85,47 @@ public:
             else
                 return new wxSound(fileName);
         }
-        %name(SoundFromData) wxSound(const wxMemoryBuffer& data) {
-            return new wxSound((int)data.GetDataLen(), (wxByte*)data.GetData());
+        %name(SoundFromData) wxSound(PyObject* data) {
+            unsigned char* buffer; int size;
+            wxSound *sound = NULL;
+
+            bool 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 CreateFromData(PyObject* data) {
+        %#ifndef __WXMAC__
+            unsigned char* buffer;
+            int size;
+            bool rv = False;
+
+            bool blocked = wxPyBeginBlockThreads();
+            if (!PyArg_Parse(data, "t#", &buffer, &size))
+                goto done;
+            rv = self->Create(size, buffer);
+        done:
+            wxPyEndBlockThreads(blocked);
+            return rv;
+        %#else
                  bool blocked = wxPyBeginBlockThreads();
                  PyErr_SetString(PyExc_NotImplementedError,
                                  "Create from data is not available on this platform.");
                  wxPyEndBlockThreads(blocked);
                  return False;
-            %#endif
+        %#endif
         }
     }