Package advene :: Package model :: Package core :: Module media
[hide private]
[frames] | no frames]

Source Code for Module advene.model.core.media

  1  """ 
  2  I define the class of medias. 
  3  """ 
  4   
  5  from advene.model.consts import ADVENE_NS_PREFIX 
  6  from advene.model.core.element import PackageElement, MEDIA 
  7  from advene.util.autoproperty import autoproperty 
  8   
  9  FOREF_PREFIX = "%s%s" % (ADVENE_NS_PREFIX, "frame_of_reference/") 
 10  DEFAULT_FOREF = FOREF_PREFIX + "ms;o=0" 
11 12 -class Media(PackageElement):
13 14 ADVENE_TYPE = MEDIA 15 16 # attributes that do not prevent medias to be volatile 17 _url = None 18 _frame_of_reference = None 19 _unit = None 20 _origin = None 21 22 @classmethod
23 - def instantiate(cls, owner, id, url, frame_of_reference, *args):
24 r = super(Media, cls).instantiate(owner, id, *args) 25 r._url = url 26 r._frame_of_reference = frame_of_reference 27 r._update_unit_and_origin() 28 return r
29 30 @classmethod
31 - def create_new(cls, owner, id, url, frame_of_reference, *a):
35 36 @autoproperty
37 - def _get_url(self):
38 """ 39 The URL from which the media can be fetched. 40 """ 41 return self._url
42 43 @autoproperty
44 - def _set_url(self, url):
45 self.emit("pre-modified::url", "url", url) 46 self._url = url 47 self.__store() 48 self.emit("modified::url", "url", url)
49 50 @autoproperty
51 - def _get_frame_of_reference(self):
52 return self._frame_of_reference
53 54 @autoproperty
55 - def _set_frame_of_reference(self, frame_of_reference):
56 self.emit("pre-modified::frame_of_reference", 57 "frame_of_reference", frame_of_reference) 58 self._frame_of_reference = frame_of_reference 59 self.__store() 60 self._update_unit_and_origin() 61 self.emit("modified::frame_of_reference", 62 "frame_of_reference", frame_of_reference)
63 64 @autoproperty
65 - def _get_unit(self):
66 """The time-unit of this media if known, else None. 67 68 The unit is known if the frame of reference is in the default Advene 69 namespace. 70 71 NB: this is specific to the cinelab application model. 72 """ 73 return self._unit
74 75 @autoproperty
76 - def _get_origin(self):
77 """The time-origin of this media if known, else None. 78 79 The origin is known if the frame of reference is in the default Advene 80 namespace. 81 82 NB: this is specific to the cinelab application model. 83 """ 84 return self._origin
85
86 - def _update_unit_and_origin(self):
87 foref = self._frame_of_reference 88 if foref.startswith(FOREF_PREFIX): 89 foref = foref[len(FOREF_PREFIX):] 90 self._unit, params = foref.split(";") 91 params = dict( i.split("=") for i in params.split("&") ) 92 self._origin = params.get("o", 0) 93 else: 94 self._unit = None 95 self._origin = None
96 97
98 - def __store(self):
99 o = self._owner 100 o._backend.update_media(o._id, self.id, self._url, 101 self._frame_of_reference)
102