From: Robin Dunn Date: Tue, 3 Feb 2004 03:55:05 +0000 (+0000) Subject: wxWave --> wxSound X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/78862f240c167007c922e5fc6105e4d9522f332f wxWave --> wxSound git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25487 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- 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/Sound.py b/wxPython/demo/Sound.py new file mode 100644 index 0000000000..fde55f785c --- /dev/null +++ b/wxPython/demo/Sound.py @@ -0,0 +1,59 @@ + +import wx + +from Main import opj + +#---------------------------------------------------------------------- + +class TestPanel(wx.Panel): + def __init__(self, parent): + wx.Panel.__init__(self, parent, -1) + + b = wx.Button(self, -1, "Play Sound 1", (25, 25)) + self.Bind(wx.EVT_BUTTON, self.OnButton1, b) + + b = wx.Button(self, -1, "Play Sound 2", (25, 65)) + self.Bind(wx.EVT_BUTTON, self.OnButton2, b) + + + def OnButton1(self, evt): + try: + sound = wx.Sound(opj('data/anykey.wav')) + sound.Play() + except NotImplementedError, v: + wx.MessageBox(str(v), "Exception Message") + + + def OnButton2(self, evt): + try: + sound = wx.Sound(opj('data/plan.wav')) + sound.Play() + except NotImplementedError, v: + wx.MessageBox(str(v), "Exception Message") + +#---------------------------------------------------------------------- + +def runTest(frame, nb, log): + win = TestPanel(nb) + return win + +#---------------------------------------------------------------------- + + +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. + + +""" + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) diff --git a/wxPython/demo/Wave.py b/wxPython/demo/Wave.py deleted file mode 100644 index 8ecd80fbaa..0000000000 --- a/wxPython/demo/Wave.py +++ /dev/null @@ -1,57 +0,0 @@ - -import wx - -from Main import opj - -#---------------------------------------------------------------------- - -class TestPanel(wx.Panel): - def __init__(self, parent): - wx.Panel.__init__(self, parent, -1) - - b = wx.Button(self, -1, "Play Sound 1", (25, 25)) - self.Bind(wx.EVT_BUTTON, self.OnButton1, b) - - b = wx.Button(self, -1, "Play Sound 2", (25, 65)) - self.Bind(wx.EVT_BUTTON, self.OnButton2, b) - - - def OnButton1(self, evt): - try: - wave = wx.Wave(opj('data/anykey.wav')) - wave.Play() - except NotImplementedError, v: - wx.MessageBox(str(v), "Exception Message") - - - def OnButton2(self, evt): - try: - wave = wx.Wave(opj('data/plan.wav')) - wave.Play() - except NotImplementedError, v: - wx.MessageBox(str(v), "Exception Message") - -#---------------------------------------------------------------------- - -def runTest(frame, nb, log): - win = TestPanel(nb) - return win - -#---------------------------------------------------------------------- - - -overview = """\ -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. - -""" - - -if __name__ == '__main__': - import sys,os - import run - run.main(['', os.path.basename(sys.argv[0])]) 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