packages feed

keera-posture-0.2.2: src/Controller/Conditions/Precalibration.hs

-- | Controls the behaviour of the precalibration step in the calibration
-- assistant
module Controller.Conditions.Precalibration where

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

import CombinedEnvironment
import Controller.Conditions.Calibration
import Paths
import I18N.Strings

-- | Detects when the window is closed or its button is depressed
installHandlers :: CEnv -> IO()
installHandlers cenv = void $ do
  let ui = mainWindowBuilder $ view cenv

  -- Precalibration widgets
  preWin <- precalibrationWindow ui
  btn    <- precalibrationOkBtn ui

  -- Calibration widgets
  calWin <- calibrationWindow ui

  -- Signal that triggers changes
  let precalibrationNext = lMerge (windowCloseReactive preWin)
                                  (buttonActivateField btn)

  -- Hide the precalibration window
  precalibrationNext =:> constW False (widgetVisibleReactive preWin)

  -- Show the calibration window
  precalibrationNext =:> constW True (widgetVisibleReactive calWin)

  btnCls <- calibrationCloseBtn ui
  btnCal <- calibrationRecalibrateBtn ui
  let btnClsSensitive = widgetSensitiveReactive btnCls
      btnCalSensitive = widgetSensitiveReactive btnCal

  lblT <- calibrationTitleLbl ui
  lblE <- calibrationExplanationLbl ui

  calImg <- calibrationImage ui
  fn     <- getDataFileName "calibration-preview.png"

  precalibrationNext =:>
      (   (constW False        (btnClsSensitive &.& btnCalSensitive))
      &.& (constW title1       (labelTextReactive lblT))
      &.& (constW explanation1 (labelTextReactive lblE))
      &.& (constW fn           (imageFileReactive calImg))
      &.& (wrapDo_             (calibrate cenv))
      )

-- import Graphics.UI.Gtk
---- | Hides the dialog when necessary, and shows the next step
--condition :: CEnv -> IO()
--condition cenv = onViewAsync $ do
--  let ui = mainWindowBuilder $ view cenv
--
--  -- -- Hide precalibration window
--  -- preWin <- precalibrationWindow ui
--  -- widgetHide preWin
--
--  -- -- Show calibration window
--  -- calWin <- calibrationWindow ui
--  -- widgetShowAll calWin
--
--  -- -- Disable buttons
--  -- btn1 <- calibrationCloseBtn ui
--  -- btn2 <- calibrationRecalibrateBtn ui
--
--  -- widgetSetSensitive btn1 False
--  -- widgetSetSensitive btn2 False
--
--  -- Readjust title, explanation and image
--  lblT <- calibrationTitleLbl ui
--  reactiveValueWrite (labelTextReactive lblT) title1
--
--  lblE <- calibrationExplanationLbl ui
--  reactiveValueWrite (labelTextReactive lblE) title1
--
--  calImg <- calibrationImage ui
--  fn     <- getDataFileName "calibration-preview.png"
--  reactiveValueWrite (imageFileReactive calImg) fn
--
--  -- Run calibration
--  calibrate cenv
--