{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) A 'GI.Gio.Objects.DBusObjectProxy.DBusObjectProxy' is an object used to represent a remote object with one or more D-Bus interfaces. Normally, you don\'t instantiate a 'GI.Gio.Objects.DBusObjectProxy.DBusObjectProxy' yourself - typically 'GI.Gio.Objects.DBusObjectManagerClient.DBusObjectManagerClient' is used to obtain it. /Since: 2.30/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gio.Objects.DBusObjectProxy ( -- * Exported types DBusObjectProxy(..) , IsDBusObjectProxy , toDBusObjectProxy , noDBusObjectProxy , -- * Methods -- ** getConnection #method:getConnection# #if ENABLE_OVERLOADING DBusObjectProxyGetConnectionMethodInfo , #endif dBusObjectProxyGetConnection , -- ** new #method:new# dBusObjectProxyNew , -- * Properties -- ** gConnection #attr:gConnection# {- | The connection of the proxy. /Since: 2.30/ -} #if ENABLE_OVERLOADING DBusObjectProxyGConnectionPropertyInfo , #endif constructDBusObjectProxyGConnection , #if ENABLE_OVERLOADING dBusObjectProxyGConnection , #endif getDBusObjectProxyGConnection , -- ** gObjectPath #attr:gObjectPath# {- | The object path of the proxy. /Since: 2.30/ -} #if ENABLE_OVERLOADING DBusObjectProxyGObjectPathPropertyInfo , #endif constructDBusObjectProxyGObjectPath , #if ENABLE_OVERLOADING dBusObjectProxyGObjectPath , #endif getDBusObjectProxyGObjectPath , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import qualified GI.GObject.Objects.Object as GObject.Object import {-# SOURCE #-} qualified GI.Gio.Interfaces.DBusObject as Gio.DBusObject import {-# SOURCE #-} qualified GI.Gio.Objects.DBusConnection as Gio.DBusConnection -- | Memory-managed wrapper type. newtype DBusObjectProxy = DBusObjectProxy (ManagedPtr DBusObjectProxy) foreign import ccall "g_dbus_object_proxy_get_type" c_g_dbus_object_proxy_get_type :: IO GType instance GObject DBusObjectProxy where gobjectType = c_g_dbus_object_proxy_get_type -- | Type class for types which can be safely cast to `DBusObjectProxy`, for instance with `toDBusObjectProxy`. class (GObject o, O.IsDescendantOf DBusObjectProxy o) => IsDBusObjectProxy o instance (GObject o, O.IsDescendantOf DBusObjectProxy o) => IsDBusObjectProxy o instance O.HasParentTypes DBusObjectProxy type instance O.ParentTypes DBusObjectProxy = '[GObject.Object.Object, Gio.DBusObject.DBusObject] -- | Cast to `DBusObjectProxy`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toDBusObjectProxy :: (MonadIO m, IsDBusObjectProxy o) => o -> m DBusObjectProxy toDBusObjectProxy = liftIO . unsafeCastTo DBusObjectProxy -- | A convenience alias for `Nothing` :: `Maybe` `DBusObjectProxy`. noDBusObjectProxy :: Maybe DBusObjectProxy noDBusObjectProxy = Nothing #if ENABLE_OVERLOADING type family ResolveDBusObjectProxyMethod (t :: Symbol) (o :: *) :: * where ResolveDBusObjectProxyMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveDBusObjectProxyMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveDBusObjectProxyMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveDBusObjectProxyMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveDBusObjectProxyMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveDBusObjectProxyMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveDBusObjectProxyMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveDBusObjectProxyMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveDBusObjectProxyMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolveDBusObjectProxyMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveDBusObjectProxyMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveDBusObjectProxyMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveDBusObjectProxyMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveDBusObjectProxyMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveDBusObjectProxyMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolveDBusObjectProxyMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveDBusObjectProxyMethod "getConnection" o = DBusObjectProxyGetConnectionMethodInfo ResolveDBusObjectProxyMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveDBusObjectProxyMethod "getInterface" o = Gio.DBusObject.DBusObjectGetInterfaceMethodInfo ResolveDBusObjectProxyMethod "getInterfaces" o = Gio.DBusObject.DBusObjectGetInterfacesMethodInfo ResolveDBusObjectProxyMethod "getObjectPath" o = Gio.DBusObject.DBusObjectGetObjectPathMethodInfo ResolveDBusObjectProxyMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveDBusObjectProxyMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveDBusObjectProxyMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveDBusObjectProxyMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveDBusObjectProxyMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveDBusObjectProxyMethod t DBusObjectProxy, O.MethodInfo info DBusObjectProxy p) => OL.IsLabel t (DBusObjectProxy -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif -- VVV Prop "g-connection" -- Type: TInterface (Name {namespace = "Gio", name = "DBusConnection"}) -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@g-connection@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' dBusObjectProxy #gConnection @ -} getDBusObjectProxyGConnection :: (MonadIO m, IsDBusObjectProxy o) => o -> m (Maybe Gio.DBusConnection.DBusConnection) getDBusObjectProxyGConnection obj = liftIO $ B.Properties.getObjectPropertyObject obj "g-connection" Gio.DBusConnection.DBusConnection {- | Construct a `GValueConstruct` with valid value for the “@g-connection@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructDBusObjectProxyGConnection :: (IsDBusObjectProxy o, Gio.DBusConnection.IsDBusConnection a) => a -> IO (GValueConstruct o) constructDBusObjectProxyGConnection val = B.Properties.constructObjectPropertyObject "g-connection" (Just val) #if ENABLE_OVERLOADING data DBusObjectProxyGConnectionPropertyInfo instance AttrInfo DBusObjectProxyGConnectionPropertyInfo where type AttrAllowedOps DBusObjectProxyGConnectionPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint DBusObjectProxyGConnectionPropertyInfo = Gio.DBusConnection.IsDBusConnection type AttrBaseTypeConstraint DBusObjectProxyGConnectionPropertyInfo = IsDBusObjectProxy type AttrGetType DBusObjectProxyGConnectionPropertyInfo = (Maybe Gio.DBusConnection.DBusConnection) type AttrLabel DBusObjectProxyGConnectionPropertyInfo = "g-connection" type AttrOrigin DBusObjectProxyGConnectionPropertyInfo = DBusObjectProxy attrGet _ = getDBusObjectProxyGConnection attrSet _ = undefined attrConstruct _ = constructDBusObjectProxyGConnection attrClear _ = undefined #endif -- VVV Prop "g-object-path" -- Type: TBasicType TUTF8 -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@g-object-path@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' dBusObjectProxy #gObjectPath @ -} getDBusObjectProxyGObjectPath :: (MonadIO m, IsDBusObjectProxy o) => o -> m (Maybe T.Text) getDBusObjectProxyGObjectPath obj = liftIO $ B.Properties.getObjectPropertyString obj "g-object-path" {- | Construct a `GValueConstruct` with valid value for the “@g-object-path@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructDBusObjectProxyGObjectPath :: (IsDBusObjectProxy o) => T.Text -> IO (GValueConstruct o) constructDBusObjectProxyGObjectPath val = B.Properties.constructObjectPropertyString "g-object-path" (Just val) #if ENABLE_OVERLOADING data DBusObjectProxyGObjectPathPropertyInfo instance AttrInfo DBusObjectProxyGObjectPathPropertyInfo where type AttrAllowedOps DBusObjectProxyGObjectPathPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint DBusObjectProxyGObjectPathPropertyInfo = (~) T.Text type AttrBaseTypeConstraint DBusObjectProxyGObjectPathPropertyInfo = IsDBusObjectProxy type AttrGetType DBusObjectProxyGObjectPathPropertyInfo = (Maybe T.Text) type AttrLabel DBusObjectProxyGObjectPathPropertyInfo = "g-object-path" type AttrOrigin DBusObjectProxyGObjectPathPropertyInfo = DBusObjectProxy attrGet _ = getDBusObjectProxyGObjectPath attrSet _ = undefined attrConstruct _ = constructDBusObjectProxyGObjectPath attrClear _ = undefined #endif #if ENABLE_OVERLOADING instance O.HasAttributeList DBusObjectProxy type instance O.AttributeList DBusObjectProxy = DBusObjectProxyAttributeList type DBusObjectProxyAttributeList = ('[ '("gConnection", DBusObjectProxyGConnectionPropertyInfo), '("gObjectPath", DBusObjectProxyGObjectPathPropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING dBusObjectProxyGConnection :: AttrLabelProxy "gConnection" dBusObjectProxyGConnection = AttrLabelProxy dBusObjectProxyGObjectPath :: AttrLabelProxy "gObjectPath" dBusObjectProxyGObjectPath = AttrLabelProxy #endif #if ENABLE_OVERLOADING type instance O.SignalList DBusObjectProxy = DBusObjectProxySignalList type DBusObjectProxySignalList = ('[ '("interfaceAdded", Gio.DBusObject.DBusObjectInterfaceAddedSignalInfo), '("interfaceRemoved", Gio.DBusObject.DBusObjectInterfaceRemovedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) #endif -- method DBusObjectProxy::new -- method type : Constructor -- Args : [Arg {argCName = "connection", argType = TInterface (Name {namespace = "Gio", name = "DBusConnection"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GDBusConnection", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "object_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the object path", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "DBusObjectProxy"})) -- throws : False -- Skip return : False foreign import ccall "g_dbus_object_proxy_new" g_dbus_object_proxy_new :: Ptr Gio.DBusConnection.DBusConnection -> -- connection : TInterface (Name {namespace = "Gio", name = "DBusConnection"}) CString -> -- object_path : TBasicType TUTF8 IO (Ptr DBusObjectProxy) {- | Creates a new 'GI.Gio.Objects.DBusObjectProxy.DBusObjectProxy' for the given connection and object path. /Since: 2.30/ -} dBusObjectProxyNew :: (B.CallStack.HasCallStack, MonadIO m, Gio.DBusConnection.IsDBusConnection a) => a {- ^ /@connection@/: a 'GI.Gio.Objects.DBusConnection.DBusConnection' -} -> T.Text {- ^ /@objectPath@/: the object path -} -> m DBusObjectProxy {- ^ __Returns:__ a new 'GI.Gio.Objects.DBusObjectProxy.DBusObjectProxy' -} dBusObjectProxyNew connection objectPath = liftIO $ do connection' <- unsafeManagedPtrCastPtr connection objectPath' <- textToCString objectPath result <- g_dbus_object_proxy_new connection' objectPath' checkUnexpectedReturnNULL "dBusObjectProxyNew" result result' <- (wrapObject DBusObjectProxy) result touchManagedPtr connection freeMem objectPath' return result' #if ENABLE_OVERLOADING #endif -- method DBusObjectProxy::get_connection -- method type : OrdinaryMethod -- Args : [Arg {argCName = "proxy", argType = TInterface (Name {namespace = "Gio", name = "DBusObjectProxy"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GDBusObjectProxy", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "DBusConnection"})) -- throws : False -- Skip return : False foreign import ccall "g_dbus_object_proxy_get_connection" g_dbus_object_proxy_get_connection :: Ptr DBusObjectProxy -> -- proxy : TInterface (Name {namespace = "Gio", name = "DBusObjectProxy"}) IO (Ptr Gio.DBusConnection.DBusConnection) {- | Gets the connection that /@proxy@/ is for. /Since: 2.30/ -} dBusObjectProxyGetConnection :: (B.CallStack.HasCallStack, MonadIO m, IsDBusObjectProxy a) => a {- ^ /@proxy@/: a 'GI.Gio.Objects.DBusObjectProxy.DBusObjectProxy' -} -> m Gio.DBusConnection.DBusConnection {- ^ __Returns:__ A 'GI.Gio.Objects.DBusConnection.DBusConnection'. Do not free, the object is owned by /@proxy@/. -} dBusObjectProxyGetConnection proxy = liftIO $ do proxy' <- unsafeManagedPtrCastPtr proxy result <- g_dbus_object_proxy_get_connection proxy' checkUnexpectedReturnNULL "dBusObjectProxyGetConnection" result result' <- (newObject Gio.DBusConnection.DBusConnection) result touchManagedPtr proxy return result' #if ENABLE_OVERLOADING data DBusObjectProxyGetConnectionMethodInfo instance (signature ~ (m Gio.DBusConnection.DBusConnection), MonadIO m, IsDBusObjectProxy a) => O.MethodInfo DBusObjectProxyGetConnectionMethodInfo a signature where overloadedMethod _ = dBusObjectProxyGetConnection #endif