Personal tools

WxHaskell/Layout

From HaskellWiki

< WxHaskell(Difference between revisions)
Jump to: navigation, search
(troubleshooting section)
(Troubleshooting)
Line 41: Line 41:
   
 
=== Too small ===
 
=== Too small ===
  +
  +
* '''Problem''': widgets do not resize when window is resized
  +
'''Solution''': make sure you are using the <code>stretch</code> combinators. Remember that columns only (h)stretch if all their members (h)stretch, and similarly for rows and vstretch.
   
 
=== Too big ===
 
=== Too big ===
   
=== Too static ===
+
* '''Problem''' ginormous text entry field
  +
'''Solution''' make sure the widget is placed in the correct parent.
   
 
== See also ==
 
== See also ==

Revision as of 11:21, 15 January 2012

Contents

1 Layout

All details are based on using wxHaskell on Microsoft Windows XP.

1.1 Layout setting by gridding

In general, we can create layout by setting the layout argument in a frame or a panel, for example,

gui = do f <- frame [ text := "Layout" ]
         p <- panel f []
         b <- button p [ text := "button" ]
         set f [ layout := margin 2 $ container p $ floatCenter $
                              widget b
               , clientSize := sz 100 100
               ]


I will call this Layout setting by gridding.

Gridding means using the layout function, such as grid, row, column etc, to set the layout.

1.2 Layout setting by positioning

Also, we could set the layout by another way, Layout setting by positioning

gui = do f <- frame [ text := "Layout"
                    , clientSize := sz 100 100 ]
         p <- panel f [ clientSize := sz 98 98,
                      , position := pt 2 2 ]
         b <- button p [ text := "button"
                       , position := pt 45 45 ]


The result of both examples are about the same, only the button position has a bit different. (Please measure the exact position by yourself). By this way, we can have more flexible layout rather than limited the layout by grids.

1.3 Layout reconfiguration

We can also re-configure the layout by just simply re-assign a new layout value to the layout. But remember, do not assign the same tab to the layout twice, it will append the same tab to the notebook. To prevent this, assign an empty list to the notebook

f <- frame [ text := "Layout" ]
nb <- notebook f []
set f [ layout := tabs nb [] ]


2 Troubleshooting

2.1 Too small

  • Problem: widgets do not resize when window is resized

Solution: make sure you are using the stretch combinators. Remember that columns only (h)stretch if all their members (h)stretch, and similarly for rows and vstretch.

2.2 Too big

  • Problem ginormous text entry field

Solution make sure the widget is placed in the correct parent.

3 See also

Button sizing - It has problems to set the size of button