]>
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 slider
= wx
.Slider(self
, -1, 0, 0, 0)
37 self
.Bind(wx
.EVT_SLIDER
, self
.OnSeek
, slider
)
39 self
.st_size
= wx
.StaticText(self
, -1, size
=(100,-1))
40 self
.st_len
= wx
.StaticText(self
, -1, size
=(100,-1))
41 self
.st_pos
= wx
.StaticText(self
, -1, size
=(100,-1))
45 sizer
= wx
.GridBagSizer(5,5)
46 sizer
.Add(self
.mc
, (1,1), span
=(5,1))#, flag=wx.EXPAND)
47 sizer
.Add(btn1
, (1,3))
48 sizer
.Add(btn2
, (2,3))
49 sizer
.Add(btn3
, (3,3))
50 sizer
.Add(btn4
, (4,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 OnPlay(self
, evt
):
91 def OnPause(self
, evt
):
94 def OnStop(self
, evt
):
98 def OnSeek(self
, evt
):
99 offset
= self
.slider
.GetValue()
102 def OnTimer(self
, evt
):
103 offset
= self
.mc
.Tell()
104 self
.slider
.SetValue(offset
)
105 self
.st_size
.SetLabel('size: %s' % self
.mc
.GetBestSize())
106 self
.st_len
.SetLabel('length: %d seconds' % (self
.mc
.Length()/1000))
107 self
.st_pos
.SetLabel('position: %d' % offset
)
110 #----------------------------------------------------------------------
112 def runTest(frame
, nb
, log
):
114 win
= TestPanel(nb
, log
)
116 except NotImplementedError:
117 from Main
import MessagePanel
118 win
= MessagePanel(nb
, 'wx.MediaCtrl is not available on this platform.',
119 'Sorry', wx
.ICON_WARNING
)
123 #----------------------------------------------------------------------
127 overview
= """<html><body>
128 <h2><center>wx.MediaCtrl</center></h2>
130 wx.MediaCtrl is a class that allows a way to convieniently display
131 various types of media, such as videos, audio files, natively through
132 native codecs. Several different formats of audio and video files are
133 supported, but some formats may not be playable on all platforms or
134 may require specific codecs to be installed.
137 wx.MediaCtrl uses native backends to render media, for example on Windows
138 there is a ActiveMovie/DirectShow backend, and on Macintosh there is a
141 wx.MediaCtrl is not currently available on unix systems.
148 if __name__
== '__main__':
151 run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])