]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/MediaCtrl.py
6 #----------------------------------------------------------------------
8 class TestPanel(wx
.Panel
):
9 def __init__(self
, parent
, log
):
11 wx
.Panel
.__init
__(self
, parent
, -1,
12 style
=wx
.TAB_TRAVERSAL|wx
.CLIP_CHILDREN
)
14 # Create some controls
16 self
.mc
= wx
.media
.MediaCtrl(self
, style
=wx
.SIMPLE_BORDER
)
17 except NotImplementedError:
21 btn1
= wx
.Button(self
, -1, "Load File")
22 self
.Bind(wx
.EVT_BUTTON
, self
.OnLoadFile
, btn1
)
24 btn2
= wx
.Button(self
, -1, "Play")
25 self
.Bind(wx
.EVT_BUTTON
, self
.OnPlay
, btn2
)
27 btn3
= wx
.Button(self
, -1, "Pause")
28 self
.Bind(wx
.EVT_BUTTON
, self
.OnPause
, btn3
)
30 btn4
= wx
.Button(self
, -1, "Stop")
31 self
.Bind(wx
.EVT_BUTTON
, self
.OnStop
, btn4
)
33 slider
= wx
.Slider(self
, -1, 0, 0, 0)
35 slider
.SetMinSize((150, -1))
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(slider
, (6,1), flag
=wx
.EXPAND
)
51 sizer
.Add(self
.st_size
, (1, 5))
52 sizer
.Add(self
.st_len
, (2, 5))
53 sizer
.Add(self
.st_pos
, (3, 5))
56 self
.DoLoadFile(os
.path
.abspath("data/testmovie.mpg"))
59 self
.timer
= wx
.Timer(self
)
60 self
.Bind(wx
.EVT_TIMER
, self
.OnTimer
)
65 def OnLoadFile(self
, evt
):
66 dlg
= wx
.FileDialog(self
, message
="Choose a media file",
67 defaultDir
=os
.getcwd(), defaultFile
="",
68 style
=wx
.OPEN | wx
.CHANGE_DIR
)
69 if dlg
.ShowModal() == wx
.ID_OK
:
75 def DoLoadFile(self
, path
):
76 if not self
.mc
.Load(path
):
77 wx
.MessageBox("Unable to load %s: Unsupported format?" % path
,
79 wx
.ICON_ERROR | wx
.OK
)
81 self
.mc
.SetBestFittingSize()
82 self
.GetSizer().Layout()
84 self
.slider
.SetRange(0, self
.mc
.Length())
87 def OnPlay(self
, evt
):
90 def OnPause(self
, evt
):
93 def OnStop(self
, evt
):
97 def OnSeek(self
, evt
):
98 offset
= self
.slider
.GetValue()
101 def OnTimer(self
, evt
):
102 offset
= self
.mc
.Tell()
103 self
.slider
.SetValue(offset
)
104 self
.st_size
.SetLabel('size: %s' % self
.mc
.GetBestSize())
105 self
.st_len
.SetLabel('length: %d seconds' % (self
.mc
.Length()/1000))
106 self
.st_pos
.SetLabel('position: %d' % offset
)
109 #----------------------------------------------------------------------
111 def runTest(frame
, nb
, log
):
113 win
= TestPanel(nb
, log
)
115 except NotImplementedError:
116 from Main
import MessagePanel
117 win
= MessagePanel(nb
, 'wx.MediaCtrl is not available on this platform.',
118 'Sorry', wx
.ICON_WARNING
)
122 #----------------------------------------------------------------------
126 overview
= """<html><body>
127 <h2><center>wx.MediaCtrl</center></h2>
129 wx.MediaCtrl is a class that allows a way to convieniently display
130 various types of media, such as videos, audio files, natively through
131 native codecs. Several different formats of audio and video files are
132 supported, but some formats may not be playable on all platforms or
133 may require specific codecs to be installed.
136 wx.MediaCtrl uses native backends to render media, for example on Windows
137 there is a ActiveMovie/DirectShow backend, and on Macintosh there is a
140 wx.MediaCtrl is not currently available on unix systems.
147 if __name__
== '__main__':
150 run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])