Class: Landescape::Evaluator::Curses
- Inherits:
-
Base
- Object
- Base
- Landescape::Evaluator::Curses
show all
- Defined in:
- lib/landescape/evaluator/curses.rb
Constant Summary
collapse
- GRAPHICS_MODES =
{
1 => ::Curses::A_BOLD,
4 => ::Curses::A_UNDERLINE,
5 => ::Curses::A_BLINK,
7 => ::Curses::A_REVERSE
}
Instance Attribute Summary collapse
Attributes inherited from Base
#statements
Instance Method Summary
collapse
Methods inherited from Base
#not_supported, #start, start, #stop, #unknown
Constructor Details
#initialize(statements, window, options = {}) ⇒ Curses
Returns a new instance of Curses.
16
17
18
19
20
21
|
# File 'lib/landescape/evaluator/curses.rb', line 16
def initialize(statements, window, options = {})
super
@saved_cursor = nil
@scroll_region = [0, window.maxy]
end
|
Instance Attribute Details
#window ⇒ Object
Returns the value of attribute window.
14
15
16
|
# File 'lib/landescape/evaluator/curses.rb', line 14
def window
@window
end
|
Instance Method Details
#carriage_return ⇒ Object
69
70
71
|
# File 'lib/landescape/evaluator/curses.rb', line 69
def carriage_return
cursor_address window.cury, 0
end
|
43
44
45
46
47
|
# File 'lib/landescape/evaluator/curses.rb', line 43
def change_scroll_region(top, bottom)
@scroll_region = [top, bottom]
window.setscrreg *@scroll_region
end
|
#clear_eol ⇒ Object
120
121
122
123
124
|
# File 'lib/landescape/evaluator/curses.rb', line 120
def clear_eol
window.clrtoeol
window.refresh
end
|
#clear_screen ⇒ Object
113
114
115
116
117
118
|
# File 'lib/landescape/evaluator/curses.rb', line 113
def clear_screen
cursor_address 0, 0
window.clear
window.refresh
end
|
#cursor_address(line, column) ⇒ Object
57
58
59
60
61
|
# File 'lib/landescape/evaluator/curses.rb', line 57
def cursor_address(line, column)
scroll_forward if line > window.cury && window.maxy.pred <= window.cury
window.setpos line, column
end
|
#cursor_down(step) ⇒ Object
77
78
79
|
# File 'lib/landescape/evaluator/curses.rb', line 77
def cursor_down(step)
cursor_address (window.cury + step), window.curx
end
|
#cursor_invisible ⇒ Object
101
102
103
|
# File 'lib/landescape/evaluator/curses.rb', line 101
def cursor_invisible
window.curs_set 0
end
|
#cursor_left(step) ⇒ Object
85
86
87
|
# File 'lib/landescape/evaluator/curses.rb', line 85
def cursor_left(step)
cursor_address window.cury, (window.curx - step)
end
|
#cursor_right(step) ⇒ Object
81
82
83
|
# File 'lib/landescape/evaluator/curses.rb', line 81
def cursor_right(step)
cursor_address window.cury, (window.curx + step)
end
|
#cursor_up(step) ⇒ Object
73
74
75
|
# File 'lib/landescape/evaluator/curses.rb', line 73
def cursor_up(step)
cursor_address (window.cury - step), window.curx
end
|
#cursor_visible ⇒ Object
97
98
99
|
# File 'lib/landescape/evaluator/curses.rb', line 97
def cursor_visible
window.curs_set 2
end
|
#exit_attribute_mode ⇒ Object
39
40
41
|
# File 'lib/landescape/evaluator/curses.rb', line 39
def exit_attribute_mode
window.attroff GRAPHICS_MODES.values.inject(:|)
end
|
#keypad_local ⇒ Object
109
110
111
|
# File 'lib/landescape/evaluator/curses.rb', line 109
def keypad_local
window.keypad false
end
|
#keypad_xmit ⇒ Object
105
106
107
|
# File 'lib/landescape/evaluator/curses.rb', line 105
def keypad_xmit
window.keypad true
end
|
#newline ⇒ Object
63
64
65
66
67
|
# File 'lib/landescape/evaluator/curses.rb', line 63
def newline
scroll_forward if window.cury == @scroll_region.last
cursor_address (window.cury.succ), 0
end
|
#print(str) ⇒ Object
23
24
25
26
27
|
# File 'lib/landescape/evaluator/curses.rb', line 23
def print(str)
window.addstr str
window.refresh
end
|
#restore_cursor ⇒ Object
93
94
95
|
# File 'lib/landescape/evaluator/curses.rb', line 93
def restore_cursor
cursor_address *@saved_cursor
end
|
#save_cursor ⇒ Object
89
90
91
|
# File 'lib/landescape/evaluator/curses.rb', line 89
def save_cursor
@saved_cursor = [window.cury, window.curx]
end
|
53
54
55
|
# File 'lib/landescape/evaluator/curses.rb', line 53
def scroll_forward
window.scrl 1
end
|
49
50
51
|
# File 'lib/landescape/evaluator/curses.rb', line 49
def scroll_reverse
window.scrl -1
end
|
#set_attributes(*modes) ⇒ Object
29
30
31
32
33
34
35
36
37
|
# File 'lib/landescape/evaluator/curses.rb', line 29
def set_attributes(*modes)
return exit_attribute_mode if modes.empty?
modes.each do |mode|
next unless attr = GRAPHICS_MODES[mode]
window.attron attr
end
end
|