From 78862f240c167007c922e5fc6105e4d9522f332f Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 3 Feb 2004 03:55:05 +0000 Subject: [PATCH] wxWave --> wxSound git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25487 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/demo/Main.py | 2 +- wxPython/demo/{Wave.py => Sound.py} | 14 ++-- wxPython/docs/CHANGES.txt | 2 + wxPython/docs/MigrationGuide.txt | 3 + wxPython/setup.py | 2 +- wxPython/src/_misc_rename.i | 5 +- wxPython/src/_sound.i | 109 ++++++++++++++++++++++++++++ wxPython/src/_wave.i | 76 ------------------- wxPython/src/misc.i | 2 +- wxPython/wxPython/misc.py | 10 ++- 10 files changed, 136 insertions(+), 89 deletions(-) rename wxPython/demo/{Wave.py => Sound.py} (86%) create mode 100644 wxPython/src/_sound.i delete mode 100644 wxPython/src/_wave.i 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 -- 2.47.2