vedeu 0.4.40 → 0.4.41
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/Dockerfile +23 -28
- data/Guardfile +0 -8
- data/Rakefile +0 -6
- data/docs/applications.md +0 -1
- data/docs/dsl.md +7 -12
- data/examples/borders_app.rb +5 -0
- data/examples/configuration_app.rb +5 -0
- data/examples/drb_app.rb +5 -0
- data/examples/geometry_app.rb +5 -0
- data/examples/material_colours_app.rb +5 -0
- data/examples/panel_app.rb +5 -0
- data/examples/typed_commands/typed_commands_app.rb +5 -0
- data/examples/view_templates_app/view_templates_app.rb +5 -0
- data/lib/vedeu/api.rb +8 -8
- data/lib/vedeu/application/all.rb +3 -0
- data/lib/vedeu/application/application_controller.rb +4 -0
- data/lib/vedeu/application/application_helper.rb +4 -0
- data/lib/vedeu/application/application_view.rb +6 -0
- data/lib/vedeu/application/controller.rb +23 -0
- data/lib/vedeu/application/helper.rb +23 -0
- data/lib/vedeu/application/view.rb +23 -0
- data/lib/vedeu/application.rb +1 -3
- data/lib/vedeu/bindings.rb +64 -65
- data/lib/vedeu/bootstrap.rb +2 -0
- data/lib/vedeu/buffers/buffer.rb +44 -0
- data/lib/vedeu/configuration/api.rb +44 -119
- data/lib/vedeu/configuration/cli.rb +2 -0
- data/lib/vedeu/configuration/configuration.rb +4 -20
- data/lib/vedeu/cursor/cursor.rb +7 -7
- data/lib/vedeu/cursor/reposition.rb +2 -0
- data/lib/vedeu/dsl/border.rb +58 -2
- data/lib/vedeu/dsl/composition.rb +5 -3
- data/lib/vedeu/dsl/geometry.rb +14 -5
- data/lib/vedeu/dsl/group.rb +2 -0
- data/lib/vedeu/dsl/interface.rb +23 -3
- data/lib/vedeu/dsl/keymap.rb +11 -6
- data/lib/vedeu/dsl/line.rb +8 -0
- data/lib/vedeu/dsl/menu.rb +3 -1
- data/lib/vedeu/dsl/presentation.rb +12 -3
- data/lib/vedeu/dsl/text.rb +2 -0
- data/lib/vedeu/dsl/view.rb +6 -1
- data/lib/vedeu/events/event.rb +3 -1
- data/lib/vedeu/generator/application.rb +2 -7
- data/lib/vedeu/generator/templates/application/app/models/keymaps/_global_.rb +5 -0
- data/lib/vedeu/generator/templates/application/app/views/interfaces/name.erb +10 -0
- data/lib/vedeu/generator/view.rb +2 -0
- data/lib/vedeu/geometry/geometry.rb +14 -0
- data/lib/vedeu/geometry/index_position.rb +1 -0
- data/lib/vedeu/geometry/position.rb +5 -0
- data/lib/vedeu/input/all.rb +0 -8
- data/lib/vedeu/input/input.rb +24 -8
- data/lib/vedeu/input/mapper.rb +5 -12
- data/lib/vedeu/models/composition.rb +3 -3
- data/lib/vedeu/models/escape_char.rb +2 -0
- data/lib/vedeu/models/focus.rb +8 -0
- data/lib/vedeu/models/interface.rb +1 -1
- data/lib/vedeu/models/line.rb +1 -5
- data/lib/vedeu/models/menu.rb +4 -2
- data/lib/vedeu/models/panel.rb +2 -0
- data/lib/vedeu/null/buffer.rb +2 -0
- data/lib/vedeu/null/interface.rb +2 -0
- data/lib/vedeu/output/background.rb +1 -1
- data/lib/vedeu/output/border.rb +5 -157
- data/lib/vedeu/output/compressor.rb +2 -0
- data/lib/vedeu/output/foreground.rb +1 -1
- data/lib/vedeu/output/refresh.rb +5 -9
- data/lib/vedeu/output/render_border.rb +230 -0
- data/lib/vedeu/output/renderers/escape_sequence.rb +2 -3
- data/lib/vedeu/output/renderers/file.rb +10 -9
- data/lib/vedeu/repositories/collections/all.rb +4 -4
- data/lib/vedeu/repositories/repositories/all.rb +4 -4
- data/lib/vedeu/repositories/repositories/{background_colours.rb → backgrounds.rb} +3 -3
- data/lib/vedeu/repositories/repositories/cursors.rb +3 -0
- data/lib/vedeu/repositories/repositories/{events_repository.rb → events.rb} +5 -5
- data/lib/vedeu/repositories/repositories/{foreground_colours.rb → foregrounds.rb} +3 -3
- data/lib/vedeu/repositories/repositories/{interfaces_repository.rb → interfaces.rb} +4 -4
- data/lib/vedeu/storage/associative_store.rb +2 -0
- data/lib/vedeu/storage/conveyor_store.rb +2 -0
- data/lib/vedeu/storage/fifo_store.rb +2 -0
- data/lib/vedeu/storage/store.rb +7 -7
- data/lib/vedeu/support/options.rb +2 -0
- data/lib/vedeu/support/terminal.rb +3 -3
- data/lib/vedeu/support/timer.rb +2 -0
- data/lib/vedeu/support/visibility.rb +2 -0
- data/lib/vedeu/templating/directive.rb +2 -0
- data/lib/vedeu/templating/preprocessor.rb +2 -0
- data/lib/vedeu/version.rb +1 -1
- data/lib/vedeu.rb +3 -1
- data/test/lib/vedeu/bindings_test.rb +15 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +12 -0
- data/test/lib/vedeu/configuration/api_test.rb +0 -39
- data/test/lib/vedeu/configuration/configuration_test.rb +0 -9
- data/test/lib/vedeu/cursor/cursor_test.rb +6 -0
- data/test/lib/vedeu/dsl/border_test.rb +12 -0
- data/test/lib/vedeu/dsl/composition_test.rb +2 -2
- data/test/lib/vedeu/geometry/index_position_test.rb +2 -0
- data/test/lib/vedeu/geometry/position_test.rb +6 -0
- data/test/lib/vedeu/models/cell_test.rb +16 -8
- data/test/lib/vedeu/models/char_test.rb +8 -0
- data/test/lib/vedeu/models/composition_test.rb +2 -2
- data/test/lib/vedeu/models/interface_test.rb +10 -0
- data/test/lib/vedeu/models/line_test.rb +12 -0
- data/test/lib/vedeu/models/stream_test.rb +1 -13
- data/test/lib/vedeu/output/border_test.rb +1 -0
- data/test/lib/vedeu/output/presentation_test.rb +2 -0
- data/test/lib/vedeu/output/render_border_test.rb +16 -0
- data/test/lib/vedeu/output/renderers/file_test.rb +32 -16
- data/test/lib/vedeu/repositories/collection_test.rb +7 -0
- data/test/lib/vedeu/repositories/collections/all_test.rb +18 -6
- data/test/lib/vedeu/repositories/model_test.rb +33 -7
- data/test/lib/vedeu/repositories/repositories/{background_colours_test.rb → backgrounds_test.rb} +3 -3
- data/test/lib/vedeu/repositories/repositories/borders_test.rb +7 -17
- data/test/lib/vedeu/repositories/repositories/buffers_test.rb +7 -22
- data/test/lib/vedeu/repositories/repositories/cursors_test.rb +32 -0
- data/test/lib/vedeu/repositories/repositories/events_test.rb +22 -0
- data/test/lib/vedeu/repositories/repositories/{foreground_colours_test.rb → foregrounds_test.rb} +3 -3
- data/test/lib/vedeu/repositories/repositories/geometries_test.rb +7 -21
- data/test/lib/vedeu/repositories/repositories/groups_test.rb +11 -0
- data/test/lib/vedeu/repositories/repositories/{interfaces_repositories_test.rb → interfaces_test.rb} +14 -3
- data/test/lib/vedeu/repositories/repositories/keymaps_test.rb +10 -1
- data/test/lib/vedeu/repositories/repositories/menus_test.rb +10 -1
- data/test/lib/vedeu/repositories/repository_test.rb +15 -9
- data/test/lib/vedeu/storage/conveyor_store_test.rb +2 -4
- data/test/lib/vedeu/support/terminal_test.rb +2 -2
- data/test/lib/vedeu/templating/helpers_test.rb +4 -0
- data/vedeu.gemspec +0 -2
- metadata +20 -54
- data/config/cucumber.yml +0 -8
- data/features/cli_vedeu.feature +0 -5
- data/features/start_stop.feature +0 -27
- data/features/step_definitions/vedeu_steps.rb +0 -0
- data/features/support/env.rb +0 -15
- data/lib/vedeu/generator/templates/application/app/models/keymaps/_system_.rb +0 -7
- data/test/lib/vedeu/repositories/repositories/events_repository_test.rb +0 -13
- data/test/lib/vedeu/repositories/repositories/interfaces_repository_test.rb +0 -11
data/lib/vedeu/dsl/border.rb
CHANGED
|
@@ -12,17 +12,20 @@ module Vedeu
|
|
|
12
12
|
# # Borders can be defined when defining your interface...
|
|
13
13
|
# Vedeu.interface 'my_interface' do
|
|
14
14
|
# border do
|
|
15
|
-
#
|
|
15
|
+
# # ...
|
|
16
|
+
# end
|
|
16
17
|
#
|
|
17
18
|
# # ...or as part of a view definition...
|
|
18
19
|
# Vedeu.renders do
|
|
19
20
|
# view 'border_demo' do
|
|
20
21
|
# border do
|
|
21
|
-
#
|
|
22
|
+
# # ...
|
|
23
|
+
# end
|
|
22
24
|
#
|
|
23
25
|
# # ...or standalone; referencing the target interface or view.
|
|
24
26
|
# Vedeu.border 'some_interface' do
|
|
25
27
|
# # ...
|
|
28
|
+
# end
|
|
26
29
|
#
|
|
27
30
|
# @api public
|
|
28
31
|
class Border
|
|
@@ -36,6 +39,7 @@ module Vedeu
|
|
|
36
39
|
# @example
|
|
37
40
|
# Vedeu.border 'some_interface' do
|
|
38
41
|
# # ...
|
|
42
|
+
# end
|
|
39
43
|
#
|
|
40
44
|
# @param name [String] The name of the interface or view to which this
|
|
41
45
|
# border belongs.
|
|
@@ -67,6 +71,9 @@ module Vedeu
|
|
|
67
71
|
# border do
|
|
68
72
|
# bottom_left '+'
|
|
69
73
|
# # ...
|
|
74
|
+
# end
|
|
75
|
+
# end
|
|
76
|
+
# end
|
|
70
77
|
#
|
|
71
78
|
# @param char [String] Character to be used as the bottom left border
|
|
72
79
|
# character.
|
|
@@ -84,6 +91,9 @@ module Vedeu
|
|
|
84
91
|
# border do
|
|
85
92
|
# bottom_right '+'
|
|
86
93
|
# # ...
|
|
94
|
+
# end
|
|
95
|
+
# end
|
|
96
|
+
# end
|
|
87
97
|
#
|
|
88
98
|
# @param char [String] Character to be used as the bottom right border
|
|
89
99
|
# character.
|
|
@@ -92,6 +102,31 @@ module Vedeu
|
|
|
92
102
|
model.bottom_right = char
|
|
93
103
|
end
|
|
94
104
|
|
|
105
|
+
# Disable this border.
|
|
106
|
+
#
|
|
107
|
+
# @return [Boolean]
|
|
108
|
+
def disable!
|
|
109
|
+
model.enabled = false
|
|
110
|
+
|
|
111
|
+
hide_bottom!
|
|
112
|
+
hide_left!
|
|
113
|
+
hide_right!
|
|
114
|
+
hide_top!
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Enable this border.
|
|
118
|
+
# (Borders are enabled by default if defined for an interface).
|
|
119
|
+
#
|
|
120
|
+
# @return [Boolean]
|
|
121
|
+
def enable!
|
|
122
|
+
model.enabled = true
|
|
123
|
+
|
|
124
|
+
show_bottom!
|
|
125
|
+
show_left!
|
|
126
|
+
show_right!
|
|
127
|
+
show_top!
|
|
128
|
+
end
|
|
129
|
+
|
|
95
130
|
# Set the character to be used to draw a horizontal part of the border.
|
|
96
131
|
#
|
|
97
132
|
# @example
|
|
@@ -100,6 +135,9 @@ module Vedeu
|
|
|
100
135
|
# border do
|
|
101
136
|
# horizontal '-'
|
|
102
137
|
# # ...
|
|
138
|
+
# end
|
|
139
|
+
# end
|
|
140
|
+
# end
|
|
103
141
|
#
|
|
104
142
|
# @param char [String] Character to be used as the horizontal border
|
|
105
143
|
# character.
|
|
@@ -119,6 +157,9 @@ module Vedeu
|
|
|
119
157
|
# hide_bottom!
|
|
120
158
|
# # ... or
|
|
121
159
|
# show_bottom!
|
|
160
|
+
# end
|
|
161
|
+
# end
|
|
162
|
+
# end
|
|
122
163
|
#
|
|
123
164
|
# @param value [Boolean] All values evaluate as true except nil and
|
|
124
165
|
# false.
|
|
@@ -155,6 +196,9 @@ module Vedeu
|
|
|
155
196
|
# hide_left!
|
|
156
197
|
# # ... or
|
|
157
198
|
# show_left!
|
|
199
|
+
# end
|
|
200
|
+
# end
|
|
201
|
+
# end
|
|
158
202
|
#
|
|
159
203
|
# @param value [Boolean] All values evaluate as true except nil and
|
|
160
204
|
# false.
|
|
@@ -191,6 +235,9 @@ module Vedeu
|
|
|
191
235
|
# hide_right!
|
|
192
236
|
# # ... or
|
|
193
237
|
# show_right!
|
|
238
|
+
# end
|
|
239
|
+
# end
|
|
240
|
+
# end
|
|
194
241
|
#
|
|
195
242
|
# @param value [Boolean] All values evaluate as true except nil and
|
|
196
243
|
# false.
|
|
@@ -225,6 +272,9 @@ module Vedeu
|
|
|
225
272
|
# border do
|
|
226
273
|
# title 'My Cool Title'
|
|
227
274
|
# # ...
|
|
275
|
+
# end
|
|
276
|
+
# end
|
|
277
|
+
# end
|
|
228
278
|
#
|
|
229
279
|
# +- My Cool Title --------------------------------+
|
|
230
280
|
#
|
|
@@ -245,6 +295,9 @@ module Vedeu
|
|
|
245
295
|
# hide_top!
|
|
246
296
|
# # ... or
|
|
247
297
|
# show_top!
|
|
298
|
+
# end
|
|
299
|
+
# end
|
|
300
|
+
# end
|
|
248
301
|
#
|
|
249
302
|
# @param value [Boolean] All values evaluate as true except nil and
|
|
250
303
|
# false.
|
|
@@ -278,6 +331,9 @@ module Vedeu
|
|
|
278
331
|
# border do
|
|
279
332
|
# top_left '+'
|
|
280
333
|
# # ...
|
|
334
|
+
# end
|
|
335
|
+
# end
|
|
336
|
+
# end
|
|
281
337
|
#
|
|
282
338
|
# @param char [String] Character to be used as the top left border
|
|
283
339
|
# character.
|
|
@@ -66,10 +66,11 @@ module Vedeu
|
|
|
66
66
|
#
|
|
67
67
|
# @example
|
|
68
68
|
# view 'my_interface' do
|
|
69
|
-
# ...
|
|
69
|
+
# # ...
|
|
70
|
+
# end
|
|
70
71
|
#
|
|
71
72
|
# @raise [InvalidSyntax] The required block was not given.
|
|
72
|
-
# @return [Vedeu::
|
|
73
|
+
# @return [Vedeu::InterfaceCollection<Vedeu::Interface>]
|
|
73
74
|
def view(name = '', &block)
|
|
74
75
|
fail InvalidSyntax, 'block not given' unless block_given?
|
|
75
76
|
|
|
@@ -85,6 +86,7 @@ module Vedeu
|
|
|
85
86
|
# template_for('my_interface',
|
|
86
87
|
# '/path/to/template.erb',
|
|
87
88
|
# @some_object, options)
|
|
89
|
+
# end
|
|
88
90
|
#
|
|
89
91
|
# @todo More documentation required.
|
|
90
92
|
#
|
|
@@ -96,7 +98,7 @@ module Vedeu
|
|
|
96
98
|
# @param object [Object] The object for which the values of template's
|
|
97
99
|
# variables can be obtained.
|
|
98
100
|
# @param options [Hash] See {Vedeu::Wordwrap}
|
|
99
|
-
# @return [Vedeu::
|
|
101
|
+
# @return [Vedeu::InterfaceCollection<Vedeu::Interface>]
|
|
100
102
|
def template_for(name, filename, object = nil, options = {})
|
|
101
103
|
fail MissingRequired, 'Cannot render template without the name of ' \
|
|
102
104
|
'the view.' unless name
|
data/lib/vedeu/dsl/geometry.rb
CHANGED
|
@@ -11,7 +11,7 @@ module Vedeu
|
|
|
11
11
|
#
|
|
12
12
|
# Vedeu.geometry 'some_interface' do
|
|
13
13
|
# # ...
|
|
14
|
-
#
|
|
14
|
+
# end
|
|
15
15
|
#
|
|
16
16
|
# This crude ASCII diagram represents a Geometry within Vedeu, each of the
|
|
17
17
|
# labels is a value you can access or define.
|
|
@@ -37,6 +37,7 @@ module Vedeu
|
|
|
37
37
|
# @example
|
|
38
38
|
# Vedeu.geometry 'some_interface' do
|
|
39
39
|
# # ...
|
|
40
|
+
# end
|
|
40
41
|
#
|
|
41
42
|
# @param name [String] The name of the interface or view to which this
|
|
42
43
|
# geometry belongs.
|
|
@@ -69,10 +70,12 @@ module Vedeu
|
|
|
69
70
|
# geometry 'some_interface' do
|
|
70
71
|
# centred!
|
|
71
72
|
# # ...
|
|
73
|
+
# end
|
|
72
74
|
#
|
|
73
75
|
# geometry 'some_interface' do
|
|
74
76
|
# centred false
|
|
75
77
|
# # ...
|
|
78
|
+
# end
|
|
76
79
|
#
|
|
77
80
|
# @return [Boolean]
|
|
78
81
|
def centred(value = true)
|
|
@@ -93,6 +96,7 @@ module Vedeu
|
|
|
93
96
|
# geometry 'some_interface' do
|
|
94
97
|
# height 8
|
|
95
98
|
# # ...
|
|
99
|
+
# end
|
|
96
100
|
#
|
|
97
101
|
# @note
|
|
98
102
|
# This value will be ignored if by `y` and `yn` are set.
|
|
@@ -116,6 +120,7 @@ module Vedeu
|
|
|
116
120
|
# geometry 'some_interface' do
|
|
117
121
|
# width 25
|
|
118
122
|
# # ...
|
|
123
|
+
# end
|
|
119
124
|
#
|
|
120
125
|
# @note
|
|
121
126
|
# This value will be ignored if by `x` and `xn` are set.
|
|
@@ -131,11 +136,12 @@ module Vedeu
|
|
|
131
136
|
# geometry 'some_interface' do
|
|
132
137
|
# x 7 # start on column 7.
|
|
133
138
|
# # ...
|
|
139
|
+
# end
|
|
134
140
|
#
|
|
135
141
|
# geometry 'some_interface' do
|
|
136
142
|
# x { use('other_interface').east } # start on column 8, if
|
|
137
143
|
# # ... # `other_interface` changes
|
|
138
|
-
#
|
|
144
|
+
# end # position, `some_interface` will
|
|
139
145
|
# # too.
|
|
140
146
|
#
|
|
141
147
|
# @param value [Fixnum]
|
|
@@ -153,11 +159,12 @@ module Vedeu
|
|
|
153
159
|
# geometry 'some_interface' do
|
|
154
160
|
# xn 37 # end at column 37.
|
|
155
161
|
# # ...
|
|
162
|
+
# end
|
|
156
163
|
#
|
|
157
164
|
# geometry 'some_interface' do
|
|
158
165
|
# xn { use('other_interface').right } # if `other_interface` changes
|
|
159
166
|
# # ... # position, `some_interface`
|
|
160
|
-
#
|
|
167
|
+
# end # will too.
|
|
161
168
|
#
|
|
162
169
|
# @note
|
|
163
170
|
# This value will override `width`.
|
|
@@ -177,11 +184,12 @@ module Vedeu
|
|
|
177
184
|
# geometry 'some_interface' do
|
|
178
185
|
# y 4
|
|
179
186
|
# # ...
|
|
187
|
+
# end
|
|
180
188
|
#
|
|
181
189
|
# geometry 'some_interface' do
|
|
182
190
|
# y { use('other_interface').north } # start on row/line 3, if
|
|
183
191
|
# # ... # `other_interface` changes
|
|
184
|
-
#
|
|
192
|
+
# end # position, `some_interface`
|
|
185
193
|
# # will too.
|
|
186
194
|
#
|
|
187
195
|
# @param value [Fixnum]
|
|
@@ -199,11 +207,12 @@ module Vedeu
|
|
|
199
207
|
# geometry 'some_interface' do
|
|
200
208
|
# yn 24 # end at row 24.
|
|
201
209
|
# # ...
|
|
210
|
+
# end
|
|
202
211
|
#
|
|
203
212
|
# geometry 'some_interface' do
|
|
204
213
|
# yn { use('other_interface').bottom } # if `other_interface` changes
|
|
205
214
|
# # ... # position, `some_interface`
|
|
206
|
-
#
|
|
215
|
+
# end # will too.
|
|
207
216
|
#
|
|
208
217
|
# @note
|
|
209
218
|
# This value will override `height`.
|
data/lib/vedeu/dsl/group.rb
CHANGED
|
@@ -18,12 +18,14 @@ module Vedeu
|
|
|
18
18
|
# Vedeu.group 'title_screen' do
|
|
19
19
|
# add 'welcome_interface'
|
|
20
20
|
# # ...
|
|
21
|
+
# end
|
|
21
22
|
#
|
|
22
23
|
# Vedeu.group 'main_screen' do
|
|
23
24
|
# add 'editor_interface'
|
|
24
25
|
# add 'status_interface'
|
|
25
26
|
# add 'command_interface'
|
|
26
27
|
# # ...
|
|
28
|
+
# end
|
|
27
29
|
#
|
|
28
30
|
# @note
|
|
29
31
|
# Creating a group with the same name as an existing group overwrites
|
data/lib/vedeu/dsl/interface.rb
CHANGED
|
@@ -70,14 +70,18 @@ module Vedeu
|
|
|
70
70
|
# cursor :show # => both of these are equivalent to line above
|
|
71
71
|
# cursor! #
|
|
72
72
|
# # ...
|
|
73
|
+
# end
|
|
73
74
|
#
|
|
75
|
+
# interface 'my_interface' do
|
|
74
76
|
# cursor false # => hide the cursor for this interface
|
|
75
77
|
# cursor nil # => as above
|
|
76
78
|
# # ...
|
|
79
|
+
# end
|
|
77
80
|
#
|
|
78
81
|
# view 'my_interface' do
|
|
79
|
-
# cursor true
|
|
80
|
-
# # ...
|
|
82
|
+
# cursor true # => Specify the visibility of the cursor when the view
|
|
83
|
+
# # ... # is rendered.
|
|
84
|
+
# end
|
|
81
85
|
#
|
|
82
86
|
# @return [Cursor]
|
|
83
87
|
def cursor(value = true)
|
|
@@ -103,6 +107,7 @@ module Vedeu
|
|
|
103
107
|
# interface 'my_interface' do
|
|
104
108
|
# delay 0.5 # interface will not update more often than every 500ms.
|
|
105
109
|
# # ...
|
|
110
|
+
# end
|
|
106
111
|
#
|
|
107
112
|
# @return [Fixnum|Float]
|
|
108
113
|
def delay(value)
|
|
@@ -112,7 +117,15 @@ module Vedeu
|
|
|
112
117
|
# Specify this interface as being in focus when the application starts.
|
|
113
118
|
#
|
|
114
119
|
# @note If multiple interfaces are defined, and this is included in each,
|
|
115
|
-
# then the last defined will be the interface in focus.
|
|
120
|
+
# then the last defined will be the interface in focus. However, this
|
|
121
|
+
# behaviour can be overridden:
|
|
122
|
+
#
|
|
123
|
+
# ```ruby
|
|
124
|
+
# Vedeu.focus_by_name 'some_interface'
|
|
125
|
+
# ```
|
|
126
|
+
#
|
|
127
|
+
# When the above is specified (outside of a `Vedeu.interface`
|
|
128
|
+
# declaration), the named interface will be focussed instead.
|
|
116
129
|
#
|
|
117
130
|
# @return [String] The name of the interface in focus.
|
|
118
131
|
def focus!
|
|
@@ -151,6 +164,7 @@ module Vedeu
|
|
|
151
164
|
# interface 'my_interface' do
|
|
152
165
|
# group 'main_screen'
|
|
153
166
|
# # ...
|
|
167
|
+
# end
|
|
154
168
|
#
|
|
155
169
|
# @param name [String] The name of the group to which this interface
|
|
156
170
|
# should belong.
|
|
@@ -204,6 +218,7 @@ module Vedeu
|
|
|
204
218
|
# interface do
|
|
205
219
|
# name 'my_interface'
|
|
206
220
|
# # ...
|
|
221
|
+
# end
|
|
207
222
|
#
|
|
208
223
|
# @return [String]
|
|
209
224
|
def name(value)
|
|
@@ -250,14 +265,18 @@ module Vedeu
|
|
|
250
265
|
# visible true # => show the interface
|
|
251
266
|
# show! # => as above
|
|
252
267
|
# # ...
|
|
268
|
+
# end
|
|
253
269
|
#
|
|
270
|
+
# interface 'my_interface' do
|
|
254
271
|
# visible false # => hide the interface
|
|
255
272
|
# hide! # => as above
|
|
256
273
|
# # ...
|
|
274
|
+
# end
|
|
257
275
|
#
|
|
258
276
|
# view 'my_interface' do
|
|
259
277
|
# visible false
|
|
260
278
|
# # ...
|
|
279
|
+
# end
|
|
261
280
|
#
|
|
262
281
|
# @return [void]
|
|
263
282
|
def visible(value = true)
|
|
@@ -279,6 +298,7 @@ module Vedeu
|
|
|
279
298
|
# interface 'my_interface' do
|
|
280
299
|
# zindex 3
|
|
281
300
|
# # ...
|
|
301
|
+
# end
|
|
282
302
|
#
|
|
283
303
|
# @param value [Fixnum]
|
|
284
304
|
# @return [void]
|
data/lib/vedeu/dsl/keymap.rb
CHANGED
|
@@ -21,6 +21,8 @@ module Vedeu
|
|
|
21
21
|
# Vedeu.interface 'my_interface' do
|
|
22
22
|
# keymap do
|
|
23
23
|
# # ...
|
|
24
|
+
# end
|
|
25
|
+
# end
|
|
24
26
|
#
|
|
25
27
|
# @param name [String] The name of the interface which this keymap relates
|
|
26
28
|
# to.
|
|
@@ -29,17 +31,23 @@ module Vedeu
|
|
|
29
31
|
# @example
|
|
30
32
|
# Vedeu.keymap 'my_interface' do
|
|
31
33
|
# # ...
|
|
34
|
+
# end
|
|
32
35
|
#
|
|
33
36
|
# Vedeu.keys 'my_interface' do
|
|
34
37
|
# # ...
|
|
38
|
+
# end
|
|
35
39
|
#
|
|
36
40
|
# Vedeu.interface 'my_interface' do
|
|
37
41
|
# keymap do
|
|
38
42
|
# # ...
|
|
43
|
+
# end
|
|
44
|
+
# end
|
|
39
45
|
#
|
|
40
46
|
# Vedeu.interface 'my_interface' do
|
|
41
47
|
# keys do
|
|
42
48
|
# # ...
|
|
49
|
+
# end
|
|
50
|
+
# end
|
|
43
51
|
#
|
|
44
52
|
# @raise [InvalidSyntax] The required block was not given.
|
|
45
53
|
# @return [Keymap]
|
|
@@ -76,9 +84,10 @@ module Vedeu
|
|
|
76
84
|
# key('h', :left) { Vedeu.trigger(:left) }
|
|
77
85
|
# key('j', :down) { Vedeu.trigger(:down) }
|
|
78
86
|
# key('p') do
|
|
79
|
-
# ...
|
|
87
|
+
# # ...
|
|
80
88
|
# end
|
|
81
|
-
# ...
|
|
89
|
+
# # ...
|
|
90
|
+
# end
|
|
82
91
|
#
|
|
83
92
|
# @raise [InvalidSyntax] When the required block is not given, the
|
|
84
93
|
# value_or_values parameter is undefined, or when processing the
|
|
@@ -109,10 +118,6 @@ module Vedeu
|
|
|
109
118
|
# available to all interfaces. Once a key has been defined in the
|
|
110
119
|
# '_global_' keymap, it cannot be used for a specific interface.
|
|
111
120
|
#
|
|
112
|
-
# @note Using the name of a keymap that already exists will overwrite that
|
|
113
|
-
# keymap. Do not use the name '_system_' as unexpected behaviour may
|
|
114
|
-
# occur.
|
|
115
|
-
#
|
|
116
121
|
# @param value [String]
|
|
117
122
|
# @return [String]
|
|
118
123
|
def name(value)
|
data/lib/vedeu/dsl/line.rb
CHANGED
|
@@ -58,6 +58,9 @@ module Vedeu
|
|
|
58
58
|
#
|
|
59
59
|
# line do
|
|
60
60
|
# # ...
|
|
61
|
+
# end
|
|
62
|
+
# end
|
|
63
|
+
# end
|
|
61
64
|
#
|
|
62
65
|
# @raise [InvalidSyntax] When no block or value is provided.
|
|
63
66
|
# @return [Vedeu::Lines]
|
|
@@ -90,9 +93,14 @@ module Vedeu
|
|
|
90
93
|
# line do
|
|
91
94
|
# streams do
|
|
92
95
|
# # ...
|
|
96
|
+
# end
|
|
93
97
|
#
|
|
94
98
|
# stream do
|
|
95
99
|
# # ...
|
|
100
|
+
# end
|
|
101
|
+
# end
|
|
102
|
+
# end
|
|
103
|
+
# end
|
|
96
104
|
#
|
|
97
105
|
# @raise [InvalidSyntax] The required block was not given.
|
|
98
106
|
# @return [Vedeu::Streams<Vedeu::Stream>]
|
data/lib/vedeu/dsl/menu.rb
CHANGED
|
@@ -28,6 +28,7 @@ module Vedeu
|
|
|
28
28
|
# menu 'my_menu' do
|
|
29
29
|
# item SomeClass.new
|
|
30
30
|
# item SomeClass.new
|
|
31
|
+
# end
|
|
31
32
|
#
|
|
32
33
|
# @return [Array]
|
|
33
34
|
def item(element)
|
|
@@ -65,7 +66,8 @@ module Vedeu
|
|
|
65
66
|
# @example
|
|
66
67
|
# menu do
|
|
67
68
|
# name 'my_menu'
|
|
68
|
-
# ...
|
|
69
|
+
# # ...
|
|
70
|
+
# end
|
|
69
71
|
#
|
|
70
72
|
# @return [String]
|
|
71
73
|
def name(value)
|
|
@@ -32,6 +32,9 @@ module Vedeu
|
|
|
32
32
|
# stream do
|
|
33
33
|
# background '#22ff00'
|
|
34
34
|
# # ...
|
|
35
|
+
# end
|
|
36
|
+
# end
|
|
37
|
+
# end
|
|
35
38
|
#
|
|
36
39
|
# @return [String]
|
|
37
40
|
def background(value = '')
|
|
@@ -68,6 +71,9 @@ module Vedeu
|
|
|
68
71
|
# stream do
|
|
69
72
|
# colour background: '#000000', foreground: '#ffffff'
|
|
70
73
|
# # ...
|
|
74
|
+
# end
|
|
75
|
+
# end
|
|
76
|
+
# end
|
|
71
77
|
#
|
|
72
78
|
# @return [Vedeu::Colour]
|
|
73
79
|
def colour(attributes = {})
|
|
@@ -81,15 +87,18 @@ module Vedeu
|
|
|
81
87
|
# @example
|
|
82
88
|
# interface 'my_interface' do
|
|
83
89
|
# style 'normal'
|
|
84
|
-
# ...
|
|
90
|
+
# # ...
|
|
91
|
+
# end
|
|
85
92
|
#
|
|
86
93
|
# lines do
|
|
87
94
|
# style ['bold', 'underline']
|
|
88
|
-
# ...
|
|
95
|
+
# # ...
|
|
96
|
+
# end
|
|
89
97
|
#
|
|
90
98
|
# stream do
|
|
91
99
|
# style 'blink'
|
|
92
|
-
# ...
|
|
100
|
+
# # ...
|
|
101
|
+
# end
|
|
93
102
|
#
|
|
94
103
|
# @return [Vedeu::Style]
|
|
95
104
|
def style(value)
|
data/lib/vedeu/dsl/text.rb
CHANGED
data/lib/vedeu/dsl/view.rb
CHANGED
|
@@ -23,10 +23,12 @@ module Vedeu
|
|
|
23
23
|
# @example
|
|
24
24
|
# Vedeu.interface 'my_interface' do
|
|
25
25
|
# # ...
|
|
26
|
+
# end
|
|
26
27
|
#
|
|
27
28
|
# Vedeu.interface do
|
|
28
29
|
# name 'interfaces_must_have_a_name'
|
|
29
30
|
# # ...
|
|
31
|
+
# end
|
|
30
32
|
#
|
|
31
33
|
# @raise [InvalidSyntax] The required block was not given.
|
|
32
34
|
# @return [Interface]
|
|
@@ -51,6 +53,8 @@ module Vedeu
|
|
|
51
53
|
# Vedeu.renders do
|
|
52
54
|
# view 'my_interface' do
|
|
53
55
|
# # ...
|
|
56
|
+
# end
|
|
57
|
+
# end
|
|
54
58
|
#
|
|
55
59
|
# @raise [InvalidSyntax] The required block was not given.
|
|
56
60
|
# @return [Array<Interface>]
|
|
@@ -81,7 +85,8 @@ module Vedeu
|
|
|
81
85
|
# view 'my_other_interface' do
|
|
82
86
|
# # ... some other attributes ...
|
|
83
87
|
# end
|
|
84
|
-
# ...
|
|
88
|
+
# # ...
|
|
89
|
+
# end
|
|
85
90
|
#
|
|
86
91
|
# @raise [InvalidSyntax] The required block was not given.
|
|
87
92
|
# @return [Array<Interface>]
|
data/lib/vedeu/events/event.rb
CHANGED
|
@@ -90,6 +90,8 @@ module Vedeu
|
|
|
90
90
|
|
|
91
91
|
# Unbind events from a named handler.
|
|
92
92
|
#
|
|
93
|
+
# Removes all events associated with the given name.
|
|
94
|
+
#
|
|
93
95
|
# @example
|
|
94
96
|
# Vedeu.unbind('some_event')
|
|
95
97
|
#
|
|
@@ -131,7 +133,7 @@ module Vedeu
|
|
|
131
133
|
new_collection = repository.find(name).add(self)
|
|
132
134
|
|
|
133
135
|
else
|
|
134
|
-
new_collection = Vedeu::
|
|
136
|
+
new_collection = Vedeu::EventCollection.new([self], nil, name)
|
|
135
137
|
|
|
136
138
|
end
|
|
137
139
|
|
|
@@ -20,6 +20,8 @@ module Vedeu
|
|
|
20
20
|
new(name).generate
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
# Returns a new instance of Vedeu::Generator::Application.
|
|
24
|
+
#
|
|
23
25
|
# @param name [String] The name of the application.
|
|
24
26
|
# @return [Vedeu::Generator::Application]
|
|
25
27
|
def initialize(name)
|
|
@@ -35,7 +37,6 @@ module Vedeu
|
|
|
35
37
|
copy_application_controller
|
|
36
38
|
copy_application_helper
|
|
37
39
|
copy_global_keymap
|
|
38
|
-
copy_system_keymap
|
|
39
40
|
copy_application_executable
|
|
40
41
|
make_application_executable
|
|
41
42
|
copy_configuration
|
|
@@ -99,12 +100,6 @@ module Vedeu
|
|
|
99
100
|
"#{name}/app/models/keymaps/_global_.rb")
|
|
100
101
|
end
|
|
101
102
|
|
|
102
|
-
# @return [void]
|
|
103
|
-
def copy_system_keymap
|
|
104
|
-
copy_file(source + '/app/models/keymaps/_system_.rb',
|
|
105
|
-
"#{name}/app/models/keymaps/_system_.rb")
|
|
106
|
-
end
|
|
107
|
-
|
|
108
103
|
# @return [Array<String>]
|
|
109
104
|
def directories
|
|
110
105
|
[
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
Vedeu.keymap('_global_') do
|
|
2
2
|
# see http://www.rubydoc.info/gems/vedeu/Vedeu/DSL/Keymap
|
|
3
|
+
|
|
4
|
+
key('q') { Vedeu.trigger(:_exit_) }
|
|
5
|
+
key(:esc) { Vedeu.trigger(:_mode_switch_) }
|
|
6
|
+
key(:shift_tab) { Vedeu.trigger(:_focus_previous_) }
|
|
7
|
+
key(:tab) { Vedeu.trigger(:_focus_next_) }
|
|
3
8
|
end
|
|
@@ -5,6 +5,12 @@ Vedeu.interface '<%= object.name %>' do
|
|
|
5
5
|
# style 'normal'
|
|
6
6
|
|
|
7
7
|
# Define visibility of border
|
|
8
|
+
#
|
|
9
|
+
# Uncomment one of these:
|
|
10
|
+
# enable!
|
|
11
|
+
# disable!
|
|
12
|
+
#
|
|
13
|
+
# Individually control each border:
|
|
8
14
|
# show_bottom!
|
|
9
15
|
# show_left!
|
|
10
16
|
# show_right!
|
|
@@ -24,8 +30,12 @@ Vedeu.interface '<%= object.name %>' do
|
|
|
24
30
|
|
|
25
31
|
# background
|
|
26
32
|
|
|
33
|
+
# colour
|
|
34
|
+
|
|
27
35
|
# cursor!
|
|
28
36
|
|
|
37
|
+
# focus!
|
|
38
|
+
|
|
29
39
|
# foreground
|
|
30
40
|
|
|
31
41
|
# geometry do
|
data/lib/vedeu/generator/view.rb
CHANGED
|
@@ -103,6 +103,12 @@ module Vedeu
|
|
|
103
103
|
"maximise:#{maximised}>"
|
|
104
104
|
end
|
|
105
105
|
|
|
106
|
+
# Will maximise the named interface geometry. This means it will occupy all
|
|
107
|
+
# of the available space on the terminal window.
|
|
108
|
+
#
|
|
109
|
+
# @example
|
|
110
|
+
# Vedeu.trigger(:_maximise_, name)
|
|
111
|
+
#
|
|
106
112
|
# @return [Vedeu::Geometry|NilClass]
|
|
107
113
|
def maximise
|
|
108
114
|
return self if maximised?
|
|
@@ -116,6 +122,14 @@ module Vedeu
|
|
|
116
122
|
work
|
|
117
123
|
end
|
|
118
124
|
|
|
125
|
+
# Will unmaximise the named interface geometry. Previously, if a geometry
|
|
126
|
+
# was maximised, then triggering the unmaximise event will return it to its
|
|
127
|
+
# usual defined size (terminal size permitting: if the terminal has been
|
|
128
|
+
# resized, then the new geometry size should adapt).
|
|
129
|
+
#
|
|
130
|
+
# @example
|
|
131
|
+
# Vedeu.trigger(:_unmaximise_, name)
|
|
132
|
+
#
|
|
119
133
|
# @return [Vedeu::Geometry|NilClass]
|
|
120
134
|
def unmaximise
|
|
121
135
|
return self unless maximised?
|