Updated thumbnailer interface
authorThierry Florac <thierry.florac@onf.fr>
Mon, 11 Sep 2017 13:26:57 +0200
changeset 48 277260b46bc7
parent 47 30e0a305f75f
child 49 79afa48cc2aa
Updated thumbnailer interface
src/pyams_file/image.py
src/pyams_file/interfaces/__init__.py
src/pyams_file/thumbnail.py
--- a/src/pyams_file/image.py	Mon Sep 11 13:26:15 2017 +0200
+++ b/src/pyams_file/image.py	Mon Sep 11 13:26:57 2017 +0200
@@ -27,6 +27,8 @@
 from zope.interface import implementer
 from zope.schema.fieldproperty import FieldProperty
 
+from pyams_file import _
+
 
 WEB_FORMATS = ('JPEG', 'PNG', 'GIF')
 THUMB_SIZE = re.compile('^(?:\w+\:)?([0-9]+)x([0-9]+)$')
@@ -49,6 +51,10 @@
 class ImageThumbnailer(ContextAdapter):
     """Image thumbnailer adapter"""
 
+    label = _("Default thumbnail")
+    section = _("Default thumbnail")
+    weight = 1
+
     def get_default_geometry(self, options=None):
         """Default thumbnail geometry"""
         geometry = ThumbnailGeometry()
@@ -91,6 +97,8 @@
 class ImageSelectionThumbnailer(ImageThumbnailer):
     """Image thumbnailer based on user selection"""
 
+    section = _("Custom selections")
+
     def create_thumbnail(self, target, format=None):
         # get thumbnail size
         if isinstance(target, str):
@@ -138,6 +146,9 @@
 class ImageSquareThumbnailer(ImageSelectionThumbnailer):
     """Image square thumbnail adapter"""
 
+    label = _("Square thumbnail")
+    weight = 5
+
     def get_default_geometry(self, options=None):
         """Default square thumbnail geometry"""
         geometry = ThumbnailGeometry()
@@ -159,6 +170,9 @@
 class ImagePanoThumbnailer(ImageSelectionThumbnailer):
     """Image panoramic thumbnail adapter"""
 
+    label = _("Panoramic thumbnail")
+    weight = 6
+
     def get_default_geometry(self, options=None):
         """Default panoramic thumbnail geometry"""
         geometry = ThumbnailGeometry()
@@ -190,22 +204,36 @@
 class ResponsiveImageThumbnailer(ImageSelectionThumbnailer):
     """Responsive image thumbnailer"""
 
+    section = _("Responsive selections")
+
 
 @adapter_config(name='xs', context=IResponsiveImage, provides=IThumbnailer)
 class XsImageThumbnailer(ResponsiveImageThumbnailer):
     """eXtra-Small responsive image thumbnailer"""
 
+    label = _("Smartphone thumbnail")
+    weight = 10
+
 
 @adapter_config(name='sm', context=IResponsiveImage, provides=IThumbnailer)
 class SmImageThumbnailer(ResponsiveImageThumbnailer):
     """SMall responsive image thumbnailer"""
 
+    label = _("Tablet thumbnail")
+    weight = 11
+
 
 @adapter_config(name='md', context=IResponsiveImage, provides=IThumbnailer)
 class MdImageThumbnailer(ResponsiveImageThumbnailer):
     """MeDiumresponsive image thumbnailer"""
 
+    label = _("Medium screen thumbnail")
+    weight = 12
+
 
 @adapter_config(name='lg', context=IResponsiveImage, provides=IThumbnailer)
 class LgImageThumbnailer(ResponsiveImageThumbnailer):
     """LarGe responsive image thumbnailer"""
+
+    label = _("Large screen thumbnail")
+    weight = 13
--- a/src/pyams_file/interfaces/__init__.py	Mon Sep 11 13:26:15 2017 +0200
+++ b/src/pyams_file/interfaces/__init__.py	Mon Sep 11 13:26:57 2017 +0200
@@ -199,6 +199,10 @@
 class IThumbnailer(Interface):
     """Interface of adapter used to generate image thumbnails"""
 
+    label = Attribute("Thumbnail label")
+    section = Attribute("Thumbnail section")
+    weight = Attribute("Thumbnail weight")
+
     def get_default_geometry(self):
         """Get default thumbnail geometry"""
 
@@ -279,3 +283,7 @@
 
     These forms have a custom context permission checker.
     """
+
+
+class IThumbnailForm(IFileModifierForm):
+    """Image thumbnail selection form marker interface"""
--- a/src/pyams_file/thumbnail.py	Mon Sep 11 13:26:15 2017 +0200
+++ b/src/pyams_file/thumbnail.py	Mon Sep 11 13:26:57 2017 +0200
@@ -256,4 +256,4 @@
     def render(self, context=None):
         if context is None:
             context = self.context
-        return IThumbnail(context)
+        return IThumbnail(context, None)