Robin Haswell wrote:
> > Hi Matt,
> >
> > Thanks for pointing this out, your right indeed!
> > I forgot that a dict doesn't preserve the order (sorry guys) (any news
> > in the python world regarding this? I can't see how maintaining the
> > order could ever hurt, while mixing it sometimes hurts, WidgetsList...
> > :-().
> >
> > Your hybrid solution looks good but probably requires too much
> > verbosity, for today I'm stopping here, let's see what other thinks, to
> > recap:
> >
> > 1) My solution n°1
> >
> > 2) Matt solution
> >
> > vote please! ;-)
> >
> > Ciao
> > Michele
>
> Hey Michele, thanks for looking in to this. I was just about to cross "Open 
> ticket on optgroups" on
> my todo list when I noticed that it seems a bit redundant now. Can I add my 
> $0.02 on this?
>
> Regarding SingleSelectField vs SingleSelectFieldWithOptgroups, I think this 
> is unnecessary as the
> format of the parameter is going to make this rather obvious, and the two 
> aren't necessarily exclusive.
>
> I propose the solution of:
>
> [
>      (None, ["Please choose an option"]),
>      ('Dynamic Languages',
>          [(1, "Python"), (2, "Ruby")]
>      ),
>      ('Others',
>          [(3, "Java"), (4, "C++")]
>      ),
> ]
>
> This gives us the advantage of allowing us to `zip` two lists - a list of 
> optgroups and a list of
> options:
>
> optgroups = [None, "Dynamic Languages", "Others"]
> options = [
>      ["Please choose an option"],
>      [(1, "Python"), (2, "Ruby")],
>      [(3, "Java"), (4, "C++")]
> ]
> select_options = zip(optgroups, options)
>
>  >>> print select_options
> [(None, ['Please choose an option']), ('Dynamic Languages', [(1, 'Python'), 
> (2, 'Ruby')]),
> ('Others', [(3, 'Java'), (4, 'C++')])]
>  >>>
>
> I think my solution is more semantically accurate (and easier to generate the 
> structure)3 than the
> equivalent dict option, however differentiating between what is supposed to 
> be a regular single
> select field and what is supposed to have optgroups might be a bit messy:
>
> for value, option in options:
>      if type(option) is list:
>          # optgroup code
>          pass
>      else:
>          # just show an <option/>
>          pass
>
> However, this allows us to simplify our case of when we don't want an 
> optgroup before some optgroups to:
>
> [
>      (None, "Please choose an option"), # The second value of this tuple is 
> not a list
>      ('Dynamic Languages',
>          [(1, "Python"), (2, "Ruby")]
>      ),
>      ('Others',
>          [(3, "Java"), (4, "C++")]
>      ),
> ]
>
> Of course, if detecting whether we want an optgroup or not is a bit messy, we 
> could always have an
> OptGroup widget. I'm not a fan of this plan though as I think more class 
> hoop-jumping is bad :-/
>
> Cheers
>
> -Rob

Hi Robin,

Thanks for the feedback, incidentally this is the exact syntax I
ended-up to implement yesterday:

http://tinyurl.com/hpzbj

You will probably find this into 0.9a6 since I'm going to commit it...
;-)

Ciao
Michele


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to