|
1 # |
|
2 # Copyright (c) 2012 Thierry Florac <tflorac AT onf.fr> |
|
3 # All Rights Reserved. |
|
4 # |
|
5 |
|
6 |
|
7 # import standard packages |
|
8 |
|
9 # import Zope3 interfaces |
|
10 from z3c.form.interfaces import IFormLayer, IFieldWidget |
|
11 |
|
12 # import local interfaces |
|
13 from ztfy.baseskin.interfaces.form import IResetWidget, ICloseWidget |
|
14 from ztfy.baseskin.schema import IResetButton, ICloseButton |
|
15 |
|
16 # import Zope3 packages |
|
17 from z3c.form.action import Action |
|
18 from z3c.form.browser.submit import SubmitWidget |
|
19 from z3c.form.button import ButtonAction |
|
20 from z3c.form.widget import FieldWidget |
|
21 from zope.component import adapter, adapts |
|
22 from zope.interface import implementer, implementsOnly |
|
23 |
|
24 # import local packages |
|
25 |
|
26 |
|
27 # |
|
28 # Reset button widget and action |
|
29 # |
|
30 |
|
31 class ResetWidget(SubmitWidget): |
|
32 """A reset button of a form.""" |
|
33 |
|
34 implementsOnly(IResetWidget) |
|
35 |
|
36 klass = u'reset-widget' |
|
37 css = u'reset' |
|
38 |
|
39 |
|
40 @adapter(IResetButton, IFormLayer) |
|
41 @implementer(IFieldWidget) |
|
42 def ResetFieldWidget(field, request): |
|
43 reset = FieldWidget(field, ResetWidget(request)) |
|
44 reset.value = field.title |
|
45 return reset |
|
46 |
|
47 |
|
48 class ResetButtonAction(ResetWidget, ButtonAction): |
|
49 """Reset button action""" |
|
50 |
|
51 adapts(IFormLayer, IResetButton) |
|
52 |
|
53 def __init__(self, request, field): |
|
54 Action.__init__(self, request, field.title) |
|
55 ResetWidget.__init__(self, request) |
|
56 self.field = field |
|
57 |
|
58 |
|
59 # |
|
60 # Close button widget and action |
|
61 # |
|
62 |
|
63 class CloseWidget(SubmitWidget): |
|
64 """A dialog close button""" |
|
65 |
|
66 implementsOnly(ICloseWidget) |
|
67 |
|
68 klass = u'close-widget' |
|
69 css = u'close' |
|
70 |
|
71 |
|
72 @adapter(ICloseButton, IFormLayer) |
|
73 @implementer(IFieldWidget) |
|
74 def CloseFieldWidget(field, request): |
|
75 close = FieldWidget(field, CloseWidget(request)) |
|
76 close.value = field.title |
|
77 return close |
|
78 |
|
79 |
|
80 class CloseButtonAction(CloseWidget, ButtonAction): |
|
81 """Close button action""" |
|
82 |
|
83 adapts(IFormLayer, ICloseButton) |
|
84 |
|
85 def __init__(self, request, field): |
|
86 Action.__init__(self, request, field.title) |
|
87 CloseWidget.__init__(self, request) |
|
88 self.field = field |