haskell-gi-base 0.26.8 → 0.26.9
raw patch · 10 files changed
+539/−36 lines, 10 filesdep +optics-corePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: optics-core
API changes (from Hackage documentation)
- Data.GI.Base.Attributes: ($dmattrClear) :: (AttrInfo info, CheckNotElem 'AttrClear (AttrAllowedOps info) (ClearNotProvidedError info)) => o -> IO ()
- Data.GI.Base.Attributes: ($dmattrConstruct) :: (AttrInfo info, CheckNotElem 'AttrConstruct (AttrAllowedOps info) (ConstructNotProvidedError info)) => b -> IO (GValueConstruct o)
- Data.GI.Base.Attributes: ($dmattrGet) :: (AttrInfo info, CheckNotElem 'AttrGet (AttrAllowedOps info) (GetNotProvidedError info)) => o -> IO (AttrGetType info)
- Data.GI.Base.Attributes: ($dmattrSet) :: (AttrInfo info, CheckNotElem 'AttrSet (AttrAllowedOps info) (SetNotProvidedError info)) => o -> b -> IO ()
- Data.GI.Base.Attributes: ($dmattrTransfer) :: (AttrInfo info, AttrBaseTypeConstraint info o, AttrTransferTypeConstraint info b, b ~ AttrGetType info, b ~ AttrTransferType info) => Proxy o -> b -> IO (AttrTransferType info)
- Data.GI.Base.Attributes: instance (a GHC.Types.~ x) => GHC.Internal.OverloadedLabels.IsLabel x (Data.GI.Base.Attributes.AttrLabelProxy a)
- Data.GI.Base.Attributes: instance GHC.Internal.Enum.Bounded Data.GI.Base.Attributes.AttrOpTag
- Data.GI.Base.Attributes: instance GHC.Internal.Enum.Enum Data.GI.Base.Attributes.AttrOpTag
- Data.GI.Base.Attributes: instance GHC.Internal.Show.Show Data.GI.Base.Attributes.AttrOpTag
- Data.GI.Base.BasicTypes: instance GHC.Internal.Exception.Type.Exception Data.GI.Base.BasicTypes.UnexpectedNullPointerReturn
- Data.GI.Base.BasicTypes: instance GHC.Internal.Show.Show Data.GI.Base.BasicTypes.GType
- Data.GI.Base.BasicTypes: instance GHC.Internal.Show.Show Data.GI.Base.BasicTypes.UnexpectedNullPointerReturn
- Data.GI.Base.GError: instance GHC.Internal.Exception.Type.Exception Data.GI.Base.GError.GError
- Data.GI.Base.GError: instance GHC.Internal.Show.Show Data.GI.Base.GError.GError
- Data.GI.Base.GParamSpec: [blurb] :: GBooleanPropertyInfo o -> Text
- Data.GI.Base.GParamSpec: [defaultValue] :: GBooleanPropertyInfo o -> Bool
- Data.GI.Base.GParamSpec: [flags] :: GBooleanPropertyInfo o -> Maybe [GParamFlag]
- Data.GI.Base.GParamSpec: [getter] :: GBooleanPropertyInfo o -> o -> IO Bool
- Data.GI.Base.GParamSpec: [maxValue] :: CIntPropertyInfo o -> Maybe CInt
- Data.GI.Base.GParamSpec: [minValue] :: CIntPropertyInfo o -> Maybe CInt
- Data.GI.Base.GParamSpec: [name] :: GBooleanPropertyInfo o -> Text
- Data.GI.Base.GParamSpec: [nick] :: GBooleanPropertyInfo o -> Text
- Data.GI.Base.GParamSpec: [propGetter] :: PropGetSetter o -> Ptr o -> Ptr GValue -> IO ()
- Data.GI.Base.GParamSpec: [propSetter] :: PropGetSetter o -> Ptr o -> Ptr GValue -> IO ()
- Data.GI.Base.GParamSpec: [setter] :: GBooleanPropertyInfo o -> o -> Bool -> IO ()
- Data.GI.Base.GParamSpec: instance GHC.Internal.Enum.Enum Data.GI.Base.GParamSpec.GParamFlag
- Data.GI.Base.GParamSpec: instance GHC.Internal.Show.Show Data.GI.Base.GParamSpec.GParamFlag
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe Data.GI.Base.BasicTypes.GParamSpec)
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe Data.Text.Internal.Text)
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GHC.Internal.Base.String)
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Ptr.Ptr a)
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Stable.StablePtr a)
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Internal.Foreign.C.Types.CInt
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Internal.Foreign.C.Types.CLong
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Internal.Foreign.C.Types.CUInt
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Internal.Foreign.C.Types.CULong
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Internal.Int.Int32
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Internal.Int.Int64
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Internal.Word.Word32
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Internal.Word.Word64
- Data.GI.Base.GValue: instance GHC.Internal.Data.Typeable.Internal.Typeable a => Data.GI.Base.GValue.IsGValue (Data.GI.Base.GValue.HValue a)
- Data.GI.Base.GValue: instance GHC.Internal.Show.Show a => GHC.Internal.Show.Show (Data.GI.Base.GValue.HValue a)
- Data.GI.Base.GVariant: instance (GHC.Internal.Show.Show key, GHC.Internal.Show.Show value) => GHC.Internal.Show.Show (Data.GI.Base.GVariant.GVariantDictEntry key value)
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Internal.Int.Int16
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Internal.Int.Int32
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Internal.Int.Int64
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Internal.Word.Word16
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Internal.Word.Word32
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Internal.Word.Word64
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Internal.Word.Word8
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant a => Data.GI.Base.GVariant.IsGVariant (GHC.Internal.Maybe.Maybe a)
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Internal.Int.Int16
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Internal.Int.Int32
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Internal.Int.Int64
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Internal.Word.Word16
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Internal.Word.Word32
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Internal.Word.Word64
- Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Internal.Word.Word8
- Data.GI.Base.GVariant: instance GHC.Internal.Show.Show Data.GI.Base.GVariant.GVariantHandle
- Data.GI.Base.GVariant: instance GHC.Internal.Show.Show Data.GI.Base.GVariant.GVariantObjectPath
- Data.GI.Base.GVariant: instance GHC.Internal.Show.Show Data.GI.Base.GVariant.GVariantSignature
- Data.GI.Base.GVariant: instance GHC.Internal.Show.Show a => GHC.Internal.Show.Show (Data.GI.Base.GVariant.GVariantSinglet a)
- Data.GI.Base.Overloading: instance GHC.Internal.Show.Show Data.GI.Base.Overloading.ResolvedSymbolInfo
- Data.GI.Base.ShortPrelude: ($dmattrClear) :: (AttrInfo info, CheckNotElem 'AttrClear (AttrAllowedOps info) (ClearNotProvidedError info)) => o -> IO ()
- Data.GI.Base.ShortPrelude: ($dmattrConstruct) :: (AttrInfo info, CheckNotElem 'AttrConstruct (AttrAllowedOps info) (ConstructNotProvidedError info)) => b -> IO (GValueConstruct o)
- Data.GI.Base.ShortPrelude: ($dmattrGet) :: (AttrInfo info, CheckNotElem 'AttrGet (AttrAllowedOps info) (GetNotProvidedError info)) => o -> IO (AttrGetType info)
- Data.GI.Base.ShortPrelude: ($dmattrSet) :: (AttrInfo info, CheckNotElem 'AttrSet (AttrAllowedOps info) (SetNotProvidedError info)) => o -> b -> IO ()
- Data.GI.Base.ShortPrelude: ($dmattrTransfer) :: (AttrInfo info, AttrBaseTypeConstraint info o, AttrTransferTypeConstraint info b, b ~ AttrGetType info, b ~ AttrTransferType info) => Proxy o -> b -> IO (AttrTransferType info)
- Data.GI.Base.ShortPrelude: class a ~# b => (a :: k) ~ (b :: k)
- Data.GI.Base.Signals: instance (info GHC.Types.~ Data.GI.Base.Overloading.ResolveSignal slot object) => GHC.Internal.OverloadedLabels.IsLabel slot (Data.GI.Base.Signals.SignalProxy object info)
+ Data.GI.Base: [:!<~] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b, ?_haskell_gi_modelProxy :: ModelProxy model) => AttrLabelProxy (attr :: Symbol) -> DynVal model b -> AttrOp obj ta
+ Data.GI.Base: [:<~] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b, AttrOpAllowed 'AttrGet info obj, EqMaybe b (AttrGetType info), ?_haskell_gi_modelProxy :: ModelProxy model) => AttrLabelProxy (attr :: Symbol) -> DynVal model b -> AttrOp obj tag
+ Data.GI.Base: [Bind] :: (HasAttributeList obj, GObject obj, info ~ ResolveAttribute propName obj, AttrInfo info, KnownSymbol (AttrLabel info), AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrOpAllowed 'AttrPut info obj, ?_haskell_gi_modelProxy :: ModelProxy model, outType ~ AttrGetType info, AttrSetTypeConstraint info outType, components ~ Components fieldName, PathFieldAccess components model outType, KnownSymbol fieldName, Eq outType) => AttrLabelProxy (propName :: Symbol) -> AttrLabelProxy (fieldName :: Symbol) -> AttrOp obj tag
+ Data.GI.Base: [PropertySet] :: (info ~ ResolveAttribute propName o, AttrInfo info, AttrBaseTypeConstraint info o, b ~ AttrGetType info, pl ~ AttrLabel info, KnownSymbol pl) => AttrLabelProxy propName -> SignalProxy o (GObjectPropertySetSignalInfo b)
+ Data.GI.Base.Attributes: AttrPut :: AttrOpTag
+ Data.GI.Base.Attributes: [:!<~] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b, ?_haskell_gi_modelProxy :: ModelProxy model) => AttrLabelProxy (attr :: Symbol) -> DynVal model b -> AttrOp obj ta
+ Data.GI.Base.Attributes: [:<~] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b, AttrOpAllowed 'AttrGet info obj, EqMaybe b (AttrGetType info), ?_haskell_gi_modelProxy :: ModelProxy model) => AttrLabelProxy (attr :: Symbol) -> DynVal model b -> AttrOp obj tag
+ Data.GI.Base.Attributes: [Bind] :: (HasAttributeList obj, GObject obj, info ~ ResolveAttribute propName obj, AttrInfo info, KnownSymbol (AttrLabel info), AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrOpAllowed 'AttrPut info obj, ?_haskell_gi_modelProxy :: ModelProxy model, outType ~ AttrGetType info, AttrSetTypeConstraint info outType, components ~ Components fieldName, PathFieldAccess components model outType, KnownSymbol fieldName, Eq outType) => AttrLabelProxy (propName :: Symbol) -> AttrLabelProxy (fieldName :: Symbol) -> AttrOp obj tag
+ Data.GI.Base.Attributes: attrPut :: (AttrInfo info, CheckNotElem 'AttrPut (AttrAllowedOps info) (PutNotProvidedError info)) => o -> AttrGetType info -> IO ()
+ Data.GI.Base.Attributes: bindPropToField :: forall o info prop field model outType tag components. (HasAttributeList o, GObject o, info ~ ResolveAttribute prop o, AttrInfo info, KnownSymbol (AttrLabel info), AttrBaseTypeConstraint info o, AttrOpAllowed tag info o, AttrOpAllowed 'AttrPut info o, ?_haskell_gi_modelProxy :: ModelProxy model, outType ~ AttrGetType info, AttrSetTypeConstraint info outType, components ~ Components field, PathFieldAccess components model outType, KnownSymbol field, Eq outType) => Proxy tag -> o -> AttrLabelProxy (prop :: Symbol) -> AttrLabelProxy (field :: Symbol) -> IO ()
+ Data.GI.Base.Attributes: class EqMaybe a b
+ Data.GI.Base.Attributes: eqMaybe :: EqMaybe a b => a -> b -> Bool
+ Data.GI.Base.Attributes: instance (a GHC.Types.~ x) => GHC.OverloadedLabels.IsLabel x (Data.GI.Base.Attributes.AttrLabelProxy a)
+ Data.GI.Base.Attributes: instance GHC.Classes.Eq a => Data.GI.Base.Attributes.EqMaybe a (GHC.Maybe.Maybe a)
+ Data.GI.Base.Attributes: instance GHC.Classes.Eq a => Data.GI.Base.Attributes.EqMaybe a a
+ Data.GI.Base.Attributes: instance GHC.Enum.Bounded Data.GI.Base.Attributes.AttrOpTag
+ Data.GI.Base.Attributes: instance GHC.Enum.Enum Data.GI.Base.Attributes.AttrOpTag
+ Data.GI.Base.Attributes: instance GHC.Show.Show Data.GI.Base.Attributes.AttrOpTag
+ Data.GI.Base.BasicTypes: instance GHC.Exception.Type.Exception Data.GI.Base.BasicTypes.UnexpectedNullPointerReturn
+ Data.GI.Base.BasicTypes: instance GHC.Show.Show Data.GI.Base.BasicTypes.GType
+ Data.GI.Base.BasicTypes: instance GHC.Show.Show Data.GI.Base.BasicTypes.UnexpectedNullPointerReturn
+ Data.GI.Base.DynVal: DVKeyDerived :: Set [Text] -> DVKey
+ Data.GI.Base.DynVal: DVKeyDirect :: [Text] -> DVKey
+ Data.GI.Base.DynVal: DynVal :: DVKey -> (model -> a) -> DynVal model a
+ Data.GI.Base.DynVal: ModelProxy :: IO model -> (DVKey -> (model -> IO ()) -> IO ()) -> ([Text] -> (model -> Maybe model) -> IO ()) -> ModelProxy model
+ Data.GI.Base.DynVal: data DVKey
+ Data.GI.Base.DynVal: data DynVal model a
+ Data.GI.Base.DynVal: data ModelProxy model
+ Data.GI.Base.DynVal: dvKeys :: DynVal model a -> DVKey
+ Data.GI.Base.DynVal: dvRead :: DynVal model a -> model -> a
+ Data.GI.Base.DynVal: instance (GHC.Records.HasField fieldName field a, GHC.TypeLits.KnownSymbol fieldName) => GHC.Records.HasField fieldName (Data.GI.Base.DynVal.DynVal model field) (Data.GI.Base.DynVal.DynVal model a)
+ Data.GI.Base.DynVal: instance Data.String.IsString (Data.GI.Base.DynVal.DynVal model Data.Text.Internal.Text)
+ Data.GI.Base.DynVal: instance GHC.Base.Applicative (Data.GI.Base.DynVal.DynVal model)
+ Data.GI.Base.DynVal: instance GHC.Base.Functor (Data.GI.Base.DynVal.DynVal model)
+ Data.GI.Base.DynVal: instance GHC.Base.Semigroup Data.GI.Base.DynVal.DVKey
+ Data.GI.Base.DynVal: instance GHC.Classes.Eq Data.GI.Base.DynVal.DVKey
+ Data.GI.Base.DynVal: instance GHC.Classes.Ord Data.GI.Base.DynVal.DVKey
+ Data.GI.Base.DynVal: instance GHC.Show.Show Data.GI.Base.DynVal.DVKey
+ Data.GI.Base.DynVal: modelProxyCurrentValue :: ModelProxy model -> IO model
+ Data.GI.Base.DynVal: modelProxyRegisterHandler :: ModelProxy model -> DVKey -> (model -> IO ()) -> IO ()
+ Data.GI.Base.DynVal: modelProxyUpdate :: ModelProxy model -> [Text] -> (model -> Maybe model) -> IO ()
+ Data.GI.Base.GError: instance GHC.Exception.Type.Exception Data.GI.Base.GError.GError
+ Data.GI.Base.GError: instance GHC.Show.Show Data.GI.Base.GError.GError
+ Data.GI.Base.GParamSpec: [$sel:blurb:CIntPropertyInfo] :: CIntPropertyInfo o -> Text
+ Data.GI.Base.GParamSpec: [$sel:blurb:CStringPropertyInfo] :: CStringPropertyInfo o -> Text
+ Data.GI.Base.GParamSpec: [$sel:blurb:GBooleanPropertyInfo] :: GBooleanPropertyInfo o -> Text
+ Data.GI.Base.GParamSpec: [$sel:blurb:PropertyInfo] :: PropertyInfo o a -> Text
+ Data.GI.Base.GParamSpec: [$sel:defaultValue:CIntPropertyInfo] :: CIntPropertyInfo o -> CInt
+ Data.GI.Base.GParamSpec: [$sel:defaultValue:CStringPropertyInfo] :: CStringPropertyInfo o -> Maybe Text
+ Data.GI.Base.GParamSpec: [$sel:defaultValue:GBooleanPropertyInfo] :: GBooleanPropertyInfo o -> Bool
+ Data.GI.Base.GParamSpec: [$sel:flags:CIntPropertyInfo] :: CIntPropertyInfo o -> Maybe [GParamFlag]
+ Data.GI.Base.GParamSpec: [$sel:flags:CStringPropertyInfo] :: CStringPropertyInfo o -> Maybe [GParamFlag]
+ Data.GI.Base.GParamSpec: [$sel:flags:GBooleanPropertyInfo] :: GBooleanPropertyInfo o -> Maybe [GParamFlag]
+ Data.GI.Base.GParamSpec: [$sel:flags:PropertyInfo] :: PropertyInfo o a -> Maybe [GParamFlag]
+ Data.GI.Base.GParamSpec: [$sel:getter:CIntPropertyInfo] :: CIntPropertyInfo o -> o -> IO CInt
+ Data.GI.Base.GParamSpec: [$sel:getter:CStringPropertyInfo] :: CStringPropertyInfo o -> o -> IO (Maybe Text)
+ Data.GI.Base.GParamSpec: [$sel:getter:GBooleanPropertyInfo] :: GBooleanPropertyInfo o -> o -> IO Bool
+ Data.GI.Base.GParamSpec: [$sel:getter:PropertyInfo] :: PropertyInfo o a -> o -> IO a
+ Data.GI.Base.GParamSpec: [$sel:maxValue:CIntPropertyInfo] :: CIntPropertyInfo o -> Maybe CInt
+ Data.GI.Base.GParamSpec: [$sel:minValue:CIntPropertyInfo] :: CIntPropertyInfo o -> Maybe CInt
+ Data.GI.Base.GParamSpec: [$sel:name:CIntPropertyInfo] :: CIntPropertyInfo o -> Text
+ Data.GI.Base.GParamSpec: [$sel:name:CStringPropertyInfo] :: CStringPropertyInfo o -> Text
+ Data.GI.Base.GParamSpec: [$sel:name:GBooleanPropertyInfo] :: GBooleanPropertyInfo o -> Text
+ Data.GI.Base.GParamSpec: [$sel:name:PropertyInfo] :: PropertyInfo o a -> Text
+ Data.GI.Base.GParamSpec: [$sel:nick:CIntPropertyInfo] :: CIntPropertyInfo o -> Text
+ Data.GI.Base.GParamSpec: [$sel:nick:CStringPropertyInfo] :: CStringPropertyInfo o -> Text
+ Data.GI.Base.GParamSpec: [$sel:nick:GBooleanPropertyInfo] :: GBooleanPropertyInfo o -> Text
+ Data.GI.Base.GParamSpec: [$sel:nick:PropertyInfo] :: PropertyInfo o a -> Text
+ Data.GI.Base.GParamSpec: [$sel:propGetter:PropGetSetter] :: PropGetSetter o -> Ptr o -> Ptr GValue -> IO ()
+ Data.GI.Base.GParamSpec: [$sel:propSetter:PropGetSetter] :: PropGetSetter o -> Ptr o -> Ptr GValue -> IO ()
+ Data.GI.Base.GParamSpec: [$sel:setter:CIntPropertyInfo] :: CIntPropertyInfo o -> o -> CInt -> IO ()
+ Data.GI.Base.GParamSpec: [$sel:setter:CStringPropertyInfo] :: CStringPropertyInfo o -> o -> Maybe Text -> IO ()
+ Data.GI.Base.GParamSpec: [$sel:setter:GBooleanPropertyInfo] :: GBooleanPropertyInfo o -> o -> Bool -> IO ()
+ Data.GI.Base.GParamSpec: [$sel:setter:PropertyInfo] :: PropertyInfo o a -> o -> a -> IO ()
+ Data.GI.Base.GParamSpec: instance GHC.Enum.Enum Data.GI.Base.GParamSpec.GParamFlag
+ Data.GI.Base.GParamSpec: instance GHC.Show.Show Data.GI.Base.GParamSpec.GParamFlag
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Maybe.Maybe Data.GI.Base.BasicTypes.GParamSpec)
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Maybe.Maybe Data.Text.Internal.Text)
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Maybe.Maybe GHC.Base.String)
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Ptr.Ptr a)
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Stable.StablePtr a)
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue Foreign.C.Types.CInt
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue Foreign.C.Types.CLong
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue Foreign.C.Types.CUInt
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue Foreign.C.Types.CULong
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Int.Int32
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Int.Int64
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Word.Word32
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Word.Word64
+ Data.GI.Base.GValue: instance Data.Typeable.Internal.Typeable a => Data.GI.Base.GValue.IsGValue (Data.GI.Base.GValue.HValue a)
+ Data.GI.Base.GValue: instance GHC.Show.Show a => GHC.Show.Show (Data.GI.Base.GValue.HValue a)
+ Data.GI.Base.GVariant: instance (GHC.Show.Show key, GHC.Show.Show value) => GHC.Show.Show (Data.GI.Base.GVariant.GVariantDictEntry key value)
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Int.Int16
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Int.Int32
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Int.Int64
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Word.Word16
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Word.Word32
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Word.Word64
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Word.Word8
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant a => Data.GI.Base.GVariant.IsGVariant (GHC.Maybe.Maybe a)
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Int.Int16
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Int.Int32
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Int.Int64
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Word.Word16
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Word.Word32
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Word.Word64
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Word.Word8
+ Data.GI.Base.GVariant: instance GHC.Show.Show Data.GI.Base.GVariant.GVariantHandle
+ Data.GI.Base.GVariant: instance GHC.Show.Show Data.GI.Base.GVariant.GVariantObjectPath
+ Data.GI.Base.GVariant: instance GHC.Show.Show Data.GI.Base.GVariant.GVariantSignature
+ Data.GI.Base.GVariant: instance GHC.Show.Show a => GHC.Show.Show (Data.GI.Base.GVariant.GVariantSinglet a)
+ Data.GI.Base.Internal.PathFieldAccess: class PathFieldAccess (path :: [Symbol]) (model :: Type) (val :: Type) | path model -> val
+ Data.GI.Base.Internal.PathFieldAccess: instance (Optics.Internal.Generic.GFieldImpl fieldName model model val val, Data.GI.Base.Internal.PathFieldAccess.NonEmpty fieldName ('GHC.TypeError.Text "Field names cannot be empty"), GHC.TypeLits.KnownSymbol fieldName) => Data.GI.Base.Internal.PathFieldAccess.PathFieldAccess '[fieldName] model val
+ Data.GI.Base.Internal.PathFieldAccess: instance (Optics.Internal.Generic.GFieldImpl fieldName model model val val, GHC.TypeLits.KnownSymbol fieldName, Data.GI.Base.Internal.PathFieldAccess.PathFieldAccess rest val inner) => Data.GI.Base.Internal.PathFieldAccess.PathFieldAccess (fieldName : rest) model inner
+ Data.GI.Base.Internal.PathFieldAccess: pathFieldAccess :: PathFieldAccess path model val => Proxy path -> Proxy model -> (Lens' model val, [Text])
+ Data.GI.Base.Internal.PathFieldAccess: type family Components (s :: Symbol) :: [Symbol]
+ Data.GI.Base.Overloading: instance GHC.Show.Show Data.GI.Base.Overloading.ResolvedSymbolInfo
+ Data.GI.Base.ShortPrelude: AttrPut :: AttrOpTag
+ Data.GI.Base.ShortPrelude: [:!<~] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b, ?_haskell_gi_modelProxy :: ModelProxy model) => AttrLabelProxy (attr :: Symbol) -> DynVal model b -> AttrOp obj ta
+ Data.GI.Base.ShortPrelude: [:<~] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b, AttrOpAllowed 'AttrGet info obj, EqMaybe b (AttrGetType info), ?_haskell_gi_modelProxy :: ModelProxy model) => AttrLabelProxy (attr :: Symbol) -> DynVal model b -> AttrOp obj tag
+ Data.GI.Base.ShortPrelude: [Bind] :: (HasAttributeList obj, GObject obj, info ~ ResolveAttribute propName obj, AttrInfo info, KnownSymbol (AttrLabel info), AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrOpAllowed 'AttrPut info obj, ?_haskell_gi_modelProxy :: ModelProxy model, outType ~ AttrGetType info, AttrSetTypeConstraint info outType, components ~ Components fieldName, PathFieldAccess components model outType, KnownSymbol fieldName, Eq outType) => AttrLabelProxy (propName :: Symbol) -> AttrLabelProxy (fieldName :: Symbol) -> AttrOp obj tag
+ Data.GI.Base.ShortPrelude: attrPut :: (AttrInfo info, CheckNotElem 'AttrPut (AttrAllowedOps info) (PutNotProvidedError info)) => o -> AttrGetType info -> IO ()
+ Data.GI.Base.ShortPrelude: bindPropToField :: forall o info prop field model outType tag components. (HasAttributeList o, GObject o, info ~ ResolveAttribute prop o, AttrInfo info, KnownSymbol (AttrLabel info), AttrBaseTypeConstraint info o, AttrOpAllowed tag info o, AttrOpAllowed 'AttrPut info o, ?_haskell_gi_modelProxy :: ModelProxy model, outType ~ AttrGetType info, AttrSetTypeConstraint info outType, components ~ Components field, PathFieldAccess components model outType, KnownSymbol field, Eq outType) => Proxy tag -> o -> AttrLabelProxy (prop :: Symbol) -> AttrLabelProxy (field :: Symbol) -> IO ()
+ Data.GI.Base.ShortPrelude: class EqMaybe a b
+ Data.GI.Base.ShortPrelude: class Monad m => MonadIO (m :: Type -> Type)
+ Data.GI.Base.ShortPrelude: data () => Int
+ Data.GI.Base.ShortPrelude: data () => Int16
+ Data.GI.Base.ShortPrelude: data () => Int32
+ Data.GI.Base.ShortPrelude: data () => Int64
+ Data.GI.Base.ShortPrelude: data () => Int8
+ Data.GI.Base.ShortPrelude: eqMaybe :: EqMaybe a b => a -> b -> Bool
+ Data.GI.Base.ShortPrelude: liftIO :: MonadIO m => IO a -> m a
+ Data.GI.Base.ShortPrelude: unsafeForeignPtrToPtr :: ForeignPtr a -> Ptr a
+ Data.GI.Base.Signals: [PropertySet] :: (info ~ ResolveAttribute propName o, AttrInfo info, AttrBaseTypeConstraint info o, b ~ AttrGetType info, pl ~ AttrLabel info, KnownSymbol pl) => AttrLabelProxy propName -> SignalProxy o (GObjectPropertySetSignalInfo b)
+ Data.GI.Base.Signals: connectGObjectNotify :: GObject o => o -> (o -> GObjectNotifyCallback) -> SignalConnectMode -> Maybe Text -> IO SignalHandlerId
+ Data.GI.Base.Signals: instance (info GHC.Types.~ Data.GI.Base.Overloading.ResolveSignal slot object) => GHC.OverloadedLabels.IsLabel slot (Data.GI.Base.Signals.SignalProxy object info)
+ Data.GI.Base.Signals: instance Data.GI.Base.Signals.SignalInfo (Data.GI.Base.Signals.GObjectPropertySetSignalInfo b)
- Data.GI.Base: [:&=] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrTransferTypeConstraint info b, AttrSetTypeConstraint info (AttrTransferType info)) => AttrLabelProxy attr -> b -> AttrOp obj tag
+ Data.GI.Base: [:&=] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrTransferTypeConstraint info b, AttrSetTypeConstraint info (AttrTransferType info)) => AttrLabelProxy (attr :: Symbol) -> b -> AttrOp obj tag
- Data.GI.Base: [:::] :: forall object info. SignalProxy object info -> Text -> SignalProxy object info
+ Data.GI.Base: [:::] :: forall o info. SignalProxy o info -> Text -> SignalProxy o info
- Data.GI.Base: [:=>] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy attr -> IO b -> AttrOp obj tag
+ Data.GI.Base: [:=>] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy (attr :: Symbol) -> IO b -> AttrOp obj tag
- Data.GI.Base: [:=] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy attr -> b -> AttrOp obj tag
+ Data.GI.Base: [:=] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy (attr :: Symbol) -> b -> AttrOp obj tag
- Data.GI.Base: [:~>] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b a. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy attr -> (a -> IO b) -> AttrOp obj tag
+ Data.GI.Base: [:~>] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy (attr :: Symbol) -> (a -> IO b) -> AttrOp obj tag
- Data.GI.Base: [:~] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b a. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy attr -> (a -> b) -> AttrOp obj tag
+ Data.GI.Base: [:~] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy (attr :: Symbol) -> (a -> b) -> AttrOp obj tag
- Data.GI.Base: [After] :: forall obj info (tag :: AttrOpTag). (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
+ Data.GI.Base: [After] :: (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
- Data.GI.Base: [On] :: forall obj info (tag :: AttrOpTag). (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
+ Data.GI.Base: [On] :: (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
- Data.GI.Base: [PropertyNotify] :: forall info1 (propName :: Symbol) object (pl :: Symbol). (info1 ~ ResolveAttribute propName object, AttrInfo info1, pl ~ AttrLabel info1, KnownSymbol pl) => AttrLabelProxy propName -> SignalProxy object GObjectNotifySignalInfo
+ Data.GI.Base: [PropertyNotify] :: (info ~ ResolveAttribute propName o, AttrInfo info, pl ~ AttrLabel info, KnownSymbol pl) => AttrLabelProxy propName -> SignalProxy o GObjectNotifySignalInfo
- Data.GI.Base: data SignalProxy object info
+ Data.GI.Base: data SignalProxy (object :: Type) (info :: Type)
- Data.GI.Base: get :: forall info (attr :: Symbol) obj result m. (AttrGetC info obj attr result, MonadIO m) => obj -> AttrLabelProxy attr -> m result
+ Data.GI.Base: get :: forall info attr obj result m. (AttrGetC info obj attr result, MonadIO m) => obj -> AttrLabelProxy (attr :: Symbol) -> m result
- Data.GI.Base: toGValue :: (IsGValue a, MonadIO m) => a -> m GValue
+ Data.GI.Base: toGValue :: forall a m. (IsGValue a, MonadIO m) => a -> m GValue
- Data.GI.Base.Attributes: [:&=] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrTransferTypeConstraint info b, AttrSetTypeConstraint info (AttrTransferType info)) => AttrLabelProxy attr -> b -> AttrOp obj tag
+ Data.GI.Base.Attributes: [:&=] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrTransferTypeConstraint info b, AttrSetTypeConstraint info (AttrTransferType info)) => AttrLabelProxy (attr :: Symbol) -> b -> AttrOp obj tag
- Data.GI.Base.Attributes: [:=>] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy attr -> IO b -> AttrOp obj tag
+ Data.GI.Base.Attributes: [:=>] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy (attr :: Symbol) -> IO b -> AttrOp obj tag
- Data.GI.Base.Attributes: [:=] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy attr -> b -> AttrOp obj tag
+ Data.GI.Base.Attributes: [:=] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy (attr :: Symbol) -> b -> AttrOp obj tag
- Data.GI.Base.Attributes: [:~>] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b a. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy attr -> (a -> IO b) -> AttrOp obj tag
+ Data.GI.Base.Attributes: [:~>] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy (attr :: Symbol) -> (a -> IO b) -> AttrOp obj tag
- Data.GI.Base.Attributes: [:~] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b a. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy attr -> (a -> b) -> AttrOp obj tag
+ Data.GI.Base.Attributes: [:~] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy (attr :: Symbol) -> (a -> b) -> AttrOp obj tag
- Data.GI.Base.Attributes: [After] :: forall obj info (tag :: AttrOpTag). (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
+ Data.GI.Base.Attributes: [After] :: (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
- Data.GI.Base.Attributes: [On] :: forall obj info (tag :: AttrOpTag). (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
+ Data.GI.Base.Attributes: [On] :: (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
- Data.GI.Base.Attributes: attrClear :: (AttrInfo info, AttrBaseTypeConstraint info o) => o -> IO ()
+ Data.GI.Base.Attributes: attrClear :: (AttrInfo info, CheckNotElem 'AttrClear (AttrAllowedOps info) (ClearNotProvidedError info)) => o -> IO ()
- Data.GI.Base.Attributes: attrConstruct :: (AttrInfo info, AttrBaseTypeConstraint info o, AttrSetTypeConstraint info b) => b -> IO (GValueConstruct o)
+ Data.GI.Base.Attributes: attrConstruct :: (AttrInfo info, CheckNotElem 'AttrConstruct (AttrAllowedOps info) (ConstructNotProvidedError info)) => b -> IO (GValueConstruct o)
- Data.GI.Base.Attributes: attrGet :: (AttrInfo info, AttrBaseTypeConstraint info o) => o -> IO (AttrGetType info)
+ Data.GI.Base.Attributes: attrGet :: (AttrInfo info, CheckNotElem 'AttrGet (AttrAllowedOps info) (GetNotProvidedError info)) => o -> IO (AttrGetType info)
- Data.GI.Base.Attributes: attrSet :: (AttrInfo info, AttrBaseTypeConstraint info o, AttrSetTypeConstraint info b) => o -> b -> IO ()
+ Data.GI.Base.Attributes: attrSet :: (AttrInfo info, CheckNotElem 'AttrSet (AttrAllowedOps info) (SetNotProvidedError info)) => o -> b -> IO ()
- Data.GI.Base.Attributes: attrTransfer :: (AttrInfo info, AttrBaseTypeConstraint info o, AttrTransferTypeConstraint info b) => Proxy o -> b -> IO (AttrTransferType info)
+ Data.GI.Base.Attributes: attrTransfer :: forall o b. (AttrInfo info, AttrBaseTypeConstraint info o, AttrTransferTypeConstraint info b, b ~ AttrGetType info, b ~ AttrTransferType info) => Proxy o -> b -> IO (AttrTransferType info)
- Data.GI.Base.Attributes: class AttrInfo info where {
+ Data.GI.Base.Attributes: class AttrInfo (info :: Type) where {
- Data.GI.Base.Attributes: clear :: forall info (attr :: Symbol) obj m. (AttrClearC info obj attr, MonadIO m) => obj -> AttrLabelProxy attr -> m ()
+ Data.GI.Base.Attributes: clear :: forall info attr obj m. (AttrClearC info obj attr, MonadIO m) => obj -> AttrLabelProxy (attr :: Symbol) -> m ()
- Data.GI.Base.Attributes: get :: forall info (attr :: Symbol) obj result m. (AttrGetC info obj attr result, MonadIO m) => obj -> AttrLabelProxy attr -> m result
+ Data.GI.Base.Attributes: get :: forall info attr obj result m. (AttrGetC info obj attr result, MonadIO m) => obj -> AttrLabelProxy (attr :: Symbol) -> m result
- Data.GI.Base.Attributes: resolveAttr :: forall info (attr :: Symbol) obj. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info) => obj -> AttrLabelProxy attr -> Maybe ResolvedSymbolInfo
+ Data.GI.Base.Attributes: resolveAttr :: forall info attr obj. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info) => obj -> AttrLabelProxy (attr :: Symbol) -> Maybe ResolvedSymbolInfo
- Data.GI.Base.Attributes: type AttrClearC info obj (attr :: Symbol) = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrClear info obj)
+ Data.GI.Base.Attributes: type AttrClearC info obj attr = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, (AttrBaseTypeConstraint info) obj, AttrOpAllowed 'AttrClear info obj)
- Data.GI.Base.Attributes: type AttrConstructC info obj (attr :: Symbol) value = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrConstruct info obj, AttrSetTypeConstraint info value)
+ Data.GI.Base.Attributes: type AttrConstructC info obj attr value = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrConstruct info obj, (AttrSetTypeConstraint info) value)
- Data.GI.Base.Attributes: type AttrGetC info obj (attr :: Symbol) result = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrGet info obj, result ~ AttrGetType info)
+ Data.GI.Base.Attributes: type AttrGetC info obj attr result = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, (AttrBaseTypeConstraint info) obj, AttrOpAllowed 'AttrGet info obj, result ~ AttrGetType info)
- Data.GI.Base.Attributes: type AttrSetC info obj (attr :: Symbol) value = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrSet info obj, AttrSetTypeConstraint info value)
+ Data.GI.Base.Attributes: type AttrSetC info obj attr value = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrSet info obj, (AttrSetTypeConstraint info) value)
- Data.GI.Base.Attributes: type AttrSetTypeConstraint info = Type ~ AttrGetType info;
+ Data.GI.Base.Attributes: type AttrSetTypeConstraint info = (~) (AttrGetType info);
- Data.GI.Base.Attributes: type AttrTransferTypeConstraint info = Type ~ AttrTransferType info;
+ Data.GI.Base.Attributes: type AttrTransferTypeConstraint info = (~) (AttrTransferType info);
- Data.GI.Base.Attributes: type family AttrOpAllowed (tag :: AttrOpTag) info useType
+ Data.GI.Base.Attributes: type family AttrOpAllowed (tag :: AttrOpTag) (info :: Type) (useType :: Type) :: Constraint
- Data.GI.Base.BasicConversions: mapGArray :: Storable a => (a -> IO b) -> Ptr (GArray a) -> IO ()
+ Data.GI.Base.BasicConversions: mapGArray :: forall a b. Storable a => (a -> IO b) -> Ptr (GArray a) -> IO ()
- Data.GI.Base.BasicConversions: packGArray :: Storable a => [a] -> IO (Ptr (GArray a))
+ Data.GI.Base.BasicConversions: packGArray :: forall a. Storable a => [a] -> IO (Ptr (GArray a))
- Data.GI.Base.BasicConversions: unpackBoxedArrayWithLength :: (Integral a, GBoxed b) => Int -> a -> Ptr b -> IO [Ptr b]
+ Data.GI.Base.BasicConversions: unpackBoxedArrayWithLength :: forall a b. (Integral a, GBoxed b) => Int -> a -> Ptr b -> IO [Ptr b]
- Data.GI.Base.BasicConversions: unpackGArray :: Storable a => Ptr (GArray a) -> IO [a]
+ Data.GI.Base.BasicConversions: unpackGArray :: forall a. Storable a => Ptr (GArray a) -> IO [a]
- Data.GI.Base.BasicConversions: unpackMapStorableArrayWithLength :: (Integral a, Storable b) => (b -> c) -> a -> Ptr b -> IO [c]
+ Data.GI.Base.BasicConversions: unpackMapStorableArrayWithLength :: forall a b c. (Integral a, Storable b) => (b -> c) -> a -> Ptr b -> IO [c]
- Data.GI.Base.BasicConversions: unpackMapZeroTerminatedStorableArray :: (Eq a, Num a, Storable a) => (a -> b) -> Ptr a -> IO [b]
+ Data.GI.Base.BasicConversions: unpackMapZeroTerminatedStorableArray :: forall a b. (Eq a, Num a, Storable a) => (a -> b) -> Ptr a -> IO [b]
- Data.GI.Base.BasicTypes: class Coercible a ManagedPtr () => ManagedPtrNewtype a
+ Data.GI.Base.BasicTypes: class Coercible a (ManagedPtr ()) => ManagedPtrNewtype a
- Data.GI.Base.BasicTypes: type GDestroyNotify ptr = FunPtr ptr -> IO ()
+ Data.GI.Base.BasicTypes: type GDestroyNotify ptr = FunPtr (ptr -> IO ())
- Data.GI.Base.BasicTypes: type GEqualFunc a = FunPtr PtrWrapped a -> PtrWrapped a -> IO Int32
+ Data.GI.Base.BasicTypes: type GEqualFunc a = FunPtr (PtrWrapped a -> PtrWrapped a -> IO Int32)
- Data.GI.Base.BasicTypes: type GHashFunc a = FunPtr PtrWrapped a -> IO Word32
+ Data.GI.Base.BasicTypes: type GHashFunc a = FunPtr (PtrWrapped a -> IO Word32)
- Data.GI.Base.CallStack: data CallStack
+ Data.GI.Base.CallStack: data () => CallStack
- Data.GI.Base.GError: catchGErrorJustDomain :: GErrorClass err => IO a -> (err -> GErrorMessage -> IO a) -> IO a
+ Data.GI.Base.GError: catchGErrorJustDomain :: forall err a. GErrorClass err => IO a -> (err -> GErrorMessage -> IO a) -> IO a
- Data.GI.Base.GHashTable: type GEqualFunc a = FunPtr PtrWrapped a -> PtrWrapped a -> IO Int32
+ Data.GI.Base.GHashTable: type GEqualFunc a = FunPtr (PtrWrapped a -> PtrWrapped a -> IO Int32)
- Data.GI.Base.GHashTable: type GHashFunc a = FunPtr PtrWrapped a -> IO Word32
+ Data.GI.Base.GHashTable: type GHashFunc a = FunPtr (PtrWrapped a -> IO Word32)
- Data.GI.Base.GObject: constructGObject :: (GObject o, MonadIO m) => (ManagedPtr o -> o) -> [AttrOp o 'AttrConstruct] -> m o
+ Data.GI.Base.GObject: constructGObject :: forall o m. (GObject o, MonadIO m) => (ManagedPtr o -> o) -> [AttrOp o 'AttrConstruct] -> m o
- Data.GI.Base.GObject: gobjectGetPrivateData :: (HasCallStack, DerivedGObject o) => o -> IO (GObjectPrivateData o)
+ Data.GI.Base.GObject: gobjectGetPrivateData :: forall o. (HasCallStack, DerivedGObject o) => o -> IO (GObjectPrivateData o)
- Data.GI.Base.GObject: gobjectModifyPrivateData :: (HasCallStack, DerivedGObject o) => o -> (GObjectPrivateData o -> GObjectPrivateData o) -> IO ()
+ Data.GI.Base.GObject: gobjectModifyPrivateData :: forall o. (HasCallStack, DerivedGObject o) => o -> (GObjectPrivateData o -> GObjectPrivateData o) -> IO ()
- Data.GI.Base.GObject: gobjectSetPrivateData :: (HasCallStack, DerivedGObject o) => o -> GObjectPrivateData o -> IO ()
+ Data.GI.Base.GObject: gobjectSetPrivateData :: forall o. (HasCallStack, DerivedGObject o) => o -> GObjectPrivateData o -> IO ()
- Data.GI.Base.GObject: registerGType :: (HasCallStack, DerivedGObject o, GObject (GObjectParentType o), GObject o) => (ManagedPtr o -> o) -> IO GType
+ Data.GI.Base.GObject: registerGType :: forall o. (HasCallStack, DerivedGObject o, GObject (GObjectParentType o), GObject o) => (ManagedPtr o -> o) -> IO GType
- Data.GI.Base.GParamSpec: gParamSpecValue :: GObject o => PropertyInfo o a -> IO GParamSpec
+ Data.GI.Base.GParamSpec: gParamSpecValue :: forall o a. GObject o => PropertyInfo o a -> IO GParamSpec
- Data.GI.Base.GParamSpec: getGParamSpecGetterSetter :: Ptr GParamSpec -> IO (Maybe (PropGetSetter o))
+ Data.GI.Base.GParamSpec: getGParamSpecGetterSetter :: forall o. Ptr GParamSpec -> IO (Maybe (PropGetSetter o))
- Data.GI.Base.GValue: get_hvalue :: Typeable a => Ptr GValue -> IO (HValue a)
+ Data.GI.Base.GValue: get_hvalue :: forall a. Typeable a => Ptr GValue -> IO (HValue a)
- Data.GI.Base.GValue: toGValue :: (IsGValue a, MonadIO m) => a -> m GValue
+ Data.GI.Base.GValue: toGValue :: forall a m. (IsGValue a, MonadIO m) => a -> m GValue
- Data.GI.Base.GVariant: gvariantFromList :: IsGVariant a => [a] -> IO GVariant
+ Data.GI.Base.GVariant: gvariantFromList :: forall a. IsGVariant a => [a] -> IO GVariant
- Data.GI.Base.GVariant: gvariantFromMaybe :: IsGVariant a => Maybe a -> IO GVariant
+ Data.GI.Base.GVariant: gvariantFromMaybe :: forall a. IsGVariant a => Maybe a -> IO GVariant
- Data.GI.Base.GVariant: gvariantToDictEntry :: (IsGVariant key, IsGVariantBasicType key, IsGVariant value) => GVariant -> IO (Maybe (key, value))
+ Data.GI.Base.GVariant: gvariantToDictEntry :: forall key value. (IsGVariant key, IsGVariantBasicType key, IsGVariant value) => GVariant -> IO (Maybe (key, value))
- Data.GI.Base.GVariant: gvariantToList :: IsGVariant a => GVariant -> IO (Maybe [a])
+ Data.GI.Base.GVariant: gvariantToList :: forall a. IsGVariant a => GVariant -> IO (Maybe [a])
- Data.GI.Base.GVariant: gvariantToMap :: (IsGVariant key, IsGVariantBasicType key, IsGVariant value) => GVariant -> IO (Maybe (Map key value))
+ Data.GI.Base.GVariant: gvariantToMap :: forall key value. (IsGVariant key, IsGVariantBasicType key, IsGVariant value) => GVariant -> IO (Maybe (Map key value))
- Data.GI.Base.GVariant: gvariantToMaybe :: IsGVariant a => GVariant -> IO (Maybe (Maybe a))
+ Data.GI.Base.GVariant: gvariantToMaybe :: forall a. IsGVariant a => GVariant -> IO (Maybe (Maybe a))
- Data.GI.Base.ManagedPtr: castTo :: (HasCallStack, ManagedPtrNewtype o, TypedObject o, ManagedPtrNewtype o', TypedObject o', GObject o') => (ManagedPtr o' -> o') -> o -> IO (Maybe o')
+ Data.GI.Base.ManagedPtr: castTo :: forall o o'. (HasCallStack, ManagedPtrNewtype o, TypedObject o, ManagedPtrNewtype o', TypedObject o', GObject o') => (ManagedPtr o' -> o') -> o -> IO (Maybe o')
- Data.GI.Base.ManagedPtr: copyBoxed :: (HasCallStack, GBoxed a) => a -> IO (Ptr a)
+ Data.GI.Base.ManagedPtr: copyBoxed :: forall a. (HasCallStack, GBoxed a) => a -> IO (Ptr a)
- Data.GI.Base.ManagedPtr: copyBoxedPtr :: GBoxed a => Ptr a -> IO (Ptr a)
+ Data.GI.Base.ManagedPtr: copyBoxedPtr :: forall a. GBoxed a => Ptr a -> IO (Ptr a)
- Data.GI.Base.ManagedPtr: disownManagedPtr :: (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
+ Data.GI.Base.ManagedPtr: disownManagedPtr :: forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
- Data.GI.Base.ManagedPtr: freeBoxed :: (HasCallStack, GBoxed a) => a -> IO ()
+ Data.GI.Base.ManagedPtr: freeBoxed :: forall a. (HasCallStack, GBoxed a) => a -> IO ()
- Data.GI.Base.ManagedPtr: newBoxed :: (HasCallStack, GBoxed a) => (ManagedPtr a -> a) -> Ptr a -> IO a
+ Data.GI.Base.ManagedPtr: newBoxed :: forall a. (HasCallStack, GBoxed a) => (ManagedPtr a -> a) -> Ptr a -> IO a
- Data.GI.Base.ManagedPtr: touchManagedPtr :: ManagedPtrNewtype a => a -> IO ()
+ Data.GI.Base.ManagedPtr: touchManagedPtr :: forall a. ManagedPtrNewtype a => a -> IO ()
- Data.GI.Base.ManagedPtr: unsafeCastTo :: (HasCallStack, ManagedPtrNewtype o, TypedObject o, ManagedPtrNewtype o', TypedObject o') => (ManagedPtr o' -> o') -> o -> IO o'
+ Data.GI.Base.ManagedPtr: unsafeCastTo :: forall o o'. (HasCallStack, ManagedPtrNewtype o, TypedObject o, ManagedPtrNewtype o', TypedObject o') => (ManagedPtr o' -> o') -> o -> IO o'
- Data.GI.Base.ManagedPtr: unsafeManagedPtrCastPtr :: (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
+ Data.GI.Base.ManagedPtr: unsafeManagedPtrCastPtr :: forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
- Data.GI.Base.ManagedPtr: wrapBoxed :: (HasCallStack, GBoxed a) => (ManagedPtr a -> a) -> Ptr a -> IO a
+ Data.GI.Base.ManagedPtr: wrapBoxed :: forall a. (HasCallStack, GBoxed a) => (ManagedPtr a -> a) -> Ptr a -> IO a
- Data.GI.Base.ManagedPtr: wrapObject :: (HasCallStack, GObject a, GObject b) => (ManagedPtr a -> a) -> Ptr b -> IO a
+ Data.GI.Base.ManagedPtr: wrapObject :: forall a b. (HasCallStack, GObject a, GObject b) => (ManagedPtr a -> a) -> Ptr b -> IO a
- Data.GI.Base.Overloading: MethodProxy :: MethodProxy info obj
+ Data.GI.Base.Overloading: MethodProxy :: MethodProxy (info :: Type) (obj :: Type)
- Data.GI.Base.Overloading: class HasAttr (attr :: Symbol) o
+ Data.GI.Base.Overloading: class HasAttr (attr :: Symbol) (o :: Type)
- Data.GI.Base.Overloading: class HasAttributeList (a :: k)
+ Data.GI.Base.Overloading: class HasAttributeList a
- Data.GI.Base.Overloading: class HasParentTypes o
+ Data.GI.Base.Overloading: class HasParentTypes (o :: Type)
- Data.GI.Base.Overloading: class OverloadedMethod (i :: k) o s
+ Data.GI.Base.Overloading: class OverloadedMethod i o s
- Data.GI.Base.Overloading: class OverloadedMethodInfo (i :: k) (o :: k1)
+ Data.GI.Base.Overloading: class OverloadedMethodInfo i o
- Data.GI.Base.Overloading: data MethodProxy info obj
+ Data.GI.Base.Overloading: data MethodProxy (info :: Type) (obj :: Type)
- Data.GI.Base.Overloading: resolveMethod :: OverloadedMethodInfo info obj => obj -> MethodProxy info obj -> Maybe ResolvedSymbolInfo
+ Data.GI.Base.Overloading: resolveMethod :: forall info obj. OverloadedMethodInfo info obj => obj -> MethodProxy info obj -> Maybe ResolvedSymbolInfo
- Data.GI.Base.Overloading: type family UnsupportedMethodError (s :: Symbol) o
+ Data.GI.Base.Overloading: type family UnsupportedMethodError (s :: Symbol) (o :: Type) :: Type
- Data.GI.Base.Properties: constructObjectPropertyBoxed :: GBoxed a => String -> Maybe a -> IO (GValueConstruct o)
+ Data.GI.Base.Properties: constructObjectPropertyBoxed :: forall a o. GBoxed a => String -> Maybe a -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyEnum :: (Enum a, BoxedEnum a) => String -> a -> IO (GValueConstruct o)
+ Data.GI.Base.Properties: constructObjectPropertyEnum :: forall a o. (Enum a, BoxedEnum a) => String -> a -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyFlags :: (IsGFlag a, BoxedFlags a) => String -> [a] -> IO (GValueConstruct o)
+ Data.GI.Base.Properties: constructObjectPropertyFlags :: forall a o. (IsGFlag a, BoxedFlags a) => String -> [a] -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyObject :: GObject a => String -> Maybe a -> IO (GValueConstruct o)
+ Data.GI.Base.Properties: constructObjectPropertyObject :: forall a o. GObject a => String -> Maybe a -> IO (GValueConstruct o)
- Data.GI.Base.Properties: getObjectPropertyBoxed :: (GObject a, GBoxed b) => a -> String -> (ManagedPtr b -> b) -> IO (Maybe b)
+ Data.GI.Base.Properties: getObjectPropertyBoxed :: forall a b. (GObject a, GBoxed b) => a -> String -> (ManagedPtr b -> b) -> IO (Maybe b)
- Data.GI.Base.Properties: getObjectPropertyClosure :: GObject a => a -> String -> IO (Maybe (GClosure b))
+ Data.GI.Base.Properties: getObjectPropertyClosure :: forall a b. GObject a => a -> String -> IO (Maybe (GClosure b))
- Data.GI.Base.Properties: getObjectPropertyEnum :: (GObject a, Enum b, BoxedEnum b) => a -> String -> IO b
+ Data.GI.Base.Properties: getObjectPropertyEnum :: forall a b. (GObject a, Enum b, BoxedEnum b) => a -> String -> IO b
- Data.GI.Base.Properties: getObjectPropertyFlags :: (GObject a, IsGFlag b, BoxedFlags b) => a -> String -> IO [b]
+ Data.GI.Base.Properties: getObjectPropertyFlags :: forall a b. (GObject a, IsGFlag b, BoxedFlags b) => a -> String -> IO [b]
- Data.GI.Base.Properties: getObjectPropertyGError :: GObject a => a -> String -> IO (Maybe GError)
+ Data.GI.Base.Properties: getObjectPropertyGError :: forall a. GObject a => a -> String -> IO (Maybe GError)
- Data.GI.Base.Properties: getObjectPropertyGValue :: GObject a => a -> String -> IO (Maybe GValue)
+ Data.GI.Base.Properties: getObjectPropertyGValue :: forall a. GObject a => a -> String -> IO (Maybe GValue)
- Data.GI.Base.Properties: getObjectPropertyIsGValueInstance :: (GObject a, IsGValue b) => a -> String -> IO b
+ Data.GI.Base.Properties: getObjectPropertyIsGValueInstance :: forall a b. (GObject a, IsGValue b) => a -> String -> IO b
- Data.GI.Base.Properties: getObjectPropertyObject :: (GObject a, GObject b) => a -> String -> (ManagedPtr b -> b) -> IO (Maybe b)
+ Data.GI.Base.Properties: getObjectPropertyObject :: forall a b. (GObject a, GObject b) => a -> String -> (ManagedPtr b -> b) -> IO (Maybe b)
- Data.GI.Base.Properties: setObjectPropertyBoxed :: (GObject a, GBoxed b) => a -> String -> Maybe b -> IO ()
+ Data.GI.Base.Properties: setObjectPropertyBoxed :: forall a b. (GObject a, GBoxed b) => a -> String -> Maybe b -> IO ()
- Data.GI.Base.Properties: setObjectPropertyClosure :: GObject a => a -> String -> Maybe (GClosure b) -> IO ()
+ Data.GI.Base.Properties: setObjectPropertyClosure :: forall a b. GObject a => a -> String -> Maybe (GClosure b) -> IO ()
- Data.GI.Base.Properties: setObjectPropertyEnum :: (GObject a, Enum b, BoxedEnum b) => a -> String -> b -> IO ()
+ Data.GI.Base.Properties: setObjectPropertyEnum :: forall a b. (GObject a, Enum b, BoxedEnum b) => a -> String -> b -> IO ()
- Data.GI.Base.Properties: setObjectPropertyGError :: GObject a => a -> String -> Maybe GError -> IO ()
+ Data.GI.Base.Properties: setObjectPropertyGError :: forall a. GObject a => a -> String -> Maybe GError -> IO ()
- Data.GI.Base.Properties: setObjectPropertyGValue :: GObject a => a -> String -> Maybe GValue -> IO ()
+ Data.GI.Base.Properties: setObjectPropertyGValue :: forall a. GObject a => a -> String -> Maybe GValue -> IO ()
- Data.GI.Base.Properties: setObjectPropertyObject :: (GObject a, GObject b) => a -> String -> Maybe b -> IO ()
+ Data.GI.Base.Properties: setObjectPropertyObject :: forall a b. (GObject a, GObject b) => a -> String -> Maybe b -> IO ()
- Data.GI.Base.ShortPrelude: ($) :: (a -> b) -> a -> b
+ Data.GI.Base.ShortPrelude: ($) :: forall (r :: RuntimeRep) a (b :: TYPE r). (a -> b) -> a -> b
- Data.GI.Base.ShortPrelude: [:&=] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrTransferTypeConstraint info b, AttrSetTypeConstraint info (AttrTransferType info)) => AttrLabelProxy attr -> b -> AttrOp obj tag
+ Data.GI.Base.ShortPrelude: [:&=] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrTransferTypeConstraint info b, AttrSetTypeConstraint info (AttrTransferType info)) => AttrLabelProxy (attr :: Symbol) -> b -> AttrOp obj tag
- Data.GI.Base.ShortPrelude: [:=>] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy attr -> IO b -> AttrOp obj tag
+ Data.GI.Base.ShortPrelude: [:=>] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy (attr :: Symbol) -> IO b -> AttrOp obj tag
- Data.GI.Base.ShortPrelude: [:=] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy attr -> b -> AttrOp obj tag
+ Data.GI.Base.ShortPrelude: [:=] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info obj, AttrSetTypeConstraint info b) => AttrLabelProxy (attr :: Symbol) -> b -> AttrOp obj tag
- Data.GI.Base.ShortPrelude: [:~>] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b a. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy attr -> (a -> IO b) -> AttrOp obj tag
+ Data.GI.Base.ShortPrelude: [:~>] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy (attr :: Symbol) -> (a -> IO b) -> AttrOp obj tag
- Data.GI.Base.ShortPrelude: [:~] :: forall obj info (attr :: Symbol) (tag :: AttrOpTag) b a. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy attr -> (a -> b) -> AttrOp obj tag
+ Data.GI.Base.ShortPrelude: [:~] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet, AttrOpAllowed 'AttrSet info obj, AttrOpAllowed 'AttrGet info obj, AttrSetTypeConstraint info b, a ~ AttrGetType info) => AttrLabelProxy (attr :: Symbol) -> (a -> b) -> AttrOp obj tag
- Data.GI.Base.ShortPrelude: [After] :: forall obj info (tag :: AttrOpTag). (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
+ Data.GI.Base.ShortPrelude: [After] :: (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
- Data.GI.Base.ShortPrelude: [On] :: forall obj info (tag :: AttrOpTag). (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
+ Data.GI.Base.ShortPrelude: [On] :: (GObject obj, SignalInfo info) => SignalProxy obj info -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag
- Data.GI.Base.ShortPrelude: attrClear :: (AttrInfo info, AttrBaseTypeConstraint info o) => o -> IO ()
+ Data.GI.Base.ShortPrelude: attrClear :: (AttrInfo info, CheckNotElem 'AttrClear (AttrAllowedOps info) (ClearNotProvidedError info)) => o -> IO ()
- Data.GI.Base.ShortPrelude: attrConstruct :: (AttrInfo info, AttrBaseTypeConstraint info o, AttrSetTypeConstraint info b) => b -> IO (GValueConstruct o)
+ Data.GI.Base.ShortPrelude: attrConstruct :: (AttrInfo info, CheckNotElem 'AttrConstruct (AttrAllowedOps info) (ConstructNotProvidedError info)) => b -> IO (GValueConstruct o)
- Data.GI.Base.ShortPrelude: attrGet :: (AttrInfo info, AttrBaseTypeConstraint info o) => o -> IO (AttrGetType info)
+ Data.GI.Base.ShortPrelude: attrGet :: (AttrInfo info, CheckNotElem 'AttrGet (AttrAllowedOps info) (GetNotProvidedError info)) => o -> IO (AttrGetType info)
- Data.GI.Base.ShortPrelude: attrSet :: (AttrInfo info, AttrBaseTypeConstraint info o, AttrSetTypeConstraint info b) => o -> b -> IO ()
+ Data.GI.Base.ShortPrelude: attrSet :: (AttrInfo info, CheckNotElem 'AttrSet (AttrAllowedOps info) (SetNotProvidedError info)) => o -> b -> IO ()
- Data.GI.Base.ShortPrelude: attrTransfer :: (AttrInfo info, AttrBaseTypeConstraint info o, AttrTransferTypeConstraint info b) => Proxy o -> b -> IO (AttrTransferType info)
+ Data.GI.Base.ShortPrelude: attrTransfer :: forall o b. (AttrInfo info, AttrBaseTypeConstraint info o, AttrTransferTypeConstraint info b, b ~ AttrGetType info, b ~ AttrTransferType info) => Proxy o -> b -> IO (AttrTransferType info)
- Data.GI.Base.ShortPrelude: class AttrInfo info where {
+ Data.GI.Base.ShortPrelude: class AttrInfo (info :: Type) where {
- Data.GI.Base.ShortPrelude: class Enum a
+ Data.GI.Base.ShortPrelude: class () => Enum a
- Data.GI.Base.ShortPrelude: class Eq a
+ Data.GI.Base.ShortPrelude: class () => Eq a
- Data.GI.Base.ShortPrelude: class Show a
+ Data.GI.Base.ShortPrelude: class () => Show a
- Data.GI.Base.ShortPrelude: class SignalInfo info where {
+ Data.GI.Base.ShortPrelude: class SignalInfo (info :: Type) where {
- Data.GI.Base.ShortPrelude: clear :: forall info (attr :: Symbol) obj m. (AttrClearC info obj attr, MonadIO m) => obj -> AttrLabelProxy attr -> m ()
+ Data.GI.Base.ShortPrelude: clear :: forall info attr obj m. (AttrClearC info obj attr, MonadIO m) => obj -> AttrLabelProxy (attr :: Symbol) -> m ()
- Data.GI.Base.ShortPrelude: data Bool
+ Data.GI.Base.ShortPrelude: data () => Bool
- Data.GI.Base.ShortPrelude: data ByteString
+ Data.GI.Base.ShortPrelude: data () => ByteString
- Data.GI.Base.ShortPrelude: data Char
+ Data.GI.Base.ShortPrelude: data () => Char
- Data.GI.Base.ShortPrelude: data Double
+ Data.GI.Base.ShortPrelude: data () => Double
- Data.GI.Base.ShortPrelude: data Float
+ Data.GI.Base.ShortPrelude: data () => Float
- Data.GI.Base.ShortPrelude: data ForeignPtr a
+ Data.GI.Base.ShortPrelude: data () => ForeignPtr a
- Data.GI.Base.ShortPrelude: data FunPtr a
+ Data.GI.Base.ShortPrelude: data () => FunPtr a
- Data.GI.Base.ShortPrelude: data IO a
+ Data.GI.Base.ShortPrelude: data () => IO a
- Data.GI.Base.ShortPrelude: data Maybe a
+ Data.GI.Base.ShortPrelude: data () => Maybe a
- Data.GI.Base.ShortPrelude: data Ptr a
+ Data.GI.Base.ShortPrelude: data () => Ptr a
- Data.GI.Base.ShortPrelude: data Symbol
+ Data.GI.Base.ShortPrelude: data () => Symbol
- Data.GI.Base.ShortPrelude: data Word16
+ Data.GI.Base.ShortPrelude: data () => Word16
- Data.GI.Base.ShortPrelude: data Word32
+ Data.GI.Base.ShortPrelude: data () => Word32
- Data.GI.Base.ShortPrelude: data Word64
+ Data.GI.Base.ShortPrelude: data () => Word64
- Data.GI.Base.ShortPrelude: data Word8
+ Data.GI.Base.ShortPrelude: data () => Word8
- Data.GI.Base.ShortPrelude: error :: HasCallStack => [Char] -> a
+ Data.GI.Base.ShortPrelude: error :: forall (r :: RuntimeRep) (a :: TYPE r). HasCallStack => [Char] -> a
- Data.GI.Base.ShortPrelude: infix 4 ~
+ Data.GI.Base.ShortPrelude: infix 4 /=
- Data.GI.Base.ShortPrelude: newtype CDouble
+ Data.GI.Base.ShortPrelude: newtype () => CDouble
- Data.GI.Base.ShortPrelude: newtype CFloat
+ Data.GI.Base.ShortPrelude: newtype () => CFloat
- Data.GI.Base.ShortPrelude: newtype CInt
+ Data.GI.Base.ShortPrelude: newtype () => CInt
- Data.GI.Base.ShortPrelude: newtype CIntPtr
+ Data.GI.Base.ShortPrelude: newtype () => CIntPtr
- Data.GI.Base.ShortPrelude: newtype CLong
+ Data.GI.Base.ShortPrelude: newtype () => CLong
- Data.GI.Base.ShortPrelude: newtype CUInt
+ Data.GI.Base.ShortPrelude: newtype () => CUInt
- Data.GI.Base.ShortPrelude: newtype CUIntPtr
+ Data.GI.Base.ShortPrelude: newtype () => CUIntPtr
- Data.GI.Base.ShortPrelude: newtype CULong
+ Data.GI.Base.ShortPrelude: newtype () => CULong
- Data.GI.Base.ShortPrelude: resolveAttr :: forall info (attr :: Symbol) obj. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info) => obj -> AttrLabelProxy attr -> Maybe ResolvedSymbolInfo
+ Data.GI.Base.ShortPrelude: resolveAttr :: forall info attr obj. (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info) => obj -> AttrLabelProxy (attr :: Symbol) -> Maybe ResolvedSymbolInfo
- Data.GI.Base.ShortPrelude: type AttrClearC info obj (attr :: Symbol) = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrClear info obj)
+ Data.GI.Base.ShortPrelude: type AttrClearC info obj attr = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, (AttrBaseTypeConstraint info) obj, AttrOpAllowed 'AttrClear info obj)
- Data.GI.Base.ShortPrelude: type AttrConstructC info obj (attr :: Symbol) value = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrConstruct info obj, AttrSetTypeConstraint info value)
+ Data.GI.Base.ShortPrelude: type AttrConstructC info obj attr value = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrConstruct info obj, (AttrSetTypeConstraint info) value)
- Data.GI.Base.ShortPrelude: type AttrGetC info obj (attr :: Symbol) result = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrGet info obj, result ~ AttrGetType info)
+ Data.GI.Base.ShortPrelude: type AttrGetC info obj attr result = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, (AttrBaseTypeConstraint info) obj, AttrOpAllowed 'AttrGet info obj, result ~ AttrGetType info)
- Data.GI.Base.ShortPrelude: type AttrSetC info obj (attr :: Symbol) value = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrSet info obj, AttrSetTypeConstraint info value)
+ Data.GI.Base.ShortPrelude: type AttrSetC info obj attr value = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed 'AttrSet info obj, (AttrSetTypeConstraint info) value)
- Data.GI.Base.ShortPrelude: type AttrSetTypeConstraint info = Type ~ AttrGetType info;
+ Data.GI.Base.ShortPrelude: type AttrSetTypeConstraint info = (~) (AttrGetType info);
- Data.GI.Base.ShortPrelude: type AttrTransferTypeConstraint info = Type ~ AttrTransferType info;
+ Data.GI.Base.ShortPrelude: type AttrTransferTypeConstraint info = (~) (AttrTransferType info);
- Data.GI.Base.ShortPrelude: type HaskellCallbackType info;
+ Data.GI.Base.ShortPrelude: type HaskellCallbackType info :: Type;
- Data.GI.Base.ShortPrelude: type family HaskellCallbackType info
+ Data.GI.Base.ShortPrelude: type family AttrOpAllowed (tag :: AttrOpTag) (info :: Type) (useType :: Type) :: Constraint
- Data.GI.Base.ShortPrelude: undefined :: HasCallStack => a
+ Data.GI.Base.ShortPrelude: undefined :: forall (r :: RuntimeRep) (a :: TYPE r). HasCallStack => a
- Data.GI.Base.Signals: [:::] :: forall object info. SignalProxy object info -> Text -> SignalProxy object info
+ Data.GI.Base.Signals: [:::] :: forall o info. SignalProxy o info -> Text -> SignalProxy o info
- Data.GI.Base.Signals: [PropertyNotify] :: forall info1 (propName :: Symbol) object (pl :: Symbol). (info1 ~ ResolveAttribute propName object, AttrInfo info1, pl ~ AttrLabel info1, KnownSymbol pl) => AttrLabelProxy propName -> SignalProxy object GObjectNotifySignalInfo
+ Data.GI.Base.Signals: [PropertyNotify] :: (info ~ ResolveAttribute propName o, AttrInfo info, pl ~ AttrLabel info, KnownSymbol pl) => AttrLabelProxy propName -> SignalProxy o GObjectNotifySignalInfo
- Data.GI.Base.Signals: [SignalProxy] :: forall object info. SignalProxy object info
+ Data.GI.Base.Signals: [SignalProxy] :: SignalProxy o info
- Data.GI.Base.Signals: class SignalInfo info where {
+ Data.GI.Base.Signals: class SignalInfo (info :: Type) where {
- Data.GI.Base.Signals: data SignalProxy object info
+ Data.GI.Base.Signals: data SignalProxy (object :: Type) (info :: Type)
- Data.GI.Base.Signals: resolveSignal :: (GObject object, SignalInfo info) => object -> SignalProxy object info -> Maybe ResolvedSymbolInfo
+ Data.GI.Base.Signals: resolveSignal :: forall object info. (GObject object, SignalInfo info) => object -> SignalProxy object info -> Maybe ResolvedSymbolInfo
- Data.GI.Base.Signals: type HaskellCallbackType info;
+ Data.GI.Base.Signals: type HaskellCallbackType info :: Type;
- Data.GI.Base.Signals: type family SignalCodeGenError (signalName :: Symbol)
+ Data.GI.Base.Signals: type family SignalCodeGenError (signalName :: Symbol) :: Type
- Data.GI.Base.Utils: allocMem :: Storable a => IO (Ptr a)
+ Data.GI.Base.Utils: allocMem :: forall a. Storable a => IO (Ptr a)
- Data.GI.Base.Utils: callocBoxedBytes :: GBoxed a => Int -> IO (Ptr a)
+ Data.GI.Base.Utils: callocBoxedBytes :: forall a. GBoxed a => Int -> IO (Ptr a)
- Data.GI.Base.Utils: callocMem :: Storable a => IO (Ptr a)
+ Data.GI.Base.Utils: callocMem :: forall a. Storable a => IO (Ptr a)
Files
- Data/GI/Base.hs +2/−1
- Data/GI/Base/Attributes.hs +197/−12
- Data/GI/Base/BasicTypes.hsc +1/−3
- Data/GI/Base/DynVal.hs +144/−0
- Data/GI/Base/GError.hs +1/−3
- Data/GI/Base/GObject.hsc +56/−7
- Data/GI/Base/Internal/PathFieldAccess.hs +76/−0
- Data/GI/Base/Signals.hs +44/−4
- Data/GI/Base/Signals.hs-boot +11/−2
- haskell-gi-base.cabal +7/−4
Data/GI/Base.hs view
@@ -29,5 +29,6 @@ import Data.GI.Base.GValue (GValue(..), fromGValue, toGValue, IsGValue(..)) import Data.GI.Base.GVariant import Data.GI.Base.ManagedPtr-import Data.GI.Base.Signals (on, after, SignalProxy(PropertyNotify, (:::)))+import Data.GI.Base.Signals (on, after,+ SignalProxy(PropertyNotify, PropertySet, (:::))) import Data.GI.Base.Overloading (asA)
Data/GI/Base/Attributes.hs view
@@ -1,8 +1,19 @@-{-# LANGUAGE GADTs, ScopedTypeVariables, DataKinds, KindSignatures,- TypeFamilies, TypeOperators, MultiParamTypeClasses, ConstraintKinds,- UndecidableInstances, FlexibleInstances, TypeApplications,- DefaultSignatures, PolyKinds, AllowAmbiguousTypes,- ImplicitParams, RankNTypes #-}+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DefaultSignatures #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE ImplicitParams #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-} -- | --@@ -146,29 +157,41 @@ AttrLabelProxy(..), - resolveAttr+ resolveAttr,+ bindPropToField,++ EqMaybe(..) ) where -import Control.Monad (void)+import Control.Monad (void, when) import Control.Monad.IO.Class (MonadIO, liftIO) import Data.GI.Base.BasicTypes (GObject)+import Data.GI.Base.DynVal (DynVal(..), ModelProxy, DVKey(..),+ modelProxyCurrentValue, modelProxyRegisterHandler,+ modelProxyUpdate, dvKeys, dvRead) import Data.GI.Base.GValue (GValueConstruct) import Data.GI.Base.Overloading (HasAttributeList, ResolveAttribute, ResolvedSymbolInfo)+import Data.GI.Base.Internal.PathFieldAccess (PathFieldAccess(..), Components) -import {-# SOURCE #-} Data.GI.Base.Signals (SignalInfo(..), SignalProxy,- on, after)+import {-# SOURCE #-} Data.GI.Base.Signals (SignalInfo(..),+ SignalProxy,+ on, after, connectGObjectNotify,+ SignalConnectMode(..)) -import Data.Proxy (Proxy(..)) import Data.Kind (Type)+import Data.Proxy (Proxy(..))+import qualified Data.Text as T -import GHC.TypeLits+import GHC.TypeLits (Symbol, KnownSymbol, ErrorMessage(..), TypeError,+ symbolVal) import GHC.Exts (Constraint) import GHC.OverloadedLabels (IsLabel(..))+import qualified Optics.Core as O -infixr 0 :=,:~,:=>,:~>+infixr 0 :=,:~,:=>,:~>,:<~,:!<~ -- | A proxy for attribute labels. data AttrLabelProxy (a :: Symbol) = AttrLabelProxy@@ -274,6 +297,20 @@ Proxy o -> b -> IO (AttrTransferType info) attrTransfer _ = return + -- | Like `attrSet`, but it uses the same type as the getter. This+ -- is useful for some nullable types, for which the getter returns+ -- @Maybe a@, while the setter takes an @a@. `attrPut` will+ -- instead accept an @Maybe a@.+ attrPut :: AttrBaseTypeConstraint info o =>+ o -> AttrGetType info -> IO ()+ default attrPut :: -- Make sure that a non-default method+ -- implementation is provided if AttrSet+ -- is set.+ CheckNotElem 'AttrPut (AttrAllowedOps info)+ (PutNotProvidedError info) =>+ o -> AttrGetType info -> IO ()+ attrPut = undefined+ -- | Return some information about the overloaded attribute, -- useful for debugging. See `resolveAttr` for how to access this -- conveniently.@@ -341,6 +378,11 @@ type family SetNotProvidedError (info :: o) :: ErrorMessage where SetNotProvidedError info = OpNotProvidedError info 'AttrSet "attrSet" +-- | Error to be raised when AttrSet is allowed, but an `attrPut`+-- implementation has not been provided.+type family PutNotProvidedError (info :: o) :: ErrorMessage where+ PutNotProvidedError info = OpNotProvidedError info 'AttrSet "attrPut"+ -- | Error to be raised when AttrConstruct is allowed, but an -- implementation has not been provided. type family ConstructNotProvidedError (info :: o) :: ErrorMessage where@@ -366,6 +408,9 @@ | AttrClear -- ^ It is possible to clear the value of the -- (nullable) attribute with `clear`.+ | AttrPut+ -- ^ It is possible to set a value of the same type as+ -- the one returned by `get`. deriving (Eq, Ord, Enum, Bounded, Show) -- | A user friendly description of the `AttrOpTag`, useful when@@ -375,6 +420,7 @@ AttrOpText 'AttrSet = "settable" AttrOpText 'AttrConstruct = "constructible" AttrOpText 'AttrClear = "nullable"+ AttrOpText 'AttrPut = "puttable" -- | Constraint on a @obj@\/@attr@ pair so that `set` works on values -- of type @value@.@@ -450,6 +496,61 @@ (AttrTransferTypeConstraint info) b, AttrSetTypeConstraint info (AttrTransferType info)) => AttrLabelProxy (attr :: Symbol) -> b -> AttrOp obj tag+ -- | Bind a property to the given `DynVal`, so that the property+ -- is changed whenever the `DynVal` is. This requires the implicit+ -- param @?_haskell_gi_modelProxy@, of type @`ModelProxy` model@ to be set.+ (:!<~) :: (HasAttributeList obj,+ info ~ ResolveAttribute attr obj,+ AttrInfo info,+ AttrBaseTypeConstraint info obj,+ AttrOpAllowed tag info obj,+ (AttrSetTypeConstraint info) b,+ ?_haskell_gi_modelProxy :: ModelProxy model+ ) =>+ AttrLabelProxy (attr :: Symbol) -> DynVal model b -> AttrOp obj ta+ -- | Bind a property to the given `DynVal`, so that the property+ -- is changed whenever the `DynVal` is. This requires the implicit+ -- param @?_haskell_gi_modelProxy@, of type @`ModelProxy` model@+ -- to be set. This will only actually set the property whenever+ -- the `DynVal` changes if the new value of the `DynVal` is+ -- different from the actual value of the property. If you want to+ -- set the property without checking equality you can use `:!<~`+ -- instead.+ (:<~) :: (HasAttributeList obj,+ info ~ ResolveAttribute attr obj,+ AttrInfo info,+ AttrBaseTypeConstraint info obj,+ AttrOpAllowed tag info obj,+ (AttrSetTypeConstraint info) b,+ AttrOpAllowed 'AttrGet info obj,+ EqMaybe b (AttrGetType info),+ ?_haskell_gi_modelProxy :: ModelProxy model+ ) =>+ AttrLabelProxy (attr :: Symbol) -> DynVal model b -> AttrOp obj tag+ -- | Given an AttrLabelProxy, bind the given attribute to the+ -- corresponding field in the model proxy (if there's one), so+ -- that changes in the attribute are reflected back into changes+ -- of the model.+ Bind :: (HasAttributeList obj,+ GObject obj,+ info ~ ResolveAttribute propName obj,+ AttrInfo info,+ KnownSymbol (AttrLabel info),+ AttrBaseTypeConstraint info obj,+ AttrOpAllowed tag info obj,+ AttrOpAllowed 'AttrPut info obj,+ ?_haskell_gi_modelProxy :: ModelProxy model,+ outType ~ AttrGetType info,+ (AttrSetTypeConstraint info) outType,+ components ~ Components fieldName,+ PathFieldAccess components model outType,+ KnownSymbol fieldName,+ Eq outType+ ) =>+ AttrLabelProxy (propName :: Symbol) ->+ AttrLabelProxy (fieldName :: Symbol) ->+ AttrOp obj tag+ -- | Connect the given signal to a signal handler. On :: (GObject obj, SignalInfo info) => SignalProxy obj info@@ -461,6 +562,16 @@ -> ((?self :: obj) => HaskellCallbackType info) -> AttrOp obj tag +class EqMaybe a b where+ eqMaybe :: a -> b -> Bool++instance Eq a => EqMaybe a a where+ eqMaybe x y = x == y++instance Eq a => EqMaybe a (Maybe a) where+ eqMaybe _ Nothing = False+ eqMaybe x (Just y) = x == y+ -- | Set a number of properties for some object. set :: forall o m. MonadIO m => o -> [AttrOp o 'AttrSet] -> m () set obj = liftIO . mapM_ app@@ -484,6 +595,26 @@ attrTransfer @(ResolveAttribute label o) (Proxy @o) x >>= attrSet @(ResolveAttribute label o) obj + app ((_attr :: AttrLabelProxy label) :!<~ dv) = do+ model <- modelProxyCurrentValue ?_haskell_gi_modelProxy+ attrSet @(ResolveAttribute label o) obj (dvRead dv model)+ modelProxyRegisterHandler ?_haskell_gi_modelProxy (dvKeys dv) $ \modifiedModel ->+ attrSet @(ResolveAttribute label o) obj (dvRead dv modifiedModel)++ app ((_attr :: AttrLabelProxy label) :<~ dv) = do+ model <- modelProxyCurrentValue ?_haskell_gi_modelProxy+ currentValue <- attrGet @(ResolveAttribute label o) obj+ let newValue = dvRead dv model+ when (not $ newValue `eqMaybe` currentValue) $ do+ attrSet @(ResolveAttribute label o) obj newValue+ modelProxyRegisterHandler ?_haskell_gi_modelProxy (dvKeys dv) $ \modifiedModel -> do+ current <- attrGet @(ResolveAttribute label o) obj+ let modifiedValue = dvRead dv modifiedModel+ when (not $ modifiedValue `eqMaybe` current) $+ attrSet @(ResolveAttribute label o) obj modifiedValue++ app (Bind pattr fattr) = bindPropToField (Proxy @'AttrSet) obj pattr fattr+ app (On signal callback) = void $ on obj signal callback app (After signal callback) = void $ after obj signal callback @@ -524,3 +655,57 @@ AttrInfo info) => obj -> AttrLabelProxy (attr :: Symbol) -> Maybe ResolvedSymbolInfo resolveAttr _o _p = dbgAttrInfo @info++-- | Create a binding between the given property of an object and a+-- field in the model.+bindPropToField :: forall o info prop field model outType tag components.+ (HasAttributeList o,+ GObject o,+ info ~ ResolveAttribute prop o,+ AttrInfo info,+ KnownSymbol (AttrLabel info),+ AttrBaseTypeConstraint info o,+ AttrOpAllowed tag info o,+ AttrOpAllowed 'AttrPut info o,+ ?_haskell_gi_modelProxy :: ModelProxy model,+ outType ~ AttrGetType info,+ (AttrSetTypeConstraint info) outType,+ components ~ Components field,+ PathFieldAccess components model outType,+ KnownSymbol field,+ Eq outType+ ) =>+ Proxy tag -> o -> AttrLabelProxy (prop :: Symbol) ->+ AttrLabelProxy (field :: Symbol) -> IO ()+bindPropToField _ obj _ _ = do+ model <- modelProxyCurrentValue ?_haskell_gi_modelProxy++ -- Set the property to the current value in the model.+ currentPropValue <- attrGet @(ResolveAttribute prop o) obj+ let (lens, components) = pathFieldAccess (Proxy @components)+ (Proxy @model)+ key = DVKeyDirect components+ currentModelValue = O.view lens model+ when (currentModelValue /= currentPropValue) $+ attrPut @(ResolveAttribute prop o) obj currentModelValue++ -- Set the property whenever the model changes.+ modelProxyRegisterHandler ?_haskell_gi_modelProxy key $ \modifiedModel -> do+ let newVal = O.view lens modifiedModel+ oldVal <- attrGet @(ResolveAttribute prop o) obj+ when (newVal /= oldVal) $+ attrPut @(ResolveAttribute prop o) obj newVal++ -- Change the model whenever the property changes.+ let handler = \_parent _psec -> do+ newVal <- attrGet @(ResolveAttribute prop o) obj+ let doUpdate curModel =+ let oldVal = O.view lens curModel+ in if newVal == oldVal+ then Nothing+ else Just $ O.set lens newVal curModel+ modelProxyUpdate ?_haskell_gi_modelProxy components doUpdate+ propName = T.pack $ symbolVal (Proxy @(AttrLabel (ResolveAttribute prop o)))++ void $ connectGObjectNotify obj handler SignalConnectBefore (Just propName)+
Data/GI/Base/BasicTypes.hsc view
@@ -1,5 +1,5 @@ {-# LANGUAGE ConstraintKinds, FlexibleContexts, FlexibleInstances,- DeriveDataTypeable, TypeFamilies, ScopedTypeVariables,+ TypeFamilies, ScopedTypeVariables, MultiParamTypeClasses, DataKinds, TypeOperators, UndecidableInstances, AllowAmbiguousTypes #-} @@ -49,7 +49,6 @@ import Data.Coerce (coerce, Coercible) import Data.IORef (IORef) import qualified Data.Text as T-import Data.Typeable (Typeable) import Data.Int import Data.Word @@ -163,7 +162,6 @@ -- an unexpected `Foreign.Ptr.nullPtr`. data UnexpectedNullPointerReturn = UnexpectedNullPointerReturn { nullPtrErrorMsg :: T.Text }- deriving (Typeable) instance Show UnexpectedNullPointerReturn where show r = T.unpack (nullPtrErrorMsg r)
+ Data/GI/Base/DynVal.hs view
@@ -0,0 +1,144 @@+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}++{-|++This is an __experimental__ module that introduces support for dynamic+values: these are functions from a record @model@ to some type @a@+which keep track of which selectors of @model@ does the result depend+on. For example, for a record of the form++> data Example = Example {+> first :: Int,+> second :: Bool,+> third :: Float+> }++a `DynVal Example String` could be constructed, assuming that you are+given a @record@ `DynVal` representing the full record, using:++> let format = \f s -> "First is " <> f <> " and second is " <> s+> formatted = format <$> record.first <*> record.second :: DynVal Example String++Here we are showcasing two properties of `DynVal`s: they can be+conveniently constructed using @OverloadedRecordDot@, and they provide+an `Applicative` instance. The resulting @formatted@ `DynVal` keeps+track of the fact that it depends on the @first@ and @second@ record+selectors.++-}++module Data.GI.Base.DynVal+ ( DynVal(..), DVKey(..), ModelProxy(..), dvKeys, dvRead,+ modelProxyCurrentValue, modelProxyRegisterHandler, modelProxyUpdate) where++import GHC.Records (HasField(..))+import qualified GHC.TypeLits as TL++import Data.Proxy (Proxy(..))+import qualified Data.Set as S+import Data.String (IsString(..))+import qualified Data.Text as T++data DVKey = DVKeyDirect [T.Text]+ -- ^ Direct access to subfields: for example writing+ -- @record.field.subfield@ (using the `HasField`+ -- instance) would lead to @`DVKeyDirect` ["field",+ -- "subfield"]@+ | DVKeyDerived (S.Set [T.Text])+ -- ^ Value derived from a direct key, by acting with the+ -- functor or applicative instances.+ deriving (Eq, Ord, Show)++-- | A `DynVal` is a way of extracting values of type @a@ from+-- @model@, which keeps track of which fields (parameterised by+-- `dvKeys`) in @model@ are needed for computing the `DynVal`.+data DynVal model a = DynVal DVKey (model -> a)++-- | Keys to fields in the model that this `DynVal` depends on.+dvKeys :: DynVal model a -> DVKey+dvKeys (DynVal s _) = s++-- | Compute the actual value given a model.+dvRead :: DynVal model a -> model -> a+dvRead (DynVal _ r) = r++-- | Turn a key into a derived one.+toDerived :: DVKey -> DVKey+toDerived (DVKeyDirect d) = DVKeyDerived (S.singleton d)+toDerived derived = derived++-- | Joining of keys always produces derived ones.+instance Semigroup DVKey where+ DVKeyDirect a <> DVKeyDirect b = DVKeyDerived $ S.fromList [a,b]+ (DVKeyDirect a) <> (DVKeyDerived b) =+ DVKeyDerived $ S.insert a b+ (DVKeyDerived a) <> (DVKeyDirect b) =+ DVKeyDerived $ S.insert b a+ (DVKeyDerived a) <> (DVKeyDerived b) =+ DVKeyDerived $ S.union a b++instance Functor (DynVal model) where+ fmap f dv = DynVal (toDerived $ dvKeys dv) (f . dvRead dv)++instance Applicative (DynVal model) where+ pure x = DynVal (DVKeyDerived S.empty) (const x)+ dF <*> dA = DynVal (dvKeys dF <> dvKeys dA)+ (\m -> let f = dvRead dF m+ in f (dvRead dA m))++instance IsString (DynVal model T.Text) where+ fromString s = pure (T.pack s)++{-+-- If we make dvKeys :: model -> S.Set DVKey we can also produce a+-- Monad instance, but the set of resulting keys might depend on the+-- specific model passed, which could lead to subtle bugs.++instance Monad (DynVal model) where+ dv >>= gen = let runGen = \m -> gen (dvRead dv m)+ in DynVal {dvKeys = \m -> S.union (dvKeys dv m)+ (dvKeys (runGen m) m)+ , dvRead = \m -> dvRead (runGen m) m+ }+-}++-- | A `ModelProxy` is a way of obtaining records of type `model`,+-- which allows for registering for notifications whenever certain+-- keys (typically associated to record fields) get modified, and+-- allows to modify fields of the model.+data ModelProxy model = ModelProxy (IO model) (DVKey -> (model -> IO ()) -> IO ()) ([T.Text] -> (model -> Maybe model) -> IO ())++-- The following would be most naturally field accessors, but because+-- we introduce HasField instances for proxies we need to make these+-- ordinary functions instead.++-- | Obtain the current value of the model.+modelProxyCurrentValue :: ModelProxy model -> IO model+modelProxyCurrentValue (ModelProxy m _ _) = m++-- | Register a handler that will be executed whenever any of the+-- fields in the model pointed to by the keys is modified.+modelProxyRegisterHandler :: ModelProxy model -> DVKey -> (model -> IO ()) -> IO ()+modelProxyRegisterHandler (ModelProxy _ r _) = r++-- | Modify the given keys in the proxy, using the given update+-- function, of type (model -> Maybe model). If this function returns+-- Nothing no modification will be performed, otherwise the modified+-- model will be stored in the ModelProxy, and any listeners will be+-- notified of a change.+modelProxyUpdate :: ModelProxy model -> [T.Text] -> (model -> Maybe model)+ -> IO ()+modelProxyUpdate (ModelProxy _ _ u) = u++instance (HasField fieldName field a,+ TL.KnownSymbol fieldName) =>+ HasField fieldName (DynVal model field) (DynVal model a) where+ getField dv = let fn = T.pack . TL.symbolVal $ (Proxy :: Proxy fieldName)+ key = case dvKeys dv of+ derived@(DVKeyDerived _) -> derived+ DVKeyDirect direct -> DVKeyDirect (direct <> [fn])+ in DynVal key (getField @fieldName . dvRead dv)
Data/GI/Base/GError.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable, ScopedTypeVariables #-}+{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies, DataKinds #-} -- | To catch GError exceptions use the@@ -65,7 +65,6 @@ import Control.Exception import Data.Text (Text) import qualified Data.Text as T-import Data.Typeable (Typeable) import System.IO.Unsafe (unsafePerformIO) @@ -83,7 +82,6 @@ -- message. These can be accessed by 'gerrorDomain', 'gerrorCode' and -- 'gerrorMessage' below. newtype GError = GError (ManagedPtr GError)- deriving (Typeable) instance Show GError where show gerror = unsafePerformIO $ do
Data/GI/Base/GObject.hsc view
@@ -1,11 +1,13 @@-{-# LANGUAGE GADTs #-}-{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE AllowAmbiguousTypes #-}-{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE ImplicitParams #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} -- | This module constains helpers for dealing with `GObject`-derived -- types.@@ -39,7 +41,7 @@ ) where import Data.Maybe (catMaybes)-import Control.Monad (void)+import Control.Monad (void, when) import Control.Monad.IO.Class (MonadIO, liftIO) import Data.Proxy (Proxy(..))@@ -58,9 +60,11 @@ import Data.Text (Text) import qualified Data.Text as T +import qualified Optics.Core as O+ import Data.GI.Base.Attributes (AttrOp(..), AttrOpTag(..), AttrLabelProxy, attrConstruct, attrTransfer,- AttrInfo(..))+ AttrInfo(..), EqMaybe(..), bindPropToField) import Data.GI.Base.BasicTypes (CGType, GType(..), GObject, GSList, GDestroyNotify, ManagedPtr(..), GParamSpec(..), TypedObject(glibType),@@ -68,6 +72,8 @@ import Data.GI.Base.BasicConversions (withTextCString, cstringToText, packGSList, mapGSList) import Data.GI.Base.CallStack (HasCallStack, prettyCallStack)+import Data.GI.Base.DynVal (modelProxyCurrentValue, modelProxyRegisterHandler,+ dvKeys, dvRead) import Data.GI.Base.GParamSpec (PropertyInfo(..), gParamSpecValue, CIntPropertyInfo(..), CStringPropertyInfo(..),@@ -82,6 +88,7 @@ import Data.GI.Base.Overloading (ResolveAttribute) import Data.GI.Base.Signals (on, after) import Data.GI.Base.Utils (dbgLog, callocBytes, freeMem)+import Data.GI.Base.Internal.PathFieldAccess (Components, PathFieldAccess(..)) #include <glib-object.h> @@ -99,6 +106,7 @@ props <- catMaybes <$> mapM construct attrs obj <- doConstructGObject constructor props mapM_ (setSignal obj) attrs+ mapM_ (registerHandlers obj) attrs return obj where construct :: AttrOp o 'AttrConstruct ->@@ -113,6 +121,30 @@ (attrTransfer @(ResolveAttribute label o) (Proxy @o) x >>= attrConstruct @(ResolveAttribute label o)) + construct ((_attr :: AttrLabelProxy label) :!<~ dv) = do+ model <- modelProxyCurrentValue ?_haskell_gi_modelProxy+ Just <$> attrConstruct @(ResolveAttribute label o) (dvRead dv model)++ construct (Bind (_pattr :: AttrLabelProxy prop)+ (_fattr :: AttrLabelProxy field)) = do+ model <- modelProxyCurrentValue ?_haskell_gi_modelProxy+ let lens = getLens (Proxy @field) model+ value = O.view lens model+ Just <$> attrConstruct @(ResolveAttribute prop o) value+ where getLens :: forall path components model value.+ (components ~ Components path,+ PathFieldAccess components model value) =>+ Proxy path -> model -> O.Lens' model value+ getLens _ _ = let+ (lens, _) = pathFieldAccess (Proxy @components) (Proxy @model)+ in lens++ -- Since we are constructing the object there's nothing to compare+ -- to, so we just set the value.+ construct ((_attr :: AttrLabelProxy label) :<~ dv) = do+ model <- modelProxyCurrentValue ?_haskell_gi_modelProxy+ Just <$> attrConstruct @(ResolveAttribute label o) (dvRead dv model)+ construct (On _ _) = return Nothing construct (After _ _) = return Nothing @@ -120,6 +152,23 @@ setSignal obj (On signal callback) = void $ on obj signal callback setSignal obj (After signal callback) = void $ after obj signal callback setSignal _ _ = return ()++ registerHandlers :: GObject o => o -> AttrOp o 'AttrConstruct -> IO ()+ registerHandlers obj ((_attr :: AttrLabelProxy label) :!<~ dv) =+ modelProxyRegisterHandler ?_haskell_gi_modelProxy (dvKeys dv) $ \modifiedModel ->+ attrSet @(ResolveAttribute label o) obj (dvRead dv modifiedModel)++ registerHandlers obj ((_attr :: AttrLabelProxy label) :<~ dv) =+ modelProxyRegisterHandler ?_haskell_gi_modelProxy (dvKeys dv) $ \modifiedModel -> do+ current <- attrGet @(ResolveAttribute label o) obj+ let modifiedValue = dvRead dv modifiedModel+ when (not $ eqMaybe modifiedValue current) $+ attrSet @(ResolveAttribute label o) obj modifiedValue++ registerHandlers obj (Bind pattr fattr) =+ bindPropToField (Proxy @'AttrConstruct) obj pattr fattr++ registerHandlers _ _ = pure () -- | Construct the given `GObject`, given a set of actions -- constructing desired `GValue`s to set at construction time.
+ Data/GI/Base/Internal/PathFieldAccess.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}++-- | Support for creating lenses from overloaded labels of the type+-- @#fieldName@, or @#"fieldName.subfield"@.++module Data.GI.Base.Internal.PathFieldAccess+ ( Components, PathFieldAccess(..)) where++import qualified GHC.TypeLits as TL+import Data.Kind (Constraint, Type)+import Data.Proxy (Proxy(..))+import qualified Data.Text as T+import qualified Optics.Core as O+import qualified Optics.Internal.Generic as OG++-- The Char class was introduced in GHC 9.2 (base 4.16), if this is+-- not available we fall back to an implementation that does not allow+-- for nested access. Note that overloaded labels of the form+-- #"record.subrecord" only became valid syntax in GHC 9.6, so this is+-- only really useful from that version.+#if MIN_VERSION_base(4,16,0)+type family AppendChar (s :: TL.Symbol) (c :: Char) where+ AppendChar s c = TL.AppendSymbol s (TL.ConsSymbol c "")++type family DoSplit (c :: Char) (acc :: TL.Symbol) (uncons :: Maybe (Char, TL.Symbol)) where+ DoSplit _ acc Nothing = '[acc]+ DoSplit c acc (Just '(c, rest)) = acc : DoSplit c "" (TL.UnconsSymbol rest)+ DoSplit c acc (Just '(k, rest)) = DoSplit c (AppendChar acc k) (TL.UnconsSymbol rest)++type family SplitByChar (c :: Char) (s :: TL.Symbol) :: [TL.Symbol] where+ SplitByChar c s = DoSplit c "" (TL.UnconsSymbol s)++type family Components (s :: TL.Symbol) :: [TL.Symbol] where+ Components s = SplitByChar '.' s+#else+type family Components (s :: TL.Symbol) :: [TL.Symbol] where+ Components s = '[s]+#endif++-- | Check that the given symbol is not the empty string. If it is,+-- raise a TypeError with the given msg.+type family NonEmpty (s :: TL.Symbol) (msg :: TL.ErrorMessage) :: Constraint where+ NonEmpty "" msg = TL.TypeError msg+ NonEmpty _ _ = ()++-- | Create a lens for the given path, and return it together with the+-- path split into components.+class PathFieldAccess (path :: [TL.Symbol]) (model :: Type) (val :: Type) | path model -> val where+ pathFieldAccess :: Proxy path -> Proxy model -> (O.Lens' model val, [T.Text])++instance {-# OVERLAPPING #-}+ (OG.GFieldImpl fieldName model model val val,+ NonEmpty fieldName (TL.Text "Field names cannot be empty"),+ TL.KnownSymbol fieldName) =>+ PathFieldAccess (fieldName : '[]) model val where+ pathFieldAccess _ _ = (OG.gfieldImpl @fieldName @model @model @val @val,+ [T.pack $ TL.symbolVal (Proxy @fieldName)])++instance (OG.GFieldImpl fieldName model model val val,+ TL.KnownSymbol fieldName,+ PathFieldAccess rest val inner) =>+ PathFieldAccess (fieldName : rest) model inner where+ pathFieldAccess _ _ =+ let (innerLens, innerPath) = pathFieldAccess (Proxy @rest) (Proxy @val)+ outerLens = OG.gfieldImpl @fieldName @model @model @val @val+ outerName = T.pack $ TL.symbolVal (Proxy @fieldName)+ in (outerLens O.% innerLens, outerName : innerPath)+
Data/GI/Base/Signals.hs view
@@ -54,6 +54,7 @@ , GObjectNotifySignalInfo , SignalCodeGenError , resolveSignal+ , connectGObjectNotify ) where import Control.Monad.IO.Class (MonadIO, liftIO)@@ -74,7 +75,9 @@ import qualified Data.Text as T import Data.Text (Text) -import Data.GI.Base.Attributes (AttrLabelProxy(..), AttrInfo(AttrLabel))+import Data.GI.Base.Attributes (AttrLabelProxy(..), AttrInfo(AttrLabel),+ AttrGetType, attrGet,+ AttrBaseTypeConstraint) import Data.GI.Base.BasicConversions (withTextCString) import Data.GI.Base.BasicTypes import Data.GI.Base.GParamSpec (newGParamSpecFromPtr)@@ -99,6 +102,16 @@ pl ~ AttrLabel info, KnownSymbol pl) => AttrLabelProxy propName -> SignalProxy o GObjectNotifySignalInfo+ -- | A signal connector for the @notify@ signal on the given+ -- property, similar to `PropertyNotify`, but it passes the new+ -- value of the property to the callback for convenience.+ PropertySet :: (info ~ ResolveAttribute propName o,+ AttrInfo info,+ AttrBaseTypeConstraint info o,+ b ~ AttrGetType info,+ pl ~ AttrLabel info, KnownSymbol pl) =>+ AttrLabelProxy propName ->+ SignalProxy o (GObjectPropertySetSignalInfo b) -- | Support for overloaded labels. instance (info ~ ResolveSignal slot object) =>@@ -141,11 +154,31 @@ object -> SignalProxy object info -> ((?self :: object) => HaskellCallbackType info) -> m SignalHandlerId+on o p@(PropertySet (_ :: AttrLabelProxy propName)) cb = liftIO $ do+ let wrapped = wrapPropertySet (Proxy @propName) (Proxy @object) cb+ cb' <- mkGObjectNotifyCallback wrapped+ connectSignalFunPtr o "notify" cb' SignalConnectBefore (proxyDetail p) on o p c = liftIO $ connectSignal @info o w SignalConnectBefore (proxyDetail p) where w :: object -> HaskellCallbackType info w parent = let ?self = parent in c +-- | Wrap a @b -> IO ()@ callback into a property notify callback on+-- the C side, by adding some code that reads the current value of the+-- property before invoking the callback.+wrapPropertySet :: forall info prop obj.+ (info ~ ResolveAttribute prop obj,+ AttrBaseTypeConstraint info obj,+ AttrInfo info,+ GObject obj) =>+ Proxy (prop :: Symbol) -> Proxy obj ->+ ((?self :: obj) => AttrGetType info -> IO ()) ->+ Ptr obj -> Ptr GParamSpec -> Ptr () -> IO ()+wrapPropertySet _ _ cb objPtr _pspec _data =+ withTransient objPtr $ \self -> do+ val <- attrGet @(ResolveAttribute prop obj) self+ let ?self = self in cb val+ -- | Connect a signal to a handler, running the handler after the default one. after :: forall object info m. (GObject object, MonadIO m, SignalInfo info) =>@@ -164,6 +197,8 @@ (_ ::: detail) -> Just detail PropertyNotify (AttrLabelProxy :: AttrLabelProxy propName) -> Just . T.pack $ symbolVal (Proxy @(AttrLabel (ResolveAttribute propName object)))+ PropertySet (AttrLabelProxy :: AttrLabelProxy propName) ->+ Just . T.pack $ symbolVal (Proxy @(AttrLabel (ResolveAttribute propName object))) -- Connecting GObjects to signals foreign import ccall g_signal_connect_data ::@@ -214,15 +249,15 @@ type GObjectNotifyCallback = GParamSpec -> IO () gobjectNotifyCallbackWrapper :: GObject o =>- (o -> GObjectNotifyCallback) -> Ptr () -> Ptr GParamSpec -> Ptr () -> IO ()+ (o -> GObjectNotifyCallback) -> GObjectNotifyCallbackC o gobjectNotifyCallbackWrapper cb selfPtr pspec _ = do pspec' <- newGParamSpecFromPtr pspec withTransient (castPtr selfPtr) $ \self -> cb self pspec' -type GObjectNotifyCallbackC = Ptr () -> Ptr GParamSpec -> Ptr () -> IO ()+type GObjectNotifyCallbackC o = Ptr o -> Ptr GParamSpec -> Ptr () -> IO () foreign import ccall "wrapper"- mkGObjectNotifyCallback :: GObjectNotifyCallbackC -> IO (FunPtr GObjectNotifyCallbackC)+ mkGObjectNotifyCallback :: GObjectNotifyCallbackC o -> IO (FunPtr (GObjectNotifyCallbackC o)) -- | Connect the given notify callback for a GObject. connectGObjectNotify :: GObject o =>@@ -233,6 +268,11 @@ connectGObjectNotify obj cb mode detail = do cb' <- mkGObjectNotifyCallback (gobjectNotifyCallbackWrapper cb) connectSignalFunPtr obj "notify" cb' mode detail++data GObjectPropertySetSignalInfo (b :: Type)+instance SignalInfo (GObjectPropertySetSignalInfo b) where+ type HaskellCallbackType (GObjectPropertySetSignalInfo b) = b -> IO ()+ connectSignal = undefined -- We connect these separately -- | Generate an informative type error whenever one tries to use a -- signal for which code generation has failed.
Data/GI/Base/Signals.hs-boot view
@@ -6,10 +6,11 @@ {-# LANGUAGE ImplicitParams #-} {-# LANGUAGE RankNTypes #-} -module Data.GI.Base.Signals (SignalInfo(..), SignalProxy, on, after) where+module Data.GI.Base.Signals (SignalInfo(..), SignalProxy, on, after,+ connectGObjectNotify, SignalConnectMode(..)) where import Data.GI.Base.Overloading (ResolvedSymbolInfo)-import Data.GI.Base.BasicTypes (GObject)+import Data.GI.Base.BasicTypes (GObject, GParamSpec) import Control.Monad.IO.Class (MonadIO) import Foreign.C (CULong) import Data.Text (Text)@@ -42,3 +43,11 @@ (GObject object, MonadIO m, SignalInfo info) => object -> SignalProxy object info -> ((?self :: object) => HaskellCallbackType info) -> m SignalHandlerId++type GObjectNotifyCallback = GParamSpec -> IO ()++connectGObjectNotify :: GObject o =>+ o -> (o -> GObjectNotifyCallback) ->+ SignalConnectMode ->+ Maybe Text ->+ IO SignalHandlerId
haskell-gi-base.cabal view
@@ -1,5 +1,5 @@ name: haskell-gi-base-version: 0.26.8+version: 0.26.9 synopsis: Foundation for libraries generated by haskell-gi description: Foundation for libraries generated by haskell-gi homepage: https://github.com/haskell-gi/haskell-gi@@ -19,7 +19,7 @@ source-repository head type: git- location: git://github.com/haskell-gi/haskell-gi.git+ location: https://github.com/haskell-gi/haskell-gi.git library exposed-modules: Data.GI.Base,@@ -44,15 +44,18 @@ Data.GI.Base.ShortPrelude, Data.GI.Base.Signals, Data.GI.Base.Utils,+ Data.GI.Base.DynVal, Data.GI.Base.Internal.CTypes+ Data.GI.Base.Internal.PathFieldAccess pkgconfig-depends: gobject-2.0 >= 2.42, glib-2.0 build-depends: base >= 4.11 && < 5, bytestring, containers,- text >= 1.0+ text >= 1.0,+ optics-core >= 0.4 - ghc-options: -Wall -Wno-redundant-constraints -fwarn-incomplete-patterns -Wcompat+ ghc-options: -Wall -Wno-redundant-constraints -fwarn-incomplete-patterns -Wcompat -Wno-unticked-promoted-constructors build-tool-depends: hsc2hs:hsc2hs cc-options: -fPIC