SVN: r23126 - trunk/quixote/form2
Neil Schemenauer <nascheme-fVcApmY9cLvQ3/1i3zOLAti2O/[email protected]> Tue, 11 Nov 2003 11:29:04 -0500
| Newsgroups | gmane.comp.web.quixote.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: nascheme
Date: 2003-11-11 11:29:04 -0500 (Tue, 11 Nov 2003)
New Revision: 23126
Modified:
trunk/quixote/form2/form.py
trunk/quixote/form2/widget.py
Log:
>From gward:
widget.py:
Factor ButtonWidget out of SubmitWidget; add ResetWidget.
form.py:
Factor _add_button_widget() out of Form.add_submit(); add add_button()
and add_reset().
Rename Form.submit_buttons instance attribute to 'button_widgets'.
Add get_buttons() method.
Rename Form._render_submit_buttons() to _render_button_widgets().
Modified: trunk/quixote/form2/form.py
===================================================================
--- trunk/quixote/form2/form.py 2003-11-11 16:26:24 UTC (rev 23125)
+++ trunk/quixote/form2/form.py 2003-11-11 16:29:04 UTC (rev 23126)
@@ -9,7 +9,7 @@
from quixote import get_request, get_session, get_publisher
from quixote.html import url_quote, htmltag, htmltext, nl2br, TemplateIO
from quixote.form2.widget import Widget, HiddenWidget, StringWidget, \
- SubmitWidget, subname
+ ButtonWidget, ResetWidget, SubmitWidget, subname
try:
@@ -233,7 +233,7 @@
Instance attributes:
components : [FormComponent]
hidden_widgets = [HiddenWidget]
- submit_buttons = [SubmitWidget]
+ button_widgets = [ButtonWidget]
_names : { name:string : Widget|FormComponent }
names used in the form
"""
@@ -253,7 +253,7 @@
self.action_url = action_url or self._get_default_action_url()
self.components = []
self.hidden_widgets = []
- self.submit_buttons = []
+ self.button_widgets = []
self._names = {}
if enctype is not None and enctype not in (
@@ -322,6 +322,9 @@
return True
return False
+ def get_buttons(self):
+ return self.button_widgets
+
def get_submit(self):
"""() -> string | bool
@@ -331,7 +334,7 @@
"""
request = get_request()
- for button in self.submit_buttons:
+ for button in self.button_widgets:
if request.form.has_key(button.name):
return button.name
else:
@@ -378,11 +381,20 @@
title, hint, required, **kwargs)
- def add_submit(self, name, value):
- widget = SubmitWidget(name, value)
+ def _add_button_widget(self, klass, name, value, **kwargs):
+ widget = klass(name, value, **kwargs)
self._add_name(name, widget)
- self.submit_buttons.append(widget)
+ self.button_widgets.append(widget)
+ def add_button(self, name, value, **kwargs):
+ self._add_button_widget(ButtonWidget, name, value, **kwargs)
+
+ def add_reset(self, name, value, **kwargs):
+ self._add_button_widget(ResetWidget, name, value, **kwargs)
+
+ def add_submit(self, name, value, **kwargs):
+ self._add_button_widget(SubmitWidget, name, value, **kwargs)
+
def add_hidden(self, name, value, klass=HiddenWidget):
widget = klass(name, value)
self._add_name(name, widget)
@@ -424,10 +436,10 @@
r += widget.render()
return r.getvalue()
- def _render_submit_buttons(self, ncols=3):
+ def _render_button_widgets(self, ncols=3):
r = TemplateIO(html=True)
r += htmltext('<tr><td colspan="%d">\n') % ncols
- for button in self.submit_buttons:
+ for button in self.button_widgets:
r += button.render()
r += htmltext('</td></tr>')
return r.getvalue()
@@ -454,7 +466,7 @@
r += htmltext('<table>')
r += self._render_error_notice()
r += self._render_components()
- r += self._render_submit_buttons()
+ r += self._render_button_widgets()
r += htmltext('</table>')
return r.getvalue()
Modified: trunk/quixote/form2/widget.py
===================================================================
--- trunk/quixote/form2/widget.py 2003-11-11 16:26:24 UTC (rev 23125)
+++ trunk/quixote/form2/widget.py 2003-11-11 16:29:04 UTC (rev 23126)
@@ -489,12 +489,15 @@
self.value = None
-class SubmitWidget(Widget):
+class ButtonWidget(Widget):
"""
Instance attributes:
+ label : string
value : boolean
"""
+ HTML_TYPE = "button"
+
def __init__(self, name, value=None):
self.name = name
self.error = None
@@ -514,14 +517,21 @@
def render(self):
value = (self.label and htmlescape(self.label) or None)
- return htmltag("input", xml_end=True, type="submit",
+ return htmltag("input", xml_end=True, type=self.HTML_TYPE,
name=self.name, value=value)
def _parse(self, request):
self.value = request.form.has_key(self.name)
+class ResetWidget(ButtonWidget):
+ HTML_TYPE = "reset"
+
+class SubmitWidget(ButtonWidget):
+ HTML_TYPE = "submit"
+
+
class HiddenWidget(Widget):
"""
Instance attributes: