Author: jmorliaguet
Date: Fri Apr 14 19:14:29 2006
New Revision: 2846

Modified:
   cpsskins/branches/jmo-perspectives/configuration/widgets/metaconfigure.py
   cpsskins/branches/jmo-perspectives/configuration/widgets/metadirectives.py
   cpsskins/branches/jmo-perspectives/configuration/widgets/widget.py
   cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.py
   cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.zcml
   cpsskins/branches/jmo-perspectives/standard/formats/widget.py
Log:

- fixed the widget selector. It now uses an ordered multi-select input widget

- we filter out basic widget views and widgets registered for specific engines



Modified: 
cpsskins/branches/jmo-perspectives/configuration/widgets/metaconfigure.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/configuration/widgets/metaconfigure.py   
(original)
+++ cpsskins/branches/jmo-perspectives/configuration/widgets/metaconfigure.py   
Fri Apr 14 19:14:29 2006
@@ -20,17 +20,19 @@
 from zope.app.component.metaconfigure import adapter
 from zope.component import provideUtility
 from zope.configuration.exceptions import ConfigurationError
+from zope.interface import classImplements
 from zope.i18nmessageid import MessageFactory
 from zope.publisher.interfaces.browser import IBrowserRequest
 
 from cpsskins import configuration
 from cpsskins.standard.filters.widget.interfaces import IWidgetView
+from cpsskins.standard.filters.widget.interfaces import IBasicWidgetView
 from cpsskins.standard.formats.widget import IWidget
 
 _ = MessageFactory("cpsskins")
 
 def widget(_context=None, name=None, title=None, view=None, for_=None,
-           engine=u''):
+           engine=u'', basic=False):
 
     if not name:
         raise ConfigurationError("Must specify the widget's name.")
@@ -45,9 +47,13 @@
     if engine:
         widget_name = '%s-%s' % (engine, name)
 
+    if basic:
+        classImplements(view, IBasicWidgetView)
+
     # register widgets
     provideUtility(configuration.Widget(name=name, title=title, view=view,
-                   engine=engine), configuration.IWidget, widget_name)
+                   engine=engine, basic=basic), configuration.IWidget,
+                   widget_name)
 
     # zope:adapter
     adapter(_context=_context, factory=(view,), provides=IWidgetView,

Modified: 
cpsskins/branches/jmo-perspectives/configuration/widgets/metadirectives.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/configuration/widgets/metadirectives.py  
(original)
+++ cpsskins/branches/jmo-perspectives/configuration/widgets/metadirectives.py  
Fri Apr 14 19:14:29 2006
@@ -20,7 +20,7 @@
 from zope.configuration.fields import GlobalObject
 from zope.interface import Interface
 from zope.i18nmessageid import MessageFactory
-from zope.schema import TextLine, DottedName
+from zope.schema import TextLine, DottedName, Bool
 
 _ = MessageFactory("cpsskins")
 
@@ -59,3 +59,8 @@
         required=False,
         )
 
+    basic = Bool(
+        title=_(u"Basic widget view"),
+        description=_(u"True if the widget provides a basic view."),
+        required=False,
+        )

Modified: cpsskins/branches/jmo-perspectives/configuration/widgets/widget.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/configuration/widgets/widget.py  
(original)
+++ cpsskins/branches/jmo-perspectives/configuration/widgets/widget.py  Fri Apr 
14 19:14:29 2006
@@ -42,14 +42,17 @@
 
     engine = Attribute(u"The engine's name")
 
+    basic = Attribute(u"True if the widget provides a basic view")
+
 class Widget(object):
     """A widget.
     """
     implements(IWidget)
 
-    def __init__(self, name=u'', title=u'', view=None, engine=u''):
+    def __init__(self, name=u'', title=u'', view=None, engine=u'', 
basic=False):
         self.name = name
         self.title = title
         self.view = view
         self.engine = engine
+        self.basic = basic
 

Modified: cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.py       
(original)
+++ cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.py       
Fri Apr 14 19:14:29 2006
@@ -64,10 +64,9 @@
 
 # Basic views to fall back to
 
-class BasicHTMLView(WidgetView):
+class PlainHTML(WidgetView):
     """Display the markup with minimal formatting
     """
-
     _preview = u'<div>' \
                '<h1 label="H1">Header level 1</h1>' \
                '<h2 label="H2">Header level 2</h2>' \
@@ -79,20 +78,20 @@
     def __call__(self, markup, info, **kw):
         return '<div>%s</div>' % markup
 
-class BasicImageView(WidgetView):
+class PlainImage(WidgetView):
     """Display an image with minimal formatting
     """
     def __call__(self, markup, info, **kw):
         return Image(self.context, self.request)(info.data)
 
-class BasicItemView(WidgetView):
+class PlainMenuItem(WidgetView):
     """Display an item with minimal formatting
     """
     def __call__(self, markup, info, **kw):
         data = info.data
         return u'<a href="%s">%s</a>' % (data.url, data.title)
 
-class BasicItemsView(WidgetView):
+class PlainMenuItems(WidgetView):
     """Display a series of items with minimal formatting
     """
     def __call__(self, markup, info, **kw):
@@ -205,7 +204,7 @@
         metadata = info.metadata
         title = metadata and metadata.title or ''
         return '<fieldset><legend>%s</legend>%s</fieldset>' % (
-                title, BasicHTMLView(self.context, self.request)(markup, info))
+                title, PlainHTML(self.context, self.request)(markup, info))
 
 
 class HorizontalScrollBar(HTMLView):

Modified: 
cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.zcml
==============================================================================
--- cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.zcml     
(original)
+++ cpsskins/branches/jmo-perspectives/standard/filters/widget/widgets.zcml     
Fri Apr 14 19:14:29 2006
@@ -2,33 +2,37 @@
     xmlns:zope="http://namespaces.zope.org/zope";
     xmlns="http://namespaces.zope.org/cpsskins";>
 
-  <!-- Plain widget views -->
+  <!-- Basic widget views -->
 
   <widget
       name="standard.plain_html"
-      view=".widgets.BasicHTMLView"
-      title="Basic HTML view"
+      view=".widgets.PlainHTML"
+      title="Plain HTML"
+      basic="True"
   />
 
   <widget
       name="standard.plain_image"
-      view=".widgets.BasicImageView"
+      view=".widgets.PlainImage"
       for="cpsskins.standard.ds.image.IImage"
-      title="Basic image view"
+      title="Plain image"
+      basic="True"
   />
 
   <widget
-      name="standard.plain_item"
-      view=".widgets.BasicItemView"
+      name="standard.plain_menuitem"
+      view=".widgets.PlainMenuItem"
       for="cpsskins.standard.ds.menuitem.IMenuItem"
-      title="Basic menu item view"
+      title="Plain menu item"
+      basic="True"
   />
 
   <widget
       name="standard.plain_items"
-      view=".widgets.BasicItemsView"
+      view=".widgets.PlainMenuItems"
       for="cpsskins.standard.ds.menuitems.IMenuItems"
-      title="Basic menu items view"
+      title="Plain menu items"
+      basic="True"
   />
 
 

Modified: cpsskins/branches/jmo-perspectives/standard/formats/widget.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/standard/formats/widget.py       
(original)
+++ cpsskins/branches/jmo-perspectives/standard/formats/widget.py       Fri Apr 
14 19:14:29 2006
@@ -19,12 +19,13 @@
 
 from persistent import Persistent
 from zope.app.schema.interfaces import IVocabularyFactory
+
 from zope.component import getUtilitiesFor
 from zope.component.factory import Factory
 from zope.interface import implements, implementedBy, alsoProvides
 from zope.i18nmessageid import MessageFactory
 from zope.schema.vocabulary import SimpleVocabulary
-from zope.schema import List
+from zope.schema import List, Choice
 
 from cpsskins import configuration
 from cpsskins.elements.format import Format
@@ -41,6 +42,7 @@
     types = List(
         title=_(u"Widget types"),
         description=_(u"The list of available widgets."),
+        value_type=Choice(vocabulary='Widgets'),
         )
 
 IWidget.setTaggedValue('name', u'widget')
@@ -64,11 +66,16 @@
                         "A Factory that creates Widgets")
 
 def WidgetsVocabulary(context):
-    """A vocabulary that contains the list of widgets in a given category.
+    """A vocabulary that contains the list of widgets.
     """
     widgets = []
     for id, widget in list(getUtilitiesFor(configuration.IWidget)):
+        # skip widgets registered for a specific engine and widgets providing
+        # basic views
+        if widget.engine or widget.basic:
+            continue
         widgets.append((_(widget.title), id))
+
     return SimpleVocabulary.fromItems(widgets)
 
 alsoProvides(WidgetsVocabulary, IVocabularyFactory)
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to