[Checkins] SVN: Sandbox/darrylcousins/mars.formdemo/ Updated formdemo to work with martian-0.9.3 and using grok trunk

Darryl Cousins darryl at darrylcousins.net.nz
Wed Feb 13 22:21:00 EST 2008


Log message for revision 83810:
  Updated formdemo to work with martian-0.9.3 and using grok trunk

Changed:
  U   Sandbox/darrylcousins/mars.formdemo/buildout.cfg
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/addressbook.py
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/addressbook.txt
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/resources.py
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/application.zcml
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/browser/browser.py
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/layer.py
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/message/message.py
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/questionnaire/questionnaire.py
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/questionnaire/questionnaire.txt
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/skin/skin.py
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/spreadsheet/candidate.py
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/spreadsheet/spreadsheet.py
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/sqlmessage/sqlmessage.py
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/tests.py
  A   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/widgets/pressme.png
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/widgets/widgets.py
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/widgets/widgets.txt
  U   Sandbox/darrylcousins/mars.formdemo/mars/formdemo/wizard/wizard.py

-=-
Modified: Sandbox/darrylcousins/mars.formdemo/buildout.cfg
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/buildout.cfg	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/buildout.cfg	2008-02-14 03:21:00 UTC (rev 83810)
@@ -1,6 +1,8 @@
 [buildout]
 develop = .
-parts = demo test
+parts = 
+    demo
+    test
 extends = http://download.zope.org/zope3.4/versions-3.4.0c1.cfg
 versions = versions
 
@@ -8,6 +10,9 @@
 grok = 0.12dev
 martian = 0.9.3
 
+[zope3]
+location =
+
 [test]
 recipe = zc.recipe.testrunner
 eggs = mars.formdemo [app, test]

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/addressbook.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/addressbook.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/addressbook.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -1,5 +1,5 @@
 import zope.component
-from zope.app.session.interfaces import ISession
+from zope.session.interfaces import ISession
 from zope.app.container.interfaces import IContainer
 
 from z3c.template.interfaces import ILayoutTemplate
@@ -18,12 +18,19 @@
 import mars.adapter
 from mars.formdemo.layer import IDemoBrowserLayer
 
-mars.layer.layer(IDemoBrowserLayer)
+grok.layer(IDemoBrowserLayer)
 
 
 class DateSelectWidget(mars.adapter.AdapterFactory):
     mars.adapter.factory(dateselect.DateSelectDataConverter)
 
+class DateSelectWidgetTemplate(mars.form.WidgetTemplateFactory):
+    #grok.name('input')
+    grok.context(zope.interface.Interface)
+    grok.template('dateselect.pt')
+    mars.form.widget(dateselect.DateSelectWidget)
+    grok.layer(IFormLayer)
+
 class ContactLabel(mars.adapter.AdapterFactory):
     grok.name('title')
     mars.adapter.factory(button.StaticButtonActionAttribute(
@@ -118,9 +125,3 @@
     grok.context(browser.EMailForm)
     grok.template('email.pt')
 
-class DateSelectWidgetTemplate(mars.form.WidgetTemplateFactory):
-    grok.context(zope.interface.Interface)
-    grok.template('dateselect.pt')
-    mars.form.widget(dateselect.DateSelectWidget)
-    mars.layer.layer(IFormLayer)
-

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/addressbook.txt
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/addressbook.txt	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/addressbook.txt	2008-02-14 03:21:00 UTC (rev 83810)
@@ -13,14 +13,12 @@
   >>> user = ExtendedTestBrowser()
   >>> user.handleErrors = False
   >>> user.addHeader('Accept-Language', 'en')
-  >>> skinURL = 'http://localhost:8080/++skin++marsformdemo'
-
   >>> user.open('http://localhost:8080')
 
 Since all demos are purely public, there is no need to log in. Let's now click
 on the "Address Book" link:
 
-  >>> user.open(skinURL + '/addressbook')
+  >>> user.getLink('Address Book').click()
 
 There is only one screen for this demo. In it you see the table of all
 contacts on the left side and on the right side is the contact

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/resources.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/resources.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/addressbook/resources.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -10,7 +10,7 @@
 from mars.formdemo.skin import skin
 from mars.formdemo.addressbook.addressbook import AddressBook
 
-mars.layer.layer(IDemoBrowserLayer)
+grok.layer(IDemoBrowserLayer)
 
 ## CSS resources
 class AddressbookResource(mars.resource.ResourceFactory):

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/application.zcml
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/application.zcml	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/application.zcml	2008-02-14 03:21:00 UTC (rev 83810)
@@ -10,7 +10,7 @@
   <include package="zope.app.publication" file="meta.zcml" />
   <include package="zope.app.publisher" file="meta.zcml" />
   <include package="zope.app.security" file="meta.zcml" />
-  <include package="zope.app.securitypolicy" file="meta.zcml" />
+  <include package="zope.securitypolicy" file="meta.zcml" />
   <include package="zope.rdb" file="meta.zcml" />
   <include package="zope.viewlet" file="meta.zcml" />
 
@@ -23,7 +23,6 @@
 
   <include package="grok" file="meta.zcml" />
 
-  <include package="mars.layer" file="meta.zcml" />
   <include package="mars.template" file="meta.zcml" />
   <include package="mars.view" file="meta.zcml" />
   <include package="mars.viewlet" file="meta.zcml" />
@@ -43,7 +42,7 @@
   <include package="zope.app.i18n" />
   <include package="zope.app.publication" />
   <include package="zope.app.security" />
-  <include package="zope.app.securitypolicy" />
+  <include package="zope.securitypolicy" />
   <include package="zope.app.session" />
   <include package="zope.app.twisted" />
   <include package="zope.app.wsgi" />
@@ -74,7 +73,7 @@
   <browser:defaultSkin name="marsformdemo" />
 
   <securityPolicy
-  component="zope.app.securitypolicy.zopepolicy.ZopeSecurityPolicy" />
+  component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy" />
 
   <role id="zope.Anonymous" title="Everybody" />
   <grantAll role="zope.Anonymous" />

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/browser/browser.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/browser/browser.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/browser/browser.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -9,7 +9,7 @@
 
 from mars.formdemo.layer import IDemoDivBrowserLayer
 
-mars.layer.layer(IDemoDivBrowserLayer)
+grok.layer(IDemoDivBrowserLayer)
 
 class Index(mars.view.LayoutView):
     """`home` for formdemo"""

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/layer.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/layer.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/layer.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -1,8 +1,9 @@
 __docformat__ = "reStructuredText"
+import grok
+
 import mars.form
-import mars.layer
 
-class IDemoBrowserLayer(mars.layer.ILayer):
+class IDemoBrowserLayer(grok.IGrokLayer):
     pass
 
 class IDemoDivBrowserLayer(mars.form.IDivFormLayer, IDemoBrowserLayer):

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/message/message.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/message/message.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/message/message.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -20,7 +20,7 @@
 import mars.adapter
 from mars.formdemo.layer import IDemoBrowserLayer
 
-mars.layer.layer(IDemoBrowserLayer)
+grok.layer(IDemoBrowserLayer)
 
 class DefaultDate(mars.adapter.AdapterFactory):
     grok.name('default')

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/questionnaire/questionnaire.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/questionnaire/questionnaire.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/questionnaire/questionnaire.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -31,7 +31,7 @@
 from mars.formdemo.layer import IDemoBrowserLayer
 from mars.formdemo.skin import skin
 
-mars.layer.layer(IDemoBrowserLayer)
+grok.layer(IDemoBrowserLayer)
 
 
 class Questionnaire(grok.Model):

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/questionnaire/questionnaire.txt
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/questionnaire/questionnaire.txt	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/questionnaire/questionnaire.txt	2008-02-14 03:21:00 UTC (rev 83810)
@@ -11,15 +11,13 @@
   >>> from z3c.formdemo import testing
   >>> from z3c.etestbrowser.testing import ExtendedTestBrowser
   >>> user = ExtendedTestBrowser()
-  >>> user.handleErrors = False
   >>> user.addHeader('Accept-Language', 'en')
-  >>> skinURL = 'http://localhost:8080/++skin++marsformdemo'
   >>> user.open('http://localhost:8080')
 
 Since all demos are purely public, there is no need to log in. Let's now click
 on the "All widgets" link:
 
-  >>> user.open(skinURL + '/questionnaireResults')
+  >>> user.getLink('Questionnaire').click()
 
 The first screen you see is the questionnaire results screen.
 
@@ -38,12 +36,17 @@
   >>> user.getControl('Name').value = u'Stephan Richter'
   >>> user.getControl('Age').value = u'27'
 
-  >>> user.getControl('yes', index=0).click()
-  >>> user.getControl('no', index=1).click()
-  >>> user.getControl('yes', index=2).click()
-  >>> user.getControl('no', index=3).click()
+  >>> user.getControl(name='form.widgets.zope2:list')\
+  ...     .getControl(value='true').click()
+  >>> user.getControl(name='form.widgets.plone:list')\
+  ...     .getControl(value='false').click()
+  >>> user.getControl(name='form.widgets.zope3:list')\
+  ...     .getControl(value='true').click()
+  >>> user.getControl(name='form.widgets.five:list')\
+  ...     .getControl(value='false').click()
 
-  >>> user.getControl('yes', index=4).click()
+  >>> user.getControl(name='form.widgets.contributor:list')\
+  ...     .getControl(value='true').click()
   >>> user.getControl('have you contributed').value = u'5'
   >>> user.getControl('What is your Zope Id?').value = u'srichter'
 
@@ -52,12 +55,55 @@
 Once the questionnaire has been submitted, the user is returned to the results
 screen. Now the table has an entry:
 
-  >>> testing.printElement(user, "//table/tbody/tr[1]/td/span/text()",
-  ...                      multiple=True, serialize=False )
-      Stephan Richter
-      27
-      5
-      srichter
+  >>> testing.printElement(user, "//table/tbody/tr[1]")
+  <tr class="odd"><td class="sorted-on">
+      <span id="form-widgets-name"
+            class="text-widget required textline-field">
+        Stephan Richter
+      </span>
+    </td>
+    <td class="right">
+      <span id="form-widgets-age" class="text-widget required int-field">
+        27
+      </span>
+    </td>
+    <td class="right">
+      <span id="form-widgets-zope2" class="radio-widget required bool-field">
+        <span class="selected-option">yes</span>
+      </span>
+    </td>
+    <td class="right">
+      <span id="form-widgets-plone" class="radio-widget required bool-field">
+        <span class="selected-option">no</span>
+      </span>
+    </td>
+    <td class="right">
+      <span id="form-widgets-zope3" class="radio-widget required bool-field">
+        <span class="selected-option">yes</span>
+      </span>
+    </td>
+    <td class="right">
+      <span id="form-widgets-five" class="radio-widget required bool-field">
+        <span class="selected-option">no</span>
+      </span>
+    </td>
+    <td class="right">
+      <span id="form-widgets-contributor"
+            class="radio-widget required bool-field">
+        <span class="selected-option">yes</span>
+      </span>
+    </td>
+    <td class="right">
+      <span id="form-widgets-years" class="text-widget int-field">
+        5
+      </span>
+    </td>
+    <td class="right">
+      <span id="form-widgets-zopeId" class="text-widget textline-field">
+        srichter
+      </span>
+    </td>
+  </tr>
 
 Let's now fill out another questionnaire:
 
@@ -66,12 +112,17 @@
   >>> user.getControl('Name').value = u'Roger Ineichen'
   >>> user.getControl('Age').value = u'39'
 
-  >>> user.getControl('yes', index=0).click()
-  >>> user.getControl('yes', index=1).click()
-  >>> user.getControl('yes', index=2).click()
-  >>> user.getControl('no', index=3).click()
+  >>> user.getControl(name='form.widgets.zope2:list')\
+  ...     .getControl(value='true').click()
+  >>> user.getControl(name='form.widgets.plone:list')\
+  ...     .getControl(value='true').click()
+  >>> user.getControl(name='form.widgets.zope3:list')\
+  ...     .getControl(value='true').click()
+  >>> user.getControl(name='form.widgets.five:list')\
+  ...     .getControl(value='false').click()
 
-  >>> user.getControl('yes', index=4).click()
+  >>> user.getControl(name='form.widgets.contributor:list')\
+  ...     .getControl(value='true').click()
   >>> user.getControl('have you contributed').value = u'4'
   >>> user.getControl('What is your Zope Id?').value = u'projekt01'
 

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/skin/skin.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/skin/skin.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/skin/skin.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -15,15 +15,15 @@
                                  IDemoDivBrowserLayer,
                                  IDemoTableBrowserLayer)
 
-class MarsFormDemo(mars.layer.Skin):
+class MarsFormDemo(grok.Skin):
     """The ``marsformdemo`` browser skin."""
-    mars.layer.layer(IDemoDivBrowserLayer)
+    grok.layer(IDemoDivBrowserLayer)
 
-class MarsTableFormDemo(mars.layer.Skin):
+class MarsTableFormDemo(grok.Skin):
     """The ``marstableformdemo`` browser skin."""
-    mars.layer.layer(IDemoTableBrowserLayer)
+    grok.layer(IDemoTableBrowserLayer)
 
-mars.layer.layer(IDemoBrowserLayer)
+grok.layer(IDemoBrowserLayer)
 
 class Template(mars.template.LayoutFactory):
     """main template for pages (note the context!)"""

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/spreadsheet/candidate.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/spreadsheet/candidate.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/spreadsheet/candidate.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -15,7 +15,7 @@
 from mars.formdemo.skin import skin
 from mars.formdemo.spreadsheet.spreadsheet import Spreadsheet
 
-mars.layer.layer(IDemoBrowserLayer)
+grok.layer(IDemoBrowserLayer)
 
 class Candidate(grok.Model):
     zope.interface.implements(ICandidate)

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/spreadsheet/spreadsheet.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/spreadsheet/spreadsheet.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/spreadsheet/spreadsheet.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -1,6 +1,6 @@
 __docformat__ = "reStructuredText"
 import zope.interface
-from zope.app.session.interfaces import ISession
+from zope.session.interfaces import ISession
 from z3c.form import button, field, form, interfaces
 from z3c.formui import layout
 from zc.table import table, column

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/sqlmessage/sqlmessage.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/sqlmessage/sqlmessage.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/sqlmessage/sqlmessage.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -31,16 +31,16 @@
 from mars.formdemo.layer import IDemoBrowserLayer
 from mars.formdemo.skin import skin
 
-mars.layer.layer(IDemoBrowserLayer)
+grok.layer(IDemoBrowserLayer)
 
 SESSION_KEY = 'mars.formdemo.sqlmessage'
 
 
-class DefaultDate(mars.adapter.AdapterFactory):
-    grok.name('default')
-    mars.adapter.factory(widget.ComputedWidgetAttribute(
-                        lambda adapter: datetime.date.today(),
-                        field=IHelloWorld['when'], view=IAddForm))
+#class DefaultDate(mars.adapter.AdapterFactory):
+#    grok.name('default')
+#    mars.adapter.factory(widget.ComputedWidgetAttribute(
+#                        lambda adapter: datetime.date.today(),
+#                        field=IHelloWorld['when'], view=IAddForm))
 
 ## CSS requirement
 class MessageStyle(mars.resource.ResourceFactory):

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/tests.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/tests.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/tests.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -29,7 +29,3 @@
         suite.layer = testing.FormDemoLayer
         suites.append(suite)
     return unittest.TestSuite(suites)
-
-
-if __name__ == '__main__':
-    unittest.main(defaultTest='test_suite')

Added: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/widgets/pressme.png
===================================================================
(Binary files differ)


Property changes on: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/widgets/pressme.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/widgets/widgets.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/widgets/widgets.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/widgets/widgets.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -1,17 +1,20 @@
 __docformat__ = "reStructuredText"
+import persistent
 import zope.interface
 import zope.schema
-import zope.annotation
-from zope.schema import fieldproperty
+from zope.annotation import factory
+from zope.annotation.interfaces import IAttributeAnnotatable
+from zope.schema.fieldproperty import FieldProperty
 from zope.traversing.browser import absoluteURL
 from zope.app.folder.interfaces import IFolder
 from zope.viewlet.viewlet import CSSViewlet
 
-from z3c.form import form, field
+from z3c.form import button, form, field
+from z3c.form.browser import checkbox
 from z3c.form.interfaces import IWidgets
 from z3c.form.interfaces import HIDDEN_MODE
 from z3c.template.interfaces import ILayoutTemplate
-from z3c.formdemo.widgets.interfaces import IAllFields
+from z3c.formdemo.widgets import interfaces
 
 import grok
 
@@ -23,57 +26,74 @@
 from mars.formdemo.layer import IDemoBrowserLayer
 from mars.formdemo.skin import skin
 
-mars.layer.layer(IDemoBrowserLayer)
+grok.layer(IDemoBrowserLayer)
 
 class AllFields(grok.Annotation):
     """Register me as an annotation adapter"""
     grok.context(zope.interface.Interface)
+    grok.provides(interfaces.IAllFields)
+    zope.interface.implements(interfaces.IAllFields)
+    zope.component.adapts(IAttributeAnnotatable)
 
-    zope.interface.implements(IAllFields)
-    zope.component.adapts(zope.annotation.interfaces.IAttributeAnnotatable)
+    asciiField = FieldProperty(interfaces.IAllFields['asciiField'])
+    asciiLineField = FieldProperty(interfaces.IAllFields['asciiLineField'])
+    boolField = FieldProperty(interfaces.IAllFields['boolField'])
+    checkboxBoolField = FieldProperty(
+        interfaces.IAllFields['checkboxBoolField'])
+    bytesField = FieldProperty(interfaces.IAllFields['bytesField'])
+    bytesLineField = FieldProperty(interfaces.IAllFields['bytesLineField'])
+    choiceField = FieldProperty(interfaces.IAllFields['choiceField'])
+    optionalChoiceField = FieldProperty(
+        interfaces.IAllFields['optionalChoiceField'])
+    promptChoiceField = FieldProperty(
+        interfaces.IAllFields['promptChoiceField'])
+    dateField = FieldProperty(interfaces.IAllFields['dateField'])
+    datetimeField = FieldProperty(interfaces.IAllFields['datetimeField'])
+    decimalField = FieldProperty(interfaces.IAllFields['decimalField'])
+    dictField = FieldProperty(interfaces.IAllFields['dictField'])
+    dottedNameField = FieldProperty(interfaces.IAllFields['dottedNameField'])
+    floatField = FieldProperty(interfaces.IAllFields['floatField'])
+    frozenSetField = FieldProperty(interfaces.IAllFields['frozenSetField'])
+    idField = FieldProperty(interfaces.IAllFields['idField'])
+    intField = FieldProperty(interfaces.IAllFields['intField'])
+    listField = FieldProperty(interfaces.IAllFields['listField'])
+    objectField = FieldProperty(interfaces.IAllFields['objectField'])
+    passwordField = FieldProperty(interfaces.IAllFields['passwordField'])
+    setField = FieldProperty(interfaces.IAllFields['setField'])
+    sourceTextField = FieldProperty(interfaces.IAllFields['sourceTextField'])
+    textField = FieldProperty(interfaces.IAllFields['textField'])
+    textLineField = FieldProperty(interfaces.IAllFields['textLineField'])
+    timeField = FieldProperty(interfaces.IAllFields['timeField'])
+    timedeltaField = FieldProperty(interfaces.IAllFields['timedeltaField'])
+    tupleField = FieldProperty(interfaces.IAllFields['tupleField'])
+    uriField = FieldProperty(interfaces.IAllFields['uriField'])
+    hiddenField = FieldProperty(interfaces.IAllFields['hiddenField'])
 
-    asciiField = fieldproperty.FieldProperty(IAllFields['asciiField'])
-    asciiLineField = fieldproperty.FieldProperty(IAllFields['asciiLineField'])
-    boolField = fieldproperty.FieldProperty(IAllFields['boolField'])
-    bytesField = fieldproperty.FieldProperty(IAllFields['bytesField'])
-    bytesLineField = fieldproperty.FieldProperty(IAllFields['bytesLineField'])
-    choiceField = fieldproperty.FieldProperty(IAllFields['choiceField'])
-    optionalChoiceField = fieldproperty.FieldProperty(
-        IAllFields['optionalChoiceField'])
-    promptChoiceField = fieldproperty.FieldProperty(
-        IAllFields['promptChoiceField'])
-    dateField = fieldproperty.FieldProperty(IAllFields['dateField'])
-    datetimeField = fieldproperty.FieldProperty(IAllFields['datetimeField'])
-    decimalField = fieldproperty.FieldProperty(IAllFields['decimalField'])
-    dictField = fieldproperty.FieldProperty(IAllFields['dictField'])
-    dottedNameField = fieldproperty.FieldProperty(IAllFields['dottedNameField'])
-    floatField = fieldproperty.FieldProperty(IAllFields['floatField'])
-    frozenSetField = fieldproperty.FieldProperty(IAllFields['frozenSetField'])
-    idField = fieldproperty.FieldProperty(IAllFields['idField'])
-    intField = fieldproperty.FieldProperty(IAllFields['intField'])
-    listField = fieldproperty.FieldProperty(IAllFields['listField'])
-    objectField = fieldproperty.FieldProperty(IAllFields['objectField'])
-    passwordField = fieldproperty.FieldProperty(IAllFields['passwordField'])
-    setField = fieldproperty.FieldProperty(IAllFields['setField'])
-    sourceTextField = fieldproperty.FieldProperty(IAllFields['sourceTextField'])
-    textField = fieldproperty.FieldProperty(IAllFields['textField'])
-    textLineField = fieldproperty.FieldProperty(IAllFields['textLineField'])
-    timeField = fieldproperty.FieldProperty(IAllFields['timeField'])
-    timedeltaField = fieldproperty.FieldProperty(IAllFields['timedeltaField'])
-    tupleField = fieldproperty.FieldProperty(IAllFields['tupleField'])
-    uriField = fieldproperty.FieldProperty(IAllFields['uriField'])
-    hiddenField = fieldproperty.FieldProperty(IAllFields['hiddenField'])
-
-class AllFieldsForm(mars.view.PageletView, form.EditForm):
+#class AllFieldsForm(mars.view.PageletView, form.EditForm):
+class AllFieldsForm(mars.form.FormView, form.EditForm):
     """A form showing all fields."""
     grok.name('widgets')
     grok.context(zope.interface.Interface)
-    fields = field.Fields(IAllFields).omit(
+
+    form.extends(form.EditForm)
+    fields = field.Fields(interfaces.IAllFields).omit(
         'dictField', 'objectField')
+    fields['checkboxBoolField'].widgetFactory = \
+        checkbox.SingleCheckBoxFieldWidget
+
+    buttons = form.EditForm.buttons + \
+              button.Buttons(
+                 button.ImageButton(name='pressme', image=u'pressme.png')
+                 )
+
     label = 'Widgets Demo'
 
+    @button.handler(buttons['pressme'])
+    def handlePressMe(self, action):
+        self.status = u'Press me was clicked!'
+
     def getContent(self):
-        return IAllFields(self.context)
+        return interfaces.IAllFields(self.context)
 
     def updateWidgets(self):
         self.widgets = zope.component.getMultiAdapter(
@@ -89,3 +109,8 @@
             ILayoutTemplate)
         return layout(self)
 
+# define an image resource
+class PressMe(mars.resource.ResourceFactory):
+    grok.name('pressme.png')
+    mars.resource.image('pressme.png')
+

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/widgets/widgets.txt
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/widgets/widgets.txt	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/widgets/widgets.txt	2008-02-14 03:21:00 UTC (rev 83810)
@@ -11,14 +11,14 @@
   >>> from z3c.formdemo import testing
   >>> from z3c.etestbrowser.testing import ExtendedTestBrowser
   >>> user = ExtendedTestBrowser()
+  >>> user.handleErrors = False
   >>> user.addHeader('Accept-Language', 'en')
-  >>> user.handleErrors = False
-  >>> skinURL = 'http://localhost:8080/++skin++marsformdemo'
+  >>> user.open('http://localhost:8080')
 
 Since all demos are purely public, there is no need to log in. Let's now click
 on the "All widgets" link:
 
-  >>> user.open(skinURL + '/widgets')
+  >>> user.getLink('All widgets').click()
 
 You are now in the widgets form. Let's now fill out all forms an submit the
 form:
@@ -36,7 +36,8 @@
 
   >>> user.getControl('ASCII', index=0).value += u' Add on.'
   >>> user.getControl('ASCII Line').value += u' Add on.'
-  >>> user.getControl('no', index=0).click() # Boolean
+  >>> user.getControl(name='form.widgets.boolField:list')\
+  ...     .getControl(value='false').click() # Boolean
   >>> user.getControl('Bytes', index=0).add_file(
   ...     cStringIO.StringIO('File contents'), 'text/plain', 'test.txt')
   >>> user.getControl('Bytes Line').value += u' Add on.'
@@ -47,7 +48,7 @@
   >>> user.getControl('Date/Time').value = u'7/1/07 12:15 AM'
   >>> user.getControl('Decimal').value = u'12439.986'
   >>> user.getControl('Dotted Name').value += u'demo'
-  >>> user.getControl('Float').value += u'12439.986'
+  >>> user.getControl('Float').value = u'12439.986'
   >>> user.getControl('Frozen Set').getControl('One').click()
   >>> user.getControl('Id').value += u'demo'
   >>> user.getControl('Integer').value = u'12439'
@@ -63,10 +64,10 @@
   >>> user.getControl('URI').value += u'/Documentation'
   >>> user.getControl(name='form.widgets.hiddenField').value += u' Add on.'
 
-  >>> user.getControl('Apply').click()
+  >>> user.getControl(name='form.buttons.apply').click()
 
 Once submitted, the same form returns with a data changed method:
-
+ 
   >>> from z3c.formdemo import testing
   >>> testing.printElement(user, "//div[@class='summary']")
   <div class="summary">Data successfully updated.</div>
@@ -77,7 +78,7 @@
   >>> fields = interfaces.IAllFields(getRootFolder())
 
   >>> fields.asciiField
-  'This is\n ASCII. Add on.'
+  'This is\r\n ASCII. Add on.'
   >>> fields.asciiLineField
   'An ASCII line. Add on.'
   >>> fields.boolField
@@ -101,7 +102,7 @@
   >>> fields.dottedNameField
   'z3c.formdemo'
   >>> fields.floatField
-  12.811999999999999
+  12439.986000000001
   >>> fields.frozenSetField
   frozenset([3])
   >>> fields.idField
@@ -117,7 +118,7 @@
   >>> fields.sourceTextField
   u'<source /> Add on.'
   >>> fields.textField
-  u'Some\n Text. Add on.'
+  u'Some\r\n Text. Add on.'
   >>> fields.textLineField
   u'Some Text line. Add on.'
   >>> fields.timeField
@@ -131,3 +132,9 @@
   >>> fields.hiddenField
   u'Some Hidden Text. Add on.'
 
+We also have an image button, that can be clicked:
+
+  >>> user.getControl(name='form.buttons.pressme').click()
+  >>> testing.printElement(user, "//div[@class='summary']")
+  <div class="summary">Press me was clicked!</div>
+

Modified: Sandbox/darrylcousins/mars.formdemo/mars/formdemo/wizard/wizard.py
===================================================================
--- Sandbox/darrylcousins/mars.formdemo/mars/formdemo/wizard/wizard.py	2008-02-14 02:31:00 UTC (rev 83809)
+++ Sandbox/darrylcousins/mars.formdemo/mars/formdemo/wizard/wizard.py	2008-02-14 03:21:00 UTC (rev 83810)
@@ -3,7 +3,7 @@
 import zope.interface
 from zope.viewlet.viewlet import CSSViewlet
 from zope.app.folder.interfaces import IFolder
-from zope.app.session.interfaces import ISession
+from zope.session.interfaces import ISession
 
 from z3c.form import form, field, button
 from z3c.formui import layout
@@ -19,7 +19,7 @@
 from mars.formdemo.layer import IDemoBrowserLayer
 from mars.formdemo.skin import skin
 
-mars.layer.layer(IDemoBrowserLayer)
+grok.layer(IDemoBrowserLayer)
 
 class PersonWizard(mars.view.PageletView, Wizard):
     grok.name('wizard')



More information about the Checkins mailing list