Start adding filters to selection lists
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
module Dodge.Render.List where
|
||||
|
||||
--import Data.Foldable
|
||||
import Regex
|
||||
import Data.Maybe
|
||||
import Dodge.Base.WinScale
|
||||
import Dodge.Base.Window
|
||||
@@ -25,7 +26,16 @@ drawSelectionList ldps cfig sl =
|
||||
<> drawSelectionCursor ldps cfig sl
|
||||
|
||||
makeSelectionListPictures :: SelectionList a -> [Picture]
|
||||
makeSelectionListPictures sl = concatMap _siPictures $ _slItems sl
|
||||
makeSelectionListPictures sl = regex ++ concatMap f theitems
|
||||
where
|
||||
theitems = case sl ^. slRegex of
|
||||
"" -> _slItems sl
|
||||
str -> filter (doregex str) (_slItems sl)
|
||||
doregex str = regexList str . _siPictures
|
||||
regex = case sl ^. slRegex of
|
||||
"" | not (sl ^. slRegexInput) -> []
|
||||
str -> [text $ "SEARCH: " ++ str]
|
||||
f si = map (color (_siColor si) . text) $ _siPictures si
|
||||
--case sl ^. slSizeRestriction of
|
||||
-- SelectionSizeRestriction {} -> concatMap (_siPictures . fst) $ _slShownItems sl
|
||||
-- _ -> concatMap _siPictures $ _slItems sl
|
||||
@@ -47,7 +57,16 @@ drawCursorAt ldps cfig mi lis = fromMaybe mempty $ do
|
||||
_ -> 1
|
||||
|
||||
drawSelectionCursor :: ListDisplayParams -> Configuration -> SelectionList a -> Picture
|
||||
drawSelectionCursor ldps cfig sl = drawCursorAt ldps cfig (sl ^. slSelPos) (sl ^. slItems)
|
||||
drawSelectionCursor ldps cfig sl = drawCursorAt ldps cfig (f $ sl ^. slSelPos) (g $ sl ^. slItems)
|
||||
where
|
||||
-- the following is quite hacky
|
||||
f = case sl ^. slRegex of
|
||||
"" | not (sl ^. slRegexInput) -> id
|
||||
_ -> fmap (+1)
|
||||
g (x:xs) = case sl ^. slRegex of
|
||||
"" | not (sl ^. slRegexInput) -> (x:xs)
|
||||
_ -> ((x & siHeight .~ 1) : x : xs)
|
||||
g _ = []
|
||||
|
||||
-- given a list of pictures that are each the size of a "text" call, displays them as
|
||||
-- a list on the screen
|
||||
|
||||
Reference in New Issue
Block a user