module Graphics.UI.Gtk.General.IconFactory (
IconFactory,
IconFactoryClass,
castToIconFactory, gTypeIconFactory,
toIconFactory,
iconFactoryNew,
iconFactoryAdd,
iconFactoryAddDefault,
iconFactoryLookup,
iconFactoryLookupDefault,
iconFactoryRemoveDefault,
IconSet,
iconSetNew,
iconSetNewFromPixbuf,
iconSetAddSource,
iconSetRenderIcon,
iconSetGetSizes,
IconSource,
iconSourceNew,
TextDirection(..),
iconSourceGetDirection,
iconSourceSetDirection,
iconSourceResetDirection,
iconSourceGetFilename,
iconSourceSetFilename,
iconSourceGetPixbuf,
iconSourceSetPixbuf,
iconSourceGetSize,
iconSourceSetSize,
iconSourceResetSize,
StateType(..),
iconSourceGetState,
iconSourceSetState,
iconSourceResetState,
IconSize(..),
iconSizeCheck,
iconSizeRegister,
iconSizeRegisterAlias,
iconSizeFromName,
iconSizeGetName
) where
import Control.Applicative
import Prelude
import Control.Monad (liftM)
import System.Glib.FFI
import System.Glib.UTFString
import Graphics.UI.Gtk.Types
import Graphics.UI.Gtk.General.Enums (TextDirection(..), StateType(..))
import Graphics.UI.Gtk.General.StockItems
import Graphics.UI.Gtk.General.Structs (IconSize(..))
newtype IconSource = IconSource (ForeignPtr (IconSource))
newtype IconSet = IconSet (ForeignPtr (IconSet))
instance Show IconSize where
show i = unsafePerformIO (lookupSizeString (fromEnum i))
where
lookupSizeString n = do
ptr <- gtk_icon_size_get_name (fromIntegral n)
if ptr==nullPtr then return "" else glibToString <$> peekUTFString ptr
iconFactoryNew :: IO IconFactory
iconFactoryNew =
wrapNewGObject mkIconFactory gtk_icon_factory_new
iconFactoryAdd :: IconFactory -> StockId -> IconSet -> IO ()
iconFactoryAdd i stockId iconSet = withUTFString stockId $ \strPtr ->
(\(IconFactory arg1) arg2 (IconSet arg3) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg3 $ \argPtr3 ->gtk_icon_factory_add argPtr1 arg2 argPtr3) i strPtr iconSet
iconFactoryAddDefault :: IconFactory -> IO ()
iconFactoryAddDefault = (\(IconFactory arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_factory_add_default argPtr1)
iconFactoryLookup :: IconFactory -> StockId -> IO (Maybe IconSet)
iconFactoryLookup i stockId =
withUTFString stockId $ \strPtr -> do
iconSetPtr <- (\(IconFactory arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_factory_lookup argPtr1 arg2) i strPtr
if iconSetPtr == nullPtr then return Nothing else liftM (Just . IconSet) $
newForeignPtr iconSetPtr icon_set_unref
iconFactoryLookupDefault :: StockId -> IO (Maybe IconSet)
iconFactoryLookupDefault stockId =
withUTFString stockId $ \strPtr -> do
iconSetPtr <- gtk_icon_factory_lookup_default strPtr
if iconSetPtr == nullPtr then return Nothing else liftM (Just . IconSet) $
newForeignPtr iconSetPtr icon_set_unref
iconFactoryRemoveDefault :: IconFactory -> IO ()
iconFactoryRemoveDefault = (\(IconFactory arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_factory_remove_default argPtr1)
iconSetAddSource :: IconSet -> IconSource -> IO ()
iconSetAddSource set source = (\(IconSet arg1) (IconSource arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gtk_icon_set_add_source argPtr1 argPtr2) set source
iconSetRenderIcon :: WidgetClass widget => IconSet
-> TextDirection
-> StateType
-> IconSize
-> widget
-> IO Pixbuf
iconSetRenderIcon set dir state size widget = wrapNewGObject mkPixbuf $
(\(IconSet arg1) (Style arg2) arg3 arg4 arg5 (Widget arg6) arg7 -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->withForeignPtr arg6 $ \argPtr6 ->gtk_icon_set_render_icon argPtr1 argPtr2 arg3 arg4 arg5 argPtr6 arg7) set (Style nullForeignPtr)
((fromIntegral.fromEnum) dir) ((fromIntegral.fromEnum) state)
((fromIntegral.fromEnum) size) (toWidget widget) nullPtr
iconSetNew :: IO IconSet
iconSetNew = do
isPtr <- gtk_icon_set_new
liftM IconSet $ newForeignPtr isPtr icon_set_unref
iconSetNewFromPixbuf :: Pixbuf -> IO IconSet
iconSetNewFromPixbuf pixbuf = do
isPtr <- (\(Pixbuf arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_set_new_from_pixbuf argPtr1) pixbuf
liftM IconSet $ newForeignPtr isPtr icon_set_unref
iconSetGetSizes :: IconSet -> IO [IconSize]
iconSetGetSizes set =
alloca $ \sizesArrPtr -> alloca $ \lenPtr -> do
(\(IconSet arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_set_get_sizes argPtr1 arg2 arg3) set sizesArrPtr lenPtr
len <- peek lenPtr
sizesArr <- peek sizesArrPtr
list <- peekArray (fromIntegral len) sizesArr
g_free (castPtr sizesArr)
return $ map (toEnum.fromIntegral) list
foreign import ccall unsafe ">k_icon_set_unref"
icon_set_unref :: FinalizerPtr IconSet
iconSizeCheck :: IconSize -> IO Bool
iconSizeCheck size = liftM toBool $
gtk_icon_size_lookup ((fromIntegral . fromEnum) size) nullPtr nullPtr
iconSizeRegister :: GlibString string
=> string
-> Int
-> Int
-> IO IconSize
iconSizeRegister name width height = liftM (toEnum . fromIntegral) $
withUTFString name $ \strPtr -> gtk_icon_size_register
strPtr (fromIntegral width) (fromIntegral height)
iconSizeRegisterAlias :: GlibString string => IconSize -> string -> IO ()
iconSizeRegisterAlias target alias = withUTFString alias $ \strPtr ->
gtk_icon_size_register_alias strPtr ((fromIntegral . fromEnum) target)
iconSizeFromName :: GlibString string => string -> IO IconSize
iconSizeFromName name = liftM (toEnum . fromIntegral) $
withUTFString name gtk_icon_size_from_name
iconSizeGetName :: GlibString string => IconSize -> IO (Maybe string)
iconSizeGetName size = do
strPtr <- gtk_icon_size_get_name ((fromIntegral . fromEnum) size)
if strPtr==nullPtr then return Nothing else liftM Just $ peekUTFString strPtr
iconSourceGetDirection :: IconSource -> IO (Maybe TextDirection)
iconSourceGetDirection is = do
res <- (\(IconSource arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_get_direction_wildcarded argPtr1) is
if (toBool res) then return Nothing else liftM (Just .toEnum.fromIntegral) $
(\(IconSource arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_get_direction argPtr1) is
iconSourceGetFilename :: GlibString string => IconSource -> IO (Maybe string)
iconSourceGetFilename is = do
strPtr <- (\(IconSource arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_get_filename argPtr1) is
if strPtr==nullPtr then return Nothing else liftM Just $ peekUTFString strPtr
iconSourceGetSize :: IconSource -> IO (Maybe IconSize)
iconSourceGetSize is = do
res <- (\(IconSource arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_get_size_wildcarded argPtr1) is
if (toBool res) then return Nothing else liftM (Just . toEnum . fromIntegral) $
(\(IconSource arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_get_size argPtr1) is
iconSourceGetState :: IconSource -> IO (Maybe StateType)
iconSourceGetState is = do
res <- (\(IconSource arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_get_state_wildcarded argPtr1) is
if (toBool res) then return Nothing else liftM (Just .toEnum.fromIntegral) $
(\(IconSource arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_get_state argPtr1) is
iconSourceNew :: IO IconSource
iconSourceNew = do
isPtr <- gtk_icon_source_new
liftM IconSource $ newForeignPtr isPtr icon_source_free
foreign import ccall unsafe ">k_icon_source_free"
icon_source_free :: FinalizerPtr IconSource
iconSourceSetDirection :: IconSource -> TextDirection -> IO ()
iconSourceSetDirection is td = do
(\(IconSource arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_set_direction_wildcarded argPtr1 arg2) is (fromBool False)
(\(IconSource arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_set_direction argPtr1 arg2) is ((fromIntegral.fromEnum) td)
iconSourceResetDirection :: IconSource -> IO ()
iconSourceResetDirection is =
(\(IconSource arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_set_direction_wildcarded argPtr1 arg2) is (fromBool True)
iconSourceSetFilename :: GlibFilePath fp => IconSource -> fp -> IO ()
iconSourceSetFilename is name =
withUTFFilePath name $ (\(IconSource arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_set_filename argPtr1 arg2) is
iconSourceGetPixbuf :: IconSource -> IO (Maybe Pixbuf)
iconSourceGetPixbuf is = maybeNull (makeNewGObject mkPixbuf) $
(\(IconSource arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_get_pixbuf argPtr1) is
iconSourceSetPixbuf :: IconSource -> Pixbuf -> IO ()
iconSourceSetPixbuf is pb = do
(\(IconSource arg1) (Pixbuf arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gtk_icon_source_set_pixbuf argPtr1 argPtr2) is pb
iconSourceSetSize :: IconSource -> IconSize -> IO ()
iconSourceSetSize is size = do
(\(IconSource arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_set_size_wildcarded argPtr1 arg2) is (fromBool False)
(\(IconSource arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_set_size argPtr1 arg2) is ((fromIntegral . fromEnum) size)
iconSourceResetSize :: IconSource -> IO ()
iconSourceResetSize is =
(\(IconSource arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_set_size_wildcarded argPtr1 arg2) is (fromBool True)
iconSourceSetState :: IconSource -> StateType -> IO ()
iconSourceSetState is state = do
(\(IconSource arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_set_state_wildcarded argPtr1 arg2) is (fromBool False)
(\(IconSource arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_set_state argPtr1 arg2) is ((fromIntegral.fromEnum) state)
iconSourceResetState :: IconSource -> IO ()
iconSourceResetState is =
(\(IconSource arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_icon_source_set_state_wildcarded argPtr1 arg2) is (fromBool True)
foreign import ccall unsafe "gtk_icon_size_get_name"
gtk_icon_size_get_name :: (CInt -> (IO (Ptr CChar)))
foreign import ccall unsafe "gtk_icon_factory_new"
gtk_icon_factory_new :: (IO (Ptr IconFactory))
foreign import ccall unsafe "gtk_icon_factory_add"
gtk_icon_factory_add :: ((Ptr IconFactory) -> ((Ptr CChar) -> ((Ptr IconSet) -> (IO ()))))
foreign import ccall unsafe "gtk_icon_factory_add_default"
gtk_icon_factory_add_default :: ((Ptr IconFactory) -> (IO ()))
foreign import ccall unsafe "gtk_icon_factory_lookup"
gtk_icon_factory_lookup :: ((Ptr IconFactory) -> ((Ptr CChar) -> (IO (Ptr IconSet))))
foreign import ccall unsafe "gtk_icon_factory_lookup_default"
gtk_icon_factory_lookup_default :: ((Ptr CChar) -> (IO (Ptr IconSet)))
foreign import ccall unsafe "gtk_icon_factory_remove_default"
gtk_icon_factory_remove_default :: ((Ptr IconFactory) -> (IO ()))
foreign import ccall unsafe "gtk_icon_set_add_source"
gtk_icon_set_add_source :: ((Ptr IconSet) -> ((Ptr IconSource) -> (IO ())))
foreign import ccall safe "gtk_icon_set_render_icon"
gtk_icon_set_render_icon :: ((Ptr IconSet) -> ((Ptr Style) -> (CInt -> (CInt -> (CInt -> ((Ptr Widget) -> ((Ptr CChar) -> (IO (Ptr Pixbuf)))))))))
foreign import ccall unsafe "gtk_icon_set_new"
gtk_icon_set_new :: (IO (Ptr IconSet))
foreign import ccall unsafe "gtk_icon_set_new_from_pixbuf"
gtk_icon_set_new_from_pixbuf :: ((Ptr Pixbuf) -> (IO (Ptr IconSet)))
foreign import ccall unsafe "gtk_icon_set_get_sizes"
gtk_icon_set_get_sizes :: ((Ptr IconSet) -> ((Ptr (Ptr CInt)) -> ((Ptr CInt) -> (IO ()))))
foreign import ccall unsafe "g_free"
g_free :: ((Ptr ()) -> (IO ()))
foreign import ccall safe "gtk_icon_size_lookup"
gtk_icon_size_lookup :: (CInt -> ((Ptr CInt) -> ((Ptr CInt) -> (IO CInt))))
foreign import ccall unsafe "gtk_icon_size_register"
gtk_icon_size_register :: ((Ptr CChar) -> (CInt -> (CInt -> (IO CInt))))
foreign import ccall unsafe "gtk_icon_size_register_alias"
gtk_icon_size_register_alias :: ((Ptr CChar) -> (CInt -> (IO ())))
foreign import ccall unsafe "gtk_icon_size_from_name"
gtk_icon_size_from_name :: ((Ptr CChar) -> (IO CInt))
foreign import ccall safe "gtk_icon_source_get_direction_wildcarded"
gtk_icon_source_get_direction_wildcarded :: ((Ptr IconSource) -> (IO CInt))
foreign import ccall unsafe "gtk_icon_source_get_direction"
gtk_icon_source_get_direction :: ((Ptr IconSource) -> (IO CInt))
foreign import ccall unsafe "gtk_icon_source_get_filename"
gtk_icon_source_get_filename :: ((Ptr IconSource) -> (IO (Ptr CChar)))
foreign import ccall unsafe "gtk_icon_source_get_size_wildcarded"
gtk_icon_source_get_size_wildcarded :: ((Ptr IconSource) -> (IO CInt))
foreign import ccall unsafe "gtk_icon_source_get_size"
gtk_icon_source_get_size :: ((Ptr IconSource) -> (IO CInt))
foreign import ccall unsafe "gtk_icon_source_get_state_wildcarded"
gtk_icon_source_get_state_wildcarded :: ((Ptr IconSource) -> (IO CInt))
foreign import ccall unsafe "gtk_icon_source_get_state"
gtk_icon_source_get_state :: ((Ptr IconSource) -> (IO CInt))
foreign import ccall unsafe "gtk_icon_source_new"
gtk_icon_source_new :: (IO (Ptr IconSource))
foreign import ccall unsafe "gtk_icon_source_set_direction_wildcarded"
gtk_icon_source_set_direction_wildcarded :: ((Ptr IconSource) -> (CInt -> (IO ())))
foreign import ccall unsafe "gtk_icon_source_set_direction"
gtk_icon_source_set_direction :: ((Ptr IconSource) -> (CInt -> (IO ())))
foreign import ccall unsafe "gtk_icon_source_set_filename"
gtk_icon_source_set_filename :: ((Ptr IconSource) -> ((Ptr CChar) -> (IO ())))
foreign import ccall unsafe "gtk_icon_source_get_pixbuf"
gtk_icon_source_get_pixbuf :: ((Ptr IconSource) -> (IO (Ptr Pixbuf)))
foreign import ccall safe "gtk_icon_source_set_pixbuf"
gtk_icon_source_set_pixbuf :: ((Ptr IconSource) -> ((Ptr Pixbuf) -> (IO ())))
foreign import ccall unsafe "gtk_icon_source_set_size_wildcarded"
gtk_icon_source_set_size_wildcarded :: ((Ptr IconSource) -> (CInt -> (IO ())))
foreign import ccall unsafe "gtk_icon_source_set_size"
gtk_icon_source_set_size :: ((Ptr IconSource) -> (CInt -> (IO ())))
foreign import ccall unsafe "gtk_icon_source_set_state_wildcarded"
gtk_icon_source_set_state_wildcarded :: ((Ptr IconSource) -> (CInt -> (IO ())))
foreign import ccall unsafe "gtk_icon_source_set_state"
gtk_icon_source_set_state :: ((Ptr IconSource) -> (CInt -> (IO ())))