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


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- A page-based navigation container.
-- 
-- \<picture>
--   \<source srcset=\"navigation-view-dark.png\" media=\"(prefers-color-scheme: dark)\">
--   \<img src=\"navigation-view.png\" alt=\"navigation-view\">
-- \<\/picture>
-- 
-- @AdwNavigationView@ presents one child at a time, similar to
-- t'GI.Gtk.Objects.Stack.Stack'.
-- 
-- @AdwNavigationView@ can only contain [class/@navigationPage@/] children.
-- 
-- It maintains a navigation stack that can be controlled with
-- [method/@navigationView@/.push] and [method/@navigationView@/.pop]. The whole
-- navigation stack can also be replaced using [method/@navigationView@/.replace].
-- 
-- @AdwNavigationView@ allows to manage pages statically or dynamically.
-- 
-- Static pages can be added using the [method/@navigationView@/.add] method. The
-- @AdwNavigationView@ will keep a reference to these pages, but they aren\'t
-- accessible to the user until [method/@navigationView@/.push] is called (except
-- for the first page, which is pushed automatically). Use the
-- [method/@navigationView@/.remove] method to remove them. This is useful for
-- applications that have a small number of unique pages and just need
-- navigation between them.
-- 
-- Dynamic pages are automatically destroyed once they are popped off the
-- navigation stack. To add a page like this, push it using the
-- [method/@navigationView@/.push] method without calling
-- [method/@navigationView@/.add] first.
-- 
-- == Tags
-- 
-- Static pages, as well as any pages in the navigation stack, can be accessed
-- by their [property/@navigationPage@/:tag]. For example,
-- [method/@navigationView@/.push_by_tag] can be used to push a static page that\'s
-- not in the navigation stack without having to keep a reference to it manually.
-- 
-- == Header Bar Integration
-- 
-- When used inside @AdwNavigationView@, [class/@headerBar@/] will automatically
-- display a back button that can be used to go back to the previous page when
-- possible. The button also has a context menu, allowing to pop multiple pages
-- at once, potentially across multiple navigation views.
-- 
-- Set [property/@headerBar@/:show-back-button] to @FALSE@ to disable this behavior
-- in rare scenarios where it\'s unwanted.
-- 
-- @AdwHeaderBar@ will also display the title of the @AdwNavigationPage@ it\'s
-- placed into, so most applications shouldn\'t need to customize it at all.
-- 
-- == Shortcuts and Gestures
-- 
-- @AdwNavigationView@ supports the following shortcuts for going to the
-- previous page:
-- 
-- * \<kbd>Escape\<\/kbd> (unless [property/@navigationView@/:pop-on-escape] is set to
-- @FALSE@)
-- * \<kbd>Alt\<\/kbd>+\<kbd>←\<\/kbd>
-- * Back mouse button
-- 
-- 
-- Additionally, it supports interactive gestures:
-- 
-- * One-finger swipe towards the right on touchscreens
-- * Scrolling towards the right on touchpads (usually two-finger swipe)
-- 
-- 
-- These gestures have transitions enabled regardless of the
-- [property/@navigationView@/:animate-transitions] value.
-- 
-- Applications can also enable shortcuts for pushing another page onto the
-- navigation stack via connecting to the [signal/@navigationView@/[getNextPage](#g:signal:getNextPage)]
-- signal, in that case the following shortcuts are supported:
-- 
-- * \<kbd>Alt\<\/kbd>+\<kbd>→\<\/kbd>
-- * Forward mouse button
-- * Swipe\/scrolling towards the left
-- 
-- 
-- For right-to-left locales, the gestures and shortcuts are reversed.
-- 
-- [property/@navigationPage@/:can-pop] can be used to disable them, along with the
-- header bar back buttons.
-- 
-- == Actions
-- 
-- @AdwNavigationView@ defines actions for controlling the navigation stack.
-- actions for controlling the navigation stack:
-- 
-- * @navigation.push@ takes a string parameter specifying the tag of the page to
-- 
-- push, and is equivalent to calling [method/@navigationView@/.push_by_tag].
-- 
-- * @navigation.pop@ doesn\'t take any parameters and pops the current page from
-- 
-- the navigation stack, equivalent to calling [method/@navigationView@/.pop].
-- 
-- == @AdwNavigationView@ as @GtkBuildable@
-- 
-- @AdwNavigationView@ allows to add pages as children, equivalent to using the
-- [method/@navigationView@/.add] method.
-- 
-- Example of an @AdwNavigationView@ UI definition:
-- 
-- 
-- === /xml code/
-- ><object class="AdwNavigationView">
-- >  <child>
-- >    <object class="AdwNavigationPage">
-- >      <property name="title" translatable="yes">Page 1</property>
-- >      <property name="child">
-- >        <object class="AdwToolbarView">
-- >          <child type="top">
-- >            <object class="AdwHeaderBar"/>
-- >          </child>
-- >          <property name="content">
-- >            <object class="GtkButton">
-- >              <property name="label" translatable="yes">Open Page 2</property>
-- >              <property name="halign">center</property>
-- >              <property name="valign">center</property>
-- >              <property name="action-name">navigation.push</property>
-- >              <property name="action-target">'page-2'</property>
-- >              <style>
-- >                <class name="pill"/>
-- >               </style>
-- >            </object>
-- >          </property>
-- >        </object>
-- >      </property>
-- >    </object>
-- >  </child>
-- >  <child>
-- >    <object class="AdwNavigationPage">
-- >      <property name="title" translatable="yes">Page 2</property>
-- >      <property name="tag">page-2</property>
-- >      <property name="child">
-- >        <object class="AdwToolbarView">
-- >          <child type="top">
-- >            <object class="AdwHeaderBar"/>
-- >          </child>
-- >          <property name="content">
-- >            <!-- ... -->
-- >          </property>
-- >        </object>
-- >      </property>
-- >    </object>
-- >  </child>
-- ></object>
-- 
-- 
-- \<picture>
--   \<source srcset=\"navigation-view-example-dark.png\" media=\"(prefers-color-scheme: dark)\">
--   \<img src=\"navigation-view-example.png\" alt=\"navigation-view-example\">
-- \<\/picture>
-- 
-- == CSS nodes
-- 
-- @AdwNavigationView@ has a single CSS node with the name @navigation-view@.
-- 
-- == Accessibility
-- 
-- @AdwNavigationView@ uses the @GTK_ACCESSIBLE_ROLE_GROUP@ role.
-- 
-- /Since: 1.4/

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

module GI.Adw.Objects.NavigationView
    ( 

-- * Exported types
    NavigationView(..)                      ,
    IsNavigationView                        ,
    toNavigationView                        ,


 -- * 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"), [add]("GI.Adw.Objects.NavigationView#g:method:add"), [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"), [announce]("GI.Gtk.Interfaces.Accessible#g:method:announce"), [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"), [findPage]("GI.Adw.Objects.NavigationView#g:method:findPage"), [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"), [pop]("GI.Adw.Objects.NavigationView#g:method:pop"), [popToPage]("GI.Adw.Objects.NavigationView#g:method:popToPage"), [popToTag]("GI.Adw.Objects.NavigationView#g:method:popToTag"), [push]("GI.Adw.Objects.NavigationView#g:method:push"), [pushByTag]("GI.Adw.Objects.NavigationView#g:method:pushByTag"), [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"), [remove]("GI.Adw.Objects.NavigationView#g:method:remove"), [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"), [replace]("GI.Adw.Objects.NavigationView#g:method:replace"), [replaceWithTags]("GI.Adw.Objects.NavigationView#g:method:replaceWithTags"), [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"), [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"), [getAnimateTransitions]("GI.Adw.Objects.NavigationView#g:method:getAnimateTransitions"), [getAtContext]("GI.Gtk.Interfaces.Accessible#g:method:getAtContext"), [getBaseline]("GI.Gtk.Objects.Widget#g:method:getBaseline"), [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"), [getCancelProgress]("GI.Adw.Interfaces.Swipeable#g:method:getCancelProgress"), [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"), [getDistance]("GI.Adw.Interfaces.Swipeable#g:method:getDistance"), [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"), [getNavigationStack]("GI.Adw.Objects.NavigationView#g:method:getNavigationStack"), [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"), [getPopOnEscape]("GI.Adw.Objects.NavigationView#g:method:getPopOnEscape"), [getPreferredSize]("GI.Gtk.Objects.Widget#g:method:getPreferredSize"), [getPrevSibling]("GI.Gtk.Objects.Widget#g:method:getPrevSibling"), [getPreviousPage]("GI.Adw.Objects.NavigationView#g:method:getPreviousPage"), [getPrimaryClipboard]("GI.Gtk.Objects.Widget#g:method:getPrimaryClipboard"), [getProgress]("GI.Adw.Interfaces.Swipeable#g:method:getProgress"), [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"), [getSnapPoints]("GI.Adw.Interfaces.Swipeable#g:method:getSnapPoints"), [getStateFlags]("GI.Gtk.Objects.Widget#g:method:getStateFlags"), [getStyleContext]("GI.Gtk.Objects.Widget#g:method:getStyleContext"), [getSwipeArea]("GI.Adw.Interfaces.Swipeable#g:method:getSwipeArea"), [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"), [getVisible]("GI.Gtk.Objects.Widget#g:method:getVisible"), [getVisiblePage]("GI.Adw.Objects.NavigationView#g:method:getVisiblePage"), [getWidth]("GI.Gtk.Objects.Widget#g:method:getWidth").
-- 
-- ==== Setters
-- [setAccessibleParent]("GI.Gtk.Interfaces.Accessible#g:method:setAccessibleParent"), [setAnimateTransitions]("GI.Adw.Objects.NavigationView#g:method:setAnimateTransitions"), [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"), [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"), [setPopOnEscape]("GI.Adw.Objects.NavigationView#g:method:setPopOnEscape"), [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"), [setVisible]("GI.Gtk.Objects.Widget#g:method:setVisible").

#if defined(ENABLE_OVERLOADING)
    ResolveNavigationViewMethod             ,
#endif

-- ** add #method:add#

#if defined(ENABLE_OVERLOADING)
    NavigationViewAddMethodInfo             ,
#endif
    navigationViewAdd                       ,


-- ** findPage #method:findPage#

#if defined(ENABLE_OVERLOADING)
    NavigationViewFindPageMethodInfo        ,
#endif
    navigationViewFindPage                  ,


-- ** getAnimateTransitions #method:getAnimateTransitions#

#if defined(ENABLE_OVERLOADING)
    NavigationViewGetAnimateTransitionsMethodInfo,
#endif
    navigationViewGetAnimateTransitions     ,


-- ** getNavigationStack #method:getNavigationStack#

#if defined(ENABLE_OVERLOADING)
    NavigationViewGetNavigationStackMethodInfo,
#endif
    navigationViewGetNavigationStack        ,


-- ** getPopOnEscape #method:getPopOnEscape#

#if defined(ENABLE_OVERLOADING)
    NavigationViewGetPopOnEscapeMethodInfo  ,
#endif
    navigationViewGetPopOnEscape            ,


-- ** getPreviousPage #method:getPreviousPage#

#if defined(ENABLE_OVERLOADING)
    NavigationViewGetPreviousPageMethodInfo ,
#endif
    navigationViewGetPreviousPage           ,


-- ** getVisiblePage #method:getVisiblePage#

#if defined(ENABLE_OVERLOADING)
    NavigationViewGetVisiblePageMethodInfo  ,
#endif
    navigationViewGetVisiblePage            ,


-- ** new #method:new#

    navigationViewNew                       ,


-- ** pop #method:pop#

#if defined(ENABLE_OVERLOADING)
    NavigationViewPopMethodInfo             ,
#endif
    navigationViewPop                       ,


-- ** popToPage #method:popToPage#

#if defined(ENABLE_OVERLOADING)
    NavigationViewPopToPageMethodInfo       ,
#endif
    navigationViewPopToPage                 ,


-- ** popToTag #method:popToTag#

#if defined(ENABLE_OVERLOADING)
    NavigationViewPopToTagMethodInfo        ,
#endif
    navigationViewPopToTag                  ,


-- ** push #method:push#

#if defined(ENABLE_OVERLOADING)
    NavigationViewPushMethodInfo            ,
#endif
    navigationViewPush                      ,


-- ** pushByTag #method:pushByTag#

#if defined(ENABLE_OVERLOADING)
    NavigationViewPushByTagMethodInfo       ,
#endif
    navigationViewPushByTag                 ,


-- ** remove #method:remove#

#if defined(ENABLE_OVERLOADING)
    NavigationViewRemoveMethodInfo          ,
#endif
    navigationViewRemove                    ,


-- ** replace #method:replace#

#if defined(ENABLE_OVERLOADING)
    NavigationViewReplaceMethodInfo         ,
#endif
    navigationViewReplace                   ,


-- ** replaceWithTags #method:replaceWithTags#

#if defined(ENABLE_OVERLOADING)
    NavigationViewReplaceWithTagsMethodInfo ,
#endif
    navigationViewReplaceWithTags           ,


-- ** setAnimateTransitions #method:setAnimateTransitions#

#if defined(ENABLE_OVERLOADING)
    NavigationViewSetAnimateTransitionsMethodInfo,
#endif
    navigationViewSetAnimateTransitions     ,


-- ** setPopOnEscape #method:setPopOnEscape#

#if defined(ENABLE_OVERLOADING)
    NavigationViewSetPopOnEscapeMethodInfo  ,
#endif
    navigationViewSetPopOnEscape            ,




 -- * Properties


-- ** animateTransitions #attr:animateTransitions#
-- | Whether to animate page transitions.
-- 
-- Gesture-based transitions are always animated.
-- 
-- /Since: 1.4/

#if defined(ENABLE_OVERLOADING)
    NavigationViewAnimateTransitionsPropertyInfo,
#endif
    constructNavigationViewAnimateTransitions,
    getNavigationViewAnimateTransitions     ,
#if defined(ENABLE_OVERLOADING)
    navigationViewAnimateTransitions        ,
#endif
    setNavigationViewAnimateTransitions     ,


-- ** navigationStack #attr:navigationStack#
-- | A list model that contains the pages in navigation stack.
-- 
-- The pages are sorted from root page to visible page.
-- 
-- This can be used to keep an up-to-date view.
-- 
-- /Since: 1.4/

#if defined(ENABLE_OVERLOADING)
    NavigationViewNavigationStackPropertyInfo,
#endif
    getNavigationViewNavigationStack        ,
#if defined(ENABLE_OVERLOADING)
    navigationViewNavigationStack           ,
#endif


-- ** popOnEscape #attr:popOnEscape#
-- | Whether pressing Escape pops the current page.
-- 
-- Applications using @AdwNavigationView@ to implement a browser may want to
-- disable it.
-- 
-- /Since: 1.4/

#if defined(ENABLE_OVERLOADING)
    NavigationViewPopOnEscapePropertyInfo   ,
#endif
    constructNavigationViewPopOnEscape      ,
    getNavigationViewPopOnEscape            ,
#if defined(ENABLE_OVERLOADING)
    navigationViewPopOnEscape               ,
#endif
    setNavigationViewPopOnEscape            ,


-- ** visiblePage #attr:visiblePage#
-- | The currently visible page.
-- 
-- /Since: 1.4/

#if defined(ENABLE_OVERLOADING)
    NavigationViewVisiblePagePropertyInfo   ,
#endif
    getNavigationViewVisiblePage            ,
#if defined(ENABLE_OVERLOADING)
    navigationViewVisiblePage               ,
#endif




 -- * Signals


-- ** getNextPage #signal:getNextPage#

    NavigationViewGetNextPageCallback       ,
#if defined(ENABLE_OVERLOADING)
    NavigationViewGetNextPageSignalInfo     ,
#endif
    afterNavigationViewGetNextPage          ,
    onNavigationViewGetNextPage             ,


-- ** popped #signal:popped#

    NavigationViewPoppedCallback            ,
#if defined(ENABLE_OVERLOADING)
    NavigationViewPoppedSignalInfo          ,
#endif
    afterNavigationViewPopped               ,
    onNavigationViewPopped                  ,


-- ** pushed #signal:pushed#

    NavigationViewPushedCallback            ,
#if defined(ENABLE_OVERLOADING)
    NavigationViewPushedSignalInfo          ,
#endif
    afterNavigationViewPushed               ,
    onNavigationViewPushed                  ,


-- ** replaced #signal:replaced#

    NavigationViewReplacedCallback          ,
#if defined(ENABLE_OVERLOADING)
    NavigationViewReplacedSignalInfo        ,
#endif
    afterNavigationViewReplaced             ,
    onNavigationViewReplaced                ,




    ) 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 qualified Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT

-- Workaround for https://gitlab.haskell.org/ghc/ghc/-/issues/23392
#if MIN_VERSION_base(4,18,0)
import {-# SOURCE #-} qualified GI.Adw.Enums as Adw.Enums
import {-# SOURCE #-} qualified GI.Adw.Interfaces.Swipeable as Adw.Swipeable
import {-# SOURCE #-} qualified GI.Adw.Objects.NavigationPage as Adw.NavigationPage
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gdk.Structs.Rectangle as Gdk.Rectangle
import qualified GI.Gio.Interfaces.ListModel as Gio.ListModel
import qualified GI.Gtk.Interfaces.Accessible as Gtk.Accessible
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

#else
import {-# SOURCE #-} qualified GI.Adw.Interfaces.Swipeable as Adw.Swipeable
import {-# SOURCE #-} qualified GI.Adw.Objects.NavigationPage as Adw.NavigationPage
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gio.Interfaces.ListModel as Gio.ListModel
import qualified GI.Gtk.Interfaces.Accessible as Gtk.Accessible
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

#endif

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

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

foreign import ccall "adw_navigation_view_get_type"
    c_adw_navigation_view_get_type :: IO B.Types.GType

instance B.Types.TypedObject NavigationView where
    glibType :: IO GType
glibType = IO GType
c_adw_navigation_view_get_type

instance B.Types.GObject NavigationView

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

instance O.HasParentTypes NavigationView
type instance O.ParentTypes NavigationView = '[Gtk.Widget.Widget, GObject.Object.Object, Adw.Swipeable.Swipeable, Gtk.Accessible.Accessible, Gtk.Buildable.Buildable, Gtk.ConstraintTarget.ConstraintTarget]

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

-- | Convert 'NavigationView' 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 NavigationView) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_adw_navigation_view_get_type
    gvalueSet_ :: Ptr GValue -> Maybe NavigationView -> IO ()
gvalueSet_ Ptr GValue
gv Maybe NavigationView
P.Nothing = Ptr GValue -> Ptr NavigationView -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr NavigationView
forall a. Ptr a
FP.nullPtr :: FP.Ptr NavigationView)
    gvalueSet_ Ptr GValue
gv (P.Just NavigationView
obj) = NavigationView -> (Ptr NavigationView -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr NavigationView
obj (Ptr GValue -> Ptr NavigationView -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe NavigationView)
gvalueGet_ Ptr GValue
gv = do
        Ptr NavigationView
ptr <- Ptr GValue -> IO (Ptr NavigationView)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr NavigationView)
        if Ptr NavigationView
ptr Ptr NavigationView -> Ptr NavigationView -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr NavigationView
forall a. Ptr a
FP.nullPtr
        then NavigationView -> Maybe NavigationView
forall a. a -> Maybe a
P.Just (NavigationView -> Maybe NavigationView)
-> IO NavigationView -> IO (Maybe NavigationView)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr NavigationView -> NavigationView)
-> Ptr NavigationView -> IO NavigationView
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr NavigationView -> NavigationView
NavigationView Ptr NavigationView
ptr
        else Maybe NavigationView -> IO (Maybe NavigationView)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe NavigationView
forall a. Maybe a
P.Nothing
        
    

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

instance (info ~ ResolveNavigationViewMethod t NavigationView, O.OverloadedMethod info NavigationView p) => OL.IsLabel t (NavigationView -> 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 ~ ResolveNavigationViewMethod t NavigationView, O.OverloadedMethod info NavigationView p, R.HasField t NavigationView p) => R.HasField t NavigationView p where
    getField = O.overloadedMethod @info

#endif

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

#endif

-- signal NavigationView::get-next-page
-- | Emitted when a push shortcut or a gesture is triggered.
-- 
-- To support the push shortcuts and gestures, the application is expected to
-- return the page to push in the handler.
-- 
-- This signal can be emitted multiple times for the gestures, for example
-- when the gesture is cancelled by the user. As such, the application must
-- not make any irreversible changes in the handler, such as removing the page
-- from a forward stack.
-- 
-- Instead, it should be done in the [signal/@navigationView@/[pushed](#g:signal:pushed)] handler.
-- 
-- /Since: 1.4/
type NavigationViewGetNextPageCallback =
    IO (Maybe Adw.NavigationPage.NavigationPage)
    -- ^ __Returns:__ the page to push

type C_NavigationViewGetNextPageCallback =
    Ptr NavigationView ->                   -- object
    Ptr () ->                               -- user_data
    IO (Ptr Adw.NavigationPage.NavigationPage)

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

wrap_NavigationViewGetNextPageCallback :: 
    GObject a => (a -> NavigationViewGetNextPageCallback) ->
    C_NavigationViewGetNextPageCallback
wrap_NavigationViewGetNextPageCallback :: forall a.
GObject a =>
(a -> NavigationViewGetNextPageCallback)
-> C_NavigationViewGetNextPageCallback
wrap_NavigationViewGetNextPageCallback a -> NavigationViewGetNextPageCallback
gi'cb Ptr NavigationView
gi'selfPtr Ptr ()
_ = do
    Maybe NavigationPage
result <- Ptr NavigationView
-> (NavigationView -> NavigationViewGetNextPageCallback)
-> NavigationViewGetNextPageCallback
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr NavigationView
gi'selfPtr ((NavigationView -> NavigationViewGetNextPageCallback)
 -> NavigationViewGetNextPageCallback)
-> (NavigationView -> NavigationViewGetNextPageCallback)
-> NavigationViewGetNextPageCallback
forall a b. (a -> b) -> a -> b
$ \NavigationView
gi'self -> a -> NavigationViewGetNextPageCallback
gi'cb (NavigationView -> a
forall a b. Coercible a b => a -> b
Coerce.coerce NavigationView
gi'self) 
    Ptr NavigationPage
-> Maybe NavigationPage
-> (NavigationPage -> IO (Ptr NavigationPage))
-> IO (Ptr NavigationPage)
forall (m :: * -> *) b a.
Monad m =>
b -> Maybe a -> (a -> m b) -> m b
maybeM Ptr NavigationPage
forall a. Ptr a
FP.nullPtr Maybe NavigationPage
result ((NavigationPage -> IO (Ptr NavigationPage))
 -> IO (Ptr NavigationPage))
-> (NavigationPage -> IO (Ptr NavigationPage))
-> IO (Ptr NavigationPage)
forall a b. (a -> b) -> a -> b
$ \NavigationPage
result' -> do
        Ptr NavigationPage
result'' <- NavigationPage -> IO (Ptr NavigationPage)
forall a b. (HasCallStack, GObject a) => a -> IO (Ptr b)
B.ManagedPtr.disownObject NavigationPage
result'
        Ptr NavigationPage -> IO (Ptr NavigationPage)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr NavigationPage
result''


-- | Connect a signal handler for the [getNextPage](#signal:getNextPage) 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' navigationView #getNextPage callback
-- @
-- 
-- 
onNavigationViewGetNextPage :: (IsNavigationView a, MonadIO m) => a -> ((?self :: a) => NavigationViewGetNextPageCallback) -> m SignalHandlerId
onNavigationViewGetNextPage :: forall a (m :: * -> *).
(IsNavigationView a, MonadIO m) =>
a
-> ((?self::a) => NavigationViewGetNextPageCallback)
-> m SignalHandlerId
onNavigationViewGetNextPage a
obj (?self::a) => NavigationViewGetNextPageCallback
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 -> NavigationViewGetNextPageCallback
wrapped a
self = let ?self = a
?self::a
self in NavigationViewGetNextPageCallback
(?self::a) => NavigationViewGetNextPageCallback
cb
    let wrapped' :: C_NavigationViewGetNextPageCallback
wrapped' = (a -> NavigationViewGetNextPageCallback)
-> C_NavigationViewGetNextPageCallback
forall a.
GObject a =>
(a -> NavigationViewGetNextPageCallback)
-> C_NavigationViewGetNextPageCallback
wrap_NavigationViewGetNextPageCallback a -> NavigationViewGetNextPageCallback
wrapped
    FunPtr C_NavigationViewGetNextPageCallback
wrapped'' <- C_NavigationViewGetNextPageCallback
-> IO (FunPtr C_NavigationViewGetNextPageCallback)
mk_NavigationViewGetNextPageCallback C_NavigationViewGetNextPageCallback
wrapped'
    a
-> Text
-> FunPtr C_NavigationViewGetNextPageCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"get-next-page" FunPtr C_NavigationViewGetNextPageCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [getNextPage](#signal:getNextPage) 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' navigationView #getNextPage 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.
-- 
afterNavigationViewGetNextPage :: (IsNavigationView a, MonadIO m) => a -> ((?self :: a) => NavigationViewGetNextPageCallback) -> m SignalHandlerId
afterNavigationViewGetNextPage :: forall a (m :: * -> *).
(IsNavigationView a, MonadIO m) =>
a
-> ((?self::a) => NavigationViewGetNextPageCallback)
-> m SignalHandlerId
afterNavigationViewGetNextPage a
obj (?self::a) => NavigationViewGetNextPageCallback
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 -> NavigationViewGetNextPageCallback
wrapped a
self = let ?self = a
?self::a
self in NavigationViewGetNextPageCallback
(?self::a) => NavigationViewGetNextPageCallback
cb
    let wrapped' :: C_NavigationViewGetNextPageCallback
wrapped' = (a -> NavigationViewGetNextPageCallback)
-> C_NavigationViewGetNextPageCallback
forall a.
GObject a =>
(a -> NavigationViewGetNextPageCallback)
-> C_NavigationViewGetNextPageCallback
wrap_NavigationViewGetNextPageCallback a -> NavigationViewGetNextPageCallback
wrapped
    FunPtr C_NavigationViewGetNextPageCallback
wrapped'' <- C_NavigationViewGetNextPageCallback
-> IO (FunPtr C_NavigationViewGetNextPageCallback)
mk_NavigationViewGetNextPageCallback C_NavigationViewGetNextPageCallback
wrapped'
    a
-> Text
-> FunPtr C_NavigationViewGetNextPageCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"get-next-page" FunPtr C_NavigationViewGetNextPageCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data NavigationViewGetNextPageSignalInfo
instance SignalInfo NavigationViewGetNextPageSignalInfo where
    type HaskellCallbackType NavigationViewGetNextPageSignalInfo = NavigationViewGetNextPageCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_NavigationViewGetNextPageCallback cb
        cb'' <- mk_NavigationViewGetNextPageCallback cb'
        connectSignalFunPtr obj "get-next-page" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.NavigationView::get-next-page"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.7/docs/GI-Adw-Objects-NavigationView.html#g:signal:getNextPage"})

#endif

-- signal NavigationView::popped
-- | Emitted after /@page@/ has been popped from the navigation stack.
-- 
-- See [method/@navigationView@/.pop].
-- 
-- When using [method/@navigationView@/.pop_to_page] or
-- [method/@navigationView@/.pop_to_tag], this signal is emitted for each of the
-- popped pages.
-- 
-- /Since: 1.4/
type NavigationViewPoppedCallback =
    Adw.NavigationPage.NavigationPage
    -- ^ /@page@/: the popped page
    -> IO ()

type C_NavigationViewPoppedCallback =
    Ptr NavigationView ->                   -- object
    Ptr Adw.NavigationPage.NavigationPage ->
    Ptr () ->                               -- user_data
    IO ()

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

wrap_NavigationViewPoppedCallback :: 
    GObject a => (a -> NavigationViewPoppedCallback) ->
    C_NavigationViewPoppedCallback
wrap_NavigationViewPoppedCallback :: forall a.
GObject a =>
(a -> NavigationViewPoppedCallback)
-> C_NavigationViewPoppedCallback
wrap_NavigationViewPoppedCallback a -> NavigationViewPoppedCallback
gi'cb Ptr NavigationView
gi'selfPtr Ptr NavigationPage
page Ptr ()
_ = do
    NavigationPage
page' <- ((ManagedPtr NavigationPage -> NavigationPage)
-> Ptr NavigationPage -> IO NavigationPage
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr NavigationPage -> NavigationPage
Adw.NavigationPage.NavigationPage) Ptr NavigationPage
page
    Ptr NavigationView -> (NavigationView -> IO ()) -> IO ()
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr NavigationView
gi'selfPtr ((NavigationView -> IO ()) -> IO ())
-> (NavigationView -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \NavigationView
gi'self -> a -> NavigationViewPoppedCallback
gi'cb (NavigationView -> a
forall a b. Coercible a b => a -> b
Coerce.coerce NavigationView
gi'self)  NavigationPage
page'


-- | Connect a signal handler for the [popped](#signal:popped) 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' navigationView #popped callback
-- @
-- 
-- 
onNavigationViewPopped :: (IsNavigationView a, MonadIO m) => a -> ((?self :: a) => NavigationViewPoppedCallback) -> m SignalHandlerId
onNavigationViewPopped :: forall a (m :: * -> *).
(IsNavigationView a, MonadIO m) =>
a
-> ((?self::a) => NavigationViewPoppedCallback)
-> m SignalHandlerId
onNavigationViewPopped a
obj (?self::a) => NavigationViewPoppedCallback
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 -> NavigationViewPoppedCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => NavigationViewPoppedCallback
NavigationViewPoppedCallback
cb
    let wrapped' :: C_NavigationViewPoppedCallback
wrapped' = (a -> NavigationViewPoppedCallback)
-> C_NavigationViewPoppedCallback
forall a.
GObject a =>
(a -> NavigationViewPoppedCallback)
-> C_NavigationViewPoppedCallback
wrap_NavigationViewPoppedCallback a -> NavigationViewPoppedCallback
wrapped
    FunPtr C_NavigationViewPoppedCallback
wrapped'' <- C_NavigationViewPoppedCallback
-> IO (FunPtr C_NavigationViewPoppedCallback)
mk_NavigationViewPoppedCallback C_NavigationViewPoppedCallback
wrapped'
    a
-> Text
-> FunPtr C_NavigationViewPoppedCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"popped" FunPtr C_NavigationViewPoppedCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [popped](#signal:popped) 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' navigationView #popped 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.
-- 
afterNavigationViewPopped :: (IsNavigationView a, MonadIO m) => a -> ((?self :: a) => NavigationViewPoppedCallback) -> m SignalHandlerId
afterNavigationViewPopped :: forall a (m :: * -> *).
(IsNavigationView a, MonadIO m) =>
a
-> ((?self::a) => NavigationViewPoppedCallback)
-> m SignalHandlerId
afterNavigationViewPopped a
obj (?self::a) => NavigationViewPoppedCallback
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 -> NavigationViewPoppedCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => NavigationViewPoppedCallback
NavigationViewPoppedCallback
cb
    let wrapped' :: C_NavigationViewPoppedCallback
wrapped' = (a -> NavigationViewPoppedCallback)
-> C_NavigationViewPoppedCallback
forall a.
GObject a =>
(a -> NavigationViewPoppedCallback)
-> C_NavigationViewPoppedCallback
wrap_NavigationViewPoppedCallback a -> NavigationViewPoppedCallback
wrapped
    FunPtr C_NavigationViewPoppedCallback
wrapped'' <- C_NavigationViewPoppedCallback
-> IO (FunPtr C_NavigationViewPoppedCallback)
mk_NavigationViewPoppedCallback C_NavigationViewPoppedCallback
wrapped'
    a
-> Text
-> FunPtr C_NavigationViewPoppedCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"popped" FunPtr C_NavigationViewPoppedCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data NavigationViewPoppedSignalInfo
instance SignalInfo NavigationViewPoppedSignalInfo where
    type HaskellCallbackType NavigationViewPoppedSignalInfo = NavigationViewPoppedCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_NavigationViewPoppedCallback cb
        cb'' <- mk_NavigationViewPoppedCallback cb'
        connectSignalFunPtr obj "popped" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.NavigationView::popped"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.7/docs/GI-Adw-Objects-NavigationView.html#g:signal:popped"})

#endif

-- signal NavigationView::pushed
-- | Emitted after a page has been pushed to the navigation stack.
-- 
-- See [method/@navigationView@/.push].
-- 
-- /Since: 1.4/
type NavigationViewPushedCallback =
    IO ()

type C_NavigationViewPushedCallback =
    Ptr NavigationView ->                   -- object
    Ptr () ->                               -- user_data
    IO ()

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

wrap_NavigationViewPushedCallback :: 
    GObject a => (a -> NavigationViewPushedCallback) ->
    C_NavigationViewPushedCallback
wrap_NavigationViewPushedCallback :: forall a.
GObject a =>
(a -> IO ()) -> C_NavigationViewPushedCallback
wrap_NavigationViewPushedCallback a -> IO ()
gi'cb Ptr NavigationView
gi'selfPtr Ptr ()
_ = do
    Ptr NavigationView -> (NavigationView -> IO ()) -> IO ()
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr NavigationView
gi'selfPtr ((NavigationView -> IO ()) -> IO ())
-> (NavigationView -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \NavigationView
gi'self -> a -> IO ()
gi'cb (NavigationView -> a
forall a b. Coercible a b => a -> b
Coerce.coerce NavigationView
gi'self) 


-- | Connect a signal handler for the [pushed](#signal:pushed) 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' navigationView #pushed callback
-- @
-- 
-- 
onNavigationViewPushed :: (IsNavigationView a, MonadIO m) => a -> ((?self :: a) => NavigationViewPushedCallback) -> m SignalHandlerId
onNavigationViewPushed :: forall a (m :: * -> *).
(IsNavigationView a, MonadIO m) =>
a -> ((?self::a) => IO ()) -> m SignalHandlerId
onNavigationViewPushed 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_NavigationViewPushedCallback
wrapped' = (a -> IO ()) -> C_NavigationViewPushedCallback
forall a.
GObject a =>
(a -> IO ()) -> C_NavigationViewPushedCallback
wrap_NavigationViewPushedCallback a -> IO ()
wrapped
    FunPtr C_NavigationViewPushedCallback
wrapped'' <- C_NavigationViewPushedCallback
-> IO (FunPtr C_NavigationViewPushedCallback)
mk_NavigationViewPushedCallback C_NavigationViewPushedCallback
wrapped'
    a
-> Text
-> FunPtr C_NavigationViewPushedCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"pushed" FunPtr C_NavigationViewPushedCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [pushed](#signal:pushed) 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' navigationView #pushed 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.
-- 
afterNavigationViewPushed :: (IsNavigationView a, MonadIO m) => a -> ((?self :: a) => NavigationViewPushedCallback) -> m SignalHandlerId
afterNavigationViewPushed :: forall a (m :: * -> *).
(IsNavigationView a, MonadIO m) =>
a -> ((?self::a) => IO ()) -> m SignalHandlerId
afterNavigationViewPushed 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_NavigationViewPushedCallback
wrapped' = (a -> IO ()) -> C_NavigationViewPushedCallback
forall a.
GObject a =>
(a -> IO ()) -> C_NavigationViewPushedCallback
wrap_NavigationViewPushedCallback a -> IO ()
wrapped
    FunPtr C_NavigationViewPushedCallback
wrapped'' <- C_NavigationViewPushedCallback
-> IO (FunPtr C_NavigationViewPushedCallback)
mk_NavigationViewPushedCallback C_NavigationViewPushedCallback
wrapped'
    a
-> Text
-> FunPtr C_NavigationViewPushedCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"pushed" FunPtr C_NavigationViewPushedCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data NavigationViewPushedSignalInfo
instance SignalInfo NavigationViewPushedSignalInfo where
    type HaskellCallbackType NavigationViewPushedSignalInfo = NavigationViewPushedCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_NavigationViewPushedCallback cb
        cb'' <- mk_NavigationViewPushedCallback cb'
        connectSignalFunPtr obj "pushed" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.NavigationView::pushed"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.7/docs/GI-Adw-Objects-NavigationView.html#g:signal:pushed"})

#endif

-- signal NavigationView::replaced
-- | Emitted after the navigation stack has been replaced.
-- 
-- See [method/@navigationView@/.replace].
-- 
-- /Since: 1.4/
type NavigationViewReplacedCallback =
    IO ()

type C_NavigationViewReplacedCallback =
    Ptr NavigationView ->                   -- object
    Ptr () ->                               -- user_data
    IO ()

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

wrap_NavigationViewReplacedCallback :: 
    GObject a => (a -> NavigationViewReplacedCallback) ->
    C_NavigationViewReplacedCallback
wrap_NavigationViewReplacedCallback :: forall a.
GObject a =>
(a -> IO ()) -> C_NavigationViewPushedCallback
wrap_NavigationViewReplacedCallback a -> IO ()
gi'cb Ptr NavigationView
gi'selfPtr Ptr ()
_ = do
    Ptr NavigationView -> (NavigationView -> IO ()) -> IO ()
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr NavigationView
gi'selfPtr ((NavigationView -> IO ()) -> IO ())
-> (NavigationView -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \NavigationView
gi'self -> a -> IO ()
gi'cb (NavigationView -> a
forall a b. Coercible a b => a -> b
Coerce.coerce NavigationView
gi'self) 


-- | Connect a signal handler for the [replaced](#signal:replaced) 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' navigationView #replaced callback
-- @
-- 
-- 
onNavigationViewReplaced :: (IsNavigationView a, MonadIO m) => a -> ((?self :: a) => NavigationViewReplacedCallback) -> m SignalHandlerId
onNavigationViewReplaced :: forall a (m :: * -> *).
(IsNavigationView a, MonadIO m) =>
a -> ((?self::a) => IO ()) -> m SignalHandlerId
onNavigationViewReplaced 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_NavigationViewPushedCallback
wrapped' = (a -> IO ()) -> C_NavigationViewPushedCallback
forall a.
GObject a =>
(a -> IO ()) -> C_NavigationViewPushedCallback
wrap_NavigationViewReplacedCallback a -> IO ()
wrapped
    FunPtr C_NavigationViewPushedCallback
wrapped'' <- C_NavigationViewPushedCallback
-> IO (FunPtr C_NavigationViewPushedCallback)
mk_NavigationViewReplacedCallback C_NavigationViewPushedCallback
wrapped'
    a
-> Text
-> FunPtr C_NavigationViewPushedCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"replaced" FunPtr C_NavigationViewPushedCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [replaced](#signal:replaced) 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' navigationView #replaced 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.
-- 
afterNavigationViewReplaced :: (IsNavigationView a, MonadIO m) => a -> ((?self :: a) => NavigationViewReplacedCallback) -> m SignalHandlerId
afterNavigationViewReplaced :: forall a (m :: * -> *).
(IsNavigationView a, MonadIO m) =>
a -> ((?self::a) => IO ()) -> m SignalHandlerId
afterNavigationViewReplaced 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_NavigationViewPushedCallback
wrapped' = (a -> IO ()) -> C_NavigationViewPushedCallback
forall a.
GObject a =>
(a -> IO ()) -> C_NavigationViewPushedCallback
wrap_NavigationViewReplacedCallback a -> IO ()
wrapped
    FunPtr C_NavigationViewPushedCallback
wrapped'' <- C_NavigationViewPushedCallback
-> IO (FunPtr C_NavigationViewPushedCallback)
mk_NavigationViewReplacedCallback C_NavigationViewPushedCallback
wrapped'
    a
-> Text
-> FunPtr C_NavigationViewPushedCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"replaced" FunPtr C_NavigationViewPushedCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data NavigationViewReplacedSignalInfo
instance SignalInfo NavigationViewReplacedSignalInfo where
    type HaskellCallbackType NavigationViewReplacedSignalInfo = NavigationViewReplacedCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_NavigationViewReplacedCallback cb
        cb'' <- mk_NavigationViewReplacedCallback cb'
        connectSignalFunPtr obj "replaced" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.NavigationView::replaced"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.7/docs/GI-Adw-Objects-NavigationView.html#g:signal:replaced"})

#endif

-- VVV Prop "animate-transitions"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

-- | Get the value of the “@animate-transitions@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' navigationView #animateTransitions
-- @
getNavigationViewAnimateTransitions :: (MonadIO m, IsNavigationView o) => o -> m Bool
getNavigationViewAnimateTransitions :: forall (m :: * -> *) o.
(MonadIO m, IsNavigationView o) =>
o -> m Bool
getNavigationViewAnimateTransitions o
obj = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Bool
forall a. GObject a => a -> String -> IO Bool
B.Properties.getObjectPropertyBool o
obj String
"animate-transitions"

-- | Set the value of the “@animate-transitions@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' navigationView [ #animateTransitions 'Data.GI.Base.Attributes.:=' value ]
-- @
setNavigationViewAnimateTransitions :: (MonadIO m, IsNavigationView o) => o -> Bool -> m ()
setNavigationViewAnimateTransitions :: forall (m :: * -> *) o.
(MonadIO m, IsNavigationView o) =>
o -> Bool -> m ()
setNavigationViewAnimateTransitions o
obj Bool
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 -> Bool -> IO ()
forall a. GObject a => a -> String -> Bool -> IO ()
B.Properties.setObjectPropertyBool o
obj String
"animate-transitions" Bool
val

-- | Construct a `GValueConstruct` with valid value for the “@animate-transitions@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructNavigationViewAnimateTransitions :: (IsNavigationView o, MIO.MonadIO m) => Bool -> m (GValueConstruct o)
constructNavigationViewAnimateTransitions :: forall o (m :: * -> *).
(IsNavigationView o, MonadIO m) =>
Bool -> m (GValueConstruct o)
constructNavigationViewAnimateTransitions Bool
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 -> Bool -> IO (GValueConstruct o)
forall o. String -> Bool -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBool String
"animate-transitions" Bool
val

#if defined(ENABLE_OVERLOADING)
data NavigationViewAnimateTransitionsPropertyInfo
instance AttrInfo NavigationViewAnimateTransitionsPropertyInfo where
    type AttrAllowedOps NavigationViewAnimateTransitionsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint NavigationViewAnimateTransitionsPropertyInfo = IsNavigationView
    type AttrSetTypeConstraint NavigationViewAnimateTransitionsPropertyInfo = (~) Bool
    type AttrTransferTypeConstraint NavigationViewAnimateTransitionsPropertyInfo = (~) Bool
    type AttrTransferType NavigationViewAnimateTransitionsPropertyInfo = Bool
    type AttrGetType NavigationViewAnimateTransitionsPropertyInfo = Bool
    type AttrLabel NavigationViewAnimateTransitionsPropertyInfo = "animate-transitions"
    type AttrOrigin NavigationViewAnimateTransitionsPropertyInfo = NavigationView
    attrGet = getNavigationViewAnimateTransitions
    attrSet = setNavigationViewAnimateTransitions
    attrTransfer _ v = do
        return v
    attrConstruct = constructNavigationViewAnimateTransitions
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.NavigationView.animateTransitions"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.7/docs/GI-Adw-Objects-NavigationView.html#g:attr:animateTransitions"
        })
#endif

-- VVV Prop "navigation-stack"
   -- Type: TInterface (Name {namespace = "Gio", name = "ListModel"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

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

#if defined(ENABLE_OVERLOADING)
data NavigationViewNavigationStackPropertyInfo
instance AttrInfo NavigationViewNavigationStackPropertyInfo where
    type AttrAllowedOps NavigationViewNavigationStackPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint NavigationViewNavigationStackPropertyInfo = IsNavigationView
    type AttrSetTypeConstraint NavigationViewNavigationStackPropertyInfo = (~) ()
    type AttrTransferTypeConstraint NavigationViewNavigationStackPropertyInfo = (~) ()
    type AttrTransferType NavigationViewNavigationStackPropertyInfo = ()
    type AttrGetType NavigationViewNavigationStackPropertyInfo = (Maybe Gio.ListModel.ListModel)
    type AttrLabel NavigationViewNavigationStackPropertyInfo = "navigation-stack"
    type AttrOrigin NavigationViewNavigationStackPropertyInfo = NavigationView
    attrGet = getNavigationViewNavigationStack
    attrSet = undefined
    attrTransfer _ = undefined
    attrConstruct = undefined
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.NavigationView.navigationStack"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.7/docs/GI-Adw-Objects-NavigationView.html#g:attr:navigationStack"
        })
#endif

-- VVV Prop "pop-on-escape"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

-- | Get the value of the “@pop-on-escape@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' navigationView #popOnEscape
-- @
getNavigationViewPopOnEscape :: (MonadIO m, IsNavigationView o) => o -> m Bool
getNavigationViewPopOnEscape :: forall (m :: * -> *) o.
(MonadIO m, IsNavigationView o) =>
o -> m Bool
getNavigationViewPopOnEscape o
obj = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Bool
forall a. GObject a => a -> String -> IO Bool
B.Properties.getObjectPropertyBool o
obj String
"pop-on-escape"

-- | Set the value of the “@pop-on-escape@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' navigationView [ #popOnEscape 'Data.GI.Base.Attributes.:=' value ]
-- @
setNavigationViewPopOnEscape :: (MonadIO m, IsNavigationView o) => o -> Bool -> m ()
setNavigationViewPopOnEscape :: forall (m :: * -> *) o.
(MonadIO m, IsNavigationView o) =>
o -> Bool -> m ()
setNavigationViewPopOnEscape o
obj Bool
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 -> Bool -> IO ()
forall a. GObject a => a -> String -> Bool -> IO ()
B.Properties.setObjectPropertyBool o
obj String
"pop-on-escape" Bool
val

-- | Construct a `GValueConstruct` with valid value for the “@pop-on-escape@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructNavigationViewPopOnEscape :: (IsNavigationView o, MIO.MonadIO m) => Bool -> m (GValueConstruct o)
constructNavigationViewPopOnEscape :: forall o (m :: * -> *).
(IsNavigationView o, MonadIO m) =>
Bool -> m (GValueConstruct o)
constructNavigationViewPopOnEscape Bool
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 -> Bool -> IO (GValueConstruct o)
forall o. String -> Bool -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBool String
"pop-on-escape" Bool
val

#if defined(ENABLE_OVERLOADING)
data NavigationViewPopOnEscapePropertyInfo
instance AttrInfo NavigationViewPopOnEscapePropertyInfo where
    type AttrAllowedOps NavigationViewPopOnEscapePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint NavigationViewPopOnEscapePropertyInfo = IsNavigationView
    type AttrSetTypeConstraint NavigationViewPopOnEscapePropertyInfo = (~) Bool
    type AttrTransferTypeConstraint NavigationViewPopOnEscapePropertyInfo = (~) Bool
    type AttrTransferType NavigationViewPopOnEscapePropertyInfo = Bool
    type AttrGetType NavigationViewPopOnEscapePropertyInfo = Bool
    type AttrLabel NavigationViewPopOnEscapePropertyInfo = "pop-on-escape"
    type AttrOrigin NavigationViewPopOnEscapePropertyInfo = NavigationView
    attrGet = getNavigationViewPopOnEscape
    attrSet = setNavigationViewPopOnEscape
    attrTransfer _ v = do
        return v
    attrConstruct = constructNavigationViewPopOnEscape
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.NavigationView.popOnEscape"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.7/docs/GI-Adw-Objects-NavigationView.html#g:attr:popOnEscape"
        })
#endif

-- VVV Prop "visible-page"
   -- Type: TInterface (Name {namespace = "Adw", name = "NavigationPage"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Just True,Nothing)

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

#if defined(ENABLE_OVERLOADING)
data NavigationViewVisiblePagePropertyInfo
instance AttrInfo NavigationViewVisiblePagePropertyInfo where
    type AttrAllowedOps NavigationViewVisiblePagePropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint NavigationViewVisiblePagePropertyInfo = IsNavigationView
    type AttrSetTypeConstraint NavigationViewVisiblePagePropertyInfo = (~) ()
    type AttrTransferTypeConstraint NavigationViewVisiblePagePropertyInfo = (~) ()
    type AttrTransferType NavigationViewVisiblePagePropertyInfo = ()
    type AttrGetType NavigationViewVisiblePagePropertyInfo = (Maybe Adw.NavigationPage.NavigationPage)
    type AttrLabel NavigationViewVisiblePagePropertyInfo = "visible-page"
    type AttrOrigin NavigationViewVisiblePagePropertyInfo = NavigationView
    attrGet = getNavigationViewVisiblePage
    attrSet = undefined
    attrTransfer _ = undefined
    attrConstruct = undefined
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Adw.Objects.NavigationView.visiblePage"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-adwaita-1.0.7/docs/GI-Adw-Objects-NavigationView.html#g:attr:visiblePage"
        })
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList NavigationView
type instance O.AttributeList NavigationView = NavigationViewAttributeList
type NavigationViewAttributeList = ('[ '("accessibleRole", Gtk.Accessible.AccessibleAccessibleRolePropertyInfo), '("animateTransitions", NavigationViewAnimateTransitionsPropertyInfo), '("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), '("navigationStack", NavigationViewNavigationStackPropertyInfo), '("opacity", Gtk.Widget.WidgetOpacityPropertyInfo), '("overflow", Gtk.Widget.WidgetOverflowPropertyInfo), '("parent", Gtk.Widget.WidgetParentPropertyInfo), '("popOnEscape", NavigationViewPopOnEscapePropertyInfo), '("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), '("visible", Gtk.Widget.WidgetVisiblePropertyInfo), '("visiblePage", NavigationViewVisiblePagePropertyInfo), '("widthRequest", Gtk.Widget.WidgetWidthRequestPropertyInfo)] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
navigationViewAnimateTransitions :: AttrLabelProxy "animateTransitions"
navigationViewAnimateTransitions = AttrLabelProxy

navigationViewNavigationStack :: AttrLabelProxy "navigationStack"
navigationViewNavigationStack = AttrLabelProxy

navigationViewPopOnEscape :: AttrLabelProxy "popOnEscape"
navigationViewPopOnEscape = AttrLabelProxy

navigationViewVisiblePage :: AttrLabelProxy "visiblePage"
navigationViewVisiblePage = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList NavigationView = NavigationViewSignalList
type NavigationViewSignalList = ('[ '("destroy", Gtk.Widget.WidgetDestroySignalInfo), '("directionChanged", Gtk.Widget.WidgetDirectionChangedSignalInfo), '("getNextPage", NavigationViewGetNextPageSignalInfo), '("hide", Gtk.Widget.WidgetHideSignalInfo), '("keynavFailed", Gtk.Widget.WidgetKeynavFailedSignalInfo), '("map", Gtk.Widget.WidgetMapSignalInfo), '("mnemonicActivate", Gtk.Widget.WidgetMnemonicActivateSignalInfo), '("moveFocus", Gtk.Widget.WidgetMoveFocusSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("popped", NavigationViewPoppedSignalInfo), '("pushed", NavigationViewPushedSignalInfo), '("queryTooltip", Gtk.Widget.WidgetQueryTooltipSignalInfo), '("realize", Gtk.Widget.WidgetRealizeSignalInfo), '("replaced", NavigationViewReplacedSignalInfo), '("show", Gtk.Widget.WidgetShowSignalInfo), '("stateFlagsChanged", Gtk.Widget.WidgetStateFlagsChangedSignalInfo), '("unmap", Gtk.Widget.WidgetUnmapSignalInfo), '("unrealize", Gtk.Widget.WidgetUnrealizeSignalInfo)] :: [(Symbol, DK.Type)])

#endif

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

foreign import ccall "adw_navigation_view_new" adw_navigation_view_new :: 
    IO (Ptr NavigationView)

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

#if defined(ENABLE_OVERLOADING)
#endif

-- method NavigationView::add
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "page"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationPage" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the page to add" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_add" adw_navigation_view_add :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    Ptr Adw.NavigationPage.NavigationPage -> -- page : TInterface (Name {namespace = "Adw", name = "NavigationPage"})
    IO ()

-- | Permanently adds /@page@/ to /@self@/.
-- 
-- Any page that has been added will stay in /@self@/ even after being popped from
-- the navigation stack.
-- 
-- Adding a page while no page is visible will automatically push it to the
-- navigation stack.
-- 
-- See [method/@navigationView@/.remove].
-- 
-- /Since: 1.4/
navigationViewAdd ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a, Adw.NavigationPage.IsNavigationPage b) =>
    a
    -- ^ /@self@/: a navigation view
    -> b
    -- ^ /@page@/: the page to add
    -> m ()
navigationViewAdd :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsNavigationView a,
 IsNavigationPage b) =>
a -> b -> m ()
navigationViewAdd a
self b
page = 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 NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr NavigationPage
page' <- b -> IO (Ptr NavigationPage)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
page
    Ptr NavigationView -> Ptr NavigationPage -> IO ()
adw_navigation_view_add Ptr NavigationView
self' Ptr NavigationPage
page'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr b
page
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data NavigationViewAddMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsNavigationView a, Adw.NavigationPage.IsNavigationPage b) => O.OverloadedMethod NavigationViewAddMethodInfo a signature where
    overloadedMethod = navigationViewAdd

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


#endif

-- method NavigationView::find_page
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "tag"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a page tag" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "Adw" , name = "NavigationPage" })
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_find_page" adw_navigation_view_find_page :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    CString ->                              -- tag : TBasicType TUTF8
    IO (Ptr Adw.NavigationPage.NavigationPage)

-- | Finds a page in /@self@/ by its tag.
-- 
-- See [property/@navigationPage@/:tag].
-- 
-- /Since: 1.4/
navigationViewFindPage ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> T.Text
    -- ^ /@tag@/: a page tag
    -> m (Maybe Adw.NavigationPage.NavigationPage)
    -- ^ __Returns:__ the page with the given tag
navigationViewFindPage :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> Text -> m (Maybe NavigationPage)
navigationViewFindPage a
self Text
tag = NavigationViewGetNextPageCallback -> m (Maybe NavigationPage)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (NavigationViewGetNextPageCallback -> m (Maybe NavigationPage))
-> NavigationViewGetNextPageCallback -> m (Maybe NavigationPage)
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    CString
tag' <- Text -> IO CString
textToCString Text
tag
    Ptr NavigationPage
result <- Ptr NavigationView -> CString -> IO (Ptr NavigationPage)
adw_navigation_view_find_page Ptr NavigationView
self' CString
tag'
    Maybe NavigationPage
maybeResult <- Ptr NavigationPage
-> (Ptr NavigationPage -> IO NavigationPage)
-> NavigationViewGetNextPageCallback
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr NavigationPage
result ((Ptr NavigationPage -> IO NavigationPage)
 -> NavigationViewGetNextPageCallback)
-> (Ptr NavigationPage -> IO NavigationPage)
-> NavigationViewGetNextPageCallback
forall a b. (a -> b) -> a -> b
$ \Ptr NavigationPage
result' -> do
        NavigationPage
result'' <- ((ManagedPtr NavigationPage -> NavigationPage)
-> Ptr NavigationPage -> IO NavigationPage
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr NavigationPage -> NavigationPage
Adw.NavigationPage.NavigationPage) Ptr NavigationPage
result'
        NavigationPage -> IO NavigationPage
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return NavigationPage
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
tag'
    Maybe NavigationPage -> NavigationViewGetNextPageCallback
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe NavigationPage
maybeResult

#if defined(ENABLE_OVERLOADING)
data NavigationViewFindPageMethodInfo
instance (signature ~ (T.Text -> m (Maybe Adw.NavigationPage.NavigationPage)), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewFindPageMethodInfo a signature where
    overloadedMethod = navigationViewFindPage

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


#endif

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

foreign import ccall "adw_navigation_view_get_animate_transitions" adw_navigation_view_get_animate_transitions :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    IO CInt

-- | Gets whether /@self@/ animates page transitions.
-- 
-- /Since: 1.4/
navigationViewGetAnimateTransitions ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> m Bool
    -- ^ __Returns:__ whether to animate page transitions
navigationViewGetAnimateTransitions :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> m Bool
navigationViewGetAnimateTransitions a
self = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    CInt
result <- Ptr NavigationView -> IO CInt
adw_navigation_view_get_animate_transitions Ptr NavigationView
self'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data NavigationViewGetAnimateTransitionsMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewGetAnimateTransitionsMethodInfo a signature where
    overloadedMethod = navigationViewGetAnimateTransitions

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


#endif

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

foreign import ccall "adw_navigation_view_get_navigation_stack" adw_navigation_view_get_navigation_stack :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    IO (Ptr Gio.ListModel.ListModel)

-- | Returns a t'GI.Gio.Interfaces.ListModel.ListModel' that contains the pages in navigation stack.
-- 
-- The pages are sorted from root page to visible page.
-- 
-- This can be used to keep an up-to-date view.
-- 
-- /Since: 1.4/
navigationViewGetNavigationStack ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> m Gio.ListModel.ListModel
    -- ^ __Returns:__ a list model for the navigation stack
navigationViewGetNavigationStack :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> m ListModel
navigationViewGetNavigationStack a
self = IO ListModel -> m ListModel
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ListModel -> m ListModel) -> IO ListModel -> m ListModel
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr ListModel
result <- Ptr NavigationView -> IO (Ptr ListModel)
adw_navigation_view_get_navigation_stack Ptr NavigationView
self'
    Text -> Ptr ListModel -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"navigationViewGetNavigationStack" Ptr ListModel
result
    ListModel
result' <- ((ManagedPtr ListModel -> ListModel)
-> Ptr ListModel -> IO ListModel
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
wrapObject ManagedPtr ListModel -> ListModel
Gio.ListModel.ListModel) Ptr ListModel
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    ListModel -> IO ListModel
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ListModel
result'

#if defined(ENABLE_OVERLOADING)
data NavigationViewGetNavigationStackMethodInfo
instance (signature ~ (m Gio.ListModel.ListModel), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewGetNavigationStackMethodInfo a signature where
    overloadedMethod = navigationViewGetNavigationStack

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


#endif

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

foreign import ccall "adw_navigation_view_get_pop_on_escape" adw_navigation_view_get_pop_on_escape :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    IO CInt

-- | Gets whether pressing Escape pops the current page on /@self@/.
-- 
-- /Since: 1.4/
navigationViewGetPopOnEscape ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> m Bool
    -- ^ __Returns:__ whether to pop the current page
navigationViewGetPopOnEscape :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> m Bool
navigationViewGetPopOnEscape a
self = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    CInt
result <- Ptr NavigationView -> IO CInt
adw_navigation_view_get_pop_on_escape Ptr NavigationView
self'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data NavigationViewGetPopOnEscapeMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewGetPopOnEscapeMethodInfo a signature where
    overloadedMethod = navigationViewGetPopOnEscape

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


#endif

-- method NavigationView::get_previous_page
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "page"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationPage" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a page in @self" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "Adw" , name = "NavigationPage" })
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_get_previous_page" adw_navigation_view_get_previous_page :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    Ptr Adw.NavigationPage.NavigationPage -> -- page : TInterface (Name {namespace = "Adw", name = "NavigationPage"})
    IO (Ptr Adw.NavigationPage.NavigationPage)

-- | Gets the previous page for /@page@/.
-- 
-- If /@page@/ is in the navigation stack, returns the page popping /@page@/ will
-- reveal.
-- 
-- If /@page@/ is the root page or is not in the navigation stack, returns @NULL@.
-- 
-- /Since: 1.4/
navigationViewGetPreviousPage ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a, Adw.NavigationPage.IsNavigationPage b) =>
    a
    -- ^ /@self@/: a navigation view
    -> b
    -- ^ /@page@/: a page in /@self@/
    -> m (Maybe Adw.NavigationPage.NavigationPage)
    -- ^ __Returns:__ the previous page
navigationViewGetPreviousPage :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsNavigationView a,
 IsNavigationPage b) =>
a -> b -> m (Maybe NavigationPage)
navigationViewGetPreviousPage a
self b
page = NavigationViewGetNextPageCallback -> m (Maybe NavigationPage)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (NavigationViewGetNextPageCallback -> m (Maybe NavigationPage))
-> NavigationViewGetNextPageCallback -> m (Maybe NavigationPage)
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr NavigationPage
page' <- b -> IO (Ptr NavigationPage)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
page
    Ptr NavigationPage
result <- Ptr NavigationView -> Ptr NavigationPage -> IO (Ptr NavigationPage)
adw_navigation_view_get_previous_page Ptr NavigationView
self' Ptr NavigationPage
page'
    Maybe NavigationPage
maybeResult <- Ptr NavigationPage
-> (Ptr NavigationPage -> IO NavigationPage)
-> NavigationViewGetNextPageCallback
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr NavigationPage
result ((Ptr NavigationPage -> IO NavigationPage)
 -> NavigationViewGetNextPageCallback)
-> (Ptr NavigationPage -> IO NavigationPage)
-> NavigationViewGetNextPageCallback
forall a b. (a -> b) -> a -> b
$ \Ptr NavigationPage
result' -> do
        NavigationPage
result'' <- ((ManagedPtr NavigationPage -> NavigationPage)
-> Ptr NavigationPage -> IO NavigationPage
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr NavigationPage -> NavigationPage
Adw.NavigationPage.NavigationPage) Ptr NavigationPage
result'
        NavigationPage -> IO NavigationPage
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return NavigationPage
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr b
page
    Maybe NavigationPage -> NavigationViewGetNextPageCallback
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe NavigationPage
maybeResult

#if defined(ENABLE_OVERLOADING)
data NavigationViewGetPreviousPageMethodInfo
instance (signature ~ (b -> m (Maybe Adw.NavigationPage.NavigationPage)), MonadIO m, IsNavigationView a, Adw.NavigationPage.IsNavigationPage b) => O.OverloadedMethod NavigationViewGetPreviousPageMethodInfo a signature where
    overloadedMethod = navigationViewGetPreviousPage

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


#endif

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

foreign import ccall "adw_navigation_view_get_visible_page" adw_navigation_view_get_visible_page :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    IO (Ptr Adw.NavigationPage.NavigationPage)

-- | Gets the currently visible page in /@self@/.
-- 
-- /Since: 1.4/
navigationViewGetVisiblePage ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> m (Maybe Adw.NavigationPage.NavigationPage)
    -- ^ __Returns:__ the currently visible page
navigationViewGetVisiblePage :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> m (Maybe NavigationPage)
navigationViewGetVisiblePage a
self = NavigationViewGetNextPageCallback -> m (Maybe NavigationPage)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (NavigationViewGetNextPageCallback -> m (Maybe NavigationPage))
-> NavigationViewGetNextPageCallback -> m (Maybe NavigationPage)
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr NavigationPage
result <- Ptr NavigationView -> IO (Ptr NavigationPage)
adw_navigation_view_get_visible_page Ptr NavigationView
self'
    Maybe NavigationPage
maybeResult <- Ptr NavigationPage
-> (Ptr NavigationPage -> IO NavigationPage)
-> NavigationViewGetNextPageCallback
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr NavigationPage
result ((Ptr NavigationPage -> IO NavigationPage)
 -> NavigationViewGetNextPageCallback)
-> (Ptr NavigationPage -> IO NavigationPage)
-> NavigationViewGetNextPageCallback
forall a b. (a -> b) -> a -> b
$ \Ptr NavigationPage
result' -> do
        NavigationPage
result'' <- ((ManagedPtr NavigationPage -> NavigationPage)
-> Ptr NavigationPage -> IO NavigationPage
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr NavigationPage -> NavigationPage
Adw.NavigationPage.NavigationPage) Ptr NavigationPage
result'
        NavigationPage -> IO NavigationPage
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return NavigationPage
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Maybe NavigationPage -> NavigationViewGetNextPageCallback
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe NavigationPage
maybeResult

#if defined(ENABLE_OVERLOADING)
data NavigationViewGetVisiblePageMethodInfo
instance (signature ~ (m (Maybe Adw.NavigationPage.NavigationPage)), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewGetVisiblePageMethodInfo a signature where
    overloadedMethod = navigationViewGetVisiblePage

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


#endif

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

foreign import ccall "adw_navigation_view_pop" adw_navigation_view_pop :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    IO CInt

-- | Pops the visible page from the navigation stack.
-- 
-- Does nothing if the navigation stack contains less than two pages.
-- 
-- If [method/@navigationView@/.add] hasn\'t been called, the page is automatically
-- removed.
-- 
-- [signal/@navigationView@/[popped](#g:signal:popped)] will be emitted for the current visible page.
-- 
-- See [method/@navigationView@/.pop_to_page] and
-- [method/@navigationView@/.pop_to_tag].
-- 
-- /Since: 1.4/
navigationViewPop ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> m Bool
    -- ^ __Returns:__ @TRUE@ if a page has been popped
navigationViewPop :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> m Bool
navigationViewPop a
self = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    CInt
result <- Ptr NavigationView -> IO CInt
adw_navigation_view_pop Ptr NavigationView
self'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data NavigationViewPopMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewPopMethodInfo a signature where
    overloadedMethod = navigationViewPop

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


#endif

-- method NavigationView::pop_to_page
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "page"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationPage" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the page to pop to" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_pop_to_page" adw_navigation_view_pop_to_page :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    Ptr Adw.NavigationPage.NavigationPage -> -- page : TInterface (Name {namespace = "Adw", name = "NavigationPage"})
    IO CInt

-- | Pops pages from the navigation stack until /@page@/ is visible.
-- 
-- /@page@/ must be in the navigation stack.
-- 
-- If [method/@navigationView@/.add] hasn\'t been called for any of the popped pages,
-- they are automatically removed.
-- 
-- [signal/@navigationView@/[popped](#g:signal:popped)] will be be emitted for each of the popped
-- pages.
-- 
-- See [method/@navigationView@/.pop] and [method/@navigationView@/.pop_to_tag].
-- 
-- /Since: 1.4/
navigationViewPopToPage ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a, Adw.NavigationPage.IsNavigationPage b) =>
    a
    -- ^ /@self@/: a navigation view
    -> b
    -- ^ /@page@/: the page to pop to
    -> m Bool
    -- ^ __Returns:__ @TRUE@ if any pages have been popped
navigationViewPopToPage :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsNavigationView a,
 IsNavigationPage b) =>
a -> b -> m Bool
navigationViewPopToPage a
self b
page = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr NavigationPage
page' <- b -> IO (Ptr NavigationPage)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
page
    CInt
result <- Ptr NavigationView -> Ptr NavigationPage -> IO CInt
adw_navigation_view_pop_to_page Ptr NavigationView
self' Ptr NavigationPage
page'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr b
page
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data NavigationViewPopToPageMethodInfo
instance (signature ~ (b -> m Bool), MonadIO m, IsNavigationView a, Adw.NavigationPage.IsNavigationPage b) => O.OverloadedMethod NavigationViewPopToPageMethodInfo a signature where
    overloadedMethod = navigationViewPopToPage

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


#endif

-- method NavigationView::pop_to_tag
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "tag"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a page tag" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_pop_to_tag" adw_navigation_view_pop_to_tag :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    CString ->                              -- tag : TBasicType TUTF8
    IO CInt

-- | Pops pages from the navigation stack until page with the tag /@tag@/ is visible.
-- 
-- The page must be in the navigation stack.
-- 
-- If [method/@navigationView@/.add] hasn\'t been called for any of the popped pages,
-- they are automatically removed.
-- 
-- [signal/@navigationView@/[popped](#g:signal:popped)] will be emitted for each of the popped pages.
-- 
-- See [method/@navigationView@/.pop_to_page] and [property/@navigationPage@/:tag].
-- 
-- /Since: 1.4/
navigationViewPopToTag ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> T.Text
    -- ^ /@tag@/: a page tag
    -> m Bool
    -- ^ __Returns:__ @TRUE@ if any pages have been popped
navigationViewPopToTag :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> Text -> m Bool
navigationViewPopToTag a
self Text
tag = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    CString
tag' <- Text -> IO CString
textToCString Text
tag
    CInt
result <- Ptr NavigationView -> CString -> IO CInt
adw_navigation_view_pop_to_tag Ptr NavigationView
self' CString
tag'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
tag'
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data NavigationViewPopToTagMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewPopToTagMethodInfo a signature where
    overloadedMethod = navigationViewPopToTag

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


#endif

-- method NavigationView::push
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "page"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationPage" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the page to push" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_push" adw_navigation_view_push :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    Ptr Adw.NavigationPage.NavigationPage -> -- page : TInterface (Name {namespace = "Adw", name = "NavigationPage"})
    IO ()

-- | Pushes /@page@/ onto the navigation stack.
-- 
-- If [method/@navigationView@/.add] hasn\'t been called, the page is automatically
-- removed once it\'s popped.
-- 
-- [signal/@navigationView@/[pushed](#g:signal:pushed)] will be emitted for /@page@/.
-- 
-- See [method/@navigationView@/.push_by_tag].
-- 
-- /Since: 1.4/
navigationViewPush ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a, Adw.NavigationPage.IsNavigationPage b) =>
    a
    -- ^ /@self@/: a navigation view
    -> b
    -- ^ /@page@/: the page to push
    -> m ()
navigationViewPush :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsNavigationView a,
 IsNavigationPage b) =>
a -> b -> m ()
navigationViewPush a
self b
page = 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 NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr NavigationPage
page' <- b -> IO (Ptr NavigationPage)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
page
    Ptr NavigationView -> Ptr NavigationPage -> IO ()
adw_navigation_view_push Ptr NavigationView
self' Ptr NavigationPage
page'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr b
page
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data NavigationViewPushMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsNavigationView a, Adw.NavigationPage.IsNavigationPage b) => O.OverloadedMethod NavigationViewPushMethodInfo a signature where
    overloadedMethod = navigationViewPush

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


#endif

-- method NavigationView::push_by_tag
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "tag"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the page tag" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_push_by_tag" adw_navigation_view_push_by_tag :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    CString ->                              -- tag : TBasicType TUTF8
    IO ()

-- | Pushes the page with the tag /@tag@/ onto the navigation stack.
-- 
-- If [method/@navigationView@/.add] hasn\'t been called, the page is automatically
-- removed once it\'s popped.
-- 
-- [signal/@navigationView@/[pushed](#g:signal:pushed)] will be emitted for the page.
-- 
-- See [method/@navigationView@/.push] and [property/@navigationPage@/:tag].
-- 
-- /Since: 1.4/
navigationViewPushByTag ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> T.Text
    -- ^ /@tag@/: the page tag
    -> m ()
navigationViewPushByTag :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> Text -> m ()
navigationViewPushByTag a
self Text
tag = 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 NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    CString
tag' <- Text -> IO CString
textToCString Text
tag
    Ptr NavigationView -> CString -> IO ()
adw_navigation_view_push_by_tag Ptr NavigationView
self' CString
tag'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
tag'
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data NavigationViewPushByTagMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewPushByTagMethodInfo a signature where
    overloadedMethod = navigationViewPushByTag

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


#endif

-- method NavigationView::remove
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "page"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationPage" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the page to remove" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_remove" adw_navigation_view_remove :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    Ptr Adw.NavigationPage.NavigationPage -> -- page : TInterface (Name {namespace = "Adw", name = "NavigationPage"})
    IO ()

-- | Removes /@page@/ from /@self@/.
-- 
-- If /@page@/ is currently in the navigation stack, it will be removed once it\'s
-- popped. Otherwise, it\'s removed immediately.
-- 
-- See [method/@navigationView@/.add].
-- 
-- /Since: 1.4/
navigationViewRemove ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a, Adw.NavigationPage.IsNavigationPage b) =>
    a
    -- ^ /@self@/: a navigation view
    -> b
    -- ^ /@page@/: the page to remove
    -> m ()
navigationViewRemove :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsNavigationView a,
 IsNavigationPage b) =>
a -> b -> m ()
navigationViewRemove a
self b
page = 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 NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr NavigationPage
page' <- b -> IO (Ptr NavigationPage)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
page
    Ptr NavigationView -> Ptr NavigationPage -> IO ()
adw_navigation_view_remove Ptr NavigationView
self' Ptr NavigationPage
page'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr b
page
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data NavigationViewRemoveMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsNavigationView a, Adw.NavigationPage.IsNavigationPage b) => O.OverloadedMethod NavigationViewRemoveMethodInfo a signature where
    overloadedMethod = navigationViewRemove

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


#endif

-- method NavigationView::replace
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "pages"
--           , argType =
--               TCArray
--                 False
--                 (-1)
--                 2
--                 (TInterface Name { namespace = "Adw" , name = "NavigationPage" })
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the new navigation stack"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "n_pages"
--           , argType = TBasicType TInt
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the number of pages in @pages"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: [ Arg
--              { argCName = "n_pages"
--              , argType = TBasicType TInt
--              , direction = DirectionIn
--              , mayBeNull = False
--              , argDoc =
--                  Documentation
--                    { rawDocText = Just "the number of pages in @pages"
--                    , sinceVersion = Nothing
--                    }
--              , argScope = ScopeTypeInvalid
--              , argClosure = -1
--              , argDestroy = -1
--              , argCallerAllocates = False
--              , argCallbackUserData = False
--              , transfer = TransferNothing
--              }
--          ]
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_replace" adw_navigation_view_replace :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    Ptr (Ptr Adw.NavigationPage.NavigationPage) -> -- pages : TCArray False (-1) 2 (TInterface (Name {namespace = "Adw", name = "NavigationPage"}))
    Int32 ->                                -- n_pages : TBasicType TInt
    IO ()

-- | Replaces the current navigation stack with /@pages@/.
-- 
-- The last page becomes the visible page.
-- 
-- Replacing the navigation stack has no animation.
-- 
-- If [method/@navigationView@/.add] hasn\'t been called for any pages that are no
-- longer in the navigation stack, they are automatically removed.
-- 
-- /@nPages@/ can be 0, in that case no page will be visible after calling this
-- method. This can be useful for removing all pages from /@self@/.
-- 
-- The [signal/@navigationView@/[replaced](#g:signal:replaced)] signal will be emitted.
-- 
-- See [method/@navigationView@/.replace_with_tags].
-- 
-- /Since: 1.4/
navigationViewReplace ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> [Adw.NavigationPage.NavigationPage]
    -- ^ /@pages@/: the new navigation stack
    -> m ()
navigationViewReplace :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> [NavigationPage] -> m ()
navigationViewReplace a
self [NavigationPage]
pages = 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
    let nPages :: Int32
nPages = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [NavigationPage] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [NavigationPage]
pages
    Ptr NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    [Ptr NavigationPage]
pages' <- (NavigationPage -> IO (Ptr NavigationPage))
-> [NavigationPage] -> IO [Ptr NavigationPage]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM NavigationPage -> IO (Ptr NavigationPage)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr [NavigationPage]
pages
    Ptr (Ptr NavigationPage)
pages'' <- [Ptr NavigationPage] -> IO (Ptr (Ptr NavigationPage))
forall a. [Ptr a] -> IO (Ptr (Ptr a))
packPtrArray [Ptr NavigationPage]
pages'
    Ptr NavigationView -> Ptr (Ptr NavigationPage) -> Int32 -> IO ()
adw_navigation_view_replace Ptr NavigationView
self' Ptr (Ptr NavigationPage)
pages'' Int32
nPages
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    NavigationViewPoppedCallback -> [NavigationPage] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ NavigationViewPoppedCallback
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr [NavigationPage]
pages
    Ptr (Ptr NavigationPage) -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr (Ptr NavigationPage)
pages''
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data NavigationViewReplaceMethodInfo
instance (signature ~ ([Adw.NavigationPage.NavigationPage] -> m ()), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewReplaceMethodInfo a signature where
    overloadedMethod = navigationViewReplace

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


#endif

-- method NavigationView::replace_with_tags
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "tags"
--           , argType = TCArray False (-1) 2 (TBasicType TUTF8)
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "tags of the pages in the\n  navigation stack"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "n_tags"
--           , argType = TBasicType TInt
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the number of tags" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: [ Arg
--              { argCName = "n_tags"
--              , argType = TBasicType TInt
--              , direction = DirectionIn
--              , mayBeNull = False
--              , argDoc =
--                  Documentation
--                    { rawDocText = Just "the number of tags" , sinceVersion = Nothing }
--              , argScope = ScopeTypeInvalid
--              , argClosure = -1
--              , argDestroy = -1
--              , argCallerAllocates = False
--              , argCallbackUserData = False
--              , transfer = TransferNothing
--              }
--          ]
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_replace_with_tags" adw_navigation_view_replace_with_tags :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    Ptr CString ->                          -- tags : TCArray False (-1) 2 (TBasicType TUTF8)
    Int32 ->                                -- n_tags : TBasicType TInt
    IO ()

-- | Replaces the current navigation stack with pages with the tags /@tags@/.
-- 
-- The last page becomes the visible page.
-- 
-- Replacing the navigation stack has no animation.
-- 
-- If [method/@navigationView@/.add] hasn\'t been called for any pages that are no
-- longer in the navigation stack, they are automatically removed.
-- 
-- /@nTags@/ can be 0, in that case no page will be visible after calling this
-- method. This can be useful for removing all pages from /@self@/.
-- 
-- The [signal/@navigationView@/[replaced](#g:signal:replaced)] signal will be emitted.
-- 
-- See [method/@navigationView@/.replace] and [property/@navigationPage@/:tag].
-- 
-- /Since: 1.4/
navigationViewReplaceWithTags ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> [T.Text]
    -- ^ /@tags@/: tags of the pages in the
    --   navigation stack
    -> m ()
navigationViewReplaceWithTags :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> [Text] -> m ()
navigationViewReplaceWithTags a
self [Text]
tags = 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
    let nTags :: Int32
nTags = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [Text] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [Text]
tags
    Ptr NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr CString
tags' <- [Text] -> IO (Ptr CString)
packUTF8CArray [Text]
tags
    Ptr NavigationView -> Ptr CString -> Int32 -> IO ()
adw_navigation_view_replace_with_tags Ptr NavigationView
self' Ptr CString
tags' Int32
nTags
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    (Int32 -> (CString -> IO ()) -> Ptr CString -> IO ()
forall a b c.
(Storable a, Integral b) =>
b -> (a -> IO c) -> Ptr a -> IO ()
mapCArrayWithLength Int32
nTags) CString -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CString
tags'
    Ptr CString -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CString
tags'
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data NavigationViewReplaceWithTagsMethodInfo
instance (signature ~ ([T.Text] -> m ()), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewReplaceWithTagsMethodInfo a signature where
    overloadedMethod = navigationViewReplaceWithTags

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


#endif

-- method NavigationView::set_animate_transitions
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "animate_transitions"
--           , argType = TBasicType TBoolean
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "whether to animate page transitions"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_set_animate_transitions" adw_navigation_view_set_animate_transitions :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    CInt ->                                 -- animate_transitions : TBasicType TBoolean
    IO ()

-- | Sets whether /@self@/ should animate page transitions.
-- 
-- Gesture-based transitions are always animated.
-- 
-- /Since: 1.4/
navigationViewSetAnimateTransitions ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> Bool
    -- ^ /@animateTransitions@/: whether to animate page transitions
    -> m ()
navigationViewSetAnimateTransitions :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> Bool -> m ()
navigationViewSetAnimateTransitions a
self Bool
animateTransitions = 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 NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    let animateTransitions' :: CInt
animateTransitions' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
P.fromEnum) Bool
animateTransitions
    Ptr NavigationView -> CInt -> IO ()
adw_navigation_view_set_animate_transitions Ptr NavigationView
self' CInt
animateTransitions'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data NavigationViewSetAnimateTransitionsMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewSetAnimateTransitionsMethodInfo a signature where
    overloadedMethod = navigationViewSetAnimateTransitions

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


#endif

-- method NavigationView::set_pop_on_escape
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Adw" , name = "NavigationView" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a navigation view" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "pop_on_escape"
--           , argType = TBasicType TBoolean
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "whether to pop the current page when pressing Escape"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "adw_navigation_view_set_pop_on_escape" adw_navigation_view_set_pop_on_escape :: 
    Ptr NavigationView ->                   -- self : TInterface (Name {namespace = "Adw", name = "NavigationView"})
    CInt ->                                 -- pop_on_escape : TBasicType TBoolean
    IO ()

-- | Sets whether pressing Escape pops the current page on /@self@/.
-- 
-- Applications using @AdwNavigationView@ to implement a browser may want to
-- disable it.
-- 
-- /Since: 1.4/
navigationViewSetPopOnEscape ::
    (B.CallStack.HasCallStack, MonadIO m, IsNavigationView a) =>
    a
    -- ^ /@self@/: a navigation view
    -> Bool
    -- ^ /@popOnEscape@/: whether to pop the current page when pressing Escape
    -> m ()
navigationViewSetPopOnEscape :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsNavigationView a) =>
a -> Bool -> m ()
navigationViewSetPopOnEscape a
self Bool
popOnEscape = 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 NavigationView
self' <- a -> IO (Ptr NavigationView)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    let popOnEscape' :: CInt
popOnEscape' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
P.fromEnum) Bool
popOnEscape
    Ptr NavigationView -> CInt -> IO ()
adw_navigation_view_set_pop_on_escape Ptr NavigationView
self' CInt
popOnEscape'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data NavigationViewSetPopOnEscapeMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsNavigationView a) => O.OverloadedMethod NavigationViewSetPopOnEscapeMethodInfo a signature where
    overloadedMethod = navigationViewSetPopOnEscape

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


#endif