{-# LANGUAGE ImplicitParams, RankNTypes, TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- A button that displays the number of [class/@tabView@/] pages.
-- 
-- \<picture>
--   \<source srcset=\"tab-button-dark.png\" media=\"(prefers-color-scheme: dark)\">
--   \<img src=\"tab-button.png\" alt=\"tab-button\">
-- \<\/picture>
-- 
-- @AdwTabButton@ is a button that displays the number of pages in a given
-- @AdwTabView@, as well as whether one of the inactive pages needs attention.
-- 
-- It\'s intended to be used as a visible indicator when there\'s no visible tab
-- bar, typically opening an [class/@tabOverview@/] on click, e.g. via the
-- @overview.open@ action name:
-- 
-- 
-- === /xml code/
-- ><object class="AdwTabButton">
-- >  <property name="view">view</property>
-- >  <property name="action-name">overview.open</property>
-- ></object>
-- 
-- 
-- == CSS nodes
-- 
-- @AdwTabButton@ has a main CSS node with name @tabbutton@.
-- 
-- = Accessibility
-- 
-- @AdwTabButton@ uses the @GTK_ACCESSIBLE_ROLE_BUTTON@ role.
-- 
-- /Since: 1.3/

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.Adw.Objects.TabButton
    ( 

-- * Exported types
    TabButton(..)                           ,
    IsTabButton                             ,
    toTabButton                             ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [actionSetEnabled]("GI.Gtk.Objects.Widget#g:method:actionSetEnabled"), [activate]("GI.Gtk.Objects.Widget#g:method:activate"), [activateAction]("GI.Gtk.Objects.Widget#g:method:activateAction"), [activateDefault]("GI.Gtk.Objects.Widget#g:method:activateDefault"), [addController]("GI.Gtk.Objects.Widget#g:method:addController"), [addCssClass]("GI.Gtk.Objects.Widget#g:method:addCssClass"), [addMnemonicLabel]("GI.Gtk.Objects.Widget#g:method:addMnemonicLabel"), [addTickCallback]("GI.Gtk.Objects.Widget#g:method:addTickCallback"), [allocate]("GI.Gtk.Objects.Widget#g:method:allocate"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [childFocus]("GI.Gtk.Objects.Widget#g:method:childFocus"), [computeBounds]("GI.Gtk.Objects.Widget#g:method:computeBounds"), [computeExpand]("GI.Gtk.Objects.Widget#g:method:computeExpand"), [computePoint]("GI.Gtk.Objects.Widget#g:method:computePoint"), [computeTransform]("GI.Gtk.Objects.Widget#g:method:computeTransform"), [contains]("GI.Gtk.Objects.Widget#g:method:contains"), [createPangoContext]("GI.Gtk.Objects.Widget#g:method:createPangoContext"), [createPangoLayout]("GI.Gtk.Objects.Widget#g:method:createPangoLayout"), [disposeTemplate]("GI.Gtk.Objects.Widget#g:method:disposeTemplate"), [dragCheckThreshold]("GI.Gtk.Objects.Widget#g:method:dragCheckThreshold"), [errorBell]("GI.Gtk.Objects.Widget#g:method:errorBell"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [grabFocus]("GI.Gtk.Objects.Widget#g:method:grabFocus"), [hasCssClass]("GI.Gtk.Objects.Widget#g:method:hasCssClass"), [hasDefault]("GI.Gtk.Objects.Widget#g:method:hasDefault"), [hasFocus]("GI.Gtk.Objects.Widget#g:method:hasFocus"), [hasVisibleFocus]("GI.Gtk.Objects.Widget#g:method:hasVisibleFocus"), [hide]("GI.Gtk.Objects.Widget#g:method:hide"), [inDestruction]("GI.Gtk.Objects.Widget#g:method:inDestruction"), [initTemplate]("GI.Gtk.Objects.Widget#g:method:initTemplate"), [insertActionGroup]("GI.Gtk.Objects.Widget#g:method:insertActionGroup"), [insertAfter]("GI.Gtk.Objects.Widget#g:method:insertAfter"), [insertBefore]("GI.Gtk.Objects.Widget#g:method:insertBefore"), [isAncestor]("GI.Gtk.Objects.Widget#g:method:isAncestor"), [isDrawable]("GI.Gtk.Objects.Widget#g:method:isDrawable"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [isFocus]("GI.Gtk.Objects.Widget#g:method:isFocus"), [isSensitive]("GI.Gtk.Objects.Widget#g:method:isSensitive"), [isVisible]("GI.Gtk.Objects.Widget#g:method:isVisible"), [keynavFailed]("GI.Gtk.Objects.Widget#g:method:keynavFailed"), [listMnemonicLabels]("GI.Gtk.Objects.Widget#g:method:listMnemonicLabels"), [map]("GI.Gtk.Objects.Widget#g:method:map"), [measure]("GI.Gtk.Objects.Widget#g:method:measure"), [mnemonicActivate]("GI.Gtk.Objects.Widget#g:method:mnemonicActivate"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [observeChildren]("GI.Gtk.Objects.Widget#g:method:observeChildren"), [observeControllers]("GI.Gtk.Objects.Widget#g:method:observeControllers"), [pick]("GI.Gtk.Objects.Widget#g:method:pick"), [queueAllocate]("GI.Gtk.Objects.Widget#g:method:queueAllocate"), [queueDraw]("GI.Gtk.Objects.Widget#g:method:queueDraw"), [queueResize]("GI.Gtk.Objects.Widget#g:method:queueResize"), [realize]("GI.Gtk.Objects.Widget#g:method:realize"), [ref]("GI.GObject.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [removeController]("GI.Gtk.Objects.Widget#g:method:removeController"), [removeCssClass]("GI.Gtk.Objects.Widget#g:method:removeCssClass"), [removeMnemonicLabel]("GI.Gtk.Objects.Widget#g:method:removeMnemonicLabel"), [removeTickCallback]("GI.Gtk.Objects.Widget#g:method:removeTickCallback"), [resetProperty]("GI.Gtk.Interfaces.Accessible#g:method:resetProperty"), [resetRelation]("GI.Gtk.Interfaces.Accessible#g:method:resetRelation"), [resetState]("GI.Gtk.Interfaces.Accessible#g:method:resetState"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [shouldLayout]("GI.Gtk.Objects.Widget#g:method:shouldLayout"), [show]("GI.Gtk.Objects.Widget#g:method:show"), [sizeAllocate]("GI.Gtk.Objects.Widget#g:method:sizeAllocate"), [snapshotChild]("GI.Gtk.Objects.Widget#g:method:snapshotChild"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [translateCoordinates]("GI.Gtk.Objects.Widget#g:method:translateCoordinates"), [triggerTooltipQuery]("GI.Gtk.Objects.Widget#g:method:triggerTooltipQuery"), [unmap]("GI.Gtk.Objects.Widget#g:method:unmap"), [unparent]("GI.Gtk.Objects.Widget#g:method:unparent"), [unrealize]("GI.Gtk.Objects.Widget#g:method:unrealize"), [unref]("GI.GObject.Objects.Object#g:method:unref"), [unsetStateFlags]("GI.Gtk.Objects.Widget#g:method:unsetStateFlags"), [updateNextAccessibleSibling]("GI.Gtk.Interfaces.Accessible#g:method:updateNextAccessibleSibling"), [updateProperty]("GI.Gtk.Interfaces.Accessible#g:method:updateProperty"), [updateRelation]("GI.Gtk.Interfaces.Accessible#g:method:updateRelation"), [updateState]("GI.Gtk.Interfaces.Accessible#g:method:updateState"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getAccessibleParent]("GI.Gtk.Interfaces.Accessible#g:method:getAccessibleParent"), [getAccessibleRole]("GI.Gtk.Interfaces.Accessible#g:method:getAccessibleRole"), [getActionName]("GI.Gtk.Interfaces.Actionable#g:method:getActionName"), [getActionTargetValue]("GI.Gtk.Interfaces.Actionable#g:method:getActionTargetValue"), [getAllocatedBaseline]("GI.Gtk.Objects.Widget#g:method:getAllocatedBaseline"), [getAllocatedHeight]("GI.Gtk.Objects.Widget#g:method:getAllocatedHeight"), [getAllocatedWidth]("GI.Gtk.Objects.Widget#g:method:getAllocatedWidth"), [getAllocation]("GI.Gtk.Objects.Widget#g:method:getAllocation"), [getAncestor]("GI.Gtk.Objects.Widget#g:method:getAncestor"), [getAtContext]("GI.Gtk.Interfaces.Accessible#g:method:getAtContext"), [getBounds]("GI.Gtk.Interfaces.Accessible#g:method:getBounds"), [getBuildableId]("GI.Gtk.Interfaces.Buildable#g:method:getBuildableId"), [getCanFocus]("GI.Gtk.Objects.Widget#g:method:getCanFocus"), [getCanTarget]("GI.Gtk.Objects.Widget#g:method:getCanTarget"), [getChildVisible]("GI.Gtk.Objects.Widget#g:method:getChildVisible"), [getClipboard]("GI.Gtk.Objects.Widget#g:method:getClipboard"), [getColor]("GI.Gtk.Objects.Widget#g:method:getColor"), [getCssClasses]("GI.Gtk.Objects.Widget#g:method:getCssClasses"), [getCssName]("GI.Gtk.Objects.Widget#g:method:getCssName"), [getCursor]("GI.Gtk.Objects.Widget#g:method:getCursor"), [getData]("GI.GObject.Objects.Object#g:method:getData"), [getDirection]("GI.Gtk.Objects.Widget#g:method:getDirection"), [getDisplay]("GI.Gtk.Objects.Widget#g:method:getDisplay"), [getFirstAccessibleChild]("GI.Gtk.Interfaces.Accessible#g:method:getFirstAccessibleChild"), [getFirstChild]("GI.Gtk.Objects.Widget#g:method:getFirstChild"), [getFocusChild]("GI.Gtk.Objects.Widget#g:method:getFocusChild"), [getFocusOnClick]("GI.Gtk.Objects.Widget#g:method:getFocusOnClick"), [getFocusable]("GI.Gtk.Objects.Widget#g:method:getFocusable"), [getFontMap]("GI.Gtk.Objects.Widget#g:method:getFontMap"), [getFontOptions]("GI.Gtk.Objects.Widget#g:method:getFontOptions"), [getFrameClock]("GI.Gtk.Objects.Widget#g:method:getFrameClock"), [getHalign]("GI.Gtk.Objects.Widget#g:method:getHalign"), [getHasTooltip]("GI.Gtk.Objects.Widget#g:method:getHasTooltip"), [getHeight]("GI.Gtk.Objects.Widget#g:method:getHeight"), [getHexpand]("GI.Gtk.Objects.Widget#g:method:getHexpand"), [getHexpandSet]("GI.Gtk.Objects.Widget#g:method:getHexpandSet"), [getLastChild]("GI.Gtk.Objects.Widget#g:method:getLastChild"), [getLayoutManager]("GI.Gtk.Objects.Widget#g:method:getLayoutManager"), [getMapped]("GI.Gtk.Objects.Widget#g:method:getMapped"), [getMarginBottom]("GI.Gtk.Objects.Widget#g:method:getMarginBottom"), [getMarginEnd]("GI.Gtk.Objects.Widget#g:method:getMarginEnd"), [getMarginStart]("GI.Gtk.Objects.Widget#g:method:getMarginStart"), [getMarginTop]("GI.Gtk.Objects.Widget#g:method:getMarginTop"), [getName]("GI.Gtk.Objects.Widget#g:method:getName"), [getNative]("GI.Gtk.Objects.Widget#g:method:getNative"), [getNextAccessibleSibling]("GI.Gtk.Interfaces.Accessible#g:method:getNextAccessibleSibling"), [getNextSibling]("GI.Gtk.Objects.Widget#g:method:getNextSibling"), [getOpacity]("GI.Gtk.Objects.Widget#g:method:getOpacity"), [getOverflow]("GI.Gtk.Objects.Widget#g:method:getOverflow"), [getPangoContext]("GI.Gtk.Objects.Widget#g:method:getPangoContext"), [getParent]("GI.Gtk.Objects.Widget#g:method:getParent"), [getPlatformState]("GI.Gtk.Interfaces.Accessible#g:method:getPlatformState"), [getPreferredSize]("GI.Gtk.Objects.Widget#g:method:getPreferredSize"), [getPrevSibling]("GI.Gtk.Objects.Widget#g:method:getPrevSibling"), [getPrimaryClipboard]("GI.Gtk.Objects.Widget#g:method:getPrimaryClipboard"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getRealized]("GI.Gtk.Objects.Widget#g:method:getRealized"), [getReceivesDefault]("GI.Gtk.Objects.Widget#g:method:getReceivesDefault"), [getRequestMode]("GI.Gtk.Objects.Widget#g:method:getRequestMode"), [getRoot]("GI.Gtk.Objects.Widget#g:method:getRoot"), [getScaleFactor]("GI.Gtk.Objects.Widget#g:method:getScaleFactor"), [getSensitive]("GI.Gtk.Objects.Widget#g:method:getSensitive"), [getSettings]("GI.Gtk.Objects.Widget#g:method:getSettings"), [getSize]("GI.Gtk.Objects.Widget#g:method:getSize"), [getSizeRequest]("GI.Gtk.Objects.Widget#g:method:getSizeRequest"), [getStateFlags]("GI.Gtk.Objects.Widget#g:method:getStateFlags"), [getStyleContext]("GI.Gtk.Objects.Widget#g:method:getStyleContext"), [getTemplateChild]("GI.Gtk.Objects.Widget#g:method:getTemplateChild"), [getTooltipMarkup]("GI.Gtk.Objects.Widget#g:method:getTooltipMarkup"), [getTooltipText]("GI.Gtk.Objects.Widget#g:method:getTooltipText"), [getValign]("GI.Gtk.Objects.Widget#g:method:getValign"), [getVexpand]("GI.Gtk.Objects.Widget#g:method:getVexpand"), [getVexpandSet]("GI.Gtk.Objects.Widget#g:method:getVexpandSet"), [getView]("GI.Adw.Objects.TabButton#g:method:getView"), [getVisible]("GI.Gtk.Objects.Widget#g:method:getVisible"), [getWidth]("GI.Gtk.Objects.Widget#g:method:getWidth").
-- 
-- ==== Setters
-- [setAccessibleParent]("GI.Gtk.Interfaces.Accessible#g:method:setAccessibleParent"), [setActionName]("GI.Gtk.Interfaces.Actionable#g:method:setActionName"), [setActionTargetValue]("GI.Gtk.Interfaces.Actionable#g:method:setActionTargetValue"), [setCanFocus]("GI.Gtk.Objects.Widget#g:method:setCanFocus"), [setCanTarget]("GI.Gtk.Objects.Widget#g:method:setCanTarget"), [setChildVisible]("GI.Gtk.Objects.Widget#g:method:setChildVisible"), [setCssClasses]("GI.Gtk.Objects.Widget#g:method:setCssClasses"), [setCursor]("GI.Gtk.Objects.Widget#g:method:setCursor"), [setCursorFromName]("GI.Gtk.Objects.Widget#g:method:setCursorFromName"), [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setDetailedActionName]("GI.Gtk.Interfaces.Actionable#g:method:setDetailedActionName"), [setDirection]("GI.Gtk.Objects.Widget#g:method:setDirection"), [setFocusChild]("GI.Gtk.Objects.Widget#g:method:setFocusChild"), [setFocusOnClick]("GI.Gtk.Objects.Widget#g:method:setFocusOnClick"), [setFocusable]("GI.Gtk.Objects.Widget#g:method:setFocusable"), [setFontMap]("GI.Gtk.Objects.Widget#g:method:setFontMap"), [setFontOptions]("GI.Gtk.Objects.Widget#g:method:setFontOptions"), [setHalign]("GI.Gtk.Objects.Widget#g:method:setHalign"), [setHasTooltip]("GI.Gtk.Objects.Widget#g:method:setHasTooltip"), [setHexpand]("GI.Gtk.Objects.Widget#g:method:setHexpand"), [setHexpandSet]("GI.Gtk.Objects.Widget#g:method:setHexpandSet"), [setLayoutManager]("GI.Gtk.Objects.Widget#g:method:setLayoutManager"), [setMarginBottom]("GI.Gtk.Objects.Widget#g:method:setMarginBottom"), [setMarginEnd]("GI.Gtk.Objects.Widget#g:method:setMarginEnd"), [setMarginStart]("GI.Gtk.Objects.Widget#g:method:setMarginStart"), [setMarginTop]("GI.Gtk.Objects.Widget#g:method:setMarginTop"), [setName]("GI.Gtk.Objects.Widget#g:method:setName"), [setOpacity]("GI.Gtk.Objects.Widget#g:method:setOpacity"), [setOverflow]("GI.Gtk.Objects.Widget#g:method:setOverflow"), [setParent]("GI.Gtk.Objects.Widget#g:method:setParent"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty"), [setReceivesDefault]("GI.Gtk.Objects.Widget#g:method:setReceivesDefault"), [setSensitive]("GI.Gtk.Objects.Widget#g:method:setSensitive"), [setSizeRequest]("GI.Gtk.Objects.Widget#g:method:setSizeRequest"), [setStateFlags]("GI.Gtk.Objects.Widget#g:method:setStateFlags"), [setTooltipMarkup]("GI.Gtk.Objects.Widget#g:method:setTooltipMarkup"), [setTooltipText]("GI.Gtk.Objects.Widget#g:method:setTooltipText"), [setValign]("GI.Gtk.Objects.Widget#g:method:setValign"), [setVexpand]("GI.Gtk.Objects.Widget#g:method:setVexpand"), [setVexpandSet]("GI.Gtk.Objects.Widget#g:method:setVexpandSet"), [setView]("GI.Adw.Objects.TabButton#g:method:setView"), [setVisible]("GI.Gtk.Objects.Widget#g:method:setVisible").

#if defined(ENABLE_OVERLOADING)
    ResolveTabButtonMethod                  ,
#endif

-- ** getView #method:getView#

#if defined(ENABLE_OVERLOADING)
    TabButtonGetViewMethodInfo              ,
#endif
    tabButtonGetView                        ,


-- ** new #method:new#

    tabButtonNew                            ,


-- ** setView #method:setView#

#if defined(ENABLE_OVERLOADING)
    TabButtonSetViewMethodInfo              ,
#endif
    tabButtonSetView                        ,




 -- * Properties


-- ** view #attr:view#
-- | The view the tab button displays.
-- 
-- /Since: 1.3/

#if defined(ENABLE_OVERLOADING)
    TabButtonViewPropertyInfo               ,
#endif
    clearTabButtonView                      ,
    constructTabButtonView                  ,
    getTabButtonView                        ,
    setTabButtonView                        ,
#if defined(ENABLE_OVERLOADING)
    tabButtonView                           ,
#endif




 -- * Signals


-- ** activate #signal:activate#

    TabButtonActivateCallback               ,
#if defined(ENABLE_OVERLOADING)
    TabButtonActivateSignalInfo             ,
#endif
    afterTabButtonActivate                  ,
    onTabButtonActivate                     ,


-- ** clicked #signal:clicked#

    TabButtonClickedCallback                ,
#if defined(ENABLE_OVERLOADING)
    TabButtonClickedSignalInfo              ,
#endif
    afterTabButtonClicked                   ,
    onTabButtonClicked                      ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R

import {-# SOURCE #-} qualified GI.Adw.Objects.TabView as Adw.TabView
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gtk.Interfaces.Accessible as Gtk.Accessible
import qualified GI.Gtk.Interfaces.Actionable as Gtk.Actionable
import qualified GI.Gtk.Interfaces.Buildable as Gtk.Buildable
import qualified GI.Gtk.Interfaces.ConstraintTarget as Gtk.ConstraintTarget
import qualified GI.Gtk.Objects.Widget as Gtk.Widget

-- | Memory-managed wrapper type.
newtype TabButton = TabButton (SP.ManagedPtr TabButton)
    deriving (TabButton -> TabButton -> Bool
(TabButton -> TabButton -> Bool)
-> (TabButton -> TabButton -> Bool) -> Eq TabButton
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TabButton -> TabButton -> Bool
== :: TabButton -> TabButton -> Bool
$c/= :: TabButton -> TabButton -> Bool
/= :: TabButton -> TabButton -> Bool
Eq)

instance SP.ManagedPtrNewtype TabButton where
    toManagedPtr :: TabButton -> ManagedPtr TabButton
toManagedPtr (TabButton ManagedPtr TabButton
p) = ManagedPtr TabButton
p

foreign import ccall "adw_tab_button_get_type"
    c_adw_tab_button_get_type :: IO B.Types.GType

instance B.Types.TypedObject TabButton where
    glibType :: IO GType
glibType = IO GType
c_adw_tab_button_get_type

instance B.Types.GObject TabButton

-- | Type class for types which can be safely cast to `TabButton`, for instance with `toTabButton`.
class (SP.GObject o, O.IsDescendantOf TabButton o) => IsTabButton o
instance (SP.GObject o, O.IsDescendantOf TabButton o) => IsTabButton o

instance O.HasParentTypes TabButton
type instance O.ParentTypes TabButton = '[Gtk.Widget.Widget, GObject.Object.Object, Gtk.Accessible.Accessible, Gtk.Actionable.Actionable, Gtk.Buildable.Buildable, Gtk.ConstraintTarget.ConstraintTarget]

-- | Cast to `TabButton`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toTabButton :: (MIO.MonadIO m, IsTabButton o) => o -> m TabButton
toTabButton :: forall (m :: * -> *) o.
(MonadIO m, IsTabButton o) =>
o -> m TabButton
toTabButton = IO TabButton -> m TabButton
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO TabButton -> m TabButton)
-> (o -> IO TabButton) -> o -> m TabButton
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr TabButton -> TabButton) -> o -> IO TabButton
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr TabButton -> TabButton
TabButton

-- | Convert 'TabButton' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe TabButton) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_adw_tab_button_get_type
    gvalueSet_ :: Ptr GValue -> Maybe TabButton -> IO ()
gvalueSet_ Ptr GValue
gv Maybe TabButton
P.Nothing = Ptr GValue -> Ptr TabButton -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr TabButton
forall a. Ptr a
FP.nullPtr :: FP.Ptr TabButton)
    gvalueSet_ Ptr GValue
gv (P.Just TabButton
obj) = TabButton -> (Ptr TabButton -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr TabButton
obj (Ptr GValue -> Ptr TabButton -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe TabButton)
gvalueGet_ Ptr GValue
gv = do
        Ptr TabButton
ptr <- Ptr GValue -> IO (Ptr TabButton)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr TabButton)
        if Ptr TabButton
ptr Ptr TabButton -> Ptr TabButton -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr TabButton
forall a. Ptr a
FP.nullPtr
        then TabButton -> Maybe TabButton
forall a. a -> Maybe a
P.Just (TabButton -> Maybe TabButton)
-> IO TabButton -> IO (Maybe TabButton)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr TabButton -> TabButton)
-> Ptr TabButton -> IO TabButton
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr TabButton -> TabButton
TabButton Ptr TabButton
ptr
        else Maybe TabButton -> IO (Maybe TabButton)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe TabButton
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveTabButtonMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveTabButtonMethod "actionSetEnabled" o = Gtk.Widget.WidgetActionSetEnabledMethodInfo
    ResolveTabButtonMethod "activate" o = Gtk.Widget.WidgetActivateMethodInfo
    ResolveTabButtonMethod "activateAction" o = Gtk.Widget.WidgetActivateActionMethodInfo
    ResolveTabButtonMethod "activateDefault" o = Gtk.Widget.WidgetActivateDefaultMethodInfo
    ResolveTabButtonMethod "addController" o = Gtk.Widget.WidgetAddControllerMethodInfo
    ResolveTabButtonMethod "addCssClass" o = Gtk.Widget.WidgetAddCssClassMethodInfo
    ResolveTabButtonMethod "addMnemonicLabel" o = Gtk.Widget.WidgetAddMnemonicLabelMethodInfo
    ResolveTabButtonMethod "addTickCallback" o = Gtk.Widget.WidgetAddTickCallbackMethodInfo
    ResolveTabButtonMethod "allocate" o = Gtk.Widget.WidgetAllocateMethodInfo
    ResolveTabButtonMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveTabButtonMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveTabButtonMethod "childFocus" o = Gtk.Widget.WidgetChildFocusMethodInfo
    ResolveTabButtonMethod "computeBounds" o = Gtk.Widget.WidgetComputeBoundsMethodInfo
    ResolveTabButtonMethod "computeExpand" o = Gtk.Widget.WidgetComputeExpandMethodInfo
    ResolveTabButtonMethod "computePoint" o = Gtk.Widget.WidgetComputePointMethodInfo
    ResolveTabButtonMethod "computeTransform" o = Gtk.Widget.WidgetComputeTransformMethodInfo
    ResolveTabButtonMethod "contains" o = Gtk.Widget.WidgetContainsMethodInfo
    ResolveTabButtonMethod "createPangoContext" o = Gtk.Widget.WidgetCreatePangoContextMethodInfo
    ResolveTabButtonMethod "createPangoLayout" o = Gtk.Widget.WidgetCreatePangoLayoutMethodInfo
    ResolveTabButtonMethod "disposeTemplate" o = Gtk.Widget.WidgetDisposeTemplateMethodInfo
    ResolveTabButtonMethod "dragCheckThreshold" o = Gtk.Widget.WidgetDragCheckThresholdMethodInfo
    ResolveTabButtonMethod "errorBell" o = Gtk.Widget.WidgetErrorBellMethodInfo
    ResolveTabButtonMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveTabButtonMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveTabButtonMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveTabButtonMethod "grabFocus" o = Gtk.Widget.WidgetGrabFocusMethodInfo
    ResolveTabButtonMethod "hasCssClass" o = Gtk.Widget.WidgetHasCssClassMethodInfo
    ResolveTabButtonMethod "hasDefault" o = Gtk.Widget.WidgetHasDefaultMethodInfo
    ResolveTabButtonMethod "hasFocus" o = Gtk.Widget.WidgetHasFocusMethodInfo
    ResolveTabButtonMethod "hasVisibleFocus" o = Gtk.Widget.WidgetHasVisibleFocusMethodInfo
    ResolveTabButtonMethod "hide" o = Gtk.Widget.WidgetHideMethodInfo
    ResolveTabButtonMethod "inDestruction" o = Gtk.Widget.WidgetInDestructionMethodInfo
    ResolveTabButtonMethod "initTemplate" o = Gtk.Widget.WidgetInitTemplateMethodInfo
    ResolveTabButtonMethod "insertActionGroup" o = Gtk.Widget.WidgetInsertActionGroupMethodInfo
    ResolveTabButtonMethod "insertAfter" o = Gtk.Widget.WidgetInsertAfterMethodInfo
    ResolveTabButtonMethod "insertBefore" o = Gtk.Widget.WidgetInsertBeforeMethodInfo
    ResolveTabButtonMethod "isAncestor" o = Gtk.Widget.WidgetIsAncestorMethodInfo
    ResolveTabButtonMethod "isDrawable" o = Gtk.Widget.WidgetIsDrawableMethodInfo
    ResolveTabButtonMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveTabButtonMethod "isFocus" o = Gtk.Widget.WidgetIsFocusMethodInfo
    ResolveTabButtonMethod "isSensitive" o = Gtk.Widget.WidgetIsSensitiveMethodInfo
    ResolveTabButtonMethod "isVisible" o = Gtk.Widget.WidgetIsVisibleMethodInfo
    ResolveTabButtonMethod "keynavFailed" o = Gtk.Widget.WidgetKeynavFailedMethodInfo
    ResolveTabButtonMethod "listMnemonicLabels" o = Gtk.Widget.WidgetListMnemonicLabelsMethodInfo
    ResolveTabButtonMethod "map" o = Gtk.Widget.WidgetMapMethodInfo
    ResolveTabButtonMethod "measure" o = Gtk.Widget.WidgetMeasureMethodInfo
    ResolveTabButtonMethod "mnemonicActivate" o = Gtk.Widget.WidgetMnemonicActivateMethodInfo
    ResolveTabButtonMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveTabButtonMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveTabButtonMethod "observeChildren" o = Gtk.Widget.WidgetObserveChildrenMethodInfo
    ResolveTabButtonMethod "observeControllers" o = Gtk.Widget.WidgetObserveControllersMethodInfo
    ResolveTabButtonMethod "pick" o = Gtk.Widget.WidgetPickMethodInfo
    ResolveTabButtonMethod "queueAllocate" o = Gtk.Widget.WidgetQueueAllocateMethodInfo
    ResolveTabButtonMethod "queueDraw" o = Gtk.Widget.WidgetQueueDrawMethodInfo
    ResolveTabButtonMethod "queueResize" o = Gtk.Widget.WidgetQueueResizeMethodInfo
    ResolveTabButtonMethod "realize" o = Gtk.Widget.WidgetRealizeMethodInfo
    ResolveTabButtonMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveTabButtonMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveTabButtonMethod "removeController" o = Gtk.Widget.WidgetRemoveControllerMethodInfo
    ResolveTabButtonMethod "removeCssClass" o = Gtk.Widget.WidgetRemoveCssClassMethodInfo
    ResolveTabButtonMethod "removeMnemonicLabel" o = Gtk.Widget.WidgetRemoveMnemonicLabelMethodInfo
    ResolveTabButtonMethod "removeTickCallback" o = Gtk.Widget.WidgetRemoveTickCallbackMethodInfo
    ResolveTabButtonMethod "resetProperty" o = Gtk.Accessible.AccessibleResetPropertyMethodInfo
    ResolveTabButtonMethod "resetRelation" o = Gtk.Accessible.AccessibleResetRelationMethodInfo
    ResolveTabButtonMethod "resetState" o = Gtk.Accessible.AccessibleResetStateMethodInfo
    ResolveTabButtonMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveTabButtonMethod "shouldLayout" o = Gtk.Widget.WidgetShouldLayoutMethodInfo
    ResolveTabButtonMethod "show" o = Gtk.Widget.WidgetShowMethodInfo
    ResolveTabButtonMethod "sizeAllocate" o = Gtk.Widget.WidgetSizeAllocateMethodInfo
    ResolveTabButtonMethod "snapshotChild" o = Gtk.Widget.WidgetSnapshotChildMethodInfo
    ResolveTabButtonMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveTabButtonMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveTabButtonMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveTabButtonMethod "translateCoordinates" o = Gtk.Widget.WidgetTranslateCoordinatesMethodInfo
    ResolveTabButtonMethod "triggerTooltipQuery" o = Gtk.Widget.WidgetTriggerTooltipQueryMethodInfo
    ResolveTabButtonMethod "unmap" o = Gtk.Widget.WidgetUnmapMethodInfo
    ResolveTabButtonMethod "unparent" o = Gtk.Widget.WidgetUnparentMethodInfo
    ResolveTabButtonMethod "unrealize" o = Gtk.Widget.WidgetUnrealizeMethodInfo
    ResolveTabButtonMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveTabButtonMethod "unsetStateFlags" o = Gtk.Widget.WidgetUnsetStateFlagsMethodInfo
    ResolveTabButtonMethod "updateNextAccessibleSibling" o = Gtk.Accessible.AccessibleUpdateNextAccessibleSiblingMethodInfo
    ResolveTabButtonMethod "updateProperty" o = Gtk.Accessible.AccessibleUpdatePropertyMethodInfo
    ResolveTabButtonMethod "updateRelation" o = Gtk.Accessible.AccessibleUpdateRelationMethodInfo
    ResolveTabButtonMethod "updateState" o = Gtk.Accessible.AccessibleUpdateStateMethodInfo
    ResolveTabButtonMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveTabButtonMethod "getAccessibleParent" o = Gtk.Accessible.AccessibleGetAccessibleParentMethodInfo
    ResolveTabButtonMethod "getAccessibleRole" o = Gtk.Accessible.AccessibleGetAccessibleRoleMethodInfo
    ResolveTabButtonMethod "getActionName" o = Gtk.Actionable.ActionableGetActionNameMethodInfo
    ResolveTabButtonMethod "getActionTargetValue" o = Gtk.Actionable.ActionableGetActionTargetValueMethodInfo
    ResolveTabButtonMethod "getAllocatedBaseline" o = Gtk.Widget.WidgetGetAllocatedBaselineMethodInfo
    ResolveTabButtonMethod "getAllocatedHeight" o = Gtk.Widget.WidgetGetAllocatedHeightMethodInfo
    ResolveTabButtonMethod "getAllocatedWidth" o = Gtk.Widget.WidgetGetAllocatedWidthMethodInfo
    ResolveTabButtonMethod "getAllocation" o = Gtk.Widget.WidgetGetAllocationMethodInfo
    ResolveTabButtonMethod "getAncestor" o = Gtk.Widget.WidgetGetAncestorMethodInfo
    ResolveTabButtonMethod "getAtContext" o = Gtk.Accessible.AccessibleGetAtContextMethodInfo
    ResolveTabButtonMethod "getBounds" o = Gtk.Accessible.AccessibleGetBoundsMethodInfo
    ResolveTabButtonMethod "getBuildableId" o = Gtk.Buildable.BuildableGetBuildableIdMethodInfo
    ResolveTabButtonMethod "getCanFocus" o = Gtk.Widget.WidgetGetCanFocusMethodInfo
    ResolveTabButtonMethod "getCanTarget" o = Gtk.Widget.WidgetGetCanTargetMethodInfo
    ResolveTabButtonMethod "getChildVisible" o = Gtk.Widget.WidgetGetChildVisibleMethodInfo
    ResolveTabButtonMethod "getClipboard" o = Gtk.Widget.WidgetGetClipboardMethodInfo
    ResolveTabButtonMethod "getColor" o = Gtk.Widget.WidgetGetColorMethodInfo
    ResolveTabButtonMethod "getCssClasses" o = Gtk.Widget.WidgetGetCssClassesMethodInfo
    ResolveTabButtonMethod "getCssName" o = Gtk.Widget.WidgetGetCssNameMethodInfo
    ResolveTabButtonMethod "getCursor" o = Gtk.Widget.WidgetGetCursorMethodInfo
    ResolveTabButtonMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveTabButtonMethod "getDirection" o = Gtk.Widget.WidgetGetDirectionMethodInfo
    ResolveTabButtonMethod "getDisplay" o = Gtk.Widget.WidgetGetDisplayMethodInfo
    ResolveTabButtonMethod "getFirstAccessibleChild" o = Gtk.Accessible.AccessibleGetFirstAccessibleChildMethodInfo
    ResolveTabButtonMethod "getFirstChild" o = Gtk.Widget.WidgetGetFirstChildMethodInfo
    ResolveTabButtonMethod "getFocusChild" o = Gtk.Widget.WidgetGetFocusChildMethodInfo
    ResolveTabButtonMethod "getFocusOnClick" o = Gtk.Widget.WidgetGetFocusOnClickMethodInfo
    ResolveTabButtonMethod "getFocusable" o = Gtk.Widget.WidgetGetFocusableMethodInfo
    ResolveTabButtonMethod "getFontMap" o = Gtk.Widget.WidgetGetFontMapMethodInfo
    ResolveTabButtonMethod "getFontOptions" o = Gtk.Widget.WidgetGetFontOptionsMethodInfo
    ResolveTabButtonMethod "getFrameClock" o = Gtk.Widget.WidgetGetFrameClockMethodInfo
    ResolveTabButtonMethod "getHalign" o = Gtk.Widget.WidgetGetHalignMethodInfo
    ResolveTabButtonMethod "getHasTooltip" o = Gtk.Widget.WidgetGetHasTooltipMethodInfo
    ResolveTabButtonMethod "getHeight" o = Gtk.Widget.WidgetGetHeightMethodInfo
    ResolveTabButtonMethod "getHexpand" o = Gtk.Widget.WidgetGetHexpandMethodInfo
    ResolveTabButtonMethod "getHexpandSet" o = Gtk.Widget.WidgetGetHexpandSetMethodInfo
    ResolveTabButtonMethod "getLastChild" o = Gtk.Widget.WidgetGetLastChildMethodInfo
    ResolveTabButtonMethod "getLayoutManager" o = Gtk.Widget.WidgetGetLayoutManagerMethodInfo
    ResolveTabButtonMethod "getMapped" o = Gtk.Widget.WidgetGetMappedMethodInfo
    ResolveTabButtonMethod "getMarginBottom" o = Gtk.Widget.WidgetGetMarginBottomMethodInfo
    ResolveTabButtonMethod "getMarginEnd" o = Gtk.Widget.WidgetGetMarginEndMethodInfo
    ResolveTabButtonMethod "getMarginStart" o = Gtk.Widget.WidgetGetMarginStartMethodInfo
    ResolveTabButtonMethod "getMarginTop" o = Gtk.Widget.WidgetGetMarginTopMethodInfo
    ResolveTabButtonMethod "getName" o = Gtk.Widget.WidgetGetNameMethodInfo
    ResolveTabButtonMethod "getNative" o = Gtk.Widget.WidgetGetNativeMethodInfo
    ResolveTabButtonMethod "getNextAccessibleSibling" o = Gtk.Accessible.AccessibleGetNextAccessibleSiblingMethodInfo
    ResolveTabButtonMethod "getNextSibling" o = Gtk.Widget.WidgetGetNextSiblingMethodInfo
    ResolveTabButtonMethod "getOpacity" o = Gtk.Widget.WidgetGetOpacityMethodInfo
    ResolveTabButtonMethod "getOverflow" o = Gtk.Widget.WidgetGetOverflowMethodInfo
    ResolveTabButtonMethod "getPangoContext" o = Gtk.Widget.WidgetGetPangoContextMethodInfo
    ResolveTabButtonMethod "getParent" o = Gtk.Widget.WidgetGetParentMethodInfo
    ResolveTabButtonMethod "getPlatformState" o = Gtk.Accessible.AccessibleGetPlatformStateMethodInfo
    ResolveTabButtonMethod "getPreferredSize" o = Gtk.Widget.WidgetGetPreferredSizeMethodInfo
    ResolveTabButtonMethod "getPrevSibling" o = Gtk.Widget.WidgetGetPrevSiblingMethodInfo
    ResolveTabButtonMethod "getPrimaryClipboard" o = Gtk.Widget.WidgetGetPrimaryClipboardMethodInfo
    ResolveTabButtonMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveTabButtonMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveTabButtonMethod "getRealized" o = Gtk.Widget.WidgetGetRealizedMethodInfo
    ResolveTabButtonMethod "getReceivesDefault" o = Gtk.Widget.WidgetGetReceivesDefaultMethodInfo
    ResolveTabButtonMethod "getRequestMode" o = Gtk.Widget.WidgetGetRequestModeMethodInfo
    ResolveTabButtonMethod "getRoot" o = Gtk.Widget.WidgetGetRootMethodInfo
    ResolveTabButtonMethod "getScaleFactor" o = Gtk.Widget.WidgetGetScaleFactorMethodInfo
    ResolveTabButtonMethod "getSensitive" o = Gtk.Widget.WidgetGetSensitiveMethodInfo
    ResolveTabButtonMethod "getSettings" o = Gtk.Widget.WidgetGetSettingsMethodInfo
    ResolveTabButtonMethod "getSize" o = Gtk.Widget.WidgetGetSizeMethodInfo
    ResolveTabButtonMethod "getSizeRequest" o = Gtk.Widget.WidgetGetSizeRequestMethodInfo
    ResolveTabButtonMethod "getStateFlags" o = Gtk.Widget.WidgetGetStateFlagsMethodInfo
    ResolveTabButtonMethod "getStyleContext" o = Gtk.Widget.WidgetGetStyleContextMethodInfo
    ResolveTabButtonMethod "getTemplateChild" o = Gtk.Widget.WidgetGetTemplateChildMethodInfo
    ResolveTabButtonMethod "getTooltipMarkup" o = Gtk.Widget.WidgetGetTooltipMarkupMethodInfo
    ResolveTabButtonMethod "getTooltipText" o = Gtk.Widget.WidgetGetTooltipTextMethodInfo
    ResolveTabButtonMethod "getValign" o = Gtk.Widget.WidgetGetValignMethodInfo
    ResolveTabButtonMethod "getVexpand" o = Gtk.Widget.WidgetGetVexpandMethodInfo
    ResolveTabButtonMethod "getVexpandSet" o = Gtk.Widget.WidgetGetVexpandSetMethodInfo
    ResolveTabButtonMethod "getView" o = TabButtonGetViewMethodInfo
    ResolveTabButtonMethod "getVisible" o = Gtk.Widget.WidgetGetVisibleMethodInfo
    ResolveTabButtonMethod "getWidth" o = Gtk.Widget.WidgetGetWidthMethodInfo
    ResolveTabButtonMethod "setAccessibleParent" o = Gtk.Accessible.AccessibleSetAccessibleParentMethodInfo
    ResolveTabButtonMethod "setActionName" o = Gtk.Actionable.ActionableSetActionNameMethodInfo
    ResolveTabButtonMethod "setActionTargetValue" o = Gtk.Actionable.ActionableSetActionTargetValueMethodInfo
    ResolveTabButtonMethod "setCanFocus" o = Gtk.Widget.WidgetSetCanFocusMethodInfo
    ResolveTabButtonMethod "setCanTarget" o = Gtk.Widget.WidgetSetCanTargetMethodInfo
    ResolveTabButtonMethod "setChildVisible" o = Gtk.Widget.WidgetSetChildVisibleMethodInfo
    ResolveTabButtonMethod "setCssClasses" o = Gtk.Widget.WidgetSetCssClassesMethodInfo
    ResolveTabButtonMethod "setCursor" o = Gtk.Widget.WidgetSetCursorMethodInfo
    ResolveTabButtonMethod "setCursorFromName" o = Gtk.Widget.WidgetSetCursorFromNameMethodInfo
    ResolveTabButtonMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveTabButtonMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveTabButtonMethod "setDetailedActionName" o = Gtk.Actionable.ActionableSetDetailedActionNameMethodInfo
    ResolveTabButtonMethod "setDirection" o = Gtk.Widget.WidgetSetDirectionMethodInfo
    ResolveTabButtonMethod "setFocusChild" o = Gtk.Widget.WidgetSetFocusChildMethodInfo
    ResolveTabButtonMethod "setFocusOnClick" o = Gtk.Widget.WidgetSetFocusOnClickMethodInfo
    ResolveTabButtonMethod "setFocusable" o = Gtk.Widget.WidgetSetFocusableMethodInfo
    ResolveTabButtonMethod "setFontMap" o = Gtk.Widget.WidgetSetFontMapMethodInfo
    ResolveTabButtonMethod "setFontOptions" o = Gtk.Widget.WidgetSetFontOptionsMethodInfo
    ResolveTabButtonMethod "setHalign" o = Gtk.Widget.WidgetSetHalignMethodInfo
    ResolveTabButtonMethod "setHasTooltip" o = Gtk.Widget.WidgetSetHasTooltipMethodInfo
    ResolveTabButtonMethod "setHexpand" o = Gtk.Widget.WidgetSetHexpandMethodInfo
    ResolveTabButtonMethod "setHexpandSet" o = Gtk.Widget.WidgetSetHexpandSetMethodInfo
    ResolveTabButtonMethod "setLayoutManager" o = Gtk.Widget.WidgetSetLayoutManagerMethodInfo
    ResolveTabButtonMethod "setMarginBottom" o = Gtk.Widget.WidgetSetMarginBottomMethodInfo
    ResolveTabButtonMethod "setMarginEnd" o = Gtk.Widget.WidgetSetMarginEndMethodInfo
    ResolveTabButtonMethod "setMarginStart" o = Gtk.Widget.WidgetSetMarginStartMethodInfo
    ResolveTabButtonMethod "setMarginTop" o = Gtk.Widget.WidgetSetMarginTopMethodInfo
    ResolveTabButtonMethod "setName" o = Gtk.Widget.WidgetSetNameMethodInfo
    ResolveTabButtonMethod "setOpacity" o = Gtk.Widget.WidgetSetOpacityMethodInfo
    ResolveTabButtonMethod "setOverflow" o = Gtk.Widget.WidgetSetOverflowMethodInfo
    ResolveTabButtonMethod "setParent" o = Gtk.Widget.WidgetSetParentMethodInfo
    ResolveTabButtonMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveTabButtonMethod "setReceivesDefault" o = Gtk.Widget.WidgetSetReceivesDefaultMethodInfo
    ResolveTabButtonMethod "setSensitive" o = Gtk.Widget.WidgetSetSensitiveMethodInfo
    ResolveTabButtonMethod "setSizeRequest" o = Gtk.Widget.WidgetSetSizeRequestMethodInfo
    ResolveTabButtonMethod "setStateFlags" o = Gtk.Widget.WidgetSetStateFlagsMethodInfo
    ResolveTabButtonMethod "setTooltipMarkup" o = Gtk.Widget.WidgetSetTooltipMarkupMethodInfo
    ResolveTabButtonMethod "setTooltipText" o = Gtk.Widget.WidgetSetTooltipTextMethodInfo
    ResolveTabButtonMethod "setValign" o = Gtk.Widget.WidgetSetValignMethodInfo
    ResolveTabButtonMethod "setVexpand" o = Gtk.Widget.WidgetSetVexpandMethodInfo
    ResolveTabButtonMethod "setVexpandSet" o = Gtk.Widget.WidgetSetVexpandSetMethodInfo
    ResolveTabButtonMethod "setView" o = TabButtonSetViewMethodInfo
    ResolveTabButtonMethod "setVisible" o = Gtk.Widget.WidgetSetVisibleMethodInfo
    ResolveTabButtonMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveTabButtonMethod t TabButton, O.OverloadedMethod info TabButton p) => OL.IsLabel t (TabButton -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveTabButtonMethod t TabButton, O.OverloadedMethod info TabButton p, R.HasField t TabButton p) => R.HasField t TabButton p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveTabButtonMethod t TabButton, O.OverloadedMethodInfo info TabButton) => OL.IsLabel t (O.MethodProxy info TabButton) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif

-- signal TabButton::activate
-- | Emitted to animate press then release.
-- 
-- This is an action signal. Applications should never connect to this signal,
-- but use the [signal/@tabButton@/[clicked](#g:signal:clicked)] signal.
-- 
-- /Since: 1.3/
type TabButtonActivateCallback =
    IO ()

type C_TabButtonActivateCallback =
    Ptr TabButton ->                        -- object
    Ptr () ->                               -- user_data
    IO ()

-- | Generate a function pointer callable from C code, from a `C_TabButtonActivateCallback`.
foreign import ccall "wrapper"
    mk_TabButtonActivateCallback :: C_TabButtonActivateCallback -> IO (FunPtr C_TabButtonActivateCallback)

wrap_TabButtonActivateCallback :: 
    GObject a => (a -> TabButtonActivateCallback) ->
    C_TabButtonActivateCallback
wrap_TabButtonActivateCallback :: forall a. GObject a => (a -> IO ()) -> C_TabButtonActivateCallback
wrap_TabButtonActivateCallback a -> IO ()
gi'cb Ptr TabButton
gi'selfPtr Ptr ()
_ = do
    Ptr TabButton -> (TabButton -> IO ()) -> IO ()
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr TabButton
gi'selfPtr ((TabButton -> IO ()) -> IO ()) -> (TabButton -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \TabButton
gi'self -> a -> IO ()
gi'cb (TabButton -> a
forall a b. Coercible a b => a -> b
Coerce.coerce TabButton
gi'self) 


-- | Connect a signal handler for the [activate](#signal:activate) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' tabButton #activate callback
-- @
-- 
-- 
onTabButtonActivate :: (IsTabButton a, MonadIO m) => a -> ((?self :: a) => TabButtonActivateCallback) -> m SignalHandlerId
onTabButtonActivate :: forall a (m :: * -> *).
(IsTabButton a, MonadIO m) =>
a -> ((?self::a) => IO ()) -> m SignalHandlerId
onTabButtonActivate a
obj (?self::a) => IO ()
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> IO ()
wrapped a
self = let ?self = a
?self::a
self in IO ()
(?self::a) => IO ()
cb
    let wrapped' :: C_TabButtonActivateCallback
wrapped' = (a -> IO ()) -> C_TabButtonActivateCallback
forall a. GObject a => (a -> IO ()) -> C_TabButtonActivateCallback
wrap_TabButtonActivateCallback a -> IO ()
wrapped
    FunPtr C_TabButtonActivateCallback
wrapped'' <- C_TabButtonActivateCallback
-> IO (FunPtr C_TabButtonActivateCallback)
mk_TabButtonActivateCallback C_TabButtonActivateCallback
wrapped'
    a
-> Text
-> FunPtr C_TabButtonActivateCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"activate" FunPtr C_TabButtonActivateCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [activate](#signal:activate) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' tabButton #activate callback
-- @
-- 
-- 
-- 
-- By default the object invoking the signal is not passed to the callback.
-- If you need to access it, you can use the implit @?self@ parameter.
-- Note that this requires activating the @ImplicitParams@ GHC extension.
-- 
afterTabButtonActivate :: (IsTabButton a, MonadIO m) => a -> ((?self :: a) => TabButtonActivateCallback) -> m SignalHandlerId
afterTabButtonActivate :: forall a (m :: * -> *).
(IsTabButton a, MonadIO m) =>
a -> ((?self::a) => IO ()) -> m SignalHandlerId
afterTabButtonActivate a
obj (?self::a) => IO ()
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> IO ()
wrapped a
self = let ?self = a
?self::a
self in IO ()
(?self::a) => IO ()
cb
    let wrapped' :: C_TabButtonActivateCallback
wrapped' = (a -> IO ()) -> C_TabButtonActivateCallback
forall a. GObject a => (a -> IO ()) -> C_TabButtonActivateCallback
wrap_TabButtonActivateCallback a -> IO ()
wrapped
    FunPtr C_TabButtonActivateCallback
wrapped'' <- C_TabButtonActivateCallback
-> IO (FunPtr C_TabButtonActivateCallback)
mk_TabButtonActivateCallback C_TabButtonActivateCallback
wrapped'
    a
-> Text
-> FunPtr C_TabButtonActivateCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"activate" FunPtr C_TabButtonActivateCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data TabButtonActivateSignalInfo
instance SignalInfo TabButtonActivateSignalInfo where
    type HaskellCallbackType TabButtonActivateSignalInfo = TabButtonActivateCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_TabButtonActivateCallback cb
        cb'' <- mk_TabButtonActivateCallback cb'
        connectSignalFunPtr obj "activate" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.TabButton::activate"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.6/docs/GI-Adw-Objects-TabButton.html#g:signal:activate"})

#endif

-- signal TabButton::clicked
-- | Emitted when the button has been activated (pressed and released).
-- 
-- /Since: 1.3/
type TabButtonClickedCallback =
    IO ()

type C_TabButtonClickedCallback =
    Ptr TabButton ->                        -- object
    Ptr () ->                               -- user_data
    IO ()

-- | Generate a function pointer callable from C code, from a `C_TabButtonClickedCallback`.
foreign import ccall "wrapper"
    mk_TabButtonClickedCallback :: C_TabButtonClickedCallback -> IO (FunPtr C_TabButtonClickedCallback)

wrap_TabButtonClickedCallback :: 
    GObject a => (a -> TabButtonClickedCallback) ->
    C_TabButtonClickedCallback
wrap_TabButtonClickedCallback :: forall a. GObject a => (a -> IO ()) -> C_TabButtonActivateCallback
wrap_TabButtonClickedCallback a -> IO ()
gi'cb Ptr TabButton
gi'selfPtr Ptr ()
_ = do
    Ptr TabButton -> (TabButton -> IO ()) -> IO ()
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr TabButton
gi'selfPtr ((TabButton -> IO ()) -> IO ()) -> (TabButton -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \TabButton
gi'self -> a -> IO ()
gi'cb (TabButton -> a
forall a b. Coercible a b => a -> b
Coerce.coerce TabButton
gi'self) 


-- | Connect a signal handler for the [clicked](#signal:clicked) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' tabButton #clicked callback
-- @
-- 
-- 
onTabButtonClicked :: (IsTabButton a, MonadIO m) => a -> ((?self :: a) => TabButtonClickedCallback) -> m SignalHandlerId
onTabButtonClicked :: forall a (m :: * -> *).
(IsTabButton a, MonadIO m) =>
a -> ((?self::a) => IO ()) -> m SignalHandlerId
onTabButtonClicked a
obj (?self::a) => IO ()
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> IO ()
wrapped a
self = let ?self = a
?self::a
self in IO ()
(?self::a) => IO ()
cb
    let wrapped' :: C_TabButtonActivateCallback
wrapped' = (a -> IO ()) -> C_TabButtonActivateCallback
forall a. GObject a => (a -> IO ()) -> C_TabButtonActivateCallback
wrap_TabButtonClickedCallback a -> IO ()
wrapped
    FunPtr C_TabButtonActivateCallback
wrapped'' <- C_TabButtonActivateCallback
-> IO (FunPtr C_TabButtonActivateCallback)
mk_TabButtonClickedCallback C_TabButtonActivateCallback
wrapped'
    a
-> Text
-> FunPtr C_TabButtonActivateCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"clicked" FunPtr C_TabButtonActivateCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [clicked](#signal:clicked) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' tabButton #clicked callback
-- @
-- 
-- 
-- 
-- By default the object invoking the signal is not passed to the callback.
-- If you need to access it, you can use the implit @?self@ parameter.
-- Note that this requires activating the @ImplicitParams@ GHC extension.
-- 
afterTabButtonClicked :: (IsTabButton a, MonadIO m) => a -> ((?self :: a) => TabButtonClickedCallback) -> m SignalHandlerId
afterTabButtonClicked :: forall a (m :: * -> *).
(IsTabButton a, MonadIO m) =>
a -> ((?self::a) => IO ()) -> m SignalHandlerId
afterTabButtonClicked a
obj (?self::a) => IO ()
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> IO ()
wrapped a
self = let ?self = a
?self::a
self in IO ()
(?self::a) => IO ()
cb
    let wrapped' :: C_TabButtonActivateCallback
wrapped' = (a -> IO ()) -> C_TabButtonActivateCallback
forall a. GObject a => (a -> IO ()) -> C_TabButtonActivateCallback
wrap_TabButtonClickedCallback a -> IO ()
wrapped
    FunPtr C_TabButtonActivateCallback
wrapped'' <- C_TabButtonActivateCallback
-> IO (FunPtr C_TabButtonActivateCallback)
mk_TabButtonClickedCallback C_TabButtonActivateCallback
wrapped'
    a
-> Text
-> FunPtr C_TabButtonActivateCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"clicked" FunPtr C_TabButtonActivateCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data TabButtonClickedSignalInfo
instance SignalInfo TabButtonClickedSignalInfo where
    type HaskellCallbackType TabButtonClickedSignalInfo = TabButtonClickedCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_TabButtonClickedCallback cb
        cb'' <- mk_TabButtonClickedCallback cb'
        connectSignalFunPtr obj "clicked" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.TabButton::clicked"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.6/docs/GI-Adw-Objects-TabButton.html#g:signal:clicked"})

#endif

-- VVV Prop "view"
   -- Type: TInterface (Name {namespace = "Adw", name = "TabView"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just True,Just True)

-- | Get the value of the “@view@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' tabButton #view
-- @
getTabButtonView :: (MonadIO m, IsTabButton o) => o -> m (Maybe Adw.TabView.TabView)
getTabButtonView :: forall (m :: * -> *) o.
(MonadIO m, IsTabButton o) =>
o -> m (Maybe TabView)
getTabButtonView o
obj = IO (Maybe TabView) -> m (Maybe TabView)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (Maybe TabView) -> m (Maybe TabView))
-> IO (Maybe TabView) -> m (Maybe TabView)
forall a b. (a -> b) -> a -> b
$ o
-> String -> (ManagedPtr TabView -> TabView) -> IO (Maybe TabView)
forall a b.
(GObject a, GObject b) =>
a -> String -> (ManagedPtr b -> b) -> IO (Maybe b)
B.Properties.getObjectPropertyObject o
obj String
"view" ManagedPtr TabView -> TabView
Adw.TabView.TabView

-- | Set the value of the “@view@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' tabButton [ #view 'Data.GI.Base.Attributes.:=' value ]
-- @
setTabButtonView :: (MonadIO m, IsTabButton o, Adw.TabView.IsTabView a) => o -> a -> m ()
setTabButtonView :: forall (m :: * -> *) o a.
(MonadIO m, IsTabButton o, IsTabView a) =>
o -> a -> m ()
setTabButtonView o
obj a
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Maybe a -> IO ()
forall a b.
(GObject a, GObject b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyObject o
obj String
"view" (a -> Maybe a
forall a. a -> Maybe a
Just a
val)

-- | Construct a `GValueConstruct` with valid value for the “@view@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructTabButtonView :: (IsTabButton o, MIO.MonadIO m, Adw.TabView.IsTabView a) => a -> m (GValueConstruct o)
constructTabButtonView :: forall o (m :: * -> *) a.
(IsTabButton o, MonadIO m, IsTabView a) =>
a -> m (GValueConstruct o)
constructTabButtonView a
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Maybe a -> IO (GValueConstruct o)
forall a o.
GObject a =>
String -> Maybe a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyObject String
"view" (a -> Maybe a
forall a. a -> Maybe a
P.Just a
val)

-- | Set the value of the “@view@” property to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #view
-- @
clearTabButtonView :: (MonadIO m, IsTabButton o) => o -> m ()
clearTabButtonView :: forall (m :: * -> *) o. (MonadIO m, IsTabButton o) => o -> m ()
clearTabButtonView o
obj = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe TabView -> IO ()
forall a b.
(GObject a, GObject b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyObject o
obj String
"view" (Maybe TabView
forall a. Maybe a
Nothing :: Maybe Adw.TabView.TabView)

#if defined(ENABLE_OVERLOADING)
data TabButtonViewPropertyInfo
instance AttrInfo TabButtonViewPropertyInfo where
    type AttrAllowedOps TabButtonViewPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint TabButtonViewPropertyInfo = IsTabButton
    type AttrSetTypeConstraint TabButtonViewPropertyInfo = Adw.TabView.IsTabView
    type AttrTransferTypeConstraint TabButtonViewPropertyInfo = Adw.TabView.IsTabView
    type AttrTransferType TabButtonViewPropertyInfo = Adw.TabView.TabView
    type AttrGetType TabButtonViewPropertyInfo = (Maybe Adw.TabView.TabView)
    type AttrLabel TabButtonViewPropertyInfo = "view"
    type AttrOrigin TabButtonViewPropertyInfo = TabButton
    attrGet = getTabButtonView
    attrSet = setTabButtonView
    attrTransfer _ v = do
        unsafeCastTo Adw.TabView.TabView v
    attrConstruct = constructTabButtonView
    attrClear = clearTabButtonView
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.TabButton.view"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.6/docs/GI-Adw-Objects-TabButton.html#g:attr:view"
        })
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList TabButton
type instance O.AttributeList TabButton = TabButtonAttributeList
type TabButtonAttributeList = ('[ '("accessibleRole", Gtk.Accessible.AccessibleAccessibleRolePropertyInfo), '("actionName", Gtk.Actionable.ActionableActionNamePropertyInfo), '("actionTarget", Gtk.Actionable.ActionableActionTargetPropertyInfo), '("canFocus", Gtk.Widget.WidgetCanFocusPropertyInfo), '("canTarget", Gtk.Widget.WidgetCanTargetPropertyInfo), '("cssClasses", Gtk.Widget.WidgetCssClassesPropertyInfo), '("cssName", Gtk.Widget.WidgetCssNamePropertyInfo), '("cursor", Gtk.Widget.WidgetCursorPropertyInfo), '("focusOnClick", Gtk.Widget.WidgetFocusOnClickPropertyInfo), '("focusable", Gtk.Widget.WidgetFocusablePropertyInfo), '("halign", Gtk.Widget.WidgetHalignPropertyInfo), '("hasDefault", Gtk.Widget.WidgetHasDefaultPropertyInfo), '("hasFocus", Gtk.Widget.WidgetHasFocusPropertyInfo), '("hasTooltip", Gtk.Widget.WidgetHasTooltipPropertyInfo), '("heightRequest", Gtk.Widget.WidgetHeightRequestPropertyInfo), '("hexpand", Gtk.Widget.WidgetHexpandPropertyInfo), '("hexpandSet", Gtk.Widget.WidgetHexpandSetPropertyInfo), '("layoutManager", Gtk.Widget.WidgetLayoutManagerPropertyInfo), '("marginBottom", Gtk.Widget.WidgetMarginBottomPropertyInfo), '("marginEnd", Gtk.Widget.WidgetMarginEndPropertyInfo), '("marginStart", Gtk.Widget.WidgetMarginStartPropertyInfo), '("marginTop", Gtk.Widget.WidgetMarginTopPropertyInfo), '("name", Gtk.Widget.WidgetNamePropertyInfo), '("opacity", Gtk.Widget.WidgetOpacityPropertyInfo), '("overflow", Gtk.Widget.WidgetOverflowPropertyInfo), '("parent", Gtk.Widget.WidgetParentPropertyInfo), '("receivesDefault", Gtk.Widget.WidgetReceivesDefaultPropertyInfo), '("root", Gtk.Widget.WidgetRootPropertyInfo), '("scaleFactor", Gtk.Widget.WidgetScaleFactorPropertyInfo), '("sensitive", Gtk.Widget.WidgetSensitivePropertyInfo), '("tooltipMarkup", Gtk.Widget.WidgetTooltipMarkupPropertyInfo), '("tooltipText", Gtk.Widget.WidgetTooltipTextPropertyInfo), '("valign", Gtk.Widget.WidgetValignPropertyInfo), '("vexpand", Gtk.Widget.WidgetVexpandPropertyInfo), '("vexpandSet", Gtk.Widget.WidgetVexpandSetPropertyInfo), '("view", TabButtonViewPropertyInfo), '("visible", Gtk.Widget.WidgetVisiblePropertyInfo), '("widthRequest", Gtk.Widget.WidgetWidthRequestPropertyInfo)] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
tabButtonView :: AttrLabelProxy "view"
tabButtonView = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList TabButton = TabButtonSignalList
type TabButtonSignalList = ('[ '("activate", TabButtonActivateSignalInfo), '("clicked", TabButtonClickedSignalInfo), '("destroy", Gtk.Widget.WidgetDestroySignalInfo), '("directionChanged", Gtk.Widget.WidgetDirectionChangedSignalInfo), '("hide", Gtk.Widget.WidgetHideSignalInfo), '("keynavFailed", Gtk.Widget.WidgetKeynavFailedSignalInfo), '("map", Gtk.Widget.WidgetMapSignalInfo), '("mnemonicActivate", Gtk.Widget.WidgetMnemonicActivateSignalInfo), '("moveFocus", Gtk.Widget.WidgetMoveFocusSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("queryTooltip", Gtk.Widget.WidgetQueryTooltipSignalInfo), '("realize", Gtk.Widget.WidgetRealizeSignalInfo), '("show", Gtk.Widget.WidgetShowSignalInfo), '("stateFlagsChanged", Gtk.Widget.WidgetStateFlagsChangedSignalInfo), '("unmap", Gtk.Widget.WidgetUnmapSignalInfo), '("unrealize", Gtk.Widget.WidgetUnrealizeSignalInfo)] :: [(Symbol, DK.Type)])

#endif

-- method TabButton::new
-- method type : Constructor
-- Args: []
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Adw" , name = "TabButton" })
-- throws : False
-- Skip return : False

foreign import ccall "adw_tab_button_new" adw_tab_button_new :: 
    IO (Ptr TabButton)

-- | Creates a new @AdwTabButton@.
-- 
-- /Since: 1.3/
tabButtonNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m TabButton
    -- ^ __Returns:__ the newly created @AdwTabButton@
tabButtonNew :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m TabButton
tabButtonNew  = IO TabButton -> m TabButton
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO TabButton -> m TabButton) -> IO TabButton -> m TabButton
forall a b. (a -> b) -> a -> b
$ do
    Ptr TabButton
result <- IO (Ptr TabButton)
adw_tab_button_new
    Text -> Ptr TabButton -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"tabButtonNew" Ptr TabButton
result
    TabButton
result' <- ((ManagedPtr TabButton -> TabButton)
-> Ptr TabButton -> IO TabButton
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr TabButton -> TabButton
TabButton) Ptr TabButton
result
    TabButton -> IO TabButton
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return TabButton
result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method TabButton::get_view
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "TabButton" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a tab button" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Adw" , name = "TabView" })
-- throws : False
-- Skip return : False

foreign import ccall "adw_tab_button_get_view" adw_tab_button_get_view :: 
    Ptr TabButton ->                        -- self : TInterface (Name {namespace = "Adw", name = "TabButton"})
    IO (Ptr Adw.TabView.TabView)

-- | Gets the tab view /@self@/ displays.
-- 
-- /Since: 1.3/
tabButtonGetView ::
    (B.CallStack.HasCallStack, MonadIO m, IsTabButton a) =>
    a
    -- ^ /@self@/: a tab button
    -> m (Maybe Adw.TabView.TabView)
    -- ^ __Returns:__ the tab view
tabButtonGetView :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsTabButton a) =>
a -> m (Maybe TabView)
tabButtonGetView a
self = IO (Maybe TabView) -> m (Maybe TabView)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe TabView) -> m (Maybe TabView))
-> IO (Maybe TabView) -> m (Maybe TabView)
forall a b. (a -> b) -> a -> b
$ do
    Ptr TabButton
self' <- a -> IO (Ptr TabButton)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr TabView
result <- Ptr TabButton -> IO (Ptr TabView)
adw_tab_button_get_view Ptr TabButton
self'
    Maybe TabView
maybeResult <- Ptr TabView -> (Ptr TabView -> IO TabView) -> IO (Maybe TabView)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr TabView
result ((Ptr TabView -> IO TabView) -> IO (Maybe TabView))
-> (Ptr TabView -> IO TabView) -> IO (Maybe TabView)
forall a b. (a -> b) -> a -> b
$ \Ptr TabView
result' -> do
        TabView
result'' <- ((ManagedPtr TabView -> TabView) -> Ptr TabView -> IO TabView
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr TabView -> TabView
Adw.TabView.TabView) Ptr TabView
result'
        TabView -> IO TabView
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return TabView
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Maybe TabView -> IO (Maybe TabView)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe TabView
maybeResult

#if defined(ENABLE_OVERLOADING)
data TabButtonGetViewMethodInfo
instance (signature ~ (m (Maybe Adw.TabView.TabView)), MonadIO m, IsTabButton a) => O.OverloadedMethod TabButtonGetViewMethodInfo a signature where
    overloadedMethod = tabButtonGetView

instance O.OverloadedMethodInfo TabButtonGetViewMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.TabButton.tabButtonGetView",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.6/docs/GI-Adw-Objects-TabButton.html#v:tabButtonGetView"
        })


#endif

-- method TabButton::set_view
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "TabButton" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a tab button" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "view"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "TabView" }
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a tab view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "adw_tab_button_set_view" adw_tab_button_set_view :: 
    Ptr TabButton ->                        -- self : TInterface (Name {namespace = "Adw", name = "TabButton"})
    Ptr Adw.TabView.TabView ->              -- view : TInterface (Name {namespace = "Adw", name = "TabView"})
    IO ()

-- | Sets the tab view to display.
-- 
-- /Since: 1.3/
tabButtonSetView ::
    (B.CallStack.HasCallStack, MonadIO m, IsTabButton a, Adw.TabView.IsTabView b) =>
    a
    -- ^ /@self@/: a tab button
    -> Maybe (b)
    -- ^ /@view@/: a tab view
    -> m ()
tabButtonSetView :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsTabButton a, IsTabView b) =>
a -> Maybe b -> m ()
tabButtonSetView a
self Maybe b
view = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr TabButton
self' <- a -> IO (Ptr TabButton)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr TabView
maybeView <- case Maybe b
view of
        Maybe b
Nothing -> Ptr TabView -> IO (Ptr TabView)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr TabView
forall a. Ptr a
nullPtr
        Just b
jView -> do
            Ptr TabView
jView' <- b -> IO (Ptr TabView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jView
            Ptr TabView -> IO (Ptr TabView)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr TabView
jView'
    Ptr TabButton -> Ptr TabView -> IO ()
adw_tab_button_set_view Ptr TabButton
self' Ptr TabView
maybeView
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Maybe b -> (b -> IO ()) -> IO ()
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Maybe b
view b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data TabButtonSetViewMethodInfo
instance (signature ~ (Maybe (b) -> m ()), MonadIO m, IsTabButton a, Adw.TabView.IsTabView b) => O.OverloadedMethod TabButtonSetViewMethodInfo a signature where
    overloadedMethod = tabButtonSetView

instance O.OverloadedMethodInfo TabButtonSetViewMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.TabButton.tabButtonSetView",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.6/docs/GI-Adw-Objects-TabButton.html#v:tabButtonSetView"
        })


#endif