Kevin Dangoor wrote:
> On 4/27/06, Jorge Godoy <[EMAIL PROTECTED]> wrote:
> > But you're supposing that "common_widget" is *one* widget only.  What if it 
> > is
> > a "list" (I'd write set but we have it in Python as well, so... ;-)) of 
> > them?
>
> Can (or should) it actually be a CompoundWidget?
>
> I'm not really comfortable with a WidgetList being used in this way. A
> WidgetList is just a little syntax sugar around a list. What you end
> up with is a list of widgets ready to drop into a form.
>
> Going back to your original example:
>
> class CommonWidget(widgets.WidgetsList):
>    my_common_widget = widgets.SomeField(...)
>
> class UseCommonWidget(widgets.WidgetsList):
>    one_widget = widgets.OneField(...)
>    another_widget = widgets.AnotherField(...)
>    common = CommonWidget()[0]
>
> class UseCommonWidgetAsWell(widgets.WidgetsList):
>    other_widget = widgets.OtherField(...)
>    yet_another_widget = widgets.YetAnotherField(...)
>    common = CommonWidget()[0]
>    after_common_widget = widgets.AfterCommonField(...)
>
>
> I see what you're getting at: you essentially want to define a widget
> with all of its options once and then use it in different contexts.
> While a single widget can be used in many requests, it *is* fairly
> tightly bound to its name. The cleaner solution, to me, than nesting
> WidgetLists is to subclass the widget that you want to use commonly.
> This is untested, but I think it will work:
>
> class MyCommonWidget(widgets.SomeField):
>     option1 = "foo"
>     option2 = "bar"
>
> class UseCommonWidget(widgets.WidgetsList):
>    one_widget = widgets.OneField(...)
>    another_widget = widgets.AnotherField(...)
>    common =MyCommonWidget()
>
> class UseCommonWidgetAsWell(widgets.WidgetsList):
>    other_widget = widgets.OtherField(...)
>    yet_another_widget = widgets.YetAnotherField(...)
>    common = MyCommonWidget()
>    after_common_widget = widgets.AfterCommonField(...)
>

Yep, that was an other option I haven't proposed that will work well
and it's pretty clear, if you really don't want to subclass just use a
function that returns a *new* instance at every call, not the same like
a WidgetsList does.

I also don't feel comfortable to hack WidgetsList in this way since
it's meant to be just syntax sugar as Kevin said.

Ciao
Michele


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears Trunk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/turbogears-trunk
-~----------~----~----~----~------~----~------~--~---

Reply via email to