{-# LINE 2 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
-- -*-haskell-*-
-- GIMP Toolkit (GTK) Widget RecentManager
--
-- Author : Andy Stewart
--
-- Created: 27 Mar 2010
--
-- Copyright (C) 2010 Andy Stewart
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- |
-- Maintainer : gtk2hs-users@lists.sourceforge.net
-- Stability : provisional
-- Portability : portable (depends on GHC)
--
-- Managing Recently Used Files
--
-- * Module available since Gtk+ version 2.10
--
-- TODO:
-- GtkRecentData
-- gtk_recent_manager_add_full
--
module Graphics.UI.Gtk.Recent.RecentManager (

-- * Detail
--
-- | 'RecentManager' provides a facility for adding, removing and looking up
-- recently used files. Each recently used file is identified by its URI, and
-- has meta-data associated to it, like the names and command lines of the
-- applications that have registered it, the number of time each application
-- has registered the same file, the mime type of the file and whether the file
-- should be displayed only by the applications that have registered it.
--
-- The 'RecentManager' acts like a database of all the recently used files.
-- You can create new 'RecentManager' objects, but it is more efficient to use
-- the standard recent manager for the 'Screen' so that information about the
-- recently used files is shared with other people using them. In case the
-- default screen is being used, adding a new recently used file is as simple
-- as:
--
-- Recently used files are supported since Gtk+ 2.10.

-- * Class Hierarchy
--
-- |
-- @
-- | 'GObject'
-- | +----RecentManager
-- @


-- * Types
  RecentManager,
  RecentManagerClass,
  castToRecentManager,
  toRecentManager,

-- * Constructors
  recentManagerNew,

-- * Methods
  recentManagerGetDefault,
  recentManagerAddItem,
  recentManagerRemoveItem,
  recentManagerLookupItem,
  recentManagerHasItem,
  recentManagerMoveItem,
  recentManagerGetItems,
  recentManagerPurgeItems,

-- * Attributes
  recentManagerFilename,
  recentManagerLimit,
  recentManagerSize,

-- * Signals
  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" #-}

--------------------
-- Constructors

-- | Creates a new recent manager object. Recent manager objects are used to
-- handle the list of recently used resources. A 'RecentManager' object
-- monitors the recently used resources list, and emits the \"changed\" signal
-- each time something inside the list changes.
--
-- * Available since Gtk+ version 2.10
--
recentManagerNew :: IO RecentManager
recentManagerNew :: IO RecentManager
recentManagerNew =
  (ForeignPtr RecentManager -> RecentManager,
 FinalizerPtr RecentManager)
-> IO (Ptr RecentManager) -> IO RecentManager
forall obj.
GObjectClass obj =>
(ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
wrapNewGObject (ForeignPtr RecentManager -> RecentManager,
 FinalizerPtr RecentManager)
forall {a}.
(ForeignPtr RecentManager -> RecentManager, FinalizerPtr a)
mkRecentManager (IO (Ptr RecentManager) -> IO RecentManager)
-> IO (Ptr RecentManager) -> IO RecentManager
forall a b. (a -> b) -> a -> b
$
  IO (Ptr RecentManager)
gtk_recent_manager_new
{-# LINE 122 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}

--------------------
-- Methods

-- | Gets a unique instance of 'RecentManager'.
--
-- * Available since Gtk+ version 2.10
--
recentManagerGetDefault :: IO RecentManager -- ^ returns A unique 'RecentManager'.
recentManagerGetDefault :: IO RecentManager
recentManagerGetDefault =
  (ForeignPtr RecentManager -> RecentManager,
 FinalizerPtr RecentManager)
-> IO (Ptr RecentManager) -> IO RecentManager
forall obj.
GObjectClass obj =>
(ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
makeNewGObject (ForeignPtr RecentManager -> RecentManager,
 FinalizerPtr RecentManager)
forall {a}.
(ForeignPtr RecentManager -> RecentManager, FinalizerPtr a)
mkRecentManager (IO (Ptr RecentManager) -> IO RecentManager)
-> IO (Ptr RecentManager) -> IO RecentManager
forall a b. (a -> b) -> a -> b
$
  IO (Ptr RecentManager)
gtk_recent_manager_get_default
{-# LINE 134 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}

-- | Adds a new resource, pointed by @uri@, into the recently used resources
-- list.
--
-- This function automatically retrieves some of the needed metadata and
-- setting other metadata to common default values; it then feeds the data to
-- 'recentManagerAddFull'.
--
-- See 'recentManagerAddFull' if you want to explicitly define the metadata
-- for the resource pointed by @uri@.
--
--
-- * Available since Gtk+ version 2.10
--
recentManagerAddItem :: (RecentManagerClass self, GlibString string) => self
 -> string -- ^ @uri@ - a valid URI
 -> IO Bool -- ^ returns @True@ if the new item was successfully added to the
            -- recently used resources list
recentManagerAddItem :: forall self string.
(RecentManagerClass self, GlibString string) =>
self -> string -> IO Bool
recentManagerAddItem self
self string
uri =
  (CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$
  string -> (CString -> IO CInt) -> IO CInt
forall a. string -> (CString -> IO a) -> IO a
forall s a. GlibString s => s -> (CString -> IO a) -> IO a
withUTFString string
uri ((CString -> IO CInt) -> IO CInt)
-> (CString -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \CString
uriPtr ->
  (\(RecentManager ForeignPtr RecentManager
arg1) CString
arg2 -> ForeignPtr RecentManager
-> (Ptr RecentManager -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr RecentManager
arg1 ((Ptr RecentManager -> IO CInt) -> IO CInt)
-> (Ptr RecentManager -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr RecentManager
argPtr1 ->Ptr RecentManager -> CString -> IO CInt
gtk_recent_manager_add_item Ptr RecentManager
argPtr1 CString
arg2)
{-# LINE 156 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
    (toRecentManager self)
    CString
uriPtr

-- | Removes a resource pointed by @uri@ from the recently used resources list
-- handled by a recent manager.
--
--
-- * Available since Gtk+ version 2.10
--
recentManagerRemoveItem :: (RecentManagerClass self, GlibString string) => self
 -> string -- ^ @uri@ - the URI of the item you wish to remove
 -> IO Bool -- ^ returns @True@ if the item pointed by @uri@ has been
            -- successfully removed by the recently used resources list, and
            -- @False@ otherwise.
recentManagerRemoveItem :: forall self string.
(RecentManagerClass self, GlibString string) =>
self -> string -> IO Bool
recentManagerRemoveItem self
self string
uri =
      (Ptr (Ptr ()) -> IO Bool) -> (GError -> IO Bool) -> IO Bool
forall a. (Ptr (Ptr ()) -> IO a) -> (GError -> IO a) -> IO a
checkGError (\Ptr (Ptr ())
errorPtr ->
                       (CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$
                       string -> (CString -> IO CInt) -> IO CInt
forall a. string -> (CString -> IO a) -> IO a
forall s a. GlibString s => s -> (CString -> IO a) -> IO a
withUTFString string
uri ((CString -> IO CInt) -> IO CInt)
-> (CString -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \CString
uriPtr ->
                       (\(RecentManager ForeignPtr RecentManager
arg1) CString
arg2 Ptr (Ptr ())
arg3 -> ForeignPtr RecentManager
-> (Ptr RecentManager -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr RecentManager
arg1 ((Ptr RecentManager -> IO CInt) -> IO CInt)
-> (Ptr RecentManager -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr RecentManager
argPtr1 ->Ptr RecentManager -> CString -> Ptr (Ptr ()) -> IO CInt
gtk_recent_manager_remove_item Ptr RecentManager
argPtr1 CString
arg2 Ptr (Ptr ())
arg3)
{-# LINE 175 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
                            (self -> RecentManager
forall o. RecentManagerClass o => o -> RecentManager
toRecentManager self
self)
                            CString
uriPtr
                            Ptr (Ptr ())
errorPtr)
                  (\GError
_ -> Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
False)

-- | Searches for a URI inside the recently used resources list, and returns a
-- structure containing information about the resource like its MIME type, or
-- its display name.
--
--
-- * Available since Gtk+ version 2.10
--
recentManagerLookupItem :: (RecentManagerClass self, GlibString string) => self
 -> string -- ^ @uri@ - a URI
 -> IO RecentInfo -- ^ returns a 'RecentInfo'
                          -- structure containing information about the
                          -- resource pointed by @uri@, or {@NULL@, FIXME: this
                          -- should probably be converted to a Maybe data type}
                          -- if the URI was not registered in the recently used
                          -- resources list.
recentManagerLookupItem :: forall self string.
(RecentManagerClass self, GlibString string) =>
self -> string -> IO RecentInfo
recentManagerLookupItem self
self string
uri =
  (Ptr (Ptr ()) -> IO RecentInfo) -> IO RecentInfo
forall a. (Ptr (Ptr ()) -> IO a) -> IO a
propagateGError ((Ptr (Ptr ()) -> IO RecentInfo) -> IO RecentInfo)
-> (Ptr (Ptr ()) -> IO RecentInfo) -> IO RecentInfo
forall a b. (a -> b) -> a -> b
$ \Ptr (Ptr ())
errorPtr ->
  string -> (CString -> IO RecentInfo) -> IO RecentInfo
forall a. string -> (CString -> IO a) -> IO a
forall s a. GlibString s => s -> (CString -> IO a) -> IO a
withUTFString string
uri ((CString -> IO RecentInfo) -> IO RecentInfo)
-> (CString -> IO RecentInfo) -> IO RecentInfo
forall a b. (a -> b) -> a -> b
$ \CString
uriPtr -> do
  Ptr RecentInfo
result <- (\(RecentManager ForeignPtr RecentManager
arg1) CString
arg2 Ptr (Ptr ())
arg3 -> ForeignPtr RecentManager
-> (Ptr RecentManager -> IO (Ptr RecentInfo))
-> IO (Ptr RecentInfo)
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr RecentManager
arg1 ((Ptr RecentManager -> IO (Ptr RecentInfo)) -> IO (Ptr RecentInfo))
-> (Ptr RecentManager -> IO (Ptr RecentInfo))
-> IO (Ptr RecentInfo)
forall a b. (a -> b) -> a -> b
$ \Ptr RecentManager
argPtr1 ->Ptr RecentManager -> CString -> Ptr (Ptr ()) -> IO (Ptr RecentInfo)
gtk_recent_manager_lookup_item Ptr RecentManager
argPtr1 CString
arg2 Ptr (Ptr ())
arg3)
{-# LINE 199 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
           (self -> RecentManager
forall o. RecentManagerClass o => o -> RecentManager
toRecentManager self
self)
           CString
uriPtr
           Ptr (Ptr ())
errorPtr
  Ptr RecentInfo -> IO RecentInfo
mkRecentInfo Ptr RecentInfo
result

-- | Checks whether there is a recently used resource registered with @uri@
-- inside the recent manager.
--
--
-- * Available since Gtk+ version 2.10
--
recentManagerHasItem :: (RecentManagerClass self, GlibString string) => self
 -> string -- ^ @uri@ - a URI
 -> IO Bool -- ^ returns @True@ if the resource was found, @False@ otherwise.
recentManagerHasItem :: forall self string.
(RecentManagerClass self, GlibString string) =>
self -> string -> IO Bool
recentManagerHasItem self
self string
uri =
  (CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$
  string -> (CString -> IO CInt) -> IO CInt
forall a. string -> (CString -> IO a) -> IO a
forall s a. GlibString s => s -> (CString -> IO a) -> IO a
withUTFString string
uri ((CString -> IO CInt) -> IO CInt)
-> (CString -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \CString
uriPtr ->
  (\(RecentManager ForeignPtr RecentManager
arg1) CString
arg2 -> ForeignPtr RecentManager
-> (Ptr RecentManager -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr RecentManager
arg1 ((Ptr RecentManager -> IO CInt) -> IO CInt)
-> (Ptr RecentManager -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr RecentManager
argPtr1 ->Ptr RecentManager -> CString -> IO CInt
gtk_recent_manager_has_item Ptr RecentManager
argPtr1 CString
arg2)
{-# LINE 217 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
    (toRecentManager self)
    CString
uriPtr

-- | Changes the location of a recently used resource from @uri@ to @newUri@.
--
-- Please note that this function will not affect the resource pointed by
-- the URIs, but only the URI used in the recently used resources list.
--
--
-- * Available since Gtk+ version 2.10
--
recentManagerMoveItem :: (RecentManagerClass self, GlibString string) => self
 -> string -- ^ @uri@ - the URI of a recently used resource
 -> string -- ^ @newUri@ - the new URI of the recently used resource to remove the item pointed by @uri@ in the list
 -> IO Bool -- ^ returns @True@ on success.
recentManagerMoveItem :: forall self string.
(RecentManagerClass self, GlibString string) =>
self -> string -> string -> IO Bool
recentManagerMoveItem self
self string
uri string
newUri =
  (Ptr (Ptr ()) -> IO Bool) -> (GError -> IO Bool) -> IO Bool
forall a. (Ptr (Ptr ()) -> IO a) -> (GError -> IO a) -> IO a
checkGError ( \Ptr (Ptr ())
errorPtr ->
                    (CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$
                    string -> (CString -> IO CInt) -> IO CInt
forall a. string -> (CString -> IO a) -> IO a
forall s a. GlibString s => s -> (CString -> IO a) -> IO a
withUTFString string
newUri ((CString -> IO CInt) -> IO CInt)
-> (CString -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \CString
newUriPtr ->
                    string -> (CString -> IO CInt) -> IO CInt
forall a. string -> (CString -> IO a) -> IO a
forall s a. GlibString s => s -> (CString -> IO a) -> IO a
withUTFString string
uri ((CString -> IO CInt) -> IO CInt)
-> (CString -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \CString
uriPtr ->
                    (\(RecentManager ForeignPtr RecentManager
arg1) CString
arg2 CString
arg3 Ptr (Ptr ())
arg4 -> ForeignPtr RecentManager
-> (Ptr RecentManager -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr RecentManager
arg1 ((Ptr RecentManager -> IO CInt) -> IO CInt)
-> (Ptr RecentManager -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr RecentManager
argPtr1 ->Ptr RecentManager -> CString -> CString -> Ptr (Ptr ()) -> IO CInt
gtk_recent_manager_move_item Ptr RecentManager
argPtr1 CString
arg2 CString
arg3 Ptr (Ptr ())
arg4)
{-# LINE 238 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
                         (self -> RecentManager
forall o. RecentManagerClass o => o -> RecentManager
toRecentManager self
self)
                         CString
uriPtr
                         CString
newUriPtr
                         Ptr (Ptr ())
errorPtr)
              (\GError
_ -> Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
False)

-- | Gets the list of recently used resources.
--
--
-- * Available since Gtk+ version 2.10
--
recentManagerGetItems :: RecentManagerClass self => self
 -> IO [RecentInfo] -- ^ returns a list of newly allocated
                            -- 'RecentInfo' objects.
recentManagerGetItems :: forall self. RecentManagerClass self => self -> IO [RecentInfo]
recentManagerGetItems self
self = do
  Ptr ()
glist <- (\(RecentManager ForeignPtr RecentManager
arg1) -> ForeignPtr RecentManager
-> (Ptr RecentManager -> IO (Ptr ())) -> IO (Ptr ())
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr RecentManager
arg1 ((Ptr RecentManager -> IO (Ptr ())) -> IO (Ptr ()))
-> (Ptr RecentManager -> IO (Ptr ())) -> IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ \Ptr RecentManager
argPtr1 ->Ptr RecentManager -> IO (Ptr ())
gtk_recent_manager_get_items Ptr RecentManager
argPtr1)
{-# LINE 254 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
            (self -> RecentManager
forall o. RecentManagerClass o => o -> RecentManager
toRecentManager self
self)
  [Ptr RecentInfo]
list <- Ptr () -> IO [Ptr RecentInfo]
forall a. Ptr () -> IO [Ptr a]
fromGList Ptr ()
glist
  (Ptr RecentInfo -> IO RecentInfo)
-> [Ptr RecentInfo] -> IO [RecentInfo]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM Ptr RecentInfo -> IO RecentInfo
mkRecentInfo [Ptr RecentInfo]
list

-- | Purges every item from the recently used resources list.
--
--
-- * Available since Gtk+ version 2.10
--
recentManagerPurgeItems :: RecentManagerClass self => self
 -> IO Int -- ^ returns the number of items that have been removed from the
           -- recently used resources list.
recentManagerPurgeItems :: forall self. RecentManagerClass self => self -> IO Int
recentManagerPurgeItems self
self =
  (CInt -> Int) -> IO CInt -> IO Int
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$
  (Ptr (Ptr ()) -> IO CInt) -> IO CInt
forall a. (Ptr (Ptr ()) -> IO a) -> IO a
propagateGError ((Ptr (Ptr ()) -> IO CInt) -> IO CInt)
-> (Ptr (Ptr ()) -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr (Ptr ())
errorPtr ->
  (\(RecentManager ForeignPtr RecentManager
arg1) Ptr (Ptr ())
arg2 -> ForeignPtr RecentManager
-> (Ptr RecentManager -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr RecentManager
arg1 ((Ptr RecentManager -> IO CInt) -> IO CInt)
-> (Ptr RecentManager -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr RecentManager
argPtr1 ->Ptr RecentManager -> Ptr (Ptr ()) -> IO CInt
gtk_recent_manager_purge_items Ptr RecentManager
argPtr1 Ptr (Ptr ())
arg2)
{-# LINE 270 "./Graphics/UI/Gtk/Recent/RecentManager.chs" #-}
    (toRecentManager self)
    Ptr (Ptr ())
errorPtr

--------------------
-- Attributes

-- | The full path to the file to be used to store and read the recently used resources list
--
-- Default value: 'Nothing'
--
-- * Available since Gtk+ version 2.10
--
recentManagerFilename :: (RecentManagerClass self, GlibString string) => ReadAttr self string
recentManagerFilename :: forall self string.
(RecentManagerClass self, GlibString string) =>
ReadAttr self string
recentManagerFilename = String -> ReadAttr self string
forall gobj string.
(GObjectClass gobj, GlibString string) =>
String -> ReadAttr gobj string
readAttrFromStringProperty String
"filename"

-- | The maximum number of items to be returned by the 'recentManagerGetItems' function.
--
-- Allowed values: >= 'GMaxulong'
--
-- Default value: -1
--
--
-- * Available since Gtk+ version 2.10
--
recentManagerLimit :: RecentManagerClass self => Attr self Int
recentManagerLimit :: forall self. RecentManagerClass self => Attr self Int
recentManagerLimit = String -> Attr self Int
forall gobj. GObjectClass gobj => String -> Attr gobj Int
newAttrFromIntProperty String
"limit"

-- | The size of the recently used resources list.
--
-- Allowed values: >= 'GMaxulong'
--
-- Default value: 0
--
--
-- * Available since Gtk+ version 2.10
--
recentManagerSize :: RecentManagerClass self => ReadAttr self Int
recentManagerSize :: forall self. RecentManagerClass self => ReadAttr self Int
recentManagerSize = String -> ReadAttr self Int
forall gobj. GObjectClass gobj => String -> ReadAttr gobj Int
readAttrFromIntProperty String
"size"

--------------------
-- Signals

-- | Emitted when the current recently used resources manager changes its
-- contents.
--
--
-- * Available since Gtk+ version 2.10
--
recentManagerChanged :: RecentManagerClass self => Signal self (IO ())
recentManagerChanged :: forall self. RecentManagerClass self => Signal self (IO ())
recentManagerChanged = (Bool -> self -> IO () -> IO (ConnectId self))
-> Signal self (IO ())
forall object handler.
(Bool -> object -> handler -> IO (ConnectId object))
-> Signal object handler
Signal (String -> Bool -> self -> IO () -> IO (ConnectId self)
forall obj.
GObjectClass obj =>
String -> Bool -> obj -> IO () -> IO (ConnectId obj)
connect_NONE__NONE String
"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)))