]>
Commit | Line | Data |
---|---|---|
cbfc9df6 RD |
1 | import wx |
2 | import wx.media | |
3 | from wx.lib.mixins.inspection import InspectableApp | |
4 | ||
5 | import os; print os.getpid(); raw_input("press enter...") | |
6 | ||
7 | class TestFrame(wx.Frame): | |
8 | def __init__(self, *args, **kw): | |
9 | wx.Frame.__init__(self, *args, **kw) | |
10 | self.CreateStatusBar() | |
11 | pnl = wx.Panel(self) | |
12 | ||
13 | self.mc = wx.media.MediaCtrl(pnl, size=(-1,200)) | |
14 | #self.fn = "/home/robind/smb4k/BEAST/MyVideos/SageTV/48HoursMystery-6199728-0.mpg" | |
15 | ||
16 | self.Bind(wx.media.EVT_MEDIA_PLAY, self.OnMediaPlay, self.mc) | |
17 | self.Bind(wx.media.EVT_MEDIA_PAUSE, self.OnMediaPause, self.mc) | |
18 | self.Bind(wx.media.EVT_MEDIA_STOP, self.OnMediaStop, self.mc) | |
19 | self.Bind(wx.media.EVT_MEDIA_FINISHED, self.OnMediaFinished, self.mc) | |
20 | self.Bind(wx.media.EVT_MEDIA_LOADED, self.OnMediaLoaded, self.mc) | |
21 | ||
22 | selectBtn = wx.Button(pnl, -1, "Select") | |
23 | loadBtn = wx.Button(pnl, -1, "Load") | |
24 | playBtn = wx.Button(pnl, -1, "Play") | |
25 | pauseBtn= wx.Button(pnl, -1, "Pause") | |
26 | stopBtn = wx.Button(pnl, -1, "Stop") | |
27 | ||
28 | self.Bind(wx.EVT_BUTTON, self.OnBtnSelect, selectBtn) | |
29 | self.Bind(wx.EVT_BUTTON, self.OnBtnLoad, loadBtn) | |
30 | self.Bind(wx.EVT_BUTTON, self.OnBtnPlay, playBtn) | |
31 | self.Bind(wx.EVT_BUTTON, self.OnBtnPause, pauseBtn) | |
32 | self.Bind(wx.EVT_BUTTON, self.OnBtnStop, stopBtn) | |
33 | ||
34 | ||
35 | vbox = wx.BoxSizer(wx.VERTICAL) | |
36 | vbox.AddF(self.mc, wx.SizerFlags(1).Expand().Border(wx.ALL, 5)) | |
37 | hbox = wx.BoxSizer(wx.HORIZONTAL) | |
38 | hbox.AddF(selectBtn, wx.SizerFlags().Border()) | |
39 | hbox.AddF(loadBtn, wx.SizerFlags().Border()) | |
40 | hbox.AddF(playBtn, wx.SizerFlags().Border()) | |
41 | hbox.AddF(pauseBtn, wx.SizerFlags().Border()) | |
42 | hbox.AddF(stopBtn, wx.SizerFlags().Border()) | |
43 | vbox.Add(hbox) | |
44 | pnl.SetSizer(vbox) | |
45 | ||
46 | sizer = wx.BoxSizer() | |
47 | sizer.AddF(pnl, wx.SizerFlags(1).Expand()) | |
48 | self.SetSizer(sizer) | |
49 | wx.CallLater(200, self.SetClientSize, pnl.GetBestSize()) | |
50 | ||
51 | self.timer = wx.Timer(self) | |
52 | self.Bind(wx.EVT_TIMER, self.OnShowStatus) | |
53 | self.timer.Start(500) | |
54 | ||
55 | ||
56 | def OnBtnSelect(self, evt): | |
57 | name = wx.FileSelector("Choose media file") | |
58 | if name: | |
59 | self.fn = name | |
60 | ||
61 | def OnBtnLoad(self, evt): | |
62 | print "Loading %s..." % self.fn | |
63 | print "Load:", self.mc.Load(self.fn) | |
64 | ||
65 | def OnBtnPlay(self, evt): | |
66 | print "Play:", self.mc.Play() | |
67 | ||
68 | def OnBtnPause(self, evt): | |
69 | print "Pause:", self.mc.Pause() | |
70 | ||
71 | def OnBtnStop(self, evt): | |
72 | print "Stop:", self.mc.Stop() | |
73 | ||
74 | ||
75 | def OnShowStatus(self, evt): | |
76 | current = self.mc.Tell() | |
77 | length = self.mc.Length() | |
78 | ||
79 | dl_current = self.mc.GetDownloadProgress() | |
80 | dl_length = self.mc.GetDownloadTotal() | |
81 | ||
82 | cw,ch = self.mc.GetSize() | |
83 | bw,bh = self.mc.GetBestSize() | |
84 | ||
85 | vol = self.mc.GetVolume() | |
86 | ||
87 | stateMap = { wx.media.MEDIASTATE_PLAYING : "Playing", | |
88 | wx.media.MEDIASTATE_PAUSED : "Paused", | |
89 | wx.media.MEDIASTATE_STOPPED : "Stopped", } | |
90 | state = stateMap.get(self.mc.GetState(), "Other") | |
91 | ||
92 | st = "Size:%d,%d BSize:%d,%d Pos:%d/%d DL:%d/%d V:%d %s" % ( | |
93 | cw,ch, bw,bh, current, length, dl_current, dl_length, vol*100, state) | |
94 | ||
95 | self.SetStatusText(st) | |
96 | ||
97 | ||
98 | ||
99 | def OnMediaPlay(self, evt): | |
100 | print "OnMediaPlay" | |
101 | ||
102 | def OnMediaPause(self, evt): | |
103 | print "OnMediaPause" | |
104 | ||
105 | def OnMediaStop(self, evt): | |
106 | print "OnMediaStop" | |
107 | ||
108 | def OnMediaFinished(self, evt): | |
109 | print "OnMediaFinished" | |
110 | ||
111 | def OnMediaLoaded(self, evt): | |
112 | print "OnMediaLoaded" | |
113 | ||
114 | ||
115 | ||
116 | app = InspectableApp(False) | |
117 | frm = TestFrame(None, title="simple wxMediaCtrl test") | |
118 | frm.Show() | |
119 | app.MainLoop() | |
120 |