Refactor, try to limit dependencies
This commit is contained in:
@@ -1,20 +1,23 @@
|
||||
{-# OPTIONS -fno-warn-missing-signatures #-}
|
||||
module Dodge.Menu.OptionType where
|
||||
import Dodge.Data
|
||||
import Dodge.Menu.PushPop
|
||||
|
||||
import Control.Lens
|
||||
import Dodge.Data.Universe
|
||||
import Dodge.Menu.PushPop
|
||||
|
||||
makeBoolOption lns t = Toggle
|
||||
(return . Just . (uvConfig . lns #%~ not))
|
||||
(\u -> Right (t , show (u ^# uvConfig . lns)))
|
||||
makeBoolOption lns t =
|
||||
Toggle
|
||||
(return . Just . (uvConfig . lns #%~ not))
|
||||
(\u -> Right (t, show (u ^# uvConfig . lns)))
|
||||
|
||||
makeEnumOption lns str sideeff = Toggle
|
||||
(\u -> Just <$> sideeff (u & uvConfig . lns #%~ cycleEnum) )
|
||||
(\u -> Right (str , show (u ^# uvConfig . lns)) )
|
||||
makeEnumOption lns str sideeff =
|
||||
Toggle
|
||||
(\u -> Just <$> sideeff (u & uvConfig . lns #%~ cycleEnum))
|
||||
(\u -> Right (str, show (u ^# uvConfig . lns)))
|
||||
|
||||
makeSubmenuOption submenu t = Toggle (pushScreen submenu) (const t)
|
||||
|
||||
cycleEnum :: (Eq a, Enum a,Bounded a) => a -> a
|
||||
cycleEnum x
|
||||
cycleEnum :: (Eq a, Enum a, Bounded a) => a -> a
|
||||
cycleEnum x
|
||||
| x == maxBound = minBound
|
||||
| otherwise = succ x
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
module Dodge.Menu.PushPop where
|
||||
import Dodge.Data
|
||||
|
||||
import Dodge.Data.Universe
|
||||
import LensHelp
|
||||
|
||||
popScreen' :: Universe -> Maybe Universe
|
||||
popScreen' = Just . (menuLayers %~ tail)
|
||||
|
||||
popScreen :: Universe -> IO (Maybe Universe)
|
||||
popScreen = return . popScreen'
|
||||
|
||||
|
||||
pushScreen' :: ScreenLayer -> Universe -> Maybe Universe
|
||||
pushScreen' ml = Just . (menuLayers .:~ ml)
|
||||
|
||||
pushScreen :: ScreenLayer -> Universe -> IO (Maybe Universe)
|
||||
pushScreen ml = return . pushScreen' ml
|
||||
|
||||
Reference in New Issue
Block a user