source: main/waeup.sirp/trunk/src/waeup/sirp/widgets/objectwidget.py @ 7249

Last change on this file since 7249 was 7196, checked in by Henrik Bettermann, 13 years ago

More copyright adjustments (job finished).

  • Property svn:keywords set to Id
File size: 2.6 KB
RevLine 
[7196]1## $Id: objectwidget.py 7196 2011-11-25 07:44:52Z henrik $
[5275]2##
[7196]3## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
[5275]4## This program is free software; you can redistribute it and/or modify
5## it under the terms of the GNU General Public License as published by
6## the Free Software Foundation; either version 2 of the License, or
7## (at your option) any later version.
[7196]8##
[5275]9## This program is distributed in the hope that it will be useful,
10## but WITHOUT ANY WARRANTY; without even the implied warranty of
11## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12## GNU General Public License for more details.
[7196]13##
[5275]14## You should have received a copy of the GNU General Public License
15## along with this program; if not, write to the Free Software
16## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17##
[5299]18"""A widget to display IObject instances in forms.
[5275]19"""
20from zope.browserpage import ViewPageTemplateFile
21from zope.formlib.interfaces import IDisplayWidget
22from zope.formlib.objectwidget import ObjectWidget, ObjectWidgetView
23from zope.formlib.utility import setUpWidgets
[5310]24from zope.interface import implements, implementsOnly
[5275]25from zope.schema import getFieldNamesInOrder
26
[5299]27class WAeUPObjectWidgetView(ObjectWidgetView):
28    template = ViewPageTemplateFile('objectwidget.pt')
[5275]29
[5299]30class WAeUPObjectWidget(ObjectWidget):
[5275]31
32    def __init__(self, context, request, factory, **kw):
33        #super(ResultsEntryWidget, self).__init__(context, request)
34        super(ObjectWidget, self).__init__(context, request)
35
36        # define view that renders the widget
37        self.view = self._getView(request)
38
39        # factory used to create content that this widget (field)
40        # represents
41        self.factory = factory
42
43        # handle foo_widget specs being passed in
44        self.names = getFieldNamesInOrder(self.context.schema)
45        for k, v in kw.items():
46            if k.endswith('_widget'):
47                setattr(self, k, v)
48
49        # set up my subwidgets
50        self._setUpWidgets()
51
52    def subwidgets(self):
53        result = [self.getSubWidget(name) for name in self.names]
54        return result
55
56    def _setUpWidgets(self):
57        return self._setUpEditWidgets()
58
59    def _getView(self, request):
[5306]60        return WAeUPObjectWidgetView(self, request)
[5275]61
[5300]62class WAeUPObjectDisplayWidget(WAeUPObjectWidget):
[5275]63
[5310]64    implementsOnly(IDisplayWidget)
65
[5275]66    def _setUpDisplayWidgets(self):
67        # subwidgets need a new name
68        setUpWidgets(self, self.context.schema, IDisplayWidget,
69                         prefix=self.name, names=self.names,
70                         context=self.context)
71
72    def _setUpWidgets(self):
73        return self._setUpDisplayWidgets()
Note: See TracBrowser for help on using the repository browser.