packages feed

gi-gtk-0.3.18.14: GI/Gtk/Objects/FileFilter.hs


{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

module GI.Gtk.Objects.FileFilter
    ( 

-- * Exported types
    FileFilter(..)                          ,
    FileFilterK                             ,
    toFileFilter                            ,
    noFileFilter                            ,


 -- * Methods
-- ** fileFilterAddCustom
    FileFilterAddCustomMethodInfo           ,
    fileFilterAddCustom                     ,


-- ** fileFilterAddMimeType
    FileFilterAddMimeTypeMethodInfo         ,
    fileFilterAddMimeType                   ,


-- ** fileFilterAddPattern
    FileFilterAddPatternMethodInfo          ,
    fileFilterAddPattern                    ,


-- ** fileFilterAddPixbufFormats
    FileFilterAddPixbufFormatsMethodInfo    ,
    fileFilterAddPixbufFormats              ,


-- ** fileFilterFilter
    FileFilterFilterMethodInfo              ,
    fileFilterFilter                        ,


-- ** fileFilterGetName
    FileFilterGetNameMethodInfo             ,
    fileFilterGetName                       ,


-- ** fileFilterGetNeeded
    FileFilterGetNeededMethodInfo           ,
    fileFilterGetNeeded                     ,


-- ** fileFilterNew
    fileFilterNew                           ,


-- ** fileFilterSetName
    FileFilterSetNameMethodInfo             ,
    fileFilterSetName                       ,




    ) where

import Data.GI.Base.ShortPrelude

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gtk.Types
import GI.Gtk.Callbacks
import qualified GI.GLib as GLib
import qualified GI.GObject as GObject

newtype FileFilter = FileFilter (ForeignPtr FileFilter)
foreign import ccall "gtk_file_filter_get_type"
    c_gtk_file_filter_get_type :: IO GType

type instance ParentTypes FileFilter = FileFilterParentTypes
type FileFilterParentTypes = '[GObject.Object, Buildable]

instance GObject FileFilter where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gtk_file_filter_get_type
    

class GObject o => FileFilterK o
instance (GObject o, IsDescendantOf FileFilter o) => FileFilterK o

toFileFilter :: FileFilterK o => o -> IO FileFilter
toFileFilter = unsafeCastTo FileFilter

noFileFilter :: Maybe FileFilter
noFileFilter = Nothing

type family ResolveFileFilterMethod (t :: Symbol) (o :: *) :: * where
    ResolveFileFilterMethod "addChild" o = BuildableAddChildMethodInfo
    ResolveFileFilterMethod "addCustom" o = FileFilterAddCustomMethodInfo
    ResolveFileFilterMethod "addMimeType" o = FileFilterAddMimeTypeMethodInfo
    ResolveFileFilterMethod "addPattern" o = FileFilterAddPatternMethodInfo
    ResolveFileFilterMethod "addPixbufFormats" o = FileFilterAddPixbufFormatsMethodInfo
    ResolveFileFilterMethod "bindProperty" o = GObject.ObjectBindPropertyMethodInfo
    ResolveFileFilterMethod "bindPropertyFull" o = GObject.ObjectBindPropertyFullMethodInfo
    ResolveFileFilterMethod "constructChild" o = BuildableConstructChildMethodInfo
    ResolveFileFilterMethod "customFinished" o = BuildableCustomFinishedMethodInfo
    ResolveFileFilterMethod "customTagEnd" o = BuildableCustomTagEndMethodInfo
    ResolveFileFilterMethod "customTagStart" o = BuildableCustomTagStartMethodInfo
    ResolveFileFilterMethod "filter" o = FileFilterFilterMethodInfo
    ResolveFileFilterMethod "forceFloating" o = GObject.ObjectForceFloatingMethodInfo
    ResolveFileFilterMethod "freezeNotify" o = GObject.ObjectFreezeNotifyMethodInfo
    ResolveFileFilterMethod "isFloating" o = GObject.ObjectIsFloatingMethodInfo
    ResolveFileFilterMethod "notify" o = GObject.ObjectNotifyMethodInfo
    ResolveFileFilterMethod "notifyByPspec" o = GObject.ObjectNotifyByPspecMethodInfo
    ResolveFileFilterMethod "parserFinished" o = BuildableParserFinishedMethodInfo
    ResolveFileFilterMethod "ref" o = GObject.ObjectRefMethodInfo
    ResolveFileFilterMethod "refSink" o = GObject.ObjectRefSinkMethodInfo
    ResolveFileFilterMethod "replaceData" o = GObject.ObjectReplaceDataMethodInfo
    ResolveFileFilterMethod "replaceQdata" o = GObject.ObjectReplaceQdataMethodInfo
    ResolveFileFilterMethod "runDispose" o = GObject.ObjectRunDisposeMethodInfo
    ResolveFileFilterMethod "stealData" o = GObject.ObjectStealDataMethodInfo
    ResolveFileFilterMethod "stealQdata" o = GObject.ObjectStealQdataMethodInfo
    ResolveFileFilterMethod "thawNotify" o = GObject.ObjectThawNotifyMethodInfo
    ResolveFileFilterMethod "unref" o = GObject.ObjectUnrefMethodInfo
    ResolveFileFilterMethod "watchClosure" o = GObject.ObjectWatchClosureMethodInfo
    ResolveFileFilterMethod "getData" o = GObject.ObjectGetDataMethodInfo
    ResolveFileFilterMethod "getInternalChild" o = BuildableGetInternalChildMethodInfo
    ResolveFileFilterMethod "getNeeded" o = FileFilterGetNeededMethodInfo
    ResolveFileFilterMethod "getProperty" o = GObject.ObjectGetPropertyMethodInfo
    ResolveFileFilterMethod "getQdata" o = GObject.ObjectGetQdataMethodInfo
    ResolveFileFilterMethod "setBuildableProperty" o = BuildableSetBuildablePropertyMethodInfo
    ResolveFileFilterMethod "setData" o = GObject.ObjectSetDataMethodInfo
    ResolveFileFilterMethod "setProperty" o = GObject.ObjectSetPropertyMethodInfo
    ResolveFileFilterMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveFileFilterMethod t FileFilter, MethodInfo info FileFilter p) => IsLabelProxy t (FileFilter -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveFileFilterMethod t FileFilter, MethodInfo info FileFilter p) => IsLabel t (FileFilter -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif

type instance AttributeList FileFilter = FileFilterAttributeList
type FileFilterAttributeList = ('[ ] :: [(Symbol, *)])

type instance SignalList FileFilter = FileFilterSignalList
type FileFilterSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method FileFilter::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface "Gtk" "FileFilter")
-- throws : False
-- Skip return : False

foreign import ccall "gtk_file_filter_new" gtk_file_filter_new :: 
    IO (Ptr FileFilter)


fileFilterNew ::
    (MonadIO m) =>
    m FileFilter                            -- result
fileFilterNew  = liftIO $ do
    result <- gtk_file_filter_new
    checkUnexpectedReturnNULL "gtk_file_filter_new" result
    result' <- (newObject FileFilter) result
    return result'

-- method FileFilter::add_custom
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "FileFilter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "needed", argType = TInterface "Gtk" "FileFilterFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface "Gtk" "FileFilterFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_file_filter_add_custom" gtk_file_filter_add_custom :: 
    Ptr FileFilter ->                       -- _obj : TInterface "Gtk" "FileFilter"
    CUInt ->                                -- needed : TInterface "Gtk" "FileFilterFlags"
    FunPtr FileFilterFuncC ->               -- func : TInterface "Gtk" "FileFilterFunc"
    Ptr () ->                               -- data : TBasicType TPtr
    FunPtr GLib.DestroyNotifyC ->           -- notify : TInterface "GLib" "DestroyNotify"
    IO ()


fileFilterAddCustom ::
    (MonadIO m, FileFilterK a) =>
    a                                       -- _obj
    -> [FileFilterFlags]                    -- needed
    -> FileFilterFunc                       -- func
    -> m ()                                 -- result
fileFilterAddCustom _obj needed func = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let needed' = gflagsToWord needed
    func' <- mkFileFilterFunc (fileFilterFuncWrapper Nothing func)
    let data_ = castFunPtrToPtr func'
    let notify = safeFreeFunPtrPtr
    gtk_file_filter_add_custom _obj' needed' func' data_ notify
    touchManagedPtr _obj
    return ()

data FileFilterAddCustomMethodInfo
instance (signature ~ ([FileFilterFlags] -> FileFilterFunc -> m ()), MonadIO m, FileFilterK a) => MethodInfo FileFilterAddCustomMethodInfo a signature where
    overloadedMethod _ = fileFilterAddCustom

-- method FileFilter::add_mime_type
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "FileFilter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mime_type", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_file_filter_add_mime_type" gtk_file_filter_add_mime_type :: 
    Ptr FileFilter ->                       -- _obj : TInterface "Gtk" "FileFilter"
    CString ->                              -- mime_type : TBasicType TUTF8
    IO ()


fileFilterAddMimeType ::
    (MonadIO m, FileFilterK a) =>
    a                                       -- _obj
    -> T.Text                               -- mimeType
    -> m ()                                 -- result
fileFilterAddMimeType _obj mimeType = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    mimeType' <- textToCString mimeType
    gtk_file_filter_add_mime_type _obj' mimeType'
    touchManagedPtr _obj
    freeMem mimeType'
    return ()

data FileFilterAddMimeTypeMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, FileFilterK a) => MethodInfo FileFilterAddMimeTypeMethodInfo a signature where
    overloadedMethod _ = fileFilterAddMimeType

-- method FileFilter::add_pattern
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "FileFilter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pattern", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_file_filter_add_pattern" gtk_file_filter_add_pattern :: 
    Ptr FileFilter ->                       -- _obj : TInterface "Gtk" "FileFilter"
    CString ->                              -- pattern : TBasicType TUTF8
    IO ()


fileFilterAddPattern ::
    (MonadIO m, FileFilterK a) =>
    a                                       -- _obj
    -> T.Text                               -- pattern
    -> m ()                                 -- result
fileFilterAddPattern _obj pattern = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    pattern' <- textToCString pattern
    gtk_file_filter_add_pattern _obj' pattern'
    touchManagedPtr _obj
    freeMem pattern'
    return ()

data FileFilterAddPatternMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, FileFilterK a) => MethodInfo FileFilterAddPatternMethodInfo a signature where
    overloadedMethod _ = fileFilterAddPattern

-- method FileFilter::add_pixbuf_formats
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "FileFilter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_file_filter_add_pixbuf_formats" gtk_file_filter_add_pixbuf_formats :: 
    Ptr FileFilter ->                       -- _obj : TInterface "Gtk" "FileFilter"
    IO ()


fileFilterAddPixbufFormats ::
    (MonadIO m, FileFilterK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
fileFilterAddPixbufFormats _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_file_filter_add_pixbuf_formats _obj'
    touchManagedPtr _obj
    return ()

data FileFilterAddPixbufFormatsMethodInfo
instance (signature ~ (m ()), MonadIO m, FileFilterK a) => MethodInfo FileFilterAddPixbufFormatsMethodInfo a signature where
    overloadedMethod _ = fileFilterAddPixbufFormats

-- method FileFilter::filter
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "FileFilter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "filter_info", argType = TInterface "Gtk" "FileFilterInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_file_filter_filter" gtk_file_filter_filter :: 
    Ptr FileFilter ->                       -- _obj : TInterface "Gtk" "FileFilter"
    Ptr FileFilterInfo ->                   -- filter_info : TInterface "Gtk" "FileFilterInfo"
    IO CInt


fileFilterFilter ::
    (MonadIO m, FileFilterK a) =>
    a                                       -- _obj
    -> FileFilterInfo                       -- filterInfo
    -> m Bool                               -- result
fileFilterFilter _obj filterInfo = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let filterInfo' = unsafeManagedPtrGetPtr filterInfo
    result <- gtk_file_filter_filter _obj' filterInfo'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr filterInfo
    return result'

data FileFilterFilterMethodInfo
instance (signature ~ (FileFilterInfo -> m Bool), MonadIO m, FileFilterK a) => MethodInfo FileFilterFilterMethodInfo a signature where
    overloadedMethod _ = fileFilterFilter

-- method FileFilter::get_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "FileFilter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_file_filter_get_name" gtk_file_filter_get_name :: 
    Ptr FileFilter ->                       -- _obj : TInterface "Gtk" "FileFilter"
    IO CString


fileFilterGetName ::
    (MonadIO m, FileFilterK a) =>
    a                                       -- _obj
    -> m T.Text                             -- result
fileFilterGetName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_file_filter_get_name _obj'
    checkUnexpectedReturnNULL "gtk_file_filter_get_name" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

data FileFilterGetNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, FileFilterK a) => MethodInfo FileFilterGetNameMethodInfo a signature where
    overloadedMethod _ = fileFilterGetName

-- method FileFilter::get_needed
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "FileFilter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "Gtk" "FileFilterFlags")
-- throws : False
-- Skip return : False

foreign import ccall "gtk_file_filter_get_needed" gtk_file_filter_get_needed :: 
    Ptr FileFilter ->                       -- _obj : TInterface "Gtk" "FileFilter"
    IO CUInt


fileFilterGetNeeded ::
    (MonadIO m, FileFilterK a) =>
    a                                       -- _obj
    -> m [FileFilterFlags]                  -- result
fileFilterGetNeeded _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_file_filter_get_needed _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

data FileFilterGetNeededMethodInfo
instance (signature ~ (m [FileFilterFlags]), MonadIO m, FileFilterK a) => MethodInfo FileFilterGetNeededMethodInfo a signature where
    overloadedMethod _ = fileFilterGetNeeded

-- method FileFilter::set_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "FileFilter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_file_filter_set_name" gtk_file_filter_set_name :: 
    Ptr FileFilter ->                       -- _obj : TInterface "Gtk" "FileFilter"
    CString ->                              -- name : TBasicType TUTF8
    IO ()


fileFilterSetName ::
    (MonadIO m, FileFilterK a) =>
    a                                       -- _obj
    -> Maybe (T.Text)                       -- name
    -> m ()                                 -- result
fileFilterSetName _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeName <- case name of
        Nothing -> return nullPtr
        Just jName -> do
            jName' <- textToCString jName
            return jName'
    gtk_file_filter_set_name _obj' maybeName
    touchManagedPtr _obj
    freeMem maybeName
    return ()

data FileFilterSetNameMethodInfo
instance (signature ~ (Maybe (T.Text) -> m ()), MonadIO m, FileFilterK a) => MethodInfo FileFilterSetNameMethodInfo a signature where
    overloadedMethod _ = fileFilterSetName