X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=extras%2Fdbus-vlc.py;h=673bbf43e15edf776f61f08f809c37d0d80c36fa;hb=ec49740468c885f4c3dfc76754088fbf68bb502b;hp=dab06d525f1d8deb24555ffbc964a5119d541e8e;hpb=05a1f4d7b373e3743be03e4cbd21d98e787b199a;p=vlc diff --git a/extras/dbus-vlc.py b/extras/dbus-vlc.py index dab06d525f..673bbf43e1 100755 --- a/extras/dbus-vlc.py +++ b/extras/dbus-vlc.py @@ -20,6 +20,13 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. # +# +# NOTE: this controller is a SAMPLE, and thus doesn't implement all the D-Bus Media Player specification. http://wiki.videolan.org/index.php/DBus-spec +# This is an unfinished document (on the 12/06/2006) and has been designed to be as general as possible. +# So don't expect that much from this, but basic capabilities should work out of the box (Play/Pause/Next/Add) +# +# Also notice it has been designed first for a previous specificaiton, and thus some code may not work/be disabled +# import dbus import dbus.glib import gtk @@ -30,50 +37,53 @@ import os global position global timer -global playing +#global playing def itemchange_handler(item): gobject.timeout_add( 2000, timeset) l_item.set_text(item) bus = dbus.SessionBus() -remote_object = bus.get_object("org.videolan.vlc", "/org/videolan/vlc") -interface = dbus.Interface(remote_object, "org.videolan.vlc") +player_o = bus.get_object("org.freedesktop.MediaPlayer", "/Player") +tracklist_o = bus.get_object("org.freedesktop.MediaPlayer", "/TrackList") + +tracklist = dbus.Interface(tracklist_o, "org.freedesktop.MediaPlayer") +player = dbus.Interface(player_o, "org.freedesktop.MediaPlayer") try: - remote_object.connect_to_signal("ItemChange", itemchange_handler, dbus_interface="org.videolan.vlc") + player_o.connect_to_signal("TrackChange", itemchange_handler, dbus_interface="org.freedesktop.MediaPlayer") except: True -def AddMRL(widget): +def AddTrack(widget): mrl = e_mrl.get_text() if mrl != None and mrl != "": - interface.AddMRL(mrl, True) + tracklist.AddTrack(mrl, True) else: mrl = bt_file.get_filename() if mrl != None and mrl != "": - interface.AddMRL("directory://" + mrl, True) + tracklist.AddTrack("directory://" + mrl, True) def Next(widget): - interface.Next(reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) + player.Next(reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) update(0) def Prev(widget): - interface.Prev(reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) + player.Prev(reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) update(0) def Stop(widget): - interface.Stop(reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) + player.Stop(reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) update(0) def update(widget): - itemchange_handler(str(interface.GetPlayingItem())) - vol.set_value(interface.VolumeGet()) +# itemchange_handler(str(player.GetPlayingItem())) + vol.set_value(player.VolumeGet()) GetPlayStatus(0) def GetPlayStatus(widget): global playing - status = str(interface.GetPlayStatus()) - if status == "playing": + status = str(player.GetStatus()) + if status == 0: img_bt_toggle.set_from_stock("gtk-media-pause", gtk.ICON_SIZE_SMALL_TOOLBAR) playing = True else: @@ -81,26 +91,25 @@ def GetPlayStatus(widget): playing = False def Quit(widget): - interface.Quit(reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) + player.Quit(reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) l_item.set_text("") -def TogglePause(widget): - if interface.TogglePause() == True: - img_bt_toggle.set_from_stock(gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_SMALL_TOOLBAR) - else: - img_bt_toggle.set_from_stock(gtk.STOCK_MEDIA_PLAY, gtk.ICON_SIZE_SMALL_TOOLBAR) +def Pause(widget): + player.Pause() +# img_bt_toggle.set_from_stock(gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_SMALL_TOOLBAR) +# img_bt_toggle.set_from_stock(gtk.STOCK_MEDIA_PLAY, gtk.ICON_SIZE_SMALL_TOOLBAR) update(0) def volchange(widget, data): - interface.VolumeSet(vol.get_value_as_int(), reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) + player.VolumeSet(vol.get_value_as_int(), reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) def timechange(widget, x=None, y=None): - interface.PositionSet(time_s.get_value(), reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) + player.PositionSet(time_s.get_value(), reply_handler=(lambda *args: None), error_handler=(lambda *args: None)) def timeset(): - global playing - time_s.set_value(interface.PositionGet()) - return playing +# global playing + time_s.set_value(player.PositionGet()) +# return playing def expander(widget): if exp.get_expanded() == False: @@ -177,8 +186,8 @@ menu.attach_to_widget(eventbox,None) bt_close.connect('clicked', destroy) bt_quit.connect('clicked', Quit) -bt_mrl.connect('clicked', AddMRL) -bt_toggle.connect('clicked', TogglePause) +bt_mrl.connect('clicked', AddTrack) +bt_toggle.connect('clicked', Pause) bt_next.connect('clicked', Next) bt_prev.connect('clicked', Prev) bt_stop.connect('clicked', Stop)