vedeu 0.4.40 → 0.4.41
Sign up to get free protection for your applications and to get access to all the features.
- 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?
|