python-examples: b1e0f2198061df517eecfa05a36706333b9ef5ee

     1: import sys, os, pygtk, gtk, gobject, pygst, gst
     2: 
     3: class GTK_Main:
     4: 
     5: 	def __init__(self):
     6: 		window = gtk.Window(gtk.WINDOW_TOPLEVEL)
     7: 		#vbox = gtk.VBox()
     8: 		#window.add(vbox)
     9: 		#hbox = gtk.HBox()
    10: 		#vbox.pack_start(hbox, False)
    11: 		#self.entry = gtk.Entry()
    12: 		#hbox.add(self.entry)
    13: 		#self.button = gtk.Button("Start")
    14: 		#hbox.pack_start(self.button, False)
    15: 		#self.button.connect("clicked", self.start_stop)
    16: 		self.movie_window = gtk.DrawingArea()
    17: 		#vbox.add(self.movie_window)
    18: 
    19: 		window.add(self.movie_window)
    20: 
    21: 		window.show_all()
    22: 
    23: 		self.player = gst.element_factory_make("playbin", "player")
    24: 		bus = self.player.get_bus()
    25: 		bus.add_signal_watch()
    26: 		bus.enable_sync_message_emission()
    27: 		bus.connect('message', self.on_message)
    28: 		bus.connect('sync-message::element', self.on_sync_message)
    29: 
    30: 
    31: 	def start_stop(self, w):
    32: 		#if self.button.get_label() == "Start":
    33: 		#	filepath = self.entry.get_text()
    34: 		#	if os.path.exists(filepath):
    35: 		#		self.button.set_label("Stop")
    36: 		#		self.player.set_property('uri', "file://" + filepath)
    37: 		#		self.player.set_state(gst.STATE_PLAYING)
    38: 		#else:
    39: 		#	self.player.set_state(gst.STATE_NULL)
    40: 		#	self.button.set_label("Start")
    41: 		self.player.set_property('uri', "file:///home/chris/Files/Music Videos/Sonata Arctica - Don't Say A Word")
    42: 		self.player.set_state(gst.STATE_PLAYING)
    43: 
    44: 	def on_message(self, bus, message):
    45: 		t = message.type
    46: 		if t == gst.MESSAGE_EOS:
    47: 			self.player.set_state(gst.STATE_NULL)
    48: 			#self.button.set_label("Start")
    49: 		elif t == gst.MESSAGE_ERROR:
    50: 			self.player.set_state(gst.STATE_NULL)
    51: 			#self.button.set_label("Start")
    52: 
    53: 	def on_sync_message(self, bus, message):
    54: 		if message.structure is None:
    55: 			return
    56: 		message_name = message.structure.get_name()
    57: 		if message_name == 'prepare-xwindow-id':
    58: 			imagesink = message.src
    59: 			imagesink.set_property('force-aspect-ratio', True)
    60: 			imagesink.set_xwindow_id(self.movie_window.window.xid)
    61: 
    62: GTK_Main()
    63: gtk.gdk.threads_init()
    64: gtk.main()

Generated by git2html.