Author: dmeyer
Date: Sun Feb 17 15:10:39 2008
New Revision: 3113

Log:
API cleanup, part 1

Modified:
   trunk/popcorn/src/backends/base.py
   trunk/popcorn/src/backends/gstreamer/child.py
   trunk/popcorn/src/backends/gstreamer/player.py
   trunk/popcorn/src/backends/mplayer/player.py
   trunk/popcorn/src/backends/xine/player.py
   trunk/popcorn/src/generic.py

Modified: trunk/popcorn/src/backends/base.py
==============================================================================
--- trunk/popcorn/src/backends/base.py  (original)
+++ trunk/popcorn/src/backends/base.py  Sun Feb 17 15:10:39 2008
@@ -37,6 +37,7 @@
 
 # kaa imports
 import kaa
+from kaa.utils import property
 
 # kaa.popcorn imports
 from kaa.popcorn.ptypes import *
@@ -72,18 +73,18 @@
             "stream_changed": kaa.Signal(),
             "frame": kaa.Signal(),
             "osd_configure": kaa.Signal(),
+            "state_changed": kaa.Signal(),
         }
-        self._state_changed = kaa.Signal()
-        self._state_object = STATE_IDLE
+        self._state = STATE_IDLE
         self._window = None
-        self._size = None
+        self._position = 0.0
         self._properties = properties
         self._instance_id = "popcorn-%d-%d" % (os.getpid(), 
self._instance_count)
         MediaPlayer._instance_count += 1
 
-        # some variables for the inherting class
-        self._position_value = 0.0
-        self._streaminfo = {}
+        # some variables for the inherting class the generic player will
+        # access at some point.
+        self.streaminfo = {}
 
         # shared memory keys
         key = md5.md5(self._instance_id + "osd").hexdigest()[:7]
@@ -95,71 +96,74 @@
 
         self._property_callbacks = {}
         self._property_delayed = []
-        for name, func in [ (func, getattr(self, func)) for func in dir(self) 
]:
+        for name in dir(self):
+            func = getattr(self.__class__, name, None)
             if callable(func) and hasattr(func, '_runtime_policy'):
+                func = getattr(self, name)
                 name = name[10:].replace('_', '-')
                 self._property_callbacks[name] = kaa.WeakCallback(func)
 
-    #
-    # state handling
-    #
 
-    def get_state(self):
+    def __repr__(self):
+        """
+        For debugging only.
+        """
+        c = str(self.__class__)
+        return '<popcorn%s' % c[c.rfind('.'):]
+
+
+    @property
+    def state(self):
         """
         Get current state.
         """
-        return self._state_object
+        return self._state
 
 
-    def _set_state(self, state):
+    @state.setter
+    def state(self, state):
         """
         Set state and emit 'failed', 'start' or 'end' signal if needed.
         """
-        if self._state_object == state:
+        if self._state == state:
             return
-        if state == STATE_IDLE and self._state_object == STATE_SHUTDOWN:
+        if state == STATE_IDLE and self._state == STATE_SHUTDOWN:
             return
-        old_state = self._state_object
-        self._state_object = state
+        old_state = self._state
+        self._state = state
         if state == STATE_PLAYING and self._property_delayed:
             # now set changed properties
             for key, value in self._property_delayed:
                 self.set_property(key, value)
             self._property_delayed = []
-        self._state_changed.emit(old_state, state)
-
-    _state = property(get_state, _set_state, None, 'state of the player')
-
+        self.signals['state_changed'].emit(old_state, state)
 
-    #
-    # position handling
-    #
 
-    def get_position(self):
+    @property
+    def position(self):
         """
         Get current playing position.
         """
-        return self._position_value
+        return self._position
 
 
-    def _set_position(self, pos):
+    @position.setter
+    def position(self, pos):
         """
         Set position and emit 'elapsed' signal.
         """
-        if self._position_value == pos:
+        if self._position == pos:
             return
-        self._position_value = pos
+        self._position = pos
         self.signals['elapsed'].emit(pos)
 
-    # position property based on get_state and _set_state
-    _position = property(get_position, _set_position, None, 'player position')
-
 
     #
-    # internal use
+    # used only by inheriting player
     #
 
-    def _get_aspect(self):
+    @property
+    def aspect(self):
         """
         Get aspect ration values. Returns a tuple monitoraspect and a
         tuple with the fullscreen pixel size.
@@ -173,22 +177,15 @@
         return aspect, size
 
 
-    def _get_pixel_aspect(self):
+    @property
+    def pixel_aspect(self):
         """
         Get pixel aspect ratio based on monitoraspect and window size
         """
-        a, fs = self._get_aspect()
+        a, fs = self.aspect
         return (float(a[0])/a[1]) / (float(fs[0])/fs[1])
 
 
-    def __repr__(self):
-        """
-        For debugging only.
-        """
-        c = str(self.__class__)
-        return '<popcorn%s' % c[c.rfind('.'):]
-
-
     #
     # interface for generic
     #
@@ -204,28 +201,14 @@
         """
         Return if the player is paused.
         """
-        return self._state == STATE_PAUSED
+        return self.state == STATE_PAUSED
 
 
     def is_playing(self):
         """
         Return if the player is playing.
         """
-        return self._state == STATE_PLAYING
-
-
-    def set_size(self, size):
-        """
-        Set a new output size.
-        """
-        self._size = size
-
-
-    def get_size(self):
-        """
-        Get output size.
-        """
-        return self._size
+        return self.state == STATE_PLAYING
 
 
     def get_capabilities(self):
@@ -249,7 +232,7 @@
     # Methods to be implemented by subclasses.
     #
 
-    # Please set self._state when something changes, signals will be send
+    # Please set self.state when something changes, signals will be send
     # by this base class when you change the state. The following states
     # are valid:
     #
@@ -323,14 +306,6 @@
         pass
 
 
-    def get_info(self):
-        """
-        Returns info about the currently playing stream, or the file that
-        has just been opened.
-        """
-        return self._streaminfo
-
-
     def nav_command(self, input):
         """
         Issue the navigation command to the player.  'input' is a string
@@ -359,7 +334,7 @@
             self._properties[prop] = value
             return
         func = self._property_callbacks[prop]
-        if self._state not in (STATE_PAUSED, STATE_PLAYING):
+        if self.state not in (STATE_PAUSED, STATE_PLAYING):
             # We are not in playback mode.
             if func._runtime_policy == DEFER_UNTIL_PLAYING:
                 # delay property call until playing

Modified: trunk/popcorn/src/backends/gstreamer/child.py
==============================================================================
--- trunk/popcorn/src/backends/gstreamer/child.py       (original)
+++ trunk/popcorn/src/backends/gstreamer/child.py       Sun Feb 17 15:10:39 2008
@@ -52,7 +52,7 @@
     def __init__(self):
         Player.__init__(self)
         self._gst = None
-        self._streaminfo = {}
+        self.streaminfo = {}
 
         # create gst object
         self._gst = gst.element_factory_make("playbin", "player")
@@ -104,8 +104,8 @@
                 value = taglist[key]
                 if not isinstance(value, (str, unicode, int, long, float)):
                     value = str(value)
-                self._streaminfo[key] = value
-            self.parent.set_streaminfo(self._streaminfo)
+                self.streaminfo[key] = value
+            self.parent.set_streaminfo(self.streaminfo)
         return True
 
 
@@ -163,7 +163,7 @@
         Open mrl.
         """
         self._gst.set_property('uri', uri)
-        self._streaminfo = {}
+        self.streaminfo = {}
         self.set_state(STATE_OPEN)
 
 
@@ -199,8 +199,8 @@
             pos = current + value * 1000000000
         if type == SEEK_ABSOLUTE:
             pos = value * 1000000000
-        if type == SEEK_PERCENTAGE and 'duration' in self._streaminfo:
-            pos = (self._streaminfo['duration'] / 100) * value
+        if type == SEEK_PERCENTAGE and 'duration' in self.streaminfo:
+            pos = (self.streaminfo['duration'] / 100) * value
         # seek now
         self._gst.seek(1.0, gst.FORMAT_TIME,
                        gst.SEEK_FLAG_FLUSH | gst.SEEK_FLAG_ACCURATE,

Modified: trunk/popcorn/src/backends/gstreamer/player.py
==============================================================================
--- trunk/popcorn/src/backends/gstreamer/player.py      (original)
+++ trunk/popcorn/src/backends/gstreamer/player.py      Sun Feb 17 15:10:39 2008
@@ -45,12 +45,12 @@
 
     def __init__(self, properties):
         super(GStreamer, self).__init__(properties)
-        self._state = STATE_NOT_RUNNING
+        self.state = STATE_NOT_RUNNING
         self._gst = None
 
 
     def _child_exited(self, exitcode):
-        self._state = STATE_NOT_RUNNING
+        self.state = STATE_NOT_RUNNING
         self._gst = None
 
 
@@ -66,11 +66,11 @@
             self._gst = ChildProcess(self, script)
             self._gst.set_stop_command(WeakCallback(self._gst.die))
             self._gst.start().connect_weak(self._child_exited)
-        self._position = 0.0
-        self._state = STATE_OPENING
+        self.position = 0.0
+        self.state = STATE_OPENING
         self._gst.open(self._mrl)
         if self._window:
-            aspect, size = self._get_aspect()
+            aspect, size = self.aspect
             self._gst.configure_video('xv', window=self._window.get_id(),
                                       aspect=aspect, size=size)
         else:
@@ -89,7 +89,7 @@
         """
         Stop playback.
         """
-        self._state = STATE_STOPPING
+        self.state = STATE_STOPPING
         self._gst.stop()
 
 
@@ -98,7 +98,7 @@
         Pause playback.
         """
         self._gst.pause()
-        self._state = STATE_PAUSED
+        self.state = STATE_PAUSED
 
 
     def resume(self):
@@ -106,7 +106,7 @@
         Resume playback.
         """
         self._gst.play()
-        self._state = STATE_PLAYING
+        self.state = STATE_PLAYING
 
 
     def release(self):
@@ -114,7 +114,7 @@
         Release audio and video devices.
         """
         if self._gst:
-            self._state = STATE_SHUTDOWN
+            self.state = STATE_SHUTDOWN
             self._gst.die()
 
 

Modified: trunk/popcorn/src/backends/mplayer/player.py
==============================================================================
--- trunk/popcorn/src/backends/mplayer/player.py        (original)
+++ trunk/popcorn/src/backends/mplayer/player.py        Sun Feb 17 15:10:39 2008
@@ -155,7 +155,7 @@
 
     def __init__(self, properties):
         super(MPlayer, self).__init__(properties)
-        self._state = STATE_NOT_RUNNING
+        self.state = STATE_NOT_RUNNING
         self._mp_cmd = config.mplayer.path
         if not self._mp_cmd:
             self._mp_cmd = kaa.utils.which("mplayer")
@@ -182,7 +182,7 @@
 
     def _handle_mp_info(self, info, exception=None, traceback=None):
         if exception is not None:
-            self._state = STATE_NOT_RUNNING
+            self.state = STATE_NOT_RUNNING
             # TODO: handle me
             raise info
         self._mp_info = info
@@ -202,24 +202,24 @@
         if line.startswith("V:") or line.startswith("A:"):
             m = MPlayer.RE_STATUS.search(line)
             if m:
-                old_pos = self._position
+                old_pos = self.position
                 p = (m.group(1) or m.group(2)).replace(",", ".")
-                self._position = float(p)
-                # if self._position - old_pos < 0 or \
-                # self._position - old_pos > 1:
-                # self.signals["seek"].emit(self._position)
+                self.position = float(p)
+                # if self.position - old_pos < 0 or \
+                # self.position - old_pos > 1:
+                # self.signals["seek"].emit(self.position)
 
                 # XXX this logic won't work with seek-while-paused patch; state
                 # will be "playing" after a seek.
-                if self._state == STATE_PAUSED:
-                    self._state = STATE_PLAYING
-                if self._state == STATE_OPEN:
+                if self.state == STATE_PAUSED:
+                    self.state = STATE_PLAYING
+                if self.state == STATE_OPEN:
                     self.set_frame_output_mode()
-                    self._state = STATE_PLAYING
+                    self.state = STATE_PLAYING
                     self.signals["stream_changed"].emit()
 
         elif line.startswith("  =====  PAUSE"):
-            self._state = STATE_PAUSED
+            self.state = STATE_PAUSED
 
         elif line.startswith("ID_") and line.find("=") != -1:
             attr, value = line.split('=', 1)
@@ -237,21 +237,21 @@
                      "LENGTH": ("length", float),
                      "FILENAME": ("filename", str) }
             if attr in info:
-                self._streaminfo[info[attr][0]] = info[attr][1](value)
+                self.streaminfo[info[attr][0]] = info[attr][1](value)
 
         elif line.startswith("Movie-Aspect"):
             aspect = line[16:].split(":")[0].replace(",", ".")
             if aspect[0].isdigit():
-                self._streaminfo["aspect"] = float(aspect)
+                self.streaminfo["aspect"] = float(aspect)
 
         elif line.startswith("VO:"):
             m = re.search("=> (\d+)x(\d+)", line)
             if m:
                 vo_w, vo_h = int(m.group(1)), int(m.group(2))
-                if "aspect" not in self._streaminfo or \
-                       self._streaminfo["aspect"] == 0:
+                if "aspect" not in self.streaminfo or \
+                       self.streaminfo["aspect"] == 0:
                     # No aspect defined, so base it on vo size.
-                    self._streaminfo["aspect"] = vo_w / float(vo_h)
+                    self.streaminfo["aspect"] = vo_w / float(vo_h)
 
         elif line.startswith("overlay:") and line.find("reusing") == -1:
             m = re.search("(\d+)x(\d+)", line)
@@ -280,14 +280,14 @@
             self.set_frame_output_mode()  # Sync
 
         elif line.startswith("EOF code"):
-            if self._state in (STATE_PLAYING, STATE_PAUSED):
+            if self.state in (STATE_PLAYING, STATE_PAUSED):
                 # The player may be idle bow, but we can't set the
                 # state. If we do, generic will start a new file while
                 # the mplayer process is still running and that does
                 # not work. Unless we reuse mplayer proccesses we
                 # don't react on EOF and only handle the dead
                 # proccess.
-                # self._state = STATE_IDLE
+                # self.state = STATE_IDLE
                 pass
 
         elif line.startswith("FATAL:"):
@@ -296,7 +296,7 @@
 
     def _child_exited(self, exitcode):
         log.info('mplayer exited')
-        self._state = STATE_NOT_RUNNING
+        self.state = STATE_NOT_RUNNING
 
 
     def _is_alive(self):
@@ -312,7 +312,7 @@
         """
         Open media.
         """
-        if self.get_state() != STATE_NOT_RUNNING:
+        if self.state != STATE_NOT_RUNNING:
             raise RuntimeError('mplayer not in STATE_NOT_RUNNING')
 
         args = []
@@ -330,7 +330,7 @@
 
         self._media = media
         self._media.mplayer_args = args
-        self._state = STATE_OPENING
+        self.state = STATE_OPENING
 
         # We have a problem at this point. The 'open' function is used to
         # open the stream and provide information about it. After that, the
@@ -348,7 +348,7 @@
         """
         mplayer -identify finished
         """
-        self._state = STATE_OPEN
+        self.state = STATE_OPEN
 
 
     def configure_video(self):
@@ -364,7 +364,7 @@
         # some problems when we don't have an 1:1 pixel aspect
         # ratio on the monitor and using software scaler.
 
-        aspect, dsize = self._get_aspect()
+        aspect, dsize = self.aspect
         size = self._window.get_size()
         # This may be needed for some non X based displays
         args.add(screenw=size[0], screenh=size[1])
@@ -443,8 +443,8 @@
 
         if config.audio.driver == 'alsa':
             args[-1] += ":noblock"
-            n_channels = self._streaminfo.get('channels')
-            if self._streaminfo.get('acodec') in ('a52', 'hwac3', 'ffdts', 
'hwdts'):
+            n_channels = self.streaminfo.get('channels')
+            if self.streaminfo.get('acodec') in ('a52', 'hwac3', 'ffdts', 
'hwdts'):
                 device = config.audio.device.passthrough
             elif n_channels == 1:
                 device = config.audio.device.mono
@@ -562,7 +562,7 @@
         """
         if self._mplayer:
             self._mplayer.stop()
-            self._state = STATE_SHUTDOWN
+            self.state = STATE_SHUTDOWN
 
 
     def pause(self):

Modified: trunk/popcorn/src/backends/xine/player.py
==============================================================================
--- trunk/popcorn/src/backends/xine/player.py   (original)
+++ trunk/popcorn/src/backends/xine/player.py   Sun Feb 17 15:10:39 2008
@@ -103,7 +103,7 @@
             except kaa.shm.error:
                 pass
             self._frame_shmem = None
-        self._state = STATE_NOT_RUNNING
+        self.state = STATE_NOT_RUNNING
 
 
     #
@@ -111,28 +111,28 @@
     #
 
     def _child_set_status(self, pos, time, length, status, speed):
-        old_pos = self._position
-        if self.get_state() in (STATE_PAUSED, STATE_PLAYING, STATE_OPEN) and 
time is not None:
-            self._position = float(time)
+        old_pos = self.position
+        if self.state in (STATE_PAUSED, STATE_PLAYING, STATE_OPEN) and time is 
not None:
+            self.position = float(time)
         if length is not None:
-            self._streaminfo["length"] = length
+            self.streaminfo["length"] = length
 
         if status == 2:
-            if self.get_state() not in (STATE_PAUSED, STATE_PLAYING):
-                self._state = STATE_PLAYING
-            if speed == xine.SPEED_PAUSE and self.get_state() != STATE_PAUSED:
-                self._state = STATE_PAUSED
-            elif speed > xine.SPEED_PAUSE and self.get_state() != 
STATE_PLAYING:
-                prev_state = self.get_state()
-                self._state = STATE_PLAYING
+            if self.state not in (STATE_PAUSED, STATE_PLAYING):
+                self.state = STATE_PLAYING
+            if speed == xine.SPEED_PAUSE and self.state != STATE_PAUSED:
+                self.state = STATE_PAUSED
+            elif speed > xine.SPEED_PAUSE and self.state != STATE_PLAYING:
+                prev_state = self.state
+                self.state = STATE_PLAYING
             # TODO:
-            # if self._position - old_pos < 0 or self._position - old_pos > 1:
-            # self.signals["seek"].emit(self._position)
+            # if self.position - old_pos < 0 or self.position - old_pos > 1:
+            # self.signals["seek"].emit(self.position)
         elif status in (0, 1):
-            if self.get_state() in (STATE_PAUSED, STATE_PLAYING):
+            if self.state in (STATE_PAUSED, STATE_PLAYING):
                 # Stream ended.
                 log.debug('xine stream ended')
-                self._state = STATE_IDLE
+                self.state = STATE_IDLE
 
 
     def _child_osd_configure(self, width, height, aspect):
@@ -161,14 +161,14 @@
     def _child_set_streaminfo(self, status, info):
         if not status:
             # failed playback
-            self._state = STATE_IDLE
+            self.state = STATE_IDLE
             return
 
-        changed = info != self._streaminfo
-        self._streaminfo = info
+        changed = info != self.streaminfo
+        self.streaminfo = info
 
-        if self._state == STATE_OPENING:
-            self._state = STATE_OPEN
+        if self.state == STATE_OPENING:
+            self.state = STATE_OPEN
 
         if changed:
             self.signals["stream_changed"].emit()
@@ -181,8 +181,8 @@
 
     def _child_play_stopped(self):
         log.debug('xine stopped')
-        if not self._state in (STATE_NOT_RUNNING, STATE_SHUTDOWN):
-            self._state = STATE_IDLE
+        if not self.state in (STATE_NOT_RUNNING, STATE_SHUTDOWN):
+            self.state = STATE_IDLE
 
 
     #
@@ -229,8 +229,7 @@
                 elif self._xine_configured:
                     # No previous window, must reconfigure vo.
                     self._xine.configure_video(window.get_id(), 
window.get_size(),
-                                               self._get_pixel_aspect(),
-                                               config.video.colorkey)
+                                               self.pixel_aspect, 
config.video.colorkey)
 
         # Sends a window_changed command to slave.
         if window and self._xine:
@@ -245,7 +244,7 @@
         self._xine.set_config(config)
         if self._window:
             self._xine.configure_video(self._window.get_id(), 
self._window.get_size(),
-                                       self._get_pixel_aspect(), 
config.video.colorkey)
+                                       self.pixel_aspect, 
config.video.colorkey)
         else:
             self._xine.configure_video(None, None, None, None)
         self._xine.configure_audio(config.audio.driver)
@@ -265,10 +264,10 @@
             self._child_spawn()
 
         self.configure()
-        self._position = 0.0
+        self.position = 0.0
         log.debug('xine open %s' % self._mrl)
         self._xine.open(self._mrl)
-        self._state = STATE_OPENING
+        self.state = STATE_OPENING
 
 
     def play(self):
@@ -285,7 +284,7 @@
         Stop playback.
         """
         log.debug('xine stop')
-        self._state = STATE_STOPPING
+        self.state = STATE_STOPPING
         self._xine.stop()
 
 
@@ -308,7 +307,7 @@
         Release audio and video devices.
         """
         if self._xine:
-            self._state = STATE_SHUTDOWN
+            self.state = STATE_SHUTDOWN
             self._xine.die()
 
 
@@ -428,7 +427,7 @@
         if size != None:
             self._cur_frame_output_mode[2] = size
 
-        if self.get_state() == STATE_OPENING:
+        if self.state == STATE_OPENING:
             return
 
         vo, notify, size = self._cur_frame_output_mode

Modified: trunk/popcorn/src/generic.py
==============================================================================
--- trunk/popcorn/src/generic.py        (original)
+++ trunk/popcorn/src/generic.py        Sun Feb 17 15:10:39 2008
@@ -39,6 +39,7 @@
 # kaa imports
 import kaa
 import kaa.metadata
+from kaa.utils import property
 
 # kaa.popcorn imports
 import backends.manager
@@ -86,8 +87,7 @@
     def __init__(self, window=None):
 
         self._player = None
-        self._media = None
-        self._size = (0,0)
+        self.media = None
         self.set_window(window)
 
         self._properties = {
@@ -160,15 +160,6 @@
         self._failed_player = []
 
 
-    def set_window(self, window):
-        if window:
-            self._size = window.get_size()
-        self._window = window
-        if self._player:
-            self._player.set_window(self._window)
-            self._player.set_size(self._size)
-
-
     def _state_change(self, old_state, state):
         """
         """
@@ -242,7 +233,7 @@
         for p in backends.manager.get_all_players():
             if not getattr(config, p).enabled and not p in exclude:
                 exclude.append(p)
-        cls = backends.manager.get_player_class(self._media, self._open_caps, 
exclude, player, self._window)
+        cls = backends.manager.get_player_class(self.media, self._open_caps, 
exclude, player, self._window)
 
         if self._player:
             # We already have a player. The player has to be stopped if
@@ -262,7 +253,7 @@
         if not cls:
             # No possible player.
             self.signals["failed"].emit()
-            raise PlayerError("No supported player found to play %s" % 
self._media.url)
+            raise PlayerError("No supported player found to play %s" % 
self.media.url)
 
         if self._player:
             # Reuse player
@@ -271,14 +262,14 @@
             # Create a player based on cls.
             properties = self._properties.copy()
             self._player = cls(properties)
-            self._player._state_changed.connect_weak(self._state_change)
+            
self._player.signals['state_changed'].connect_weak(self._state_change)
             for signal in self._player.signals:
-                
self._player.signals[signal].connect_weak(self.signals[signal].emit)
+                if signal in self.signals:
+                    
self._player.signals[signal].connect_weak(self.signals[signal].emit)
 
         # set some player variables
         self._player.set_window(self._window)
-        self._player.set_size(self._size)
-        self._player.open(self._media)
+        self._player.open(self.media)
 
         # wait until we reach STATE_OPEN (ready to play) or
         # STATE_IDLE or STATE_NOT_RUNNING (failed)
@@ -312,19 +303,19 @@
         if kaa.main.is_shutting_down():
             yield False
 
-        self._media = kaa.metadata.parse(mrl)
-        if not self._media:
+        self.media = kaa.metadata.parse(mrl)
+        if not self.media:
             # unable to detect, create dummy
             if '://' not in mrl:
                 mrl = 'file://' + mrl
-            self._media = kaa.metadata.Media(hash=dict(url=mrl, 
media='MEDIA_UNKNOWN'))
-        self._media.scheme = self._media.url[:self._media.url.find(':/')]
+            self.media = kaa.metadata.Media(hash=dict(url=mrl, 
media='MEDIA_UNKNOWN'))
+        self.media.scheme = self.media.url[:self.media.url.find(':/')]
 
         self._open_caps = caps
         self._failed_player = []
         self._pending = []
         yield self._open(player)
-        self.signals['open'].emit(self._player.get_info())
+        self.signals['open'].emit(self._player.streaminfo)
 
         
     @required_states(STATE_OPEN, STATE_PLAYING, STATE_PAUSED)
@@ -405,23 +396,45 @@
         self._player.seek(value, type)
 
 
+    @property
+    def position(self):
+        """
+        Get current playing position.
+        """
+        if self._player:
+            return self._player.position
+        return 0.0
+
+
     def get_position(self):
         """
         Get current playing position.
         """
+        log.warning('get_position() is DEPRECATED, use position')
         if self._player:
-            return self._player.get_position()
+            return self._player.position
         return 0.0
 
 
-    def get_info(self):
+    @property
+    def streaminfo(self):
         """
         Get information about the stream.
         """
         # FIXME: more sure the following variables can be accessed:
         # audio-track-list, subtitle-track-list, elapsed and length
         if self._player:
-            return self._player.get_info()
+            return self._player.streaminfo
+        return {}
+
+
+    def get_info(self):
+        """
+        Get information about the stream.
+        """
+        log.warning('get_info() is DEPRECATED, use streaminfo')
+        if self._player:
+            return self._player.streaminfo
         return {}
 
 
@@ -429,7 +442,8 @@
         """
         Return kaa.metadata media object of the mrl loaded.
         """
-        return self._media
+        log.warning('get_media() is DEPRECATED, use media')
+        return self.media
 
 
     def nav_command(self, input):
@@ -472,13 +486,23 @@
         return self._window
 
 
+    def set_window(self, window):
+        """
+        Set a new window for the player. Not all backends support changing
+        windows during runtime.
+        """
+        self._window = window
+        if self._player:
+            self._player.set_window(self._window)
+
+
     def _get_state(self):
         """
         Get state of the player for internal use.
         """
         if not self._player:
             return STATE_NOT_RUNNING
-        return self._player.get_state()
+        return self._player.state
 
 
     def get_state(self):
@@ -488,25 +512,9 @@
         """
         if not self._player:
             return STATE_IDLE
-        if self._player.get_state() in (STATE_NOT_RUNNING, STATE_SHUTDOWN):
+        if self._player.state in (STATE_NOT_RUNNING, STATE_SHUTDOWN):
             return STATE_IDLE
-        return self._player.get_state()
-
-
-    def get_size(self):
-        """
-        Get output size.
-        """
-        return self._size
-
-
-    def set_size(self, size):
-        """
-        Set output size.
-        """
-        self._size = size
-        if self._player:
-            return self._player.set_size(size)
+        return self._player.state
 
 
     def set_property(self, prop, value):
@@ -517,6 +525,7 @@
         # FIXME: use pending for some properties to respect the state.
         # E.g. user calls open();play();set_property() the set_property
         # should be handled in STATE_PLAYING.
+        # XXX: this can not happen if the pending command stuff will be 
removed.
         if self._player:
             return self._player.set_property(prop, value)
         self._properties[prop] = value

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to