]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/MediaCtrl.py
8 #----------------------------------------------------------------------
10 class TestPanel(wx
.Panel
):
11 def __init__(self
, parent
, log
):
13 wx
.Panel
.__init
__(self
, parent
, -1,
14 style
=wx
.TAB_TRAVERSAL|wx
.CLIP_CHILDREN
)
16 # Create some controls
17 self
.mc
= wx
.media
.MediaCtrl(self
, style
=wx
.SIMPLE_BORDER
)
19 btn1
= wx
.Button(self
, -1, "Load File")
20 self
.Bind(wx
.EVT_BUTTON
, self
.OnLoadFile
, btn1
)
22 btn2
= wx
.Button(self
, -1, "Play")
23 self
.Bind(wx
.EVT_BUTTON
, self
.OnPlay
, btn2
)
25 btn3
= wx
.Button(self
, -1, "Pause")
26 self
.Bind(wx
.EVT_BUTTON
, self
.OnPause
, btn3
)
28 btn4
= wx
.Button(self
, -1, "Stop")
29 self
.Bind(wx
.EVT_BUTTON
, self
.OnStop
, btn4
)
31 btn5
= wx
.ToggleButton(self
, -1, "Loop")
32 self
.Bind(wx
.EVT_TOGGLEBUTTON
, self
.OnLoopToggle
, btn5
)
34 slider
= wx
.Slider(self
, -1, 0, 0, 0)
36 self
.Bind(wx
.EVT_SLIDER
, self
.OnSeek
, slider
)
38 self
.st_size
= wx
.StaticText(self
, -1, size
=(100,-1))
39 self
.st_len
= wx
.StaticText(self
, -1, size
=(100,-1))
40 self
.st_pos
= wx
.StaticText(self
, -1, size
=(100,-1))
44 sizer
= wx
.GridBagSizer(5,5)
45 sizer
.Add(self
.mc
, (1,1), span
=(5,1))#, flag=wx.EXPAND)
46 sizer
.Add(btn1
, (1,3))
47 sizer
.Add(btn2
, (2,3))
48 sizer
.Add(btn3
, (3,3))
49 sizer
.Add(btn4
, (4,3))
50 sizer
.Add(btn5
, (5,3))
51 sizer
.Add(slider
, (6,1), flag
=wx
.EXPAND
)
52 sizer
.Add(self
.st_size
, (1, 5))
53 sizer
.Add(self
.st_len
, (2, 5))
54 sizer
.Add(self
.st_pos
, (3, 5))
57 self
.DoLoadFile(opj("data/testmovie.mpg"))
60 self
.timer
= wx
.Timer(self
)
61 self
.Bind(wx
.EVT_TIMER
, self
.OnTimer
)
66 def OnLoadFile(self
, evt
):
67 dlg
= wx
.FileDialog(self
, message
="Choose a media file",
68 defaultDir
=os
.getcwd(), defaultFile
="",
69 style
=wx
.OPEN | wx
.CHANGE_DIR
)
70 if dlg
.ShowModal() == wx
.ID_OK
:
76 def DoLoadFile(self
, path
):
77 if not self
.mc
.Load(path
):
78 wx
.MessageBox("Unable to load %s: Unsupported format?" % path
,
80 wx
.ICON_ERROR | wx
.OK
)
82 self
.mc
.SetBestFittingSize()
83 self
.GetSizer().Layout()
84 self
.slider
.SetRange(0, self
.mc
.Length())
88 def OnLoopToggle(self
, evt
):
89 btn
= evt
.GetEventObject()
90 self
.mc
.Loop(btn
.GetValue())
93 def OnPlay(self
, evt
):
96 def OnPause(self
, evt
):
99 def OnStop(self
, evt
):
103 def OnSeek(self
, evt
):
104 offset
= self
.slider
.GetValue()
107 def OnTimer(self
, evt
):
108 offset
= self
.mc
.Tell()
109 self
.slider
.SetValue(offset
)
110 self
.st_size
.SetLabel('size: %s' % self
.mc
.GetBestSize())
111 self
.st_len
.SetLabel('length: %d seconds' % (self
.mc
.Length()/1000))
112 self
.st_pos
.SetLabel('position: %d' % offset
)
115 #----------------------------------------------------------------------
117 def runTest(frame
, nb
, log
):
119 win
= TestPanel(nb
, log
)
121 except NotImplementedError:
122 from Main
import MessagePanel
123 win
= MessagePanel(nb
, 'wx.MediaCtrl is not available on this platform.',
124 'Sorry', wx
.ICON_WARNING
)
128 #----------------------------------------------------------------------
132 overview
= """<html><body>
133 <h2><center>wx.MediaCtrl</center></h2>
135 wx.MediaCtrl is a class that allows a way to convieniently display
136 various types of media, such as videos, audio files, natively through
137 native codecs. Several different formats of audio and video files are
138 supported, but some formats may not be playable on all platforms or
139 may require specific codecs to be installed.
142 wx.MediaCtrl uses native backends to render media, for example on Windows
143 there is a ActiveMovie/DirectShow backend, and on Macintosh there is a
146 wx.MediaCtrl is not currently available on unix systems.
153 if __name__
== '__main__':
156 run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])