module Basic where
import Control.Monad.State
import Graphics.UI.Gtk
import CanBeCasted
import RPN
cWID = RPN . pushWidget
cALN = io2rpn . \x -> alignmentNew x 0.5 0 0
cARW = io2rpn . \t -> arrowNew t ShadowNone
cAFR = io2rpn (aspectFrameNew 0.5 0.5 Nothing)
cBTNSTK = io2rpn . buttonNewFromStock
cBTNCLRCL = io2rpn . colorButtonNewWithColor
cEXN = io2rpn . expanderNew
cBTNFLE = io2rpn . fileChooserButtonNew ""
cBTNFONFN = io2rpn . fontButtonNewWithFont
cFRM = io2rpn frameNew
cHBX = io2rpn (hBoxNew False 0)
cVBX = io2rpn (vBoxNew False 0)
cHBXBTN = io2rpn hButtonBoxNew
cVBXBTN = io2rpn vButtonBoxNew
cHPD = io2rpn hPanedNew
cVPD = io2rpn vPanedNew
cHSCRNG = (io2rpn .). \mi ma -> hScaleNewWithRange mi ma ((mi+ma)/2)
cVSCRNG = (io2rpn .). \mi ma -> vScaleNewWithRange mi ma ((mi+ma)/2)
cHSP = io2rpn hSeparatorNew
cVSP = io2rpn vSeparatorNew
cIMGFLE = io2rpn . imageNewFromFile
cLBL = io2rpn . labelNew . Just
cNBK = io2rpn notebookNew
cSRL = io2rpn $ scrolledWindowNew Nothing Nothing
cLAY = io2rpn $ layoutNew Nothing Nothing
cSKT = io2rpn socketNew
cBTNSPIRNG = (io2rpn .). \mi ma -> spinButtonNewWithRange mi ma ((mi+ma)/2)
cTVWBF = io2rpn . textViewNewWithBuffer
cWND = io2rpn windowNew
tON s c = RPN $ touchWidget $ \w -> on w s c >> return ()
tONBUTTON = tON :: Signal Button c -> c -> RPN
tSET a = RPN $ touchWidget $ ( $ a ) . set
tSETFRAME = tSET :: [AttrOp Frame] -> RPN
tSETLABEL = tSET :: [AttrOp Label] -> RPN
tSETWINDOW = tSET :: [AttrOp Window] -> RPN
tCBK f = RPN $ touchWidget cb
where cb w = (after w realize $ f w) >> return ()
tCBKCOLOR = tCBK :: (ColorButton -> IO ()) -> RPN
tCBKFONT = tCBK :: (FontButton -> IO ()) -> RPN
tCBKRANGE = tCBK :: (Range -> IO ()) -> RPN
tCBKSOCKET = tCBK :: (Socket -> IO ()) -> RPN
tCBKSPIN = tCBK :: (SpinButton -> IO ()) -> RPN
pCA = RPN $
let { ca :: Container -> Widget -> IO () ; ca = containerAdd }
in pullWidget ca
pBPE p = RPN $
let { bpe :: Box -> Widget -> IO () ; bpe b w = boxPackEnd b w p 0 }
in pullWidget bpe
pPP1 r = RPN $
let { pp1 :: Paned -> Widget -> IO () ; pp1 p w = panedPack1 p w r False }
in pullWidget pp1
pPP2 r = RPN $
let { pp2 :: Paned -> Widget -> IO () ; pp2 p w = panedPack2 p w r False }
in pullWidget pp2
pNPP s = RPN $
let
npp :: Notebook -> Widget -> IO ()
npp l w = notebookPrependPage l w s >> return ()
in pullWidget npp
pLAY = RPN $
let
lay :: Layout -> Widget -> IO ()
lay la w = layoutPut la w 0 0
in pullWidget lay