module Hoodle.ModelAction.Adjustment where
import qualified Data.Foldable as F (mapM_)
import qualified Graphics.UI.Gtk as Gtk
import Data.Hoodle.BBox (BBox(..))
import Data.Hoodle.Simple (Dimension(..))
import Hoodle.Type.PageArrangement
import Hoodle.View.Coordinate
adjustScrollbarWithGeometry :: CanvasGeometry
-> ((Gtk.Adjustment,Maybe (Gtk.ConnectId Gtk.Adjustment))
,(Gtk.Adjustment,Maybe (Gtk.ConnectId Gtk.Adjustment)))
-> IO ()
adjustScrollbarWithGeometry geometry ((hadj,mconnidh),(vadj,mconnidv)) = do
let DesktopDimension (Dim w h) = desktopDim geometry
ViewPortBBox (BBox (x0,y0) (x1,y1)) = canvasViewPort geometry
xsize = x1x0
ysize = y1y0
F.mapM_ Gtk.signalBlock mconnidh
F.mapM_ Gtk.signalBlock mconnidv
Gtk.adjustmentSetUpper hadj w
Gtk.adjustmentSetUpper vadj h
Gtk.adjustmentSetValue hadj x0
Gtk.adjustmentSetValue vadj y0
Gtk.adjustmentSetPageSize hadj xsize
Gtk.adjustmentSetPageSize vadj ysize
Gtk.adjustmentSetPageIncrement hadj (xsize*0.9)
Gtk.adjustmentSetPageIncrement vadj (ysize*0.9)
F.mapM_ Gtk.signalUnblock mconnidh
F.mapM_ Gtk.signalUnblock mconnidv
setAdjustments :: ((Gtk.Adjustment,Maybe (Gtk.ConnectId Gtk.Adjustment))
,(Gtk.Adjustment,Maybe (Gtk.ConnectId Gtk.Adjustment)))
-> (Double,Double)
-> (Double,Double)
-> (Double,Double)
-> (Double,Double)
-> IO ()
setAdjustments ((hadj,mconnidh),(vadj,mconnidv))
(upperx,uppery) (lowerx,lowery)
(valuex,valuey) (pagex,pagey) = do
F.mapM_ Gtk.signalBlock mconnidh
F.mapM_ Gtk.signalBlock mconnidv
Gtk.adjustmentSetUpper hadj upperx
Gtk.adjustmentSetUpper vadj uppery
Gtk.adjustmentSetLower hadj lowerx
Gtk.adjustmentSetLower vadj lowery
Gtk.adjustmentSetValue hadj valuex
Gtk.adjustmentSetValue vadj valuey
Gtk.adjustmentSetPageSize hadj pagex
Gtk.adjustmentSetPageSize vadj pagey
F.mapM_ Gtk.signalUnblock mconnidh
F.mapM_ Gtk.signalUnblock mconnidv