{-# LINE 2 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
module Graphics.UI.Gtk.Recent.RecentManager (
  RecentManager,
  RecentManagerClass,
  castToRecentManager,
  toRecentManager,
  recentManagerNew,
  recentManagerGetDefault,
  recentManagerAddItem,
  recentManagerRemoveItem,
  recentManagerLookupItem,
  recentManagerHasItem,
  recentManagerMoveItem,
  recentManagerGetItems,
  recentManagerPurgeItems,
  recentManagerFilename,
  recentManagerLimit,
  recentManagerSize,
  recentManagerChanged,
  ) where
import Control.Monad (liftM)
import System.Glib.FFI
import System.Glib.Attributes
import System.Glib.Properties
import System.Glib.GList
import System.Glib.UTFString
import System.Glib.GError (propagateGError, checkGError)
import Graphics.UI.Gtk.Recent.RecentInfo (RecentInfo, mkRecentInfo)
import Graphics.UI.Gtk.Types
{-# LINE 104 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
import Graphics.UI.Gtk.Signals
{-# LINE 105 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
{-# LINE 107 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
recentManagerNew :: IO RecentManager
recentManagerNew =
  wrapNewGObject mkRecentManager $
  gtk_recent_manager_new
{-# LINE 122 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
recentManagerGetDefault :: IO RecentManager 
recentManagerGetDefault =
  makeNewGObject mkRecentManager $
  gtk_recent_manager_get_default
{-# LINE 134 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
recentManagerAddItem :: (RecentManagerClass self, GlibString string) => self
 -> string 
 -> IO Bool 
            
recentManagerAddItem self uri =
  liftM toBool $
  withUTFString uri $ \uriPtr ->
  (\(RecentManager arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_recent_manager_add_item argPtr1 arg2)
{-# LINE 156 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
    (toRecentManager self)
    uriPtr
recentManagerRemoveItem :: (RecentManagerClass self, GlibString string) => self
 -> string 
 -> IO Bool 
            
            
recentManagerRemoveItem self uri =
      checkGError (\errorPtr ->
                       liftM toBool $
                       withUTFString uri $ \uriPtr ->
                       (\(RecentManager arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_recent_manager_remove_item argPtr1 arg2 arg3)
{-# LINE 175 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
                            (toRecentManager self)
                            uriPtr
                            errorPtr)
                  (\_ -> return False)
recentManagerLookupItem :: (RecentManagerClass self, GlibString string) => self
 -> string 
 -> IO RecentInfo 
                          
                          
                          
                          
                          
recentManagerLookupItem self uri =
  propagateGError $ \errorPtr ->
  withUTFString uri $ \uriPtr -> do
  result <- (\(RecentManager arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_recent_manager_lookup_item argPtr1 arg2 arg3)
{-# LINE 199 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
           (toRecentManager self)
           uriPtr
           errorPtr
  mkRecentInfo result
recentManagerHasItem :: (RecentManagerClass self, GlibString string) => self
 -> string 
 -> IO Bool 
recentManagerHasItem self uri =
  liftM toBool $
  withUTFString uri $ \uriPtr ->
  (\(RecentManager arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_recent_manager_has_item argPtr1 arg2)
{-# LINE 217 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
    (toRecentManager self)
    uriPtr
recentManagerMoveItem :: (RecentManagerClass self, GlibString string) => self
 -> string 
 -> string 
 -> IO Bool 
recentManagerMoveItem self uri newUri =
  checkGError ( \errorPtr ->
                    liftM toBool $
                    withUTFString newUri $ \newUriPtr ->
                    withUTFString uri $ \uriPtr ->
                    (\(RecentManager arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->gtk_recent_manager_move_item argPtr1 arg2 arg3 arg4)
{-# LINE 238 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
                         (toRecentManager self)
                         uriPtr
                         newUriPtr
                         errorPtr)
              (\_ -> return False)
recentManagerGetItems :: RecentManagerClass self => self
 -> IO [RecentInfo] 
                            
recentManagerGetItems self = do
  glist <- (\(RecentManager arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_recent_manager_get_items argPtr1)
{-# LINE 254 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
            (toRecentManager self)
  list <- fromGList glist
  mapM mkRecentInfo list
recentManagerPurgeItems :: RecentManagerClass self => self
 -> IO Int 
           
recentManagerPurgeItems self =
  liftM fromIntegral $
  propagateGError $ \errorPtr ->
  (\(RecentManager arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_recent_manager_purge_items argPtr1 arg2)
{-# LINE 270 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
    (toRecentManager self)
    errorPtr
recentManagerFilename :: (RecentManagerClass self, GlibString string) => ReadAttr self string
recentManagerFilename = readAttrFromStringProperty "filename"
recentManagerLimit :: RecentManagerClass self => Attr self Int
recentManagerLimit = newAttrFromIntProperty "limit"
recentManagerSize :: RecentManagerClass self => ReadAttr self Int
recentManagerSize = readAttrFromIntProperty "size"
recentManagerChanged :: RecentManagerClass self => Signal self (IO ())
recentManagerChanged = Signal (connect_NONE__NONE "changed")
foreign import ccall safe "gtk_recent_manager_new"
  gtk_recent_manager_new :: (IO (Ptr RecentManager))
foreign import ccall safe "gtk_recent_manager_get_default"
  gtk_recent_manager_get_default :: (IO (Ptr RecentManager))
foreign import ccall safe "gtk_recent_manager_add_item"
  gtk_recent_manager_add_item :: ((Ptr RecentManager) -> ((Ptr CChar) -> (IO CInt)))
foreign import ccall safe "gtk_recent_manager_remove_item"
  gtk_recent_manager_remove_item :: ((Ptr RecentManager) -> ((Ptr CChar) -> ((Ptr (Ptr ())) -> (IO CInt))))
foreign import ccall unsafe "gtk_recent_manager_lookup_item"
  gtk_recent_manager_lookup_item :: ((Ptr RecentManager) -> ((Ptr CChar) -> ((Ptr (Ptr ())) -> (IO (Ptr RecentInfo)))))
foreign import ccall safe "gtk_recent_manager_has_item"
  gtk_recent_manager_has_item :: ((Ptr RecentManager) -> ((Ptr CChar) -> (IO CInt)))
foreign import ccall safe "gtk_recent_manager_move_item"
  gtk_recent_manager_move_item :: ((Ptr RecentManager) -> ((Ptr CChar) -> ((Ptr CChar) -> ((Ptr (Ptr ())) -> (IO CInt)))))
foreign import ccall safe "gtk_recent_manager_get_items"
  gtk_recent_manager_get_items :: ((Ptr RecentManager) -> (IO (Ptr ())))
foreign import ccall safe "gtk_recent_manager_purge_items"
  gtk_recent_manager_purge_items :: ((Ptr RecentManager) -> ((Ptr (Ptr ())) -> (IO CInt)))