module Graphics.UI.WX.TopLevelWindow
( initialResizeable
, initialMaximizeable
, initialMinimizeable
, initialCloseable
) where
import Graphics.UI.WXCore
import Graphics.UI.WX.Types
import Graphics.UI.WX.Attributes
import Graphics.UI.WX.Classes
import Graphics.UI.WX.Layout
import Graphics.UI.WX.Window
import Graphics.UI.WX.Events
instance HasDefault (TopLevelWindow a) where
unsafeDefaultItem = newAttr "unsafeDefaultItem" getter setter
where
getter :: (TopLevelWindow a) -> IO (Window ())
getter tlw = topLevelWindowGetDefaultItem tlw
setter tlw win = topLevelWindowSetDefaultItem tlw win
defaultButton = newAttr "defaultButton" getter setter
where
getter :: (TopLevelWindow a) -> IO (Button ())
getter tlw = topLevelWindowGetDefaultButton tlw
setter tlw win = topLevelWindowSetDefaultButton tlw win
instance Pictured (TopLevelWindow a) where
picture = writeAttr "picture" topLevelWindowSetIconFromFile
instance Framed (TopLevelWindow a) where
resizeable = windowResizeable
maximizeable = windowMaximizeable
minimizeable = windowMinimizeable
closeable = windowCloseable
instance Form (Frame a) where
layout = writeAttr "layout" windowSetLayout
instance Closeable (Frame a) where
close f
= unitIO (windowClose f True )
windowResizeable :: CreateAttr (Window a) Bool
windowResizeable
= reflectiveAttr "resizeable" getFlag setFlag
where
getFlag w
= do s <- get w style
return (bitsSet wxRESIZE_BORDER s)
setFlag w resize
= set w [style :~ \stl -> if resize
then stl .+. wxRESIZE_BORDER .+. wxMAXIMIZE_BOX
else stl .-. wxRESIZE_BORDER .-. wxMAXIMIZE_BOX]
initialResizeable :: ([Prop (Window w)] -> Style -> a) -> [Prop (Window w)] -> Style -> a
initialResizeable
= withStyleProperty windowResizeable (wxRESIZE_BORDER .+. wxMAXIMIZE_BOX)
windowMaximizeable :: CreateAttr (Window a) Bool
windowMaximizeable
= reflectiveAttr "maximizeable" getFlag setFlag
where
getFlag w
= do s <- get w style
return (bitsSet wxMAXIMIZE_BOX s)
setFlag w max
= set w [style :~ \stl -> if max then stl .+. wxMAXIMIZE_BOX else stl .-. wxMAXIMIZE_BOX]
initialMaximizeable :: ([Prop (Window w)] -> Style -> a) -> [Prop (Window w)] -> Style -> a
initialMaximizeable
= withStyleProperty windowMaximizeable wxMAXIMIZE_BOX
windowMinimizeable :: CreateAttr (Window a) Bool
windowMinimizeable
= reflectiveAttr "minimizeable" getFlag setFlag
where
getFlag w
= do s <- get w style
return (bitsSet wxMINIMIZE_BOX s)
setFlag w min
= set w [style :~ \stl -> if min then stl .+. wxMINIMIZE_BOX else stl .-. wxMINIMIZE_BOX]
initialMinimizeable :: ([Prop (Window w)] -> Style -> a) -> [Prop (Window w)] -> Style -> a
initialMinimizeable
= withStyleProperty windowMinimizeable wxMINIMIZE_BOX
windowCloseable :: CreateAttr (Window a) Bool
windowCloseable
= reflectiveAttr "closeable" getFlag setFlag
where
getFlag w
= do s <- get w style
return (bitsSet wxCLOSE_BOX s)
setFlag w min
= set w [style :~ \stl -> if min then stl .+. wxCLOSE_BOX else stl .-. wxCLOSE_BOX]
initialCloseable :: ([Prop (Window w)] -> Style -> a) -> [Prop (Window w)] -> Style -> a
initialCloseable
= withStyleProperty windowCloseable wxCLOSE_BOX