module Manatee.Toolkit.Gtk.ScrolledWindow where
import Graphics.UI.Gtk
data AdjustmentDirection = AdjustmentVertical
| AdjustmentHorizontal
scrolledWindowNew_ :: IO ScrolledWindow
scrolledWindowNew_ = do
scrolledWindow <- scrolledWindowNew Nothing Nothing
scrolledWindowSetPolicy scrolledWindow PolicyAutomatic PolicyAutomatic
return scrolledWindow
scrolledWindowScrollToTop, scrolledWindowScrollToLeft :: ScrolledWindowClass sw => sw -> IO ()
scrolledWindowScrollToTop =
scrolledWindowScrollToLower AdjustmentVertical
scrolledWindowScrollToLeft =
scrolledWindowScrollToLower AdjustmentHorizontal
scrolledWindowScrollToBottom, scrolledWindowScrollToRight :: ScrolledWindowClass sw => sw -> IO ()
scrolledWindowScrollToBottom =
scrolledWindowScrollToUpper AdjustmentVertical
scrolledWindowScrollToRight =
scrolledWindowScrollToUpper AdjustmentHorizontal
scrolledWindowScrollVerticalPage, scrolledWindowScrollHorizontalPage :: ScrolledWindowClass sw => Bool -> sw -> IO ()
scrolledWindowScrollVerticalPage =
scrolledWindowScrollPage AdjustmentVertical
scrolledWindowScrollHorizontalPage =
scrolledWindowScrollPage AdjustmentHorizontal
scrolledWindowScrollVerticalStep, scrolledWindowScrollHorizontalStep :: ScrolledWindowClass sw => Bool -> sw -> IO ()
scrolledWindowScrollVerticalStep =
scrolledWindowScrollStep AdjustmentVertical
scrolledWindowScrollHorizontalStep =
scrolledWindowScrollStep AdjustmentHorizontal
scrolledWindowIsAtTop, scrolledWindowIsAtLeft :: ScrolledWindowClass sw => sw -> IO Bool
scrolledWindowIsAtTop =
scrolledWindowIsAtLower AdjustmentVertical
scrolledWindowIsAtLeft =
scrolledWindowIsAtLower AdjustmentHorizontal
scrolledWindowIsAtBottom, scrolledWindowIsAtRight :: ScrolledWindowClass sw => sw -> IO Bool
scrolledWindowIsAtBottom =
scrolledWindowIsAtUpper AdjustmentVertical
scrolledWindowIsAtRight =
scrolledWindowIsAtUpper AdjustmentHorizontal
scrolledWindowGetAdjustment :: ScrolledWindowClass sw => sw -> AdjustmentDirection -> IO Adjustment
scrolledWindowGetAdjustment sw AdjustmentVertical =
scrolledWindowGetVAdjustment sw
scrolledWindowGetAdjustment sw AdjustmentHorizontal =
scrolledWindowGetHAdjustment sw
scrolledWindowScrollToLower :: ScrolledWindowClass sw => AdjustmentDirection -> sw -> IO ()
scrolledWindowScrollToLower direction sw = do
aj <- scrolledWindowGetAdjustment sw direction
lo <- adjustmentGetLower aj
adjustmentSetValue aj lo
scrolledWindowScrollToUpper :: ScrolledWindowClass sw => AdjustmentDirection -> sw -> IO ()
scrolledWindowScrollToUpper direction sw = do
aj <- scrolledWindowGetAdjustment sw direction
up <- adjustmentGetUpper aj
ps <- adjustmentGetPageSize aj
adjustmentSetValue aj (up ps)
scrolledWindowScrollPage :: ScrolledWindowClass sw => AdjustmentDirection -> Bool -> sw -> IO ()
scrolledWindowScrollPage direction isDown sw = do
aj <- scrolledWindowGetAdjustment sw direction
ps <- adjustmentGetPageSize aj
lo <- adjustmentGetLower aj
up <- adjustmentGetUpper aj
cr <- adjustmentGetValue aj
adjustmentSetValue aj (if isDown
then min (up ps) (cr + ps)
else max lo (cr ps))
scrolledWindowScrollStep :: ScrolledWindowClass sw => AdjustmentDirection -> Bool -> sw -> IO ()
scrolledWindowScrollStep direction isDown sw = do
aj <- scrolledWindowGetAdjustment sw direction
si <- adjustmentGetStepIncrement aj
ps <- adjustmentGetPageSize aj
lo <- adjustmentGetLower aj
up <- adjustmentGetUpper aj
cr <- adjustmentGetValue aj
adjustmentSetValue aj (if isDown
then min (up ps) (cr + si)
else max lo (cr si))
scrolledWindowIsAtLower :: ScrolledWindowClass sw => AdjustmentDirection -> sw -> IO Bool
scrolledWindowIsAtLower direction sw = do
aj <- scrolledWindowGetAdjustment sw direction
lo <- adjustmentGetLower aj
cr <- adjustmentGetValue aj
return (cr <= lo)
scrolledWindowIsAtUpper :: ScrolledWindowClass sw => AdjustmentDirection -> sw -> IO Bool
scrolledWindowIsAtUpper direction sw = do
aj <- scrolledWindowGetAdjustment sw direction
ps <- adjustmentGetPageSize aj
up <- adjustmentGetUpper aj
cr <- adjustmentGetValue aj
return (cr >= up ps)