{-# LINE 2 "./Graphics/UI/Gtk/ModelView/CellRendererAccel.chs" #-}
module Graphics.UI.Gtk.ModelView.CellRendererAccel (
  CellRendererAccel,
  CellRendererAccelClass,
  castToCellRendererAccel,
  toCellRendererAccel,
  CellRendererAccelMode(..),
  cellRendererAccelNew,
  cellRendererAccelAccelKey,
  cellRendererAccelAccelMods,
  cellRendererAccelKeycode,
  cellRendererAccelAccelMode,
  accelEdited,
  accelCleared,
  ) where
import Control.Monad (liftM)
import System.Glib.FFI
import System.Glib.UTFString
import System.Glib.Attributes
import System.Glib.Properties
import Graphics.UI.Gtk.Gdk.Enums (Modifier)
import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
import Graphics.UI.Gtk.Gdk.Keys (KeyVal, KeyCode)
import Graphics.UI.Gtk.Signals
{-# LINE 86 "./Graphics/UI/Gtk/ModelView/CellRendererAccel.chs" #-}
import Graphics.UI.Gtk.Types
{-# LINE 87 "./Graphics/UI/Gtk/ModelView/CellRendererAccel.chs" #-}
{-# LINE 89 "./Graphics/UI/Gtk/ModelView/CellRendererAccel.chs" #-}
data CellRendererAccelMode = CellRendererAccelModeGtk
                           | CellRendererAccelModeOther
                           deriving (Enum,Bounded,Eq,Show)
{-# LINE 94 "./Graphics/UI/Gtk/ModelView/CellRendererAccel.chs" #-}
cellRendererAccelNew :: IO CellRendererAccel
cellRendererAccelNew =
  makeNewObject mkCellRendererAccel $ liftM castPtr $
  gtk_cell_renderer_accel_new
{-# LINE 106 "./Graphics/UI/Gtk/ModelView/CellRendererAccel.chs" #-}
cellRendererAccelAccelKey :: CellRendererAccelClass self => Attr self Int
cellRendererAccelAccelKey = newAttrFromUIntProperty "accel-key"
cellRendererAccelAccelMods :: CellRendererAccelClass self => Attr self [Modifier]
cellRendererAccelAccelMods = newAttrFromFlagsProperty "accel-mods"
                               gdk_modifier_type_get_type
{-# LINE 128 "./Graphics/UI/Gtk/ModelView/CellRendererAccel.chs" #-}
cellRendererAccelKeycode :: CellRendererAccelClass self => Attr self Int
cellRendererAccelKeycode = newAttrFromUIntProperty "keycode"
cellRendererAccelAccelMode :: CellRendererAccelClass self => Attr self CellRendererAccelMode
cellRendererAccelAccelMode = newAttrFromEnumProperty "accel-mode"
                               gtk_cell_renderer_accel_mode_get_type
{-# LINE 152 "./Graphics/UI/Gtk/ModelView/CellRendererAccel.chs" #-}
accelEdited :: (CellRendererAccelClass self, GlibString string) => Signal self (string -> KeyVal -> Modifier -> KeyCode -> IO ())
accelEdited = Signal (\after obj user -> connect_GLIBSTRING_INT_ENUM_INT__NONE "accel_edited" after obj
                      (\ path keyval modifier keycode ->
                        user path (fromIntegral keyval) modifier (fromIntegral keycode)))
accelCleared :: (CellRendererAccelClass self, GlibString string) => Signal self (string -> IO ())
accelCleared = Signal (connect_GLIBSTRING__NONE "accel_cleared")
foreign import ccall safe "gtk_cell_renderer_accel_new"
  gtk_cell_renderer_accel_new :: (IO (Ptr CellRenderer))
foreign import ccall unsafe "gdk_modifier_type_get_type"
  gdk_modifier_type_get_type :: CULong
foreign import ccall unsafe "gtk_cell_renderer_accel_mode_get_type"
  gtk_cell_renderer_accel_mode_get_type :: CULong