[Zope3-checkins] SVN: Zope3/trunk/ - icon directive now supports width and height

Roman Joost rj at gocept.com
Fri Feb 16 09:06:13 EST 2007


Log message for revision 72646:
  - icon directive now supports width and height
  
  

Changed:
  U   Zope3/trunk/doc/CHANGES.txt
  U   Zope3/trunk/src/zope/app/publisher/browser/icon.py
  U   Zope3/trunk/src/zope/app/publisher/browser/metadirectives.py
  U   Zope3/trunk/src/zope/app/publisher/browser/tests/test_icondirective.py

-=-
Modified: Zope3/trunk/doc/CHANGES.txt
===================================================================
--- Zope3/trunk/doc/CHANGES.txt	2007-02-16 09:45:11 UTC (rev 72645)
+++ Zope3/trunk/doc/CHANGES.txt	2007-02-16 14:06:12 UTC (rev 72646)
@@ -10,6 +10,8 @@
 
     New features
 
+      - icon zcml directive supports now 'width' and 'height'
+
       - Added a master checkbox to the ZMI and toggles all other checkboxes in
         the folder listing.
       

Modified: Zope3/trunk/src/zope/app/publisher/browser/icon.py
===================================================================
--- Zope3/trunk/src/zope/app/publisher/browser/icon.py	2007-02-16 09:45:11 UTC (rev 72645)
+++ Zope3/trunk/src/zope/app/publisher/browser/icon.py	2007-02-16 14:06:12 UTC (rev 72646)
@@ -31,11 +31,13 @@
 
 class IconView(object):
 
-    def __init__(self, context, request, rname, alt):
+    def __init__(self, context, request, rname, alt, width, height):
         self.context = context
         self.request = request
         self.rname = rname
         self.alt = alt
+        self.width = width
+        self.height = height
 
     def __call__(self):
         # The context is important here, since it becomes the parent of the
@@ -43,8 +45,8 @@
         resource = getResource(self.context, self.rname, self.request)
         src = resource()
 
-        return ('<img src="%s" alt="%s" width="16" height="16" border="0" />'
-                % (src, self.alt))
+        return ('<img src="%s" alt="%s" width="%s" height="%s" border="0" />'
+                % (src, self.alt, self.width, self.height))
 
     def url(self):
         resource = getResource(self.context, self.rname, self.request)
@@ -53,15 +55,19 @@
 
 class IconViewFactory(object):
 
-    def __init__(self, rname, alt):
+    def __init__(self, rname, alt, width, height):
         self.rname = rname
         self.alt = alt
+        self.width = width
+        self.height = height
 
     def __call__(self, context, request):
-        return IconView(context, request, self.rname, self.alt)
+        return IconView(context, request, self.rname, self.alt,
+                       self.width, self.height)
 
 def IconDirective(_context, name, for_, file=None, resource=None,
-                  layer=IDefaultBrowserLayer, title=None):
+                  layer=IDefaultBrowserLayer, title=None,
+                  width=16, height=16):
 
     iname = for_.getName()
 
@@ -89,7 +95,7 @@
             "attributes for resource directives must be specified"
             )
 
-    vfactory = IconViewFactory(resource, title)
+    vfactory = IconViewFactory(resource, title, width, height)
 
     _context.action(
         discriminator = ('view', name, vfactory, layer),

Modified: Zope3/trunk/src/zope/app/publisher/browser/metadirectives.py
===================================================================
--- Zope3/trunk/src/zope/app/publisher/browser/metadirectives.py	2007-02-16 09:45:11 UTC (rev 72645)
+++ Zope3/trunk/src/zope/app/publisher/browser/metadirectives.py	2007-02-16 14:06:12 UTC (rev 72646)
@@ -727,3 +727,21 @@
         directive. Defaults to "default".""",
         required=False
         )
+
+    width = Int(
+        title=u"The width of the icon.",
+        description=u"""
+        The width will be used for the <img width="..." />
+        attribute. Defaults to 16.""",
+        required=False,
+        default=16
+        )
+    
+    height = Int(
+        title=u"The height of the icon.",
+        description=u"""
+        The height will be used for the <img height="..." />
+        attribute. Defaults to 16.""",
+        required=False,
+        default=16
+        )

Modified: Zope3/trunk/src/zope/app/publisher/browser/tests/test_icondirective.py
===================================================================
--- Zope3/trunk/src/zope/app/publisher/browser/tests/test_icondirective.py	2007-02-16 09:45:11 UTC (rev 72645)
+++ Zope3/trunk/src/zope/app/publisher/browser/tests/test_icondirective.py	2007-02-16 14:06:12 UTC (rev 72646)
@@ -110,7 +110,26 @@
             'width="16" height="16" border="0" />'
             % rname)
 
+        # Make sure that the width and height attributes work
+        xmlconfig(StringIO(template % (
+            '''
+            <browser:icon name="zmi_icon_w_width_and_height"
+                      for="zope.app.component.tests.views.IC"
+                      file="%s"
+                      width="20" height="12" />
+            ''' % path
+            )))
 
+        view = zapi.getMultiAdapter((ob, request),
+                                    name='zmi_icon_w_width_and_height')
+        rname = ('zope-app-component-tests-views-IC-'
+                 'zmi_icon_w_width_and_height.gif')
+        self.assertEqual(
+            view(),
+            '<img src="http://127.0.0.1/@@/%s" alt="IC" '
+            'width="20" height="12" border="0" />'
+            % rname)
+
         # Make sure that the image was installed as a resource:
         resource = ProxyFactory(zapi.getAdapter(request, name=rname))
         self.assertRaises(Forbidden, getattr, resource, '_testData')



More information about the Zope3-Checkins mailing list