{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- GtkVideo is a widget to show a t'GI.Gtk.Objects.MediaStream.MediaStream'.
-- 
-- It is commonly combined with t'GI.Gtk.Objects.MediaControls.MediaControls' to give the
-- user a way to control the playback.

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

module GI.Gtk.Objects.Video
    ( 

-- * Exported types
    Video(..)                               ,
    IsVideo                                 ,
    toVideo                                 ,
    noVideo                                 ,


 -- * Methods
-- ** Overloaded methods #method:Overloaded methods#

#if defined(ENABLE_OVERLOADING)
    ResolveVideoMethod                      ,
#endif


-- ** getAutoplay #method:getAutoplay#

#if defined(ENABLE_OVERLOADING)
    VideoGetAutoplayMethodInfo              ,
#endif
    videoGetAutoplay                        ,


-- ** getFile #method:getFile#

#if defined(ENABLE_OVERLOADING)
    VideoGetFileMethodInfo                  ,
#endif
    videoGetFile                            ,


-- ** getLoop #method:getLoop#

#if defined(ENABLE_OVERLOADING)
    VideoGetLoopMethodInfo                  ,
#endif
    videoGetLoop                            ,


-- ** getMediaStream #method:getMediaStream#

#if defined(ENABLE_OVERLOADING)
    VideoGetMediaStreamMethodInfo           ,
#endif
    videoGetMediaStream                     ,


-- ** new #method:new#

    videoNew                                ,


-- ** newForFile #method:newForFile#

    videoNewForFile                         ,


-- ** newForFilename #method:newForFilename#

    videoNewForFilename                     ,


-- ** newForMediaStream #method:newForMediaStream#

    videoNewForMediaStream                  ,


-- ** newForResource #method:newForResource#

    videoNewForResource                     ,


-- ** setAutoplay #method:setAutoplay#

#if defined(ENABLE_OVERLOADING)
    VideoSetAutoplayMethodInfo              ,
#endif
    videoSetAutoplay                        ,


-- ** setFile #method:setFile#

#if defined(ENABLE_OVERLOADING)
    VideoSetFileMethodInfo                  ,
#endif
    videoSetFile                            ,


-- ** setFilename #method:setFilename#

#if defined(ENABLE_OVERLOADING)
    VideoSetFilenameMethodInfo              ,
#endif
    videoSetFilename                        ,


-- ** setLoop #method:setLoop#

#if defined(ENABLE_OVERLOADING)
    VideoSetLoopMethodInfo                  ,
#endif
    videoSetLoop                            ,


-- ** setMediaStream #method:setMediaStream#

#if defined(ENABLE_OVERLOADING)
    VideoSetMediaStreamMethodInfo           ,
#endif
    videoSetMediaStream                     ,


-- ** setResource #method:setResource#

#if defined(ENABLE_OVERLOADING)
    VideoSetResourceMethodInfo              ,
#endif
    videoSetResource                        ,




 -- * Properties
-- ** autoplay #attr:autoplay#
-- | If the video should automatically begin playing.

#if defined(ENABLE_OVERLOADING)
    VideoAutoplayPropertyInfo               ,
#endif
    constructVideoAutoplay                  ,
    getVideoAutoplay                        ,
    setVideoAutoplay                        ,
#if defined(ENABLE_OVERLOADING)
    videoAutoplay                           ,
#endif


-- ** file #attr:file#
-- | The file played by this video if the video is playing a file.

#if defined(ENABLE_OVERLOADING)
    VideoFilePropertyInfo                   ,
#endif
    clearVideoFile                          ,
    constructVideoFile                      ,
    getVideoFile                            ,
    setVideoFile                            ,
#if defined(ENABLE_OVERLOADING)
    videoFile                               ,
#endif


-- ** loop #attr:loop#
-- | If new media files should be set to loop.

#if defined(ENABLE_OVERLOADING)
    VideoLoopPropertyInfo                   ,
#endif
    constructVideoLoop                      ,
    getVideoLoop                            ,
    setVideoLoop                            ,
#if defined(ENABLE_OVERLOADING)
    videoLoop                               ,
#endif


-- ** mediaStream #attr:mediaStream#
-- | The media-stream played

#if defined(ENABLE_OVERLOADING)
    VideoMediaStreamPropertyInfo            ,
#endif
    clearVideoMediaStream                   ,
    constructVideoMediaStream               ,
    getVideoMediaStream                     ,
    setVideoMediaStream                     ,
#if defined(ENABLE_OVERLOADING)
    videoMediaStream                        ,
#endif




    ) 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.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
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 Data.Text as T
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 GI.Atk.Interfaces.ImplementorIface as Atk.ImplementorIface
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gio.Interfaces.File as Gio.File
import {-# SOURCE #-} qualified GI.Gtk.Interfaces.Buildable as Gtk.Buildable
import {-# SOURCE #-} qualified GI.Gtk.Objects.MediaStream as Gtk.MediaStream
import {-# SOURCE #-} qualified GI.Gtk.Objects.Widget as Gtk.Widget

-- | Memory-managed wrapper type.
newtype Video = Video (ManagedPtr Video)
    deriving (Video -> Video -> Bool
(Video -> Video -> Bool) -> (Video -> Video -> Bool) -> Eq Video
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Video -> Video -> Bool
$c/= :: Video -> Video -> Bool
== :: Video -> Video -> Bool
$c== :: Video -> Video -> Bool
Eq)
foreign import ccall "gtk_video_get_type"
    c_gtk_video_get_type :: IO GType

instance GObject Video where
    gobjectType :: IO GType
gobjectType = IO GType
c_gtk_video_get_type
    

-- | Convert 'Video' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue Video where
    toGValue :: Video -> IO GValue
toGValue o :: Video
o = do
        GType
gtype <- IO GType
c_gtk_video_get_type
        Video -> (Ptr Video -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr Video
o (GType -> (GValue -> Ptr Video -> IO ()) -> Ptr Video -> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr Video -> IO ()
forall a. GObject a => GValue -> Ptr a -> IO ()
B.GValue.set_object)
        
    fromGValue :: GValue -> IO Video
fromGValue gv :: GValue
gv = do
        Ptr Video
ptr <- GValue -> IO (Ptr Video)
forall b. GObject b => GValue -> IO (Ptr b)
B.GValue.get_object GValue
gv :: IO (Ptr Video)
        (ManagedPtr Video -> Video) -> Ptr Video -> IO Video
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr Video -> Video
Video Ptr Video
ptr
        
    

-- | Type class for types which can be safely cast to `Video`, for instance with `toVideo`.
class (GObject o, O.IsDescendantOf Video o) => IsVideo o
instance (GObject o, O.IsDescendantOf Video o) => IsVideo o

instance O.HasParentTypes Video
type instance O.ParentTypes Video = '[Gtk.Widget.Widget, GObject.Object.Object, Atk.ImplementorIface.ImplementorIface, Gtk.Buildable.Buildable]

-- | Cast to `Video`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toVideo :: (MonadIO m, IsVideo o) => o -> m Video
toVideo :: o -> m Video
toVideo = IO Video -> m Video
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Video -> m Video) -> (o -> IO Video) -> o -> m Video
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr Video -> Video) -> o -> IO Video
forall o o'.
(HasCallStack, GObject o, GObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
unsafeCastTo ManagedPtr Video -> Video
Video

-- | A convenience alias for `Nothing` :: `Maybe` `Video`.
noVideo :: Maybe Video
noVideo :: Maybe Video
noVideo = Maybe Video
forall a. Maybe a
Nothing

#if defined(ENABLE_OVERLOADING)
type family ResolveVideoMethod (t :: Symbol) (o :: *) :: * where
    ResolveVideoMethod "activate" o = Gtk.Widget.WidgetActivateMethodInfo
    ResolveVideoMethod "activateAction" o = Gtk.Widget.WidgetActivateActionMethodInfo
    ResolveVideoMethod "activateDefault" o = Gtk.Widget.WidgetActivateDefaultMethodInfo
    ResolveVideoMethod "addAccelerator" o = Gtk.Widget.WidgetAddAcceleratorMethodInfo
    ResolveVideoMethod "addChild" o = Gtk.Buildable.BuildableAddChildMethodInfo
    ResolveVideoMethod "addController" o = Gtk.Widget.WidgetAddControllerMethodInfo
    ResolveVideoMethod "addMnemonicLabel" o = Gtk.Widget.WidgetAddMnemonicLabelMethodInfo
    ResolveVideoMethod "addTickCallback" o = Gtk.Widget.WidgetAddTickCallbackMethodInfo
    ResolveVideoMethod "allocate" o = Gtk.Widget.WidgetAllocateMethodInfo
    ResolveVideoMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveVideoMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveVideoMethod "canActivateAccel" o = Gtk.Widget.WidgetCanActivateAccelMethodInfo
    ResolveVideoMethod "childFocus" o = Gtk.Widget.WidgetChildFocusMethodInfo
    ResolveVideoMethod "computeBounds" o = Gtk.Widget.WidgetComputeBoundsMethodInfo
    ResolveVideoMethod "computeExpand" o = Gtk.Widget.WidgetComputeExpandMethodInfo
    ResolveVideoMethod "computePoint" o = Gtk.Widget.WidgetComputePointMethodInfo
    ResolveVideoMethod "computeTransform" o = Gtk.Widget.WidgetComputeTransformMethodInfo
    ResolveVideoMethod "constructChild" o = Gtk.Buildable.BuildableConstructChildMethodInfo
    ResolveVideoMethod "contains" o = Gtk.Widget.WidgetContainsMethodInfo
    ResolveVideoMethod "createPangoContext" o = Gtk.Widget.WidgetCreatePangoContextMethodInfo
    ResolveVideoMethod "createPangoLayout" o = Gtk.Widget.WidgetCreatePangoLayoutMethodInfo
    ResolveVideoMethod "customFinished" o = Gtk.Buildable.BuildableCustomFinishedMethodInfo
    ResolveVideoMethod "customTagEnd" o = Gtk.Buildable.BuildableCustomTagEndMethodInfo
    ResolveVideoMethod "customTagStart" o = Gtk.Buildable.BuildableCustomTagStartMethodInfo
    ResolveVideoMethod "destroy" o = Gtk.Widget.WidgetDestroyMethodInfo
    ResolveVideoMethod "destroyed" o = Gtk.Widget.WidgetDestroyedMethodInfo
    ResolveVideoMethod "deviceIsShadowed" o = Gtk.Widget.WidgetDeviceIsShadowedMethodInfo
    ResolveVideoMethod "dragBegin" o = Gtk.Widget.WidgetDragBeginMethodInfo
    ResolveVideoMethod "dragCheckThreshold" o = Gtk.Widget.WidgetDragCheckThresholdMethodInfo
    ResolveVideoMethod "dragDestAddImageTargets" o = Gtk.Widget.WidgetDragDestAddImageTargetsMethodInfo
    ResolveVideoMethod "dragDestAddTextTargets" o = Gtk.Widget.WidgetDragDestAddTextTargetsMethodInfo
    ResolveVideoMethod "dragDestAddUriTargets" o = Gtk.Widget.WidgetDragDestAddUriTargetsMethodInfo
    ResolveVideoMethod "dragDestFindTarget" o = Gtk.Widget.WidgetDragDestFindTargetMethodInfo
    ResolveVideoMethod "dragDestGetTargetList" o = Gtk.Widget.WidgetDragDestGetTargetListMethodInfo
    ResolveVideoMethod "dragDestGetTrackMotion" o = Gtk.Widget.WidgetDragDestGetTrackMotionMethodInfo
    ResolveVideoMethod "dragDestSet" o = Gtk.Widget.WidgetDragDestSetMethodInfo
    ResolveVideoMethod "dragDestSetTargetList" o = Gtk.Widget.WidgetDragDestSetTargetListMethodInfo
    ResolveVideoMethod "dragDestSetTrackMotion" o = Gtk.Widget.WidgetDragDestSetTrackMotionMethodInfo
    ResolveVideoMethod "dragDestUnset" o = Gtk.Widget.WidgetDragDestUnsetMethodInfo
    ResolveVideoMethod "dragGetData" o = Gtk.Widget.WidgetDragGetDataMethodInfo
    ResolveVideoMethod "dragHighlight" o = Gtk.Widget.WidgetDragHighlightMethodInfo
    ResolveVideoMethod "dragSourceAddImageTargets" o = Gtk.Widget.WidgetDragSourceAddImageTargetsMethodInfo
    ResolveVideoMethod "dragSourceAddTextTargets" o = Gtk.Widget.WidgetDragSourceAddTextTargetsMethodInfo
    ResolveVideoMethod "dragSourceAddUriTargets" o = Gtk.Widget.WidgetDragSourceAddUriTargetsMethodInfo
    ResolveVideoMethod "dragSourceGetTargetList" o = Gtk.Widget.WidgetDragSourceGetTargetListMethodInfo
    ResolveVideoMethod "dragSourceSet" o = Gtk.Widget.WidgetDragSourceSetMethodInfo
    ResolveVideoMethod "dragSourceSetIconGicon" o = Gtk.Widget.WidgetDragSourceSetIconGiconMethodInfo
    ResolveVideoMethod "dragSourceSetIconName" o = Gtk.Widget.WidgetDragSourceSetIconNameMethodInfo
    ResolveVideoMethod "dragSourceSetIconPaintable" o = Gtk.Widget.WidgetDragSourceSetIconPaintableMethodInfo
    ResolveVideoMethod "dragSourceSetTargetList" o = Gtk.Widget.WidgetDragSourceSetTargetListMethodInfo
    ResolveVideoMethod "dragSourceUnset" o = Gtk.Widget.WidgetDragSourceUnsetMethodInfo
    ResolveVideoMethod "dragUnhighlight" o = Gtk.Widget.WidgetDragUnhighlightMethodInfo
    ResolveVideoMethod "errorBell" o = Gtk.Widget.WidgetErrorBellMethodInfo
    ResolveVideoMethod "event" o = Gtk.Widget.WidgetEventMethodInfo
    ResolveVideoMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveVideoMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveVideoMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveVideoMethod "grabAdd" o = Gtk.Widget.WidgetGrabAddMethodInfo
    ResolveVideoMethod "grabFocus" o = Gtk.Widget.WidgetGrabFocusMethodInfo
    ResolveVideoMethod "grabRemove" o = Gtk.Widget.WidgetGrabRemoveMethodInfo
    ResolveVideoMethod "hasDefault" o = Gtk.Widget.WidgetHasDefaultMethodInfo
    ResolveVideoMethod "hasFocus" o = Gtk.Widget.WidgetHasFocusMethodInfo
    ResolveVideoMethod "hasGrab" o = Gtk.Widget.WidgetHasGrabMethodInfo
    ResolveVideoMethod "hasVisibleFocus" o = Gtk.Widget.WidgetHasVisibleFocusMethodInfo
    ResolveVideoMethod "hide" o = Gtk.Widget.WidgetHideMethodInfo
    ResolveVideoMethod "inDestruction" o = Gtk.Widget.WidgetInDestructionMethodInfo
    ResolveVideoMethod "initTemplate" o = Gtk.Widget.WidgetInitTemplateMethodInfo
    ResolveVideoMethod "inputShapeCombineRegion" o = Gtk.Widget.WidgetInputShapeCombineRegionMethodInfo
    ResolveVideoMethod "insertActionGroup" o = Gtk.Widget.WidgetInsertActionGroupMethodInfo
    ResolveVideoMethod "insertAfter" o = Gtk.Widget.WidgetInsertAfterMethodInfo
    ResolveVideoMethod "insertBefore" o = Gtk.Widget.WidgetInsertBeforeMethodInfo
    ResolveVideoMethod "isAncestor" o = Gtk.Widget.WidgetIsAncestorMethodInfo
    ResolveVideoMethod "isDrawable" o = Gtk.Widget.WidgetIsDrawableMethodInfo
    ResolveVideoMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveVideoMethod "isFocus" o = Gtk.Widget.WidgetIsFocusMethodInfo
    ResolveVideoMethod "isSensitive" o = Gtk.Widget.WidgetIsSensitiveMethodInfo
    ResolveVideoMethod "isToplevel" o = Gtk.Widget.WidgetIsToplevelMethodInfo
    ResolveVideoMethod "isVisible" o = Gtk.Widget.WidgetIsVisibleMethodInfo
    ResolveVideoMethod "keynavFailed" o = Gtk.Widget.WidgetKeynavFailedMethodInfo
    ResolveVideoMethod "listAccelClosures" o = Gtk.Widget.WidgetListAccelClosuresMethodInfo
    ResolveVideoMethod "listActionPrefixes" o = Gtk.Widget.WidgetListActionPrefixesMethodInfo
    ResolveVideoMethod "listMnemonicLabels" o = Gtk.Widget.WidgetListMnemonicLabelsMethodInfo
    ResolveVideoMethod "map" o = Gtk.Widget.WidgetMapMethodInfo
    ResolveVideoMethod "measure" o = Gtk.Widget.WidgetMeasureMethodInfo
    ResolveVideoMethod "mnemonicActivate" o = Gtk.Widget.WidgetMnemonicActivateMethodInfo
    ResolveVideoMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveVideoMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveVideoMethod "observeChildren" o = Gtk.Widget.WidgetObserveChildrenMethodInfo
    ResolveVideoMethod "observeControllers" o = Gtk.Widget.WidgetObserveControllersMethodInfo
    ResolveVideoMethod "parserFinished" o = Gtk.Buildable.BuildableParserFinishedMethodInfo
    ResolveVideoMethod "pick" o = Gtk.Widget.WidgetPickMethodInfo
    ResolveVideoMethod "queueAllocate" o = Gtk.Widget.WidgetQueueAllocateMethodInfo
    ResolveVideoMethod "queueComputeExpand" o = Gtk.Widget.WidgetQueueComputeExpandMethodInfo
    ResolveVideoMethod "queueDraw" o = Gtk.Widget.WidgetQueueDrawMethodInfo
    ResolveVideoMethod "queueResize" o = Gtk.Widget.WidgetQueueResizeMethodInfo
    ResolveVideoMethod "queueResizeNoRedraw" o = Gtk.Widget.WidgetQueueResizeNoRedrawMethodInfo
    ResolveVideoMethod "realize" o = Gtk.Widget.WidgetRealizeMethodInfo
    ResolveVideoMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveVideoMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveVideoMethod "registerSurface" o = Gtk.Widget.WidgetRegisterSurfaceMethodInfo
    ResolveVideoMethod "removeAccelerator" o = Gtk.Widget.WidgetRemoveAcceleratorMethodInfo
    ResolveVideoMethod "removeController" o = Gtk.Widget.WidgetRemoveControllerMethodInfo
    ResolveVideoMethod "removeMnemonicLabel" o = Gtk.Widget.WidgetRemoveMnemonicLabelMethodInfo
    ResolveVideoMethod "removeTickCallback" o = Gtk.Widget.WidgetRemoveTickCallbackMethodInfo
    ResolveVideoMethod "resetStyle" o = Gtk.Widget.WidgetResetStyleMethodInfo
    ResolveVideoMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveVideoMethod "show" o = Gtk.Widget.WidgetShowMethodInfo
    ResolveVideoMethod "sizeAllocate" o = Gtk.Widget.WidgetSizeAllocateMethodInfo
    ResolveVideoMethod "snapshotChild" o = Gtk.Widget.WidgetSnapshotChildMethodInfo
    ResolveVideoMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveVideoMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveVideoMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveVideoMethod "translateCoordinates" o = Gtk.Widget.WidgetTranslateCoordinatesMethodInfo
    ResolveVideoMethod "triggerTooltipQuery" o = Gtk.Widget.WidgetTriggerTooltipQueryMethodInfo
    ResolveVideoMethod "unmap" o = Gtk.Widget.WidgetUnmapMethodInfo
    ResolveVideoMethod "unparent" o = Gtk.Widget.WidgetUnparentMethodInfo
    ResolveVideoMethod "unrealize" o = Gtk.Widget.WidgetUnrealizeMethodInfo
    ResolveVideoMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveVideoMethod "unregisterSurface" o = Gtk.Widget.WidgetUnregisterSurfaceMethodInfo
    ResolveVideoMethod "unsetStateFlags" o = Gtk.Widget.WidgetUnsetStateFlagsMethodInfo
    ResolveVideoMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveVideoMethod "getAccessible" o = Gtk.Widget.WidgetGetAccessibleMethodInfo
    ResolveVideoMethod "getActionGroup" o = Gtk.Widget.WidgetGetActionGroupMethodInfo
    ResolveVideoMethod "getAllocatedBaseline" o = Gtk.Widget.WidgetGetAllocatedBaselineMethodInfo
    ResolveVideoMethod "getAllocatedHeight" o = Gtk.Widget.WidgetGetAllocatedHeightMethodInfo
    ResolveVideoMethod "getAllocatedWidth" o = Gtk.Widget.WidgetGetAllocatedWidthMethodInfo
    ResolveVideoMethod "getAllocation" o = Gtk.Widget.WidgetGetAllocationMethodInfo
    ResolveVideoMethod "getAncestor" o = Gtk.Widget.WidgetGetAncestorMethodInfo
    ResolveVideoMethod "getAutoplay" o = VideoGetAutoplayMethodInfo
    ResolveVideoMethod "getCanFocus" o = Gtk.Widget.WidgetGetCanFocusMethodInfo
    ResolveVideoMethod "getCanTarget" o = Gtk.Widget.WidgetGetCanTargetMethodInfo
    ResolveVideoMethod "getChildVisible" o = Gtk.Widget.WidgetGetChildVisibleMethodInfo
    ResolveVideoMethod "getClipboard" o = Gtk.Widget.WidgetGetClipboardMethodInfo
    ResolveVideoMethod "getCursor" o = Gtk.Widget.WidgetGetCursorMethodInfo
    ResolveVideoMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveVideoMethod "getDirection" o = Gtk.Widget.WidgetGetDirectionMethodInfo
    ResolveVideoMethod "getDisplay" o = Gtk.Widget.WidgetGetDisplayMethodInfo
    ResolveVideoMethod "getFile" o = VideoGetFileMethodInfo
    ResolveVideoMethod "getFirstChild" o = Gtk.Widget.WidgetGetFirstChildMethodInfo
    ResolveVideoMethod "getFocusChild" o = Gtk.Widget.WidgetGetFocusChildMethodInfo
    ResolveVideoMethod "getFocusOnClick" o = Gtk.Widget.WidgetGetFocusOnClickMethodInfo
    ResolveVideoMethod "getFontMap" o = Gtk.Widget.WidgetGetFontMapMethodInfo
    ResolveVideoMethod "getFontOptions" o = Gtk.Widget.WidgetGetFontOptionsMethodInfo
    ResolveVideoMethod "getFrameClock" o = Gtk.Widget.WidgetGetFrameClockMethodInfo
    ResolveVideoMethod "getHalign" o = Gtk.Widget.WidgetGetHalignMethodInfo
    ResolveVideoMethod "getHasSurface" o = Gtk.Widget.WidgetGetHasSurfaceMethodInfo
    ResolveVideoMethod "getHasTooltip" o = Gtk.Widget.WidgetGetHasTooltipMethodInfo
    ResolveVideoMethod "getHeight" o = Gtk.Widget.WidgetGetHeightMethodInfo
    ResolveVideoMethod "getHexpand" o = Gtk.Widget.WidgetGetHexpandMethodInfo
    ResolveVideoMethod "getHexpandSet" o = Gtk.Widget.WidgetGetHexpandSetMethodInfo
    ResolveVideoMethod "getInternalChild" o = Gtk.Buildable.BuildableGetInternalChildMethodInfo
    ResolveVideoMethod "getLastChild" o = Gtk.Widget.WidgetGetLastChildMethodInfo
    ResolveVideoMethod "getLayoutManager" o = Gtk.Widget.WidgetGetLayoutManagerMethodInfo
    ResolveVideoMethod "getLoop" o = VideoGetLoopMethodInfo
    ResolveVideoMethod "getMapped" o = Gtk.Widget.WidgetGetMappedMethodInfo
    ResolveVideoMethod "getMarginBottom" o = Gtk.Widget.WidgetGetMarginBottomMethodInfo
    ResolveVideoMethod "getMarginEnd" o = Gtk.Widget.WidgetGetMarginEndMethodInfo
    ResolveVideoMethod "getMarginStart" o = Gtk.Widget.WidgetGetMarginStartMethodInfo
    ResolveVideoMethod "getMarginTop" o = Gtk.Widget.WidgetGetMarginTopMethodInfo
    ResolveVideoMethod "getMediaStream" o = VideoGetMediaStreamMethodInfo
    ResolveVideoMethod "getModifierMask" o = Gtk.Widget.WidgetGetModifierMaskMethodInfo
    ResolveVideoMethod "getName" o = Gtk.Widget.WidgetGetNameMethodInfo
    ResolveVideoMethod "getNextSibling" o = Gtk.Widget.WidgetGetNextSiblingMethodInfo
    ResolveVideoMethod "getOpacity" o = Gtk.Widget.WidgetGetOpacityMethodInfo
    ResolveVideoMethod "getOverflow" o = Gtk.Widget.WidgetGetOverflowMethodInfo
    ResolveVideoMethod "getPangoContext" o = Gtk.Widget.WidgetGetPangoContextMethodInfo
    ResolveVideoMethod "getParent" o = Gtk.Widget.WidgetGetParentMethodInfo
    ResolveVideoMethod "getPath" o = Gtk.Widget.WidgetGetPathMethodInfo
    ResolveVideoMethod "getPreferredSize" o = Gtk.Widget.WidgetGetPreferredSizeMethodInfo
    ResolveVideoMethod "getPrevSibling" o = Gtk.Widget.WidgetGetPrevSiblingMethodInfo
    ResolveVideoMethod "getPrimaryClipboard" o = Gtk.Widget.WidgetGetPrimaryClipboardMethodInfo
    ResolveVideoMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveVideoMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveVideoMethod "getRealized" o = Gtk.Widget.WidgetGetRealizedMethodInfo
    ResolveVideoMethod "getReceivesDefault" o = Gtk.Widget.WidgetGetReceivesDefaultMethodInfo
    ResolveVideoMethod "getRequestMode" o = Gtk.Widget.WidgetGetRequestModeMethodInfo
    ResolveVideoMethod "getRoot" o = Gtk.Widget.WidgetGetRootMethodInfo
    ResolveVideoMethod "getScaleFactor" o = Gtk.Widget.WidgetGetScaleFactorMethodInfo
    ResolveVideoMethod "getSensitive" o = Gtk.Widget.WidgetGetSensitiveMethodInfo
    ResolveVideoMethod "getSettings" o = Gtk.Widget.WidgetGetSettingsMethodInfo
    ResolveVideoMethod "getSizeRequest" o = Gtk.Widget.WidgetGetSizeRequestMethodInfo
    ResolveVideoMethod "getStateFlags" o = Gtk.Widget.WidgetGetStateFlagsMethodInfo
    ResolveVideoMethod "getStyleContext" o = Gtk.Widget.WidgetGetStyleContextMethodInfo
    ResolveVideoMethod "getSupportMultidevice" o = Gtk.Widget.WidgetGetSupportMultideviceMethodInfo
    ResolveVideoMethod "getSurface" o = Gtk.Widget.WidgetGetSurfaceMethodInfo
    ResolveVideoMethod "getTemplateChild" o = Gtk.Widget.WidgetGetTemplateChildMethodInfo
    ResolveVideoMethod "getTooltipMarkup" o = Gtk.Widget.WidgetGetTooltipMarkupMethodInfo
    ResolveVideoMethod "getTooltipText" o = Gtk.Widget.WidgetGetTooltipTextMethodInfo
    ResolveVideoMethod "getTooltipWindow" o = Gtk.Widget.WidgetGetTooltipWindowMethodInfo
    ResolveVideoMethod "getToplevel" o = Gtk.Widget.WidgetGetToplevelMethodInfo
    ResolveVideoMethod "getValign" o = Gtk.Widget.WidgetGetValignMethodInfo
    ResolveVideoMethod "getVexpand" o = Gtk.Widget.WidgetGetVexpandMethodInfo
    ResolveVideoMethod "getVexpandSet" o = Gtk.Widget.WidgetGetVexpandSetMethodInfo
    ResolveVideoMethod "getVisible" o = Gtk.Widget.WidgetGetVisibleMethodInfo
    ResolveVideoMethod "getWidth" o = Gtk.Widget.WidgetGetWidthMethodInfo
    ResolveVideoMethod "setAccelPath" o = Gtk.Widget.WidgetSetAccelPathMethodInfo
    ResolveVideoMethod "setAutoplay" o = VideoSetAutoplayMethodInfo
    ResolveVideoMethod "setBuildableProperty" o = Gtk.Buildable.BuildableSetBuildablePropertyMethodInfo
    ResolveVideoMethod "setCanFocus" o = Gtk.Widget.WidgetSetCanFocusMethodInfo
    ResolveVideoMethod "setCanTarget" o = Gtk.Widget.WidgetSetCanTargetMethodInfo
    ResolveVideoMethod "setChildVisible" o = Gtk.Widget.WidgetSetChildVisibleMethodInfo
    ResolveVideoMethod "setCursor" o = Gtk.Widget.WidgetSetCursorMethodInfo
    ResolveVideoMethod "setCursorFromName" o = Gtk.Widget.WidgetSetCursorFromNameMethodInfo
    ResolveVideoMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveVideoMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveVideoMethod "setDirection" o = Gtk.Widget.WidgetSetDirectionMethodInfo
    ResolveVideoMethod "setFile" o = VideoSetFileMethodInfo
    ResolveVideoMethod "setFilename" o = VideoSetFilenameMethodInfo
    ResolveVideoMethod "setFocusChild" o = Gtk.Widget.WidgetSetFocusChildMethodInfo
    ResolveVideoMethod "setFocusOnClick" o = Gtk.Widget.WidgetSetFocusOnClickMethodInfo
    ResolveVideoMethod "setFontMap" o = Gtk.Widget.WidgetSetFontMapMethodInfo
    ResolveVideoMethod "setFontOptions" o = Gtk.Widget.WidgetSetFontOptionsMethodInfo
    ResolveVideoMethod "setHalign" o = Gtk.Widget.WidgetSetHalignMethodInfo
    ResolveVideoMethod "setHasSurface" o = Gtk.Widget.WidgetSetHasSurfaceMethodInfo
    ResolveVideoMethod "setHasTooltip" o = Gtk.Widget.WidgetSetHasTooltipMethodInfo
    ResolveVideoMethod "setHexpand" o = Gtk.Widget.WidgetSetHexpandMethodInfo
    ResolveVideoMethod "setHexpandSet" o = Gtk.Widget.WidgetSetHexpandSetMethodInfo
    ResolveVideoMethod "setLayoutManager" o = Gtk.Widget.WidgetSetLayoutManagerMethodInfo
    ResolveVideoMethod "setLoop" o = VideoSetLoopMethodInfo
    ResolveVideoMethod "setMarginBottom" o = Gtk.Widget.WidgetSetMarginBottomMethodInfo
    ResolveVideoMethod "setMarginEnd" o = Gtk.Widget.WidgetSetMarginEndMethodInfo
    ResolveVideoMethod "setMarginStart" o = Gtk.Widget.WidgetSetMarginStartMethodInfo
    ResolveVideoMethod "setMarginTop" o = Gtk.Widget.WidgetSetMarginTopMethodInfo
    ResolveVideoMethod "setMediaStream" o = VideoSetMediaStreamMethodInfo
    ResolveVideoMethod "setName" o = Gtk.Widget.WidgetSetNameMethodInfo
    ResolveVideoMethod "setOpacity" o = Gtk.Widget.WidgetSetOpacityMethodInfo
    ResolveVideoMethod "setOverflow" o = Gtk.Widget.WidgetSetOverflowMethodInfo
    ResolveVideoMethod "setParent" o = Gtk.Widget.WidgetSetParentMethodInfo
    ResolveVideoMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveVideoMethod "setReceivesDefault" o = Gtk.Widget.WidgetSetReceivesDefaultMethodInfo
    ResolveVideoMethod "setResource" o = VideoSetResourceMethodInfo
    ResolveVideoMethod "setSensitive" o = Gtk.Widget.WidgetSetSensitiveMethodInfo
    ResolveVideoMethod "setSizeRequest" o = Gtk.Widget.WidgetSetSizeRequestMethodInfo
    ResolveVideoMethod "setStateFlags" o = Gtk.Widget.WidgetSetStateFlagsMethodInfo
    ResolveVideoMethod "setSupportMultidevice" o = Gtk.Widget.WidgetSetSupportMultideviceMethodInfo
    ResolveVideoMethod "setSurface" o = Gtk.Widget.WidgetSetSurfaceMethodInfo
    ResolveVideoMethod "setTooltipMarkup" o = Gtk.Widget.WidgetSetTooltipMarkupMethodInfo
    ResolveVideoMethod "setTooltipText" o = Gtk.Widget.WidgetSetTooltipTextMethodInfo
    ResolveVideoMethod "setTooltipWindow" o = Gtk.Widget.WidgetSetTooltipWindowMethodInfo
    ResolveVideoMethod "setValign" o = Gtk.Widget.WidgetSetValignMethodInfo
    ResolveVideoMethod "setVexpand" o = Gtk.Widget.WidgetSetVexpandMethodInfo
    ResolveVideoMethod "setVexpandSet" o = Gtk.Widget.WidgetSetVexpandSetMethodInfo
    ResolveVideoMethod "setVisible" o = Gtk.Widget.WidgetSetVisibleMethodInfo
    ResolveVideoMethod l o = O.MethodResolutionFailed l o

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

#endif

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

-- | Get the value of the “@autoplay@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' video #autoplay
-- @
getVideoAutoplay :: (MonadIO m, IsVideo o) => o -> m Bool
getVideoAutoplay :: o -> m Bool
getVideoAutoplay obj :: o
obj = IO Bool -> m Bool
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
$ o -> String -> IO Bool
forall a. GObject a => a -> String -> IO Bool
B.Properties.getObjectPropertyBool o
obj "autoplay"

-- | Set the value of the “@autoplay@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' video [ #autoplay 'Data.GI.Base.Attributes.:=' value ]
-- @
setVideoAutoplay :: (MonadIO m, IsVideo o) => o -> Bool -> m ()
setVideoAutoplay :: o -> Bool -> m ()
setVideoAutoplay obj :: o
obj val :: Bool
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Bool -> IO ()
forall a. GObject a => a -> String -> Bool -> IO ()
B.Properties.setObjectPropertyBool o
obj "autoplay" Bool
val

-- | Construct a `GValueConstruct` with valid value for the “@autoplay@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructVideoAutoplay :: (IsVideo o) => Bool -> IO (GValueConstruct o)
constructVideoAutoplay :: Bool -> IO (GValueConstruct o)
constructVideoAutoplay val :: Bool
val = String -> Bool -> IO (GValueConstruct o)
forall o. String -> Bool -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBool "autoplay" Bool
val

#if defined(ENABLE_OVERLOADING)
data VideoAutoplayPropertyInfo
instance AttrInfo VideoAutoplayPropertyInfo where
    type AttrAllowedOps VideoAutoplayPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint VideoAutoplayPropertyInfo = IsVideo
    type AttrSetTypeConstraint VideoAutoplayPropertyInfo = (~) Bool
    type AttrTransferTypeConstraint VideoAutoplayPropertyInfo = (~) Bool
    type AttrTransferType VideoAutoplayPropertyInfo = Bool
    type AttrGetType VideoAutoplayPropertyInfo = Bool
    type AttrLabel VideoAutoplayPropertyInfo = "autoplay"
    type AttrOrigin VideoAutoplayPropertyInfo = Video
    attrGet = getVideoAutoplay
    attrSet = setVideoAutoplay
    attrTransfer _ v = do
        return v
    attrConstruct = constructVideoAutoplay
    attrClear = undefined
#endif

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

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

-- | Set the value of the “@file@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' video [ #file 'Data.GI.Base.Attributes.:=' value ]
-- @
setVideoFile :: (MonadIO m, IsVideo o, Gio.File.IsFile a) => o -> a -> m ()
setVideoFile :: o -> a -> m ()
setVideoFile obj :: o
obj val :: a
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe a -> IO ()
forall a b.
(GObject a, GObject b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyObject o
obj "file" (a -> Maybe a
forall a. a -> Maybe a
Just a
val)

-- | Construct a `GValueConstruct` with valid value for the “@file@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructVideoFile :: (IsVideo o, Gio.File.IsFile a) => a -> IO (GValueConstruct o)
constructVideoFile :: a -> IO (GValueConstruct o)
constructVideoFile val :: a
val = String -> Maybe a -> IO (GValueConstruct o)
forall a o.
GObject a =>
String -> Maybe a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyObject "file" (a -> Maybe a
forall a. a -> Maybe a
Just a
val)

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

#if defined(ENABLE_OVERLOADING)
data VideoFilePropertyInfo
instance AttrInfo VideoFilePropertyInfo where
    type AttrAllowedOps VideoFilePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint VideoFilePropertyInfo = IsVideo
    type AttrSetTypeConstraint VideoFilePropertyInfo = Gio.File.IsFile
    type AttrTransferTypeConstraint VideoFilePropertyInfo = Gio.File.IsFile
    type AttrTransferType VideoFilePropertyInfo = Gio.File.File
    type AttrGetType VideoFilePropertyInfo = (Maybe Gio.File.File)
    type AttrLabel VideoFilePropertyInfo = "file"
    type AttrOrigin VideoFilePropertyInfo = Video
    attrGet = getVideoFile
    attrSet = setVideoFile
    attrTransfer _ v = do
        unsafeCastTo Gio.File.File v
    attrConstruct = constructVideoFile
    attrClear = clearVideoFile
#endif

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

-- | Get the value of the “@loop@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' video #loop
-- @
getVideoLoop :: (MonadIO m, IsVideo o) => o -> m Bool
getVideoLoop :: o -> m Bool
getVideoLoop obj :: o
obj = IO Bool -> m Bool
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
$ o -> String -> IO Bool
forall a. GObject a => a -> String -> IO Bool
B.Properties.getObjectPropertyBool o
obj "loop"

-- | Set the value of the “@loop@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' video [ #loop 'Data.GI.Base.Attributes.:=' value ]
-- @
setVideoLoop :: (MonadIO m, IsVideo o) => o -> Bool -> m ()
setVideoLoop :: o -> Bool -> m ()
setVideoLoop obj :: o
obj val :: Bool
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Bool -> IO ()
forall a. GObject a => a -> String -> Bool -> IO ()
B.Properties.setObjectPropertyBool o
obj "loop" Bool
val

-- | Construct a `GValueConstruct` with valid value for the “@loop@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructVideoLoop :: (IsVideo o) => Bool -> IO (GValueConstruct o)
constructVideoLoop :: Bool -> IO (GValueConstruct o)
constructVideoLoop val :: Bool
val = String -> Bool -> IO (GValueConstruct o)
forall o. String -> Bool -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBool "loop" Bool
val

#if defined(ENABLE_OVERLOADING)
data VideoLoopPropertyInfo
instance AttrInfo VideoLoopPropertyInfo where
    type AttrAllowedOps VideoLoopPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint VideoLoopPropertyInfo = IsVideo
    type AttrSetTypeConstraint VideoLoopPropertyInfo = (~) Bool
    type AttrTransferTypeConstraint VideoLoopPropertyInfo = (~) Bool
    type AttrTransferType VideoLoopPropertyInfo = Bool
    type AttrGetType VideoLoopPropertyInfo = Bool
    type AttrLabel VideoLoopPropertyInfo = "loop"
    type AttrOrigin VideoLoopPropertyInfo = Video
    attrGet = getVideoLoop
    attrSet = setVideoLoop
    attrTransfer _ v = do
        return v
    attrConstruct = constructVideoLoop
    attrClear = undefined
#endif

-- VVV Prop "media-stream"
   -- Type: TInterface (Name {namespace = "Gtk", name = "MediaStream"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just True,Just True)

-- | Get the value of the “@media-stream@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' video #mediaStream
-- @
getVideoMediaStream :: (MonadIO m, IsVideo o) => o -> m (Maybe Gtk.MediaStream.MediaStream)
getVideoMediaStream :: o -> m (Maybe MediaStream)
getVideoMediaStream obj :: o
obj = IO (Maybe MediaStream) -> m (Maybe MediaStream)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe MediaStream) -> m (Maybe MediaStream))
-> IO (Maybe MediaStream) -> m (Maybe MediaStream)
forall a b. (a -> b) -> a -> b
$ o
-> String
-> (ManagedPtr MediaStream -> MediaStream)
-> IO (Maybe MediaStream)
forall a b.
(GObject a, GObject b) =>
a -> String -> (ManagedPtr b -> b) -> IO (Maybe b)
B.Properties.getObjectPropertyObject o
obj "media-stream" ManagedPtr MediaStream -> MediaStream
Gtk.MediaStream.MediaStream

-- | Set the value of the “@media-stream@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' video [ #mediaStream 'Data.GI.Base.Attributes.:=' value ]
-- @
setVideoMediaStream :: (MonadIO m, IsVideo o, Gtk.MediaStream.IsMediaStream a) => o -> a -> m ()
setVideoMediaStream :: o -> a -> m ()
setVideoMediaStream obj :: o
obj val :: a
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe a -> IO ()
forall a b.
(GObject a, GObject b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyObject o
obj "media-stream" (a -> Maybe a
forall a. a -> Maybe a
Just a
val)

-- | Construct a `GValueConstruct` with valid value for the “@media-stream@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructVideoMediaStream :: (IsVideo o, Gtk.MediaStream.IsMediaStream a) => a -> IO (GValueConstruct o)
constructVideoMediaStream :: a -> IO (GValueConstruct o)
constructVideoMediaStream val :: a
val = String -> Maybe a -> IO (GValueConstruct o)
forall a o.
GObject a =>
String -> Maybe a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyObject "media-stream" (a -> Maybe a
forall a. a -> Maybe a
Just a
val)

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

#if defined(ENABLE_OVERLOADING)
data VideoMediaStreamPropertyInfo
instance AttrInfo VideoMediaStreamPropertyInfo where
    type AttrAllowedOps VideoMediaStreamPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint VideoMediaStreamPropertyInfo = IsVideo
    type AttrSetTypeConstraint VideoMediaStreamPropertyInfo = Gtk.MediaStream.IsMediaStream
    type AttrTransferTypeConstraint VideoMediaStreamPropertyInfo = Gtk.MediaStream.IsMediaStream
    type AttrTransferType VideoMediaStreamPropertyInfo = Gtk.MediaStream.MediaStream
    type AttrGetType VideoMediaStreamPropertyInfo = (Maybe Gtk.MediaStream.MediaStream)
    type AttrLabel VideoMediaStreamPropertyInfo = "media-stream"
    type AttrOrigin VideoMediaStreamPropertyInfo = Video
    attrGet = getVideoMediaStream
    attrSet = setVideoMediaStream
    attrTransfer _ v = do
        unsafeCastTo Gtk.MediaStream.MediaStream v
    attrConstruct = constructVideoMediaStream
    attrClear = clearVideoMediaStream
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList Video
type instance O.AttributeList Video = VideoAttributeList
type VideoAttributeList = ('[ '("autoplay", VideoAutoplayPropertyInfo), '("canFocus", Gtk.Widget.WidgetCanFocusPropertyInfo), '("canTarget", Gtk.Widget.WidgetCanTargetPropertyInfo), '("cssName", Gtk.Widget.WidgetCssNamePropertyInfo), '("cursor", Gtk.Widget.WidgetCursorPropertyInfo), '("expand", Gtk.Widget.WidgetExpandPropertyInfo), '("file", VideoFilePropertyInfo), '("focusOnClick", Gtk.Widget.WidgetFocusOnClickPropertyInfo), '("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), '("isFocus", Gtk.Widget.WidgetIsFocusPropertyInfo), '("layoutManager", Gtk.Widget.WidgetLayoutManagerPropertyInfo), '("loop", VideoLoopPropertyInfo), '("margin", Gtk.Widget.WidgetMarginPropertyInfo), '("marginBottom", Gtk.Widget.WidgetMarginBottomPropertyInfo), '("marginEnd", Gtk.Widget.WidgetMarginEndPropertyInfo), '("marginStart", Gtk.Widget.WidgetMarginStartPropertyInfo), '("marginTop", Gtk.Widget.WidgetMarginTopPropertyInfo), '("mediaStream", VideoMediaStreamPropertyInfo), '("name", Gtk.Widget.WidgetNamePropertyInfo), '("opacity", Gtk.Widget.WidgetOpacityPropertyInfo), '("overflow", Gtk.Widget.WidgetOverflowPropertyInfo), '("parent", Gtk.Widget.WidgetParentPropertyInfo), '("receivesDefault", Gtk.Widget.WidgetReceivesDefaultPropertyInfo), '("root", Gtk.Widget.WidgetRootPropertyInfo), '("scaleFactor", Gtk.Widget.WidgetScaleFactorPropertyInfo), '("sensitive", Gtk.Widget.WidgetSensitivePropertyInfo), '("surface", Gtk.Widget.WidgetSurfacePropertyInfo), '("tooltipMarkup", Gtk.Widget.WidgetTooltipMarkupPropertyInfo), '("tooltipText", Gtk.Widget.WidgetTooltipTextPropertyInfo), '("valign", Gtk.Widget.WidgetValignPropertyInfo), '("vexpand", Gtk.Widget.WidgetVexpandPropertyInfo), '("vexpandSet", Gtk.Widget.WidgetVexpandSetPropertyInfo), '("visible", Gtk.Widget.WidgetVisiblePropertyInfo), '("widthRequest", Gtk.Widget.WidgetWidthRequestPropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
videoAutoplay :: AttrLabelProxy "autoplay"
videoAutoplay = AttrLabelProxy

videoFile :: AttrLabelProxy "file"
videoFile = AttrLabelProxy

videoLoop :: AttrLabelProxy "loop"
videoLoop = AttrLabelProxy

videoMediaStream :: AttrLabelProxy "mediaStream"
videoMediaStream = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList Video = VideoSignalList
type VideoSignalList = ('[ '("accelClosuresChanged", Gtk.Widget.WidgetAccelClosuresChangedSignalInfo), '("canActivateAccel", Gtk.Widget.WidgetCanActivateAccelSignalInfo), '("destroy", Gtk.Widget.WidgetDestroySignalInfo), '("directionChanged", Gtk.Widget.WidgetDirectionChangedSignalInfo), '("dragBegin", Gtk.Widget.WidgetDragBeginSignalInfo), '("dragDataDelete", Gtk.Widget.WidgetDragDataDeleteSignalInfo), '("dragDataGet", Gtk.Widget.WidgetDragDataGetSignalInfo), '("dragDataReceived", Gtk.Widget.WidgetDragDataReceivedSignalInfo), '("dragDrop", Gtk.Widget.WidgetDragDropSignalInfo), '("dragEnd", Gtk.Widget.WidgetDragEndSignalInfo), '("dragFailed", Gtk.Widget.WidgetDragFailedSignalInfo), '("dragLeave", Gtk.Widget.WidgetDragLeaveSignalInfo), '("dragMotion", Gtk.Widget.WidgetDragMotionSignalInfo), '("grabNotify", Gtk.Widget.WidgetGrabNotifySignalInfo), '("hide", Gtk.Widget.WidgetHideSignalInfo), '("keynavFailed", Gtk.Widget.WidgetKeynavFailedSignalInfo), '("map", Gtk.Widget.WidgetMapSignalInfo), '("mnemonicActivate", Gtk.Widget.WidgetMnemonicActivateSignalInfo), '("moveFocus", Gtk.Widget.WidgetMoveFocusSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("popupMenu", Gtk.Widget.WidgetPopupMenuSignalInfo), '("queryTooltip", Gtk.Widget.WidgetQueryTooltipSignalInfo), '("realize", Gtk.Widget.WidgetRealizeSignalInfo), '("show", Gtk.Widget.WidgetShowSignalInfo), '("sizeAllocate", Gtk.Widget.WidgetSizeAllocateSignalInfo), '("stateFlagsChanged", Gtk.Widget.WidgetStateFlagsChangedSignalInfo), '("styleUpdated", Gtk.Widget.WidgetStyleUpdatedSignalInfo), '("unmap", Gtk.Widget.WidgetUnmapSignalInfo), '("unrealize", Gtk.Widget.WidgetUnrealizeSignalInfo)] :: [(Symbol, *)])

#endif

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

foreign import ccall "gtk_video_new" gtk_video_new :: 
    IO (Ptr Video)

-- | Creates a new empty t'GI.Gtk.Objects.Video.Video'.
videoNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m Video
    -- ^ __Returns:__ a new t'GI.Gtk.Objects.Video.Video'
videoNew :: m Video
videoNew  = IO Video -> m Video
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Video -> m Video) -> IO Video -> m Video
forall a b. (a -> b) -> a -> b
$ do
    Ptr Video
result <- IO (Ptr Video)
gtk_video_new
    Text -> Ptr Video -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "videoNew" Ptr Video
result
    Video
result' <- ((ManagedPtr Video -> Video) -> Ptr Video -> IO Video
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr Video -> Video
Video) Ptr Video
result
    Video -> IO Video
forall (m :: * -> *) a. Monad m => a -> m a
return Video
result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method Video::new_for_file
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "file"
--           , argType = TInterface Name { namespace = "Gio" , name = "File" }
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GFile" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gtk" , name = "Video" })
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_new_for_file" gtk_video_new_for_file :: 
    Ptr Gio.File.File ->                    -- file : TInterface (Name {namespace = "Gio", name = "File"})
    IO (Ptr Video)

-- | Creates a t'GI.Gtk.Objects.Video.Video' to play back the given /@file@/.
videoNewForFile ::
    (B.CallStack.HasCallStack, MonadIO m, Gio.File.IsFile a) =>
    Maybe (a)
    -- ^ /@file@/: a t'GI.Gio.Interfaces.File.File'
    -> m Video
    -- ^ __Returns:__ a new t'GI.Gtk.Objects.Video.Video'
videoNewForFile :: Maybe a -> m Video
videoNewForFile file :: Maybe a
file = IO Video -> m Video
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Video -> m Video) -> IO Video -> m Video
forall a b. (a -> b) -> a -> b
$ do
    Ptr File
maybeFile <- case Maybe a
file of
        Nothing -> Ptr File -> IO (Ptr File)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr File
forall a. Ptr a
nullPtr
        Just jFile :: a
jFile -> do
            Ptr File
jFile' <- a -> IO (Ptr File)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
jFile
            Ptr File -> IO (Ptr File)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr File
jFile'
    Ptr Video
result <- Ptr File -> IO (Ptr Video)
gtk_video_new_for_file Ptr File
maybeFile
    Text -> Ptr Video -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "videoNewForFile" Ptr Video
result
    Video
result' <- ((ManagedPtr Video -> Video) -> Ptr Video -> IO Video
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr Video -> Video
Video) Ptr Video
result
    Maybe a -> (a -> IO ()) -> IO ()
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Maybe a
file a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr
    Video -> IO Video
forall (m :: * -> *) a. Monad m => a -> m a
return Video
result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method Video::new_for_filename
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "filename"
--           , argType = TBasicType TFileName
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "filename to play back"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gtk" , name = "Video" })
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_new_for_filename" gtk_video_new_for_filename :: 
    CString ->                              -- filename : TBasicType TFileName
    IO (Ptr Video)

-- | Creates a t'GI.Gtk.Objects.Video.Video' to play back the given /@filename@/.
-- 
-- This is a utility function that calls 'GI.Gtk.Objects.Video.videoNewForFile',
-- See that function for details.
videoNewForFilename ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    Maybe ([Char])
    -- ^ /@filename@/: filename to play back
    -> m Video
    -- ^ __Returns:__ a new t'GI.Gtk.Objects.Video.Video'
videoNewForFilename :: Maybe String -> m Video
videoNewForFilename filename :: Maybe String
filename = IO Video -> m Video
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Video -> m Video) -> IO Video -> m Video
forall a b. (a -> b) -> a -> b
$ do
    Ptr CChar
maybeFilename <- case Maybe String
filename of
        Nothing -> Ptr CChar -> IO (Ptr CChar)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
forall a. Ptr a
nullPtr
        Just jFilename :: String
jFilename -> do
            Ptr CChar
jFilename' <- String -> IO (Ptr CChar)
stringToCString String
jFilename
            Ptr CChar -> IO (Ptr CChar)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
jFilename'
    Ptr Video
result <- Ptr CChar -> IO (Ptr Video)
gtk_video_new_for_filename Ptr CChar
maybeFilename
    Text -> Ptr Video -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "videoNewForFilename" Ptr Video
result
    Video
result' <- ((ManagedPtr Video -> Video) -> Ptr Video -> IO Video
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr Video -> Video
Video) Ptr Video
result
    Ptr CChar -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CChar
maybeFilename
    Video -> IO Video
forall (m :: * -> *) a. Monad m => a -> m a
return Video
result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method Video::new_for_media_stream
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "stream"
--           , argType =
--               TInterface Name { namespace = "Gtk" , name = "MediaStream" }
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkMediaStream" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gtk" , name = "Video" })
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_new_for_media_stream" gtk_video_new_for_media_stream :: 
    Ptr Gtk.MediaStream.MediaStream ->      -- stream : TInterface (Name {namespace = "Gtk", name = "MediaStream"})
    IO (Ptr Video)

-- | Creates a t'GI.Gtk.Objects.Video.Video' to play back the given /@stream@/.
videoNewForMediaStream ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.MediaStream.IsMediaStream a) =>
    Maybe (a)
    -- ^ /@stream@/: a t'GI.Gtk.Objects.MediaStream.MediaStream'
    -> m Video
    -- ^ __Returns:__ a new t'GI.Gtk.Objects.Video.Video'
videoNewForMediaStream :: Maybe a -> m Video
videoNewForMediaStream stream :: Maybe a
stream = IO Video -> m Video
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Video -> m Video) -> IO Video -> m Video
forall a b. (a -> b) -> a -> b
$ do
    Ptr MediaStream
maybeStream <- case Maybe a
stream of
        Nothing -> Ptr MediaStream -> IO (Ptr MediaStream)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr MediaStream
forall a. Ptr a
nullPtr
        Just jStream :: a
jStream -> do
            Ptr MediaStream
jStream' <- a -> IO (Ptr MediaStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
jStream
            Ptr MediaStream -> IO (Ptr MediaStream)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr MediaStream
jStream'
    Ptr Video
result <- Ptr MediaStream -> IO (Ptr Video)
gtk_video_new_for_media_stream Ptr MediaStream
maybeStream
    Text -> Ptr Video -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "videoNewForMediaStream" Ptr Video
result
    Video
result' <- ((ManagedPtr Video -> Video) -> Ptr Video -> IO Video
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr Video -> Video
Video) Ptr Video
result
    Maybe a -> (a -> IO ()) -> IO ()
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Maybe a
stream a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr
    Video -> IO Video
forall (m :: * -> *) a. Monad m => a -> m a
return Video
result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method Video::new_for_resource
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "resource_path"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "resource path to play back"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gtk" , name = "Video" })
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_new_for_resource" gtk_video_new_for_resource :: 
    CString ->                              -- resource_path : TBasicType TUTF8
    IO (Ptr Video)

-- | Creates a t'GI.Gtk.Objects.Video.Video' to play back the resource at the
-- given /@resourcePath@/.
-- 
-- This is a utility function that calls 'GI.Gtk.Objects.Video.videoNewForFile',
videoNewForResource ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    Maybe (T.Text)
    -- ^ /@resourcePath@/: resource path to play back
    -> m Video
    -- ^ __Returns:__ a new t'GI.Gtk.Objects.Video.Video'
videoNewForResource :: Maybe Text -> m Video
videoNewForResource resourcePath :: Maybe Text
resourcePath = IO Video -> m Video
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Video -> m Video) -> IO Video -> m Video
forall a b. (a -> b) -> a -> b
$ do
    Ptr CChar
maybeResourcePath <- case Maybe Text
resourcePath of
        Nothing -> Ptr CChar -> IO (Ptr CChar)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
forall a. Ptr a
nullPtr
        Just jResourcePath :: Text
jResourcePath -> do
            Ptr CChar
jResourcePath' <- Text -> IO (Ptr CChar)
textToCString Text
jResourcePath
            Ptr CChar -> IO (Ptr CChar)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
jResourcePath'
    Ptr Video
result <- Ptr CChar -> IO (Ptr Video)
gtk_video_new_for_resource Ptr CChar
maybeResourcePath
    Text -> Ptr Video -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "videoNewForResource" Ptr Video
result
    Video
result' <- ((ManagedPtr Video -> Video) -> Ptr Video -> IO Video
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr Video -> Video
Video) Ptr Video
result
    Ptr CChar -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CChar
maybeResourcePath
    Video -> IO Video
forall (m :: * -> *) a. Monad m => a -> m a
return Video
result'

#if defined(ENABLE_OVERLOADING)
#endif

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

foreign import ccall "gtk_video_get_autoplay" gtk_video_get_autoplay :: 
    Ptr Video ->                            -- self : TInterface (Name {namespace = "Gtk", name = "Video"})
    IO CInt

-- | Returns 'P.True' if videos have been set to loop via 'GI.Gtk.Objects.Video.videoSetLoop'.
videoGetAutoplay ::
    (B.CallStack.HasCallStack, MonadIO m, IsVideo a) =>
    a
    -- ^ /@self@/: a t'GI.Gtk.Objects.Video.Video'
    -> m Bool
    -- ^ __Returns:__ 'P.True' if streams should autoplay
videoGetAutoplay :: a -> m Bool
videoGetAutoplay self :: a
self = IO Bool -> m Bool
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 Video
self' <- a -> IO (Ptr Video)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    CInt
result <- Ptr Video -> IO CInt
gtk_video_get_autoplay Ptr Video
self'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= 0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Bool -> IO Bool
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data VideoGetAutoplayMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsVideo a) => O.MethodInfo VideoGetAutoplayMethodInfo a signature where
    overloadedMethod = videoGetAutoplay

#endif

-- method Video::get_file
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType = TInterface Name { namespace = "Gtk" , name = "Video" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkVideo" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gio" , name = "File" })
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_get_file" gtk_video_get_file :: 
    Ptr Video ->                            -- self : TInterface (Name {namespace = "Gtk", name = "Video"})
    IO (Ptr Gio.File.File)

-- | Gets the file played by /@self@/ or 'P.Nothing' if not playing back
-- a file.
videoGetFile ::
    (B.CallStack.HasCallStack, MonadIO m, IsVideo a) =>
    a
    -- ^ /@self@/: a t'GI.Gtk.Objects.Video.Video'
    -> m (Maybe Gio.File.File)
    -- ^ __Returns:__ The file played by /@self@/
videoGetFile :: a -> m (Maybe File)
videoGetFile self :: a
self = IO (Maybe File) -> m (Maybe File)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe File) -> m (Maybe File))
-> IO (Maybe File) -> m (Maybe File)
forall a b. (a -> b) -> a -> b
$ do
    Ptr Video
self' <- a -> IO (Ptr Video)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr File
result <- Ptr Video -> IO (Ptr File)
gtk_video_get_file Ptr Video
self'
    Maybe File
maybeResult <- Ptr File -> (Ptr File -> IO File) -> IO (Maybe File)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr File
result ((Ptr File -> IO File) -> IO (Maybe File))
-> (Ptr File -> IO File) -> IO (Maybe File)
forall a b. (a -> b) -> a -> b
$ \result' :: Ptr File
result' -> do
        File
result'' <- ((ManagedPtr File -> File) -> Ptr File -> IO File
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr File -> File
Gio.File.File) Ptr File
result'
        File -> IO File
forall (m :: * -> *) a. Monad m => a -> m a
return File
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Maybe File -> IO (Maybe File)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe File
maybeResult

#if defined(ENABLE_OVERLOADING)
data VideoGetFileMethodInfo
instance (signature ~ (m (Maybe Gio.File.File)), MonadIO m, IsVideo a) => O.MethodInfo VideoGetFileMethodInfo a signature where
    overloadedMethod = videoGetFile

#endif

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

foreign import ccall "gtk_video_get_loop" gtk_video_get_loop :: 
    Ptr Video ->                            -- self : TInterface (Name {namespace = "Gtk", name = "Video"})
    IO CInt

-- | Returns 'P.True' if videos have been set to loop via 'GI.Gtk.Objects.Video.videoSetLoop'.
videoGetLoop ::
    (B.CallStack.HasCallStack, MonadIO m, IsVideo a) =>
    a
    -- ^ /@self@/: a t'GI.Gtk.Objects.Video.Video'
    -> m Bool
    -- ^ __Returns:__ 'P.True' if streams should loop
videoGetLoop :: a -> m Bool
videoGetLoop self :: a
self = IO Bool -> m Bool
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 Video
self' <- a -> IO (Ptr Video)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    CInt
result <- Ptr Video -> IO CInt
gtk_video_get_loop Ptr Video
self'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= 0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Bool -> IO Bool
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data VideoGetLoopMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsVideo a) => O.MethodInfo VideoGetLoopMethodInfo a signature where
    overloadedMethod = videoGetLoop

#endif

-- method Video::get_media_stream
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType = TInterface Name { namespace = "Gtk" , name = "Video" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkVideo" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gtk" , name = "MediaStream" })
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_get_media_stream" gtk_video_get_media_stream :: 
    Ptr Video ->                            -- self : TInterface (Name {namespace = "Gtk", name = "Video"})
    IO (Ptr Gtk.MediaStream.MediaStream)

-- | Gets the media stream managed by /@self@/ or 'P.Nothing' if none.
videoGetMediaStream ::
    (B.CallStack.HasCallStack, MonadIO m, IsVideo a) =>
    a
    -- ^ /@self@/: a t'GI.Gtk.Objects.Video.Video'
    -> m (Maybe Gtk.MediaStream.MediaStream)
    -- ^ __Returns:__ The media stream managed by /@self@/
videoGetMediaStream :: a -> m (Maybe MediaStream)
videoGetMediaStream self :: a
self = IO (Maybe MediaStream) -> m (Maybe MediaStream)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe MediaStream) -> m (Maybe MediaStream))
-> IO (Maybe MediaStream) -> m (Maybe MediaStream)
forall a b. (a -> b) -> a -> b
$ do
    Ptr Video
self' <- a -> IO (Ptr Video)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr MediaStream
result <- Ptr Video -> IO (Ptr MediaStream)
gtk_video_get_media_stream Ptr Video
self'
    Maybe MediaStream
maybeResult <- Ptr MediaStream
-> (Ptr MediaStream -> IO MediaStream) -> IO (Maybe MediaStream)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr MediaStream
result ((Ptr MediaStream -> IO MediaStream) -> IO (Maybe MediaStream))
-> (Ptr MediaStream -> IO MediaStream) -> IO (Maybe MediaStream)
forall a b. (a -> b) -> a -> b
$ \result' :: Ptr MediaStream
result' -> do
        MediaStream
result'' <- ((ManagedPtr MediaStream -> MediaStream)
-> Ptr MediaStream -> IO MediaStream
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr MediaStream -> MediaStream
Gtk.MediaStream.MediaStream) Ptr MediaStream
result'
        MediaStream -> IO MediaStream
forall (m :: * -> *) a. Monad m => a -> m a
return MediaStream
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Maybe MediaStream -> IO (Maybe MediaStream)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe MediaStream
maybeResult

#if defined(ENABLE_OVERLOADING)
data VideoGetMediaStreamMethodInfo
instance (signature ~ (m (Maybe Gtk.MediaStream.MediaStream)), MonadIO m, IsVideo a) => O.MethodInfo VideoGetMediaStreamMethodInfo a signature where
    overloadedMethod = videoGetMediaStream

#endif

-- method Video::set_autoplay
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType = TInterface Name { namespace = "Gtk" , name = "Video" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkVideo" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "autoplay"
--           , argType = TBasicType TBoolean
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "whether media streams should autoplay"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_set_autoplay" gtk_video_set_autoplay :: 
    Ptr Video ->                            -- self : TInterface (Name {namespace = "Gtk", name = "Video"})
    CInt ->                                 -- autoplay : TBasicType TBoolean
    IO ()

-- | Sets whether /@self@/ automatically starts playback when it becomes visible
-- or when a new file gets loaded.
videoSetAutoplay ::
    (B.CallStack.HasCallStack, MonadIO m, IsVideo a) =>
    a
    -- ^ /@self@/: a t'GI.Gtk.Objects.Video.Video'
    -> Bool
    -- ^ /@autoplay@/: whether media streams should autoplay
    -> m ()
videoSetAutoplay :: a -> Bool -> m ()
videoSetAutoplay self :: a
self autoplay :: Bool
autoplay = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr Video
self' <- a -> IO (Ptr Video)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    let autoplay' :: CInt
autoplay' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
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
fromEnum) Bool
autoplay
    Ptr Video -> CInt -> IO ()
gtk_video_set_autoplay Ptr Video
self' CInt
autoplay'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data VideoSetAutoplayMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsVideo a) => O.MethodInfo VideoSetAutoplayMethodInfo a signature where
    overloadedMethod = videoSetAutoplay

#endif

-- method Video::set_file
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType = TInterface Name { namespace = "Gtk" , name = "Video" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkVideo" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "file"
--           , argType = TInterface Name { namespace = "Gio" , name = "File" }
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the file to play" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_set_file" gtk_video_set_file :: 
    Ptr Video ->                            -- self : TInterface (Name {namespace = "Gtk", name = "Video"})
    Ptr Gio.File.File ->                    -- file : TInterface (Name {namespace = "Gio", name = "File"})
    IO ()

-- | Makes /@self@/ play the given /@file@/.
videoSetFile ::
    (B.CallStack.HasCallStack, MonadIO m, IsVideo a, Gio.File.IsFile b) =>
    a
    -- ^ /@self@/: a t'GI.Gtk.Objects.Video.Video'
    -> Maybe (b)
    -- ^ /@file@/: the file to play
    -> m ()
videoSetFile :: a -> Maybe b -> m ()
videoSetFile self :: a
self file :: Maybe b
file = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr Video
self' <- a -> IO (Ptr Video)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr File
maybeFile <- case Maybe b
file of
        Nothing -> Ptr File -> IO (Ptr File)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr File
forall a. Ptr a
nullPtr
        Just jFile :: b
jFile -> do
            Ptr File
jFile' <- b -> IO (Ptr File)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jFile
            Ptr File -> IO (Ptr File)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr File
jFile'
    Ptr Video -> Ptr File -> IO ()
gtk_video_set_file Ptr Video
self' Ptr File
maybeFile
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Maybe b -> (b -> IO ()) -> IO ()
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Maybe b
file b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data VideoSetFileMethodInfo
instance (signature ~ (Maybe (b) -> m ()), MonadIO m, IsVideo a, Gio.File.IsFile b) => O.MethodInfo VideoSetFileMethodInfo a signature where
    overloadedMethod = videoSetFile

#endif

-- method Video::set_filename
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType = TInterface Name { namespace = "Gtk" , name = "Video" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkVideo" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "filename"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the filename to play"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_set_filename" gtk_video_set_filename :: 
    Ptr Video ->                            -- self : TInterface (Name {namespace = "Gtk", name = "Video"})
    CString ->                              -- filename : TBasicType TUTF8
    IO ()

-- | Makes /@self@/ play the given /@filename@/.
-- 
-- This is a utility function that calls 'GI.Gtk.Objects.Video.videoSetFile',
videoSetFilename ::
    (B.CallStack.HasCallStack, MonadIO m, IsVideo a) =>
    a
    -- ^ /@self@/: a t'GI.Gtk.Objects.Video.Video'
    -> Maybe (T.Text)
    -- ^ /@filename@/: the filename to play
    -> m ()
videoSetFilename :: a -> Maybe Text -> m ()
videoSetFilename self :: a
self filename :: Maybe Text
filename = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr Video
self' <- a -> IO (Ptr Video)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr CChar
maybeFilename <- case Maybe Text
filename of
        Nothing -> Ptr CChar -> IO (Ptr CChar)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
forall a. Ptr a
nullPtr
        Just jFilename :: Text
jFilename -> do
            Ptr CChar
jFilename' <- Text -> IO (Ptr CChar)
textToCString Text
jFilename
            Ptr CChar -> IO (Ptr CChar)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
jFilename'
    Ptr Video -> Ptr CChar -> IO ()
gtk_video_set_filename Ptr Video
self' Ptr CChar
maybeFilename
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Ptr CChar -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CChar
maybeFilename
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data VideoSetFilenameMethodInfo
instance (signature ~ (Maybe (T.Text) -> m ()), MonadIO m, IsVideo a) => O.MethodInfo VideoSetFilenameMethodInfo a signature where
    overloadedMethod = videoSetFilename

#endif

-- method Video::set_loop
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType = TInterface Name { namespace = "Gtk" , name = "Video" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkVideo" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "loop"
--           , argType = TBasicType TBoolean
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "whether media streams should loop"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_set_loop" gtk_video_set_loop :: 
    Ptr Video ->                            -- self : TInterface (Name {namespace = "Gtk", name = "Video"})
    CInt ->                                 -- loop : TBasicType TBoolean
    IO ()

-- | Sets whether new files loaded by /@self@/ should be set to loop.
videoSetLoop ::
    (B.CallStack.HasCallStack, MonadIO m, IsVideo a) =>
    a
    -- ^ /@self@/: a t'GI.Gtk.Objects.Video.Video'
    -> Bool
    -- ^ /@loop@/: whether media streams should loop
    -> m ()
videoSetLoop :: a -> Bool -> m ()
videoSetLoop self :: a
self loop :: Bool
loop = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr Video
self' <- a -> IO (Ptr Video)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    let loop' :: CInt
loop' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
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
fromEnum) Bool
loop
    Ptr Video -> CInt -> IO ()
gtk_video_set_loop Ptr Video
self' CInt
loop'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data VideoSetLoopMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsVideo a) => O.MethodInfo VideoSetLoopMethodInfo a signature where
    overloadedMethod = videoSetLoop

#endif

-- method Video::set_media_stream
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType = TInterface Name { namespace = "Gtk" , name = "Video" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkVideo" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "stream"
--           , argType =
--               TInterface Name { namespace = "Gtk" , name = "MediaStream" }
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "The media stream to play or %NULL to unset"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_set_media_stream" gtk_video_set_media_stream :: 
    Ptr Video ->                            -- self : TInterface (Name {namespace = "Gtk", name = "Video"})
    Ptr Gtk.MediaStream.MediaStream ->      -- stream : TInterface (Name {namespace = "Gtk", name = "MediaStream"})
    IO ()

-- | Sets the media stream to be played back. /@self@/ will take full control
-- of managing the media stream. If you want to manage a media stream
-- yourself, consider using a t'GI.Gtk.Objects.Image.Image' for display.
-- 
-- If you want to display a file, consider using 'GI.Gtk.Objects.Video.videoSetFile'
-- instead.
videoSetMediaStream ::
    (B.CallStack.HasCallStack, MonadIO m, IsVideo a, Gtk.MediaStream.IsMediaStream b) =>
    a
    -- ^ /@self@/: a t'GI.Gtk.Objects.Video.Video'
    -> Maybe (b)
    -- ^ /@stream@/: The media stream to play or 'P.Nothing' to unset
    -> m ()
videoSetMediaStream :: a -> Maybe b -> m ()
videoSetMediaStream self :: a
self stream :: Maybe b
stream = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr Video
self' <- a -> IO (Ptr Video)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr MediaStream
maybeStream <- case Maybe b
stream of
        Nothing -> Ptr MediaStream -> IO (Ptr MediaStream)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr MediaStream
forall a. Ptr a
nullPtr
        Just jStream :: b
jStream -> do
            Ptr MediaStream
jStream' <- b -> IO (Ptr MediaStream)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
jStream
            Ptr MediaStream -> IO (Ptr MediaStream)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr MediaStream
jStream'
    Ptr Video -> Ptr MediaStream -> IO ()
gtk_video_set_media_stream Ptr Video
self' Ptr MediaStream
maybeStream
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Maybe b -> (b -> IO ()) -> IO ()
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Maybe b
stream b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data VideoSetMediaStreamMethodInfo
instance (signature ~ (Maybe (b) -> m ()), MonadIO m, IsVideo a, Gtk.MediaStream.IsMediaStream b) => O.MethodInfo VideoSetMediaStreamMethodInfo a signature where
    overloadedMethod = videoSetMediaStream

#endif

-- method Video::set_resource
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType = TInterface Name { namespace = "Gtk" , name = "Video" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkVideo" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "resource_path"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the resource to set"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_video_set_resource" gtk_video_set_resource :: 
    Ptr Video ->                            -- self : TInterface (Name {namespace = "Gtk", name = "Video"})
    CString ->                              -- resource_path : TBasicType TUTF8
    IO ()

-- | Makes /@self@/ play the resource at the given /@resourcePath@/.
-- 
-- This is a utility function that calls 'GI.Gtk.Objects.Video.videoSetFile',
videoSetResource ::
    (B.CallStack.HasCallStack, MonadIO m, IsVideo a) =>
    a
    -- ^ /@self@/: a t'GI.Gtk.Objects.Video.Video'
    -> Maybe (T.Text)
    -- ^ /@resourcePath@/: the resource to set
    -> m ()
videoSetResource :: a -> Maybe Text -> m ()
videoSetResource self :: a
self resourcePath :: Maybe Text
resourcePath = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr Video
self' <- a -> IO (Ptr Video)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
self
    Ptr CChar
maybeResourcePath <- case Maybe Text
resourcePath of
        Nothing -> Ptr CChar -> IO (Ptr CChar)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
forall a. Ptr a
nullPtr
        Just jResourcePath :: Text
jResourcePath -> do
            Ptr CChar
jResourcePath' <- Text -> IO (Ptr CChar)
textToCString Text
jResourcePath
            Ptr CChar -> IO (Ptr CChar)
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
jResourcePath'
    Ptr Video -> Ptr CChar -> IO ()
gtk_video_set_resource Ptr Video
self' Ptr CChar
maybeResourcePath
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
self
    Ptr CChar -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CChar
maybeResourcePath
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data VideoSetResourceMethodInfo
instance (signature ~ (Maybe (T.Text) -> m ()), MonadIO m, IsVideo a) => O.MethodInfo VideoSetResourceMethodInfo a signature where
    overloadedMethod = videoSetResource

#endif