]> git.sesse.net Git - vlc/blobdiff - extras/mpris.py
MacOSX/Framework/VLCMediaPlayer.m: Avoid some Mac OS X libvlc-specific deadlocks.
[vlc] / extras / mpris.py
index 75e62058e6ca2efc03a6cb7c4705136e27374c3c..8b157b790e7f464b52a03f1bb7c8932c346c63a7 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 # -*- coding: utf8 -*-
 #
 # Copyright © 2006-2007 Rafaël Carré <funman at videolanorg>
@@ -85,6 +85,16 @@ def TrackChange(Track):
         t = Track["title"]
     except:
         t = Track["URI"]
+    try:
+        length = Track["length"]
+    except:
+        length = 0
+    if length > 0:
+        time_s.set_range(0,Track["length"])
+        time_s.set_sensitive(True)
+    else:
+        # disable the position scale if length isn't available
+        time_s.set_sensitive(False)
     # update the labels
     l_artist.set_text(a)
     l_title.set_text(t)
@@ -110,6 +120,7 @@ def Connect(name):
     # determine if the Media Player is playing something
     if player.GetStatus() == 0:
         playing = True
+        TrackChange(player.GetMetadata())
 
     # gets its identity (name and version)
     identity = root.Identity()
@@ -171,21 +182,33 @@ def Loop(widget):
 
 # update status display
 def update(widget):
-    item = tracklist.GetMetadata(tracklist.GetCurrentTrack())
+    Track = player.GetMetadata()
     vol.set_value(player.VolumeGet())
     try: 
-        a = item["artist"]
-    except:        a = ""
+        a = Track["artist"]
+    except:
+        a = ""
     try:
-        t = item["title"]
-    except:        t = ""
+        t = Track["title"]
+    except:        
+        t = ""
     if t == "":
         try:
-            t = item["URI"]
+            t = Track["URI"]
         except:
             t = ""
     l_artist.set_text(a)
     l_title.set_text(t)
+    try:
+        length = Track["length"]
+    except:
+        length = 0
+    if length > 0:
+        time_s.set_range(0,Track["length"])
+        time_s.set_sensitive(True)
+    else:
+        # disable the position scale if length isn't available
+        time_s.set_sensitive(False)
     GetPlayStatus(0)
 
 # callback for volume change
@@ -200,7 +223,10 @@ def timechange(widget, x=None, y=None):
 def timeset():
     global playing
     if playing == True:
-        time_s.set_value(player.PositionGet())
+        try:
+            time_s.set_value(player.PositionGet())
+        except:
+            playing = False
     return True
 
 # toggle simple/full display
@@ -245,14 +271,22 @@ def icon_clicked(widget, event):
 # get playing status, modify the Play/Pause button accordingly
 def GetPlayStatus(widget):
     global playing
+    global shuffle
+    global loop
+    global repeat
     status = player.GetStatus()
-    if status == 0:
+
+    playing = status[0] == 0
+    if playing:
         img_bt_toggle.set_from_stock("gtk-media-pause", gtk.ICON_SIZE_SMALL_TOOLBAR)
-        playing = True
     else:
         img_bt_toggle.set_from_stock("gtk-media-play", gtk.ICON_SIZE_SMALL_TOOLBAR)
-        playing = False
-
+    shuffle = status[1] == 1
+    bt_shuffle.set_active( shuffle )
+    loop = status[2] == 1
+    bt_loop.set_active( loop )
+    repeat = status[3] == 1
+    bt_repeat.set_active( repeat )
 # loads glade file from the directory where the script is,
 # so we can use /path/to/mpris.py to execute it.
 import sys