]>
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
18 self
.mc
= wx
.media
.MediaCtrl(self
, style
=wx
.SIMPLE_BORDER
)
19 except NotImplementedError:
23 btn1
= wx
.Button(self
, -1, "Load File")
24 self
.Bind(wx
.EVT_BUTTON
, self
.OnLoadFile
, btn1
)
26 btn2
= wx
.Button(self
, -1, "Play")
27 self
.Bind(wx
.EVT_BUTTON
, self
.OnPlay
, btn2
)
29 btn3
= wx
.Button(self
, -1, "Pause")
30 self
.Bind(wx
.EVT_BUTTON
, self
.OnPause
, btn3
)
32 btn4
= wx
.Button(self
, -1, "Stop")
33 self
.Bind(wx
.EVT_BUTTON
, self
.OnStop
, btn4
)
35 btn5
= wx
.ToggleButton(self
, -1, "Loop")
36 self
.Bind(wx
.EVT_TOGGLEBUTTON
, self
.OnLoopToggle
, btn5
)
38 slider
= wx
.Slider(self
, -1, 0, 0, 0)
40 self
.Bind(wx
.EVT_SLIDER
, self
.OnSeek
, slider
)
42 self
.st_size
= wx
.StaticText(self
, -1, size
=(100,-1))
43 self
.st_len
= wx
.StaticText(self
, -1, size
=(100,-1))
44 self
.st_pos
= wx
.StaticText(self
, -1, size
=(100,-1))
48 sizer
= wx
.GridBagSizer(5,5)
49 sizer
.Add(self
.mc
, (1,1), span
=(5,1))#, flag=wx.EXPAND)
50 sizer
.Add(btn1
, (1,3))
51 sizer
.Add(btn2
, (2,3))
52 sizer
.Add(btn3
, (3,3))
53 sizer
.Add(btn4
, (4,3))
54 sizer
.Add(btn5
, (5,3))
55 sizer
.Add(slider
, (6,1), flag
=wx
.EXPAND
)
56 sizer
.Add(self
.st_size
, (1, 5))
57 sizer
.Add(self
.st_len
, (2, 5))
58 sizer
.Add(self
.st_pos
, (3, 5))
61 self
.DoLoadFile(opj("data/testmovie.mpg"))
64 self
.timer
= wx
.Timer(self
)
65 self
.Bind(wx
.EVT_TIMER
, self
.OnTimer
)
70 def OnLoadFile(self
, evt
):
71 dlg
= wx
.FileDialog(self
, message
="Choose a media file",
72 defaultDir
=os
.getcwd(), defaultFile
="",
73 style
=wx
.OPEN | wx
.CHANGE_DIR
)
74 if dlg
.ShowModal() == wx
.ID_OK
:
80 def DoLoadFile(self
, path
):
81 if not self
.mc
.Load(path
):
82 wx
.MessageBox("Unable to load %s: Unsupported format?" % path
,
84 wx
.ICON_ERROR | wx
.OK
)
86 self
.mc
.SetBestFittingSize()
87 self
.GetSizer().Layout()
88 self
.slider
.SetRange(0, self
.mc
.Length())
92 def OnLoopToggle(self
, evt
):
93 btn
= evt
.GetEventObject()
94 self
.mc
.Loop(btn
.GetValue())
97 def OnPlay(self
, evt
):
100 def OnPause(self
, evt
):
103 def OnStop(self
, evt
):
107 def OnSeek(self
, evt
):
108 offset
= self
.slider
.GetValue()
111 def OnTimer(self
, evt
):
112 offset
= self
.mc
.Tell()
113 self
.slider
.SetValue(offset
)
114 self
.st_size
.SetLabel('size: %s' % self
.mc
.GetBestSize())
115 self
.st_len
.SetLabel('length: %d seconds' % (self
.mc
.Length()/1000))
116 self
.st_pos
.SetLabel('position: %d' % offset
)
119 #----------------------------------------------------------------------
121 def runTest(frame
, nb
, log
):
123 win
= TestPanel(nb
, log
)
125 except NotImplementedError:
126 from Main
import MessagePanel
127 win
= MessagePanel(nb
, 'wx.MediaCtrl is not available on this platform.',
128 'Sorry', wx
.ICON_WARNING
)
132 #----------------------------------------------------------------------
136 overview
= """<html><body>
137 <h2><center>wx.MediaCtrl</center></h2>
139 wx.MediaCtrl is a class that allows a way to convieniently display
140 various types of media, such as videos, audio files, natively through
141 native codecs. Several different formats of audio and video files are
142 supported, but some formats may not be playable on all platforms or
143 may require specific codecs to be installed.
146 wx.MediaCtrl uses native backends to render media, for example on Windows
147 there is a ActiveMovie/DirectShow backend, and on Macintosh there is a
150 wx.MediaCtrl is not currently available on unix systems.
157 if __name__
== '__main__':
160 run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])