-- GENERATED by C->Haskell Compiler, version 0.28.1 Switcheroo, 1 April 2016 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}
{-# LANGUAGE CPP, ExistentialQuantification, TypeSynonymInstances, FlexibleInstances, MultiParamTypeClasses, FlexibleContexts, ScopedTypeVariables #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Graphics.UI.FLTK.LowLevel.FileBrowser
    (
     -- * Constructor
     fileBrowserNew,
     FileBrowserType(..),
     FileSortF,
     numericSort,
     alphaSort,
     caseAlphaSort,
     caseNumericSort
     -- * Hierarchy
     --
     -- $hierarchy

     -- * Functions
     --
     -- $FileBrowserFunctions
     --
    )
where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp







import C2HS hiding (cFromEnum, cFromBool, cToBool,cToEnum)
import Foreign.C.Types
import Graphics.UI.FLTK.LowLevel.Fl_Types
import Graphics.UI.FLTK.LowLevel.Utils
import Graphics.UI.FLTK.LowLevel.Hierarchy
import Graphics.UI.FLTK.LowLevel.Dispatch
import qualified Data.Text as T
type FileSortF = C2HSImp.FunPtr (((C2HSImp.Ptr (C2HSImp.Ptr ())) -> ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (IO C2HSImp.CInt))))
{-# LINE 35 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

fileBrowserNew' :: (Int) -> (Int) -> (Int) -> (Int) -> IO ((Ptr ()))
fileBrowserNew' a1 a2 a3 a4 =
  let {a1' = fromIntegral a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = fromIntegral a4} in 
  fileBrowserNew''_ a1' a2' a3' a4' >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 36 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

fileBrowserNewWithLabel' :: (Int) -> (Int) -> (Int) -> (Int) -> (T.Text) -> IO ((Ptr ()))
fileBrowserNewWithLabel' a1 a2 a3 a4 a5 =
  let {a1' = fromIntegral a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = unsafeToCString a5} in 
  fileBrowserNewWithLabel''_ a1' a2' a3' a4' a5' >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 37 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

fileBrowserNew :: Rectangle -> Maybe T.Text -> IO (Ref FileBrowser)
fileBrowserNew rectangle l'=
    let (x_pos, y_pos, width, height) = fromRectangle rectangle
    in case l' of
        Nothing -> fileBrowserNew' x_pos y_pos width height >>=
                             toRef
        Just l -> fileBrowserNewWithLabel' x_pos y_pos width height l >>=
                               toRef

setIconsize' :: (Ptr ()) -> (CUChar) -> IO ()
setIconsize' a1 a2 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  setIconsize''_ a1' a2' >>
  return ()

{-# LINE 47 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

instance (impl ~ (CUChar ->  IO ())) => Op (SetIconsize ()) FileBrowser orig impl where
  runOp _ _ fileBrowser text = withRef fileBrowser $ \fileBrowserPtr -> setIconsize' fileBrowserPtr text
iconsize' :: (Ptr ()) -> IO ((CUChar))
iconsize' a1 =
  let {a1' = id a1} in 
  iconsize''_ a1' >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 50 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

instance (impl ~ ( IO (CUChar))) => Op (GetIconsize ()) FileBrowser orig impl where
  runOp _ _ fileBrowser = withRef fileBrowser $ \fileBrowserPtr -> iconsize' fileBrowserPtr
setFilter' :: (Ptr ()) -> (T.Text) -> IO ()
setFilter' a1 a2 =
  let {a1' = id a1} in 
  let {a2' = unsafeToCString a2} in 
  setFilter''_ a1' a2' >>
  return ()

{-# LINE 53 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

instance (impl ~ (T.Text ->  IO ())) => Op (SetFilter ()) FileBrowser orig impl where
  runOp _ _ fileBrowser text = withRef fileBrowser $ \fileBrowserPtr -> setFilter' fileBrowserPtr text
filter' :: (Ptr ()) -> IO ((T.Text))
filter' a1 =
  let {a1' = id a1} in 
  filter''_ a1' >>= \res ->
  let {res' = unsafeFromCString res} in
  return (res')

{-# LINE 56 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

instance (impl ~ ( IO T.Text)) => Op (GetFilter ()) FileBrowser orig impl where
  runOp _ _ fileBrowser = withRef fileBrowser $ \fileBrowserPtr -> filter' fileBrowserPtr
setTextsize' :: (Ptr ()) -> (CInt) -> IO ()
setTextsize' a1 a2 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  setTextsize''_ a1' a2' >>
  return ()

{-# LINE 59 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

instance (impl ~ (FontSize ->  IO ())) => Op (SetTextsize ()) FileBrowser orig impl where
  runOp _ _ fileBrowser (FontSize text) = withRef fileBrowser $ \fileBrowserPtr -> setTextsize' fileBrowserPtr text
textsize' :: (Ptr ()) -> IO ((CInt))
textsize' a1 =
  let {a1' = id a1} in 
  textsize''_ a1' >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 62 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

instance (impl ~ ( IO (FontSize))) => Op (GetTextsize ()) FileBrowser orig impl where
  runOp _ _ fileBrowser = withRef fileBrowser $ \fileBrowserPtr -> textsize' fileBrowserPtr >>= return . FontSize
setFileType' :: (Ptr ()) -> (Word8) -> IO ((()))
setFileType' a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setFileType''_ a1' a2' >>= \res ->
  let {res' = supressWarningAboutRes res} in
  return (res')

{-# LINE 65 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

instance (impl ~ (FileBrowserType ->  IO ())) => Op (SetFiletype ()) FileBrowser orig impl where
  runOp _ _ widget t = withRef widget $ \widgetPtr -> setFileType' widgetPtr (fromInteger $ toInteger $ fromEnum t)
filetype' :: (Ptr ()) -> IO ((Word8))
filetype' a1 =
  let {a1' = id a1} in 
  filetype''_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 68 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

instance (impl ~ IO (FileBrowserType)) => Op (GetFiletype ()) FileBrowser orig impl where
  runOp _ _ widget = withRef widget $ \widgetPtr -> filetype' widgetPtr >>= return . toEnum . fromInteger . toInteger
load' :: (Ptr ()) -> (T.Text) -> (FileSortF) -> IO ((CInt))
load' a1 a2 a3 =
  let {a1' = id a1} in 
  let {a2' = unsafeToCString a2} in 
  let {a3' = id a3} in 
  load''_ a1' a2' a3' >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 71 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

instance (impl ~ (T.Text -> FileSortF -> IO (Either UnknownError ()))) => Op (Load ()) FileBrowser orig impl where
  runOp _ _ widget dir sortF = withRef widget $ \widgetPtr -> do
                               status <- load' widgetPtr dir sortF
                               return (if (status == 0) then (Left UnknownError) else (Right ()))

numericSort :: IO ((FileSortF))
numericSort =
  numericSort'_ >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 77 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

alphaSort :: IO ((FileSortF))
alphaSort =
  alphaSort'_ >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 78 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

caseAlphaSort :: IO ((FileSortF))
caseAlphaSort =
  caseAlphaSort'_ >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 79 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}

caseNumericSort :: IO ((FileSortF))
caseNumericSort =
  caseNumericSort'_ >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 80 "src/Graphics/UI/FLTK/LowLevel/FileBrowser.chs" #-}


-- $hierarchy
-- @
-- "Graphics.UI.FLTK.LowLevel.Widget"
--  |
--  v
-- "Graphics.UI.FLTK.LowLevel.Group"
--  |
--  v
-- "Graphics.UI.FLTK.LowLevel.Browser"
--  |
--  v
-- "Graphics.UI.FLTK.LowLevel.FileBrowser"
-- @

-- $FileBrowserFunctions
-- @
-- getFiletype :: 'Ref' 'FileBrowser' -> 'IO' ('FileBrowserType')
--
-- getFilter :: 'Ref' 'FileBrowser' -> 'IO' 'T.Text'
--
-- getIconsize :: 'Ref' 'FileBrowser' -> 'IO' ('CUChar')
--
-- getTextsize :: 'Ref' 'FileBrowser' -> 'IO' ('FontSize')
--
-- load :: 'Ref' 'FileBrowser' -> 'T.Text' -> 'FileSortF' -> 'IO' ('Either' 'UnknownError' ())
--
-- setFiletype :: 'Ref' 'FileBrowser' -> 'FileBrowserType' -> 'IO' ()
--
-- setFilter :: 'Ref' 'FileBrowser' -> 'T.Text' -> 'IO' ()
--
-- setIconsize :: 'Ref' 'FileBrowser' -> 'CUChar' -> 'IO' ()
--
-- setTextsize :: 'Ref' 'FileBrowser' -> 'FontSize' -> 'IO' ()
-- @

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h Fl_File_Browser_New"
  fileBrowserNew''_ :: (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO (C2HSImp.Ptr ()))))))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h Fl_File_Browser_New_WithLabel"
  fileBrowserNewWithLabel''_ :: (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CChar) -> (IO (C2HSImp.Ptr ())))))))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h Fl_File_Browser_set_iconsize"
  setIconsize''_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CUChar -> (IO ())))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h Fl_File_Browser_iconsize"
  iconsize''_ :: ((C2HSImp.Ptr ()) -> (IO C2HSImp.CUChar))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h Fl_File_Browser_set_filter"
  setFilter''_ :: ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (IO ())))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h Fl_File_Browser_filter"
  filter''_ :: ((C2HSImp.Ptr ()) -> (IO (C2HSImp.Ptr C2HSImp.CChar)))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h Fl_File_Browser_set_textsize"
  setTextsize''_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO ())))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h Fl_File_Browser_textsize"
  textsize''_ :: ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h Fl_File_Browser_set_filetype"
  setFileType''_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO ())))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h Fl_File_Browser_filetype"
  filetype''_ :: ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h Fl_File_Browser_load"
  load''_ :: ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((FileSortF) -> (IO C2HSImp.CInt))))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h fl_numericsort_reference"
  numericSort'_ :: (IO (FileSortF))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h fl_alphasort_reference"
  alphaSort'_ :: (IO (FileSortF))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h fl_casealphasort_reference"
  caseAlphaSort'_ :: (IO (FileSortF))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/FileBrowser.chs.h fl_casenumericsort_reference"
  caseNumericSort'_ :: (IO (FileSortF))