{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

module GI.Gtk.Objects.HeaderBar
    ( 

-- * Exported types
    HeaderBar(..)                           ,
    HeaderBarK                              ,
    toHeaderBar                             ,
    noHeaderBar                             ,


 -- * Methods
-- ** headerBarGetCustomTitle
    headerBarGetCustomTitle                 ,


-- ** headerBarGetDecorationLayout
    headerBarGetDecorationLayout            ,


-- ** headerBarGetHasSubtitle
    headerBarGetHasSubtitle                 ,


-- ** headerBarGetShowCloseButton
    headerBarGetShowCloseButton             ,


-- ** headerBarGetSubtitle
    headerBarGetSubtitle                    ,


-- ** headerBarGetTitle
    headerBarGetTitle                       ,


-- ** headerBarNew
    headerBarNew                            ,


-- ** headerBarPackEnd
    headerBarPackEnd                        ,


-- ** headerBarPackStart
    headerBarPackStart                      ,


-- ** headerBarSetCustomTitle
    headerBarSetCustomTitle                 ,


-- ** headerBarSetDecorationLayout
    headerBarSetDecorationLayout            ,


-- ** headerBarSetHasSubtitle
    headerBarSetHasSubtitle                 ,


-- ** headerBarSetShowCloseButton
    headerBarSetShowCloseButton             ,


-- ** headerBarSetSubtitle
    headerBarSetSubtitle                    ,


-- ** headerBarSetTitle
    headerBarSetTitle                       ,




 -- * Properties
-- ** CustomTitle
    HeaderBarCustomTitlePropertyInfo        ,
    constructHeaderBarCustomTitle           ,
    getHeaderBarCustomTitle                 ,
    setHeaderBarCustomTitle                 ,


-- ** DecorationLayout
    HeaderBarDecorationLayoutPropertyInfo   ,
    constructHeaderBarDecorationLayout      ,
    getHeaderBarDecorationLayout            ,
    setHeaderBarDecorationLayout            ,


-- ** DecorationLayoutSet
    HeaderBarDecorationLayoutSetPropertyInfo,
    constructHeaderBarDecorationLayoutSet   ,
    getHeaderBarDecorationLayoutSet         ,
    setHeaderBarDecorationLayoutSet         ,


-- ** HasSubtitle
    HeaderBarHasSubtitlePropertyInfo        ,
    constructHeaderBarHasSubtitle           ,
    getHeaderBarHasSubtitle                 ,
    setHeaderBarHasSubtitle                 ,


-- ** ShowCloseButton
    HeaderBarShowCloseButtonPropertyInfo    ,
    constructHeaderBarShowCloseButton       ,
    getHeaderBarShowCloseButton             ,
    setHeaderBarShowCloseButton             ,


-- ** Spacing
    HeaderBarSpacingPropertyInfo            ,
    constructHeaderBarSpacing               ,
    getHeaderBarSpacing                     ,
    setHeaderBarSpacing                     ,


-- ** Subtitle
    HeaderBarSubtitlePropertyInfo           ,
    constructHeaderBarSubtitle              ,
    getHeaderBarSubtitle                    ,
    setHeaderBarSubtitle                    ,


-- ** Title
    HeaderBarTitlePropertyInfo              ,
    constructHeaderBarTitle                 ,
    getHeaderBarTitle                       ,
    setHeaderBarTitle                       ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gtk.Types
import GI.Gtk.Callbacks
import qualified GI.Atk as Atk
import qualified GI.GObject as GObject

newtype HeaderBar = HeaderBar (ForeignPtr HeaderBar)
foreign import ccall "gtk_header_bar_get_type"
    c_gtk_header_bar_get_type :: IO GType

type instance ParentTypes HeaderBar = HeaderBarParentTypes
type HeaderBarParentTypes = '[Container, Widget, GObject.Object, Atk.ImplementorIface, Buildable]

instance GObject HeaderBar where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gtk_header_bar_get_type
    

class GObject o => HeaderBarK o
instance (GObject o, IsDescendantOf HeaderBar o) => HeaderBarK o

toHeaderBar :: HeaderBarK o => o -> IO HeaderBar
toHeaderBar = unsafeCastTo HeaderBar

noHeaderBar :: Maybe HeaderBar
noHeaderBar = Nothing

-- VVV Prop "custom-title"
   -- Type: TInterface "Gtk" "Widget"
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]

getHeaderBarCustomTitle :: (MonadIO m, HeaderBarK o) => o -> m Widget
getHeaderBarCustomTitle obj = liftIO $ getObjectPropertyObject obj "custom-title" Widget

setHeaderBarCustomTitle :: (MonadIO m, HeaderBarK o, WidgetK a) => o -> a -> m ()
setHeaderBarCustomTitle obj val = liftIO $ setObjectPropertyObject obj "custom-title" val

constructHeaderBarCustomTitle :: (WidgetK a) => a -> IO ([Char], GValue)
constructHeaderBarCustomTitle val = constructObjectPropertyObject "custom-title" val

data HeaderBarCustomTitlePropertyInfo
instance AttrInfo HeaderBarCustomTitlePropertyInfo where
    type AttrAllowedOps HeaderBarCustomTitlePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint HeaderBarCustomTitlePropertyInfo = WidgetK
    type AttrBaseTypeConstraint HeaderBarCustomTitlePropertyInfo = HeaderBarK
    type AttrGetType HeaderBarCustomTitlePropertyInfo = Widget
    type AttrLabel HeaderBarCustomTitlePropertyInfo = "HeaderBar::custom-title"
    attrGet _ = getHeaderBarCustomTitle
    attrSet _ = setHeaderBarCustomTitle
    attrConstruct _ = constructHeaderBarCustomTitle

-- VVV Prop "decoration-layout"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getHeaderBarDecorationLayout :: (MonadIO m, HeaderBarK o) => o -> m T.Text
getHeaderBarDecorationLayout obj = liftIO $ getObjectPropertyString obj "decoration-layout"

setHeaderBarDecorationLayout :: (MonadIO m, HeaderBarK o) => o -> T.Text -> m ()
setHeaderBarDecorationLayout obj val = liftIO $ setObjectPropertyString obj "decoration-layout" val

constructHeaderBarDecorationLayout :: T.Text -> IO ([Char], GValue)
constructHeaderBarDecorationLayout val = constructObjectPropertyString "decoration-layout" val

data HeaderBarDecorationLayoutPropertyInfo
instance AttrInfo HeaderBarDecorationLayoutPropertyInfo where
    type AttrAllowedOps HeaderBarDecorationLayoutPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint HeaderBarDecorationLayoutPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint HeaderBarDecorationLayoutPropertyInfo = HeaderBarK
    type AttrGetType HeaderBarDecorationLayoutPropertyInfo = T.Text
    type AttrLabel HeaderBarDecorationLayoutPropertyInfo = "HeaderBar::decoration-layout"
    attrGet _ = getHeaderBarDecorationLayout
    attrSet _ = setHeaderBarDecorationLayout
    attrConstruct _ = constructHeaderBarDecorationLayout

-- VVV Prop "decoration-layout-set"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getHeaderBarDecorationLayoutSet :: (MonadIO m, HeaderBarK o) => o -> m Bool
getHeaderBarDecorationLayoutSet obj = liftIO $ getObjectPropertyBool obj "decoration-layout-set"

setHeaderBarDecorationLayoutSet :: (MonadIO m, HeaderBarK o) => o -> Bool -> m ()
setHeaderBarDecorationLayoutSet obj val = liftIO $ setObjectPropertyBool obj "decoration-layout-set" val

constructHeaderBarDecorationLayoutSet :: Bool -> IO ([Char], GValue)
constructHeaderBarDecorationLayoutSet val = constructObjectPropertyBool "decoration-layout-set" val

data HeaderBarDecorationLayoutSetPropertyInfo
instance AttrInfo HeaderBarDecorationLayoutSetPropertyInfo where
    type AttrAllowedOps HeaderBarDecorationLayoutSetPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint HeaderBarDecorationLayoutSetPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint HeaderBarDecorationLayoutSetPropertyInfo = HeaderBarK
    type AttrGetType HeaderBarDecorationLayoutSetPropertyInfo = Bool
    type AttrLabel HeaderBarDecorationLayoutSetPropertyInfo = "HeaderBar::decoration-layout-set"
    attrGet _ = getHeaderBarDecorationLayoutSet
    attrSet _ = setHeaderBarDecorationLayoutSet
    attrConstruct _ = constructHeaderBarDecorationLayoutSet

-- VVV Prop "has-subtitle"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getHeaderBarHasSubtitle :: (MonadIO m, HeaderBarK o) => o -> m Bool
getHeaderBarHasSubtitle obj = liftIO $ getObjectPropertyBool obj "has-subtitle"

setHeaderBarHasSubtitle :: (MonadIO m, HeaderBarK o) => o -> Bool -> m ()
setHeaderBarHasSubtitle obj val = liftIO $ setObjectPropertyBool obj "has-subtitle" val

constructHeaderBarHasSubtitle :: Bool -> IO ([Char], GValue)
constructHeaderBarHasSubtitle val = constructObjectPropertyBool "has-subtitle" val

data HeaderBarHasSubtitlePropertyInfo
instance AttrInfo HeaderBarHasSubtitlePropertyInfo where
    type AttrAllowedOps HeaderBarHasSubtitlePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint HeaderBarHasSubtitlePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint HeaderBarHasSubtitlePropertyInfo = HeaderBarK
    type AttrGetType HeaderBarHasSubtitlePropertyInfo = Bool
    type AttrLabel HeaderBarHasSubtitlePropertyInfo = "HeaderBar::has-subtitle"
    attrGet _ = getHeaderBarHasSubtitle
    attrSet _ = setHeaderBarHasSubtitle
    attrConstruct _ = constructHeaderBarHasSubtitle

-- VVV Prop "show-close-button"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getHeaderBarShowCloseButton :: (MonadIO m, HeaderBarK o) => o -> m Bool
getHeaderBarShowCloseButton obj = liftIO $ getObjectPropertyBool obj "show-close-button"

setHeaderBarShowCloseButton :: (MonadIO m, HeaderBarK o) => o -> Bool -> m ()
setHeaderBarShowCloseButton obj val = liftIO $ setObjectPropertyBool obj "show-close-button" val

constructHeaderBarShowCloseButton :: Bool -> IO ([Char], GValue)
constructHeaderBarShowCloseButton val = constructObjectPropertyBool "show-close-button" val

data HeaderBarShowCloseButtonPropertyInfo
instance AttrInfo HeaderBarShowCloseButtonPropertyInfo where
    type AttrAllowedOps HeaderBarShowCloseButtonPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint HeaderBarShowCloseButtonPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint HeaderBarShowCloseButtonPropertyInfo = HeaderBarK
    type AttrGetType HeaderBarShowCloseButtonPropertyInfo = Bool
    type AttrLabel HeaderBarShowCloseButtonPropertyInfo = "HeaderBar::show-close-button"
    attrGet _ = getHeaderBarShowCloseButton
    attrSet _ = setHeaderBarShowCloseButton
    attrConstruct _ = constructHeaderBarShowCloseButton

-- VVV Prop "spacing"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getHeaderBarSpacing :: (MonadIO m, HeaderBarK o) => o -> m Int32
getHeaderBarSpacing obj = liftIO $ getObjectPropertyCInt obj "spacing"

setHeaderBarSpacing :: (MonadIO m, HeaderBarK o) => o -> Int32 -> m ()
setHeaderBarSpacing obj val = liftIO $ setObjectPropertyCInt obj "spacing" val

constructHeaderBarSpacing :: Int32 -> IO ([Char], GValue)
constructHeaderBarSpacing val = constructObjectPropertyCInt "spacing" val

data HeaderBarSpacingPropertyInfo
instance AttrInfo HeaderBarSpacingPropertyInfo where
    type AttrAllowedOps HeaderBarSpacingPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint HeaderBarSpacingPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint HeaderBarSpacingPropertyInfo = HeaderBarK
    type AttrGetType HeaderBarSpacingPropertyInfo = Int32
    type AttrLabel HeaderBarSpacingPropertyInfo = "HeaderBar::spacing"
    attrGet _ = getHeaderBarSpacing
    attrSet _ = setHeaderBarSpacing
    attrConstruct _ = constructHeaderBarSpacing

-- VVV Prop "subtitle"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getHeaderBarSubtitle :: (MonadIO m, HeaderBarK o) => o -> m T.Text
getHeaderBarSubtitle obj = liftIO $ getObjectPropertyString obj "subtitle"

setHeaderBarSubtitle :: (MonadIO m, HeaderBarK o) => o -> T.Text -> m ()
setHeaderBarSubtitle obj val = liftIO $ setObjectPropertyString obj "subtitle" val

constructHeaderBarSubtitle :: T.Text -> IO ([Char], GValue)
constructHeaderBarSubtitle val = constructObjectPropertyString "subtitle" val

data HeaderBarSubtitlePropertyInfo
instance AttrInfo HeaderBarSubtitlePropertyInfo where
    type AttrAllowedOps HeaderBarSubtitlePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint HeaderBarSubtitlePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint HeaderBarSubtitlePropertyInfo = HeaderBarK
    type AttrGetType HeaderBarSubtitlePropertyInfo = T.Text
    type AttrLabel HeaderBarSubtitlePropertyInfo = "HeaderBar::subtitle"
    attrGet _ = getHeaderBarSubtitle
    attrSet _ = setHeaderBarSubtitle
    attrConstruct _ = constructHeaderBarSubtitle

-- VVV Prop "title"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getHeaderBarTitle :: (MonadIO m, HeaderBarK o) => o -> m T.Text
getHeaderBarTitle obj = liftIO $ getObjectPropertyString obj "title"

setHeaderBarTitle :: (MonadIO m, HeaderBarK o) => o -> T.Text -> m ()
setHeaderBarTitle obj val = liftIO $ setObjectPropertyString obj "title" val

constructHeaderBarTitle :: T.Text -> IO ([Char], GValue)
constructHeaderBarTitle val = constructObjectPropertyString "title" val

data HeaderBarTitlePropertyInfo
instance AttrInfo HeaderBarTitlePropertyInfo where
    type AttrAllowedOps HeaderBarTitlePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint HeaderBarTitlePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint HeaderBarTitlePropertyInfo = HeaderBarK
    type AttrGetType HeaderBarTitlePropertyInfo = T.Text
    type AttrLabel HeaderBarTitlePropertyInfo = "HeaderBar::title"
    attrGet _ = getHeaderBarTitle
    attrSet _ = setHeaderBarTitle
    attrConstruct _ = constructHeaderBarTitle

type instance AttributeList HeaderBar = HeaderBarAttributeList
type HeaderBarAttributeList = ('[ '("app-paintable", WidgetAppPaintablePropertyInfo), '("border-width", ContainerBorderWidthPropertyInfo), '("can-default", WidgetCanDefaultPropertyInfo), '("can-focus", WidgetCanFocusPropertyInfo), '("child", ContainerChildPropertyInfo), '("composite-child", WidgetCompositeChildPropertyInfo), '("custom-title", HeaderBarCustomTitlePropertyInfo), '("decoration-layout", HeaderBarDecorationLayoutPropertyInfo), '("decoration-layout-set", HeaderBarDecorationLayoutSetPropertyInfo), '("double-buffered", WidgetDoubleBufferedPropertyInfo), '("events", WidgetEventsPropertyInfo), '("expand", WidgetExpandPropertyInfo), '("halign", WidgetHalignPropertyInfo), '("has-default", WidgetHasDefaultPropertyInfo), '("has-focus", WidgetHasFocusPropertyInfo), '("has-subtitle", HeaderBarHasSubtitlePropertyInfo), '("has-tooltip", WidgetHasTooltipPropertyInfo), '("height-request", WidgetHeightRequestPropertyInfo), '("hexpand", WidgetHexpandPropertyInfo), '("hexpand-set", WidgetHexpandSetPropertyInfo), '("is-focus", WidgetIsFocusPropertyInfo), '("margin", WidgetMarginPropertyInfo), '("margin-bottom", WidgetMarginBottomPropertyInfo), '("margin-end", WidgetMarginEndPropertyInfo), '("margin-left", WidgetMarginLeftPropertyInfo), '("margin-right", WidgetMarginRightPropertyInfo), '("margin-start", WidgetMarginStartPropertyInfo), '("margin-top", WidgetMarginTopPropertyInfo), '("name", WidgetNamePropertyInfo), '("no-show-all", WidgetNoShowAllPropertyInfo), '("opacity", WidgetOpacityPropertyInfo), '("parent", WidgetParentPropertyInfo), '("receives-default", WidgetReceivesDefaultPropertyInfo), '("resize-mode", ContainerResizeModePropertyInfo), '("scale-factor", WidgetScaleFactorPropertyInfo), '("sensitive", WidgetSensitivePropertyInfo), '("show-close-button", HeaderBarShowCloseButtonPropertyInfo), '("spacing", HeaderBarSpacingPropertyInfo), '("style", WidgetStylePropertyInfo), '("subtitle", HeaderBarSubtitlePropertyInfo), '("title", HeaderBarTitlePropertyInfo), '("tooltip-markup", WidgetTooltipMarkupPropertyInfo), '("tooltip-text", WidgetTooltipTextPropertyInfo), '("valign", WidgetValignPropertyInfo), '("vexpand", WidgetVexpandPropertyInfo), '("vexpand-set", WidgetVexpandSetPropertyInfo), '("visible", WidgetVisiblePropertyInfo), '("width-request", WidgetWidthRequestPropertyInfo), '("window", WidgetWindowPropertyInfo)] :: [(Symbol, *)])

type instance SignalList HeaderBar = HeaderBarSignalList
type HeaderBarSignalList = ('[ '("accel-closures-changed", WidgetAccelClosuresChangedSignalInfo), '("add", ContainerAddSignalInfo), '("button-press-event", WidgetButtonPressEventSignalInfo), '("button-release-event", WidgetButtonReleaseEventSignalInfo), '("can-activate-accel", WidgetCanActivateAccelSignalInfo), '("check-resize", ContainerCheckResizeSignalInfo), '("child-notify", WidgetChildNotifySignalInfo), '("composited-changed", WidgetCompositedChangedSignalInfo), '("configure-event", WidgetConfigureEventSignalInfo), '("damage-event", WidgetDamageEventSignalInfo), '("delete-event", WidgetDeleteEventSignalInfo), '("destroy", WidgetDestroySignalInfo), '("destroy-event", WidgetDestroyEventSignalInfo), '("direction-changed", WidgetDirectionChangedSignalInfo), '("drag-begin", WidgetDragBeginSignalInfo), '("drag-data-delete", WidgetDragDataDeleteSignalInfo), '("drag-data-get", WidgetDragDataGetSignalInfo), '("drag-data-received", WidgetDragDataReceivedSignalInfo), '("drag-drop", WidgetDragDropSignalInfo), '("drag-end", WidgetDragEndSignalInfo), '("drag-failed", WidgetDragFailedSignalInfo), '("drag-leave", WidgetDragLeaveSignalInfo), '("drag-motion", WidgetDragMotionSignalInfo), '("draw", WidgetDrawSignalInfo), '("enter-notify-event", WidgetEnterNotifyEventSignalInfo), '("event", WidgetEventSignalInfo), '("event-after", WidgetEventAfterSignalInfo), '("focus", WidgetFocusSignalInfo), '("focus-in-event", WidgetFocusInEventSignalInfo), '("focus-out-event", WidgetFocusOutEventSignalInfo), '("grab-broken-event", WidgetGrabBrokenEventSignalInfo), '("grab-focus", WidgetGrabFocusSignalInfo), '("grab-notify", WidgetGrabNotifySignalInfo), '("hide", WidgetHideSignalInfo), '("hierarchy-changed", WidgetHierarchyChangedSignalInfo), '("key-press-event", WidgetKeyPressEventSignalInfo), '("key-release-event", WidgetKeyReleaseEventSignalInfo), '("keynav-failed", WidgetKeynavFailedSignalInfo), '("leave-notify-event", WidgetLeaveNotifyEventSignalInfo), '("map", WidgetMapSignalInfo), '("map-event", WidgetMapEventSignalInfo), '("mnemonic-activate", WidgetMnemonicActivateSignalInfo), '("motion-notify-event", WidgetMotionNotifyEventSignalInfo), '("move-focus", WidgetMoveFocusSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("parent-set", WidgetParentSetSignalInfo), '("popup-menu", WidgetPopupMenuSignalInfo), '("property-notify-event", WidgetPropertyNotifyEventSignalInfo), '("proximity-in-event", WidgetProximityInEventSignalInfo), '("proximity-out-event", WidgetProximityOutEventSignalInfo), '("query-tooltip", WidgetQueryTooltipSignalInfo), '("realize", WidgetRealizeSignalInfo), '("remove", ContainerRemoveSignalInfo), '("screen-changed", WidgetScreenChangedSignalInfo), '("scroll-event", WidgetScrollEventSignalInfo), '("selection-clear-event", WidgetSelectionClearEventSignalInfo), '("selection-get", WidgetSelectionGetSignalInfo), '("selection-notify-event", WidgetSelectionNotifyEventSignalInfo), '("selection-received", WidgetSelectionReceivedSignalInfo), '("selection-request-event", WidgetSelectionRequestEventSignalInfo), '("set-focus-child", ContainerSetFocusChildSignalInfo), '("show", WidgetShowSignalInfo), '("show-help", WidgetShowHelpSignalInfo), '("size-allocate", WidgetSizeAllocateSignalInfo), '("state-changed", WidgetStateChangedSignalInfo), '("state-flags-changed", WidgetStateFlagsChangedSignalInfo), '("style-set", WidgetStyleSetSignalInfo), '("style-updated", WidgetStyleUpdatedSignalInfo), '("touch-event", WidgetTouchEventSignalInfo), '("unmap", WidgetUnmapSignalInfo), '("unmap-event", WidgetUnmapEventSignalInfo), '("unrealize", WidgetUnrealizeSignalInfo), '("visibility-notify-event", WidgetVisibilityNotifyEventSignalInfo), '("window-state-event", WidgetWindowStateEventSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method HeaderBar::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gtk" "HeaderBar"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_new" gtk_header_bar_new :: 
    IO (Ptr HeaderBar)


headerBarNew ::
    (MonadIO m) =>
    m HeaderBar
headerBarNew  = liftIO $ do
    result <- gtk_header_bar_new
    checkUnexpectedReturnNULL "gtk_header_bar_new" result
    result' <- (newObject HeaderBar) result
    return result'

-- method HeaderBar::get_custom_title
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Widget"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_get_custom_title" gtk_header_bar_get_custom_title :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    IO (Ptr Widget)


headerBarGetCustomTitle ::
    (MonadIO m, HeaderBarK a) =>
    a ->                                    -- _obj
    m Widget
headerBarGetCustomTitle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_header_bar_get_custom_title _obj'
    checkUnexpectedReturnNULL "gtk_header_bar_get_custom_title" result
    result' <- (newObject Widget) result
    touchManagedPtr _obj
    return result'

-- method HeaderBar::get_decoration_layout
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_get_decoration_layout" gtk_header_bar_get_decoration_layout :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    IO CString


headerBarGetDecorationLayout ::
    (MonadIO m, HeaderBarK a) =>
    a ->                                    -- _obj
    m T.Text
headerBarGetDecorationLayout _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_header_bar_get_decoration_layout _obj'
    checkUnexpectedReturnNULL "gtk_header_bar_get_decoration_layout" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method HeaderBar::get_has_subtitle
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_get_has_subtitle" gtk_header_bar_get_has_subtitle :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    IO CInt


headerBarGetHasSubtitle ::
    (MonadIO m, HeaderBarK a) =>
    a ->                                    -- _obj
    m Bool
headerBarGetHasSubtitle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_header_bar_get_has_subtitle _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method HeaderBar::get_show_close_button
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_get_show_close_button" gtk_header_bar_get_show_close_button :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    IO CInt


headerBarGetShowCloseButton ::
    (MonadIO m, HeaderBarK a) =>
    a ->                                    -- _obj
    m Bool
headerBarGetShowCloseButton _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_header_bar_get_show_close_button _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method HeaderBar::get_subtitle
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_get_subtitle" gtk_header_bar_get_subtitle :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    IO CString


headerBarGetSubtitle ::
    (MonadIO m, HeaderBarK a) =>
    a ->                                    -- _obj
    m T.Text
headerBarGetSubtitle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_header_bar_get_subtitle _obj'
    checkUnexpectedReturnNULL "gtk_header_bar_get_subtitle" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method HeaderBar::get_title
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_get_title" gtk_header_bar_get_title :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    IO CString


headerBarGetTitle ::
    (MonadIO m, HeaderBarK a) =>
    a ->                                    -- _obj
    m T.Text
headerBarGetTitle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_header_bar_get_title _obj'
    checkUnexpectedReturnNULL "gtk_header_bar_get_title" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method HeaderBar::pack_end
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_pack_end" gtk_header_bar_pack_end :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    Ptr Widget ->                           -- child : TInterface "Gtk" "Widget"
    IO ()


headerBarPackEnd ::
    (MonadIO m, HeaderBarK a, WidgetK b) =>
    a ->                                    -- _obj
    b ->                                    -- child
    m ()
headerBarPackEnd _obj child = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let child' = unsafeManagedPtrCastPtr child
    gtk_header_bar_pack_end _obj' child'
    touchManagedPtr _obj
    touchManagedPtr child
    return ()

-- method HeaderBar::pack_start
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_pack_start" gtk_header_bar_pack_start :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    Ptr Widget ->                           -- child : TInterface "Gtk" "Widget"
    IO ()


headerBarPackStart ::
    (MonadIO m, HeaderBarK a, WidgetK b) =>
    a ->                                    -- _obj
    b ->                                    -- child
    m ()
headerBarPackStart _obj child = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let child' = unsafeManagedPtrCastPtr child
    gtk_header_bar_pack_start _obj' child'
    touchManagedPtr _obj
    touchManagedPtr child
    return ()

-- method HeaderBar::set_custom_title
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "title_widget", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "title_widget", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_set_custom_title" gtk_header_bar_set_custom_title :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    Ptr Widget ->                           -- title_widget : TInterface "Gtk" "Widget"
    IO ()


headerBarSetCustomTitle ::
    (MonadIO m, HeaderBarK a, WidgetK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- title_widget
    m ()
headerBarSetCustomTitle _obj title_widget = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeTitle_widget <- case title_widget of
        Nothing -> return nullPtr
        Just jTitle_widget -> do
            let jTitle_widget' = unsafeManagedPtrCastPtr jTitle_widget
            return jTitle_widget'
    gtk_header_bar_set_custom_title _obj' maybeTitle_widget
    touchManagedPtr _obj
    whenJust title_widget touchManagedPtr
    return ()

-- method HeaderBar::set_decoration_layout
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "layout", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "layout", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_set_decoration_layout" gtk_header_bar_set_decoration_layout :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    CString ->                              -- layout : TBasicType TUTF8
    IO ()


headerBarSetDecorationLayout ::
    (MonadIO m, HeaderBarK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- layout
    m ()
headerBarSetDecorationLayout _obj layout = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeLayout <- case layout of
        Nothing -> return nullPtr
        Just jLayout -> do
            jLayout' <- textToCString jLayout
            return jLayout'
    gtk_header_bar_set_decoration_layout _obj' maybeLayout
    touchManagedPtr _obj
    freeMem maybeLayout
    return ()

-- method HeaderBar::set_has_subtitle
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_set_has_subtitle" gtk_header_bar_set_has_subtitle :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


headerBarSetHasSubtitle ::
    (MonadIO m, HeaderBarK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
headerBarSetHasSubtitle _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_header_bar_set_has_subtitle _obj' setting'
    touchManagedPtr _obj
    return ()

-- method HeaderBar::set_show_close_button
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_set_show_close_button" gtk_header_bar_set_show_close_button :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


headerBarSetShowCloseButton ::
    (MonadIO m, HeaderBarK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
headerBarSetShowCloseButton _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_header_bar_set_show_close_button _obj' setting'
    touchManagedPtr _obj
    return ()

-- method HeaderBar::set_subtitle
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "subtitle", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "subtitle", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_set_subtitle" gtk_header_bar_set_subtitle :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    CString ->                              -- subtitle : TBasicType TUTF8
    IO ()


headerBarSetSubtitle ::
    (MonadIO m, HeaderBarK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- subtitle
    m ()
headerBarSetSubtitle _obj subtitle = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeSubtitle <- case subtitle of
        Nothing -> return nullPtr
        Just jSubtitle -> do
            jSubtitle' <- textToCString jSubtitle
            return jSubtitle'
    gtk_header_bar_set_subtitle _obj' maybeSubtitle
    touchManagedPtr _obj
    freeMem maybeSubtitle
    return ()

-- method HeaderBar::set_title
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "title", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "HeaderBar", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "title", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_header_bar_set_title" gtk_header_bar_set_title :: 
    Ptr HeaderBar ->                        -- _obj : TInterface "Gtk" "HeaderBar"
    CString ->                              -- title : TBasicType TUTF8
    IO ()


headerBarSetTitle ::
    (MonadIO m, HeaderBarK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- title
    m ()
headerBarSetTitle _obj title = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeTitle <- case title of
        Nothing -> return nullPtr
        Just jTitle -> do
            jTitle' <- textToCString jTitle
            return jTitle'
    gtk_header_bar_set_title _obj' maybeTitle
    touchManagedPtr _obj
    freeMem maybeTitle
    return ()