    {-# LINE 2 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}
    -- -*-haskell-*-
    -- GIMP Toolkit (GTK) Widget TextTag
    --
    -- Author : Duncan Coutts
    --
    -- Created: 4 August 2004
    --
    -- Copyright (C) 2004-2005 Duncan Coutts
    --
    -- This library is free software; you can redistribute it and/or
    -- modify it under the terms of the GNU Lesser General Public
    -- License as published by the Free Software Foundation; either
    -- version 2.1 of the License, or (at your option) any later version.
    --
    -- This library is distributed in the hope that it will be useful,
    -- but WITHOUT ANY WARRANTY; without even the implied warranty of
    -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    -- Lesser General Public License for more details.
    --
    -- TODO
    --
    -- Didn't bind `textTagTabs` properties, we need to bind PangoTab first (in `pango-tabs.c`)
    --
    -- |
    -- Maintainer : gtk2hs-users@lists.sourceforge.net
    -- Stability : provisional
    -- Portability : portable (depends on GHC)
    --
    -- A tag that can be applied to text in a 'TextBuffer'
    --
    module Graphics.UI.Gtk.Multiline.TextTag (
    -- * Detail
    --
    -- | You may wish to begin by reading the text widget conceptual overview
    -- which gives an overview of all the objects and data types related to the
    -- text widget and how they work together.
    --
    -- Tags should be in the 'TextTagTable' for a given
    -- 'Graphics.UI.Gtk.Multiline.TextBuffer.TextBuffer' before
    -- using them with that buffer.
    --
    -- 'Graphics.UI.Gtk.Multiline.TextBuffer.textBufferCreateTag' is the best way
    -- to create tags.
    --
    -- The 'textTagInvisible' property was not implemented for Gtk+ 2.0; it's planned
    -- to be implemented in future releases.

    -- * Class Hierarchy
    -- |
    -- @
    -- | 'GObject'
    -- | +----TextTag
    -- @

    -- * Types
      TextTag,
      TextTagClass,
      castToTextTag, gTypeTextTag,
      toTextTag,
      TagName,

    -- * Constructors
      textTagNew,

    -- * Methods
      textTagSetPriority,
      textTagGetPriority,
      TextAttributes(..),
      textAttributesNew,
      textAttributesCopy,
      textAttributesCopyValues,
      makeNewTextAttributes, -- internal

    -- * Attributes
      textTagName,
      textTagBackground,
      textTagBackgroundSet,
      textTagBackgroundFullHeight,
      textTagBackgroundFullHeightSet,
      textTagBackgroundGdk,

      textTagForeground,
      textTagForegroundSet,
      textTagForegroundGdk,

      textTagDirection,
      textTagEditable,
      textTagEditableSet,
      textTagFont,
      textTagFontDesc,
      textTagFamily,
      textTagFamilySet,
      textTagStyle,
      textTagStyleSet,
      -- textTagTabs,
      textTagTabsSet,
      textTagVariant,
      textTagVariantSet,
      textTagWeight,
      textTagWeightSet,
      textTagStretch,
      textTagStretchSet,
      textTagSize,
      textTagSizeSet,
      textTagScale,
      textTagScaleSet,
      textTagSizePoints,
      textTagJustification,
      textTagJustificationSet,
      textTagLanguage,
      textTagLanguageSet,
      textTagLeftMargin,
      textTagLeftMarginSet,
      textTagRightMargin,
      textTagRightMarginSet,
      textTagIndent,
      textTagIndentSet,
      textTagRise,
      textTagRiseSet,
      textTagPixelsAboveLines,
      textTagPixelsAboveLinesSet,
      textTagPixelsBelowLines,
      textTagPixelsBelowLinesSet,
      textTagPixelsInsideWrap,
      textTagPixelsInsideWrapSet,
      textTagStrikethrough,
      textTagStrikethroughSet,
      textTagUnderline,
      textTagUnderlineSet,
      textTagWrapMode,
      textTagWrapModeSet,

      textTagInvisible,
      textTagInvisibleSet,
      textTagParagraphBackground,
      textTagParagraphBackgroundSet,
      textTagParagraphBackgroundGdk,

      textTagPriority,

    -- * Signals
      textTagEvent,

    -- * Deprecated

      ) where

    import Control.Monad (liftM)

    import System.Glib.FFI
    import System.Glib.UTFString
    import System.Glib.Attributes
    import System.Glib.Properties
    import Graphics.UI.Gtk.Types
    {-# LINE 164 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}
    import Graphics.UI.Gtk.Signals
    {-# LINE 165 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}
    import Graphics.Rendering.Pango.Font
    import Graphics.Rendering.Pango.BasicTypes (FontDescription (..), makeNewFontDescription)
    import Graphics.Rendering.Pango.Enums (FontStyle(..), Variant(..),
                                             Stretch(..), Underline(..))
    import Graphics.UI.Gtk.General.Enums (TextDirection(..),
                                             Justification(..), WrapMode(..))
    import Graphics.UI.Gtk.General.Structs (Color(..))
    import Graphics.UI.Gtk.Multiline.Types ( TextIter, mkTextIterCopy )

    import Graphics.UI.Gtk.Gdk.EventM (EventM, EAny)
    import Control.Monad.Reader ( runReaderT )

    {-# LINE 180 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}

    type TagName = DefaultGlibString

    --------------------
    -- Constructors

    -- | Creates a 'TextTag'.
    --
    -- * Supplying @Nothing@ as tag name results in an anonymous tag.
    --
    textTagNew :: Maybe TagName -> IO TextTag
    textTagNew :: Maybe TagName -> IO TextTag
    textTagNew (Just TagName
    name) =
      (ForeignPtr TextTag -> TextTag, FinalizerPtr TextTag)
    -> IO (Ptr TextTag) -> IO TextTag
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    wrapNewGObject (ForeignPtr TextTag -> TextTag, FinalizerPtr TextTag)
    forall {a}. (ForeignPtr TextTag -> TextTag, FinalizerPtr a)
    mkTextTag (IO (Ptr TextTag) -> IO TextTag) -> IO (Ptr TextTag) -> IO TextTag
    forall a b. (a -> b) -> a -> b
    $
      TagName -> (CString -> IO (Ptr TextTag)) -> IO (Ptr TextTag)
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    forall a. TagName -> (CString -> IO a) -> IO a
    withUTFString TagName
    name ((CString -> IO (Ptr TextTag)) -> IO (Ptr TextTag))
    -> (CString -> IO (Ptr TextTag)) -> IO (Ptr TextTag)
    forall a b. (a -> b) -> a -> b
    $ \CString
    namePtr ->
      CString -> IO (Ptr TextTag)
    gtk_text_tag_new
    {-# LINE 195 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}
        namePtr
    textTagNew Maybe TagName
    Nothing =
      (ForeignPtr TextTag -> TextTag, FinalizerPtr TextTag)
    -> IO (Ptr TextTag) -> IO TextTag
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    wrapNewGObject (ForeignPtr TextTag -> TextTag, FinalizerPtr TextTag)
    forall {a}. (ForeignPtr TextTag -> TextTag, FinalizerPtr a)
    mkTextTag (IO (Ptr TextTag) -> IO TextTag) -> IO (Ptr TextTag) -> IO TextTag
    forall a b. (a -> b) -> a -> b
    $ CString -> IO (Ptr TextTag)
    gtk_text_tag_new CString
    forall a. Ptr a
    nullPtr

    --------------------
    -- Methods

    -- | Get the tag priority.
    --
    textTagGetPriority :: TextTagClass self => self -> IO Int
    textTagGetPriority :: forall self. TextTagClass self => self -> IO Int
    textTagGetPriority self
    self =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(TextTag ForeignPtr TextTag
    arg1) -> ForeignPtr TextTag -> (Ptr TextTag -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextTag
    arg1 ((Ptr TextTag -> IO CInt) -> IO CInt)
    -> (Ptr TextTag -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextTag
    argPtr1 ->Ptr TextTag -> IO CInt
    gtk_text_tag_get_priority Ptr TextTag
    argPtr1)
    {-# LINE 209 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}
        (toTextTag self)

    -- | Sets the priority of a 'TextTag'. Valid priorities are start at 0 and go
    -- to one less than
    -- 'Graphics.UI.Gtk.Multiline.TextTagTable.textTagTableGetSize'.
    -- Each tag in a table has a unique
    -- priority; setting the priority of one tag shifts the priorities of all the
    -- other tags in the table to maintain a unique priority for each tag. Higher
    -- priority tags \"win\" if two tags both set the same text attribute. When
    -- adding a tag to a tag table, it will be assigned the highest priority in the
    -- table by default; so normally the precedence of a set of tags is the order
    -- in which they were added to the table, or created with
    -- 'Graphics.UI.Gtk.Multiline.TextBuffer.textBufferCreateTag', which adds the tag to the buffer's table
    -- automatically.
    --
    textTagSetPriority :: TextTagClass self => self -> Int -> IO ()
    textTagSetPriority :: forall self. TextTagClass self => self -> Int -> IO ()
    textTagSetPriority self
    self Int
    priority =
      (\(TextTag ForeignPtr TextTag
    arg1) CInt
    arg2 -> ForeignPtr TextTag -> (Ptr TextTag -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextTag
    arg1 ((Ptr TextTag -> IO ()) -> IO ())
    -> (Ptr TextTag -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextTag
    argPtr1 ->Ptr TextTag -> CInt -> IO ()
    gtk_text_tag_set_priority Ptr TextTag
    argPtr1 CInt
    arg2)
    {-# LINE 227 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}
        (toTextTag self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    priority)

    -- TextAttributes methods

    newtype TextAttributes = TextAttributes (ForeignPtr (TextAttributes))
    {-# LINE 233 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}

    -- | Creates a 'TextAttributes', which describes a set of properties on some
    -- text.
    --
    textAttributesNew :: IO TextAttributes
    textAttributesNew :: IO TextAttributes
    textAttributesNew =
      IO (Ptr TextAttributes)
    gtk_text_attributes_new IO (Ptr TextAttributes)
    -> (Ptr TextAttributes -> IO TextAttributes) -> IO TextAttributes
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= Ptr TextAttributes -> IO TextAttributes
    makeNewTextAttributes

    -- | Copies src and returns a new 'TextAttributes'.
    --
    textAttributesCopy ::
      TextAttributes -- ^ @src@ - a 'TextAttributes' to be copied
     -> IO TextAttributes
    textAttributesCopy :: TextAttributes -> IO TextAttributes
    textAttributesCopy TextAttributes
    src =
      (\(TextAttributes ForeignPtr TextAttributes
    arg1) -> ForeignPtr TextAttributes
    -> (Ptr TextAttributes -> IO (Ptr TextAttributes))
    -> IO (Ptr TextAttributes)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextAttributes
    arg1 ((Ptr TextAttributes -> IO (Ptr TextAttributes))
     -> IO (Ptr TextAttributes))
    -> (Ptr TextAttributes -> IO (Ptr TextAttributes))
    -> IO (Ptr TextAttributes)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextAttributes
    argPtr1 ->Ptr TextAttributes -> IO (Ptr TextAttributes)
    gtk_text_attributes_copy Ptr TextAttributes
    argPtr1) TextAttributes
    src IO (Ptr TextAttributes)
    -> (Ptr TextAttributes -> IO TextAttributes) -> IO TextAttributes
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= Ptr TextAttributes -> IO TextAttributes
    makeNewTextAttributes

    -- | Copies the values from src to dest so that dest has the same values as src.
    --
    textAttributesCopyValues :: TextAttributes -> TextAttributes -> IO ()
    textAttributesCopyValues :: TextAttributes -> TextAttributes -> IO ()
    textAttributesCopyValues TextAttributes
    src TextAttributes
    dest =
      (\(TextAttributes ForeignPtr TextAttributes
    arg1) (TextAttributes ForeignPtr TextAttributes
    arg2) -> ForeignPtr TextAttributes -> (Ptr TextAttributes -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextAttributes
    arg1 ((Ptr TextAttributes -> IO ()) -> IO ())
    -> (Ptr TextAttributes -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextAttributes
    argPtr1 ->ForeignPtr TextAttributes -> (Ptr TextAttributes -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextAttributes
    arg2 ((Ptr TextAttributes -> IO ()) -> IO ())
    -> (Ptr TextAttributes -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextAttributes
    argPtr2 ->Ptr TextAttributes -> Ptr TextAttributes -> IO ()
    gtk_text_attributes_copy_values Ptr TextAttributes
    argPtr1 Ptr TextAttributes
    argPtr2) TextAttributes
    src TextAttributes
    dest

    -- | This function is use internal for transform TextAttributes.
    -- Don't export this function.
    makeNewTextAttributes :: Ptr TextAttributes -> IO TextAttributes
    makeNewTextAttributes :: Ptr TextAttributes -> IO TextAttributes
    makeNewTextAttributes Ptr TextAttributes
    ptr =
      (ForeignPtr TextAttributes -> TextAttributes)
    -> IO (ForeignPtr TextAttributes) -> IO TextAttributes
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM ForeignPtr TextAttributes -> TextAttributes
    TextAttributes (IO (ForeignPtr TextAttributes) -> IO TextAttributes)
    -> IO (ForeignPtr TextAttributes) -> IO TextAttributes
    forall a b. (a -> b) -> a -> b
    $ Ptr TextAttributes
    -> FinalizerPtr TextAttributes -> IO (ForeignPtr TextAttributes)
    forall a. Ptr a -> FinalizerPtr a -> IO (ForeignPtr a)
    newForeignPtr Ptr TextAttributes
    ptr FinalizerPtr TextAttributes
    text_attributes_unref

    foreign import ccall unsafe "&gtk_text_attributes_unref"
      text_attributes_unref :: FinalizerPtr TextAttributes

    --------------------
    -- Attributes

    -- | Name used to refer to the text tag. @Nothing@ for anonymous tags.
    --
    -- Default value: @Nothing@
    --
    textTagName :: (TextTagClass self, GlibString string) => Attr self (Maybe string)
    textTagName :: forall self string.
    (TextTagClass self, GlibString string) =>
    Attr self (Maybe string)
    textTagName = String -> Attr self (Maybe string)
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj (Maybe string)
    newAttrFromMaybeStringProperty String
    "name"

    -- | Background color as a string.
    --
    -- Default value: \"\"
    --
    textTagBackground :: (TextTagClass self, GlibString string) => WriteAttr self string
    textTagBackground :: forall self string.
    (TextTagClass self, GlibString string) =>
    WriteAttr self string
    textTagBackground = String -> WriteAttr self string
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> WriteAttr gobj string
    writeAttrFromStringProperty String
    "background"

    -- | Whether this tag affects the background color.
    --
    -- Default value: @False@
    --
    textTagBackgroundSet :: TextTagClass self => Attr self Bool
    textTagBackgroundSet :: forall self. TextTagClass self => Attr self Bool
    textTagBackgroundSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "background-set"

    -- | Whether the background color fills the entire line height or only the
    -- height of the tagged characters.
    --
    -- Default value: @False@
    --
    textTagBackgroundFullHeight :: TextTagClass self => Attr self Bool
    textTagBackgroundFullHeight :: forall self. TextTagClass self => Attr self Bool
    textTagBackgroundFullHeight = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "background-full-height"

    -- | Whether this tag affects background height.
    --
    -- Default value: @False@
    --
    textTagBackgroundFullHeightSet :: TextTagClass self => Attr self Bool
    textTagBackgroundFullHeightSet :: forall self. TextTagClass self => Attr self Bool
    textTagBackgroundFullHeightSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "background-full-height-set"

    -- | Background color as a (possibly unallocated) GdkColor.
    --
    textTagBackgroundGdk :: TextTagClass self => Attr self Color
    textTagBackgroundGdk :: forall self. TextTagClass self => Attr self Color
    textTagBackgroundGdk =
      String -> GType -> Attr self Color
    forall gobj boxed.
    (GObjectClass gobj, Storable boxed) =>
    String -> GType -> Attr gobj boxed
    newAttrFromBoxedStorableProperty String
    "background-gdk"
      GType
    gdk_color_get_type
    {-# LINE 327 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}
    -- | Foreground color as a string.
    --
    -- Default value: \"\"
    --
    textTagForeground :: (TextTagClass self, GlibString string) => WriteAttr self string
    textTagForeground :: forall self string.
    (TextTagClass self, GlibString string) =>
    WriteAttr self string
    textTagForeground = String -> WriteAttr self string
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> WriteAttr gobj string
    writeAttrFromStringProperty String
    "foreground"

    -- | Whether this tag affects the foreground color.
    --
    -- Default value: @False@
    --
    textTagForegroundSet :: TextTagClass self => Attr self Bool
    textTagForegroundSet :: forall self. TextTagClass self => Attr self Bool
    textTagForegroundSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "foreground-set"

    -- | Foreground color as a (possibly unallocated) GdkColor.
    --
    textTagForegroundGdk :: TextTagClass self => Attr self Color
    textTagForegroundGdk :: forall self. TextTagClass self => Attr self Color
    textTagForegroundGdk =
      String -> GType -> Attr self Color
    forall gobj boxed.
    (GObjectClass gobj, Storable boxed) =>
    String -> GType -> Attr gobj boxed
    newAttrFromBoxedStorableProperty String
    "foreground-gdk"
      GType
    gdk_color_get_type
    {-# LINE 365 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}
    -- | Text direction, e.g. right-to-left or left-to-right.
    --
    -- Default value: 'TextDirLtr'
    --
    textTagDirection :: TextTagClass self => Attr self TextDirection
    textTagDirection :: forall self. TextTagClass self => Attr self TextDirection
    textTagDirection = String -> GType -> Attr self TextDirection
    forall gobj enum.
    (GObjectClass gobj, Enum enum) =>
    String -> GType -> Attr gobj enum
    newAttrFromEnumProperty String
    "direction"
      GType
    gtk_text_direction_get_type
    {-# LINE 372 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}

    -- | Whether the text can be modified by the user.
    --
    -- Default value: @True@
    --
    textTagEditable :: TextTagClass self => Attr self Bool
    textTagEditable :: forall self. TextTagClass self => Attr self Bool
    textTagEditable = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "editable"

    -- | Whether this tag affects text editability.
    --
    -- Default value: @False@
    --
    textTagEditableSet :: TextTagClass self => Attr self Bool
    textTagEditableSet :: forall self. TextTagClass self => Attr self Bool
    textTagEditableSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "editable-set"

    -- | Font description as a string, e.g. \"Sans Italic 12\".
    --
    -- Default value: \"\"
    --
    textTagFont :: (TextTagClass self, GlibString string) => Attr self string
    textTagFont :: forall self string.
    (TextTagClass self, GlibString string) =>
    Attr self string
    textTagFont = String -> Attr self string
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj string
    newAttrFromStringProperty String
    "font"

    -- | Font description as a 'FontDescription' struct.
    --
    textTagFontDesc :: TextTagClass self => Attr self FontDescription
    textTagFontDesc :: forall self. TextTagClass self => Attr self FontDescription
    textTagFontDesc = (Ptr FontDescription -> IO FontDescription)
    -> (FontDescription -> (Ptr FontDescription -> IO ()) -> IO ())
    -> String
    -> GType
    -> Attr self FontDescription
    forall gobj boxed.
    GObjectClass gobj =>
    (Ptr boxed -> IO boxed)
    -> (boxed -> (Ptr boxed -> IO ()) -> IO ())
    -> String
    -> GType
    -> Attr gobj boxed
    newAttrFromBoxedOpaqueProperty Ptr FontDescription -> IO FontDescription
    makeNewFontDescription
      (\(FontDescription ForeignPtr FontDescription
    fd) Ptr FontDescription -> IO ()
    act -> ForeignPtr FontDescription
    -> (Ptr FontDescription -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontDescription
    fd Ptr FontDescription -> IO ()
    act) String
    "font-desc"
      GType
    pango_font_description_get_type
    {-# LINE 400 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}

    -- | Name of the font family, e.g. Sans, Helvetica, Times, Monospace.
    --
    -- Default value: \"\"
    --
    textTagFamily :: (TextTagClass self, GlibString string) => Attr self string
    textTagFamily :: forall self string.
    (TextTagClass self, GlibString string) =>
    Attr self string
    textTagFamily = String -> Attr self string
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj string
    newAttrFromStringProperty String
    "family"

    -- | Whether this tag affects the font family.
    --
    -- Default value: @False@
    --
    textTagFamilySet :: TextTagClass self => Attr self Bool
    textTagFamilySet :: forall self. TextTagClass self => Attr self Bool
    textTagFamilySet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "family-set"

    -- | Font style as a 'Style', e.g. 'StyleItalic'.
    --
    -- Default value: 'StyleNormal'
    --
    textTagStyle :: TextTagClass self => Attr self FontStyle
    textTagStyle :: forall self. TextTagClass self => Attr self FontStyle
    textTagStyle = String -> GType -> Attr self FontStyle
    forall gobj enum.
    (GObjectClass gobj, Enum enum) =>
    String -> GType -> Attr gobj enum
    newAttrFromEnumProperty String
    "style"
      GType
    pango_style_get_type
    {-# LINE 422 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}

    -- | Whether this tag affects the font style.
    --
    -- Default value: @False@
    --
    textTagStyleSet :: TextTagClass self => Attr self Bool
    textTagStyleSet :: forall self. TextTagClass self => Attr self Bool
    textTagStyleSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "style-set"

    -- | Custom tabs for this text.
    -- textTagTabs :: TextTagClass self => Attr self TabArray

    -- | Whether this tag affects tabs.
    --
    -- Default value: @False@
    --
    textTagTabsSet :: TextTagClass self => Attr self Bool
    textTagTabsSet :: forall self. TextTagClass self => Attr self Bool
    textTagTabsSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "tabs-set"

    -- | Font variant as a 'Variant', e.g. 'VariantSmallCaps'.
    --
    -- Default value: 'VariantNormal'
    --
    textTagVariant :: TextTagClass self => Attr self Variant
    textTagVariant :: forall self. TextTagClass self => Attr self Variant
    textTagVariant = String -> GType -> Attr self Variant
    forall gobj enum.
    (GObjectClass gobj, Enum enum) =>
    String -> GType -> Attr gobj enum
    newAttrFromEnumProperty String
    "variant"
      GType
    pango_variant_get_type
    {-# LINE 447 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}

    -- | Whether this tag affects the font variant.
    --
    -- Default value: @False@
    --
    textTagVariantSet :: TextTagClass self => Attr self Bool
    textTagVariantSet :: forall self. TextTagClass self => Attr self Bool
    textTagVariantSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "variant-set"

    -- | Font weight as an integer, see predefined values in 'Graphics.Rendering.Pango.Enums.Weight'; for
    -- example, 'Graphics.Rendering.Pango.Enums.WeightBold'.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 400
    --
    textTagWeight :: TextTagClass self => Attr self Int
    textTagWeight :: forall self. TextTagClass self => Attr self Int
    textTagWeight = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "weight"

    -- | Whether this tag affects the font weight.
    --
    -- Default value: @False@
    --
    textTagWeightSet :: TextTagClass self => Attr self Bool
    textTagWeightSet :: forall self. TextTagClass self => Attr self Bool
    textTagWeightSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "weight-set"

    -- | Font stretch as a 'Stretch', e.g. 'StretchCondensed'.
    --
    -- Default value: 'StretchNormal'
    --
    textTagStretch :: TextTagClass self => Attr self Stretch
    textTagStretch :: forall self. TextTagClass self => Attr self Stretch
    textTagStretch = String -> GType -> Attr self Stretch
    forall gobj enum.
    (GObjectClass gobj, Enum enum) =>
    String -> GType -> Attr gobj enum
    newAttrFromEnumProperty String
    "stretch"
      GType
    pango_stretch_get_type
    {-# LINE 479 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}

    -- | Whether this tag affects the font stretch.
    textTagStretchSet :: TextTagClass self => Attr self Bool
    textTagStretchSet :: forall self. TextTagClass self => Attr self Bool
    textTagStretchSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "stretch-set"

    -- | Font size in Pango units.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 0
    --
    textTagSize :: TextTagClass self => Attr self Int
    textTagSize :: forall self. TextTagClass self => Attr self Int
    textTagSize = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "size"

    -- | Whether this tag affects the font size.
    --
    -- Default value: @False@
    --
    textTagSizeSet :: TextTagClass self => Attr self Bool
    textTagSizeSet :: forall self. TextTagClass self => Attr self Bool
    textTagSizeSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "size-set"

    -- | Font size as a scale factor relative to the default font size. This
    -- properly adapts to theme changes etc. so is recommended.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 1
    --
    textTagScale :: TextTagClass self => Attr self Double
    textTagScale :: forall self. TextTagClass self => Attr self Double
    textTagScale = String -> Attr self Double
    forall gobj. GObjectClass gobj => String -> Attr gobj Double
    newAttrFromDoubleProperty String
    "scale"

    -- | Whether this tag scales the font size by a factor.
    --
    -- Default value: @False@
    --
    textTagScaleSet :: TextTagClass self => Attr self Bool
    textTagScaleSet :: forall self. TextTagClass self => Attr self Bool
    textTagScaleSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "scale-set"

    -- | Font size in points.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 0
    --
    textTagSizePoints :: TextTagClass self => Attr self Double
    textTagSizePoints :: forall self. TextTagClass self => Attr self Double
    textTagSizePoints = String -> Attr self Double
    forall gobj. GObjectClass gobj => String -> Attr gobj Double
    newAttrFromDoubleProperty String
    "size-points"

    -- | Left, right, or center justification.
    --
    -- Default value: 'JustifyLeft'
    --
    textTagJustification :: TextTagClass self => Attr self Justification
    textTagJustification :: forall self. TextTagClass self => Attr self Justification
    textTagJustification = String -> GType -> Attr self Justification
    forall gobj enum.
    (GObjectClass gobj, Enum enum) =>
    String -> GType -> Attr gobj enum
    newAttrFromEnumProperty String
    "justification"
      GType
    gtk_justification_get_type
    {-# LINE 533 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}

    -- | Whether this tag affects paragraph justification.
    --
    -- Default value: @False@
    --
    textTagJustificationSet :: TextTagClass self => Attr self Bool
    textTagJustificationSet :: forall self. TextTagClass self => Attr self Bool
    textTagJustificationSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "justification-set"

    -- | The language this text is in, as an ISO code. Pango can use this as a
    -- hint when rendering the text. If not set, an appropriate default will be
    -- used.
    --
    -- Default value: \"\"
    --
    textTagLanguage :: (TextTagClass self, GlibString string) => Attr self string
    textTagLanguage :: forall self string.
    (TextTagClass self, GlibString string) =>
    Attr self string
    textTagLanguage = String -> Attr self string
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj string
    newAttrFromStringProperty String
    "language"

    -- | Whether this tag affects the language the text is rendered as.
    --
    -- Default value: @False@
    --
    textTagLanguageSet :: TextTagClass self => Attr self Bool
    textTagLanguageSet :: forall self. TextTagClass self => Attr self Bool
    textTagLanguageSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "language-set"

    -- | Width of the left margin in pixels.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 0
    --
    textTagLeftMargin :: TextTagClass self => Attr self Int
    textTagLeftMargin :: forall self. TextTagClass self => Attr self Int
    textTagLeftMargin = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "left-margin"

    -- | Whether this tag affects the left margin.
    --
    -- Default value: @False@
    --
    textTagLeftMarginSet :: TextTagClass self => Attr self Bool
    textTagLeftMarginSet :: forall self. TextTagClass self => Attr self Bool
    textTagLeftMarginSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "left-margin-set"

    -- | Width of the right margin in pixels.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 0
    --
    textTagRightMargin :: TextTagClass self => Attr self Int
    textTagRightMargin :: forall self. TextTagClass self => Attr self Int
    textTagRightMargin = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "right-margin"

    -- | Whether this tag affects the right margin.
    --
    -- Default value: @False@
    --
    textTagRightMarginSet :: TextTagClass self => Attr self Bool
    textTagRightMarginSet :: forall self. TextTagClass self => Attr self Bool
    textTagRightMarginSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "right-margin-set"

    -- | Amount to indent the paragraph, in pixels.
    --
    -- Default value: 0
    --
    textTagIndent :: TextTagClass self => Attr self Int
    textTagIndent :: forall self. TextTagClass self => Attr self Int
    textTagIndent = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "indent"

    -- | Whether this tag affects indentation.
    --
    -- Default value: @False@
    --
    textTagIndentSet :: TextTagClass self => Attr self Bool
    textTagIndentSet :: forall self. TextTagClass self => Attr self Bool
    textTagIndentSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "indent-set"

    -- | Offset of text above the baseline (below the baseline if rise is
    -- negative) in pixels.
    --
    -- Default value: 0
    --
    textTagRise :: TextTagClass self => Attr self Int
    textTagRise :: forall self. TextTagClass self => Attr self Int
    textTagRise = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "rise"

    -- | Whether this tag affects the rise.
    textTagRiseSet :: TextTagClass self => Attr self Bool
    textTagRiseSet :: forall self. TextTagClass self => Attr self Bool
    textTagRiseSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "rise-set"

    -- | Pixels of blank space above paragraphs.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 0
    --
    textTagPixelsAboveLines :: TextTagClass self => Attr self Int
    textTagPixelsAboveLines :: forall self. TextTagClass self => Attr self Int
    textTagPixelsAboveLines = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "pixels-above-lines"

    -- | Whether this tag affects the number of pixels above lines.
    --
    -- Default value: @False@
    --
    textTagPixelsAboveLinesSet :: TextTagClass self => Attr self Bool
    textTagPixelsAboveLinesSet :: forall self. TextTagClass self => Attr self Bool
    textTagPixelsAboveLinesSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "pixels-above-lines-set"

    -- | Pixels of blank space below paragraphs.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 0
    --
    textTagPixelsBelowLines :: TextTagClass self => Attr self Int
    textTagPixelsBelowLines :: forall self. TextTagClass self => Attr self Int
    textTagPixelsBelowLines = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "pixels-below-lines"

    -- | Whether this tag affects the number of pixels below lines.
    --
    -- Default value: @False@
    --
    textTagPixelsBelowLinesSet :: TextTagClass self => Attr self Bool
    textTagPixelsBelowLinesSet :: forall self. TextTagClass self => Attr self Bool
    textTagPixelsBelowLinesSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "pixels-below-lines-set"

    -- | Pixels of blank space between wrapped lines in a paragraph.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 0
    --
    textTagPixelsInsideWrap :: TextTagClass self => Attr self Int
    textTagPixelsInsideWrap :: forall self. TextTagClass self => Attr self Int
    textTagPixelsInsideWrap = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "pixels-inside-wrap"

    -- | Whether this tag affects the number of pixels between wrapped lines.
    --
    -- Default value: @False@
    --
    textTagPixelsInsideWrapSet :: TextTagClass self => Attr self Bool
    textTagPixelsInsideWrapSet :: forall self. TextTagClass self => Attr self Bool
    textTagPixelsInsideWrapSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "pixels-inside-wrap-set"

    -- | Whether to strike through the text.
    --
    -- Default value: @False@
    --
    textTagStrikethrough :: TextTagClass self => Attr self Bool
    textTagStrikethrough :: forall self. TextTagClass self => Attr self Bool
    textTagStrikethrough = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "strikethrough"

    -- | Whether this tag affects strikethrough.
    --
    -- Default value: @False@
    --
    textTagStrikethroughSet :: TextTagClass self => Attr self Bool
    textTagStrikethroughSet :: forall self. TextTagClass self => Attr self Bool
    textTagStrikethroughSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "strikethrough-set"

    -- | Style of underline for this text.
    --
    -- Default value: 'UnderlineNone'
    --
    textTagUnderline :: TextTagClass self => Attr self Underline
    textTagUnderline :: forall self. TextTagClass self => Attr self Underline
    textTagUnderline = String -> GType -> Attr self Underline
    forall gobj enum.
    (GObjectClass gobj, Enum enum) =>
    String -> GType -> Attr gobj enum
    newAttrFromEnumProperty String
    "underline"
      GType
    pango_underline_get_type
    {-# LINE 684 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}

    -- | Whether this tag affects underlining.
    --
    -- Default value: @False@
    --
    textTagUnderlineSet :: TextTagClass self => Attr self Bool
    textTagUnderlineSet :: forall self. TextTagClass self => Attr self Bool
    textTagUnderlineSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "underline-set"

    -- | Whether to wrap lines never, at word boundaries, or at character
    -- boundaries.
    --
    -- Default value: 'WrapNone'
    --
    textTagWrapMode :: TextTagClass self => Attr self WrapMode
    textTagWrapMode :: forall self. TextTagClass self => Attr self WrapMode
    textTagWrapMode = String -> GType -> Attr self WrapMode
    forall gobj enum.
    (GObjectClass gobj, Enum enum) =>
    String -> GType -> Attr gobj enum
    newAttrFromEnumProperty String
    "wrap-mode"
      GType
    gtk_wrap_mode_get_type
    {-# LINE 700 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}

    -- | Whether this tag affects line wrap mode.
    --
    -- Default value: @False@
    --
    textTagWrapModeSet :: TextTagClass self => Attr self Bool
    textTagWrapModeSet :: forall self. TextTagClass self => Attr self Bool
    textTagWrapModeSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "wrap-mode-set"

    -- | Whether this text is hidden.
    --
    -- Note that there may still be problems with the support for invisible
    -- text, in particular when navigating programmatically inside a buffer
    -- containing invisible segments.
    --
    -- Default value: @False@
    --
    textTagInvisible :: TextTagClass self => Attr self Bool
    textTagInvisible :: forall self. TextTagClass self => Attr self Bool
    textTagInvisible = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "invisible"

    -- | Whether this tag affects text visibility.
    --
    -- Default value: @False@
    --
    textTagInvisibleSet :: TextTagClass self => Attr self Bool
    textTagInvisibleSet :: forall self. TextTagClass self => Attr self Bool
    textTagInvisibleSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "invisible-set"

    -- | The paragraph background color as a string.
    --
    -- Default value: \"\"
    --
    textTagParagraphBackground :: (TextTagClass self, GlibString string) => WriteAttr self string
    textTagParagraphBackground :: forall self string.
    (TextTagClass self, GlibString string) =>
    WriteAttr self string
    textTagParagraphBackground = String -> WriteAttr self string
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> WriteAttr gobj string
    writeAttrFromStringProperty String
    "paragraph-background"

    -- | Whether this tag affects the paragraph background color.
    --
    -- Default value: @False@
    --
    textTagParagraphBackgroundSet :: TextTagClass self => Attr self Bool
    textTagParagraphBackgroundSet :: forall self. TextTagClass self => Attr self Bool
    textTagParagraphBackgroundSet = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "paragraph-background-set"

    -- | The paragraph background color as a as a (possibly unallocated) 'Color'.
    --
    textTagParagraphBackgroundGdk :: TextTagClass self => Attr self Color
    textTagParagraphBackgroundGdk :: forall self. TextTagClass self => Attr self Color
    textTagParagraphBackgroundGdk =
      String -> GType -> Attr self Color
    forall gobj boxed.
    (GObjectClass gobj, Storable boxed) =>
    String -> GType -> Attr gobj boxed
    newAttrFromBoxedStorableProperty String
    "paragraph-background-gdk"
      GType
    gdk_color_get_type
    {-# LINE 747 "./Graphics/UI/Gtk/Multiline/TextTag.chs" #-}

    -- | \'priority\' property. See 'textTagGetPriority' and 'textTagSetPriority'
    --
    textTagPriority :: TextTagClass self => Attr self Int
    textTagPriority :: forall self. TextTagClass self => Attr self Int
    textTagPriority = (self -> IO Int)
    -> (self -> Int -> IO ()) -> ReadWriteAttr self Int Int
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Int
    forall self. TextTagClass self => self -> IO Int
    textTagGetPriority
      self -> Int -> IO ()
    forall self. TextTagClass self => self -> Int -> IO ()
    textTagSetPriority

    --------------------
    -- Signals

    -- the following signal only really makes sense if the EventM module provides dynamic upcast
    -- functions since the user must test what kind of event has been delivered.

    -- | An event has occurred that affects the given tag.
    --
    -- * Adding an event handler to the tag makes it possible to react on
    -- e.g. mouse clicks to implement hyperlinking.
    --
    -- * The first argument is the object the event was fired from (typically a 'TextView').
    -- The second argument is the iterator indicating where the event happened.
    --
    textTagEvent :: TextTagClass self => Signal self (GObject -> TextIter -> EventM EAny Bool)
    textTagEvent :: forall self.
    TextTagClass self =>
    Signal self (GObject -> TextIter -> EventM EAny Bool)
    textTagEvent = (Bool
     -> self
     -> (GObject -> TextIter -> EventM EAny Bool)
     -> IO (ConnectId self))
    -> Signal self (GObject -> TextIter -> EventM EAny Bool)
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (\Bool
    after self
    obj GObject -> TextIter -> EventM EAny Bool
    fun ->
                           String
    -> (Ptr TextIter -> IO TextIter)
    -> Bool
    -> self
    -> (GObject -> Ptr EAny -> TextIter -> IO Bool)
    -> IO (ConnectId self)
    forall a' obj c' c b.
    (GObjectClass a', GObjectClass obj) =>
    String
    -> (Ptr c' -> IO c)
    -> Bool
    -> obj
    -> (a' -> Ptr b -> c -> IO Bool)
    -> IO (ConnectId obj)
    connect_OBJECT_PTR_BOXED__BOOL String
    "event" Ptr TextIter -> IO TextIter
    mkTextIterCopy Bool
    after self
    obj
                             (\GObject
    tv Ptr EAny
    eventPtr TextIter
    iter -> EventM EAny Bool -> Ptr EAny -> IO Bool
    forall r (m :: * -> *) a. ReaderT r m a -> r -> m a
    runReaderT (GObject -> TextIter -> EventM EAny Bool
    fun GObject
    tv TextIter
    iter) Ptr EAny
    eventPtr)
                          )

    --------------------
    -- Deprecated Signals and Events

    foreign import ccall unsafe "gtk_text_tag_new"
      gtk_text_tag_new :: ((Ptr CChar) -> (IO (Ptr TextTag)))

    foreign import ccall unsafe "gtk_text_tag_get_priority"
      gtk_text_tag_get_priority :: ((Ptr TextTag) -> (IO CInt))

    foreign import ccall safe "gtk_text_tag_set_priority"
      gtk_text_tag_set_priority :: ((Ptr TextTag) -> (CInt -> (IO ())))

    foreign import ccall unsafe "gtk_text_attributes_new"
      gtk_text_attributes_new :: (IO (Ptr TextAttributes))

    foreign import ccall safe "gtk_text_attributes_copy"
      gtk_text_attributes_copy :: ((Ptr TextAttributes) -> (IO (Ptr TextAttributes)))

    foreign import ccall safe "gtk_text_attributes_copy_values"
      gtk_text_attributes_copy_values :: ((Ptr TextAttributes) -> ((Ptr TextAttributes) -> (IO ())))

    foreign import ccall unsafe "gdk_color_get_type"
      gdk_color_get_type :: CULong

    foreign import ccall unsafe "gtk_text_direction_get_type"
      gtk_text_direction_get_type :: CULong

    foreign import ccall unsafe "pango_font_description_get_type"
      pango_font_description_get_type :: CULong

    foreign import ccall unsafe "pango_style_get_type"
      pango_style_get_type :: CULong

    foreign import ccall unsafe "pango_variant_get_type"
      pango_variant_get_type :: CULong

    foreign import ccall unsafe "pango_stretch_get_type"
      pango_stretch_get_type :: CULong

    foreign import ccall unsafe "gtk_justification_get_type"
      gtk_justification_get_type :: CULong

    foreign import ccall unsafe "pango_underline_get_type"
      pango_underline_get_type :: CULong

    foreign import ccall unsafe "gtk_wrap_mode_get_type"
      gtk_wrap_mode_get_type :: CULong