X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/78862f240c167007c922e5fc6105e4d9522f332f..6a52ea5cb81dcd07c286d34b80945534780fe05f:/wxPython/demo/Sound.py diff --git a/wxPython/demo/Sound.py b/wxPython/demo/Sound.py index fde55f785c..2584de414c 100644 --- a/wxPython/demo/Sound.py +++ b/wxPython/demo/Sound.py @@ -6,35 +6,70 @@ from Main import opj #---------------------------------------------------------------------- class TestPanel(wx.Panel): - def __init__(self, parent): + def __init__(self, parent, log): wx.Panel.__init__(self, parent, -1) + self.log = log - b = wx.Button(self, -1, "Play Sound 1", (25, 25)) + b = wx.Button(self, -1, "Play Sound 1 (sync)", (25, 25)) self.Bind(wx.EVT_BUTTON, self.OnButton1, b) - b = wx.Button(self, -1, "Play Sound 2", (25, 65)) + b = wx.Button(self, -1, "Play Sound 2 (async)", (25, 65)) self.Bind(wx.EVT_BUTTON, self.OnButton2, b) + b = wx.Button(self, -1, "Select .WAV file", (25, 105)) + self.Bind(wx.EVT_BUTTON, self.OnSelectSound, b) + def OnButton1(self, evt): try: sound = wx.Sound(opj('data/anykey.wav')) - sound.Play() + self.log.write("before Play...\n") + sound.Play(wx.SOUND_SYNC) + self.log.write("...after Play\n") except NotImplementedError, v: wx.MessageBox(str(v), "Exception Message") def OnButton2(self, evt): try: - sound = wx.Sound(opj('data/plan.wav')) - sound.Play() + if True: + sound = wx.Sound(opj('data/plan.wav')) + else: + # sounds can also be loaded from a buffer object + data = open(opj('data/plan.wav'), 'rb').read() + sound = wx.SoundFromData(data) + + self.log.write("before Play...\n") + sound.Play(wx.SOUND_ASYNC) + self.sound = sound # save a reference (This shoudln't be needed, but there seems to be a bug...) + wx.YieldIfNeeded() + self.log.write("...after Play\n") except NotImplementedError, v: wx.MessageBox(str(v), "Exception Message") + + def OnSelectSound(self, evt): + dlg = wx.FileDialog(wx.GetTopLevelParent(self), + "Choose a sound file", + wildcard="WAV files (*.wav)|*.wav", + style=wx.OPEN) + if dlg.ShowModal() == wx.ID_OK: + try: + #sound = wx.Sound(dlg.GetPath(), wx.SOUND_SYNC) + #sound.Play() + + # another way to do it. + wx.Sound.PlaySound(dlg.GetPath(), wx.SOUND_SYNC) + + except NotImplementedError, v: + wx.MessageBox(str(v), "Exception Message") + dlg.Destroy() + + #---------------------------------------------------------------------- def runTest(frame, nb, log): - win = TestPanel(nb) + win = TestPanel(nb, log) return win #---------------------------------------------------------------------- @@ -42,8 +77,8 @@ def runTest(frame, nb, log): 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 +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 @@ -56,4 +91,4 @@ 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])]) + run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])