- Testing: - Write quickcheck properties for Text.Trans.Tokenize! - Widgets: - Scrollable area (a generalization of the List) which can wrap a widget and make it scrollable in a confined space. To make this work, we may need masking support in Vty. Scrolling is really just (top, left, widget, mask window size) where the window size depends on available space and top/left positions are modified by the application as scrolling requests are received. - horizontal / vertical boxes which can take absolute values or percentages to determine how to allocate space to their children (this may entail re-tooling the existing types to take one of various space allocation specifiers). Maybe something like: Size = Absolute Int Int | Percent Int | Auto sizedHBox :: Widget -> Widget -> Size -> Widget Sizing policy (Size) determines how a box reserves space for each of its two children. Percent a implies (100-a) percent space allocated for one child. Absolute a b implies a rows or columns for the "first" child and b rows or columns for the "second" child. Auto implies that the box may grow to accomodate the size of its children. - table widget for laying out name/value pairs in nice format - support for right-aligning text (just left-padding?)