git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@45021 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			121 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import wx
 | |
| import wx.media
 | |
| from wx.lib.mixins.inspection import InspectableApp
 | |
| 
 | |
| import os; print os.getpid(); raw_input("press enter...")
 | |
| 
 | |
| class TestFrame(wx.Frame):
 | |
|     def __init__(self, *args, **kw):
 | |
|         wx.Frame.__init__(self, *args, **kw)
 | |
|         self.CreateStatusBar()
 | |
|         pnl = wx.Panel(self)
 | |
|         
 | |
|         self.mc = wx.media.MediaCtrl(pnl, size=(-1,200))
 | |
|         #self.fn = "/home/robind/smb4k/BEAST/MyVideos/SageTV/48HoursMystery-6199728-0.mpg"
 | |
| 
 | |
|         self.Bind(wx.media.EVT_MEDIA_PLAY, self.OnMediaPlay, self.mc)
 | |
|         self.Bind(wx.media.EVT_MEDIA_PAUSE, self.OnMediaPause, self.mc)
 | |
|         self.Bind(wx.media.EVT_MEDIA_STOP, self.OnMediaStop, self.mc)
 | |
|         self.Bind(wx.media.EVT_MEDIA_FINISHED, self.OnMediaFinished, self.mc)
 | |
|         self.Bind(wx.media.EVT_MEDIA_LOADED, self.OnMediaLoaded, self.mc)
 | |
| 
 | |
|         selectBtn = wx.Button(pnl, -1, "Select")
 | |
|         loadBtn = wx.Button(pnl, -1, "Load")
 | |
|         playBtn = wx.Button(pnl, -1, "Play")
 | |
|         pauseBtn= wx.Button(pnl, -1, "Pause")
 | |
|         stopBtn = wx.Button(pnl, -1, "Stop")
 | |
| 
 | |
|         self.Bind(wx.EVT_BUTTON, self.OnBtnSelect, selectBtn)
 | |
|         self.Bind(wx.EVT_BUTTON, self.OnBtnLoad, loadBtn)
 | |
|         self.Bind(wx.EVT_BUTTON, self.OnBtnPlay, playBtn)
 | |
|         self.Bind(wx.EVT_BUTTON, self.OnBtnPause, pauseBtn)
 | |
|         self.Bind(wx.EVT_BUTTON, self.OnBtnStop, stopBtn)
 | |
|         
 | |
| 
 | |
|         vbox = wx.BoxSizer(wx.VERTICAL)
 | |
|         vbox.AddF(self.mc, wx.SizerFlags(1).Expand().Border(wx.ALL, 5))
 | |
|         hbox = wx.BoxSizer(wx.HORIZONTAL)
 | |
|         hbox.AddF(selectBtn, wx.SizerFlags().Border())
 | |
|         hbox.AddF(loadBtn, wx.SizerFlags().Border())
 | |
|         hbox.AddF(playBtn, wx.SizerFlags().Border())
 | |
|         hbox.AddF(pauseBtn, wx.SizerFlags().Border())
 | |
|         hbox.AddF(stopBtn, wx.SizerFlags().Border())
 | |
|         vbox.Add(hbox)        
 | |
|         pnl.SetSizer(vbox)
 | |
| 
 | |
|         sizer = wx.BoxSizer()
 | |
|         sizer.AddF(pnl, wx.SizerFlags(1).Expand())
 | |
|         self.SetSizer(sizer)
 | |
|         wx.CallLater(200, self.SetClientSize, pnl.GetBestSize())
 | |
| 
 | |
|         self.timer = wx.Timer(self)
 | |
|         self.Bind(wx.EVT_TIMER, self.OnShowStatus)
 | |
|         self.timer.Start(500)
 | |
|         
 | |
| 
 | |
|     def OnBtnSelect(self, evt):
 | |
|         name = wx.FileSelector("Choose media file")
 | |
|         if name:
 | |
|             self.fn = name
 | |
| 
 | |
|     def OnBtnLoad(self, evt):
 | |
|         print "Loading %s..." % self.fn
 | |
|         print "Load:", self.mc.Load(self.fn)
 | |
|         
 | |
|     def OnBtnPlay(self, evt):
 | |
|         print "Play:", self.mc.Play()
 | |
|         
 | |
|     def OnBtnPause(self, evt):
 | |
|         print "Pause:", self.mc.Pause()
 | |
|         
 | |
|     def OnBtnStop(self, evt):
 | |
|         print "Stop:", self.mc.Stop()
 | |
|         
 | |
| 
 | |
|     def OnShowStatus(self, evt):
 | |
|         current = self.mc.Tell()
 | |
|         length = self.mc.Length()
 | |
| 
 | |
|         dl_current = self.mc.GetDownloadProgress()
 | |
|         dl_length = self.mc.GetDownloadTotal()
 | |
| 
 | |
|         cw,ch = self.mc.GetSize()
 | |
|         bw,bh = self.mc.GetBestSize()
 | |
| 
 | |
|         vol = self.mc.GetVolume()
 | |
|         
 | |
|         stateMap = { wx.media.MEDIASTATE_PLAYING : "Playing",
 | |
|                      wx.media.MEDIASTATE_PAUSED  : "Paused",
 | |
|                      wx.media.MEDIASTATE_STOPPED : "Stopped", }
 | |
|         state = stateMap.get(self.mc.GetState(), "Other")
 | |
| 
 | |
|         st = "Size:%d,%d  BSize:%d,%d  Pos:%d/%d  DL:%d/%d  V:%d  %s" % (
 | |
|             cw,ch, bw,bh, current, length, dl_current, dl_length, vol*100, state)
 | |
|         
 | |
|         self.SetStatusText(st)
 | |
| 
 | |
|         
 | |
| 
 | |
|     def OnMediaPlay(self, evt):
 | |
|         print "OnMediaPlay"
 | |
| 
 | |
|     def OnMediaPause(self, evt):
 | |
|         print "OnMediaPause"
 | |
| 
 | |
|     def OnMediaStop(self, evt):
 | |
|         print "OnMediaStop"
 | |
| 
 | |
|     def OnMediaFinished(self, evt):
 | |
|         print "OnMediaFinished"
 | |
| 
 | |
|     def OnMediaLoaded(self, evt):
 | |
|         print "OnMediaLoaded"
 | |
| 
 | |
|         
 | |
| 
 | |
| app = InspectableApp(False)
 | |
| frm = TestFrame(None, title="simple wxMediaCtrl test")
 | |
| frm.Show()
 | |
| app.MainLoop()
 | |
| 
 |