{- |
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.CellRendererSpin
    ( 

-- * Exported types
    CellRendererSpin(..)                    ,
    CellRendererSpinK                       ,
    toCellRendererSpin                      ,
    noCellRendererSpin                      ,


 -- * Methods
-- ** cellRendererSpinNew
    cellRendererSpinNew                     ,




 -- * Properties
-- ** Adjustment
    CellRendererSpinAdjustmentPropertyInfo  ,
    constructCellRendererSpinAdjustment     ,
    getCellRendererSpinAdjustment           ,
    setCellRendererSpinAdjustment           ,


-- ** ClimbRate
    CellRendererSpinClimbRatePropertyInfo   ,
    constructCellRendererSpinClimbRate      ,
    getCellRendererSpinClimbRate            ,
    setCellRendererSpinClimbRate            ,


-- ** Digits
    CellRendererSpinDigitsPropertyInfo      ,
    constructCellRendererSpinDigits         ,
    getCellRendererSpinDigits               ,
    setCellRendererSpinDigits               ,




    ) 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 CellRendererSpin = CellRendererSpin (ForeignPtr CellRendererSpin)
foreign import ccall "gtk_cell_renderer_spin_get_type"
    c_gtk_cell_renderer_spin_get_type :: IO GType

type instance ParentTypes CellRendererSpin = CellRendererSpinParentTypes
type CellRendererSpinParentTypes = '[CellRendererText, CellRenderer, GObject.Object]

instance GObject CellRendererSpin where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gtk_cell_renderer_spin_get_type
    

class GObject o => CellRendererSpinK o
instance (GObject o, IsDescendantOf CellRendererSpin o) => CellRendererSpinK o

toCellRendererSpin :: CellRendererSpinK o => o -> IO CellRendererSpin
toCellRendererSpin = unsafeCastTo CellRendererSpin

noCellRendererSpin :: Maybe CellRendererSpin
noCellRendererSpin = Nothing

-- VVV Prop "adjustment"
   -- Type: TInterface "Gtk" "Adjustment"
   -- Flags: [PropertyReadable,PropertyWritable]

getCellRendererSpinAdjustment :: (MonadIO m, CellRendererSpinK o) => o -> m Adjustment
getCellRendererSpinAdjustment obj = liftIO $ getObjectPropertyObject obj "adjustment" Adjustment

setCellRendererSpinAdjustment :: (MonadIO m, CellRendererSpinK o, AdjustmentK a) => o -> a -> m ()
setCellRendererSpinAdjustment obj val = liftIO $ setObjectPropertyObject obj "adjustment" val

constructCellRendererSpinAdjustment :: (AdjustmentK a) => a -> IO ([Char], GValue)
constructCellRendererSpinAdjustment val = constructObjectPropertyObject "adjustment" val

data CellRendererSpinAdjustmentPropertyInfo
instance AttrInfo CellRendererSpinAdjustmentPropertyInfo where
    type AttrAllowedOps CellRendererSpinAdjustmentPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint CellRendererSpinAdjustmentPropertyInfo = AdjustmentK
    type AttrBaseTypeConstraint CellRendererSpinAdjustmentPropertyInfo = CellRendererSpinK
    type AttrGetType CellRendererSpinAdjustmentPropertyInfo = Adjustment
    type AttrLabel CellRendererSpinAdjustmentPropertyInfo = "CellRendererSpin::adjustment"
    attrGet _ = getCellRendererSpinAdjustment
    attrSet _ = setCellRendererSpinAdjustment
    attrConstruct _ = constructCellRendererSpinAdjustment

-- VVV Prop "climb-rate"
   -- Type: TBasicType TDouble
   -- Flags: [PropertyReadable,PropertyWritable]

getCellRendererSpinClimbRate :: (MonadIO m, CellRendererSpinK o) => o -> m Double
getCellRendererSpinClimbRate obj = liftIO $ getObjectPropertyDouble obj "climb-rate"

setCellRendererSpinClimbRate :: (MonadIO m, CellRendererSpinK o) => o -> Double -> m ()
setCellRendererSpinClimbRate obj val = liftIO $ setObjectPropertyDouble obj "climb-rate" val

constructCellRendererSpinClimbRate :: Double -> IO ([Char], GValue)
constructCellRendererSpinClimbRate val = constructObjectPropertyDouble "climb-rate" val

data CellRendererSpinClimbRatePropertyInfo
instance AttrInfo CellRendererSpinClimbRatePropertyInfo where
    type AttrAllowedOps CellRendererSpinClimbRatePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint CellRendererSpinClimbRatePropertyInfo = (~) Double
    type AttrBaseTypeConstraint CellRendererSpinClimbRatePropertyInfo = CellRendererSpinK
    type AttrGetType CellRendererSpinClimbRatePropertyInfo = Double
    type AttrLabel CellRendererSpinClimbRatePropertyInfo = "CellRendererSpin::climb-rate"
    attrGet _ = getCellRendererSpinClimbRate
    attrSet _ = setCellRendererSpinClimbRate
    attrConstruct _ = constructCellRendererSpinClimbRate

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

getCellRendererSpinDigits :: (MonadIO m, CellRendererSpinK o) => o -> m Word32
getCellRendererSpinDigits obj = liftIO $ getObjectPropertyCUInt obj "digits"

setCellRendererSpinDigits :: (MonadIO m, CellRendererSpinK o) => o -> Word32 -> m ()
setCellRendererSpinDigits obj val = liftIO $ setObjectPropertyCUInt obj "digits" val

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

data CellRendererSpinDigitsPropertyInfo
instance AttrInfo CellRendererSpinDigitsPropertyInfo where
    type AttrAllowedOps CellRendererSpinDigitsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint CellRendererSpinDigitsPropertyInfo = (~) Word32
    type AttrBaseTypeConstraint CellRendererSpinDigitsPropertyInfo = CellRendererSpinK
    type AttrGetType CellRendererSpinDigitsPropertyInfo = Word32
    type AttrLabel CellRendererSpinDigitsPropertyInfo = "CellRendererSpin::digits"
    attrGet _ = getCellRendererSpinDigits
    attrSet _ = setCellRendererSpinDigits
    attrConstruct _ = constructCellRendererSpinDigits

type instance AttributeList CellRendererSpin = CellRendererSpinAttributeList
type CellRendererSpinAttributeList = ('[ '("adjustment", CellRendererSpinAdjustmentPropertyInfo), '("align-set", CellRendererTextAlignSetPropertyInfo), '("alignment", CellRendererTextAlignmentPropertyInfo), '("attributes", CellRendererTextAttributesPropertyInfo), '("background", CellRendererTextBackgroundPropertyInfo), '("background-gdk", CellRendererTextBackgroundGdkPropertyInfo), '("background-rgba", CellRendererTextBackgroundRgbaPropertyInfo), '("background-set", CellRendererTextBackgroundSetPropertyInfo), '("cell-background", CellRendererCellBackgroundPropertyInfo), '("cell-background-gdk", CellRendererCellBackgroundGdkPropertyInfo), '("cell-background-rgba", CellRendererCellBackgroundRgbaPropertyInfo), '("cell-background-set", CellRendererCellBackgroundSetPropertyInfo), '("climb-rate", CellRendererSpinClimbRatePropertyInfo), '("digits", CellRendererSpinDigitsPropertyInfo), '("editable", CellRendererTextEditablePropertyInfo), '("editable-set", CellRendererTextEditableSetPropertyInfo), '("editing", CellRendererEditingPropertyInfo), '("ellipsize", CellRendererTextEllipsizePropertyInfo), '("ellipsize-set", CellRendererTextEllipsizeSetPropertyInfo), '("family", CellRendererTextFamilyPropertyInfo), '("family-set", CellRendererTextFamilySetPropertyInfo), '("font", CellRendererTextFontPropertyInfo), '("font-desc", CellRendererTextFontDescPropertyInfo), '("foreground", CellRendererTextForegroundPropertyInfo), '("foreground-gdk", CellRendererTextForegroundGdkPropertyInfo), '("foreground-rgba", CellRendererTextForegroundRgbaPropertyInfo), '("foreground-set", CellRendererTextForegroundSetPropertyInfo), '("height", CellRendererHeightPropertyInfo), '("is-expanded", CellRendererIsExpandedPropertyInfo), '("is-expander", CellRendererIsExpanderPropertyInfo), '("language", CellRendererTextLanguagePropertyInfo), '("language-set", CellRendererTextLanguageSetPropertyInfo), '("markup", CellRendererTextMarkupPropertyInfo), '("max-width-chars", CellRendererTextMaxWidthCharsPropertyInfo), '("mode", CellRendererModePropertyInfo), '("placeholder-text", CellRendererTextPlaceholderTextPropertyInfo), '("rise", CellRendererTextRisePropertyInfo), '("rise-set", CellRendererTextRiseSetPropertyInfo), '("scale", CellRendererTextScalePropertyInfo), '("scale-set", CellRendererTextScaleSetPropertyInfo), '("sensitive", CellRendererSensitivePropertyInfo), '("single-paragraph-mode", CellRendererTextSingleParagraphModePropertyInfo), '("size", CellRendererTextSizePropertyInfo), '("size-points", CellRendererTextSizePointsPropertyInfo), '("size-set", CellRendererTextSizeSetPropertyInfo), '("stretch", CellRendererTextStretchPropertyInfo), '("stretch-set", CellRendererTextStretchSetPropertyInfo), '("strikethrough", CellRendererTextStrikethroughPropertyInfo), '("strikethrough-set", CellRendererTextStrikethroughSetPropertyInfo), '("style", CellRendererTextStylePropertyInfo), '("style-set", CellRendererTextStyleSetPropertyInfo), '("text", CellRendererTextTextPropertyInfo), '("underline", CellRendererTextUnderlinePropertyInfo), '("underline-set", CellRendererTextUnderlineSetPropertyInfo), '("variant", CellRendererTextVariantPropertyInfo), '("variant-set", CellRendererTextVariantSetPropertyInfo), '("visible", CellRendererVisiblePropertyInfo), '("weight", CellRendererTextWeightPropertyInfo), '("weight-set", CellRendererTextWeightSetPropertyInfo), '("width", CellRendererWidthPropertyInfo), '("width-chars", CellRendererTextWidthCharsPropertyInfo), '("wrap-mode", CellRendererTextWrapModePropertyInfo), '("wrap-width", CellRendererTextWrapWidthPropertyInfo), '("xalign", CellRendererXalignPropertyInfo), '("xpad", CellRendererXpadPropertyInfo), '("yalign", CellRendererYalignPropertyInfo), '("ypad", CellRendererYpadPropertyInfo)] :: [(Symbol, *)])

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

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

foreign import ccall "gtk_cell_renderer_spin_new" gtk_cell_renderer_spin_new :: 
    IO (Ptr CellRendererSpin)


cellRendererSpinNew ::
    (MonadIO m) =>
    m CellRendererSpin
cellRendererSpinNew  = liftIO $ do
    result <- gtk_cell_renderer_spin_new
    checkUnexpectedReturnNULL "gtk_cell_renderer_spin_new" result
    result' <- (newObject CellRendererSpin) result
    return result'