import myghty.component as component
# the generate_form module component
def generate_form(m, form):
form.accept_visitor(RenderForm(m))
# base class for an element in an HTML form
class FormElement(object):
def __init__(self):
pass
def accept_visitor(self, visitor):
pass
# FormElement implementations
class Form(FormElement):
def __init__(self, name, action, elements):
self.name = name
self.action = action
self.elements = elements
def accept_visitor(self, visitor):
visitor.visit_form(self)
class Field(FormElement):
def __init__(self, name, description, value = None):
self.name = name
self.description = description
self.value = value
class TextField(Field):
def __init__(self, name, description, size, value = None):
Field.__init__(self, name, description, value)
self.size = size
def accept_visitor(self, visitor):
visitor.visit_textfield(self)
class SelectField(Field):
def __init__(self, name, description, options, value = None):
Field.__init__(self, name, description, value)
self.options = options
for o in self.options:
o.parent = self
if o.id == self.value:
o.selected = True
def accept_visitor(self, visitor):
visitor.visit_selectfield(self)
class OptionField(FormElement):
"""an tag. contains a parent attribute that points to a