diff options
author | Tony Anderson <tony_anderson@usa.net> | 2009-06-22 14:04:24 (GMT) |
---|---|---|
committer | Tony Anderson <tony_anderson@usa.net> | 2009-06-22 14:04:24 (GMT) |
commit | 6eb30b09566a53ef510532f2a1705d7fc22985a8 (patch) | |
tree | d52765c093219f91d07f030ed597f9491a7f8493 /pgu/gui/form.py |
initial commit
Diffstat (limited to 'pgu/gui/form.py')
-rw-r--r-- | pgu/gui/form.py | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/pgu/gui/form.py b/pgu/gui/form.py new file mode 100644 index 0000000..9a874f9 --- /dev/null +++ b/pgu/gui/form.py @@ -0,0 +1,79 @@ +""" +""" +import widget + +class Form(widget.Widget): + """A form that automatically will contain all named widgets. + + <p>After a form is created, all named widget that are subsequently created are added + to that form. You may use dict style access to access named widgets.</p> + + <pre>Form()</pre> + + <strong>Example</strong> + <code> + f = gui.Form() + + w = gui.Input("Phil",name="firstname") + w = gui.Input("Hassey",name="lastname") + + print f.results() + print '' + print f.items() + print '' + print f['firstname'].value + print f['lastname'].value + </code> + """ + + def __init__(self): + widget.Widget.__init__(self,decorate=False) + self._elist = [] + self._emap = {} + self._dirty = 0 + Form.form = self + + def add(self,e,name=None,value=None): + if name != None: e.name = name + if value != None: e.value = value + self._elist.append(e) + self._dirty = 1 + + def _clean(self): + for e in self._elist[:]: + if not hasattr(e,'name') or e.name == None: + self._elist.remove(e) + self._emap = {} + for e in self._elist: + self._emap[e.name] = e + self._dirty = 0 + + def __getitem__(self,k): + if self._dirty: self._clean() + return self._emap[k] + + def __contains__(self,k): + if self._dirty: self._clean() + if k in self._emap: return True + return False + + def results(self): + """Return a dict of name => values. + + <pre>Form.results(): return dict</pre> + """ + if self._dirty: self._clean() + r = {} + for e in self._elist: + r[e.name] = e.value + return r + + def items(self): + """Return a list of name, value keys. + + <pre>Form.items(): return list</pre> + """ + return self.results().items() + + #def start(self): + # Object.start(self,-1) |