-- | A collection of small functions to help retrieve -- information from Glade files. module Graphics.UI.Gtk.Extra.Builder ( fromBuilder , loadInterface ) where import Graphics.UI.Gtk -- | Graphics.UI.Gtk.builderGetObject with the arguments flipped -- (Builder goes last). fromBuilder :: (GObjectClass cls) => (GObject -> cls) -> String -> Builder -> IO cls fromBuilder f s b = builderGetObject b f s -- | Returns a builder from which the objects in this part of the interface -- can be accessed. loadInterface :: String -> IO Builder loadInterface fn = builderNew `incidentallyM` (`builderAddFromFile` fn) -- It can be written in point-free style, but I'm not sure it's -- clearer -- loadInterface = incidentallyM builderNew . flip builderAddFromFile -- -- | Returns a builder from which the objects in this part of the interface -- -- -- -- can be accessed. -- loadInterface :: String -> IO Builder -- loadInterface builderPath = do -- builder <- builderNew -- builderAddFromFile builder builderPath -- return builder -- | Sequences two monadic computations and returns the -- result of the first. incidentallyM :: Monad m => m a -> (a -> m b) -> m a incidentallyM op f = op >>= (\x -> (f x >> return x))