packages feed

gi-gio-0.2.46.13: GI/Gio/Objects/FilenameCompleter.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.Gio.Objects.FilenameCompleter
    ( 

-- * Exported types
    FilenameCompleter(..)                   ,
    FilenameCompleterK                      ,
    toFilenameCompleter                     ,
    noFilenameCompleter                     ,


 -- * Methods
-- ** filenameCompleterGetCompletionSuffix
    FilenameCompleterGetCompletionSuffixMethodInfo,
    filenameCompleterGetCompletionSuffix    ,


-- ** filenameCompleterGetCompletions
    FilenameCompleterGetCompletionsMethodInfo,
    filenameCompleterGetCompletions         ,


-- ** filenameCompleterNew
    filenameCompleterNew                    ,


-- ** filenameCompleterSetDirsOnly
    FilenameCompleterSetDirsOnlyMethodInfo  ,
    filenameCompleterSetDirsOnly            ,




 -- * Signals
-- ** GotCompletionData
    FilenameCompleterGotCompletionDataCallback,
    FilenameCompleterGotCompletionDataCallbackC,
    FilenameCompleterGotCompletionDataSignalInfo,
    afterFilenameCompleterGotCompletionData ,
    filenameCompleterGotCompletionDataCallbackWrapper,
    filenameCompleterGotCompletionDataClosure,
    mkFilenameCompleterGotCompletionDataCallback,
    noFilenameCompleterGotCompletionDataCallback,
    onFilenameCompleterGotCompletionData    ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gio.Types
import GI.Gio.Callbacks
import qualified GI.GObject as GObject

newtype FilenameCompleter = FilenameCompleter (ForeignPtr FilenameCompleter)
foreign import ccall "g_filename_completer_get_type"
    c_g_filename_completer_get_type :: IO GType

type instance ParentTypes FilenameCompleter = FilenameCompleterParentTypes
type FilenameCompleterParentTypes = '[GObject.Object]

instance GObject FilenameCompleter where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_g_filename_completer_get_type
    

class GObject o => FilenameCompleterK o
instance (GObject o, IsDescendantOf FilenameCompleter o) => FilenameCompleterK o

toFilenameCompleter :: FilenameCompleterK o => o -> IO FilenameCompleter
toFilenameCompleter = unsafeCastTo FilenameCompleter

noFilenameCompleter :: Maybe FilenameCompleter
noFilenameCompleter = Nothing

type family ResolveFilenameCompleterMethod (t :: Symbol) (o :: *) :: * where
    ResolveFilenameCompleterMethod "bindProperty" o = GObject.ObjectBindPropertyMethodInfo
    ResolveFilenameCompleterMethod "bindPropertyFull" o = GObject.ObjectBindPropertyFullMethodInfo
    ResolveFilenameCompleterMethod "forceFloating" o = GObject.ObjectForceFloatingMethodInfo
    ResolveFilenameCompleterMethod "freezeNotify" o = GObject.ObjectFreezeNotifyMethodInfo
    ResolveFilenameCompleterMethod "isFloating" o = GObject.ObjectIsFloatingMethodInfo
    ResolveFilenameCompleterMethod "notify" o = GObject.ObjectNotifyMethodInfo
    ResolveFilenameCompleterMethod "notifyByPspec" o = GObject.ObjectNotifyByPspecMethodInfo
    ResolveFilenameCompleterMethod "ref" o = GObject.ObjectRefMethodInfo
    ResolveFilenameCompleterMethod "refSink" o = GObject.ObjectRefSinkMethodInfo
    ResolveFilenameCompleterMethod "replaceData" o = GObject.ObjectReplaceDataMethodInfo
    ResolveFilenameCompleterMethod "replaceQdata" o = GObject.ObjectReplaceQdataMethodInfo
    ResolveFilenameCompleterMethod "runDispose" o = GObject.ObjectRunDisposeMethodInfo
    ResolveFilenameCompleterMethod "stealData" o = GObject.ObjectStealDataMethodInfo
    ResolveFilenameCompleterMethod "stealQdata" o = GObject.ObjectStealQdataMethodInfo
    ResolveFilenameCompleterMethod "thawNotify" o = GObject.ObjectThawNotifyMethodInfo
    ResolveFilenameCompleterMethod "unref" o = GObject.ObjectUnrefMethodInfo
    ResolveFilenameCompleterMethod "watchClosure" o = GObject.ObjectWatchClosureMethodInfo
    ResolveFilenameCompleterMethod "getCompletionSuffix" o = FilenameCompleterGetCompletionSuffixMethodInfo
    ResolveFilenameCompleterMethod "getCompletions" o = FilenameCompleterGetCompletionsMethodInfo
    ResolveFilenameCompleterMethod "getData" o = GObject.ObjectGetDataMethodInfo
    ResolveFilenameCompleterMethod "getProperty" o = GObject.ObjectGetPropertyMethodInfo
    ResolveFilenameCompleterMethod "getQdata" o = GObject.ObjectGetQdataMethodInfo
    ResolveFilenameCompleterMethod "setData" o = GObject.ObjectSetDataMethodInfo
    ResolveFilenameCompleterMethod "setDirsOnly" o = FilenameCompleterSetDirsOnlyMethodInfo
    ResolveFilenameCompleterMethod "setProperty" o = GObject.ObjectSetPropertyMethodInfo
    ResolveFilenameCompleterMethod l o = MethodResolutionFailed l o

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

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

-- signal FilenameCompleter::got-completion-data
type FilenameCompleterGotCompletionDataCallback =
    IO ()

noFilenameCompleterGotCompletionDataCallback :: Maybe FilenameCompleterGotCompletionDataCallback
noFilenameCompleterGotCompletionDataCallback = Nothing

type FilenameCompleterGotCompletionDataCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkFilenameCompleterGotCompletionDataCallback :: FilenameCompleterGotCompletionDataCallbackC -> IO (FunPtr FilenameCompleterGotCompletionDataCallbackC)

filenameCompleterGotCompletionDataClosure :: FilenameCompleterGotCompletionDataCallback -> IO Closure
filenameCompleterGotCompletionDataClosure cb = newCClosure =<< mkFilenameCompleterGotCompletionDataCallback wrapped
    where wrapped = filenameCompleterGotCompletionDataCallbackWrapper cb

filenameCompleterGotCompletionDataCallbackWrapper ::
    FilenameCompleterGotCompletionDataCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
filenameCompleterGotCompletionDataCallbackWrapper _cb _ _ = do
    _cb 

onFilenameCompleterGotCompletionData :: (GObject a, MonadIO m) => a -> FilenameCompleterGotCompletionDataCallback -> m SignalHandlerId
onFilenameCompleterGotCompletionData obj cb = liftIO $ connectFilenameCompleterGotCompletionData obj cb SignalConnectBefore
afterFilenameCompleterGotCompletionData :: (GObject a, MonadIO m) => a -> FilenameCompleterGotCompletionDataCallback -> m SignalHandlerId
afterFilenameCompleterGotCompletionData obj cb = connectFilenameCompleterGotCompletionData obj cb SignalConnectAfter

connectFilenameCompleterGotCompletionData :: (GObject a, MonadIO m) =>
                                             a -> FilenameCompleterGotCompletionDataCallback -> SignalConnectMode -> m SignalHandlerId
connectFilenameCompleterGotCompletionData obj cb after = liftIO $ do
    cb' <- mkFilenameCompleterGotCompletionDataCallback (filenameCompleterGotCompletionDataCallbackWrapper cb)
    connectSignalFunPtr obj "got-completion-data" cb' after

type instance AttributeList FilenameCompleter = FilenameCompleterAttributeList
type FilenameCompleterAttributeList = ('[ ] :: [(Symbol, *)])

data FilenameCompleterGotCompletionDataSignalInfo
instance SignalInfo FilenameCompleterGotCompletionDataSignalInfo where
    type HaskellCallbackType FilenameCompleterGotCompletionDataSignalInfo = FilenameCompleterGotCompletionDataCallback
    connectSignal _ = connectFilenameCompleterGotCompletionData

type instance SignalList FilenameCompleter = FilenameCompleterSignalList
type FilenameCompleterSignalList = ('[ '("gotCompletionData", FilenameCompleterGotCompletionDataSignalInfo), '("notify", GObject.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method FilenameCompleter::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : TInterface "Gio" "FilenameCompleter"
-- throws : False
-- Skip return : False

foreign import ccall "g_filename_completer_new" g_filename_completer_new :: 
    IO (Ptr FilenameCompleter)


filenameCompleterNew ::
    (MonadIO m) =>
    m FilenameCompleter                     -- result
filenameCompleterNew  = liftIO $ do
    result <- g_filename_completer_new
    checkUnexpectedReturnNULL "g_filename_completer_new" result
    result' <- (wrapObject FilenameCompleter) result
    return result'

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

foreign import ccall "g_filename_completer_get_completion_suffix" g_filename_completer_get_completion_suffix :: 
    Ptr FilenameCompleter ->                -- _obj : TInterface "Gio" "FilenameCompleter"
    CString ->                              -- initial_text : TBasicType TUTF8
    IO CString


filenameCompleterGetCompletionSuffix ::
    (MonadIO m, FilenameCompleterK a) =>
    a                                       -- _obj
    -> T.Text                               -- initialText
    -> m T.Text                             -- result
filenameCompleterGetCompletionSuffix _obj initialText = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    initialText' <- textToCString initialText
    result <- g_filename_completer_get_completion_suffix _obj' initialText'
    checkUnexpectedReturnNULL "g_filename_completer_get_completion_suffix" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    freeMem initialText'
    return result'

data FilenameCompleterGetCompletionSuffixMethodInfo
instance (signature ~ (T.Text -> m T.Text), MonadIO m, FilenameCompleterK a) => MethodInfo FilenameCompleterGetCompletionSuffixMethodInfo a signature where
    overloadedMethod _ = filenameCompleterGetCompletionSuffix

-- method FilenameCompleter::get_completions
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gio" "FilenameCompleter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "initial_text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TCArray True (-1) (-1) (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "g_filename_completer_get_completions" g_filename_completer_get_completions :: 
    Ptr FilenameCompleter ->                -- _obj : TInterface "Gio" "FilenameCompleter"
    CString ->                              -- initial_text : TBasicType TUTF8
    IO (Ptr CString)


filenameCompleterGetCompletions ::
    (MonadIO m, FilenameCompleterK a) =>
    a                                       -- _obj
    -> T.Text                               -- initialText
    -> m [T.Text]                           -- result
filenameCompleterGetCompletions _obj initialText = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    initialText' <- textToCString initialText
    result <- g_filename_completer_get_completions _obj' initialText'
    checkUnexpectedReturnNULL "g_filename_completer_get_completions" result
    result' <- unpackZeroTerminatedUTF8CArray result
    mapZeroTerminatedCArray freeMem result
    freeMem result
    touchManagedPtr _obj
    freeMem initialText'
    return result'

data FilenameCompleterGetCompletionsMethodInfo
instance (signature ~ (T.Text -> m [T.Text]), MonadIO m, FilenameCompleterK a) => MethodInfo FilenameCompleterGetCompletionsMethodInfo a signature where
    overloadedMethod _ = filenameCompleterGetCompletions

-- method FilenameCompleter::set_dirs_only
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gio" "FilenameCompleter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dirs_only", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_filename_completer_set_dirs_only" g_filename_completer_set_dirs_only :: 
    Ptr FilenameCompleter ->                -- _obj : TInterface "Gio" "FilenameCompleter"
    CInt ->                                 -- dirs_only : TBasicType TBoolean
    IO ()


filenameCompleterSetDirsOnly ::
    (MonadIO m, FilenameCompleterK a) =>
    a                                       -- _obj
    -> Bool                                 -- dirsOnly
    -> m ()                                 -- result
filenameCompleterSetDirsOnly _obj dirsOnly = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let dirsOnly' = (fromIntegral . fromEnum) dirsOnly
    g_filename_completer_set_dirs_only _obj' dirsOnly'
    touchManagedPtr _obj
    return ()

data FilenameCompleterSetDirsOnlyMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, FilenameCompleterK a) => MethodInfo FilenameCompleterSetDirsOnlyMethodInfo a signature where
    overloadedMethod _ = filenameCompleterSetDirsOnly