'Initiate the form
Kwargs:
filename (str): Path to template file.
cells (dict): A dictionary mapping of {id:text}
tables (dict): A dictionary mapping of {id:EvTable}.
form (dict): A dictionary of {"CELLCHAR":char,
"TABLECHAR":char,
"FORM":templatestring}
if this is given, filename is not read.
Notes:
Other kwargs are fed as options to the EvCells and EvTables
(see `evtable.EvCell` and `evtable.EvTable` for more info).'

def __init__(self, filename=None, cells=None, tables=None, form=None, **kwargs):

    self.filename = filename
    self.input_form_dict = form
    self.cells_mapping = (dict(((to_str(key, force_string=True), value) for (key, value) in cells.items())) if cells else {})
    self.tables_mapping = (dict(((to_str(key, force_string=True), value) for (key, value) in tables.items())) if tables else {})
    self.cellchar = 'x'
    self.tablechar = 'c'
    self.raw_form = []
    self.form = []
    kwargs.pop('enforce_size', None)
    kwargs.pop('width', None)
    kwargs.pop('height', None)
    self.options = kwargs
    self.reload()
