-- | Publishes the main elements of a scale as reactive fields module Graphics.UI.Gtk.Reactive.Scale where import Control.GFunctor import Data.ReactiveValue import GHC.Float import Graphics.UI.Gtk import Graphics.UI.Gtk.Reactive.Property scaleValueReactive :: RangeClass a => a -> ReactiveFieldReadWrite IO Float scaleValueReactive e = float_double <$$> reactiveProperty e valueChanged rangeValue where float_double = bijection (double2Float, float2Double) -- ReactiveFieldReadWrite setter getter notifier -- where getter = fmap double2Float $ get e rangeValue -- setter v = set e [ rangeValue := float2Double v ] -- notifier p = void (on e valueChanged p)