[Checkins] SVN: z3c.formjs/trunk/src/z3c/formjs/jsaction. Made the
event also an argument of the handler callable.
Stephan Richter
srichter at cosmos.phy.tufts.edu
Sat Jul 7 02:37:23 EDT 2007
Log message for revision 77558:
Made the event also an argument of the handler callable.
Changed:
U z3c.formjs/trunk/src/z3c/formjs/jsaction.py
U z3c.formjs/trunk/src/z3c/formjs/jsaction.txt
-=-
Modified: z3c.formjs/trunk/src/z3c/formjs/jsaction.py
===================================================================
--- z3c.formjs/trunk/src/z3c/formjs/jsaction.py 2007-07-07 06:15:41 UTC (rev 77557)
+++ z3c.formjs/trunk/src/z3c/formjs/jsaction.py 2007-07-07 06:37:23 UTC (rev 77558)
@@ -128,30 +128,29 @@
class JSHandler(object):
zope.interface.implements(interfaces.IJSEventHandler)
- def __init__(self, button, func, event=jsevent.CLICK):
- self.button = button
- self.func = func
+ def __init__(self, event, func):
self.event = event
+ self.func = func
def __call__(self, event, selector, request):
- return self.func(selector.widget.form, selector)
+ return self.func(selector.widget.form, event, selector)
def __repr__(self):
- return '<%s for %r>' %(self.__class__.__name__, self.button)
+ return '<%s %r>' %(self.__class__.__name__, self.func)
-def handler(field, **kwargs):
+def handler(field, event=jsevent.CLICK):
"""A decorator for defining a javascript event handler."""
# As a convenience, we also accept form fields to the handler, but get the
# real field immediately
if IField.providedBy(field):
field = field.field
def createHandler(func):
- handler = JSHandler(field, func, **kwargs)
+ handler = JSHandler(event, func)
frame = sys._getframe(1)
f_locals = frame.f_locals
handlers = f_locals.setdefault('jshandlers', JSHandlers())
- handlers.addHandler(field, handler.event, handler)
+ handlers.addHandler(field, event, handler)
return handler
return createHandler
Modified: z3c.formjs/trunk/src/z3c/formjs/jsaction.txt
===================================================================
--- z3c.formjs/trunk/src/z3c/formjs/jsaction.txt 2007-07-07 06:15:41 UTC (rev 77557)
+++ z3c.formjs/trunk/src/z3c/formjs/jsaction.txt 2007-07-07 06:37:23 UTC (rev 77558)
@@ -109,11 +109,11 @@
... buttons = button.Buttons(IButtons)
...
... @jsaction.handler(buttons['hello'])
- ... def showHelloWorldMessage(self, selector):
+ ... def showHelloWorldMessage(self, event, selector):
... return 'alert("%s");' % selector.widget.title
...
... @jsaction.handler(buttons['dblhello'], event=jsevent.DBLCLICK)
- ... def showDoubleHelloWorldMessage(self, selector):
+ ... def showDoubleHelloWorldMessage(self, event, selector):
... return 'alert("%s");' % selector.widget.title
The ``handler()`` decorator takes two arguments, the button (acting as the DOM
@@ -286,11 +286,11 @@
... buttons = button.Buttons(IButtons).select('hello')
...
... @jsaction.handler(buttons['hello'])
- ... def showHelloWorldMessage(self, selector):
+ ... def showHelloWorldMessage(self, event, selector):
... return 'alert("Hello World!");'
...
... @jsaction.handler(buttons['hello'], event=jsevent.DBLCLICK)
- ... def showDoubleHelloWorldMessage(self, selector):
+ ... def showDoubleHelloWorldMessage(self, event, selector):
... return 'alert("Hello World! x 2");'
Let's now instantiate and update the form:
@@ -301,12 +301,14 @@
The subscriptions are now available:
>>> list(demoform.jsSubscriptions)
- [<JSSubscription event=<JSEvent "click">,
- selector=<WidgetSelector "form-buttons-hello">,
- handler=<JSHandler for <JSButton 'hello' u'Hello World!'>>>,
- <JSSubscription event=<JSEvent "dblclick">,
- selector=<WidgetSelector "form-buttons-hello">,
- handler=<JSHandler for <JSButton 'hello' u'Hello World!'>>>]
+ [<JSSubscription
+ event=<JSEvent "click">,
+ selector=<WidgetSelector "form-buttons-hello">,
+ handler=<JSHandler <function showHelloWorldMessage ...>>>,
+ <JSSubscription
+ event=<JSEvent "dblclick">,
+ selector=<WidgetSelector "form-buttons-hello">,
+ handler=<JSHandler <function showDoubleHelloWorldMessage ...>>>]
Submit and Javascript Buttons Together
@@ -334,11 +336,11 @@
... fields = field.Fields(IPerson)
...
... @jsaction.handler(fields['age'])
- ... def ageClickEvent(self, selector):
+ ... def ageClickEvent(self, event, selector):
... return 'alert("The Age was Clicked!");'
...
... @jsaction.handler(fields['name'], event=jsevent.CHANGE)
- ... def nameChangeEvent(self, selector):
+ ... def nameChangeEvent(self, event, selector):
... return 'alert("The Name was Changed!");'
We also need to register all the default form registrations:
More information about the Checkins
mailing list