{-# LINE 2 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
module Graphics.UI.Gtk.Selectors.FileFilter (
FileFilter,
FileFilterClass,
castToFileFilter, gTypeFileFilter,
toFileFilter,
FileFilterFlags(..),
fileFilterNew,
fileFilterSetName,
fileFilterGetName,
fileFilterAddMimeType,
fileFilterAddPattern,
fileFilterAddCustom,
fileFilterAddPixbufFormats,
fileFilterName,
) where
import Control.Monad (liftM)
import System.Glib.FFI
import System.Glib.Flags (Flags, fromFlags)
import System.Glib.UTFString
import System.Glib.Attributes
import Graphics.UI.Gtk.Types
{-# LINE 88 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
{-# LINE 91 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
data FileFilterFlags = FileFilterFilename
| FileFilterUri
| FileFilterDisplayName
| FileFilterMimeType
deriving (FileFilterFlags
FileFilterFlags -> FileFilterFlags -> Bounded FileFilterFlags
forall a. a -> a -> Bounded a
$cminBound :: FileFilterFlags
minBound :: FileFilterFlags
$cmaxBound :: FileFilterFlags
maxBound :: FileFilterFlags
Bounded,Int -> FileFilterFlags -> ShowS
[FileFilterFlags] -> ShowS
FileFilterFlags -> String
(Int -> FileFilterFlags -> ShowS)
-> (FileFilterFlags -> String)
-> ([FileFilterFlags] -> ShowS)
-> Show FileFilterFlags
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FileFilterFlags -> ShowS
showsPrec :: Int -> FileFilterFlags -> ShowS
$cshow :: FileFilterFlags -> String
show :: FileFilterFlags -> String
$cshowList :: [FileFilterFlags] -> ShowS
showList :: [FileFilterFlags] -> ShowS
Show,FileFilterFlags -> FileFilterFlags -> Bool
(FileFilterFlags -> FileFilterFlags -> Bool)
-> (FileFilterFlags -> FileFilterFlags -> Bool)
-> Eq FileFilterFlags
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FileFilterFlags -> FileFilterFlags -> Bool
== :: FileFilterFlags -> FileFilterFlags -> Bool
$c/= :: FileFilterFlags -> FileFilterFlags -> Bool
/= :: FileFilterFlags -> FileFilterFlags -> Bool
Eq)
instance Enum FileFilterFlags where
fromEnum FileFilterFilename = 1
fromEnum FileFilterUri = 2
fromEnum FileFilterDisplayName = 4
fromEnum FileFilterMimeType = 8
toEnum 1 = FileFilterFilename
toEnum 2 = FileFilterUri
toEnum 4 = FileFilterDisplayName
toEnum 8 = FileFilterMimeType
toEnum unmatched = error ("FileFilterFlags.toEnum: Cannot match " ++ show unmatched)
succ :: FileFilterFlags -> FileFilterFlags
succ FileFilterFlags
FileFilterFilename = FileFilterFlags
FileFilterUri
succ FileFilterFlags
FileFilterUri = FileFilterFlags
FileFilterDisplayName
succ FileFilterFlags
FileFilterDisplayName = FileFilterFlags
FileFilterMimeType
succ FileFilterFlags
_ = FileFilterFlags
forall a. HasCallStack => a
undefined
pred :: FileFilterFlags -> FileFilterFlags
pred FileFilterFlags
FileFilterUri = FileFilterFlags
FileFilterFilename
pred FileFilterFlags
FileFilterDisplayName = FileFilterFlags
FileFilterUri
pred FileFilterFlags
FileFilterMimeType = FileFilterFlags
FileFilterDisplayName
pred FileFilterFlags
_ = FileFilterFlags
forall a. HasCallStack => a
undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x FileFilterMimeType
enumFromThen _ _ = error "Enum FileFilterFlags: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum FileFilterFlags: enumFromThenTo not implemented"
{-# LINE 95 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
instance Flags FileFilterFlags
fileFilterNew :: IO FileFilter
fileFilterNew =
makeNewObject mkFileFilter $
gtk_file_filter_new
{-# LINE 109 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
fileFilterSetName :: GlibString string
=> FileFilter
-> string
-> IO ()
fileFilterSetName self name =
withUTFString name $ \namePtr ->
(\(FileFilter arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_file_filter_set_name argPtr1 arg2)
{-# LINE 124 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
self
namePtr
fileFilterGetName :: GlibString string
=> FileFilter
-> IO string
fileFilterGetName :: forall string. GlibString string => FileFilter -> IO string
fileFilterGetName FileFilter
self =
(\(FileFilter ForeignPtr FileFilter
arg1) -> ForeignPtr FileFilter
-> (Ptr FileFilter -> IO CString) -> IO CString
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr FileFilter
arg1 ((Ptr FileFilter -> IO CString) -> IO CString)
-> (Ptr FileFilter -> IO CString) -> IO CString
forall a b. (a -> b) -> a -> b
$ \Ptr FileFilter
argPtr1 ->Ptr FileFilter -> IO CString
gtk_file_filter_get_name Ptr FileFilter
argPtr1)
{-# LINE 134 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
self
IO CString -> (CString -> IO string) -> IO string
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= CString -> IO string
forall s. GlibString s => CString -> IO s
peekUTFString
fileFilterAddMimeType :: GlibString string
=> FileFilter
-> string
-> IO ()
fileFilterAddMimeType :: forall string. GlibString string => FileFilter -> string -> IO ()
fileFilterAddMimeType FileFilter
self string
mimeType =
string -> (CString -> IO ()) -> IO ()
forall a. string -> (CString -> IO a) -> IO a
forall s a. GlibString s => s -> (CString -> IO a) -> IO a
withUTFString string
mimeType ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \CString
mimeTypePtr ->
(\(FileFilter ForeignPtr FileFilter
arg1) CString
arg2 -> ForeignPtr FileFilter -> (Ptr FileFilter -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr FileFilter
arg1 ((Ptr FileFilter -> IO ()) -> IO ())
-> (Ptr FileFilter -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr FileFilter
argPtr1 ->Ptr FileFilter -> CString -> IO ()
gtk_file_filter_add_mime_type Ptr FileFilter
argPtr1 CString
arg2)
{-# LINE 146 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
self
CString
mimeTypePtr
fileFilterAddPattern :: GlibString string
=> FileFilter
-> string
-> IO ()
fileFilterAddPattern :: forall string. GlibString string => FileFilter -> string -> IO ()
fileFilterAddPattern FileFilter
self string
pattern =
string -> (CString -> IO ()) -> IO ()
forall a. string -> (CString -> IO a) -> IO a
forall s a. GlibString s => s -> (CString -> IO a) -> IO a
withUTFString string
pattern ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \CString
patternPtr ->
(\(FileFilter ForeignPtr FileFilter
arg1) CString
arg2 -> ForeignPtr FileFilter -> (Ptr FileFilter -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr FileFilter
arg1 ((Ptr FileFilter -> IO ()) -> IO ())
-> (Ptr FileFilter -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr FileFilter
argPtr1 ->Ptr FileFilter -> CString -> IO ()
gtk_file_filter_add_pattern Ptr FileFilter
argPtr1 CString
arg2)
{-# LINE 158 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
self
CString
patternPtr
fileFilterAddCustom :: GlibString string => FileFilter
-> [FileFilterFlags]
-> ( Maybe string
-> Maybe string
-> Maybe string
-> Maybe string
-> IO Bool)
-> IO ()
fileFilterAddCustom :: forall string.
GlibString string =>
FileFilter
-> [FileFilterFlags]
-> (Maybe string
-> Maybe string -> Maybe string -> Maybe string -> IO Bool)
-> IO ()
fileFilterAddCustom FileFilter
self [FileFilterFlags]
needed Maybe string
-> Maybe string -> Maybe string -> Maybe string -> IO Bool
func = do
FunPtr GtkFileFilterFunc
hPtr <- GtkFileFilterFunc -> IO (FunPtr GtkFileFilterFunc)
mkHandler_GtkFileFilterFunc
(\GtkFileFilterInfoPtr
filterInfoPtr GtkFileFilterInfoPtr
_ -> do
CString
filenamePtr <- (\GtkFileFilterInfoPtr
ptr -> do {GtkFileFilterInfoPtr -> Int -> IO CString
forall b. Ptr b -> Int -> IO CString
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff GtkFileFilterInfoPtr
ptr Int
8 ::IO (Ptr CChar)}) GtkFileFilterInfoPtr
filterInfoPtr
CString
uriPtr <- (\GtkFileFilterInfoPtr
ptr -> do {GtkFileFilterInfoPtr -> Int -> IO CString
forall b. Ptr b -> Int -> IO CString
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff GtkFileFilterInfoPtr
ptr Int
16 ::IO (Ptr CChar)}) GtkFileFilterInfoPtr
filterInfoPtr
CString
displayNamePtr <- (\GtkFileFilterInfoPtr
ptr -> do {GtkFileFilterInfoPtr -> Int -> IO CString
forall b. Ptr b -> Int -> IO CString
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff GtkFileFilterInfoPtr
ptr Int
24 ::IO (Ptr CChar)}) GtkFileFilterInfoPtr
filterInfoPtr
CString
mimeTypePtr <- (\GtkFileFilterInfoPtr
ptr -> do {GtkFileFilterInfoPtr -> Int -> IO CString
forall b. Ptr b -> Int -> IO CString
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff GtkFileFilterInfoPtr
ptr Int
32 ::IO (Ptr CChar)}) GtkFileFilterInfoPtr
filterInfoPtr
Maybe string
filename <- (CString -> IO string) -> CString -> IO (Maybe string)
forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
maybePeek CString -> IO string
forall s. GlibString s => CString -> IO s
peekUTFString CString
filenamePtr
Maybe string
uri <- (CString -> IO string) -> CString -> IO (Maybe string)
forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
maybePeek CString -> IO string
forall s. GlibString s => CString -> IO s
peekUTFString CString
uriPtr
Maybe string
displayName <- (CString -> IO string) -> CString -> IO (Maybe string)
forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
maybePeek CString -> IO string
forall s. GlibString s => CString -> IO s
peekUTFString CString
displayNamePtr
Maybe string
mimeType <- (CString -> IO string) -> CString -> IO (Maybe string)
forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
maybePeek CString -> IO string
forall s. GlibString s => CString -> IO s
peekUTFString CString
mimeTypePtr
(Bool -> CInt) -> IO Bool -> IO CInt
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM Bool -> CInt
forall a. Num a => Bool -> a
fromBool (IO Bool -> IO CInt) -> IO Bool -> IO CInt
forall a b. (a -> b) -> a -> b
$ Maybe string
-> Maybe string -> Maybe string -> Maybe string -> IO Bool
func Maybe string
filename Maybe string
uri Maybe string
displayName Maybe string
mimeType)
(\(FileFilter ForeignPtr FileFilter
arg1) CInt
arg2 FunPtr GtkFileFilterFunc
arg3 GtkFileFilterInfoPtr
arg4 FunPtr (GtkFileFilterInfoPtr -> IO ())
arg5 -> ForeignPtr FileFilter -> (Ptr FileFilter -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr FileFilter
arg1 ((Ptr FileFilter -> IO ()) -> IO ())
-> (Ptr FileFilter -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr FileFilter
argPtr1 ->Ptr FileFilter
-> CInt
-> FunPtr GtkFileFilterFunc
-> GtkFileFilterInfoPtr
-> FunPtr (GtkFileFilterInfoPtr -> IO ())
-> IO ()
gtk_file_filter_add_custom Ptr FileFilter
argPtr1 CInt
arg2 FunPtr GtkFileFilterFunc
arg3 GtkFileFilterInfoPtr
arg4 FunPtr (GtkFileFilterInfoPtr -> IO ())
arg5)
{-# LINE 191 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
self
((Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> ([FileFilterFlags] -> Int) -> [FileFilterFlags] -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [FileFilterFlags] -> Int
forall a. Flags a => [a] -> Int
fromFlags) [FileFilterFlags]
needed)
FunPtr GtkFileFilterFunc
hPtr
(FunPtr GtkFileFilterFunc -> GtkFileFilterInfoPtr
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr FunPtr GtkFileFilterFunc
hPtr)
FunPtr (GtkFileFilterInfoPtr -> IO ())
destroyFunPtr
type GtkFileFilterInfoPtr = Ptr (())
{-# LINE 198 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
type GtkFileFilterFunc =
GtkFileFilterInfoPtr ->
Ptr () ->
IO CInt
foreign import ccall "wrapper" mkHandler_GtkFileFilterFunc ::
GtkFileFilterFunc ->
IO (FunPtr GtkFileFilterFunc)
fileFilterAddPixbufFormats :: FileFilter -> IO ()
fileFilterAddPixbufFormats :: FileFilter -> IO ()
fileFilterAddPixbufFormats FileFilter
self =
(\(FileFilter ForeignPtr FileFilter
arg1) -> ForeignPtr FileFilter -> (Ptr FileFilter -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr FileFilter
arg1 ((Ptr FileFilter -> IO ()) -> IO ())
-> (Ptr FileFilter -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr FileFilter
argPtr1 ->Ptr FileFilter -> IO ()
gtk_file_filter_add_pixbuf_formats Ptr FileFilter
argPtr1)
{-# LINE 216 "./Graphics/UI/Gtk/Selectors/FileFilter.chs" #-}
self
fileFilterName :: GlibString string => Attr FileFilter string
fileFilterName :: forall string. GlibString string => Attr FileFilter string
fileFilterName = (FileFilter -> IO string)
-> (FileFilter -> string -> IO ())
-> ReadWriteAttr FileFilter string string
forall o a b.
(o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
newAttr
FileFilter -> IO string
forall string. GlibString string => FileFilter -> IO string
fileFilterGetName
FileFilter -> string -> IO ()
forall string. GlibString string => FileFilter -> string -> IO ()
fileFilterSetName
foreign import ccall safe "gtk_file_filter_new"
gtk_file_filter_new :: (IO (Ptr FileFilter))
foreign import ccall safe "gtk_file_filter_set_name"
gtk_file_filter_set_name :: ((Ptr FileFilter) -> ((Ptr CChar) -> (IO ())))
foreign import ccall safe "gtk_file_filter_get_name"
gtk_file_filter_get_name :: ((Ptr FileFilter) -> (IO (Ptr CChar)))
foreign import ccall safe "gtk_file_filter_add_mime_type"
gtk_file_filter_add_mime_type :: ((Ptr FileFilter) -> ((Ptr CChar) -> (IO ())))
foreign import ccall safe "gtk_file_filter_add_pattern"
gtk_file_filter_add_pattern :: ((Ptr FileFilter) -> ((Ptr CChar) -> (IO ())))
foreign import ccall safe "gtk_file_filter_add_custom"
gtk_file_filter_add_custom :: ((Ptr FileFilter) -> (CInt -> ((FunPtr ((Ptr ()) -> ((Ptr ()) -> (IO CInt)))) -> ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> (IO ()))))))
foreign import ccall safe "gtk_file_filter_add_pixbuf_formats"
gtk_file_filter_add_pixbuf_formats :: ((Ptr FileFilter) -> (IO ()))