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

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

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.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.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP


-- Enum InstallPluginsReturn
{- |
Result codes returned by 'GI.GstPbutils.Functions.installPluginsAsync' and
'GI.GstPbutils.Functions.installPluginsSync', and also the result code passed to the
'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 (Show, Eq)

instance P.Enum InstallPluginsReturn where
    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) = k

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

instance P.Ord InstallPluginsReturn where
    compare a b = P.compare (P.fromEnum a) (P.fromEnum b)

foreign import ccall "gst_install_plugins_return_get_type" c_gst_install_plugins_return_get_type ::
    IO GType

instance BoxedEnum InstallPluginsReturn where
    boxedEnumType _ = 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 (Show, Eq)

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

    toEnum 0 = DiscovererResultOk
    toEnum 1 = DiscovererResultUriInvalid
    toEnum 2 = DiscovererResultError
    toEnum 3 = DiscovererResultTimeout
    toEnum 4 = DiscovererResultBusy
    toEnum 5 = DiscovererResultMissingPlugins
    toEnum k = AnotherDiscovererResult k

instance P.Ord DiscovererResult where
    compare a b = P.compare (P.fromEnum a) (P.fromEnum b)

foreign import ccall "gst_discoverer_result_get_type" c_gst_discoverer_result_get_type ::
    IO GType

instance BoxedEnum DiscovererResult where
    boxedEnumType _ = 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 (Show, Eq)

instance P.Enum AudioVisualizerShader where
    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) = k

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

instance P.Ord AudioVisualizerShader where
    compare a b = P.compare (P.fromEnum a) (P.fromEnum b)

foreign import ccall "gst_audio_visualizer_shader_get_type" c_gst_audio_visualizer_shader_get_type ::
    IO GType

instance BoxedEnum AudioVisualizerShader where
    boxedEnumType _ = c_gst_audio_visualizer_shader_get_type