summaryrefslogtreecommitdiff
blob: 9f1ce8f293c6036f838fb4491c21c3342e14b3ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
module Struct.UI exposing (..)

-- Elm -------------------------------------------------------------------------
import List
import Html

-- Local Module ----------------------------------------------------------------
import Struct.Event

--------------------------------------------------------------------------------
-- TYPES -----------------------------------------------------------------------
--------------------------------------------------------------------------------
type InputType =
   NoInput
   | FloatInput
   | IntegerInput
   | StringInput
   | CommandInput

type alias Type =
   {
      displayed_texts : (List (Html.Html Struct.Event.Type)),
      displayed_errors : (List (Html.Html Struct.Event.Type)),
      displayed_choices : (List (Int, (Html.Html Struct.Event.Type))),
      min : Int,
      max : Int,
      min_float : Float,
      max_float : Float,
      input : InputType
   }

--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
new : Type
new =
   {
      displayed_texts = [],
      displayed_errors = [],
      displayed_choices = [],
      min = -1,
      max = -1,
      min_float = -1.0,
      max_float = -1.0,
      input = NoInput
   }

display_text : (Html.Html Struct.Event.Type) -> Type -> Type
display_text html ui =
   {ui | displayed_texts = (List.append ui.displayed_texts [html])}

display_error : (Html.Html Struct.Event.Type) -> Type -> Type
display_error html ui =
   {ui | displayed_errors = (List.append ui.displayed_errors [html])}

display_string_error : String -> Type -> Type
display_string_error string ui =
   {ui |
      displayed_errors = (List.append ui.displayed_errors [(Html.text string)])
   }

display_choice : Int -> (Html.Html Struct.Event.Type) -> Type -> Type
display_choice ix html ui =
   {ui | displayed_choices = (List.append ui.displayed_choices [(ix, html)])}

prompt_string : Int -> Int -> Type -> Type
prompt_string min max ui = {ui | min = min, max = max, input = StringInput}

prompt_float : Float -> Float -> Type -> Type
prompt_float min max ui =
   {ui | min_float = min, max_float = max, input = FloatInput}

prompt_integer : Int -> Int -> Type -> Type
prompt_integer min max ui = {ui | min = min, max = max, input = IntegerInput}

prompt_command : Int -> Int -> Type -> Type
prompt_command min max ui = {ui | min = min, max = max, input = CommandInput}

clear_prompt : Type -> Type
clear_prompt ui = {ui | min = -1, max = -1, input = NoInput}

clear_displayed_texts : Type -> Type
clear_displayed_texts ui = {ui | displayed_texts = []}

clear_displayed_errors : Type -> Type
clear_displayed_errors ui = {ui | displayed_errors = []}

clear_displayed_choices : Type -> Type
clear_displayed_choices ui = {ui | displayed_choices = []}