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
32 Ncurses::Form.form_driver @form, Ncurses::Form::REQ_NEXT_CHAR if @history[@i] =~ / $/ # fucking RETARDED!!!!
43 if c == 10 # Ncurses::KEY_ENTER
44 Ncurses::Form.form_driver @form, Ncurses::Form::REQ_VALIDATION
45 @value = @history[@i] = @field.field_buffer(0).gsub(/^\s+|\s+$/, "").gsub(/\s+/, " ")
47 elsif c == Ncurses::KEY_CANCEL
49 @i = @history.empty? ? nil : (@i - 1) % @history.size
56 when Ncurses::KEY_LEFT
57 Ncurses::Form::REQ_PREV_CHAR
58 when Ncurses::KEY_RIGHT
59 Ncurses::Form::REQ_NEXT_CHAR
60 when Ncurses::KEY_BACKSPACE
61 Ncurses::Form::REQ_DEL_PREV
63 Ncurses::Form::REQ_BEG_FIELD
65 Ncurses::Form::REQ_END_FIELD
67 @history[@i] = @field.field_buffer(0)
68 @i = (@i - 1) % @history.size
69 @field.set_field_buffer 0, @history[@i]
70 when Ncurses::KEY_DOWN
71 @history[@i] = @field.field_buffer(0)
72 @i = (@i + 1) % @history.size
73 @field.set_field_buffer 0, @history[@i]
78 Ncurses::Form.form_driver @form, d if d