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
15 _handler = None
16
17 @classmethod
18 - def instantiate(cls, owner, id, mimetype, model, url, *args):
22
23 @classmethod
24 - def create_new(cls, owner, id, mimetype, model, url):
25 model_id = PackageElement._check_reference(owner, model, RESOURCE)
26 cls._check_content_cls(mimetype, model_id, url)
27 owner._backend.create_view(owner._id, id, mimetype, model_id, url)
28 r = cls.instantiate(owner, id, mimetype, model_id, url)
29 return r
30
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
43 self._handler = None
44 super(View, self)._update_content_handler()
45
51
52 @property
58