{-# LINE 2 "./Graphics/UI/Gtk/ActionMenuToolbar/RadioAction.chs" #-}
module Graphics.UI.Gtk.ActionMenuToolbar.RadioAction (
  RadioAction,
  RadioActionClass,
  castToRadioAction, gTypeRadioAction,
  toRadioAction,
  radioActionNew,
  radioActionGetGroup,
  radioActionSetGroup,
  radioActionGetCurrentValue,
  radioActionValueAttr,
  radioActionGroup,
  radioActionCurrentValue,
  radioActionChanged,
  onRadioActionChanged,
  afterRadioActionChanged,
  ) where
import Control.Monad (liftM)
import System.Glib.FFI
import System.Glib.UTFString
import System.Glib.GList
import System.Glib.Attributes
import System.Glib.Properties
import Graphics.UI.Gtk.Types
{-# LINE 92 "./Graphics/UI/Gtk/ActionMenuToolbar/RadioAction.chs" #-}
import Graphics.UI.Gtk.Signals
{-# LINE 93 "./Graphics/UI/Gtk/ActionMenuToolbar/RadioAction.chs" #-}
import Graphics.UI.Gtk.General.StockItems
{-# LINE 96 "./Graphics/UI/Gtk/ActionMenuToolbar/RadioAction.chs" #-}
radioActionNew :: GlibString string
 => string 
 -> string 
                   
 -> Maybe string 
 -> Maybe StockId 
                   
 -> Int 
                   
 -> IO RadioAction
radioActionNew name label tooltip stockId value =
  wrapNewGObject mkRadioAction $
  maybeWith withUTFString stockId $ \stockIdPtr ->
  maybeWith withUTFString tooltip $ \tooltipPtr ->
  withUTFString label $ \labelPtr ->
  withUTFString name $ \namePtr ->
  gtk_radio_action_new
{-# LINE 122 "./Graphics/UI/Gtk/ActionMenuToolbar/RadioAction.chs" #-}
    namePtr
    labelPtr
    tooltipPtr
    stockIdPtr
    (fromIntegral value)
radioActionGetGroup :: RadioActionClass self => self
 -> IO [RadioAction] 
radioActionGetGroup self =
  (\(RadioAction arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_radio_action_get_group argPtr1)
{-# LINE 137 "./Graphics/UI/Gtk/ActionMenuToolbar/RadioAction.chs" #-}
    (toRadioAction self)
  >>= readGSList
  >>= mapM (\elemPtr -> makeNewGObject mkRadioAction (return elemPtr))
radioActionSetGroup :: (RadioActionClass self, RadioActionClass groupMember) => self
 -> groupMember 
 -> IO ()
radioActionSetGroup self group = do
  groupPtr <- (\(RadioAction arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_radio_action_get_group argPtr1) (toRadioAction group)
  (\(RadioAction arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_radio_action_set_group argPtr1 arg2)
{-# LINE 149 "./Graphics/UI/Gtk/ActionMenuToolbar/RadioAction.chs" #-}
    (toRadioAction self)
    groupPtr
radioActionGetCurrentValue :: RadioActionClass self => self
 -> IO Int 
radioActionGetCurrentValue self =
  liftM fromIntegral $
  (\(RadioAction arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_radio_action_get_current_value argPtr1)
{-# LINE 160 "./Graphics/UI/Gtk/ActionMenuToolbar/RadioAction.chs" #-}
    (toRadioAction self)
radioActionValueAttr :: RadioActionClass self => Attr self Int
radioActionValueAttr = newAttrFromIntProperty "value"
radioActionGroup :: RadioActionClass self => ReadWriteAttr self [RadioAction] RadioAction
radioActionGroup = newAttr
  radioActionGetGroup
  radioActionSetGroup
radioActionCurrentValue :: RadioActionClass self => Attr self Int
radioActionCurrentValue = newAttrFromIntProperty "current-value"
radioActionChanged :: RadioActionClass self => Signal self (RadioAction -> IO ())
radioActionChanged = Signal (connect_OBJECT__NONE "changed")
onRadioActionChanged, afterRadioActionChanged :: RadioActionClass self => self
 -> (RadioAction -> IO ())
 -> IO (ConnectId self)
onRadioActionChanged = connect_OBJECT__NONE "changed" False
afterRadioActionChanged = connect_OBJECT__NONE "changed" True
foreign import ccall safe "gtk_radio_action_new"
  gtk_radio_action_new :: ((Ptr CChar) -> ((Ptr CChar) -> ((Ptr CChar) -> ((Ptr CChar) -> (CInt -> (IO (Ptr RadioAction)))))))
foreign import ccall unsafe "gtk_radio_action_get_group"
  gtk_radio_action_get_group :: ((Ptr RadioAction) -> (IO (Ptr ())))
foreign import ccall safe "gtk_radio_action_set_group"
  gtk_radio_action_set_group :: ((Ptr RadioAction) -> ((Ptr ()) -> (IO ())))
foreign import ccall safe "gtk_radio_action_get_current_value"
  gtk_radio_action_get_current_value :: ((Ptr RadioAction) -> (IO CInt))