module System.Terminal.Emulator.DECPrivateMode
  ( DECPrivateMode (..),
    intToDECPrivateMode,
  )
where

data DECPrivateMode
  = -- | @1@
    --
    -- @DECSET@: Application Cursor Keys (DECCKM)
    --
    -- @DECRST@: Normal Cursor Keys (DECCKM)
    DECCKM
  | -- | @2@
    --
    -- @DECSET@: Designate USASCII for character sets G0-G3 (DECANM), and set VT100 mode.
    --
    -- @DECRST@: Designate VT52 mode (DECANM).
    DECANM
  | -- | @3@
    --
    -- @DECSET@: 132 Column Mode (DECCOLM)
    --
    -- @DECRST@: 0 Column Mode (DECCOLM)
    DECCOLM
  | -- | @4@
    --
    -- @DECSET@: Smooth (Slow) Scroll (DECSCLM)
    --
    -- @DECRST@: Jump (Fast) Scroll (DECSCLM)
    DECSCLM
  | -- | @5@
    --
    -- @DECSET@: Reverse Video (DECSCNM)
    --
    -- @DECRST@: Normal Video (DECSCNM)
    DECSCNM
  | -- | @6@
    --
    -- @DECSET@: Origin Mode (DECOM)
    --
    -- @DECRST@: Normal Cursor Mode (DECOM)
    DECOM
  | -- | @7@
    --
    -- @DECSET@: Wraparound Mode (DECAWM)
    --
    -- @DECRST@: No Wraparound Mode (DECAWM)
    DECAWM
  | -- | @8@
    --
    -- @DECSET@: Auto-repeat Keys (DECARM)
    --
    -- @DECRST@: No Auto-repeat Keys (DECARM)
    DECARM
  | -- | @9@
    --
    -- @DECSET@: Send Mouse X & Y on button press. See the section Mouse Tracking.
    --
    -- @DECRST@: Don’t Send Mouse X & Y on button press
    X10MouseCompatibilityMode
  | -- | @12@
    --
    -- @DECSET@: Start Blinking Cursor (att610)
    --
    -- @DECRST@: Stop Blinking Cursor (att610)
    Att610
  | -- | @18@
    --
    -- @DECSET@: Print form feed (DECPFF)
    --
    -- @DECRST@: Don’t print form feed (DECPFF)
    DECPFF
  | -- | @19@
    --
    -- @DECSET@: Set print extent to full screen (DECPEX)
    --
    -- @DECRST@: Limit print to scrolling region (DECPEX)
    DECPEX
  | -- | @25@
    --
    -- @DECSET@: Show Cursor (DECTCEM)
    --
    -- @DECRST@: Hide Cursor (DECTCEM)
    DECTCEM
  | -- | @42@
    --
    -- @DECSET@: Enable Nation Replacement Character sets (DECNRCM)
    --
    -- @DECRST@: Disable Nation Replacement Character sets (DECNRCM)
    DECNRCM
  | -- | @1000@
    --
    -- @DECSET@: Send Mouse X & Y on button press and release. See the section Mouse Tracking.
    --
    -- @DECRST@: Don’t Send Mouse X & Y on button press and release. See the section Mouse Tracking.
    ReportButtonPress
  | -- | @1001@
    --
    -- @DECSET@: Use Hilite Mouse Tracking
    --
    -- @DECRST@: Don’t Use Hilite Mouse Tracking
    MouseHighlightMode
  | -- | @1002@
    --
    -- @DECSET@: Use Cell Motion Mouse Tracking.
    --
    -- @DECRST@: Don’t Use Cell Motion Mouse Tracking
    ReportMotionOnButtonPress
  | -- | @1003@
    --
    -- @DECSET@: Use All Motion Mouse Tracking.
    --
    -- @DECRST@: Don’t Use All Motion Mouse Tracking
    EnableAllMouseMotions
  | -- | @47@ / @1047@
    --
    -- @DECSET@: Use Alternate Screen Buffer (unless disabled by the titeInhibit resource)
    --
    -- @DECRST@: Use Normal Screen Buffer, clearing screen first if in the Alternate Screen (unless disabled by the titeInhibit resource)
    UseAlternateScreenBuffer
  | -- | @1048@
    --
    -- @DECSET@: Save cursor as in DECSC (unless disabled by the titeInhibit resource)
    --
    -- @DECRST@: Restore cursor as in DECRC (unless disabled by the titeInhibit resource)
    SaveCursorAsInDECSC
  | -- | @1049@
    --
    -- @DECSET@: Save cursor as in DECSC and use Alternate Screen Buffer, clearing it first (unless disabled by the titeInhibit resource). This combines the effects of the 1047 and 1048 modes. Use this with terminfo-based applications rather than the 47 mode.
    --
    -- @DECRST@: Use Normal Screen Buffer and restore cursor as in DECRC (unless disabled by the titeInhibit resource). This combines the effects of the 1047 and 1048 modes. Use this with terminfo-based applications rather than the 47 mode.
    SaveCursorAsInDECSCAndUseAlternateScreenBuffer
  | -- | @2004@
    --
    -- @DECSET@: Set bracketed paste mode.
    --
    -- @DECRST@: Reset bracketed paste mode.
    BracketedPasteMode
  deriving (Int -> DECPrivateMode -> ShowS
[DECPrivateMode] -> ShowS
DECPrivateMode -> String
(Int -> DECPrivateMode -> ShowS)
-> (DECPrivateMode -> String)
-> ([DECPrivateMode] -> ShowS)
-> Show DECPrivateMode
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DECPrivateMode] -> ShowS
$cshowList :: [DECPrivateMode] -> ShowS
show :: DECPrivateMode -> String
$cshow :: DECPrivateMode -> String
showsPrec :: Int -> DECPrivateMode -> ShowS
$cshowsPrec :: Int -> DECPrivateMode -> ShowS
Show, DECPrivateMode -> DECPrivateMode -> Bool
(DECPrivateMode -> DECPrivateMode -> Bool)
-> (DECPrivateMode -> DECPrivateMode -> Bool) -> Eq DECPrivateMode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DECPrivateMode -> DECPrivateMode -> Bool
$c/= :: DECPrivateMode -> DECPrivateMode -> Bool
== :: DECPrivateMode -> DECPrivateMode -> Bool
$c== :: DECPrivateMode -> DECPrivateMode -> Bool
Eq, Eq DECPrivateMode
Eq DECPrivateMode
-> (DECPrivateMode -> DECPrivateMode -> Ordering)
-> (DECPrivateMode -> DECPrivateMode -> Bool)
-> (DECPrivateMode -> DECPrivateMode -> Bool)
-> (DECPrivateMode -> DECPrivateMode -> Bool)
-> (DECPrivateMode -> DECPrivateMode -> Bool)
-> (DECPrivateMode -> DECPrivateMode -> DECPrivateMode)
-> (DECPrivateMode -> DECPrivateMode -> DECPrivateMode)
-> Ord DECPrivateMode
DECPrivateMode -> DECPrivateMode -> Bool
DECPrivateMode -> DECPrivateMode -> Ordering
DECPrivateMode -> DECPrivateMode -> DECPrivateMode
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: DECPrivateMode -> DECPrivateMode -> DECPrivateMode
$cmin :: DECPrivateMode -> DECPrivateMode -> DECPrivateMode
max :: DECPrivateMode -> DECPrivateMode -> DECPrivateMode
$cmax :: DECPrivateMode -> DECPrivateMode -> DECPrivateMode
>= :: DECPrivateMode -> DECPrivateMode -> Bool
$c>= :: DECPrivateMode -> DECPrivateMode -> Bool
> :: DECPrivateMode -> DECPrivateMode -> Bool
$c> :: DECPrivateMode -> DECPrivateMode -> Bool
<= :: DECPrivateMode -> DECPrivateMode -> Bool
$c<= :: DECPrivateMode -> DECPrivateMode -> Bool
< :: DECPrivateMode -> DECPrivateMode -> Bool
$c< :: DECPrivateMode -> DECPrivateMode -> Bool
compare :: DECPrivateMode -> DECPrivateMode -> Ordering
$ccompare :: DECPrivateMode -> DECPrivateMode -> Ordering
$cp1Ord :: Eq DECPrivateMode
Ord, Int -> DECPrivateMode
DECPrivateMode -> Int
DECPrivateMode -> [DECPrivateMode]
DECPrivateMode -> DECPrivateMode
DECPrivateMode -> DECPrivateMode -> [DECPrivateMode]
DECPrivateMode
-> DECPrivateMode -> DECPrivateMode -> [DECPrivateMode]
(DECPrivateMode -> DECPrivateMode)
-> (DECPrivateMode -> DECPrivateMode)
-> (Int -> DECPrivateMode)
-> (DECPrivateMode -> Int)
-> (DECPrivateMode -> [DECPrivateMode])
-> (DECPrivateMode -> DECPrivateMode -> [DECPrivateMode])
-> (DECPrivateMode -> DECPrivateMode -> [DECPrivateMode])
-> (DECPrivateMode
    -> DECPrivateMode -> DECPrivateMode -> [DECPrivateMode])
-> Enum DECPrivateMode
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: DECPrivateMode
-> DECPrivateMode -> DECPrivateMode -> [DECPrivateMode]
$cenumFromThenTo :: DECPrivateMode
-> DECPrivateMode -> DECPrivateMode -> [DECPrivateMode]
enumFromTo :: DECPrivateMode -> DECPrivateMode -> [DECPrivateMode]
$cenumFromTo :: DECPrivateMode -> DECPrivateMode -> [DECPrivateMode]
enumFromThen :: DECPrivateMode -> DECPrivateMode -> [DECPrivateMode]
$cenumFromThen :: DECPrivateMode -> DECPrivateMode -> [DECPrivateMode]
enumFrom :: DECPrivateMode -> [DECPrivateMode]
$cenumFrom :: DECPrivateMode -> [DECPrivateMode]
fromEnum :: DECPrivateMode -> Int
$cfromEnum :: DECPrivateMode -> Int
toEnum :: Int -> DECPrivateMode
$ctoEnum :: Int -> DECPrivateMode
pred :: DECPrivateMode -> DECPrivateMode
$cpred :: DECPrivateMode -> DECPrivateMode
succ :: DECPrivateMode -> DECPrivateMode
$csucc :: DECPrivateMode -> DECPrivateMode
Enum, DECPrivateMode
DECPrivateMode -> DECPrivateMode -> Bounded DECPrivateMode
forall a. a -> a -> Bounded a
maxBound :: DECPrivateMode
$cmaxBound :: DECPrivateMode
minBound :: DECPrivateMode
$cminBound :: DECPrivateMode
Bounded)

intToDECPrivateMode :: Int -> Maybe DECPrivateMode
intToDECPrivateMode :: Int -> Maybe DECPrivateMode
intToDECPrivateMode Int
1 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECCKM
intToDECPrivateMode Int
2 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECANM
intToDECPrivateMode Int
3 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECCOLM
intToDECPrivateMode Int
4 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECSCLM
intToDECPrivateMode Int
5 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECSCNM
intToDECPrivateMode Int
6 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECOM
intToDECPrivateMode Int
7 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECAWM
intToDECPrivateMode Int
8 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECARM
intToDECPrivateMode Int
9 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
X10MouseCompatibilityMode
intToDECPrivateMode Int
12 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
Att610
intToDECPrivateMode Int
18 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECPFF
intToDECPrivateMode Int
19 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECPEX
intToDECPrivateMode Int
25 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECTCEM
intToDECPrivateMode Int
42 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
DECNRCM
intToDECPrivateMode Int
1000 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
ReportButtonPress
intToDECPrivateMode Int
1001 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
MouseHighlightMode
intToDECPrivateMode Int
1002 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
ReportMotionOnButtonPress
intToDECPrivateMode Int
1003 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
EnableAllMouseMotions
intToDECPrivateMode Int
47 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
UseAlternateScreenBuffer
intToDECPrivateMode Int
1047 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
UseAlternateScreenBuffer
intToDECPrivateMode Int
1048 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
SaveCursorAsInDECSC
intToDECPrivateMode Int
1049 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
SaveCursorAsInDECSCAndUseAlternateScreenBuffer
intToDECPrivateMode Int
2004 = DECPrivateMode -> Maybe DECPrivateMode
forall a. a -> Maybe a
Just DECPrivateMode
BracketedPasteMode
intToDECPrivateMode Int
_ = Maybe DECPrivateMode
forall a. Maybe a
Nothing