module GI.Gio.Objects.FilenameCompleter
(
FilenameCompleter(..) ,
FilenameCompleterK ,
toFilenameCompleter ,
noFilenameCompleter ,
filenameCompleterGetCompletionSuffix ,
filenameCompleterGetCompletions ,
filenameCompleterNew ,
filenameCompleterSetDirsOnly ,
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 FilenameCompleterGotCompletionDataCallback =
IO ()
noFilenameCompleterGotCompletionDataCallback :: Maybe FilenameCompleterGotCompletionDataCallback
noFilenameCompleterGotCompletionDataCallback = Nothing
type FilenameCompleterGotCompletionDataCallbackC =
Ptr () ->
Ptr () ->
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 = ('[ '("got-completion-data", FilenameCompleterGotCompletionDataSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
foreign import ccall "g_filename_completer_new" g_filename_completer_new ::
IO (Ptr FilenameCompleter)
filenameCompleterNew ::
(MonadIO m) =>
m FilenameCompleter
filenameCompleterNew = liftIO $ do
result <- g_filename_completer_new
checkUnexpectedReturnNULL "g_filename_completer_new" result
result' <- (wrapObject FilenameCompleter) result
return result'
foreign import ccall "g_filename_completer_get_completion_suffix" g_filename_completer_get_completion_suffix ::
Ptr FilenameCompleter ->
CString ->
IO CString
filenameCompleterGetCompletionSuffix ::
(MonadIO m, FilenameCompleterK a) =>
a ->
T.Text ->
m T.Text
filenameCompleterGetCompletionSuffix _obj initial_text = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
initial_text' <- textToCString initial_text
result <- g_filename_completer_get_completion_suffix _obj' initial_text'
checkUnexpectedReturnNULL "g_filename_completer_get_completion_suffix" result
result' <- cstringToText result
freeMem result
touchManagedPtr _obj
freeMem initial_text'
return result'
foreign import ccall "g_filename_completer_get_completions" g_filename_completer_get_completions ::
Ptr FilenameCompleter ->
CString ->
IO (Ptr CString)
filenameCompleterGetCompletions ::
(MonadIO m, FilenameCompleterK a) =>
a ->
T.Text ->
m [T.Text]
filenameCompleterGetCompletions _obj initial_text = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
initial_text' <- textToCString initial_text
result <- g_filename_completer_get_completions _obj' initial_text'
checkUnexpectedReturnNULL "g_filename_completer_get_completions" result
result' <- unpackZeroTerminatedUTF8CArray result
mapZeroTerminatedCArray freeMem result
freeMem result
touchManagedPtr _obj
freeMem initial_text'
return result'
foreign import ccall "g_filename_completer_set_dirs_only" g_filename_completer_set_dirs_only ::
Ptr FilenameCompleter ->
CInt ->
IO ()
filenameCompleterSetDirsOnly ::
(MonadIO m, FilenameCompleterK a) =>
a ->
Bool ->
m ()
filenameCompleterSetDirsOnly _obj dirs_only = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
let dirs_only' = (fromIntegral . fromEnum) dirs_only
g_filename_completer_set_dirs_only _obj' dirs_only'
touchManagedPtr _obj
return ()