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

module GI.GtkSource.Flags
    ( 

-- * Exported types
    SortFlags(..)                           ,
    GutterRendererState(..)                 ,
    FileSaverFlags(..)                      ,
    DrawSpacesFlags(..)                     ,
    CompletionActivation(..)                ,


    ) 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.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


-- Flags SortFlags
{- |
/No description available in the introspection data./

@since 3.18
-}
data SortFlags = 
      SortFlagsNone
    {- ^
    no flags specified
    -}
    | SortFlagsCaseSensitive
    {- ^
    case sensitive sort
    -}
    | SortFlagsReverseOrder
    {- ^
    sort in reverse order
    -}
    | SortFlagsRemoveDuplicates
    {- ^
    remove duplicates
    -}
    | AnotherSortFlags Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum SortFlags where
    fromEnum SortFlagsNone = 0
    fromEnum SortFlagsCaseSensitive = 1
    fromEnum SortFlagsReverseOrder = 2
    fromEnum SortFlagsRemoveDuplicates = 4
    fromEnum (AnotherSortFlags k) = k

    toEnum 0 = SortFlagsNone
    toEnum 1 = SortFlagsCaseSensitive
    toEnum 2 = SortFlagsReverseOrder
    toEnum 4 = SortFlagsRemoveDuplicates
    toEnum k = AnotherSortFlags k

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

foreign import ccall "gtk_source_sort_flags_get_type" c_gtk_source_sort_flags_get_type :: 
    IO GType

instance BoxedFlags SortFlags where
    boxedFlagsType _ = c_gtk_source_sort_flags_get_type

instance IsGFlag SortFlags

-- Flags GutterRendererState
{- |
/No description available in the introspection data./
-}
data GutterRendererState = 
      GutterRendererStateNormal
    {- ^
    normal state
    -}
    | GutterRendererStateCursor
    {- ^
    area in the renderer represents the
    line on which the insert cursor is currently positioned
    -}
    | GutterRendererStatePrelit
    {- ^
    the mouse pointer is currently
    over the activatable area of the renderer
    -}
    | GutterRendererStateSelected
    {- ^
    area in the renderer represents
    a line in the buffer which contains part of the selection
    -}
    | AnotherGutterRendererState Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum GutterRendererState where
    fromEnum GutterRendererStateNormal = 0
    fromEnum GutterRendererStateCursor = 1
    fromEnum GutterRendererStatePrelit = 2
    fromEnum GutterRendererStateSelected = 4
    fromEnum (AnotherGutterRendererState k) = k

    toEnum 0 = GutterRendererStateNormal
    toEnum 1 = GutterRendererStateCursor
    toEnum 2 = GutterRendererStatePrelit
    toEnum 4 = GutterRendererStateSelected
    toEnum k = AnotherGutterRendererState k

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

foreign import ccall "gtk_source_gutter_renderer_state_get_type" c_gtk_source_gutter_renderer_state_get_type :: 
    IO GType

instance BoxedFlags GutterRendererState where
    boxedFlagsType _ = c_gtk_source_gutter_renderer_state_get_type

instance IsGFlag GutterRendererState

-- Flags FileSaverFlags
{- |
Flags to define the behavior of a 'GI.GtkSource.Objects.FileSaver.FileSaver'.

@since 3.14
-}
data FileSaverFlags = 
      FileSaverFlagsNone
    {- ^
    No flags.
    -}
    | FileSaverFlagsIgnoreInvalidChars
    {- ^
    Ignore invalid characters.
    -}
    | FileSaverFlagsIgnoreModificationTime
    {- ^
    Save file despite external modifications.
    -}
    | FileSaverFlagsCreateBackup
    {- ^
    Create a backup before saving the file.
    -}
    | AnotherFileSaverFlags Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum FileSaverFlags where
    fromEnum FileSaverFlagsNone = 0
    fromEnum FileSaverFlagsIgnoreInvalidChars = 1
    fromEnum FileSaverFlagsIgnoreModificationTime = 2
    fromEnum FileSaverFlagsCreateBackup = 4
    fromEnum (AnotherFileSaverFlags k) = k

    toEnum 0 = FileSaverFlagsNone
    toEnum 1 = FileSaverFlagsIgnoreInvalidChars
    toEnum 2 = FileSaverFlagsIgnoreModificationTime
    toEnum 4 = FileSaverFlagsCreateBackup
    toEnum k = AnotherFileSaverFlags k

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

foreign import ccall "gtk_source_file_saver_flags_get_type" c_gtk_source_file_saver_flags_get_type :: 
    IO GType

instance BoxedFlags FileSaverFlags where
    boxedFlagsType _ = c_gtk_source_file_saver_flags_get_type

instance IsGFlag FileSaverFlags

-- Flags DrawSpacesFlags
{- |
GtkSourceDrawSpacesFlags determine what kind of spaces whould be drawn. If none
of GTK_SOURCE_DRAW_SPACES_LEADING, GTK_SOURCE_DRAW_SPACES_TEXT or
GTK_SOURCE_DRAW_SPACES_TRAILING is specified, whitespaces at any position in
the line will be drawn (i.e. it has the same effect as specifying all of them).
-}
data DrawSpacesFlags = 
      DrawSpacesFlagsSpace
    {- ^
    whether the space character should be drawn.
    -}
    | DrawSpacesFlagsTab
    {- ^
    whether the tab character should be drawn.
    -}
    | DrawSpacesFlagsNewline
    {- ^
    whether the line breaks should be drawn. If
      the 'GI.GtkSource.Objects.Buffer.Buffer':@/implicit-trailing-newline/@ property is 'True', a line
      break is also drawn at the end of the buffer.
    -}
    | DrawSpacesFlagsNbsp
    {- ^
    whether the non-breaking whitespaces should be drawn.
    -}
    | DrawSpacesFlagsLeading
    {- ^
    whether leading whitespaces should be drawn.
    -}
    | DrawSpacesFlagsText
    {- ^
    whether whitespaces inside text should be drawn.
    -}
    | DrawSpacesFlagsTrailing
    {- ^
    whether trailing whitespaces should be drawn.
    -}
    | DrawSpacesFlagsAll
    {- ^
    wheter all kind of spaces should be drawn.
    -}
    | AnotherDrawSpacesFlags Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum DrawSpacesFlags where
    fromEnum DrawSpacesFlagsSpace = 1
    fromEnum DrawSpacesFlagsTab = 2
    fromEnum DrawSpacesFlagsNewline = 4
    fromEnum DrawSpacesFlagsNbsp = 8
    fromEnum DrawSpacesFlagsLeading = 16
    fromEnum DrawSpacesFlagsText = 32
    fromEnum DrawSpacesFlagsTrailing = 64
    fromEnum DrawSpacesFlagsAll = 127
    fromEnum (AnotherDrawSpacesFlags k) = k

    toEnum 1 = DrawSpacesFlagsSpace
    toEnum 2 = DrawSpacesFlagsTab
    toEnum 4 = DrawSpacesFlagsNewline
    toEnum 8 = DrawSpacesFlagsNbsp
    toEnum 16 = DrawSpacesFlagsLeading
    toEnum 32 = DrawSpacesFlagsText
    toEnum 64 = DrawSpacesFlagsTrailing
    toEnum 127 = DrawSpacesFlagsAll
    toEnum k = AnotherDrawSpacesFlags k

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

foreign import ccall "gtk_source_draw_spaces_flags_get_type" c_gtk_source_draw_spaces_flags_get_type :: 
    IO GType

instance BoxedFlags DrawSpacesFlags where
    boxedFlagsType _ = c_gtk_source_draw_spaces_flags_get_type

instance IsGFlag DrawSpacesFlags

-- Flags CompletionActivation
{- |
/No description available in the introspection data./
-}
data CompletionActivation = 
      CompletionActivationNone
    {- ^
    None.
    -}
    | CompletionActivationInteractive
    {- ^
    Interactive activation. By
    default, it occurs on each insertion in the 'GI.Gtk.Objects.TextBuffer.TextBuffer'. This can be
    blocked temporarily with 'GI.GtkSource.Objects.Completion.completionBlockInteractive'.
    -}
    | CompletionActivationUserRequested
    {- ^
    User requested activation.
    By default, it occurs when the user presses
    \<keycombo>\<keycap>Control\<\/keycap>\<keycap>space\<\/keycap>\<\/keycombo>.
    -}
    | AnotherCompletionActivation Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum CompletionActivation where
    fromEnum CompletionActivationNone = 0
    fromEnum CompletionActivationInteractive = 1
    fromEnum CompletionActivationUserRequested = 2
    fromEnum (AnotherCompletionActivation k) = k

    toEnum 0 = CompletionActivationNone
    toEnum 1 = CompletionActivationInteractive
    toEnum 2 = CompletionActivationUserRequested
    toEnum k = AnotherCompletionActivation k

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

foreign import ccall "gtk_source_completion_activation_get_type" c_gtk_source_completion_activation_get_type :: 
    IO GType

instance BoxedFlags CompletionActivation where
    boxedFlagsType _ = c_gtk_source_completion_activation_get_type

instance IsGFlag CompletionActivation