diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py
index 6e446b2c1e..52f30c3176 100644
--- a/wxPython/demo/Main.py
+++ b/wxPython/demo/Main.py
@@ -209,8 +209,8 @@ _treeList = [
'OGL',
'PrintFramework',
'ShapedWindow',
+ 'Sound',
'Unicode',
- 'Wave',
]),
# need libs not coming with the demo
diff --git a/wxPython/demo/Wave.py b/wxPython/demo/Sound.py
similarity index 86%
rename from wxPython/demo/Wave.py
rename to wxPython/demo/Sound.py
index 8ecd80fbaa..fde55f785c 100644
--- a/wxPython/demo/Wave.py
+++ b/wxPython/demo/Sound.py
@@ -18,16 +18,16 @@ class TestPanel(wx.Panel):
def OnButton1(self, evt):
try:
- wave = wx.Wave(opj('data/anykey.wav'))
- wave.Play()
+ sound = wx.Sound(opj('data/anykey.wav'))
+ sound.Play()
except NotImplementedError, v:
wx.MessageBox(str(v), "Exception Message")
def OnButton2(self, evt):
try:
- wave = wx.Wave(opj('data/plan.wav'))
- wave.Play()
+ sound = wx.Sound(opj('data/plan.wav'))
+ sound.Play()
except NotImplementedError, v:
wx.MessageBox(str(v), "Exception Message")
@@ -40,14 +40,16 @@ def runTest(frame, nb, log):
#----------------------------------------------------------------------
-overview = """\
+overview = """
+Sound
This class represents a short wave file, in Windows WAV format, that can
be stored in memory and played. Currently this class is implemented on Windows
and GTK (Linux) only.
-
+
This demo offers two examples, both driven by buttons, but obviously the event
that drives the playing of the sound can come from anywhere.
+
"""
diff --git a/wxPython/docs/CHANGES.txt b/wxPython/docs/CHANGES.txt
index 1628f4f375..086e80c8db 100644
--- a/wxPython/docs/CHANGES.txt
+++ b/wxPython/docs/CHANGES.txt
@@ -49,6 +49,8 @@ for the Demo, PyCrust and XRCed) are now top-level items in the disk
image (.dmg file) that users can just drag and drop to wherever they
want to put them.
+The wxWave class has been renamed to wxSound, and now has a slightly
+different API.
diff --git a/wxPython/docs/MigrationGuide.txt b/wxPython/docs/MigrationGuide.txt
index 8e5da9fe2e..c727915950 100644
--- a/wxPython/docs/MigrationGuide.txt
+++ b/wxPython/docs/MigrationGuide.txt
@@ -414,3 +414,6 @@ wxPyTypeCast at all.
If you use the old wxPython package and wxPython.wx namespace then
there are compatibility aliases for much of the above items.
+
+The wxWave class has been renamed to wxSound, and now has a slightly
+different API.
diff --git a/wxPython/setup.py b/wxPython/setup.py
index 8bb5d32347..4f76390489 100755
--- a/wxPython/setup.py
+++ b/wxPython/setup.py
@@ -830,7 +830,7 @@ swig_sources = run_swig(['misc.i'], 'src', GENDIR, PKGDIR,
'src/_misc.i', 'src/_tipdlg.i',
'src/_timer.i', 'src/_log.i',
'src/_process.i', 'src/_joystick.i',
- 'src/_wave.i', 'src/_mimetype.i',
+ 'src/_sound.i', 'src/_mimetype.i',
'src/_artprov.i', 'src/_config.i',
'src/_datetime.i', 'src/_dataobj.i',
'src/_dnd.i',
diff --git a/wxPython/src/_misc_rename.i b/wxPython/src/_misc_rename.i
index 72ba1d43c2..6c1f89f713 100644
--- a/wxPython/src/_misc_rename.i
+++ b/wxPython/src/_misc_rename.i
@@ -259,7 +259,10 @@
%rename(JOY_BUTTON4) wxJOY_BUTTON4;
%rename(Joystick) wxJoystick;
%rename(JoystickEvent) wxJoystickEvent;
-%rename(Wave) wxWave;
+%rename(SOUND_SYNC) wxSOUND_SYNC;
+%rename(SOUND_ASYNC) wxSOUND_ASYNC;
+%rename(SOUND_LOOP) wxSOUND_LOOP;
+%rename(Sound) wxSound;
%rename(MAILCAP_STANDARD) wxMAILCAP_STANDARD;
%rename(MAILCAP_NETSCAPE) wxMAILCAP_NETSCAPE;
%rename(MAILCAP_KDE) wxMAILCAP_KDE;
diff --git a/wxPython/src/_sound.i b/wxPython/src/_sound.i
new file mode 100644
index 0000000000..b26dbd859c
--- /dev/null
+++ b/wxPython/src/_sound.i
@@ -0,0 +1,109 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: _sound.i
+// Purpose: SWIG interface stuff for wxSound
+//
+// Author: Robin Dunn
+//
+// Created: 18-June-1999
+// RCS-ID: $Id$
+// Copyright: (c) 2003 by Total Control Software
+// Licence: wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+// Not a %module
+
+
+//---------------------------------------------------------------------------
+%newgroup
+
+%{
+#include
+%}
+
+//---------------------------------------------------------------------------
+
+enum wxSoundFlags
+{
+ wxSOUND_SYNC = 0,
+ wxSOUND_ASYNC = 1,
+ wxSOUND_LOOP = 2
+};
+
+
+
+%{
+#if !wxUSE_SOUND
+// A C++ stub class for wxWave for platforms that don't have it.
+class wxSound : public wxObject
+{
+public:
+ wxSound() {
+ wxPyBeginBlockThreads();
+ PyErr_SetString(PyExc_NotImplementedError,
+ "wxSound is not available on this platform.");
+ wxPyEndBlockThreads();
+ }
+ wxSound(const wxString&, bool) {
+ wxPyBeginBlockThreads();
+ PyErr_SetString(PyExc_NotImplementedError,
+ "wxSound is not available on this platform.");
+ wxPyEndBlockThreads();
+ }
+ wxSound(int, const wxByte*) {
+ wxPyBeginBlockThreads();
+ PyErr_SetString(PyExc_NotImplementedError,
+ "wxSound is not available on this platform.");
+ wxPyEndBlockThreads();
+ }
+
+ ~wxSound() {};
+
+ bool Create(const wxString&, bool) { return false; }
+ bool Create(int, const wxByte*) { return false; };
+ bool IsOk() { return false; };
+ bool Play(unsigned) const { return false; }
+ static bool Play(const wxString&, unsigned) { return false; }
+ static void Stop() {}
+};
+
+#endif
+%}
+
+
+
+class wxSound /*: public wxObject*/
+{
+public:
+ %nokwargs wxSound;
+ wxSound();
+ wxSound(const wxString& fileName, bool isResource = false);
+ wxSound(int size, const wxByte* data);
+ ~wxSound();
+
+ %nokwargs Create;
+ %nokwargs Play;
+
+ // Create from resource or file
+ bool Create(const wxString& fileName, bool isResource = false);
+
+ // 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);
+
+ static void Stop();
+
+
+ %pythoncode { def __nonzero__(self): return self.IsOk() }
+};
+
+
+
+
+//---------------------------------------------------------------------------
diff --git a/wxPython/src/_wave.i b/wxPython/src/_wave.i
deleted file mode 100644
index 994ccfb957..0000000000
--- a/wxPython/src/_wave.i
+++ /dev/null
@@ -1,76 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: _joystick.i
-// Purpose: SWIG interface stuff for wxWave
-//
-// Author: Robin Dunn
-//
-// Created: 18-June-1999
-// RCS-ID: $Id$
-// Copyright: (c) 2003 by Total Control Software
-// Licence: wxWindows license
-/////////////////////////////////////////////////////////////////////////////
-
-// Not a %module
-
-
-//---------------------------------------------------------------------------
-%newgroup
-
-%{
-#include
-%}
-
-//---------------------------------------------------------------------------
-
-%{
-#if !wxUSE_SOUND
-// A C++ stub class for wxWave for platforms that don't have it.
-class wxWave : public wxObject
-{
-public:
- wxWave(const wxString& fileName, bool isResource = False) {
- wxPyBeginBlockThreads();
- PyErr_SetString(PyExc_NotImplementedError,
- "wxWave is not available on this platform.");
- wxPyEndBlockThreads();
- }
- wxWave(int size, const wxByte* data) {
- wxPyBeginBlockThreads();
- PyErr_SetString(PyExc_NotImplementedError,
- "wxWave is not available on this platform.");
- wxPyEndBlockThreads();
- }
-
- ~wxWave() {}
-
- bool IsOk() const { return False; }
- bool Play(bool async = True, bool looped = False) const { return False; }
-};
-
-#endif
-%}
-
-
-
-class wxWave /*: public wxObject*/
-{
-public:
- wxWave(const wxString& fileName, bool isResource = False);
- %extend {
- %name(WaveData) wxWave(const wxString& data) {
- return new wxWave(data.Len(), (wxByte*)data.c_str());
- }
- }
-
- ~wxWave();
-
- bool IsOk() const;
- bool Play(bool async = True, bool looped = False);
-
- %pythoncode { def __nonzero__(self): return self.IsOk() }
-};
-
-
-
-
-//---------------------------------------------------------------------------
diff --git a/wxPython/src/misc.i b/wxPython/src/misc.i
index 41ea0d02ed..84fb2092ba 100644
--- a/wxPython/src/misc.i
+++ b/wxPython/src/misc.i
@@ -42,7 +42,7 @@ MAKE_CONST_WXSTRING_NOSWIG(EmptyString);
%include _log.i
%include _process.i
%include _joystick.i
-%include _wave.i
+%include _sound.i
%include _mimetype.i
%include _artprov.i
%include _config.i
diff --git a/wxPython/wxPython/misc.py b/wxPython/wxPython/misc.py
index cf6f122a52..9276110bfb 100644
--- a/wxPython/wxPython/misc.py
+++ b/wxPython/wxPython/misc.py
@@ -355,9 +355,13 @@ wxEVT_JOY_MOVE = wx.misc.wxEVT_JOY_MOVE
wxEVT_JOY_ZMOVE = wx.misc.wxEVT_JOY_ZMOVE
wxJoystickEvent = wx.misc.JoystickEvent
wxJoystickEventPtr = wx.misc.JoystickEventPtr
-wxWave = wx.misc.Wave
-wxWavePtr = wx.misc.WavePtr
-wxWaveData = wx.misc.WaveData
+wxSOUND_SYNC = wx.misc.SOUND_SYNC
+wxSOUND_ASYNC = wx.misc.SOUND_ASYNC
+wxSOUND_LOOP = wx.misc.SOUND_LOOP
+wxSound = wx.misc.Sound
+wxSoundPtr = wx.misc.SoundPtr
+wxSound_PlaySound = wx.misc.Sound_PlaySound
+wxSound_Stop = wx.misc.Sound_Stop
wxMAILCAP_STANDARD = wx.misc.MAILCAP_STANDARD
wxMAILCAP_NETSCAPE = wx.misc.MAILCAP_NETSCAPE
wxMAILCAP_KDE = wx.misc.MAILCAP_KDE