I believe that its possible, but I wasn't able to get it to work.
There are no examples of Manipulate control layouts in your link, and
I can't find any examples in the Manipulate help.  The standard
controls cannot simply be wrapped by Row.

So I guess my point is, while such layouts may be supported in theory
in Mathematica, in practice it is not common or simple to do.  So I
don't think we need to worry too much about cloning its behavior,
because few migrants from Mathematica will have used that
functionality.  I prefer your original idea of seperating the layout
commands from the controls.

-Marshall

On Nov 3, 11:51 am, Jason Grout <jason-s...@creativetrax.com> wrote:
> William Stein wrote:
> > On Tue, Nov 3, 2009 at 1:04 AM, Jason Grout <jason-s...@creativetrax.com> 
> > wrote:
> >> I just spent some time thinking about how to specify layouts for
> >> interact controls.  Here's a possible syntax:
>
> >> @interact(layout=[['a','b'],['c','d']])
> >> def _(a=1,b=(2,3),c="hi",d=x+1):
> >>     print a,b,c,d
>
> >> This would lay out a table with a and b in the same row, then c and d in
> >> the same row.
>
> >> More generally, we can use templates (jinja2?) and html:
>
> >> @interact(layout="""
> >> some template code, containing variables a, b, c, d, that are each set
> >> to the html representation of the control
> >> """)
> >> def _(a=1,b=(2,3),c="hi",d=x+1):
> >>     print a,b,c,d
>
> >> What do people think?  I think these changes would be fairly easy to
> >> implement, and would be backwards-compatible with what we have now.
>
> >> Another option would be having the layout a parameter of the actual
> >> function:
>
> >> @interact
> >> def _(a=1,b=(2,3),c="hi",d=x+1, layout="""
> >> some template code, containing variables a, b, c, d, that are each set
> >> to the html representation of the control
> >> """)):
> >>     print a,b,c,d
>
> >> Or we could do things more like mathematica does, and let you just
> >> specify the layout when you specify the variables:
>
> >> @interact
> >> def _(row(('a',1),('b',(2,3))),row(['c',"hi"],['d',x+1])):
> >>     print a,b,c,d
>
> >> or something.  This sort of obscures the variables you are using,
> >> though, and makes it hard to change layouts; it greatly confuses the
> >> content and presentation.  It also makes it difficult to use the
> >> function outside of interacts, whereas separately specifying the layout
> >> as above makes it easy to use the function outside of the interact
> >> framework.
>
> > What do other systems do to specify layout?   The interact controls
> > are based on the Mathematica's "Manipulate", so that users of
> > Manipulate will have less trouble transition to Sage's interact.
> > Surely mathematica has a system for laying out controls.  Is your
> > design above informed at all by that/   Also, I like the idea of just
> > using HTML (e.g., your jinja suggestions), since HTML/CSS is a
> > standard way to layout web pages.
>
> In the end, of course, everything would be html.  That means that in the
> end, you can have your draggable controls by just writing the right
> jquery/whatever html as containers for the controls.  The nested list
> layout above is just a convenience for constructing a grid of controls.
>
> Mathematica definitely does have a system for laying out things.  The
> "row" example above mirrors that.  
> Seehttp://reference.wolfram.com/mathematica/tutorial/GridsRowsAndColumns...
> for documentation, for example.  Basically, you can use any layout
> functionality in Mathematica for the controls, since the Manipulate is
> just a wrapper around Dynamic and DynamicModule functionality.  So
> Mathematica allows, in place of a specifying a control, a layout
> specification: "Possible annotations given in place of controls include
> expressions with heads String, Style, Row, Item, Text, ExpressionCell,
> TextCell as well as views and layout constructs such as TabView and Grid."
>
> We don't have a rich layout language, but we could make such a layout
> language and convert grid, row, column, tabview, etc. constructs to bits
> of html code, or to qt code if we did an Envisage frontend, etc.
>
> Thanks,
>
> Jason
>
> --
> Jason Grout
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to