-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria

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

module GI.GstPbutils.Enums
    ( 

 -- * Enumerations
-- ** AudioVisualizerShader #enum:AudioVisualizerShader#

    AudioVisualizerShader(..)               ,


-- ** DiscovererResult #enum:DiscovererResult#

    DiscovererResult(..)                    ,


-- ** InstallPluginsReturn #enum:InstallPluginsReturn#

    InstallPluginsReturn(..)                ,




    ) 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


-- Enum InstallPluginsReturn
-- | Result codes returned by 'GI.GstPbutils.Functions.installPluginsAsync' and
-- 'GI.GstPbutils.Functions.installPluginsSync', and also the result code passed to the
-- t'GI.GstPbutils.Callbacks.InstallPluginsResultFunc' specified with 'GI.GstPbutils.Functions.installPluginsAsync'.
-- 
-- These codes indicate success or failure of starting an external installer
-- program and to what extent the requested plugins could be installed.
data InstallPluginsReturn = 
      InstallPluginsReturnSuccess
    -- ^ all of the requested plugins could be
    --     installed
    | InstallPluginsReturnNotFound
    -- ^ no appropriate installation candidate for
    --     any of the requested plugins could be found. Only return this if nothing
    --     has been installed. Return @/GST_INSTALL_PLUGINS_PARTIAL_SUCCESS/@ if
    --     some (but not all) of the requested plugins could be installed.
    | InstallPluginsReturnError
    -- ^ an error occured during the installation. If
    --     this happens, the  user has already seen an error message and another
    --     one should not be displayed
    | InstallPluginsReturnPartialSuccess
    -- ^ some of the requested plugins could
    --     be installed, but not all
    | InstallPluginsReturnUserAbort
    -- ^ the user has aborted the installation
    | InstallPluginsReturnCrashed
    -- ^ the installer had an unclean exit code
    --     (ie. death by signal)
    | InstallPluginsReturnInvalid
    -- ^ the helper returned an invalid status code
    | InstallPluginsReturnStartedOk
    -- ^ returned by 'GI.GstPbutils.Functions.installPluginsAsync' to
    --     indicate that everything went fine so far and the provided callback
    --     will be called with the result of the installation later
    | InstallPluginsReturnInternalFailure
    -- ^ some internal failure has
    --     occured when trying to start the installer
    | InstallPluginsReturnHelperMissing
    -- ^ the helper script to call the
    --     actual installer is not installed
    | InstallPluginsReturnInstallInProgress
    -- ^ a previously-started plugin
    --     installation is still in progress, try again later
    | AnotherInstallPluginsReturn Int
    -- ^ Catch-all for unknown values
    deriving (Int -> InstallPluginsReturn -> ShowS
[InstallPluginsReturn] -> ShowS
InstallPluginsReturn -> String
(Int -> InstallPluginsReturn -> ShowS)
-> (InstallPluginsReturn -> String)
-> ([InstallPluginsReturn] -> ShowS)
-> Show InstallPluginsReturn
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InstallPluginsReturn] -> ShowS
$cshowList :: [InstallPluginsReturn] -> ShowS
show :: InstallPluginsReturn -> String
$cshow :: InstallPluginsReturn -> String
showsPrec :: Int -> InstallPluginsReturn -> ShowS
$cshowsPrec :: Int -> InstallPluginsReturn -> ShowS
Show, InstallPluginsReturn -> InstallPluginsReturn -> Bool
(InstallPluginsReturn -> InstallPluginsReturn -> Bool)
-> (InstallPluginsReturn -> InstallPluginsReturn -> Bool)
-> Eq InstallPluginsReturn
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InstallPluginsReturn -> InstallPluginsReturn -> Bool
$c/= :: InstallPluginsReturn -> InstallPluginsReturn -> Bool
== :: InstallPluginsReturn -> InstallPluginsReturn -> Bool
$c== :: InstallPluginsReturn -> InstallPluginsReturn -> Bool
Eq)

instance P.Enum InstallPluginsReturn where
    fromEnum :: InstallPluginsReturn -> Int
fromEnum InstallPluginsReturnSuccess = 0
    fromEnum InstallPluginsReturnNotFound = 1
    fromEnum InstallPluginsReturnError = 2
    fromEnum InstallPluginsReturnPartialSuccess = 3
    fromEnum InstallPluginsReturnUserAbort = 4
    fromEnum InstallPluginsReturnCrashed = 100
    fromEnum InstallPluginsReturnInvalid = 101
    fromEnum InstallPluginsReturnStartedOk = 200
    fromEnum InstallPluginsReturnInternalFailure = 201
    fromEnum InstallPluginsReturnHelperMissing = 202
    fromEnum InstallPluginsReturnInstallInProgress = 203
    fromEnum (AnotherInstallPluginsReturn k :: Int
k) = Int
k

    toEnum :: Int -> InstallPluginsReturn
toEnum 0 = InstallPluginsReturn
InstallPluginsReturnSuccess
    toEnum 1 = InstallPluginsReturn
InstallPluginsReturnNotFound
    toEnum 2 = InstallPluginsReturn
InstallPluginsReturnError
    toEnum 3 = InstallPluginsReturn
InstallPluginsReturnPartialSuccess
    toEnum 4 = InstallPluginsReturn
InstallPluginsReturnUserAbort
    toEnum 100 = InstallPluginsReturn
InstallPluginsReturnCrashed
    toEnum 101 = InstallPluginsReturn
InstallPluginsReturnInvalid
    toEnum 200 = InstallPluginsReturn
InstallPluginsReturnStartedOk
    toEnum 201 = InstallPluginsReturn
InstallPluginsReturnInternalFailure
    toEnum 202 = InstallPluginsReturn
InstallPluginsReturnHelperMissing
    toEnum 203 = InstallPluginsReturn
InstallPluginsReturnInstallInProgress
    toEnum k :: Int
k = Int -> InstallPluginsReturn
AnotherInstallPluginsReturn Int
k

instance P.Ord InstallPluginsReturn where
    compare :: InstallPluginsReturn -> InstallPluginsReturn -> Ordering
compare a :: InstallPluginsReturn
a b :: InstallPluginsReturn
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (InstallPluginsReturn -> Int
forall a. Enum a => a -> Int
P.fromEnum InstallPluginsReturn
a) (InstallPluginsReturn -> Int
forall a. Enum a => a -> Int
P.fromEnum InstallPluginsReturn
b)

foreign import ccall "gst_install_plugins_return_get_type" c_gst_install_plugins_return_get_type :: 
    IO GType

instance BoxedEnum InstallPluginsReturn where
    boxedEnumType :: InstallPluginsReturn -> IO GType
boxedEnumType _ = IO GType
c_gst_install_plugins_return_get_type

-- Enum DiscovererResult
-- | Result values for the discovery process.
data DiscovererResult = 
      DiscovererResultOk
    -- ^ The discovery was successful
    | DiscovererResultUriInvalid
    -- ^ the URI is invalid
    | DiscovererResultError
    -- ^ an error happened and the GError is set
    | DiscovererResultTimeout
    -- ^ the discovery timed-out
    | DiscovererResultBusy
    -- ^ the discoverer was already discovering a file
    | DiscovererResultMissingPlugins
    -- ^ Some plugins are missing for full discovery
    | AnotherDiscovererResult Int
    -- ^ Catch-all for unknown values
    deriving (Int -> DiscovererResult -> ShowS
[DiscovererResult] -> ShowS
DiscovererResult -> String
(Int -> DiscovererResult -> ShowS)
-> (DiscovererResult -> String)
-> ([DiscovererResult] -> ShowS)
-> Show DiscovererResult
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DiscovererResult] -> ShowS
$cshowList :: [DiscovererResult] -> ShowS
show :: DiscovererResult -> String
$cshow :: DiscovererResult -> String
showsPrec :: Int -> DiscovererResult -> ShowS
$cshowsPrec :: Int -> DiscovererResult -> ShowS
Show, DiscovererResult -> DiscovererResult -> Bool
(DiscovererResult -> DiscovererResult -> Bool)
-> (DiscovererResult -> DiscovererResult -> Bool)
-> Eq DiscovererResult
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DiscovererResult -> DiscovererResult -> Bool
$c/= :: DiscovererResult -> DiscovererResult -> Bool
== :: DiscovererResult -> DiscovererResult -> Bool
$c== :: DiscovererResult -> DiscovererResult -> Bool
Eq)

instance P.Enum DiscovererResult where
    fromEnum :: DiscovererResult -> Int
fromEnum DiscovererResultOk = 0
    fromEnum DiscovererResultUriInvalid = 1
    fromEnum DiscovererResultError = 2
    fromEnum DiscovererResultTimeout = 3
    fromEnum DiscovererResultBusy = 4
    fromEnum DiscovererResultMissingPlugins = 5
    fromEnum (AnotherDiscovererResult k :: Int
k) = Int
k

    toEnum :: Int -> DiscovererResult
toEnum 0 = DiscovererResult
DiscovererResultOk
    toEnum 1 = DiscovererResult
DiscovererResultUriInvalid
    toEnum 2 = DiscovererResult
DiscovererResultError
    toEnum 3 = DiscovererResult
DiscovererResultTimeout
    toEnum 4 = DiscovererResult
DiscovererResultBusy
    toEnum 5 = DiscovererResult
DiscovererResultMissingPlugins
    toEnum k :: Int
k = Int -> DiscovererResult
AnotherDiscovererResult Int
k

instance P.Ord DiscovererResult where
    compare :: DiscovererResult -> DiscovererResult -> Ordering
compare a :: DiscovererResult
a b :: DiscovererResult
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (DiscovererResult -> Int
forall a. Enum a => a -> Int
P.fromEnum DiscovererResult
a) (DiscovererResult -> Int
forall a. Enum a => a -> Int
P.fromEnum DiscovererResult
b)

foreign import ccall "gst_discoverer_result_get_type" c_gst_discoverer_result_get_type :: 
    IO GType

instance BoxedEnum DiscovererResult where
    boxedEnumType :: DiscovererResult -> IO GType
boxedEnumType _ = IO GType
c_gst_discoverer_result_get_type

-- Enum AudioVisualizerShader
-- | Different types of supported background shading functions.
data AudioVisualizerShader = 
      AudioVisualizerShaderNone
    -- ^ no shading
    | AudioVisualizerShaderFade
    -- ^ plain fading
    | AudioVisualizerShaderFadeAndMoveUp
    -- ^ fade and move up
    | AudioVisualizerShaderFadeAndMoveDown
    -- ^ fade and move down
    | AudioVisualizerShaderFadeAndMoveLeft
    -- ^ fade and move left
    | AudioVisualizerShaderFadeAndMoveRight
    -- ^ fade and move right
    | AudioVisualizerShaderFadeAndMoveHorizOut
    -- ^ fade and move horizontally out
    | AudioVisualizerShaderFadeAndMoveHorizIn
    -- ^ fade and move horizontally in
    | AudioVisualizerShaderFadeAndMoveVertOut
    -- ^ fade and move vertically out
    | AudioVisualizerShaderFadeAndMoveVertIn
    -- ^ fade and move vertically in
    | AnotherAudioVisualizerShader Int
    -- ^ Catch-all for unknown values
    deriving (Int -> AudioVisualizerShader -> ShowS
[AudioVisualizerShader] -> ShowS
AudioVisualizerShader -> String
(Int -> AudioVisualizerShader -> ShowS)
-> (AudioVisualizerShader -> String)
-> ([AudioVisualizerShader] -> ShowS)
-> Show AudioVisualizerShader
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AudioVisualizerShader] -> ShowS
$cshowList :: [AudioVisualizerShader] -> ShowS
show :: AudioVisualizerShader -> String
$cshow :: AudioVisualizerShader -> String
showsPrec :: Int -> AudioVisualizerShader -> ShowS
$cshowsPrec :: Int -> AudioVisualizerShader -> ShowS
Show, AudioVisualizerShader -> AudioVisualizerShader -> Bool
(AudioVisualizerShader -> AudioVisualizerShader -> Bool)
-> (AudioVisualizerShader -> AudioVisualizerShader -> Bool)
-> Eq AudioVisualizerShader
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AudioVisualizerShader -> AudioVisualizerShader -> Bool
$c/= :: AudioVisualizerShader -> AudioVisualizerShader -> Bool
== :: AudioVisualizerShader -> AudioVisualizerShader -> Bool
$c== :: AudioVisualizerShader -> AudioVisualizerShader -> Bool
Eq)

instance P.Enum AudioVisualizerShader where
    fromEnum :: AudioVisualizerShader -> Int
fromEnum AudioVisualizerShaderNone = 0
    fromEnum AudioVisualizerShaderFade = 1
    fromEnum AudioVisualizerShaderFadeAndMoveUp = 2
    fromEnum AudioVisualizerShaderFadeAndMoveDown = 3
    fromEnum AudioVisualizerShaderFadeAndMoveLeft = 4
    fromEnum AudioVisualizerShaderFadeAndMoveRight = 5
    fromEnum AudioVisualizerShaderFadeAndMoveHorizOut = 6
    fromEnum AudioVisualizerShaderFadeAndMoveHorizIn = 7
    fromEnum AudioVisualizerShaderFadeAndMoveVertOut = 8
    fromEnum AudioVisualizerShaderFadeAndMoveVertIn = 9
    fromEnum (AnotherAudioVisualizerShader k :: Int
k) = Int
k

    toEnum :: Int -> AudioVisualizerShader
toEnum 0 = AudioVisualizerShader
AudioVisualizerShaderNone
    toEnum 1 = AudioVisualizerShader
AudioVisualizerShaderFade
    toEnum 2 = AudioVisualizerShader
AudioVisualizerShaderFadeAndMoveUp
    toEnum 3 = AudioVisualizerShader
AudioVisualizerShaderFadeAndMoveDown
    toEnum 4 = AudioVisualizerShader
AudioVisualizerShaderFadeAndMoveLeft
    toEnum 5 = AudioVisualizerShader
AudioVisualizerShaderFadeAndMoveRight
    toEnum 6 = AudioVisualizerShader
AudioVisualizerShaderFadeAndMoveHorizOut
    toEnum 7 = AudioVisualizerShader
AudioVisualizerShaderFadeAndMoveHorizIn
    toEnum 8 = AudioVisualizerShader
AudioVisualizerShaderFadeAndMoveVertOut
    toEnum 9 = AudioVisualizerShader
AudioVisualizerShaderFadeAndMoveVertIn
    toEnum k :: Int
k = Int -> AudioVisualizerShader
AnotherAudioVisualizerShader Int
k

instance P.Ord AudioVisualizerShader where
    compare :: AudioVisualizerShader -> AudioVisualizerShader -> Ordering
compare a :: AudioVisualizerShader
a b :: AudioVisualizerShader
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (AudioVisualizerShader -> Int
forall a. Enum a => a -> Int
P.fromEnum AudioVisualizerShader
a) (AudioVisualizerShader -> Int
forall a. Enum a => a -> Int
P.fromEnum AudioVisualizerShader
b)

foreign import ccall "gst_audio_visualizer_shader_get_type" c_gst_audio_visualizer_shader_get_type :: 
    IO GType

instance BoxedEnum AudioVisualizerShader where
    boxedEnumType :: AudioVisualizerShader -> IO GType
boxedEnumType _ = IO GType
c_gst_audio_visualizer_shader_get_type