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

Source Code for Module advene.model.core.view

 1  """ 
 2  I define the class of views. 
 3  """ 
 4   
 5  from advene.model.core.element import PackageElement, VIEW, RESOURCE 
 6  from advene.model.core.content import WithContentMixin 
 7  from advene.model.exceptions import NoContentHandlerError 
 8  from advene.model.view.register import iter_view_handlers 
9 10 -class View(PackageElement, WithContentMixin):
11 12 ADVENE_TYPE = VIEW 13 14 # attributes that do not prevent views to be volatile 15 _handler = None 16 17 @classmethod
18 - def instantiate(cls, owner, id, mimetype, model, url, *args):
19 r = super(View, cls).instantiate(owner, id, mimetype, model, url, *args) 20 r._instantiate_content(mimetype, model, url) 21 return r
22 23 @classmethod
24 - def create_new(cls, owner, id, mimetype, model, url):
30
31 - def _update_content_handler(self):
32 "This overrides WithContentMixin._update_content_hanlder" 33 m = self.content_mimetype 34 cmax = 0; hmax = None 35 for h in iter_view_handlers(): 36 c = h.claims_for_handle(m) 37 if c > cmax: 38 cmax, hmax = c, h 39 if cmax > 0: 40 self._handler = hmax 41 else: 42 # TODO issue a user warning ? 43 self._handler = None 44 super(View, self)._update_content_handler()
45
46 - def apply_to(self, obj):
47 h = self._handler 48 if h is None: 49 raise NoContentHandlerError(self._get_uriref()) 50 return h.apply_to(self, obj)
51 52 @property
53 - def output_mimetype(self):
54 h = self._handler 55 if h is None: 56 raise NoContentHandlerError(self._get_uriref()) 57 return h.get_output_mimetype(self)
58