vedeu 0.6.34 → 0.6.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/docs/api.md +5 -0
- data/docs/dsl.md +4 -0
- data/docs/geometry.md +3 -0
- data/examples/alignment.rb +183 -0
- data/lib/vedeu/cursors/cursor.rb +1 -1
- data/lib/vedeu/geometry/alignment.rb +87 -0
- data/lib/vedeu/geometry/all.rb +1 -0
- data/lib/vedeu/geometry/area.rb +5 -1
- data/lib/vedeu/geometry/dimension.rb +109 -11
- data/lib/vedeu/geometry/dsl.rb +96 -1
- data/lib/vedeu/geometry/geometry.rb +13 -3
- data/lib/vedeu/input/translator.rb +91 -140
- data/lib/vedeu/models/focus.rb +18 -18
- data/lib/vedeu/output/renderers/options.rb +8 -0
- data/lib/vedeu/runtime/launcher.rb +1 -1
- data/lib/vedeu/runtime/main_loop.rb +1 -2
- data/lib/vedeu/terminal/buffer.rb +6 -6
- data/lib/vedeu/terminal/terminal.rb +1 -1
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/geometry/alignment_test.rb +100 -0
- data/test/lib/vedeu/geometry/area_test.rb +2 -0
- data/test/lib/vedeu/geometry/dimension_test.rb +136 -75
- data/test/lib/vedeu/geometry/dsl_test.rb +96 -0
- data/test/lib/vedeu/geometry/geometry_test.rb +14 -1
- data/test/lib/vedeu/output/renderers/options_test.rb +43 -0
- data/test/support/ttyrec.rb +35 -0
- data/vedeu.gemspec +1 -1
- metadata +10 -4
data/lib/vedeu/geometry/dsl.rb
CHANGED
@@ -73,6 +73,7 @@ module Vedeu
|
|
73
73
|
#
|
74
74
|
class DSL
|
75
75
|
|
76
|
+
include Vedeu::Common
|
76
77
|
include Vedeu::DSL
|
77
78
|
include Vedeu::DSL::Use
|
78
79
|
|
@@ -94,6 +95,100 @@ module Vedeu
|
|
94
95
|
Vedeu::Geometry::Geometry.build(name: name, &block).store
|
95
96
|
end
|
96
97
|
|
98
|
+
# Instructs Vedeu to align the interface/view either left,
|
99
|
+
# centre or right. A width is also required so that required
|
100
|
+
# coordinates are calculated correctly.
|
101
|
+
#
|
102
|
+
# Vedeu.geometry :some_interface do
|
103
|
+
# # :some_value must be one of: :left, :none, :center,
|
104
|
+
# # :centre, or :right
|
105
|
+
# # `width` is a positive integer, e.g. 30
|
106
|
+
# alignment(:some_value, width)
|
107
|
+
#
|
108
|
+
# # ... some code
|
109
|
+
# end
|
110
|
+
#
|
111
|
+
# @param value [Symbol] One of :center, :centre, :left, :none,
|
112
|
+
# :right.
|
113
|
+
# @param width [Fixnum] The width of the aligned interface/view.
|
114
|
+
# @raise [Vedeu::Error::InvalidSyntax] When the value or width
|
115
|
+
# is not given.
|
116
|
+
# @return [Vedeu::Geometry::Geometry]
|
117
|
+
def alignment(value, width)
|
118
|
+
fail Vedeu::Error::InvalidSyntax,
|
119
|
+
'No alignment given. Valid values are :center, :centre, :left, ' \
|
120
|
+
':none, :right.'.freeze unless present?(value)
|
121
|
+
fail Vedeu::Error::InvalidSyntax,
|
122
|
+
'No width given.'.freeze unless present?(width)
|
123
|
+
|
124
|
+
model.alignment = Vedeu::Geometry::Alignment.align(value)
|
125
|
+
model.width = width
|
126
|
+
model
|
127
|
+
end
|
128
|
+
|
129
|
+
# Align the interface/view centrally.
|
130
|
+
#
|
131
|
+
# Vedeu.geometry :some_interface do
|
132
|
+
# # `width` is a positive integer, e.g. 30
|
133
|
+
# align_centre 30
|
134
|
+
#
|
135
|
+
# # this is the same as:
|
136
|
+
# # alignment(:centre, 30)
|
137
|
+
#
|
138
|
+
# # ... some code
|
139
|
+
# end
|
140
|
+
#
|
141
|
+
# # Also allows `align_center` if preferred.
|
142
|
+
#
|
143
|
+
# @param width [Fixnum] The number of characters/columns.
|
144
|
+
# @raise [Vedeu::Error::InvalidSyntax] When the width is not
|
145
|
+
# given.
|
146
|
+
# @return [Vedeu::Geometry::Geometry]
|
147
|
+
def align_centre(width)
|
148
|
+
alignment(:centre, width)
|
149
|
+
end
|
150
|
+
alias_method :align_center, :align_centre
|
151
|
+
|
152
|
+
# Align the interface/view to the left.
|
153
|
+
#
|
154
|
+
# Vedeu.geometry :some_interface do
|
155
|
+
# # `width` is a positive integer, e.g. 30
|
156
|
+
# align_left 30
|
157
|
+
#
|
158
|
+
# # this is the same as:
|
159
|
+
# # alignment(:left, 30)
|
160
|
+
#
|
161
|
+
# # ... some code
|
162
|
+
# end
|
163
|
+
#
|
164
|
+
# @param width [Fixnum] The number of characters/columns.
|
165
|
+
# @raise [Vedeu::Error::InvalidSyntax] When the width is not
|
166
|
+
# given.
|
167
|
+
# @return [Vedeu::Geometry::Geometry]
|
168
|
+
def align_left(width)
|
169
|
+
alignment(:left, width)
|
170
|
+
end
|
171
|
+
|
172
|
+
# Align the interface/view to the right.
|
173
|
+
#
|
174
|
+
# Vedeu.geometry :some_interface do
|
175
|
+
# # `width` is a positive integer, e.g. 30
|
176
|
+
# align_right 30
|
177
|
+
#
|
178
|
+
# # this is the same as:
|
179
|
+
# # alignment(:right, 30)
|
180
|
+
#
|
181
|
+
# # ... some code
|
182
|
+
# end
|
183
|
+
#
|
184
|
+
# @param width [Fixnum] The number of characters/columns.
|
185
|
+
# @raise [Vedeu::Error::InvalidSyntax] When the width is not
|
186
|
+
# given.
|
187
|
+
# @return [Vedeu::Geometry::Geometry]
|
188
|
+
def align_right(width)
|
189
|
+
alignment(:right, width)
|
190
|
+
end
|
191
|
+
|
97
192
|
# Instructs Vedeu to calculate x and y geometry automatically
|
98
193
|
# based on the centre character of the terminal, the width and
|
99
194
|
# the height.
|
@@ -178,7 +273,7 @@ module Vedeu
|
|
178
273
|
# # ... some code
|
179
274
|
# end
|
180
275
|
#
|
181
|
-
# @param value [Fixnum]
|
276
|
+
# @param value [Fixnum] The number of characters/columns.
|
182
277
|
# @return [Fixnum]
|
183
278
|
def width(value)
|
184
279
|
model.width = proc { value }
|
@@ -31,6 +31,10 @@ module Vedeu
|
|
31
31
|
:height,
|
32
32
|
:width
|
33
33
|
|
34
|
+
# @!attribute [rw] alignment
|
35
|
+
# @return [Symbol]
|
36
|
+
attr_accessor :alignment
|
37
|
+
|
34
38
|
# @!attribute [rw] centred
|
35
39
|
# @return [Boolean]
|
36
40
|
attr_accessor :centred
|
@@ -101,6 +105,7 @@ module Vedeu
|
|
101
105
|
# @return [Hash]
|
102
106
|
def attributes
|
103
107
|
{
|
108
|
+
alignment: @alignment,
|
104
109
|
client: @client,
|
105
110
|
centred: @centred,
|
106
111
|
height: height,
|
@@ -222,6 +227,7 @@ module Vedeu
|
|
222
227
|
# @return [Hash<Symbol => Boolean, Fixnum>]
|
223
228
|
def area_attributes
|
224
229
|
{
|
230
|
+
alignment: @alignment,
|
225
231
|
centred: @centred,
|
226
232
|
maximised: @maximised,
|
227
233
|
x: @x.is_a?(Proc) ? @x.call : @x,
|
@@ -234,8 +240,9 @@ module Vedeu
|
|
234
240
|
end
|
235
241
|
|
236
242
|
# When moving an interface;
|
237
|
-
# 1) Reset the centred and maximised states to false;
|
238
|
-
#
|
243
|
+
# 1) Reset the alignment, centred and maximised states to false;
|
244
|
+
# it wont be aligned to a side if moved, nor centred if
|
245
|
+
# moved, and cannot be moved if maximised.
|
239
246
|
# 2) Get the current coordinates of the interface, then:
|
240
247
|
# 3) Override the attributes with the new coordinates for
|
241
248
|
# desired movement; these are usually +/- 1 of the current
|
@@ -250,7 +257,9 @@ module Vedeu
|
|
250
257
|
# @option coordinates yn [Fixnum] The ending row/line position.
|
251
258
|
# @return [Hash<Symbol => Boolean, Fixnum>]
|
252
259
|
def move(coordinates = {})
|
253
|
-
attrs = attributes.merge!(
|
260
|
+
attrs = attributes.merge!(alignment: :none,
|
261
|
+
centred: false,
|
262
|
+
maximised: false)
|
254
263
|
.merge!(coordinates)
|
255
264
|
|
256
265
|
Vedeu::Geometry::Geometry.store(attrs)
|
@@ -261,6 +270,7 @@ module Vedeu
|
|
261
270
|
# @return [Hash]
|
262
271
|
def defaults
|
263
272
|
{
|
273
|
+
alignment: Vedeu::Geometry::Alignment.align(:none),
|
264
274
|
client: nil,
|
265
275
|
centred: false,
|
266
276
|
height: nil,
|
@@ -23,7 +23,7 @@ module Vedeu
|
|
23
23
|
|
24
24
|
# @return [Symbol]
|
25
25
|
def translate
|
26
|
-
|
26
|
+
Vedeu::KEY_TABLE[code] || code
|
27
27
|
end
|
28
28
|
|
29
29
|
protected
|
@@ -32,147 +32,98 @@ module Vedeu
|
|
32
32
|
# @return [String]
|
33
33
|
attr_reader :code
|
34
34
|
|
35
|
-
private
|
36
|
-
|
37
|
-
# @return [Hash<String => Symbol>]
|
38
|
-
def symbols
|
39
|
-
@symbols ||= ctrl_letters.merge!(f_keys)
|
40
|
-
.merge!(shift_f_keys)
|
41
|
-
.merge!(ctrl_f_keys)
|
42
|
-
.merge!(direction_keys)
|
43
|
-
.merge!(specials)
|
44
|
-
end
|
45
|
-
|
46
|
-
# @return [Hash<String => Symbol>]
|
47
|
-
def ctrl_letters
|
48
|
-
{
|
49
|
-
"\u0001" => :ctrl_a,
|
50
|
-
"\u0002" => :ctrl_b,
|
51
|
-
|
52
|
-
"\u0003" => :ctrl_c,
|
53
|
-
"\u2404" => :ctrl_c,
|
54
|
-
|
55
|
-
"\u0004" => :ctrl_d,
|
56
|
-
"\u2403" => :ctrl_d,
|
57
|
-
|
58
|
-
"\u0005" => :ctrl_e,
|
59
|
-
"\u0006" => :ctrl_f,
|
60
|
-
"\u0007" => :ctrl_g,
|
61
|
-
"\u0008" => :ctrl_h,
|
62
|
-
# "\u0009" => :ctrl_i, # duplicates tab
|
63
|
-
"\u0010" => :ctrl_j, # produces "\n"
|
64
|
-
"\u0011" => :ctrl_k,
|
65
|
-
"\u0012" => :ctrl_l,
|
66
|
-
"\u0013" => :ctrl_m,
|
67
|
-
"\u0014" => :ctrl_n,
|
68
|
-
"\u0015" => :ctrl_o,
|
69
|
-
"\u0016" => :ctrl_p,
|
70
|
-
"\u0017" => :ctrl_q,
|
71
|
-
|
72
|
-
"\u0018" => :ctrl_r,
|
73
|
-
"\u2412" => :ctrl_r,
|
74
|
-
|
75
|
-
"\u0019" => :ctrl_s,
|
76
|
-
# "\u0020" => :ctrl_t, # duplicates spacebar
|
77
|
-
"\u0021" => :ctrl_u,
|
78
|
-
"\u0022" => :ctrl_v,
|
79
|
-
"\u0023" => :ctrl_w,
|
80
|
-
"\u0024" => :ctrl_x,
|
81
|
-
"\u0025" => :ctrl_y,
|
82
|
-
"\u0026" => :ctrl_z,
|
83
|
-
}
|
84
|
-
end
|
85
|
-
|
86
|
-
# @return [Hash<String => Symbol>]
|
87
|
-
def f_keys
|
88
|
-
{
|
89
|
-
"\eOP" => :f1,
|
90
|
-
"\eOQ" => :f2,
|
91
|
-
"\eOR" => :f3,
|
92
|
-
"\eOS" => :f4,
|
93
|
-
"\e[15~" => :f5,
|
94
|
-
"\e[17~" => :f6,
|
95
|
-
"\e[18~" => :f7,
|
96
|
-
"\e[19~" => :f8,
|
97
|
-
"\e[20~" => :f9,
|
98
|
-
"\e[21~" => :f10,
|
99
|
-
"\e[23~" => :f11,
|
100
|
-
"\e[24~" => :f12,
|
101
|
-
}
|
102
|
-
end
|
103
|
-
|
104
|
-
# @return [Hash<String => Symbol>]
|
105
|
-
def shift_f_keys
|
106
|
-
{
|
107
|
-
"\e[15;2~" => :shift_f5,
|
108
|
-
"\e[17;2~" => :shift_f6,
|
109
|
-
"\e[18;2~" => :shift_f7,
|
110
|
-
"\e[19;2~" => :shift_f8,
|
111
|
-
"\e[20;2~" => :shift_f9,
|
112
|
-
"\e[21;2~" => :shift_f10,
|
113
|
-
"\e[23;2~" => :shift_f11,
|
114
|
-
"\e[24;2~" => :shift_f12,
|
115
|
-
}
|
116
|
-
end
|
117
|
-
|
118
|
-
# @return [Hash<String => Symbol>]
|
119
|
-
def ctrl_f_keys
|
120
|
-
{
|
121
|
-
"\e[15;5~" => :ctrl_f5,
|
122
|
-
"\e[17;5~" => :ctrl_f6,
|
123
|
-
"\e[18;5~" => :ctrl_f7,
|
124
|
-
"\e[19;5~" => :ctrl_f8,
|
125
|
-
"\e[20;5~" => :ctrl_f9,
|
126
|
-
"\e[21;5~" => :ctrl_f10,
|
127
|
-
"\e[23;5~" => :ctrl_f11,
|
128
|
-
"\e[24;5~" => :ctrl_f12,
|
129
|
-
}
|
130
|
-
end
|
131
|
-
|
132
|
-
# @return [Hash<String => Symbol>]
|
133
|
-
def direction_keys
|
134
|
-
{
|
135
|
-
"\e[B" => :down,
|
136
|
-
"\u2193" => :down,
|
137
|
-
"\e[D" => :left,
|
138
|
-
"\u2190" => :left,
|
139
|
-
"\e[C" => :right,
|
140
|
-
"\u2192" => :right,
|
141
|
-
"\e[A" => :up,
|
142
|
-
"\u2191" => :up,
|
143
|
-
}
|
144
|
-
end
|
145
|
-
|
146
|
-
# @return [Hash<String => Symbol>]
|
147
|
-
def specials
|
148
|
-
{
|
149
|
-
"\u007F" => :backspace,
|
150
|
-
"\u2408" => :backspace,
|
151
|
-
"\u23CE" => :carriage_return,
|
152
|
-
"\e[3~" => :delete,
|
153
|
-
"\u232B" => :delete,
|
154
|
-
"\e[F" => :end,
|
155
|
-
"\r" => :enter,
|
156
|
-
"\n" => :enter,
|
157
|
-
"\e" => :escape,
|
158
|
-
"\u238B" => :escape,
|
159
|
-
"\e[H" => :home,
|
160
|
-
"\eOH" => :home,
|
161
|
-
"\e[2~" => :insert,
|
162
|
-
"\u240A" => :line_feed,
|
163
|
-
"\e[5~" => :page_up,
|
164
|
-
"\e[6~" => :page_down,
|
165
|
-
"\e[1;2R" => :pause_break,
|
166
|
-
"\e[1;2P" => :print_screen,
|
167
|
-
"\e[1;2Q" => :scroll_lock,
|
168
|
-
"\e[Z" => :shift_tab,
|
169
|
-
"\t" => :tab,
|
170
|
-
"\u21B9" => :tab,
|
171
|
-
}
|
172
|
-
end
|
173
|
-
|
174
35
|
end # Translator
|
175
36
|
|
176
37
|
end # Input
|
177
38
|
|
39
|
+
KEY_TABLE = {
|
40
|
+
"\u0001" => :ctrl_a,
|
41
|
+
"\u0002" => :ctrl_b,
|
42
|
+
"\u0003" => :ctrl_c,
|
43
|
+
"\u2404" => :ctrl_c,
|
44
|
+
"\u0004" => :ctrl_d,
|
45
|
+
"\u2403" => :ctrl_d,
|
46
|
+
"\u0005" => :ctrl_e,
|
47
|
+
"\u0006" => :ctrl_f,
|
48
|
+
"\u0007" => :ctrl_g,
|
49
|
+
"\u0008" => :ctrl_h,
|
50
|
+
# "\u0009" => :ctrl_i, # duplicates tab
|
51
|
+
"\u0010" => :ctrl_j, # produces "\n"
|
52
|
+
"\u0011" => :ctrl_k,
|
53
|
+
"\u0012" => :ctrl_l,
|
54
|
+
"\u0013" => :ctrl_m,
|
55
|
+
"\u0014" => :ctrl_n,
|
56
|
+
"\u0015" => :ctrl_o,
|
57
|
+
"\u0016" => :ctrl_p,
|
58
|
+
"\u0017" => :ctrl_q,
|
59
|
+
"\u0018" => :ctrl_r,
|
60
|
+
"\u2412" => :ctrl_r,
|
61
|
+
"\u0019" => :ctrl_s,
|
62
|
+
# "\u0020" => :ctrl_t, # duplicates spacebar
|
63
|
+
"\u0021" => :ctrl_u,
|
64
|
+
"\u0022" => :ctrl_v,
|
65
|
+
"\u0023" => :ctrl_w,
|
66
|
+
"\u0024" => :ctrl_x,
|
67
|
+
"\u0025" => :ctrl_y,
|
68
|
+
"\u0026" => :ctrl_z,
|
69
|
+
"\eOP" => :f1,
|
70
|
+
"\eOQ" => :f2,
|
71
|
+
"\eOR" => :f3,
|
72
|
+
"\eOS" => :f4,
|
73
|
+
"\e[15~" => :f5,
|
74
|
+
"\e[17~" => :f6,
|
75
|
+
"\e[18~" => :f7,
|
76
|
+
"\e[19~" => :f8,
|
77
|
+
"\e[20~" => :f9,
|
78
|
+
"\e[21~" => :f10,
|
79
|
+
"\e[23~" => :f11,
|
80
|
+
"\e[24~" => :f12,
|
81
|
+
"\e[15;2~" => :shift_f5,
|
82
|
+
"\e[17;2~" => :shift_f6,
|
83
|
+
"\e[18;2~" => :shift_f7,
|
84
|
+
"\e[19;2~" => :shift_f8,
|
85
|
+
"\e[20;2~" => :shift_f9,
|
86
|
+
"\e[21;2~" => :shift_f10,
|
87
|
+
"\e[23;2~" => :shift_f11,
|
88
|
+
"\e[24;2~" => :shift_f12,
|
89
|
+
"\e[15;5~" => :ctrl_f5,
|
90
|
+
"\e[17;5~" => :ctrl_f6,
|
91
|
+
"\e[18;5~" => :ctrl_f7,
|
92
|
+
"\e[19;5~" => :ctrl_f8,
|
93
|
+
"\e[20;5~" => :ctrl_f9,
|
94
|
+
"\e[21;5~" => :ctrl_f10,
|
95
|
+
"\e[23;5~" => :ctrl_f11,
|
96
|
+
"\e[24;5~" => :ctrl_f12,
|
97
|
+
"\e[B" => :down,
|
98
|
+
"\u2193" => :down,
|
99
|
+
"\e[D" => :left,
|
100
|
+
"\u2190" => :left,
|
101
|
+
"\e[C" => :right,
|
102
|
+
"\u2192" => :right,
|
103
|
+
"\e[A" => :up,
|
104
|
+
"\u2191" => :up,
|
105
|
+
"\u007F" => :backspace,
|
106
|
+
"\u2408" => :backspace,
|
107
|
+
"\u23CE" => :carriage_return,
|
108
|
+
"\e[3~" => :delete,
|
109
|
+
"\u232B" => :delete,
|
110
|
+
"\e[F" => :end,
|
111
|
+
"\r" => :enter,
|
112
|
+
"\n" => :enter,
|
113
|
+
"\e" => :escape,
|
114
|
+
"\u238B" => :escape,
|
115
|
+
"\e[H" => :home,
|
116
|
+
"\eOH" => :home,
|
117
|
+
"\e[2~" => :insert,
|
118
|
+
"\u240A" => :line_feed,
|
119
|
+
"\e[5~" => :page_up,
|
120
|
+
"\e[6~" => :page_down,
|
121
|
+
"\e[1;2R" => :pause_break,
|
122
|
+
"\e[1;2P" => :print_screen,
|
123
|
+
"\e[1;2Q" => :scroll_lock,
|
124
|
+
"\e[Z" => :shift_tab,
|
125
|
+
"\t" => :tab,
|
126
|
+
"\u21B9" => :tab,
|
127
|
+
}.freeze
|
128
|
+
|
178
129
|
end # Vedeu
|
data/lib/vedeu/models/focus.rb
CHANGED
@@ -33,19 +33,12 @@ module Vedeu
|
|
33
33
|
return storage unless focus
|
34
34
|
|
35
35
|
by_name(name)
|
36
|
-
storage
|
37
36
|
|
38
37
|
else
|
39
38
|
Vedeu.log(type: :store,
|
40
39
|
message: "Storing focus entry: '#{name}'".freeze)
|
41
40
|
|
42
|
-
|
43
|
-
storage.unshift(name)
|
44
|
-
|
45
|
-
else
|
46
|
-
storage.push(name)
|
47
|
-
|
48
|
-
end
|
41
|
+
focus ? storage.unshift(name) : storage.push(name)
|
49
42
|
end
|
50
43
|
end
|
51
44
|
|
@@ -63,11 +56,7 @@ module Vedeu
|
|
63
56
|
# @return [String|Symbol] The name of the interface now in
|
64
57
|
# focus.
|
65
58
|
def by_name(name)
|
66
|
-
unless registered?(name)
|
67
|
-
fail Vedeu::Error::ModelNotFound,
|
68
|
-
"Cannot focus '#{name}' as this interface has not been " \
|
69
|
-
'registered.'.freeze
|
70
|
-
end
|
59
|
+
not_registered! unless registered?(name)
|
71
60
|
|
72
61
|
storage.rotate!(storage.index(name))
|
73
62
|
|
@@ -84,9 +73,7 @@ module Vedeu
|
|
84
73
|
def current
|
85
74
|
return storage[0] unless empty?
|
86
75
|
|
87
|
-
|
88
|
-
'No interfaces or views have been registered, therefore the ' \
|
89
|
-
'focus table is empty.'.freeze
|
76
|
+
no_interfaces_registered!
|
90
77
|
end
|
91
78
|
alias_method :focus, :current
|
92
79
|
|
@@ -212,6 +199,20 @@ module Vedeu
|
|
212
199
|
|
213
200
|
private
|
214
201
|
|
202
|
+
# @raise [Vedeu::Error::Fatal]
|
203
|
+
def no_interfaces_registered!
|
204
|
+
fail Vedeu::Error::Fatal,
|
205
|
+
'No interfaces or views have been registered, therefore the ' \
|
206
|
+
'focus table is empty.'.freeze
|
207
|
+
end
|
208
|
+
|
209
|
+
# @raise [Vedeu::Error::ModelNotFound]
|
210
|
+
def not_registered!
|
211
|
+
fail Vedeu::Error::ModelNotFound,
|
212
|
+
"Cannot focus '#{name}' as this interface has not been " \
|
213
|
+
'registered.'.freeze
|
214
|
+
end
|
215
|
+
|
215
216
|
# Return the name of the interface in focus after triggering the
|
216
217
|
# refresh event for that interface. Returns false when the
|
217
218
|
# storage is empty.
|
@@ -220,8 +221,7 @@ module Vedeu
|
|
220
221
|
def update
|
221
222
|
return false if empty?
|
222
223
|
|
223
|
-
Vedeu.log(
|
224
|
-
message: "Interface in focus: '#{current}'".freeze)
|
224
|
+
Vedeu.log(message: "Interface in focus: '#{current}'".freeze)
|
225
225
|
|
226
226
|
refresh
|
227
227
|
|