{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

module GI.Gtk.Objects.CellRendererSpinner
    ( 

-- * Exported types
    CellRendererSpinner(..)                 ,
    CellRendererSpinnerK                    ,
    toCellRendererSpinner                   ,
    noCellRendererSpinner                   ,


 -- * Methods
-- ** cellRendererSpinnerNew
    cellRendererSpinnerNew                  ,




 -- * Properties
-- ** Active
    CellRendererSpinnerActivePropertyInfo   ,
    constructCellRendererSpinnerActive      ,
    getCellRendererSpinnerActive            ,
    setCellRendererSpinnerActive            ,


-- ** Pulse
    CellRendererSpinnerPulsePropertyInfo    ,
    constructCellRendererSpinnerPulse       ,
    getCellRendererSpinnerPulse             ,
    setCellRendererSpinnerPulse             ,


-- ** Size
    CellRendererSpinnerSizePropertyInfo     ,
    constructCellRendererSpinnerSize        ,
    getCellRendererSpinnerSize              ,
    setCellRendererSpinnerSize              ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gtk.Types
import GI.Gtk.Callbacks
import qualified GI.GObject as GObject

newtype CellRendererSpinner = CellRendererSpinner (ForeignPtr CellRendererSpinner)
foreign import ccall "gtk_cell_renderer_spinner_get_type"
    c_gtk_cell_renderer_spinner_get_type :: IO GType

type instance ParentTypes CellRendererSpinner = CellRendererSpinnerParentTypes
type CellRendererSpinnerParentTypes = '[CellRenderer, GObject.Object]

instance GObject CellRendererSpinner where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gtk_cell_renderer_spinner_get_type
    

class GObject o => CellRendererSpinnerK o
instance (GObject o, IsDescendantOf CellRendererSpinner o) => CellRendererSpinnerK o

toCellRendererSpinner :: CellRendererSpinnerK o => o -> IO CellRendererSpinner
toCellRendererSpinner = unsafeCastTo CellRendererSpinner

noCellRendererSpinner :: Maybe CellRendererSpinner
noCellRendererSpinner = Nothing

-- VVV Prop "active"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getCellRendererSpinnerActive :: (MonadIO m, CellRendererSpinnerK o) => o -> m Bool
getCellRendererSpinnerActive obj = liftIO $ getObjectPropertyBool obj "active"

setCellRendererSpinnerActive :: (MonadIO m, CellRendererSpinnerK o) => o -> Bool -> m ()
setCellRendererSpinnerActive obj val = liftIO $ setObjectPropertyBool obj "active" val

constructCellRendererSpinnerActive :: Bool -> IO ([Char], GValue)
constructCellRendererSpinnerActive val = constructObjectPropertyBool "active" val

data CellRendererSpinnerActivePropertyInfo
instance AttrInfo CellRendererSpinnerActivePropertyInfo where
    type AttrAllowedOps CellRendererSpinnerActivePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint CellRendererSpinnerActivePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint CellRendererSpinnerActivePropertyInfo = CellRendererSpinnerK
    type AttrGetType CellRendererSpinnerActivePropertyInfo = Bool
    type AttrLabel CellRendererSpinnerActivePropertyInfo = "CellRendererSpinner::active"
    attrGet _ = getCellRendererSpinnerActive
    attrSet _ = setCellRendererSpinnerActive
    attrConstruct _ = constructCellRendererSpinnerActive

-- VVV Prop "pulse"
   -- Type: TBasicType TUInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getCellRendererSpinnerPulse :: (MonadIO m, CellRendererSpinnerK o) => o -> m Word32
getCellRendererSpinnerPulse obj = liftIO $ getObjectPropertyCUInt obj "pulse"

setCellRendererSpinnerPulse :: (MonadIO m, CellRendererSpinnerK o) => o -> Word32 -> m ()
setCellRendererSpinnerPulse obj val = liftIO $ setObjectPropertyCUInt obj "pulse" val

constructCellRendererSpinnerPulse :: Word32 -> IO ([Char], GValue)
constructCellRendererSpinnerPulse val = constructObjectPropertyCUInt "pulse" val

data CellRendererSpinnerPulsePropertyInfo
instance AttrInfo CellRendererSpinnerPulsePropertyInfo where
    type AttrAllowedOps CellRendererSpinnerPulsePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint CellRendererSpinnerPulsePropertyInfo = (~) Word32
    type AttrBaseTypeConstraint CellRendererSpinnerPulsePropertyInfo = CellRendererSpinnerK
    type AttrGetType CellRendererSpinnerPulsePropertyInfo = Word32
    type AttrLabel CellRendererSpinnerPulsePropertyInfo = "CellRendererSpinner::pulse"
    attrGet _ = getCellRendererSpinnerPulse
    attrSet _ = setCellRendererSpinnerPulse
    attrConstruct _ = constructCellRendererSpinnerPulse

-- VVV Prop "size"
   -- Type: TInterface "Gtk" "IconSize"
   -- Flags: [PropertyReadable,PropertyWritable]

getCellRendererSpinnerSize :: (MonadIO m, CellRendererSpinnerK o) => o -> m IconSize
getCellRendererSpinnerSize obj = liftIO $ getObjectPropertyEnum obj "size"

setCellRendererSpinnerSize :: (MonadIO m, CellRendererSpinnerK o) => o -> IconSize -> m ()
setCellRendererSpinnerSize obj val = liftIO $ setObjectPropertyEnum obj "size" val

constructCellRendererSpinnerSize :: IconSize -> IO ([Char], GValue)
constructCellRendererSpinnerSize val = constructObjectPropertyEnum "size" val

data CellRendererSpinnerSizePropertyInfo
instance AttrInfo CellRendererSpinnerSizePropertyInfo where
    type AttrAllowedOps CellRendererSpinnerSizePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint CellRendererSpinnerSizePropertyInfo = (~) IconSize
    type AttrBaseTypeConstraint CellRendererSpinnerSizePropertyInfo = CellRendererSpinnerK
    type AttrGetType CellRendererSpinnerSizePropertyInfo = IconSize
    type AttrLabel CellRendererSpinnerSizePropertyInfo = "CellRendererSpinner::size"
    attrGet _ = getCellRendererSpinnerSize
    attrSet _ = setCellRendererSpinnerSize
    attrConstruct _ = constructCellRendererSpinnerSize

type instance AttributeList CellRendererSpinner = CellRendererSpinnerAttributeList
type CellRendererSpinnerAttributeList = ('[ '("active", CellRendererSpinnerActivePropertyInfo), '("cell-background", CellRendererCellBackgroundPropertyInfo), '("cell-background-gdk", CellRendererCellBackgroundGdkPropertyInfo), '("cell-background-rgba", CellRendererCellBackgroundRgbaPropertyInfo), '("cell-background-set", CellRendererCellBackgroundSetPropertyInfo), '("editing", CellRendererEditingPropertyInfo), '("height", CellRendererHeightPropertyInfo), '("is-expanded", CellRendererIsExpandedPropertyInfo), '("is-expander", CellRendererIsExpanderPropertyInfo), '("mode", CellRendererModePropertyInfo), '("pulse", CellRendererSpinnerPulsePropertyInfo), '("sensitive", CellRendererSensitivePropertyInfo), '("size", CellRendererSpinnerSizePropertyInfo), '("visible", CellRendererVisiblePropertyInfo), '("width", CellRendererWidthPropertyInfo), '("xalign", CellRendererXalignPropertyInfo), '("xpad", CellRendererXpadPropertyInfo), '("yalign", CellRendererYalignPropertyInfo), '("ypad", CellRendererYpadPropertyInfo)] :: [(Symbol, *)])

type instance SignalList CellRendererSpinner = CellRendererSpinnerSignalList
type CellRendererSpinnerSignalList = ('[ '("editing-canceled", CellRendererEditingCanceledSignalInfo), '("editing-started", CellRendererEditingStartedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method CellRendererSpinner::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gtk" "CellRendererSpinner"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_cell_renderer_spinner_new" gtk_cell_renderer_spinner_new :: 
    IO (Ptr CellRendererSpinner)


cellRendererSpinnerNew ::
    (MonadIO m) =>
    m CellRendererSpinner
cellRendererSpinnerNew  = liftIO $ do
    result <- gtk_cell_renderer_spinner_new
    checkUnexpectedReturnNULL "gtk_cell_renderer_spinner_new" result
    result' <- (newObject CellRendererSpinner) result
    return result'