packages feed

keera-posture-0.2.1: src/Controller/Conditions/Calibrate.hs

-- | Launches the precalibration assistant when requested
module Controller.Conditions.Calibrate where

import Control.Monad
import Data.ReactiveValue
import Graphics.UI.Gtk
import Graphics.UI.Gtk.Reactive

import CombinedEnvironment

-- | Attaches the condition to button clicks and menu item activations
installHandlers :: CEnv -> IO()
installHandlers cenv = void $ do
 let ui = mainWindowBuilder $ view cenv

 let precalibrateRV = wrapDo_ (precalibrate cenv)
 -- Full RV-based implementation.
 -- precalibrationWindowVisibleRV <- 
 --    windowVisibilityPassive <$> 
 --      precalibrationWindow (mainWindowBuilder $ view cenv)
 -- precalibrateRV = (\() -> True) `liftW` precalibrationWindowVisibleRV

 menu <- mainMenuCalibrateItem ui
 menuItemActivateField menu =:> precalibrateRV

 btn  <- preferencesNotebookCalibrateBtn ui
 buttonActivateField btn =:> precalibrateRV
 -- btn `on` buttonActivated   $ precalibrate cenv

-- | Shows the precalibration window
precalibrate :: CEnv -> IO()
precalibrate cenv = onViewAsync $
 widgetShowAll =<< precalibrationWindow (mainWindowBuilder $ view cenv)