8 def initialize window, y, x, width
9 @w, @x, @y = window, x, y
15 def activate question, default=nil
18 @field = Ncurses::Form.new_field 1, @width - question.length,
19 @y, @x + question.length, 0, 0
20 @form = Ncurses::Form.new_form [@field]
22 @history[@i = @history.size] = default || ""
23 Ncurses::Form.post_form @form
24 @field.set_field_buffer 0, @history[@i]
28 @w.attrset Colormap.color_for(:none)
29 @w.mvaddstr @y, 0, @question
31 Ncurses::Form.form_driver @form, Ncurses::Form::REQ_END_FIELD
42 if c == 10 # Ncurses::KEY_ENTER
43 Ncurses::Form.form_driver @form, Ncurses::Form::REQ_VALIDATION
44 @value = @history[@i] = @field.field_buffer(0).gsub(/^\s+|\s+$/, "").gsub(/\s+/, " ")
46 elsif c == Ncurses::KEY_CANCEL
48 @i = @history.empty? ? nil : (@i - 1) % @history.size
55 when Ncurses::KEY_LEFT
56 Ncurses::Form::REQ_PREV_CHAR
57 when Ncurses::KEY_RIGHT
58 Ncurses::Form::REQ_NEXT_CHAR
59 when Ncurses::KEY_BACKSPACE
60 Ncurses::Form::REQ_DEL_PREV
62 Ncurses::Form::REQ_BEG_FIELD
64 Ncurses::Form::REQ_END_FIELD
66 @history[@i] = @field.field_buffer(0)
67 @i = (@i - 1) % @history.size
68 @field.set_field_buffer 0, @history[@i]
69 when Ncurses::KEY_DOWN
70 @history[@i] = @field.field_buffer(0)
71 @i = (@i + 1) % @history.size
72 @field.set_field_buffer 0, @history[@i]
77 Ncurses::Form.form_driver @form, d