module GI.Gio.Interfaces.DBusObject
(
DBusObject(..) ,
noDBusObject ,
DBusObjectK ,
toDBusObject ,
dBusObjectGetInterface ,
dBusObjectGetInterfaces ,
dBusObjectGetObjectPath ,
DBusObjectInterfaceAddedCallback ,
DBusObjectInterfaceAddedCallbackC ,
DBusObjectInterfaceAddedSignalInfo ,
afterDBusObjectInterfaceAdded ,
dBusObjectInterfaceAddedCallbackWrapper ,
dBusObjectInterfaceAddedClosure ,
mkDBusObjectInterfaceAddedCallback ,
noDBusObjectInterfaceAddedCallback ,
onDBusObjectInterfaceAdded ,
DBusObjectInterfaceRemovedCallback ,
DBusObjectInterfaceRemovedCallbackC ,
DBusObjectInterfaceRemovedSignalInfo ,
afterDBusObjectInterfaceRemoved ,
dBusObjectInterfaceRemovedCallbackWrapper,
dBusObjectInterfaceRemovedClosure ,
mkDBusObjectInterfaceRemovedCallback ,
noDBusObjectInterfaceRemovedCallback ,
onDBusObjectInterfaceRemoved ,
) 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 DBusObject = DBusObject (ForeignPtr DBusObject)
noDBusObject :: Maybe DBusObject
noDBusObject = Nothing
type DBusObjectInterfaceAddedCallback =
DBusInterface ->
IO ()
noDBusObjectInterfaceAddedCallback :: Maybe DBusObjectInterfaceAddedCallback
noDBusObjectInterfaceAddedCallback = Nothing
type DBusObjectInterfaceAddedCallbackC =
Ptr () ->
Ptr DBusInterface ->
Ptr () ->
IO ()
foreign import ccall "wrapper"
mkDBusObjectInterfaceAddedCallback :: DBusObjectInterfaceAddedCallbackC -> IO (FunPtr DBusObjectInterfaceAddedCallbackC)
dBusObjectInterfaceAddedClosure :: DBusObjectInterfaceAddedCallback -> IO Closure
dBusObjectInterfaceAddedClosure cb = newCClosure =<< mkDBusObjectInterfaceAddedCallback wrapped
where wrapped = dBusObjectInterfaceAddedCallbackWrapper cb
dBusObjectInterfaceAddedCallbackWrapper ::
DBusObjectInterfaceAddedCallback ->
Ptr () ->
Ptr DBusInterface ->
Ptr () ->
IO ()
dBusObjectInterfaceAddedCallbackWrapper _cb _ interface _ = do
interface' <- (newObject DBusInterface) interface
_cb interface'
onDBusObjectInterfaceAdded :: (GObject a, MonadIO m) => a -> DBusObjectInterfaceAddedCallback -> m SignalHandlerId
onDBusObjectInterfaceAdded obj cb = liftIO $ connectDBusObjectInterfaceAdded obj cb SignalConnectBefore
afterDBusObjectInterfaceAdded :: (GObject a, MonadIO m) => a -> DBusObjectInterfaceAddedCallback -> m SignalHandlerId
afterDBusObjectInterfaceAdded obj cb = connectDBusObjectInterfaceAdded obj cb SignalConnectAfter
connectDBusObjectInterfaceAdded :: (GObject a, MonadIO m) =>
a -> DBusObjectInterfaceAddedCallback -> SignalConnectMode -> m SignalHandlerId
connectDBusObjectInterfaceAdded obj cb after = liftIO $ do
cb' <- mkDBusObjectInterfaceAddedCallback (dBusObjectInterfaceAddedCallbackWrapper cb)
connectSignalFunPtr obj "interface-added" cb' after
type DBusObjectInterfaceRemovedCallback =
DBusInterface ->
IO ()
noDBusObjectInterfaceRemovedCallback :: Maybe DBusObjectInterfaceRemovedCallback
noDBusObjectInterfaceRemovedCallback = Nothing
type DBusObjectInterfaceRemovedCallbackC =
Ptr () ->
Ptr DBusInterface ->
Ptr () ->
IO ()
foreign import ccall "wrapper"
mkDBusObjectInterfaceRemovedCallback :: DBusObjectInterfaceRemovedCallbackC -> IO (FunPtr DBusObjectInterfaceRemovedCallbackC)
dBusObjectInterfaceRemovedClosure :: DBusObjectInterfaceRemovedCallback -> IO Closure
dBusObjectInterfaceRemovedClosure cb = newCClosure =<< mkDBusObjectInterfaceRemovedCallback wrapped
where wrapped = dBusObjectInterfaceRemovedCallbackWrapper cb
dBusObjectInterfaceRemovedCallbackWrapper ::
DBusObjectInterfaceRemovedCallback ->
Ptr () ->
Ptr DBusInterface ->
Ptr () ->
IO ()
dBusObjectInterfaceRemovedCallbackWrapper _cb _ interface _ = do
interface' <- (newObject DBusInterface) interface
_cb interface'
onDBusObjectInterfaceRemoved :: (GObject a, MonadIO m) => a -> DBusObjectInterfaceRemovedCallback -> m SignalHandlerId
onDBusObjectInterfaceRemoved obj cb = liftIO $ connectDBusObjectInterfaceRemoved obj cb SignalConnectBefore
afterDBusObjectInterfaceRemoved :: (GObject a, MonadIO m) => a -> DBusObjectInterfaceRemovedCallback -> m SignalHandlerId
afterDBusObjectInterfaceRemoved obj cb = connectDBusObjectInterfaceRemoved obj cb SignalConnectAfter
connectDBusObjectInterfaceRemoved :: (GObject a, MonadIO m) =>
a -> DBusObjectInterfaceRemovedCallback -> SignalConnectMode -> m SignalHandlerId
connectDBusObjectInterfaceRemoved obj cb after = liftIO $ do
cb' <- mkDBusObjectInterfaceRemovedCallback (dBusObjectInterfaceRemovedCallbackWrapper cb)
connectSignalFunPtr obj "interface-removed" cb' after
type instance AttributeList DBusObject = DBusObjectAttributeList
type DBusObjectAttributeList = ('[ ] :: [(Symbol, *)])
data DBusObjectInterfaceAddedSignalInfo
instance SignalInfo DBusObjectInterfaceAddedSignalInfo where
type HaskellCallbackType DBusObjectInterfaceAddedSignalInfo = DBusObjectInterfaceAddedCallback
connectSignal _ = connectDBusObjectInterfaceAdded
data DBusObjectInterfaceRemovedSignalInfo
instance SignalInfo DBusObjectInterfaceRemovedSignalInfo where
type HaskellCallbackType DBusObjectInterfaceRemovedSignalInfo = DBusObjectInterfaceRemovedCallback
connectSignal _ = connectDBusObjectInterfaceRemoved
type instance SignalList DBusObject = DBusObjectSignalList
type DBusObjectSignalList = ('[ '("interface-added", DBusObjectInterfaceAddedSignalInfo), '("interface-removed", DBusObjectInterfaceRemovedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
foreign import ccall "g_dbus_object_get_type"
c_g_dbus_object_get_type :: IO GType
type instance ParentTypes DBusObject = DBusObjectParentTypes
type DBusObjectParentTypes = '[GObject.Object]
instance GObject DBusObject where
gobjectIsInitiallyUnowned _ = False
gobjectType _ = c_g_dbus_object_get_type
class GObject o => DBusObjectK o
instance (GObject o, IsDescendantOf DBusObject o) => DBusObjectK o
toDBusObject :: DBusObjectK o => o -> IO DBusObject
toDBusObject = unsafeCastTo DBusObject
foreign import ccall "g_dbus_object_get_interface" g_dbus_object_get_interface ::
Ptr DBusObject ->
CString ->
IO (Ptr DBusInterface)
dBusObjectGetInterface ::
(MonadIO m, DBusObjectK a) =>
a ->
T.Text ->
m DBusInterface
dBusObjectGetInterface _obj interface_name = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
interface_name' <- textToCString interface_name
result <- g_dbus_object_get_interface _obj' interface_name'
checkUnexpectedReturnNULL "g_dbus_object_get_interface" result
result' <- (wrapObject DBusInterface) result
touchManagedPtr _obj
freeMem interface_name'
return result'
foreign import ccall "g_dbus_object_get_interfaces" g_dbus_object_get_interfaces ::
Ptr DBusObject ->
IO (Ptr (GList (Ptr DBusInterface)))
dBusObjectGetInterfaces ::
(MonadIO m, DBusObjectK a) =>
a ->
m [DBusInterface]
dBusObjectGetInterfaces _obj = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
result <- g_dbus_object_get_interfaces _obj'
checkUnexpectedReturnNULL "g_dbus_object_get_interfaces" result
result' <- unpackGList result
result'' <- mapM (wrapObject DBusInterface) result'
g_list_free result
touchManagedPtr _obj
return result''
foreign import ccall "g_dbus_object_get_object_path" g_dbus_object_get_object_path ::
Ptr DBusObject ->
IO CString
dBusObjectGetObjectPath ::
(MonadIO m, DBusObjectK a) =>
a ->
m T.Text
dBusObjectGetObjectPath _obj = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
result <- g_dbus_object_get_object_path _obj'
checkUnexpectedReturnNULL "g_dbus_object_get_object_path" result
result' <- cstringToText result
touchManagedPtr _obj
return result'