----------------------------------------------------------------------------- -- | -- Module : Hoodle.Type.Widget -- Copyright : (c) 2013 Ian-Woo Kim -- -- License : BSD3 -- Maintainer : Ian-Woo Kim -- Stability : experimental -- Portability : GHC -- -- Types for Widgets -- ----------------------------------------------------------------------------- module Hoodle.Type.Widget where import Control.Lens (Simple,Lens,lens) -- import Hoodle.Type.PageArrangement -- | data CanvasWidgets = CanvasWidgets { _testWidgetPosition :: CanvasCoordinate , _widgetConfig :: WidgetConfig } -- | testWidgetPosition :: Simple Lens CanvasWidgets CanvasCoordinate testWidgetPosition = lens _testWidgetPosition (\f a -> f { _testWidgetPosition = a} ) -- | default hoodle widgets defaultCanvasWidgets :: CanvasWidgets defaultCanvasWidgets = CanvasWidgets { _testWidgetPosition = CvsCoord (100,100) , _widgetConfig = defaultWidgetConfig } data WidgetConfig = WidgetConfig { _doesUsePanZoom :: Bool } -- | flag for pan zoom widget doesUsePanZoom :: Simple Lens WidgetConfig Bool doesUsePanZoom = lens _doesUsePanZoom (\f a -> f {_doesUsePanZoom = a}) -- | default widget configuration defaultWidgetConfig :: WidgetConfig defaultWidgetConfig = WidgetConfig { _doesUsePanZoom = True } -- | widget config lens widgetConfig :: Simple Lens CanvasWidgets WidgetConfig widgetConfig = lens _widgetConfig (\f a -> f { _widgetConfig =a } )