data TextRequest a = ReplaceText Int Int [a] | HighlightText [Int] | PickText Int replaceAll :: [a] -> TextRequest a replaceAllFrom :: Int -> [a] -> TextRequest a deleteText :: Int -> Int -> TextRequest a insertText :: Int -> [a] -> TextRequest a appendText :: [a] -> TextRequest a changeText :: Int -> [a] -> TextRequest a replaceText :: Int -> Int -> [a] -> TextRequest a highlightText :: [Int] -> TextRequest a pickText :: Int -> TextRequest a doTextRequest :: [a] -> TextRequest a -> [a]
TextRequest is the type of messages accepted by textF,
pickListF et al. These fudgets display lines of strings (called
text), which can be changed by TextRequest messages.
replaceAll text replaces all the text with a new text. Each
element in the list text corresponds to one displayed line.
replaceAllFrom from text replaces all lines from from with
text. The first line is numbered 0.
deleteText from count deletes count lines starting at
from.
insertText at text inserts text before line at.
appendText text appends text after the last line of the
old text.
changeText at text replaces the same number of lines at line
at as there are lines in text with text. If
at is so close to the end that there isn't enough lines to
replace, the rest of text is appended.
replaceText from to text replaces the lines between and
including from and to with text.
highlightText lines will highlight all lines included in
lines, and dehighlight the rest.
pickText at is used to simulate that the user has clicked on
line at.
doTextRequest text request returns the result of performing
request on text.
TextRequest should be an abstract type.