packages feed

ltk-0.16.1.0: src/Graphics/UI/Utils.hs

{-# LANGUAGE LambdaCase #-}
module Graphics.UI.Utils (
    setPrimaryAlign
  , setSecondaryAlign
  , setPrimaryExpand
  , setSecondaryExpand
) where

import Control.Monad.IO.Class (MonadIO)
import GI.Gtk
       (widgetSetVexpand, widgetSetHexpand, widgetSetValign,
        widgetSetHalign, orientableGetOrientation, Align, IsWidget,
        IsOrientable)
import GI.Gtk.Enums (Orientation(..))

setPrimaryAlign :: (MonadIO m, IsOrientable parent, IsWidget child) => parent -> child -> Align -> m ()
setPrimaryAlign parent child align =
    orientableGetOrientation parent >>= \case
        OrientationHorizontal -> widgetSetHalign child align
        OrientationVertical   -> widgetSetValign child align

setPrimaryExpand :: (MonadIO m, IsOrientable parent, IsWidget child) => parent -> child -> Bool -> m ()
setPrimaryExpand parent child expand =
    orientableGetOrientation parent >>= \case
        OrientationHorizontal -> widgetSetHexpand child expand
        OrientationVertical   -> widgetSetVexpand child expand

setSecondaryAlign :: (MonadIO m, IsOrientable parent, IsWidget child) => parent -> child -> Align -> m ()
setSecondaryAlign parent child align =
    orientableGetOrientation parent >>= \case
        OrientationHorizontal -> widgetSetValign child align
        OrientationVertical   -> widgetSetHalign child align

setSecondaryExpand :: (MonadIO m, IsOrientable parent, IsWidget child) => parent -> child -> Bool -> m ()
setSecondaryExpand parent child expand =
    orientableGetOrientation parent >>= \case
        OrientationHorizontal -> widgetSetVexpand child expand
        OrientationVertical   -> widgetSetHexpand child expand