uni-htk-2.2.0.0: HTk/Kernel/PackOptions.hs
-- | Packing options for the pack geometry manager.
module HTk.Kernel.PackOptions (
PackOption(..),
SideSpec(..), -- left, right, top, bottom
FillSpec(..),
showPackOptions
) where
import HTk.Kernel.Resources
import HTk.Kernel.Geometry
-- -----------------------------------------------------------------------
-- standard pack options
-- -----------------------------------------------------------------------
-- | The @SideSpec@ datatype.
data SideSpec = AtLeft | AtRight | AtTop | AtBottom
-- | The @FillSpec@ datatype.
data FillSpec = X | Y | Both | None
-- | Internal.
instance Show SideSpec where
-- Internal.
showsPrec d AtLeft r = "left" ++ r
showsPrec d AtRight r = "right" ++ r
showsPrec d AtTop r = "top" ++ r
showsPrec d AtBottom r = "bottom" ++ r
-- | Internal.
instance Show FillSpec where
-- Internal.
showsPrec d X r = "x" ++ r
showsPrec d Y r = "y" ++ r
showsPrec d Both r = "both" ++ r
showsPrec d None r = "none" ++ r
data PackOption =
Side SideSpec -- ^ side to pack the widget
| Fill FillSpec -- ^ orientations to fill.
| Expand Toggle -- ^ expand toggle
| IPadX Distance -- ^ inner horizontal pad
| IPadY Distance -- ^ inner vertical pad
| PadX Distance -- ^ horizontal pad
| PadY Distance -- ^ vertical pad
| Anchor Anchor -- ^ anchor position
-- | Internal.
instance Show PackOption where
-- Internal.
showsPrec d (Side spec) r = "side " ++ show spec ++ r
showsPrec d (Fill spec) r = "fill " ++ show spec ++ r
showsPrec d (Expand t) r = "expand " ++ show t ++ r
showsPrec d (IPadX i) r = "ipadx " ++ show i ++ r
showsPrec d (IPadY i) r = "ipady " ++ show i ++ r
showsPrec d (PadX i) r = "padx " ++ show i ++ r
showsPrec d (PadY i) r = "pady " ++ show i ++ r
showsPrec d (Anchor a) r = "anchor " ++ show a ++ r
-- | Internal.
showPackOptions :: [PackOption] -> String
showPackOptions [] = ""
showPackOptions (opt : opts) =
"-" ++ show opt ++ " " ++ showPackOptions opts