    {-# LINE 2 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
    -- -*-haskell-*-
    -- GIMP Toolkit (GTK) Widget FontButton
    --
    -- Author : Duncan Coutts
    --
    -- Created: 5 April 2005
    --
    -- Copyright (C) 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.
    --
    -- |
    -- Maintainer : gtk2hs-users@lists.sourceforge.net
    -- Stability : provisional
    -- Portability : portable (depends on GHC)
    --
    -- A button to launch a font selection dialog
    --
    -- * Module available since Gtk+ version 2.4
    --
    module Graphics.UI.Gtk.Selectors.FontButton (
    -- * Detail
    --
    -- | The 'FontButton' is a button which displays the currently selected font
    -- an allows to open a font selection dialog to change the font. It is suitable
    -- widget for selecting a font in a preference dialog.

    -- * Class Hierarchy
    -- |
    -- @
    -- | 'GObject'
    -- | +----'Object'
    -- | +----'Widget'
    -- | +----'Container'
    -- | +----'Bin'
    -- | +----'Button'
    -- | +----FontButton
    -- @

    -- * Types
      FontButton,
      FontButtonClass,
      castToFontButton, gTypeFontButton,
      toFontButton,

    -- * Constructors
      fontButtonNew,
      fontButtonNewWithFont,

    -- * Methods
      fontButtonSetFontName,
      fontButtonGetFontName,
      fontButtonSetShowStyle,
      fontButtonGetShowStyle,
      fontButtonSetShowSize,
      fontButtonGetShowSize,
      fontButtonSetUseFont,
      fontButtonGetUseFont,
      fontButtonSetUseSize,
      fontButtonGetUseSize,
      fontButtonSetTitle,
      fontButtonGetTitle,

    -- * Attributes
      fontButtonTitle,
      fontButtonFontName,
      fontButtonUseFont,
      fontButtonUseSize,
      fontButtonShowStyle,
      fontButtonShowSize,

    -- * Signals
      onFontSet,
      afterFontSet,

      ) 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.Abstract.Object (makeNewObject)
    import Graphics.UI.Gtk.Types
    {-# LINE 96 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
    import Graphics.UI.Gtk.Signals
    {-# LINE 97 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}

    {-# LINE 99 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}

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

    -- | Creates a new font picker widget.
    --
    fontButtonNew :: IO FontButton
    fontButtonNew :: IO FontButton
    fontButtonNew =
      (ForeignPtr FontButton -> FontButton, FinalizerPtr FontButton)
    -> IO (Ptr FontButton) -> IO FontButton
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr FontButton -> FontButton, FinalizerPtr FontButton)
    forall {a}. (ForeignPtr FontButton -> FontButton, FinalizerPtr a)
    mkFontButton (IO (Ptr FontButton) -> IO FontButton)
    -> IO (Ptr FontButton) -> IO FontButton
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr FontButton)
    -> IO (Ptr Widget) -> IO (Ptr FontButton)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr FontButton
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr FontButton) (IO (Ptr Widget) -> IO (Ptr FontButton))
    -> IO (Ptr Widget) -> IO (Ptr FontButton)
    forall a b. (a -> b) -> a -> b
    $
      IO (Ptr Widget)
    gtk_font_button_new
    {-# LINE 111 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}

    -- | Creates a new font picker widget.
    --
    fontButtonNewWithFont :: GlibString string
     => string -- ^ @fontname@ - Name of font to display in font selection
                      -- dialog
     -> IO FontButton
    fontButtonNewWithFont :: forall string. GlibString string => string -> IO FontButton
    fontButtonNewWithFont string
    fontname =
      (ForeignPtr FontButton -> FontButton, FinalizerPtr FontButton)
    -> IO (Ptr FontButton) -> IO FontButton
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr FontButton -> FontButton, FinalizerPtr FontButton)
    forall {a}. (ForeignPtr FontButton -> FontButton, FinalizerPtr a)
    mkFontButton (IO (Ptr FontButton) -> IO FontButton)
    -> IO (Ptr FontButton) -> IO FontButton
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr FontButton)
    -> IO (Ptr Widget) -> IO (Ptr FontButton)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr FontButton
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr FontButton) (IO (Ptr Widget) -> IO (Ptr FontButton))
    -> IO (Ptr Widget) -> IO (Ptr FontButton)
    forall a b. (a -> b) -> a -> b
    $
      string -> (CString -> IO (Ptr Widget)) -> IO (Ptr Widget)
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString string
    fontname ((CString -> IO (Ptr Widget)) -> IO (Ptr Widget))
    -> (CString -> IO (Ptr Widget)) -> IO (Ptr Widget)
    forall a b. (a -> b) -> a -> b
    $ \CString
    fontnamePtr ->
      CString -> IO (Ptr Widget)
    gtk_font_button_new_with_font
    {-# LINE 123 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        fontnamePtr

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

    -- | Sets or updates the currently-displayed font in font picker dialog.
    --
    fontButtonSetFontName :: (FontButtonClass self, GlibString string) => self
     -> string -- ^ @fontname@ - Name of font to display in font selection dialog
     -> IO Bool -- ^ returns Return value of 'Graphics.UI.Gtk.Selectors.FontSelectionDialog.fontSelectionDialogSetFontName' if
                -- the font selection dialog exists, otherwise @False@.
    fontButtonSetFontName :: forall self string.
    (FontButtonClass self, GlibString string) =>
    self -> string -> IO Bool
    fontButtonSetFontName self
    self string
    fontname =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      string -> (CString -> IO CInt) -> IO CInt
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString string
    fontname ((CString -> IO CInt) -> IO CInt)
    -> (CString -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \CString
    fontnamePtr ->
      (\(FontButton ForeignPtr FontButton
    arg1) CString
    arg2 -> ForeignPtr FontButton -> (Ptr FontButton -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO CInt) -> IO CInt)
    -> (Ptr FontButton -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> CString -> IO CInt
    gtk_font_button_set_font_name Ptr FontButton
    argPtr1 CString
    arg2)
    {-# LINE 138 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)
        CString
    fontnamePtr

    -- | Retrieves the name of the currently selected font.
    --
    fontButtonGetFontName :: (FontButtonClass self, GlibString string) => self
     -> IO string -- ^ returns an internal copy of the font name which must not be
                  -- freed.
    fontButtonGetFontName :: forall self string.
    (FontButtonClass self, GlibString string) =>
    self -> IO string
    fontButtonGetFontName self
    self =
      (\(FontButton ForeignPtr FontButton
    arg1) -> ForeignPtr FontButton
    -> (Ptr FontButton -> IO CString) -> IO CString
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO CString) -> IO CString)
    -> (Ptr FontButton -> IO CString) -> IO CString
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> IO CString
    gtk_font_button_get_font_name Ptr FontButton
    argPtr1)
    {-# LINE 148 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)
      IO CString -> (CString -> IO string) -> IO string
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= CString -> IO string
    forall s. GlibString s => CString -> IO s
    peekUTFString

    -- | If @showStyle@ is @True@, the font style will be displayed along with
    -- name of the selected font.
    --
    fontButtonSetShowStyle :: FontButtonClass self => self
     -> Bool -- ^ @showStyle@ - @True@ if font style should be displayed in
              -- label.
     -> IO ()
    fontButtonSetShowStyle :: forall self. FontButtonClass self => self -> Bool -> IO ()
    fontButtonSetShowStyle self
    self Bool
    showStyle =
      (\(FontButton ForeignPtr FontButton
    arg1) CInt
    arg2 -> ForeignPtr FontButton -> (Ptr FontButton -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO ()) -> IO ())
    -> (Ptr FontButton -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> CInt -> IO ()
    gtk_font_button_set_show_style Ptr FontButton
    argPtr1 CInt
    arg2)
    {-# LINE 160 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    showStyle)

    -- | Returns whether the name of the font style will be shown in the label.
    --
    fontButtonGetShowStyle :: FontButtonClass self => self
     -> IO Bool -- ^ returns whether the font style will be shown in the label.
    fontButtonGetShowStyle :: forall self. FontButtonClass self => self -> IO Bool
    fontButtonGetShowStyle self
    self =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(FontButton ForeignPtr FontButton
    arg1) -> ForeignPtr FontButton -> (Ptr FontButton -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO CInt) -> IO CInt)
    -> (Ptr FontButton -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> IO CInt
    gtk_font_button_get_show_style Ptr FontButton
    argPtr1)
    {-# LINE 170 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)

    -- | If @showSize@ is @True@, the font size will be displayed along with the
    -- name of the selected font.
    --
    fontButtonSetShowSize :: FontButtonClass self => self
     -> Bool -- ^ @showSize@ - @True@ if font size should be displayed in dialog.
     -> IO ()
    fontButtonSetShowSize :: forall self. FontButtonClass self => self -> Bool -> IO ()
    fontButtonSetShowSize self
    self Bool
    showSize =
      (\(FontButton ForeignPtr FontButton
    arg1) CInt
    arg2 -> ForeignPtr FontButton -> (Ptr FontButton -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO ()) -> IO ())
    -> (Ptr FontButton -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> CInt -> IO ()
    gtk_font_button_set_show_size Ptr FontButton
    argPtr1 CInt
    arg2)
    {-# LINE 180 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    showSize)

    -- | Returns whether the font size will be shown in the label.
    --
    fontButtonGetShowSize :: FontButtonClass self => self
     -> IO Bool -- ^ returns whether the font size will be shown in the label.
    fontButtonGetShowSize :: forall self. FontButtonClass self => self -> IO Bool
    fontButtonGetShowSize self
    self =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(FontButton ForeignPtr FontButton
    arg1) -> ForeignPtr FontButton -> (Ptr FontButton -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO CInt) -> IO CInt)
    -> (Ptr FontButton -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> IO CInt
    gtk_font_button_get_show_size Ptr FontButton
    argPtr1)
    {-# LINE 190 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)

    -- | If @useFont@ is @True@, the font name will be written using the selected
    -- font.
    --
    fontButtonSetUseFont :: FontButtonClass self => self
     -> Bool -- ^ @useFont@ - If @True@, font name will be written using font
              -- chosen.
     -> IO ()
    fontButtonSetUseFont :: forall self. FontButtonClass self => self -> Bool -> IO ()
    fontButtonSetUseFont self
    self Bool
    useFont =
      (\(FontButton ForeignPtr FontButton
    arg1) CInt
    arg2 -> ForeignPtr FontButton -> (Ptr FontButton -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO ()) -> IO ())
    -> (Ptr FontButton -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> CInt -> IO ()
    gtk_font_button_set_use_font Ptr FontButton
    argPtr1 CInt
    arg2)
    {-# LINE 201 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    useFont)

    -- | Returns whether the selected font is used in the label.
    --
    fontButtonGetUseFont :: FontButtonClass self => self
     -> IO Bool -- ^ returns whether the selected font is used in the label.
    fontButtonGetUseFont :: forall self. FontButtonClass self => self -> IO Bool
    fontButtonGetUseFont self
    self =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(FontButton ForeignPtr FontButton
    arg1) -> ForeignPtr FontButton -> (Ptr FontButton -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO CInt) -> IO CInt)
    -> (Ptr FontButton -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> IO CInt
    gtk_font_button_get_use_font Ptr FontButton
    argPtr1)
    {-# LINE 211 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)

    -- | If @useSize@ is @True@, the font name will be written using the selected
    -- size.
    --
    fontButtonSetUseSize :: FontButtonClass self => self
     -> Bool -- ^ @useSize@ - If @True@, font name will be written using the
              -- selected size.
     -> IO ()
    fontButtonSetUseSize :: forall self. FontButtonClass self => self -> Bool -> IO ()
    fontButtonSetUseSize self
    self Bool
    useSize =
      (\(FontButton ForeignPtr FontButton
    arg1) CInt
    arg2 -> ForeignPtr FontButton -> (Ptr FontButton -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO ()) -> IO ())
    -> (Ptr FontButton -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> CInt -> IO ()
    gtk_font_button_set_use_size Ptr FontButton
    argPtr1 CInt
    arg2)
    {-# LINE 222 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    useSize)

    -- | Returns whether the selected size is used in the label.
    --
    fontButtonGetUseSize :: FontButtonClass self => self
     -> IO Bool -- ^ returns whether the selected size is used in the label.
    fontButtonGetUseSize :: forall self. FontButtonClass self => self -> IO Bool
    fontButtonGetUseSize self
    self =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(FontButton ForeignPtr FontButton
    arg1) -> ForeignPtr FontButton -> (Ptr FontButton -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO CInt) -> IO CInt)
    -> (Ptr FontButton -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> IO CInt
    gtk_font_button_get_use_size Ptr FontButton
    argPtr1)
    {-# LINE 232 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)

    -- | Sets the title for the font selection dialog.
    --
    fontButtonSetTitle :: (FontButtonClass self, GlibString string) => self
     -> string -- ^ @title@ - a string containing the font selection dialog title
     -> IO ()
    fontButtonSetTitle :: forall self string.
    (FontButtonClass self, GlibString string) =>
    self -> string -> IO ()
    fontButtonSetTitle self
    self string
    title =
      string -> (CString -> IO ()) -> IO ()
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString string
    title ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \CString
    titlePtr ->
      (\(FontButton ForeignPtr FontButton
    arg1) CString
    arg2 -> ForeignPtr FontButton -> (Ptr FontButton -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO ()) -> IO ())
    -> (Ptr FontButton -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> CString -> IO ()
    gtk_font_button_set_title Ptr FontButton
    argPtr1 CString
    arg2)
    {-# LINE 242 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)
        CString
    titlePtr

    -- | Retrieves the title of the font selection dialog.
    --
    fontButtonGetTitle :: (FontButtonClass self, GlibString string) => self
     -> IO string -- ^ returns an internal copy of the title string which must not
                  -- be freed.
    fontButtonGetTitle :: forall self string.
    (FontButtonClass self, GlibString string) =>
    self -> IO string
    fontButtonGetTitle self
    self =
      (\(FontButton ForeignPtr FontButton
    arg1) -> ForeignPtr FontButton
    -> (Ptr FontButton -> IO CString) -> IO CString
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr FontButton
    arg1 ((Ptr FontButton -> IO CString) -> IO CString)
    -> (Ptr FontButton -> IO CString) -> IO CString
    forall a b. (a -> b) -> a -> b
    $ \Ptr FontButton
    argPtr1 ->Ptr FontButton -> IO CString
    gtk_font_button_get_title Ptr FontButton
    argPtr1)
    {-# LINE 252 "./Graphics/UI/Gtk/Selectors/FontButton.chs" #-}
        (toFontButton self)
      IO CString -> (CString -> IO string) -> IO string
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= CString -> IO string
    forall s. GlibString s => CString -> IO s
    peekUTFString

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

    -- | The title of the font selection dialog.
    --
    -- Default value: \"Pick a Font\"
    --
    fontButtonTitle :: (FontButtonClass self, GlibString string) => Attr self string
    fontButtonTitle :: forall self string.
    (FontButtonClass self, GlibString string) =>
    Attr self string
    fontButtonTitle = (self -> IO string)
    -> (self -> string -> IO ()) -> ReadWriteAttr self string string
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO string
    forall self string.
    (FontButtonClass self, GlibString string) =>
    self -> IO string
    fontButtonGetTitle
      self -> string -> IO ()
    forall self string.
    (FontButtonClass self, GlibString string) =>
    self -> string -> IO ()
    fontButtonSetTitle

    -- | The name of the currently selected font.
    --
    -- Default value: \"Sans 12\"
    --
    fontButtonFontName :: (FontButtonClass self, GlibString string) => Attr self string
    fontButtonFontName :: forall self string.
    (FontButtonClass self, GlibString string) =>
    Attr self string
    fontButtonFontName = String -> Attr self string
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj string
    newAttrFromStringProperty String
    "font-name"

    -- | If this property is set to @True@, the label will be drawn in the
    -- selected font.
    --
    -- Default value: @False@
    --
    fontButtonUseFont :: FontButtonClass self => Attr self Bool
    fontButtonUseFont :: forall self. FontButtonClass self => Attr self Bool
    fontButtonUseFont = (self -> IO Bool)
    -> (self -> Bool -> IO ()) -> ReadWriteAttr self Bool Bool
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Bool
    forall self. FontButtonClass self => self -> IO Bool
    fontButtonGetUseFont
      self -> Bool -> IO ()
    forall self. FontButtonClass self => self -> Bool -> IO ()
    fontButtonSetUseFont

    -- | If this property is set to @True@, the label will be drawn with the
    -- selected font size.
    --
    -- Default value: @False@
    --
    fontButtonUseSize :: FontButtonClass self => Attr self Bool
    fontButtonUseSize :: forall self. FontButtonClass self => Attr self Bool
    fontButtonUseSize = (self -> IO Bool)
    -> (self -> Bool -> IO ()) -> ReadWriteAttr self Bool Bool
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Bool
    forall self. FontButtonClass self => self -> IO Bool
    fontButtonGetUseSize
      self -> Bool -> IO ()
    forall self. FontButtonClass self => self -> Bool -> IO ()
    fontButtonSetUseSize

    -- | If this property is set to @True@, the name of the selected font style
    -- will be shown in the label. For a more WYSIWIG way to show the selected
    -- style, see the ::use-font property.
    --
    -- Default value: @True@
    --
    fontButtonShowStyle :: FontButtonClass self => Attr self Bool
    fontButtonShowStyle :: forall self. FontButtonClass self => Attr self Bool
    fontButtonShowStyle = (self -> IO Bool)
    -> (self -> Bool -> IO ()) -> ReadWriteAttr self Bool Bool
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Bool
    forall self. FontButtonClass self => self -> IO Bool
    fontButtonGetShowStyle
      self -> Bool -> IO ()
    forall self. FontButtonClass self => self -> Bool -> IO ()
    fontButtonSetShowStyle

    -- | If this property is set to @True@, the selected font size will be shown
    -- in the label. For a more WYSIWIG way to show the selected size, see the
    -- ::use-size property.
    --
    -- Default value: @True@
    --
    fontButtonShowSize :: FontButtonClass self => Attr self Bool
    fontButtonShowSize :: forall self. FontButtonClass self => Attr self Bool
    fontButtonShowSize = (self -> IO Bool)
    -> (self -> Bool -> IO ()) -> ReadWriteAttr self Bool Bool
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Bool
    forall self. FontButtonClass self => self -> IO Bool
    fontButtonGetShowSize
      self -> Bool -> IO ()
    forall self. FontButtonClass self => self -> Bool -> IO ()
    fontButtonSetShowSize

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

    -- | The 'fontSet' signal is emitted when the user selects a font. When
    -- handling this signal, use 'fontButtonGetFontName' to find out which font was
    -- just selected.
    --
    onFontSet, afterFontSet :: FontButtonClass self => self
     -> IO ()
     -> IO (ConnectId self)
    onFontSet :: forall self.
    FontButtonClass self =>
    self -> IO () -> IO (ConnectId self)
    onFontSet = String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "font-set" Bool
    False
    afterFontSet :: forall self.
    FontButtonClass self =>
    self -> IO () -> IO (ConnectId self)
    afterFontSet = String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "font-set" Bool
    True

    foreign import ccall safe "gtk_font_button_new"
      gtk_font_button_new :: (IO (Ptr Widget))

    foreign import ccall safe "gtk_font_button_new_with_font"
      gtk_font_button_new_with_font :: ((Ptr CChar) -> (IO (Ptr Widget)))

    foreign import ccall safe "gtk_font_button_set_font_name"
      gtk_font_button_set_font_name :: ((Ptr FontButton) -> ((Ptr CChar) -> (IO CInt)))

    foreign import ccall safe "gtk_font_button_get_font_name"
      gtk_font_button_get_font_name :: ((Ptr FontButton) -> (IO (Ptr CChar)))

    foreign import ccall safe "gtk_font_button_set_show_style"
      gtk_font_button_set_show_style :: ((Ptr FontButton) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_font_button_get_show_style"
      gtk_font_button_get_show_style :: ((Ptr FontButton) -> (IO CInt))

    foreign import ccall safe "gtk_font_button_set_show_size"
      gtk_font_button_set_show_size :: ((Ptr FontButton) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_font_button_get_show_size"
      gtk_font_button_get_show_size :: ((Ptr FontButton) -> (IO CInt))

    foreign import ccall safe "gtk_font_button_set_use_font"
      gtk_font_button_set_use_font :: ((Ptr FontButton) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_font_button_get_use_font"
      gtk_font_button_get_use_font :: ((Ptr FontButton) -> (IO CInt))

    foreign import ccall safe "gtk_font_button_set_use_size"
      gtk_font_button_set_use_size :: ((Ptr FontButton) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_font_button_get_use_size"
      gtk_font_button_get_use_size :: ((Ptr FontButton) -> (IO CInt))

    foreign import ccall safe "gtk_font_button_set_title"
      gtk_font_button_set_title :: ((Ptr FontButton) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall safe "gtk_font_button_get_title"
      gtk_font_button_get_title :: ((Ptr FontButton) -> (IO (Ptr CChar)))