packages feed

keera-hails-reactive-gtk-0.6.0: src/Graphics/UI/Gtk/Reactive/SpinButton.hs

-- | Publishes the main elements of a toggle button
--
-- Copyright   : (C) Keera Studios Ltd, 2013
-- License     : BSD3
-- Maintainer  : support@keera.co.uk
module Graphics.UI.Gtk.Reactive.SpinButton where

import Control.GFunctor
import Data.ReactiveValue
import Graphics.UI.Gtk
import Graphics.UI.Gtk.Reactive.Property

spinButtonValueIntReactive :: SpinButton -> ReactiveFieldReadWrite IO Int
spinButtonValueIntReactive e =
  double_int <$$> reactivePropertyH e onValueSpinned spinButtonValue
 where double_int = bijection (round, fromIntegral)

spinButtonAdjustmentReactive :: SpinButton -> ReactiveFieldReadWrite IO Adjustment
spinButtonAdjustmentReactive = (`passiveProperty` spinButtonAdjustment)

spinButtonValueIntEditReactive :: SpinButton -> ReactiveFieldReadWrite IO Int
spinButtonValueIntEditReactive e =
  double_int <$$> reactivePropertyH e handler spinButtonValue
 where double_int = bijection (round, fromIntegral)
       handler = \s i -> do s `onValueSpinned` i
                            s `onEditableChanged` i

-- import Control.Monad
-- spinButtonActiveReactive :: SpinButton -> ReactiveFieldReadWrite IO Int
-- spinButtonActiveReactive e = ReactiveFieldReadWrite setter getter notifier
--  where getter   = spinButtonGetValueAsInt e
--        setter   = spinButtonSetValue e . fromIntegral
--        notifier = void . (onValueSpinned e)