vedeu 0.4.9 → 0.4.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vedeu/api.rb +8 -0
- data/lib/vedeu/application.rb +2 -0
- data/lib/vedeu/bindings.rb +3 -0
- data/lib/vedeu/configuration/configuration.rb +1 -1
- data/lib/vedeu/cursor/cursor.rb +1 -1
- data/lib/vedeu/cursor/move.rb +1 -1
- data/lib/vedeu/cursor/refresh_cursor.rb +2 -0
- data/lib/vedeu/cursor/toggle.rb +1 -1
- data/lib/vedeu/debug.rb +36 -1
- data/lib/vedeu/distributed/client.rb +2 -0
- data/lib/vedeu/distributed/subprocess.rb +2 -0
- data/lib/vedeu/distributed/test_application.rb +2 -0
- data/lib/vedeu/distributed/uri.rb +2 -0
- data/lib/vedeu/events/event.rb +1 -1
- data/lib/vedeu/events/trigger.rb +2 -0
- data/lib/vedeu/geometry/all.rb +0 -1
- data/lib/vedeu/geometry/area.rb +22 -0
- data/lib/vedeu/geometry/centre.rb +2 -0
- data/lib/vedeu/geometry/content.rb +2 -0
- data/lib/vedeu/geometry/coordinate.rb +2 -0
- data/lib/vedeu/geometry/dimension.rb +2 -0
- data/lib/vedeu/geometry/geometry.rb +8 -3
- data/lib/vedeu/geometry/grid.rb +2 -0
- data/lib/vedeu/geometry/index_position.rb +21 -0
- data/lib/vedeu/geometry/limit.rb +2 -0
- data/lib/vedeu/geometry/position.rb +1 -1
- data/lib/vedeu/geometry/position_index.rb +2 -0
- data/lib/vedeu/geometry/position_validator.rb +2 -0
- data/lib/vedeu/input/input.rb +1 -1
- data/lib/vedeu/input/key.rb +1 -1
- data/lib/vedeu/input/keymap.rb +2 -0
- data/lib/vedeu/input/mapper.rb +8 -0
- data/lib/vedeu/launcher.rb +2 -0
- data/lib/vedeu/main_loop.rb +1 -3
- data/lib/vedeu/models/cell.rb +2 -0
- data/lib/vedeu/models/composition.rb +1 -1
- data/lib/vedeu/models/group.rb +1 -1
- data/lib/vedeu/models/interface.rb +35 -3
- data/lib/vedeu/models/line.rb +6 -1
- data/lib/vedeu/models/menu.rb +1 -1
- data/lib/vedeu/models/stream.rb +6 -17
- data/lib/vedeu/output/all.rb +3 -2
- data/lib/vedeu/output/background.rb +26 -0
- data/lib/vedeu/output/border.rb +105 -25
- data/lib/vedeu/output/clear.rb +17 -10
- data/lib/vedeu/output/colour.rb +1 -1
- data/lib/vedeu/output/compositor.rb +4 -1
- data/lib/vedeu/output/foreground.rb +26 -0
- data/lib/vedeu/output/html_char.rb +2 -0
- data/lib/vedeu/output/null_border.rb +49 -0
- data/lib/vedeu/output/output.rb +8 -44
- data/lib/vedeu/output/renderers/all.rb +3 -0
- data/lib/vedeu/output/{renderer.rb → renderers/file_renderer.rb} +14 -6
- data/lib/vedeu/output/{html_renderer.rb → renderers/html_renderer.rb} +3 -1
- data/lib/vedeu/output/renderers/terminal_renderer.rb +50 -0
- data/lib/vedeu/output/text.rb +1 -1
- data/lib/vedeu/output/translator.rb +21 -2
- data/lib/vedeu/output/viewport.rb +17 -50
- data/lib/vedeu/output/virtual_terminal.rb +2 -0
- data/lib/vedeu/output/wordwrap.rb +2 -0
- data/lib/vedeu/repositories/all.rb +82 -0
- data/lib/vedeu/repositories/collection.rb +16 -0
- data/lib/vedeu/repositories/repository.rb +2 -0
- data/lib/vedeu/support/log.rb +3 -0
- data/lib/vedeu/support/sentence.rb +2 -0
- data/lib/vedeu/support/template.rb +2 -0
- data/lib/vedeu/support/terminal.rb +6 -1
- data/lib/vedeu/support/trace.rb +2 -0
- data/lib/vedeu/support/visible.rb +6 -0
- data/test/lib/vedeu/dsl/components/border_test.rb +0 -270
- data/test/lib/vedeu/dsl/shared/text_test.rb +19 -0
- data/test/lib/vedeu/geometry/area_test.rb +32 -0
- data/test/lib/vedeu/geometry/index_position_test.rb +36 -0
- data/test/lib/vedeu/models/interface_test.rb +42 -1
- data/test/lib/vedeu/models/line_test.rb +15 -1
- data/test/lib/vedeu/models/stream_test.rb +15 -1
- data/test/lib/vedeu/output/background_test.rb +4 -2
- data/test/lib/vedeu/output/border_test.rb +229 -127
- data/test/lib/vedeu/output/clear_test.rb +14 -0
- data/test/lib/vedeu/output/foreground_test.rb +4 -2
- data/test/lib/vedeu/output/null_border_test.rb +53 -0
- data/test/lib/vedeu/output/output_test.rb +2 -0
- data/test/lib/vedeu/output/{renderer_test.rb → renderers/file_renderer_test.rb} +5 -5
- data/test/lib/vedeu/output/renderers/html_renderer_test.rb +71 -0
- data/test/lib/vedeu/output/renderers/terminal_renderer_test.rb +24 -0
- data/test/lib/vedeu/output/viewport_test.rb +100 -74
- data/vedeu.gemspec +1 -1
- metadata +15 -11
- data/lib/vedeu/geometry/bounding_area.rb +0 -136
- data/test/lib/vedeu/geometry/bounding_area_test.rb +0 -123
- data/test/lib/vedeu/output/html_renderer_test.rb +0 -42
data/lib/vedeu/input/mapper.rb
CHANGED
@@ -27,6 +27,8 @@ module Vedeu
|
|
27
27
|
new(key, name).valid?
|
28
28
|
end
|
29
29
|
|
30
|
+
# Returns a new instance of Vedeu::Mapper.
|
31
|
+
#
|
30
32
|
# @param key [NilClass|String|Symbol]
|
31
33
|
# @param name [NilClass|String]
|
32
34
|
# @param repository [NilClass|Repository]
|
@@ -37,6 +39,9 @@ module Vedeu
|
|
37
39
|
@repository = repository || Vedeu.keymaps
|
38
40
|
end
|
39
41
|
|
42
|
+
# Returns a boolean indicating that the key is registered to the current
|
43
|
+
# keymap or the global or system keymap.
|
44
|
+
#
|
40
45
|
# @return [Boolean]
|
41
46
|
def keypress
|
42
47
|
return false unless key
|
@@ -50,6 +55,9 @@ module Vedeu
|
|
50
55
|
false
|
51
56
|
end
|
52
57
|
|
58
|
+
# Returns a boolean indicating that the key is not registered to the current
|
59
|
+
# keymap, the global keymap or the system keymap.
|
60
|
+
#
|
53
61
|
# @return [Boolean]
|
54
62
|
def valid?
|
55
63
|
return false unless key
|
data/lib/vedeu/launcher.rb
CHANGED
data/lib/vedeu/main_loop.rb
CHANGED
@@ -22,8 +22,6 @@ module Vedeu
|
|
22
22
|
@loop = true
|
23
23
|
|
24
24
|
while(@loop) do
|
25
|
-
Vedeu.trigger(:tick)
|
26
|
-
|
27
25
|
yield
|
28
26
|
|
29
27
|
safe_exit_point!
|
@@ -51,7 +49,7 @@ module Vedeu
|
|
51
49
|
fail VedeuInterrupt
|
52
50
|
|
53
51
|
else
|
54
|
-
Vedeu.trigger(:tock)
|
52
|
+
Vedeu.trigger(:tock, Time.now.to_f)
|
55
53
|
|
56
54
|
end
|
57
55
|
end
|
data/lib/vedeu/models/cell.rb
CHANGED
@@ -28,6 +28,8 @@ module Vedeu
|
|
28
28
|
# @return [NilClass|Fixnum]
|
29
29
|
attr_reader :y
|
30
30
|
|
31
|
+
# Returns a new instance of Vedeu::Cell.
|
32
|
+
#
|
31
33
|
# @param attributes [Hash<Symbol => Array<Symbol|String>, Fixnum, String, Symbol]
|
32
34
|
# @option attributes background [NilClass|String]
|
33
35
|
# @option attributes foreground [NilClass|String]
|
data/lib/vedeu/models/group.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'vedeu/geometry/content'
|
2
2
|
require 'vedeu/models/all'
|
3
|
+
require 'vedeu/output/null_border'
|
3
4
|
require 'vedeu/output/presentation'
|
4
5
|
require 'vedeu/buffers/display_buffer'
|
5
6
|
require 'vedeu/buffers/buffer'
|
@@ -58,10 +59,18 @@ module Vedeu
|
|
58
59
|
:right,
|
59
60
|
:bottom,
|
60
61
|
:left,
|
62
|
+
:y,
|
63
|
+
:yn,
|
64
|
+
:x,
|
65
|
+
:xn,
|
61
66
|
:width,
|
62
|
-
:height
|
67
|
+
:height,
|
68
|
+
:top_left,
|
69
|
+
:top_right,
|
70
|
+
:bottom_left,
|
71
|
+
:bottom_right
|
63
72
|
|
64
|
-
# Return a new instance of Interface.
|
73
|
+
# Return a new instance of Vedeu::Interface.
|
65
74
|
#
|
66
75
|
# @param attributes [Hash]
|
67
76
|
# @option attributes colour [Vedeu::Colour]
|
@@ -117,11 +126,20 @@ module Vedeu
|
|
117
126
|
#
|
118
127
|
# @return [Vedeu::Border|NilClass]
|
119
128
|
def border
|
120
|
-
if border?
|
129
|
+
@border ||= if border?
|
121
130
|
Vedeu.borders.find(name)
|
131
|
+
|
132
|
+
else
|
133
|
+
Vedeu::NullBorder.new(self)
|
134
|
+
|
122
135
|
end
|
123
136
|
end
|
124
137
|
|
138
|
+
# @return [Array<Array<Vedeu::Char>>]
|
139
|
+
def clear
|
140
|
+
Vedeu::Clear.render(self)
|
141
|
+
end
|
142
|
+
|
125
143
|
# Fetch the cursor belonging to this interface (by name), if one does not
|
126
144
|
# exist, it will be created, stored and returned.
|
127
145
|
#
|
@@ -151,6 +169,15 @@ module Vedeu
|
|
151
169
|
alias_method :content?, :lines?
|
152
170
|
alias_method :value?, :lines?
|
153
171
|
|
172
|
+
# @return [Array<Array<Vedeu::Char>>]
|
173
|
+
def render
|
174
|
+
[
|
175
|
+
clear,
|
176
|
+
border.render,
|
177
|
+
viewport
|
178
|
+
]
|
179
|
+
end
|
180
|
+
|
154
181
|
# @return [Interface]
|
155
182
|
def store
|
156
183
|
super
|
@@ -161,6 +188,11 @@ module Vedeu
|
|
161
188
|
store_group
|
162
189
|
end
|
163
190
|
|
191
|
+
# @return [Array<Array<Vedeu::Char>>]
|
192
|
+
def viewport
|
193
|
+
Vedeu::Viewport.render(self)
|
194
|
+
end
|
195
|
+
|
164
196
|
private
|
165
197
|
|
166
198
|
# The default values for a new instance of this class.
|
data/lib/vedeu/models/line.rb
CHANGED
@@ -25,7 +25,7 @@ module Vedeu
|
|
25
25
|
|
26
26
|
alias_method :value, :streams
|
27
27
|
|
28
|
-
# Returns a new instance of Line.
|
28
|
+
# Returns a new instance of Vedeu::Line.
|
29
29
|
#
|
30
30
|
# @param attributes [Hash]
|
31
31
|
# @option attributes streams [Vedeu::Streams]
|
@@ -64,6 +64,11 @@ module Vedeu
|
|
64
64
|
streams.empty?
|
65
65
|
end
|
66
66
|
|
67
|
+
# @return [NilClass|String]
|
68
|
+
def name
|
69
|
+
parent.name if parent
|
70
|
+
end
|
71
|
+
|
67
72
|
# Returns the size of the content in characters without formatting.
|
68
73
|
#
|
69
74
|
# @return [Fixnum]
|
data/lib/vedeu/models/menu.rb
CHANGED
data/lib/vedeu/models/stream.rb
CHANGED
@@ -27,7 +27,7 @@ module Vedeu
|
|
27
27
|
alias_method :data, :value
|
28
28
|
alias_method :text, :value
|
29
29
|
|
30
|
-
# Returns a new instance of Stream.
|
30
|
+
# Returns a new instance of Vedeu::Stream.
|
31
31
|
#
|
32
32
|
# @param attributes [Hash]
|
33
33
|
# @option attributes value [String]
|
@@ -74,6 +74,11 @@ module Vedeu
|
|
74
74
|
value.empty?
|
75
75
|
end
|
76
76
|
|
77
|
+
# @return [NilClass|String]
|
78
|
+
def name
|
79
|
+
parent.name if parent
|
80
|
+
end
|
81
|
+
|
77
82
|
# Returns the size of the content in characters without formatting.
|
78
83
|
#
|
79
84
|
# @return [Fixnum]
|
@@ -81,22 +86,6 @@ module Vedeu
|
|
81
86
|
value.size
|
82
87
|
end
|
83
88
|
|
84
|
-
# @return [String]
|
85
|
-
def value
|
86
|
-
# Vedeu::Char.coerce(@value, parent, colour, style)
|
87
|
-
# @value ||= if @value.size > 1
|
88
|
-
# @value.chars.map do |char|
|
89
|
-
# Vedeu::Char.new(char, parent, colour, style)
|
90
|
-
# end
|
91
|
-
# elsif @value.size == 1
|
92
|
-
# Vedeu::Char.new(@value, parent, colour, style)
|
93
|
-
# else
|
94
|
-
# # ???
|
95
|
-
# end
|
96
|
-
|
97
|
-
@value
|
98
|
-
end
|
99
|
-
|
100
89
|
# Delegate to Vedeu::Line#width if available.
|
101
90
|
#
|
102
91
|
# @return [Fixnum]
|
data/lib/vedeu/output/all.rb
CHANGED
@@ -5,6 +5,7 @@ require 'vedeu/output/background'
|
|
5
5
|
require 'vedeu/output/foreground'
|
6
6
|
|
7
7
|
require 'vedeu/output/border'
|
8
|
+
require 'vedeu/output/null_border'
|
8
9
|
require 'vedeu/output/colour'
|
9
10
|
require 'vedeu/output/compositor'
|
10
11
|
|
@@ -15,10 +16,10 @@ require 'vedeu/output/style'
|
|
15
16
|
require 'vedeu/output/text'
|
16
17
|
require 'vedeu/output/virtual_buffer'
|
17
18
|
require 'vedeu/output/html_char'
|
18
|
-
require 'vedeu/output/html_renderer'
|
19
19
|
require 'vedeu/output/refresh'
|
20
20
|
|
21
|
-
require 'vedeu/output/
|
21
|
+
require 'vedeu/output/renderers/all'
|
22
|
+
|
22
23
|
require 'vedeu/output/output'
|
23
24
|
|
24
25
|
require 'vedeu/output/viewport'
|
@@ -7,6 +7,32 @@ module Vedeu
|
|
7
7
|
|
8
8
|
private
|
9
9
|
|
10
|
+
# Registers a HTML/CSS colour code and escape sequence to reduce processing.
|
11
|
+
#
|
12
|
+
# @param colour [String] A HTML/CSS colour code.
|
13
|
+
# @param escape_sequence [String] The HTML/CSS colour code as an escape
|
14
|
+
# sequence.
|
15
|
+
# @return [String]
|
16
|
+
def register(colour, escape_sequence)
|
17
|
+
Vedeu.background_colours.register(colour, escape_sequence)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Returns a boolean indicating the HTML/CSS colour code has been registered.
|
21
|
+
#
|
22
|
+
# @param colour [String]
|
23
|
+
# @return [Boolean]
|
24
|
+
def registered?(colour)
|
25
|
+
Vedeu.background_colours.registered?(colour)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Retrieves the escape sequence for the HTML/CSS colour code.
|
29
|
+
#
|
30
|
+
# @param colour [String]
|
31
|
+
# @return [String]
|
32
|
+
def retrieve(colour)
|
33
|
+
Vedeu.background_colours.retrieve(colour)
|
34
|
+
end
|
35
|
+
|
10
36
|
# @return [String]
|
11
37
|
def named_codes
|
12
38
|
Vedeu::Esc.background_codes[colour]
|
data/lib/vedeu/output/border.rb
CHANGED
@@ -80,7 +80,7 @@ module Vedeu
|
|
80
80
|
# @return [Style]
|
81
81
|
attr_reader :style
|
82
82
|
|
83
|
-
# Returns a new instance of Border.
|
83
|
+
# Returns a new instance of Vedeu::Border.
|
84
84
|
#
|
85
85
|
# @param attributes [Hash]
|
86
86
|
# @option attributes bottom_left [String] The bottom left border character.
|
@@ -123,6 +123,50 @@ module Vedeu
|
|
123
123
|
@style = @attributes[:style]
|
124
124
|
end
|
125
125
|
|
126
|
+
# @return [Fixnum]
|
127
|
+
def bx
|
128
|
+
if enabled? && left?
|
129
|
+
interface.x + 1
|
130
|
+
|
131
|
+
else
|
132
|
+
interface.x
|
133
|
+
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
# @return [Fixnum]
|
138
|
+
def bxn
|
139
|
+
if enabled? && right?
|
140
|
+
interface.xn - 1
|
141
|
+
|
142
|
+
else
|
143
|
+
interface.xn
|
144
|
+
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
# @return [Fixnum]
|
149
|
+
def by
|
150
|
+
if enabled? && top?
|
151
|
+
interface.y + 1
|
152
|
+
|
153
|
+
else
|
154
|
+
interface.y
|
155
|
+
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
# @return [Fixnum]
|
160
|
+
def byn
|
161
|
+
if enabled? && bottom?
|
162
|
+
interface.yn - 1
|
163
|
+
|
164
|
+
else
|
165
|
+
interface.yn
|
166
|
+
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
126
170
|
# Returns the width of the interface determined by whether a left, right,
|
127
171
|
# both or neither borders are shown.
|
128
172
|
#
|
@@ -173,6 +217,19 @@ module Vedeu
|
|
173
217
|
@colour = Vedeu::Colour.coerce(value)
|
174
218
|
end
|
175
219
|
|
220
|
+
# @return [Array<Array<Vedeu::Char>>]
|
221
|
+
def render
|
222
|
+
return [] unless enabled?
|
223
|
+
|
224
|
+
out = [top, bottom]
|
225
|
+
|
226
|
+
height.times do |y|
|
227
|
+
out << [left(y), right(y)]
|
228
|
+
end
|
229
|
+
|
230
|
+
out.flatten
|
231
|
+
end
|
232
|
+
|
176
233
|
# @return [Vedeu::Style]
|
177
234
|
def style
|
178
235
|
Vedeu::Style.coerce(@style)
|
@@ -185,15 +242,6 @@ module Vedeu
|
|
185
242
|
@style = Vedeu::Style.coerce(value)
|
186
243
|
end
|
187
244
|
|
188
|
-
# Returns a string representation of the border for the interface without
|
189
|
-
# content.
|
190
|
-
#
|
191
|
-
# @return [Boolean]
|
192
|
-
def to_s
|
193
|
-
render = Vedeu::Viewport.new(interface).render
|
194
|
-
render.map { |line| line.flatten.join }.join("\n")
|
195
|
-
end
|
196
|
-
|
197
245
|
# Renders the bottom border for the interface.
|
198
246
|
#
|
199
247
|
# @return [String]
|
@@ -203,8 +251,8 @@ module Vedeu
|
|
203
251
|
out = []
|
204
252
|
|
205
253
|
out << border(bottom_left, :bottom_left) if left?
|
206
|
-
width.times do
|
207
|
-
out << border(horizontal, :bottom_horizontal)
|
254
|
+
width.times do |ix|
|
255
|
+
out << border(horizontal, :bottom_horizontal, nil, ix)
|
208
256
|
end
|
209
257
|
out << border(bottom_right, :bottom_right) if right?
|
210
258
|
|
@@ -213,20 +261,22 @@ module Vedeu
|
|
213
261
|
|
214
262
|
# Renders the left border for the interface.
|
215
263
|
#
|
264
|
+
# @param iy [Fixnum]
|
216
265
|
# @return [String]
|
217
|
-
def left
|
266
|
+
def left(iy = 0)
|
218
267
|
return [] unless left?
|
219
268
|
|
220
|
-
border(vertical, :left_vertical)
|
269
|
+
border(vertical, :left_vertical, iy)
|
221
270
|
end
|
222
271
|
|
223
272
|
# Renders the right border for the interface.
|
224
273
|
#
|
274
|
+
# @param iy [Fixnum]
|
225
275
|
# @return [String]
|
226
|
-
def right
|
276
|
+
def right(iy = 0)
|
227
277
|
return [] unless right?
|
228
278
|
|
229
|
-
border(vertical, :right_vertical)
|
279
|
+
border(vertical, :right_vertical, iy)
|
230
280
|
end
|
231
281
|
|
232
282
|
# Renders the top border for the interface.
|
@@ -237,8 +287,8 @@ module Vedeu
|
|
237
287
|
|
238
288
|
out = []
|
239
289
|
out << border(top_left, :top_left) if left?
|
240
|
-
width.times do
|
241
|
-
out << border(horizontal, :top_horizontal)
|
290
|
+
width.times do |ix|
|
291
|
+
out << border(horizontal, :top_horizontal, nil, ix)
|
242
292
|
end
|
243
293
|
out << border(top_right, :top_right) if right?
|
244
294
|
|
@@ -249,21 +299,18 @@ module Vedeu
|
|
249
299
|
|
250
300
|
# @param value [String]
|
251
301
|
# @param type [Symbol|NilClass]
|
302
|
+
# @param iy [Fixnum]
|
303
|
+
# @param ix [Fixnum]
|
252
304
|
# @return [Vedeu::Char]
|
253
|
-
def border(value, type = :border)
|
305
|
+
def border(value, type = :border, iy = 0, ix = 0)
|
254
306
|
Vedeu::Char.new({ value: value,
|
255
307
|
parent: interface,
|
256
308
|
colour: colour,
|
257
309
|
style: style,
|
258
|
-
position:
|
310
|
+
position: position(type, iy, ix),
|
259
311
|
border: type })
|
260
312
|
end
|
261
313
|
|
262
|
-
# @return [Vedeu::Interface]
|
263
|
-
def interface
|
264
|
-
@interface ||= Vedeu.interfaces.find(name)
|
265
|
-
end
|
266
|
-
|
267
314
|
# The default values for a new instance of this class.
|
268
315
|
#
|
269
316
|
# @return [Hash]
|
@@ -287,6 +334,39 @@ module Vedeu
|
|
287
334
|
}
|
288
335
|
end
|
289
336
|
|
337
|
+
# @return [Vedeu::Interface]
|
338
|
+
def interface
|
339
|
+
@interface ||= Vedeu.interfaces.find(name)
|
340
|
+
end
|
341
|
+
|
342
|
+
# @param name [Symbol]
|
343
|
+
# @param iy [Fixnum]
|
344
|
+
# @param ix [Fixnum]
|
345
|
+
# @return [Vedeu::Position]
|
346
|
+
def position(name, iy = 0, ix = 0)
|
347
|
+
case name
|
348
|
+
when :top_horizontal
|
349
|
+
Vedeu::Position[interface.y, (bx + ix)]
|
350
|
+
|
351
|
+
when :bottom_horizontal
|
352
|
+
Vedeu::Position[interface.yn, (bx + ix)]
|
353
|
+
|
354
|
+
when :left_vertical
|
355
|
+
Vedeu::Position[(by + iy), interface.x]
|
356
|
+
|
357
|
+
when :right_vertical
|
358
|
+
Vedeu::Position[(by + iy), interface.xn]
|
359
|
+
|
360
|
+
when :bottom_left then interface.bottom_left
|
361
|
+
when :bottom_right then interface.bottom_right
|
362
|
+
when :top_left then interface.top_left
|
363
|
+
when :top_right then interface.top_right
|
364
|
+
else
|
365
|
+
nil
|
366
|
+
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
290
370
|
end # Border
|
291
371
|
|
292
372
|
end # Vedeu
|