vedeu 0.8.4 → 0.8.5

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.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/TODO.md +4 -0
  3. data/docs/dsl.md +1 -11
  4. data/docs/dsl/by_method/geometry/align.md +1 -0
  5. data/docs/dsl/by_method/geometry/align_bottom.md +40 -0
  6. data/docs/dsl/by_method/geometry/align_centre.md +40 -0
  7. data/docs/dsl/by_method/geometry/align_left.md +40 -0
  8. data/docs/dsl/by_method/geometry/align_middle.md +40 -0
  9. data/docs/dsl/by_method/geometry/align_right.md +40 -0
  10. data/docs/dsl/by_method/geometry/align_top.md +40 -0
  11. data/docs/dsl/by_method/geometry/columns.md +1 -0
  12. data/docs/dsl/by_method/geometry/height.md +0 -0
  13. data/docs/dsl/by_method/geometry/horizontal_alignment.md +1 -0
  14. data/docs/dsl/by_method/geometry/rows.md +1 -0
  15. data/docs/dsl/by_method/geometry/vertical_alignment.md +1 -0
  16. data/docs/dsl/by_method/geometry/width.md +0 -0
  17. data/docs/dsl/by_method/geometry/x.md +1 -0
  18. data/docs/dsl/by_method/geometry/xn.md +1 -0
  19. data/docs/dsl/by_method/geometry/y.md +1 -0
  20. data/docs/dsl/by_method/geometry/yn.md +1 -0
  21. data/docs/dsl/by_method/render.md +5 -1
  22. data/docs/dsl/by_method/renders.md +31 -1
  23. data/docs/dsl/by_method/view.md +26 -0
  24. data/docs/dsl/by_method/view/stream.md +18 -0
  25. data/docs/dsl/by_method/views.md +32 -1
  26. data/docs/events/by_name/set_border_caption.md +2 -4
  27. data/docs/events/by_name/set_border_title.md +2 -4
  28. data/examples/views/empty_template.rb +0 -4
  29. data/examples/views/full_screen.rb +30 -5
  30. data/examples/views/misc_view.rb +464 -0
  31. data/examples/views/wordwrap.rb +72 -0
  32. data/examples/views/wordwrap.txt +8 -0
  33. data/integrations/dsl_app_021.rb +127 -0
  34. data/integrations/dsl_app_022.rb +133 -0
  35. data/integrations/expected/342_streams.out +1 -1
  36. data/integrations/expected/dsl_app_001.out +1 -1
  37. data/integrations/expected/dsl_app_002.out +1 -1
  38. data/integrations/expected/dsl_app_003.out +1 -1
  39. data/integrations/expected/dsl_app_004.out +1 -1
  40. data/integrations/expected/dsl_app_005.out +1 -1
  41. data/integrations/expected/dsl_app_006.out +1 -1
  42. data/integrations/expected/dsl_app_007.out +1 -1
  43. data/integrations/expected/dsl_app_008.out +1 -1
  44. data/integrations/expected/dsl_app_009.out +1 -1
  45. data/integrations/expected/dsl_app_010.out +1 -1
  46. data/integrations/expected/dsl_app_011.out +1 -1
  47. data/integrations/expected/dsl_app_012.out +1 -1
  48. data/integrations/expected/dsl_app_013.out +1 -1
  49. data/integrations/expected/dsl_app_014.out +1 -1
  50. data/integrations/expected/dsl_app_015.out +1 -1
  51. data/integrations/expected/dsl_app_016.out +1 -1
  52. data/integrations/expected/dsl_app_021.out +1 -0
  53. data/integrations/expected/dsl_app_022.out +1 -0
  54. data/integrations/support/test_interface_021.rb +7 -0
  55. data/integrations/support/test_interface_022.rb +15 -0
  56. data/lib/vedeu/all.rb +4 -2
  57. data/lib/vedeu/borders/border.rb +22 -6
  58. data/lib/vedeu/borders/repository.rb +4 -8
  59. data/lib/vedeu/buffers/buffer.rb +9 -6
  60. data/lib/vedeu/buffers/empty.rb +26 -23
  61. data/lib/vedeu/buffers/view.rb +44 -41
  62. data/lib/vedeu/cells/cursor.rb +0 -2
  63. data/lib/vedeu/cells/empty.rb +0 -1
  64. data/lib/vedeu/cells/escape.rb +0 -2
  65. data/lib/vedeu/coercers/alignment.rb +58 -8
  66. data/lib/vedeu/coercers/horizontal_alignment.rb +13 -9
  67. data/lib/vedeu/coercers/vertical_alignment.rb +13 -8
  68. data/lib/vedeu/common.rb +1 -1
  69. data/lib/vedeu/configuration/configuration.rb +41 -3
  70. data/lib/vedeu/cursors/coordinate.rb +1 -3
  71. data/lib/vedeu/cursors/cursor.rb +2 -6
  72. data/lib/vedeu/dsl/all.rb +1 -2
  73. data/lib/vedeu/dsl/border.rb +6 -6
  74. data/lib/vedeu/dsl/elements.rb +2 -2
  75. data/lib/vedeu/dsl/geometry.rb +7 -7
  76. data/lib/vedeu/dsl/{string → helpers}/align.rb +0 -0
  77. data/lib/vedeu/dsl/helpers/all.rb +17 -0
  78. data/lib/vedeu/dsl/{attributes.rb → helpers/attributes.rb} +0 -0
  79. data/lib/vedeu/dsl/{string → helpers}/text.rb +0 -0
  80. data/lib/vedeu/dsl/{string → helpers}/truncate.rb +0 -0
  81. data/lib/vedeu/dsl/{string → helpers}/wordwrap.rb +0 -0
  82. data/lib/vedeu/dsl/view.rb +11 -19
  83. data/lib/vedeu/dsl/views.rb +16 -106
  84. data/lib/vedeu/geometries/all.rb +0 -1
  85. data/lib/vedeu/geometries/area/area.rb +6 -12
  86. data/lib/vedeu/geometries/area/dimension.rb +21 -44
  87. data/lib/vedeu/geometries/dsl/all.rb +0 -1
  88. data/lib/vedeu/geometries/dsl/dsl.rb +22 -31
  89. data/lib/vedeu/geometries/geometry.rb +6 -0
  90. data/lib/vedeu/geometries/position.rb +6 -3
  91. data/lib/vedeu/geometries/repository.rb +1 -1
  92. data/lib/vedeu/input/mouse.rb +1 -0
  93. data/lib/vedeu/logging/log.rb +3 -6
  94. data/lib/vedeu/menus/dsl.rb +4 -5
  95. data/lib/vedeu/output/compressor.rb +11 -1
  96. data/lib/vedeu/output/viewport.rb +59 -59
  97. data/lib/vedeu/presentation/all.rb +1 -2
  98. data/lib/vedeu/presentation/colour.rb +75 -3
  99. data/lib/vedeu/{geometries/positionable.rb → presentation/position.rb} +4 -4
  100. data/lib/vedeu/presentation/presentation.rb +1 -3
  101. data/lib/vedeu/presentation/styles.rb +16 -1
  102. data/lib/vedeu/repositories/all.rb +0 -1
  103. data/lib/vedeu/sentence.rb +91 -0
  104. data/lib/vedeu/support/point.rb +72 -0
  105. data/lib/vedeu/terminal/terminal.rb +11 -53
  106. data/lib/vedeu/version.rb +1 -1
  107. data/lib/vedeu/views/composition.rb +11 -1
  108. data/lib/vedeu/views/default_attributes.rb +2 -0
  109. data/lib/vedeu/views/line.rb +16 -1
  110. data/lib/vedeu/views/stream.rb +16 -1
  111. data/lib/vedeu/views/view.rb +25 -17
  112. data/test/lib/vedeu/borders/border_test.rb +20 -2
  113. data/test/lib/vedeu/buffers/buffer_test.rb +15 -2
  114. data/test/lib/vedeu/buffers/empty_test.rb +51 -18
  115. data/test/lib/vedeu/buffers/view_test.rb +2 -2
  116. data/test/lib/vedeu/coercers/alignment_test.rb +32 -0
  117. data/test/lib/vedeu/coercers/horizontal_alignment_test.rb +16 -0
  118. data/test/lib/vedeu/coercers/vertical_alignment_test.rb +16 -0
  119. data/test/lib/vedeu/cursors/cursor_test.rb +4 -4
  120. data/test/lib/vedeu/cursors/dsl_test.rb +35 -21
  121. data/test/lib/vedeu/dsl/elements_test.rb +94 -2
  122. data/test/lib/vedeu/dsl/{string → helpers}/align_test.rb +0 -0
  123. data/test/lib/vedeu/dsl/{attributes_test.rb → helpers/attributes_test.rb} +0 -0
  124. data/test/lib/vedeu/dsl/{string → helpers}/text_test.rb +0 -0
  125. data/test/lib/vedeu/dsl/{string → helpers}/truncate_test.rb +0 -0
  126. data/test/lib/vedeu/dsl/{string → helpers}/wordwrap_test.rb +0 -0
  127. data/test/lib/vedeu/dsl/view_test.rb +22 -4
  128. data/test/lib/vedeu/dsl/views_test.rb +8 -5
  129. data/test/lib/vedeu/geometries/dsl/dsl_test.rb +2 -159
  130. data/test/lib/vedeu/geometries/position_test.rb +118 -60
  131. data/test/lib/vedeu/input/mouse_test.rb +1 -6
  132. data/test/lib/vedeu/logging/log_test.rb +14 -3
  133. data/test/lib/vedeu/presentation/colour_test.rb +77 -0
  134. data/test/lib/vedeu/{geometries/positionable_test.rb → presentation/position_test.rb} +4 -4
  135. data/test/lib/vedeu/sentence_test.rb +49 -0
  136. data/test/lib/vedeu/support/point_test.rb +139 -0
  137. data/test/lib/vedeu/terminal/terminal_test.rb +3 -44
  138. data/test/lib/vedeu/views/composition_test.rb +24 -4
  139. data/test/lib/vedeu/views/default_attributes_test.rb +10 -2
  140. data/test/lib/vedeu/views/view_test.rb +8 -15
  141. data/test/support/examples/material_colours_app.rb +0 -6
  142. data/vedeu.gemspec +1 -1
  143. metadata +58 -38
  144. data/examples/views/lines_line_stream.rb +0 -95
  145. data/examples/views/lines_line_streams.rb +0 -75
  146. data/examples/views/lines_line_streams_stream.rb +0 -78
  147. data/examples/views/lines_line_streams_stream_stream.rb +0 -50
  148. data/examples/views/lines_streams.rb +0 -93
  149. data/lib/vedeu/dsl/string/all.rb +0 -16
  150. data/lib/vedeu/geometries/dsl/validator.rb +0 -62
  151. data/lib/vedeu/presentation/background.rb +0 -54
  152. data/lib/vedeu/presentation/foreground.rb +0 -54
  153. data/lib/vedeu/repositories/parent.rb +0 -34
  154. data/test/lib/vedeu/geometries/dsl/validator_test.rb +0 -85
  155. data/test/lib/vedeu/presentation/background_test.rb +0 -74
  156. data/test/lib/vedeu/presentation/foreground_test.rb +0 -75
@@ -7,7 +7,5 @@ value given.
7
7
  - The caption must be a string or nil.
8
8
  - If the caption is an empty string or nil, then the caption will not
9
9
  be shown, and an existing caption will be removed.
10
- - If the name is nil, then the view currently focussed will be used.
11
- - When triggering this event, the border will automatically be
12
- refreshed, unless the view does not have a border, or the border is
13
- not enabled, or the bottom border is set not to be shown.
10
+ - If the name is nil, or references a border that does not exist, then
11
+ the caption will be silently discarded.
@@ -7,7 +7,5 @@ value given.
7
7
  - The title must be a string or nil.
8
8
  - If the title is an empty string or nil, then the title will not be
9
9
  shown, and an existing title will be removed.
10
- - If the name is nil, then the view currently focussed will be used.
11
- - When triggering this event, the border will automatically be
12
- refreshed, unless the view does not have a border, or the border is
13
- not enabled, or the top border is set not to be shown.
10
+ - If the name is nil, or references a border that does not exist, then
11
+ the caption will be silently discarded.
@@ -38,10 +38,6 @@ class DSLApp
38
38
  end
39
39
  end
40
40
 
41
- Vedeu.keymap '_global_' do
42
- key('q') { Vedeu.exit }
43
- end
44
-
45
41
  Vedeu.render do
46
42
  view(:test1_interface) do
47
43
  lines do
@@ -22,8 +22,6 @@ class DSLApp
22
22
  debug!
23
23
  run_once!
24
24
  standalone!
25
- width 100
26
- height 50
27
25
  end
28
26
 
29
27
  Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
@@ -47,10 +45,27 @@ class DSLApp
47
45
  Vedeu.render do
48
46
  view(:test1_interface) do
49
47
  line do
50
- stream '--------1---------2---------3---------4---------5'
51
- stream '---------6---------7---------8---------9---------0'
48
+ stream '--------1---------2---------3---------4---------5', {
49
+ foreground: '#ff0000'
50
+ }
51
+ stream '---------6---------7---------8---------9---------', {
52
+ foreground: '#ff0000'
53
+ }
54
+ stream '0', { foreground: '#ffff00' }
55
+ stream '---------1---------2---------3---------4---------5', {
56
+ foreground: '#00ff00'
57
+ }
58
+ stream '---------6---------7---------8---------9---------', {
59
+ foreground: '#00ff00'
60
+ }
61
+ stream '0', { foreground: '#ffff00' }
62
+ stream '-2-4-6-8-1-2-4-----2---------3---------4---------5', {
63
+ foreground: '#0077ff'
64
+ }
65
+ end
66
+ line do
67
+ stream '- '
52
68
  end
53
- line '-'
54
69
  line '-'
55
70
  line '-'
56
71
  line '-'
@@ -98,6 +113,16 @@ class DSLApp
98
113
  line '-'
99
114
  line '-'
100
115
  line '50'
116
+ line '-'
117
+ line '-'
118
+ line '-'
119
+ line '-'
120
+ line '-'
121
+ line '-'
122
+ line '-'
123
+ line '-'
124
+ line '-'
125
+ line '60'
101
126
  end
102
127
  end
103
128
 
@@ -0,0 +1,464 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'vedeu'
5
+
6
+ class DSLApp
7
+
8
+ Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
9
+
10
+ Vedeu.configure do
11
+ log '/tmp/vedeu_views_dsl.log'
12
+ debug!
13
+ run_once!
14
+ standalone!
15
+ renderers(Vedeu::Renderers::Terminal.new,
16
+ Vedeu::Renderers::File.new(filename: '/tmp/misc_view.out'))
17
+ height 40
18
+ end
19
+
20
+ Vedeu.border 'no_bottom' do
21
+ background '#000000'
22
+ foreground '#ffffff'
23
+ show_bottom false
24
+ end
25
+ Vedeu.border 'no_left' do
26
+ background '#000000'
27
+ foreground '#ffffff'
28
+ show_left false
29
+ end
30
+ Vedeu.border 'no_right' do
31
+ background '#000000'
32
+ foreground '#ffffff'
33
+ show_right false
34
+ end
35
+ Vedeu.border 'no_top' do
36
+ background '#000000'
37
+ foreground '#ffffff'
38
+ show_top false
39
+ end
40
+
41
+ Vedeu.interface 'horiz_ruler' do
42
+ foreground '#ffffff'
43
+ geometry do
44
+ x 1
45
+ width 80
46
+ y 1
47
+ height 1
48
+ end
49
+ end
50
+ Vedeu.interface 'vert_ruler' do
51
+ foreground '#ffffff'
52
+ geometry do
53
+ x 1
54
+ width 1
55
+ y 2
56
+ height 48
57
+ end
58
+ end
59
+
60
+ Vedeu.interface 'main_interface' do
61
+ border 'main_interface' do
62
+ colour foreground: '#ffffff', background: :default
63
+ title 'Rainbow!'
64
+ caption('Unicorns!')
65
+ end
66
+ colour foreground: '#ffffff', background: :default
67
+ cursor!
68
+ geometry 'main_interface' do
69
+ x 3
70
+ xn 24
71
+ y 4
72
+ yn 15
73
+ end
74
+ group :my_group
75
+ zindex 2
76
+ end
77
+
78
+ Vedeu.interface 'other_interface' do
79
+ border 'other_interface' do
80
+ colour(foreground: '#ffffff', background: :default)
81
+ title('Wow!')
82
+ caption('Shiny!')
83
+ horizontal('-')
84
+ top_right('+')
85
+ top_left('+')
86
+ bottom_right('+')
87
+ bottom_left('+')
88
+ end
89
+ colour(foreground: '#ffffff', background: :default)
90
+ cursor!
91
+ geometry do
92
+ x(27)
93
+ xn(47)
94
+ y(5)
95
+ yn(15)
96
+ end
97
+ zindex(1)
98
+ end
99
+
100
+ Vedeu.interface 'default_border' do
101
+ geometry do
102
+ x 50
103
+ y 4
104
+ height 4
105
+ width 10
106
+ end
107
+ colour foreground: '#ffffff', background: '#f44336'
108
+ end
109
+
110
+ Vedeu.interface 'border_off' do
111
+ geometry do
112
+ x 62
113
+ y 4
114
+ height 4
115
+ width 10
116
+ end
117
+ colour foreground: '#ffffff', background: '#e91e63'
118
+ end
119
+
120
+ Vedeu.interface 'no_top' do
121
+ geometry do
122
+ x 50
123
+ y 9
124
+ height 4
125
+ width 10
126
+ end
127
+ colour foreground: '#ffffff', background: '#9c27b0'
128
+ end
129
+
130
+ Vedeu.interface 'no_bottom' do
131
+ geometry do
132
+ x 62
133
+ y 9
134
+ height 4
135
+ width 10
136
+ end
137
+ colour foreground: '#ffffff', background: '#673ab7'
138
+ end
139
+
140
+ Vedeu.interface 'no_left' do
141
+ geometry do
142
+ x 50
143
+ y 14
144
+ height 4
145
+ width 10
146
+ end
147
+ colour foreground: '#ffffff', background: '#3f51b5'
148
+ end
149
+
150
+ Vedeu.interface 'no_right' do
151
+ geometry do
152
+ x 62
153
+ y 14
154
+ height 4
155
+ width 10
156
+ end
157
+ colour foreground: '#ffffff', background: '#2196f3'
158
+ end
159
+
160
+ Vedeu.interface 'custom_corners' do
161
+ geometry do
162
+ x 3
163
+ y 17
164
+ height 4
165
+ width 10
166
+ end
167
+ colour foreground: '#ffffff', background: '#03a9f4'
168
+ end
169
+
170
+ Vedeu.interface 'custom_sides' do
171
+ geometry do
172
+ x 15
173
+ y 17
174
+ height 4
175
+ width 10
176
+ end
177
+ colour foreground: '#000000', background: '#00bcd4'
178
+ end
179
+
180
+ Vedeu.interface 'only_top' do
181
+ colour foreground: '#ffffff', background: '#009688'
182
+ border do
183
+ foreground '#ffffff'
184
+ show_right false
185
+ show_bottom false
186
+ show_left false
187
+ end
188
+ geometry do
189
+ x 27
190
+ y 17
191
+ height 4
192
+ width 10
193
+ end
194
+ end
195
+
196
+ Vedeu.interface 'only_bottom' do
197
+ colour foreground: '#000000', background: '#8bc34a'
198
+ border do
199
+ background '#00ff00'
200
+ foreground '#000000'
201
+ show_top false
202
+ show_right false
203
+ show_left false
204
+ end
205
+ geometry do
206
+ x 39
207
+ y 17
208
+ height 4
209
+ width 10
210
+ end
211
+ end
212
+
213
+ Vedeu.interface 'only_left' do
214
+ colour foreground: '#000000', background: '#cddc39'
215
+ border do
216
+ background '#cd39cd'
217
+ foreground '#000000'
218
+ show_top false
219
+ show_bottom false
220
+ show_right false
221
+ end
222
+ geometry do
223
+ x 3
224
+ y 23
225
+ height 4
226
+ width 10
227
+ end
228
+ end
229
+
230
+ Vedeu.interface 'only_right' do
231
+ colour foreground: '#000000', background: '#ffeb3b'
232
+ border do
233
+ background '#cd39cd'
234
+ foreground '#000000'
235
+ show_top false
236
+ show_bottom false
237
+ show_left false
238
+ end
239
+ geometry do
240
+ x 27
241
+ y 23
242
+ height 4
243
+ width 10
244
+ end
245
+ end
246
+
247
+ Vedeu.interface 'custom_colour' do
248
+ geometry do
249
+ x 15
250
+ y 23
251
+ height 4
252
+ width 10
253
+ end
254
+ colour foreground: '#000000', background: '#ffc107'
255
+ end
256
+
257
+ Vedeu.interface 'negative' do
258
+ geometry do
259
+ x 62
260
+ y 23
261
+ height 4
262
+ width 10
263
+ end
264
+ colour foreground: '#000000', background: '#ff9800'
265
+ style 'normal'
266
+ end
267
+
268
+ Vedeu.renders do
269
+ view 'horiz_ruler' do
270
+ background '#0046a3'
271
+ line do
272
+ stream '1--------1'
273
+ stream '---------2'
274
+ stream '---------3'
275
+ stream '---------4'
276
+ stream '---------5'
277
+ stream '---------6'
278
+ stream '---------7'
279
+ stream '---------8'
280
+ stream '---------9'
281
+ end
282
+ end
283
+ view 'vert_ruler' do
284
+ background '#0046a3'
285
+ line '-'; line '-'; line '-'; line '-';
286
+ line '-'; line '-'; line '-'; line '-'; line '1';
287
+ line '-'; line '-'; line '-'; line '-'; line '-';
288
+ line '-'; line '-'; line '-'; line '-'; line '2';
289
+ line '-'; line '-'; line '-'; line '-'; line '-';
290
+ line '-'; line '-'; line '-'; line '-'; line '3';
291
+ line '-'; line '-'; line '-'; line '-'; line '-';
292
+ line '-'; line '-'; line '-'; line '-'; line '4';
293
+ line '-'; line '-'; line '-'; line '-'; line '-';
294
+ end
295
+
296
+ view 'main_interface' do
297
+ line { left 'Left', background: '#f44336' }
298
+ line { centre 'Centre', background: '#e91e63' }
299
+ line { center 'Center', background: '#9c27b0' }
300
+ line { right 'Right', background: '#673ab7' }
301
+ line { centre 'Indigo', width: 20, background: '#3f51b5' }
302
+ line { centre 'Blue', width: 20, background: '#2196f3' }
303
+ line { centre 'Light Blue', width: 20, background: '#03a9f4' }
304
+ line { centre 'Cyan', width: 20, background: '#00bcd4' }
305
+ line { centre 'Teal', width: 20, background: '#009688' }
306
+ line { centre 'Green', width: 20, background: '#4caf50' }
307
+ line { centre 'Light Green', width: 20, background: '#8bc34a' }
308
+ line { centre 'Lime', width: 20, background: '#cddc39' }
309
+ line { centre 'Yellow', width: 20, background: '#ffeb3b' }
310
+ line { centre 'Amber', width: 20, background: '#ffc107' }
311
+ line { centre 'Orange', width: 20, background: '#ff9800' }
312
+ line { centre 'Deep Orange', width: 20, background: '#ff5722' }
313
+ line { centre 'Brown', width: 20, background: '#795548' }
314
+ line { centre 'Grey', width: 20, background: '#9e9e9e' }
315
+ line { centre 'Blue Grey', width: 20, background: '#607d8b' }
316
+ end
317
+
318
+ view 'other_interface' do
319
+ line { centre 'Blue Grey', width: 20, background: '#607d8b' }
320
+ line { centre 'Grey', width: 20, background: '#9e9e9e' }
321
+ line { centre 'Brown', width: 20, background: '#795548' }
322
+ line { centre 'Deep Orange', width: 20, background: '#ff5722' }
323
+ line { centre 'Orange', width: 20, background: '#ff9800' }
324
+ line { centre 'Amber', width: 20, background: '#ffc107' }
325
+ line { centre 'Yellow', width: 20, background: '#ffeb3b' }
326
+ line { centre 'Lime', width: 20, background: '#cddc39' }
327
+ line { centre 'Light Green', width: 20, background: '#8bc34a' }
328
+ line { centre 'Green', width: 20, background: '#4caf50' }
329
+ line { centre 'Teal', width: 20, background: '#009688' }
330
+ line { centre 'Cyan', width: 20, background: '#00bcd4' }
331
+ line { centre 'Light Blue', width: 20, background: '#03a9f4' }
332
+ line { centre 'Blue', width: 20, background: '#2196f3' }
333
+ line { centre 'Indigo', width: 20, background: '#3f51b5' }
334
+ line { centre 'Deep Purple', width: 20, background: '#673ab7' }
335
+ line { centre 'Purple', width: 20, background: '#9c27b0' }
336
+ line { centre 'Pink', width: 20, background: '#e91e63' }
337
+ line { centre 'Red', width: 20, background: '#f44336' }
338
+ end
339
+
340
+ view('default_border') do
341
+ border do
342
+ foreground '#ffffff'
343
+ end
344
+ lines do
345
+ line 'default'
346
+ line '4, 10'
347
+ end
348
+ end
349
+ view('border_off') do
350
+ lines do
351
+ line 'border'
352
+ line 'off'
353
+ line '4, 10'
354
+ end
355
+ end
356
+ view('no_top') do
357
+ lines do
358
+ line 'no top'
359
+ line '4, 10'
360
+ end
361
+ end
362
+ view('no_bottom') do
363
+ lines do
364
+ line 'no'
365
+ line 'bottom'
366
+ line '4, 10'
367
+ end
368
+ end
369
+ view('no_left') do
370
+ lines do
371
+ line 'no left'
372
+ line '4, 10'
373
+ end
374
+ end
375
+ view('no_right') do
376
+ lines do
377
+ line 'no right'
378
+ line '4, 10'
379
+ end
380
+ end
381
+ view('custom_corners') do
382
+ border do
383
+ foreground '#000000'
384
+ top_left 'A', colour: { background: '#ff5722' }
385
+ top_right 'B', colour: { background: '#0000ff', foreground: '#ffffff' }
386
+ bottom_left 'C', colour: { background: '#ffff00', foreground: '#000000' }
387
+ bottom_right 'D', colour: { background: '#ffffff' }
388
+ end
389
+ lines do
390
+ line 'custom'
391
+ line 'corners'
392
+ end
393
+ end
394
+ view('custom_sides') do
395
+ border do
396
+ background '#ff5722'
397
+
398
+ top_horizontal '*', colour: { background: '#000000', foreground: '#ffffff' }
399
+ left_vertical '$', colour: { background: '#0000ff', foreground: '#ffffff' }
400
+ right_vertical '%', colour: { background: '#ffff00', foreground: '#000000' }
401
+ bottom_horizontal '&', colour: { background: '#ffffff' }
402
+ end
403
+ lines do
404
+ line 'custom'
405
+ line 'sides'
406
+ end
407
+ end
408
+ view('only_top') do
409
+ lines do
410
+ line 'only'
411
+ line 'top'
412
+ line '4, 10'
413
+ end
414
+ end
415
+ view('only_bottom') do
416
+ lines do
417
+ line 'only'
418
+ line 'bottom'
419
+ line '4, 10'
420
+ end
421
+ end
422
+ view('only_left') do
423
+ lines do
424
+ line 'only'
425
+ line 'left'
426
+ line '4, 10'
427
+ end
428
+ end
429
+ view('only_right') do
430
+ lines do
431
+ line 'only'
432
+ line 'right'
433
+ line '4, 10'
434
+ end
435
+ end
436
+ view('custom_colour') do
437
+ border do
438
+ colour foreground: '#ff5500', background: '#0000ff'
439
+ end
440
+ lines do
441
+ line 'custom'
442
+ line 'color'
443
+ end
444
+ end
445
+ view('negative') do
446
+ border do
447
+ style 'negative'
448
+ end
449
+ lines do
450
+ line 'custom'
451
+ line 'style'
452
+ end
453
+ end
454
+ end
455
+
456
+ Vedeu.focus_by_name 'main_interface'
457
+
458
+ def self.start(argv = ARGV)
459
+ Vedeu::Launcher.execute!(argv)
460
+ end
461
+
462
+ end # DSLApp
463
+
464
+ DSLApp.start(ARGV)