{-# LINE 2 "./Graphics/UI/Gtk/Builder.chs" #-}
module Graphics.UI.Gtk.Builder
(
Builder
, BuilderClass
, castToBuilder
, gTypeBuilder
, toBuilder
, BuilderError (..)
, builderNew
, builderAddFromFile
, builderAddFromString
, builderAddObjectsFromFile
, builderAddObjectsFromString
, builderGetObject
, builderGetObjects
, builderGetObjectRaw
, builderSetTranslationDomain
, builderGetTranslationDomain
) where
import Control.Exception (evaluate, throwIO, ErrorCall (..))
import System.Glib.FFI
import System.Glib.GError
import System.Glib.GList
import System.Glib.UTFString
import Graphics.UI.Gtk.Types
{-# LINE 104 "./Graphics/UI/Gtk/Builder.chs" #-}
{-# LINE 106 "./Graphics/UI/Gtk/Builder.chs" #-}
data BuilderError = BuilderErrorInvalidTypeFunction
| BuilderErrorUnhandledTag
| BuilderErrorMissingAttribute
| BuilderErrorInvalidAttribute
| BuilderErrorInvalidTag
| BuilderErrorMissingPropertyValue
| BuilderErrorInvalidValue
| BuilderErrorVersionMismatch
| BuilderErrorDuplicateId
deriving (Enum,Show,Eq)
{-# LINE 108 "./Graphics/UI/Gtk/Builder.chs" #-}
builderNew :: IO Builder
builderNew =
wrapNewGObject mkBuilder $
gtk_builder_new
{-# LINE 117 "./Graphics/UI/Gtk/Builder.chs" #-}
builderAddFromFile :: GlibFilePath fp => Builder -> fp -> IO ()
builderAddFromFile builder path =
propagateGError $ \errPtrPtr ->
withUTFFilePath path $ \pathPtr ->
(\(Builder arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_builder_add_from_file argPtr1 arg2 arg3)
{-# LINE 130 "./Graphics/UI/Gtk/Builder.chs" #-}
builder pathPtr errPtrPtr
>> return ()
builderAddFromString :: GlibString string => Builder -> string -> IO ()
builderAddFromString builder str =
propagateGError $ \errPtrPtr ->
withUTFStringLen str $ \(strPtr, strLen) ->
(\(Builder arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->gtk_builder_add_from_string argPtr1 arg2 arg3 arg4)
{-# LINE 145 "./Graphics/UI/Gtk/Builder.chs" #-}
builder strPtr (fromIntegral strLen) errPtrPtr
>> return ()
builderAddObjectsFromFile :: (GlibString string, GlibFilePath fp)
=> Builder
-> fp
-> [string]
-> IO ()
builderAddObjectsFromFile builder path ids =
propagateGError $ \errPtrPtr ->
withUTFFilePath path $ \pathPtr ->
withUTFStringArray0 ids $ \idsPtr ->
(\(Builder arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->gtk_builder_add_objects_from_file argPtr1 arg2 arg3 arg4)
{-# LINE 167 "./Graphics/UI/Gtk/Builder.chs" #-}
builder pathPtr idsPtr errPtrPtr
>> return ()
builderAddObjectsFromString :: GlibString string
=> Builder
-> string
-> [string]
-> IO ()
builderAddObjectsFromString builder str ids =
propagateGError $ \errPtrPtr ->
withUTFStringLen str $ \(strPtr, strLen) ->
withUTFStringArray0 ids $ \idsPtr ->
(\(Builder arg1) arg2 arg3 arg4 arg5 -> withForeignPtr arg1 $ \argPtr1 ->gtk_builder_add_objects_from_string argPtr1 arg2 arg3 arg4 arg5)
{-# LINE 188 "./Graphics/UI/Gtk/Builder.chs" #-}
builder strPtr (fromIntegral strLen) idsPtr errPtrPtr
>> return ()
builderGetObjectRaw :: GlibString string => Builder
-> string
-> IO (Maybe GObject)
builderGetObjectRaw builder name =
withUTFString name $ \namePtr ->
maybeNull (makeNewGObject mkGObject) $
(\(Builder arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_builder_get_object argPtr1 arg2)
{-# LINE 204 "./Graphics/UI/Gtk/Builder.chs" #-}
builder namePtr
builderGetObject :: (GObjectClass cls, GlibString string) =>
Builder
-> (GObject -> cls)
-> string
-> IO cls
builderGetObject builder cast name = do
raw <- builderGetObjectRaw builder name
case raw of
Just obj -> evaluate . cast $ obj
Nothing -> throwIO . ErrorCall $
"Gtk.Builder.builderGetObject: no object named " ++ show name ++ " in the builder."
builderGetObjects :: Builder -> IO [GObject]
builderGetObjects builder =
(\(Builder arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_builder_get_objects argPtr1)
{-# LINE 232 "./Graphics/UI/Gtk/Builder.chs" #-}
builder
>>= readGSList
>>= mapM (makeNewGObject mkGObject . return)
builderSetTranslationDomain :: GlibString string => Builder -> Maybe string -> IO ()
builderSetTranslationDomain builder domain =
maybeWith withUTFString domain $ \domainPtr ->
(\(Builder arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_builder_set_translation_domain argPtr1 arg2)
{-# LINE 241 "./Graphics/UI/Gtk/Builder.chs" #-}
builder domainPtr
builderGetTranslationDomain :: GlibString string => Builder -> IO (Maybe string)
builderGetTranslationDomain builder =
(\(Builder arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_builder_get_translation_domain argPtr1)
{-# LINE 247 "./Graphics/UI/Gtk/Builder.chs" #-}
builder
>>= maybePeek peekUTFString
foreign import ccall unsafe "gtk_builder_new"
gtk_builder_new :: (IO (Ptr Builder))
foreign import ccall unsafe "gtk_builder_add_from_file"
gtk_builder_add_from_file :: ((Ptr Builder) -> ((Ptr CChar) -> ((Ptr (Ptr ())) -> (IO CUInt))))
foreign import ccall unsafe "gtk_builder_add_from_string"
gtk_builder_add_from_string :: ((Ptr Builder) -> ((Ptr CChar) -> (CULong -> ((Ptr (Ptr ())) -> (IO CUInt)))))
foreign import ccall unsafe "gtk_builder_add_objects_from_file"
gtk_builder_add_objects_from_file :: ((Ptr Builder) -> ((Ptr CChar) -> ((Ptr (Ptr CChar)) -> ((Ptr (Ptr ())) -> (IO CUInt)))))
foreign import ccall unsafe "gtk_builder_add_objects_from_string"
gtk_builder_add_objects_from_string :: ((Ptr Builder) -> ((Ptr CChar) -> (CULong -> ((Ptr (Ptr CChar)) -> ((Ptr (Ptr ())) -> (IO CUInt))))))
foreign import ccall unsafe "gtk_builder_get_object"
gtk_builder_get_object :: ((Ptr Builder) -> ((Ptr CChar) -> (IO (Ptr GObject))))
foreign import ccall unsafe "gtk_builder_get_objects"
gtk_builder_get_objects :: ((Ptr Builder) -> (IO (Ptr ())))
foreign import ccall unsafe "gtk_builder_set_translation_domain"
gtk_builder_set_translation_domain :: ((Ptr Builder) -> ((Ptr CChar) -> (IO ())))
foreign import ccall unsafe "gtk_builder_get_translation_domain"
gtk_builder_get_translation_domain :: ((Ptr Builder) -> (IO (Ptr CChar)))