{-# LINE 1 "./Brillo/Internals/TinyFileDialogs.chs" #-}
{-# LANGUAGE LambdaCase #-}
module Brillo.Internals.TinyFileDialogs (
beep,
notifyPopup,
messageBox,
inputBox,
saveFileDialog,
openFileDialog,
selectFolderDialog,
colorChooser,
IconType(..),
MessageBox,
OK(..),
OKCancel(..),
YesNo(..),
YesNoCancel(..),
)
where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Marshal.Utils as C2HSImp
import qualified Foreign.Ptr as C2HSImp
import Prelude (
Applicative (pure),
Bool (..),
Bounded,
Enum,
Eq ((==)),
fromIntegral,
Functor (fmap),
id,
Int,
IO,
maxBound,
Maybe (Just, Nothing),
minBound,
Ord,
Read,
return,
Semigroup ((<>)),
show,
Show,
(.),
(<>),
(>>),
(>>=),
($),
)
import Data.List (lookup)
import Data.Char (toLower)
import Data.Text qualified as T
import Foreign (Ptr, Word8, nullPtr, peekArray, withArray, withArrayLen, withMany)
import Foreign.C (CInt, CString, CUChar)
import System.Exit (die)
import Foreign.C (peekCString, withCString)
{-# LINE 66 "./Brillo/Internals/TinyFileDialogs.chs" #-}
withCText :: T.Text -> (CString -> IO a) -> IO a
withCText :: forall a. Text -> (CString -> IO a) -> IO a
withCText = String -> (CString -> IO a) -> IO a
forall a. String -> (CString -> IO a) -> IO a
withCString (String -> (CString -> IO a) -> IO a)
-> (Text -> String) -> Text -> (CString -> IO a) -> IO a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
T.unpack
withCShowLower :: (Show a) => a -> (CString -> IO b) -> IO b
withCShowLower :: forall a b. Show a => a -> (CString -> IO b) -> IO b
withCShowLower = Text -> (CString -> IO b) -> IO b
forall a. Text -> (CString -> IO a) -> IO a
withCText (Text -> (CString -> IO b) -> IO b)
-> (a -> Text) -> a -> (CString -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (a -> String) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Char -> Char
toLower (String -> String) -> (a -> String) -> a -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> String
forall a. Show a => a -> String
show
withCMaybeText :: Maybe T.Text -> (CString -> IO a) -> IO a
withCMaybeText :: forall a. Maybe Text -> (CString -> IO a) -> IO a
withCMaybeText Maybe Text
mt CString -> IO a
f = case Maybe Text
mt of
Maybe Text
Nothing -> CString -> IO a
f CString
forall a. Ptr a
nullPtr
Just Text
t -> Text -> (CString -> IO a) -> IO a
forall a. Text -> (CString -> IO a) -> IO a
withCText Text
t CString -> IO a
f
peekMaybeText :: CString -> IO (Maybe T.Text)
peekMaybeText :: CString -> IO (Maybe Text)
peekMaybeText CString
cstr = if CString
cstr CString -> CString -> Bool
forall a. Eq a => a -> a -> Bool
== CString
forall a. Ptr a
nullPtr
then Maybe Text -> IO (Maybe Text)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe Text
forall a. Maybe a
Nothing
else (String -> Maybe Text) -> IO String -> IO (Maybe Text)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Text -> Maybe Text
forall a. a -> Maybe a
Just (Text -> Maybe Text) -> (String -> Text) -> String -> Maybe Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack) (IO String -> IO (Maybe Text)) -> IO String -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ CString -> IO String
peekCString CString
cstr
peekMaybeTextMultiple :: CString -> IO (Maybe [T.Text])
peekMaybeTextMultiple :: CString -> IO (Maybe [Text])
peekMaybeTextMultiple = (Maybe Text -> Maybe [Text])
-> IO (Maybe Text) -> IO (Maybe [Text])
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Text -> [Text]) -> Maybe Text -> Maybe [Text]
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Text -> [Text]) -> Maybe Text -> Maybe [Text])
-> (Text -> [Text]) -> Maybe Text -> Maybe [Text]
forall a b. (a -> b) -> a -> b
$ HasCallStack => Text -> Text -> [Text]
Text -> Text -> [Text]
T.splitOn (Char -> Text
T.singleton Char
'|')) (IO (Maybe Text) -> IO (Maybe [Text]))
-> (CString -> IO (Maybe Text)) -> CString -> IO (Maybe [Text])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> IO (Maybe Text)
peekMaybeText
withCTexts :: [T.Text] -> ((CInt, Ptr CString) -> IO a) -> IO a
withCTexts :: forall a. [Text] -> ((CInt, Ptr CString) -> IO a) -> IO a
withCTexts [Text]
ts (CInt, Ptr CString) -> IO a
f = (Text -> (CString -> IO a) -> IO a)
-> [Text] -> ([CString] -> IO a) -> IO a
forall a b res.
(a -> (b -> res) -> res) -> [a] -> ([b] -> res) -> res
withMany Text -> (CString -> IO a) -> IO a
forall a. Text -> (CString -> IO a) -> IO a
withCText [Text]
ts (([CString] -> IO a) -> IO a) -> ([CString] -> IO a) -> IO a
forall a b. (a -> b) -> a -> b
$ \[CString]
ptrs ->
[CString] -> (Int -> Ptr CString -> IO a) -> IO a
forall a b. Storable a => [a] -> (Int -> Ptr a -> IO b) -> IO b
withArrayLen [CString]
ptrs ((Int -> Ptr CString -> IO a) -> IO a)
-> (Int -> Ptr CString -> IO a) -> IO a
forall a b. (a -> b) -> a -> b
$ \Int
len Ptr CString
ptr -> (CInt, Ptr CString) -> IO a
f (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
len, Ptr CString
ptr)
class (Enum a, Bounded a) => MessageBox a where
messageBoxType :: a -> T.Text
messageBoxValue :: a -> Int
data IconType = Info | Warning | Error | Question
deriving (IconType -> IconType -> Bool
(IconType -> IconType -> Bool)
-> (IconType -> IconType -> Bool) -> Eq IconType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: IconType -> IconType -> Bool
== :: IconType -> IconType -> Bool
$c/= :: IconType -> IconType -> Bool
/= :: IconType -> IconType -> Bool
Eq, Eq IconType
Eq IconType =>
(IconType -> IconType -> Ordering)
-> (IconType -> IconType -> Bool)
-> (IconType -> IconType -> Bool)
-> (IconType -> IconType -> Bool)
-> (IconType -> IconType -> Bool)
-> (IconType -> IconType -> IconType)
-> (IconType -> IconType -> IconType)
-> Ord IconType
IconType -> IconType -> Bool
IconType -> IconType -> Ordering
IconType -> IconType -> IconType
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
$ccompare :: IconType -> IconType -> Ordering
compare :: IconType -> IconType -> Ordering
$c< :: IconType -> IconType -> Bool
< :: IconType -> IconType -> Bool
$c<= :: IconType -> IconType -> Bool
<= :: IconType -> IconType -> Bool
$c> :: IconType -> IconType -> Bool
> :: IconType -> IconType -> Bool
$c>= :: IconType -> IconType -> Bool
>= :: IconType -> IconType -> Bool
$cmax :: IconType -> IconType -> IconType
max :: IconType -> IconType -> IconType
$cmin :: IconType -> IconType -> IconType
min :: IconType -> IconType -> IconType
Ord, Int -> IconType -> String -> String
[IconType] -> String -> String
IconType -> String
(Int -> IconType -> String -> String)
-> (IconType -> String)
-> ([IconType] -> String -> String)
-> Show IconType
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> IconType -> String -> String
showsPrec :: Int -> IconType -> String -> String
$cshow :: IconType -> String
show :: IconType -> String
$cshowList :: [IconType] -> String -> String
showList :: [IconType] -> String -> String
Show, ReadPrec [IconType]
ReadPrec IconType
Int -> ReadS IconType
ReadS [IconType]
(Int -> ReadS IconType)
-> ReadS [IconType]
-> ReadPrec IconType
-> ReadPrec [IconType]
-> Read IconType
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS IconType
readsPrec :: Int -> ReadS IconType
$creadList :: ReadS [IconType]
readList :: ReadS [IconType]
$creadPrec :: ReadPrec IconType
readPrec :: ReadPrec IconType
$creadListPrec :: ReadPrec [IconType]
readListPrec :: ReadPrec [IconType]
Read, Int -> IconType
IconType -> Int
IconType -> [IconType]
IconType -> IconType
IconType -> IconType -> [IconType]
IconType -> IconType -> IconType -> [IconType]
(IconType -> IconType)
-> (IconType -> IconType)
-> (Int -> IconType)
-> (IconType -> Int)
-> (IconType -> [IconType])
-> (IconType -> IconType -> [IconType])
-> (IconType -> IconType -> [IconType])
-> (IconType -> IconType -> IconType -> [IconType])
-> Enum IconType
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: IconType -> IconType
succ :: IconType -> IconType
$cpred :: IconType -> IconType
pred :: IconType -> IconType
$ctoEnum :: Int -> IconType
toEnum :: Int -> IconType
$cfromEnum :: IconType -> Int
fromEnum :: IconType -> Int
$cenumFrom :: IconType -> [IconType]
enumFrom :: IconType -> [IconType]
$cenumFromThen :: IconType -> IconType -> [IconType]
enumFromThen :: IconType -> IconType -> [IconType]
$cenumFromTo :: IconType -> IconType -> [IconType]
enumFromTo :: IconType -> IconType -> [IconType]
$cenumFromThenTo :: IconType -> IconType -> IconType -> [IconType]
enumFromThenTo :: IconType -> IconType -> IconType -> [IconType]
Enum, IconType
IconType -> IconType -> Bounded IconType
forall a. a -> a -> Bounded a
$cminBound :: IconType
minBound :: IconType
$cmaxBound :: IconType
maxBound :: IconType
Bounded)
data OK = OK
deriving (OK -> OK -> Bool
(OK -> OK -> Bool) -> (OK -> OK -> Bool) -> Eq OK
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: OK -> OK -> Bool
== :: OK -> OK -> Bool
$c/= :: OK -> OK -> Bool
/= :: OK -> OK -> Bool
Eq, Eq OK
Eq OK =>
(OK -> OK -> Ordering)
-> (OK -> OK -> Bool)
-> (OK -> OK -> Bool)
-> (OK -> OK -> Bool)
-> (OK -> OK -> Bool)
-> (OK -> OK -> OK)
-> (OK -> OK -> OK)
-> Ord OK
OK -> OK -> Bool
OK -> OK -> Ordering
OK -> OK -> OK
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
$ccompare :: OK -> OK -> Ordering
compare :: OK -> OK -> Ordering
$c< :: OK -> OK -> Bool
< :: OK -> OK -> Bool
$c<= :: OK -> OK -> Bool
<= :: OK -> OK -> Bool
$c> :: OK -> OK -> Bool
> :: OK -> OK -> Bool
$c>= :: OK -> OK -> Bool
>= :: OK -> OK -> Bool
$cmax :: OK -> OK -> OK
max :: OK -> OK -> OK
$cmin :: OK -> OK -> OK
min :: OK -> OK -> OK
Ord, Int -> OK -> String -> String
[OK] -> String -> String
OK -> String
(Int -> OK -> String -> String)
-> (OK -> String) -> ([OK] -> String -> String) -> Show OK
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> OK -> String -> String
showsPrec :: Int -> OK -> String -> String
$cshow :: OK -> String
show :: OK -> String
$cshowList :: [OK] -> String -> String
showList :: [OK] -> String -> String
Show, ReadPrec [OK]
ReadPrec OK
Int -> ReadS OK
ReadS [OK]
(Int -> ReadS OK)
-> ReadS [OK] -> ReadPrec OK -> ReadPrec [OK] -> Read OK
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS OK
readsPrec :: Int -> ReadS OK
$creadList :: ReadS [OK]
readList :: ReadS [OK]
$creadPrec :: ReadPrec OK
readPrec :: ReadPrec OK
$creadListPrec :: ReadPrec [OK]
readListPrec :: ReadPrec [OK]
Read, Int -> OK
OK -> Int
OK -> [OK]
OK -> OK
OK -> OK -> [OK]
OK -> OK -> OK -> [OK]
(OK -> OK)
-> (OK -> OK)
-> (Int -> OK)
-> (OK -> Int)
-> (OK -> [OK])
-> (OK -> OK -> [OK])
-> (OK -> OK -> [OK])
-> (OK -> OK -> OK -> [OK])
-> Enum OK
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: OK -> OK
succ :: OK -> OK
$cpred :: OK -> OK
pred :: OK -> OK
$ctoEnum :: Int -> OK
toEnum :: Int -> OK
$cfromEnum :: OK -> Int
fromEnum :: OK -> Int
$cenumFrom :: OK -> [OK]
enumFrom :: OK -> [OK]
$cenumFromThen :: OK -> OK -> [OK]
enumFromThen :: OK -> OK -> [OK]
$cenumFromTo :: OK -> OK -> [OK]
enumFromTo :: OK -> OK -> [OK]
$cenumFromThenTo :: OK -> OK -> OK -> [OK]
enumFromThenTo :: OK -> OK -> OK -> [OK]
Enum, OK
OK -> OK -> Bounded OK
forall a. a -> a -> Bounded a
$cminBound :: OK
minBound :: OK
$cmaxBound :: OK
maxBound :: OK
Bounded)
instance MessageBox OK where
messageBoxType :: OK -> Text
messageBoxType OK
_ = String -> Text
T.pack String
"ok"
messageBoxValue :: OK -> Int
messageBoxValue OK
OK = Int
1
data OKCancel = OC_OK | OC_Cancel
deriving (OKCancel -> OKCancel -> Bool
(OKCancel -> OKCancel -> Bool)
-> (OKCancel -> OKCancel -> Bool) -> Eq OKCancel
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: OKCancel -> OKCancel -> Bool
== :: OKCancel -> OKCancel -> Bool
$c/= :: OKCancel -> OKCancel -> Bool
/= :: OKCancel -> OKCancel -> Bool
Eq, Eq OKCancel
Eq OKCancel =>
(OKCancel -> OKCancel -> Ordering)
-> (OKCancel -> OKCancel -> Bool)
-> (OKCancel -> OKCancel -> Bool)
-> (OKCancel -> OKCancel -> Bool)
-> (OKCancel -> OKCancel -> Bool)
-> (OKCancel -> OKCancel -> OKCancel)
-> (OKCancel -> OKCancel -> OKCancel)
-> Ord OKCancel
OKCancel -> OKCancel -> Bool
OKCancel -> OKCancel -> Ordering
OKCancel -> OKCancel -> OKCancel
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
$ccompare :: OKCancel -> OKCancel -> Ordering
compare :: OKCancel -> OKCancel -> Ordering
$c< :: OKCancel -> OKCancel -> Bool
< :: OKCancel -> OKCancel -> Bool
$c<= :: OKCancel -> OKCancel -> Bool
<= :: OKCancel -> OKCancel -> Bool
$c> :: OKCancel -> OKCancel -> Bool
> :: OKCancel -> OKCancel -> Bool
$c>= :: OKCancel -> OKCancel -> Bool
>= :: OKCancel -> OKCancel -> Bool
$cmax :: OKCancel -> OKCancel -> OKCancel
max :: OKCancel -> OKCancel -> OKCancel
$cmin :: OKCancel -> OKCancel -> OKCancel
min :: OKCancel -> OKCancel -> OKCancel
Ord, Int -> OKCancel -> String -> String
[OKCancel] -> String -> String
OKCancel -> String
(Int -> OKCancel -> String -> String)
-> (OKCancel -> String)
-> ([OKCancel] -> String -> String)
-> Show OKCancel
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> OKCancel -> String -> String
showsPrec :: Int -> OKCancel -> String -> String
$cshow :: OKCancel -> String
show :: OKCancel -> String
$cshowList :: [OKCancel] -> String -> String
showList :: [OKCancel] -> String -> String
Show, ReadPrec [OKCancel]
ReadPrec OKCancel
Int -> ReadS OKCancel
ReadS [OKCancel]
(Int -> ReadS OKCancel)
-> ReadS [OKCancel]
-> ReadPrec OKCancel
-> ReadPrec [OKCancel]
-> Read OKCancel
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS OKCancel
readsPrec :: Int -> ReadS OKCancel
$creadList :: ReadS [OKCancel]
readList :: ReadS [OKCancel]
$creadPrec :: ReadPrec OKCancel
readPrec :: ReadPrec OKCancel
$creadListPrec :: ReadPrec [OKCancel]
readListPrec :: ReadPrec [OKCancel]
Read, Int -> OKCancel
OKCancel -> Int
OKCancel -> [OKCancel]
OKCancel -> OKCancel
OKCancel -> OKCancel -> [OKCancel]
OKCancel -> OKCancel -> OKCancel -> [OKCancel]
(OKCancel -> OKCancel)
-> (OKCancel -> OKCancel)
-> (Int -> OKCancel)
-> (OKCancel -> Int)
-> (OKCancel -> [OKCancel])
-> (OKCancel -> OKCancel -> [OKCancel])
-> (OKCancel -> OKCancel -> [OKCancel])
-> (OKCancel -> OKCancel -> OKCancel -> [OKCancel])
-> Enum OKCancel
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: OKCancel -> OKCancel
succ :: OKCancel -> OKCancel
$cpred :: OKCancel -> OKCancel
pred :: OKCancel -> OKCancel
$ctoEnum :: Int -> OKCancel
toEnum :: Int -> OKCancel
$cfromEnum :: OKCancel -> Int
fromEnum :: OKCancel -> Int
$cenumFrom :: OKCancel -> [OKCancel]
enumFrom :: OKCancel -> [OKCancel]
$cenumFromThen :: OKCancel -> OKCancel -> [OKCancel]
enumFromThen :: OKCancel -> OKCancel -> [OKCancel]
$cenumFromTo :: OKCancel -> OKCancel -> [OKCancel]
enumFromTo :: OKCancel -> OKCancel -> [OKCancel]
$cenumFromThenTo :: OKCancel -> OKCancel -> OKCancel -> [OKCancel]
enumFromThenTo :: OKCancel -> OKCancel -> OKCancel -> [OKCancel]
Enum, OKCancel
OKCancel -> OKCancel -> Bounded OKCancel
forall a. a -> a -> Bounded a
$cminBound :: OKCancel
minBound :: OKCancel
$cmaxBound :: OKCancel
maxBound :: OKCancel
Bounded)
instance MessageBox OKCancel where
messageBoxType :: OKCancel -> Text
messageBoxType OKCancel
_ = String -> Text
T.pack String
"okcancel"
messageBoxValue :: OKCancel -> Int
messageBoxValue OKCancel
OC_Cancel = Int
0
messageBoxValue OKCancel
OC_OK = Int
1
data YesNo = YN_Yes | YN_No
deriving (YesNo -> YesNo -> Bool
(YesNo -> YesNo -> Bool) -> (YesNo -> YesNo -> Bool) -> Eq YesNo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: YesNo -> YesNo -> Bool
== :: YesNo -> YesNo -> Bool
$c/= :: YesNo -> YesNo -> Bool
/= :: YesNo -> YesNo -> Bool
Eq, Eq YesNo
Eq YesNo =>
(YesNo -> YesNo -> Ordering)
-> (YesNo -> YesNo -> Bool)
-> (YesNo -> YesNo -> Bool)
-> (YesNo -> YesNo -> Bool)
-> (YesNo -> YesNo -> Bool)
-> (YesNo -> YesNo -> YesNo)
-> (YesNo -> YesNo -> YesNo)
-> Ord YesNo
YesNo -> YesNo -> Bool
YesNo -> YesNo -> Ordering
YesNo -> YesNo -> YesNo
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
$ccompare :: YesNo -> YesNo -> Ordering
compare :: YesNo -> YesNo -> Ordering
$c< :: YesNo -> YesNo -> Bool
< :: YesNo -> YesNo -> Bool
$c<= :: YesNo -> YesNo -> Bool
<= :: YesNo -> YesNo -> Bool
$c> :: YesNo -> YesNo -> Bool
> :: YesNo -> YesNo -> Bool
$c>= :: YesNo -> YesNo -> Bool
>= :: YesNo -> YesNo -> Bool
$cmax :: YesNo -> YesNo -> YesNo
max :: YesNo -> YesNo -> YesNo
$cmin :: YesNo -> YesNo -> YesNo
min :: YesNo -> YesNo -> YesNo
Ord, Int -> YesNo -> String -> String
[YesNo] -> String -> String
YesNo -> String
(Int -> YesNo -> String -> String)
-> (YesNo -> String) -> ([YesNo] -> String -> String) -> Show YesNo
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> YesNo -> String -> String
showsPrec :: Int -> YesNo -> String -> String
$cshow :: YesNo -> String
show :: YesNo -> String
$cshowList :: [YesNo] -> String -> String
showList :: [YesNo] -> String -> String
Show, ReadPrec [YesNo]
ReadPrec YesNo
Int -> ReadS YesNo
ReadS [YesNo]
(Int -> ReadS YesNo)
-> ReadS [YesNo]
-> ReadPrec YesNo
-> ReadPrec [YesNo]
-> Read YesNo
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS YesNo
readsPrec :: Int -> ReadS YesNo
$creadList :: ReadS [YesNo]
readList :: ReadS [YesNo]
$creadPrec :: ReadPrec YesNo
readPrec :: ReadPrec YesNo
$creadListPrec :: ReadPrec [YesNo]
readListPrec :: ReadPrec [YesNo]
Read, Int -> YesNo
YesNo -> Int
YesNo -> [YesNo]
YesNo -> YesNo
YesNo -> YesNo -> [YesNo]
YesNo -> YesNo -> YesNo -> [YesNo]
(YesNo -> YesNo)
-> (YesNo -> YesNo)
-> (Int -> YesNo)
-> (YesNo -> Int)
-> (YesNo -> [YesNo])
-> (YesNo -> YesNo -> [YesNo])
-> (YesNo -> YesNo -> [YesNo])
-> (YesNo -> YesNo -> YesNo -> [YesNo])
-> Enum YesNo
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: YesNo -> YesNo
succ :: YesNo -> YesNo
$cpred :: YesNo -> YesNo
pred :: YesNo -> YesNo
$ctoEnum :: Int -> YesNo
toEnum :: Int -> YesNo
$cfromEnum :: YesNo -> Int
fromEnum :: YesNo -> Int
$cenumFrom :: YesNo -> [YesNo]
enumFrom :: YesNo -> [YesNo]
$cenumFromThen :: YesNo -> YesNo -> [YesNo]
enumFromThen :: YesNo -> YesNo -> [YesNo]
$cenumFromTo :: YesNo -> YesNo -> [YesNo]
enumFromTo :: YesNo -> YesNo -> [YesNo]
$cenumFromThenTo :: YesNo -> YesNo -> YesNo -> [YesNo]
enumFromThenTo :: YesNo -> YesNo -> YesNo -> [YesNo]
Enum, YesNo
YesNo -> YesNo -> Bounded YesNo
forall a. a -> a -> Bounded a
$cminBound :: YesNo
minBound :: YesNo
$cmaxBound :: YesNo
maxBound :: YesNo
Bounded)
instance MessageBox YesNo where
messageBoxType :: YesNo -> Text
messageBoxType YesNo
_ = String -> Text
T.pack String
"yesno"
messageBoxValue :: YesNo -> Int
messageBoxValue YesNo
YN_No = Int
0
messageBoxValue YesNo
YN_Yes = Int
1
data YesNoCancel = YNC_Yes | YNC_No | YNC_Cancel
deriving (YesNoCancel -> YesNoCancel -> Bool
(YesNoCancel -> YesNoCancel -> Bool)
-> (YesNoCancel -> YesNoCancel -> Bool) -> Eq YesNoCancel
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: YesNoCancel -> YesNoCancel -> Bool
== :: YesNoCancel -> YesNoCancel -> Bool
$c/= :: YesNoCancel -> YesNoCancel -> Bool
/= :: YesNoCancel -> YesNoCancel -> Bool
Eq, Eq YesNoCancel
Eq YesNoCancel =>
(YesNoCancel -> YesNoCancel -> Ordering)
-> (YesNoCancel -> YesNoCancel -> Bool)
-> (YesNoCancel -> YesNoCancel -> Bool)
-> (YesNoCancel -> YesNoCancel -> Bool)
-> (YesNoCancel -> YesNoCancel -> Bool)
-> (YesNoCancel -> YesNoCancel -> YesNoCancel)
-> (YesNoCancel -> YesNoCancel -> YesNoCancel)
-> Ord YesNoCancel
YesNoCancel -> YesNoCancel -> Bool
YesNoCancel -> YesNoCancel -> Ordering
YesNoCancel -> YesNoCancel -> YesNoCancel
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
$ccompare :: YesNoCancel -> YesNoCancel -> Ordering
compare :: YesNoCancel -> YesNoCancel -> Ordering
$c< :: YesNoCancel -> YesNoCancel -> Bool
< :: YesNoCancel -> YesNoCancel -> Bool
$c<= :: YesNoCancel -> YesNoCancel -> Bool
<= :: YesNoCancel -> YesNoCancel -> Bool
$c> :: YesNoCancel -> YesNoCancel -> Bool
> :: YesNoCancel -> YesNoCancel -> Bool
$c>= :: YesNoCancel -> YesNoCancel -> Bool
>= :: YesNoCancel -> YesNoCancel -> Bool
$cmax :: YesNoCancel -> YesNoCancel -> YesNoCancel
max :: YesNoCancel -> YesNoCancel -> YesNoCancel
$cmin :: YesNoCancel -> YesNoCancel -> YesNoCancel
min :: YesNoCancel -> YesNoCancel -> YesNoCancel
Ord, Int -> YesNoCancel -> String -> String
[YesNoCancel] -> String -> String
YesNoCancel -> String
(Int -> YesNoCancel -> String -> String)
-> (YesNoCancel -> String)
-> ([YesNoCancel] -> String -> String)
-> Show YesNoCancel
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> YesNoCancel -> String -> String
showsPrec :: Int -> YesNoCancel -> String -> String
$cshow :: YesNoCancel -> String
show :: YesNoCancel -> String
$cshowList :: [YesNoCancel] -> String -> String
showList :: [YesNoCancel] -> String -> String
Show, ReadPrec [YesNoCancel]
ReadPrec YesNoCancel
Int -> ReadS YesNoCancel
ReadS [YesNoCancel]
(Int -> ReadS YesNoCancel)
-> ReadS [YesNoCancel]
-> ReadPrec YesNoCancel
-> ReadPrec [YesNoCancel]
-> Read YesNoCancel
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS YesNoCancel
readsPrec :: Int -> ReadS YesNoCancel
$creadList :: ReadS [YesNoCancel]
readList :: ReadS [YesNoCancel]
$creadPrec :: ReadPrec YesNoCancel
readPrec :: ReadPrec YesNoCancel
$creadListPrec :: ReadPrec [YesNoCancel]
readListPrec :: ReadPrec [YesNoCancel]
Read, Int -> YesNoCancel
YesNoCancel -> Int
YesNoCancel -> [YesNoCancel]
YesNoCancel -> YesNoCancel
YesNoCancel -> YesNoCancel -> [YesNoCancel]
YesNoCancel -> YesNoCancel -> YesNoCancel -> [YesNoCancel]
(YesNoCancel -> YesNoCancel)
-> (YesNoCancel -> YesNoCancel)
-> (Int -> YesNoCancel)
-> (YesNoCancel -> Int)
-> (YesNoCancel -> [YesNoCancel])
-> (YesNoCancel -> YesNoCancel -> [YesNoCancel])
-> (YesNoCancel -> YesNoCancel -> [YesNoCancel])
-> (YesNoCancel -> YesNoCancel -> YesNoCancel -> [YesNoCancel])
-> Enum YesNoCancel
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: YesNoCancel -> YesNoCancel
succ :: YesNoCancel -> YesNoCancel
$cpred :: YesNoCancel -> YesNoCancel
pred :: YesNoCancel -> YesNoCancel
$ctoEnum :: Int -> YesNoCancel
toEnum :: Int -> YesNoCancel
$cfromEnum :: YesNoCancel -> Int
fromEnum :: YesNoCancel -> Int
$cenumFrom :: YesNoCancel -> [YesNoCancel]
enumFrom :: YesNoCancel -> [YesNoCancel]
$cenumFromThen :: YesNoCancel -> YesNoCancel -> [YesNoCancel]
enumFromThen :: YesNoCancel -> YesNoCancel -> [YesNoCancel]
$cenumFromTo :: YesNoCancel -> YesNoCancel -> [YesNoCancel]
enumFromTo :: YesNoCancel -> YesNoCancel -> [YesNoCancel]
$cenumFromThenTo :: YesNoCancel -> YesNoCancel -> YesNoCancel -> [YesNoCancel]
enumFromThenTo :: YesNoCancel -> YesNoCancel -> YesNoCancel -> [YesNoCancel]
Enum, YesNoCancel
YesNoCancel -> YesNoCancel -> Bounded YesNoCancel
forall a. a -> a -> Bounded a
$cminBound :: YesNoCancel
minBound :: YesNoCancel
$cmaxBound :: YesNoCancel
maxBound :: YesNoCancel
Bounded)
instance MessageBox YesNoCancel where
messageBoxType :: YesNoCancel -> Text
messageBoxType YesNoCancel
_ = String -> Text
T.pack String
"yesnocancel"
messageBoxValue :: YesNoCancel -> Int
messageBoxValue YesNoCancel
YNC_Cancel = Int
0
messageBoxValue YesNoCancel
YNC_Yes = Int
1
messageBoxValue YesNoCancel
YNC_No = Int
2
c_messageBox :: (T.Text)
-> (T.Text)
-> (T.Text)
-> (IconType)
-> (Int)
-> IO ((Int))
c_messageBox :: Text -> Text -> Text -> IconType -> Int -> IO Int
c_messageBox Text
a1 Text
a2 Text
a3 IconType
a4 Int
a5 =
Text -> (CString -> IO Int) -> IO Int
forall a. Text -> (CString -> IO a) -> IO a
withCText Text
a1 ((CString -> IO Int) -> IO Int) -> (CString -> IO Int) -> IO Int
forall a b. (a -> b) -> a -> b
$ \CString
a1' ->
Text -> (CString -> IO Int) -> IO Int
forall a. Text -> (CString -> IO a) -> IO a
withCText Text
a2 ((CString -> IO Int) -> IO Int) -> (CString -> IO Int) -> IO Int
forall a b. (a -> b) -> a -> b
$ \CString
a2' ->
Text -> (CString -> IO Int) -> IO Int
forall a. Text -> (CString -> IO a) -> IO a
withCText Text
a3 ((CString -> IO Int) -> IO Int) -> (CString -> IO Int) -> IO Int
forall a b. (a -> b) -> a -> b
$ \CString
a3' ->
IconType -> (CString -> IO Int) -> IO Int
forall a b. Show a => a -> (CString -> IO b) -> IO b
withCShowLower IconType
a4 ((CString -> IO Int) -> IO Int) -> (CString -> IO Int) -> IO Int
forall a b. (a -> b) -> a -> b
$ \CString
a4' ->
let {a5' :: CInt
a5' = Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a5} in
CString -> CString -> CString -> CString -> CInt -> IO CInt
c_messageBox'_ CString
a1' CString
a2' CString
a3' CString
a4' CInt
a5' IO CInt -> (CInt -> IO Int) -> IO Int
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \CInt
res ->
let {res' :: Int
res' = CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
res} in
Int -> IO Int
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int
res')
{-# LINE 145 "./Brillo/Internals/TinyFileDialogs.chs" #-}
notifyPopup :: (T.Text)
-> (T.Text)
-> (IconType)
-> IO ()
Text
a1 Text
a2 IconType
a3 =
Text -> (CString -> IO ()) -> IO ()
forall a. Text -> (CString -> IO a) -> IO a
withCText Text
a1 ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \CString
a1' ->
Text -> (CString -> IO ()) -> IO ()
forall a. Text -> (CString -> IO a) -> IO a
withCText Text
a2 ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \CString
a2' ->
IconType -> (CString -> IO ()) -> IO ()
forall a b. Show a => a -> (CString -> IO b) -> IO b
withCShowLower IconType
a3 ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \CString
a3' ->
CString -> CString -> CString -> IO CInt
notifyPopup'_ CString
a1' CString
a2' CString
a3' IO CInt -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
{-# LINE 152 "./Brillo/Internals/TinyFileDialogs.chs" #-}
beep :: IO ()
beep =
beep'_ >>
return ()
{-# LINE 154 "./Brillo/Internals/TinyFileDialogs.chs" #-}
messageBox
:: (MessageBox a)
=> T.Text
-> T.Text
-> IconType
-> a
-> IO a
messageBox :: forall a. MessageBox a => Text -> Text -> IconType -> a -> IO a
messageBox Text
ttl Text
msg IconType
icon a
dflt = do
Int
n <- Text -> Text -> Text -> IconType -> Int -> IO Int
c_messageBox Text
ttl Text
msg (a -> Text
forall a. MessageBox a => a -> Text
messageBoxType a
dflt) IconType
icon (a -> Int
forall a. MessageBox a => a -> Int
messageBoxValue a
dflt)
case Int -> [(Int, a)] -> Maybe a
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup Int
n [ (a -> Int
forall a. MessageBox a => a -> Int
messageBoxValue a
x, a
x) | a
x <- [a
forall a. Bounded a => a
minBound .. a
forall a. Bounded a => a
maxBound] ] of
Just a
x -> a -> IO a
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
x
Maybe a
Nothing -> String -> IO a
forall a. String -> IO a
die (String -> IO a) -> String -> IO a
forall a b. (a -> b) -> a -> b
$ String
"TinyFileDialogs.messageBox: "
String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"internal error; unrecognized return value " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String
forall a. Show a => a -> String
show Int
n
inputBox :: (T.Text)
-> (T.Text)
-> (Maybe T.Text)
-> IO ((Maybe T.Text))
inputBox :: Text -> Text -> Maybe Text -> IO (Maybe Text)
inputBox Text
a1 Text
a2 Maybe Text
a3 =
Text -> (CString -> IO (Maybe Text)) -> IO (Maybe Text)
forall a. Text -> (CString -> IO a) -> IO a
withCText Text
a1 ((CString -> IO (Maybe Text)) -> IO (Maybe Text))
-> (CString -> IO (Maybe Text)) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \CString
a1' ->
Text -> (CString -> IO (Maybe Text)) -> IO (Maybe Text)
forall a. Text -> (CString -> IO a) -> IO a
withCText Text
a2 ((CString -> IO (Maybe Text)) -> IO (Maybe Text))
-> (CString -> IO (Maybe Text)) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \CString
a2' ->
Maybe Text -> (CString -> IO (Maybe Text)) -> IO (Maybe Text)
forall a. Maybe Text -> (CString -> IO a) -> IO a
withCMaybeText Maybe Text
a3 ((CString -> IO (Maybe Text)) -> IO (Maybe Text))
-> (CString -> IO (Maybe Text)) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \CString
a3' ->
CString -> CString -> CString -> IO CString
inputBox'_ CString
a1' CString
a2' CString
a3' IO CString -> (CString -> IO (Maybe Text)) -> IO (Maybe Text)
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \CString
res ->
CString -> IO (Maybe Text)
peekMaybeText CString
res IO (Maybe Text)
-> (Maybe Text -> IO (Maybe Text)) -> IO (Maybe Text)
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Maybe Text
res' ->
Maybe Text -> IO (Maybe Text)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe Text
res')
{-# LINE 175 "./Brillo/Internals/TinyFileDialogs.chs" #-}
saveFileDialog :: (T.Text)
-> (T.Text)
-> ([T.Text])
-> (T.Text)
-> IO ((Maybe T.Text))
saveFileDialog a1 a2 a3 a4 =
withCText a1 $ \a1' ->
withCText a2 $ \a2' ->
withCTexts a3 $ \(a3'1, a3'2) ->
withCText a4 $ \a4' ->
saveFileDialog'_ a1' a2' a3'1 a3'2 a4' >>= \res ->
peekMaybeText res >>= \res' ->
return (res')
{-# LINE 183 "./Brillo/Internals/TinyFileDialogs.chs" #-}
openFileDialog :: (T.Text)
-> (T.Text)
-> ([T.Text])
-> (T.Text)
-> (Bool)
-> IO ((Maybe [T.Text]))
openFileDialog a1 a2 a3 a4 a5 =
withCText a1 $ \a1' ->
withCText a2 $ \a2' ->
withCTexts a3 $ \(a3'1, a3'2) ->
withCText a4 $ \a4' ->
let {a5' = C2HSImp.fromBool a5} in
openFileDialog'_ a1' a2' a3'1 a3'2 a4' a5' >>= \res ->
peekMaybeTextMultiple res >>= \res' ->
return (res')
{-# LINE 192 "./Brillo/Internals/TinyFileDialogs.chs" #-}
selectFolderDialog :: (T.Text)
-> (T.Text)
-> IO ((Maybe T.Text))
selectFolderDialog a1 a2 =
withCText a1 $ \a1' ->
withCText a2 $ \a2' ->
selectFolderDialog'_ a1' a2' >>= \res ->
peekMaybeText res >>= \res' ->
return (res')
{-# LINE 198 "./Brillo/Internals/TinyFileDialogs.chs" #-}
c_colorChooser :: (T.Text) -> (Maybe T.Text) -> (Ptr CUChar) -> (Ptr CUChar) -> IO ((Maybe T.Text))
c_colorChooser a1 a2 a3 a4 =
withCText a1 $ \a1' ->
withCMaybeText a2 $ \a2' ->
let {a3' = id a3} in
let {a4' = id a4} in
c_colorChooser'_ a1' a2' a3' a4' >>= \res ->
peekMaybeText res >>= \res' ->
return (res')
{-# LINE 206 "./Brillo/Internals/TinyFileDialogs.chs" #-}
withColor :: (Word8, Word8, Word8) -> (Ptr CUChar -> IO a) -> IO a
withColor (r, g, b) = withArray $ fmap fromIntegral [r, g, b]
colorChooser
:: T.Text
-> (Word8, Word8, Word8)
-> IO (Maybe (Word8, Word8, Word8))
colorChooser :: Text -> (Word8, Word8, Word8) -> IO (Maybe (Word8, Word8, Word8))
colorChooser Text
title (Word8, Word8, Word8)
color = (Word8, Word8, Word8)
-> (Ptr CUChar -> IO (Maybe (Word8, Word8, Word8)))
-> IO (Maybe (Word8, Word8, Word8))
forall a. (Word8, Word8, Word8) -> (Ptr CUChar -> IO a) -> IO a
withColor (Word8, Word8, Word8)
color ((Ptr CUChar -> IO (Maybe (Word8, Word8, Word8)))
-> IO (Maybe (Word8, Word8, Word8)))
-> (Ptr CUChar -> IO (Maybe (Word8, Word8, Word8)))
-> IO (Maybe (Word8, Word8, Word8))
forall a b. (a -> b) -> a -> b
$ \Ptr CUChar
ptr -> do
Maybe Text
res <- Text -> Maybe Text -> Ptr CUChar -> Ptr CUChar -> IO (Maybe Text)
c_colorChooser Text
title Maybe Text
forall a. Maybe a
Nothing Ptr CUChar
ptr Ptr CUChar
ptr
case Maybe Text
res of
Maybe Text
Nothing -> Maybe (Word8, Word8, Word8) -> IO (Maybe (Word8, Word8, Word8))
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe (Word8, Word8, Word8)
forall a. Maybe a
Nothing
Just Text
_ -> ([CUChar] -> Maybe (Word8, Word8, Word8))
-> IO [CUChar] -> IO (Maybe (Word8, Word8, Word8))
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
((\case
[Word8
r, Word8
g, Word8
b] -> (Word8, Word8, Word8) -> Maybe (Word8, Word8, Word8)
forall a. a -> Maybe a
Just (Word8
r, Word8
g, Word8
b)
[Word8]
_ -> Maybe (Word8, Word8, Word8)
forall a. Maybe a
Nothing
) ([Word8] -> Maybe (Word8, Word8, Word8))
-> ([CUChar] -> [Word8]) -> [CUChar] -> Maybe (Word8, Word8, Word8)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CUChar -> Word8) -> [CUChar] -> [Word8]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CUChar -> Word8
forall a b. (Integral a, Num b) => a -> b
fromIntegral)
(Int -> Ptr CUChar -> IO [CUChar]
forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
3 Ptr CUChar
ptr)
foreign import ccall safe "Brillo/Internals/TinyFileDialogs.chs.h tinyfd_messageBox"
c_messageBox'_ :: ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))
foreign import ccall safe "Brillo/Internals/TinyFileDialogs.chs.h tinyfd_notifyPopup"
:: ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (IO C2HSImp.CInt))))
foreign import ccall safe "Brillo/Internals/TinyFileDialogs.chs.h tinyfd_beep"
beep'_ :: (IO ())
foreign import ccall safe "Brillo/Internals/TinyFileDialogs.chs.h tinyfd_inputBox"
inputBox'_ :: ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (IO (C2HSImp.Ptr C2HSImp.CChar)))))
foreign import ccall safe "Brillo/Internals/TinyFileDialogs.chs.h tinyfd_saveFileDialog"
saveFileDialog'_ :: ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (IO (C2HSImp.Ptr C2HSImp.CChar)))))))
foreign import ccall safe "Brillo/Internals/TinyFileDialogs.chs.h tinyfd_openFileDialog"
openFileDialog'_ :: ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (C2HSImp.CInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (C2HSImp.CInt -> (IO (C2HSImp.Ptr C2HSImp.CChar))))))))
foreign import ccall safe "Brillo/Internals/TinyFileDialogs.chs.h tinyfd_selectFolderDialog"
selectFolderDialog'_ :: ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (IO (C2HSImp.Ptr C2HSImp.CChar))))
foreign import ccall safe "Brillo/Internals/TinyFileDialogs.chs.h tinyfd_colorChooser"
c_colorChooser'_ :: ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CUChar) -> ((C2HSImp.Ptr C2HSImp.CUChar) -> (IO (C2HSImp.Ptr C2HSImp.CChar))))))