vedeu 0.3.4 → 0.3.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 (164) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/Rakefile +6 -0
  4. data/bin/vedeu_drb_client +8 -3
  5. data/bin/vedeu_drb_server +113 -0
  6. data/bin/vedeu_test +1 -1
  7. data/docs/events.md +0 -127
  8. data/examples/borders_app.rb +17 -7
  9. data/examples/configuration_app.rb +1 -1
  10. data/examples/cursor_app.rb +4 -2
  11. data/examples/drb_app.rb +113 -0
  12. data/examples/focus_app.rb +1 -1
  13. data/examples/geometry_app.rb +1 -1
  14. data/examples/hello_world.rb +1 -1
  15. data/examples/lines_app.rb +1 -1
  16. data/features/start_stop.feature +1 -1
  17. data/inch.yml +5 -0
  18. data/lib/vedeu/all.rb +2 -0
  19. data/lib/vedeu/api.rb +1 -0
  20. data/lib/vedeu/application.rb +17 -36
  21. data/lib/vedeu/bindings.rb +134 -27
  22. data/lib/vedeu/buffers/display_buffer.rb +1 -4
  23. data/lib/vedeu/configuration/api.rb +15 -14
  24. data/lib/vedeu/configuration/cli.rb +17 -16
  25. data/lib/vedeu/configuration/configuration.rb +3 -1
  26. data/lib/vedeu/cursor/cursor.rb +6 -8
  27. data/lib/vedeu/cursor/move_cursor.rb +1 -0
  28. data/lib/vedeu/cursor/toggle_cursor.rb +1 -0
  29. data/lib/vedeu/debug.rb +23 -0
  30. data/lib/vedeu/distributed/all.rb +1 -1
  31. data/lib/vedeu/distributed/client.rb +55 -13
  32. data/lib/vedeu/distributed/server.rb +207 -0
  33. data/lib/vedeu/distributed/subprocess.rb +22 -21
  34. data/lib/vedeu/distributed/templates/default_application.vedeu +3 -1
  35. data/lib/vedeu/distributed/test_application.rb +2 -1
  36. data/lib/vedeu/distributed/uri.rb +1 -0
  37. data/lib/vedeu/dsl/all.rb +4 -2
  38. data/lib/vedeu/dsl/components/border.rb +11 -10
  39. data/lib/vedeu/dsl/components/geometry.rb +1 -0
  40. data/lib/vedeu/dsl/components/keymap.rb +1 -0
  41. data/lib/vedeu/dsl/components/menu.rb +1 -0
  42. data/lib/vedeu/dsl/interface.rb +1 -0
  43. data/lib/vedeu/dsl/line.rb +3 -1
  44. data/lib/vedeu/dsl/shared/colour.rb +1 -0
  45. data/lib/vedeu/dsl/shared/style.rb +1 -0
  46. data/lib/vedeu/dsl/shared/text.rb +2 -0
  47. data/lib/vedeu/dsl/shared/use.rb +3 -0
  48. data/lib/vedeu/dsl/stream.rb +3 -1
  49. data/lib/vedeu/dsl/view.rb +1 -0
  50. data/lib/vedeu/events/event.rb +9 -6
  51. data/lib/vedeu/events/trigger.rb +18 -7
  52. data/lib/vedeu/exceptions.rb +4 -1
  53. data/lib/vedeu/input/input.rb +1 -0
  54. data/lib/vedeu/input/key.rb +0 -1
  55. data/lib/vedeu/input/keymap.rb +5 -3
  56. data/lib/vedeu/input/keys.rb +1 -0
  57. data/lib/vedeu/input/mapper.rb +1 -0
  58. data/lib/vedeu/launcher.rb +35 -12
  59. data/lib/vedeu/main_loop.rb +53 -0
  60. data/lib/vedeu/models/collection.rb +11 -3
  61. data/lib/vedeu/models/focus.rb +3 -3
  62. data/lib/vedeu/models/geometry.rb +8 -16
  63. data/lib/vedeu/models/group.rb +1 -0
  64. data/lib/vedeu/models/menu.rb +2 -1
  65. data/lib/vedeu/models/model.rb +7 -1
  66. data/lib/vedeu/models/view/char.rb +52 -44
  67. data/lib/vedeu/models/view/chars.rb +1 -0
  68. data/lib/vedeu/models/view/composition.rb +2 -1
  69. data/lib/vedeu/models/view/interface.rb +5 -3
  70. data/lib/vedeu/models/view/interfaces.rb +1 -0
  71. data/lib/vedeu/models/view/line.rb +2 -1
  72. data/lib/vedeu/models/view/stream.rb +2 -1
  73. data/lib/vedeu/models/view/streams.rb +1 -0
  74. data/lib/vedeu/output/all.rb +4 -0
  75. data/lib/vedeu/output/border.rb +75 -206
  76. data/lib/vedeu/output/compositor.rb +1 -0
  77. data/lib/vedeu/output/html_char.rb +119 -0
  78. data/lib/vedeu/output/html_renderer.rb +89 -0
  79. data/lib/vedeu/output/output.rb +48 -44
  80. data/lib/vedeu/output/position_index.rb +12 -1
  81. data/lib/vedeu/output/renderer.rb +28 -0
  82. data/lib/vedeu/output/viewport.rb +14 -14
  83. data/lib/vedeu/output/virtual_buffer.rb +56 -0
  84. data/lib/vedeu/output/virtual_terminal.rb +42 -34
  85. data/lib/vedeu/output/wordwrap.rb +3 -0
  86. data/lib/vedeu/output/writer.rb +13 -1
  87. data/lib/vedeu/presentation/background.rb +1 -0
  88. data/lib/vedeu/presentation/colour.rb +8 -7
  89. data/lib/vedeu/presentation/foreground.rb +1 -0
  90. data/lib/vedeu/presentation/presentation.rb +43 -7
  91. data/lib/vedeu/presentation/translator.rb +12 -0
  92. data/lib/vedeu/repositories/repository.rb +8 -8
  93. data/lib/vedeu/support/bounding_area.rb +2 -0
  94. data/lib/vedeu/support/coercions.rb +2 -1
  95. data/lib/vedeu/support/common.rb +1 -0
  96. data/lib/vedeu/support/console.rb +17 -23
  97. data/lib/vedeu/support/content_geometry.rb +2 -0
  98. data/lib/vedeu/support/coordinate.rb +1 -0
  99. data/lib/vedeu/support/esc.rb +58 -29
  100. data/lib/vedeu/support/grid.rb +1 -0
  101. data/lib/vedeu/support/limit.rb +9 -0
  102. data/lib/vedeu/support/log.rb +31 -9
  103. data/lib/vedeu/support/node.rb +8 -18
  104. data/lib/vedeu/support/position.rb +13 -34
  105. data/lib/vedeu/support/position_validator.rb +3 -0
  106. data/lib/vedeu/support/read.rb +1 -0
  107. data/lib/vedeu/support/refresh.rb +3 -2
  108. data/lib/vedeu/support/terminal.rb +11 -5
  109. data/lib/vedeu/support/trace.rb +16 -1
  110. data/lib/vedeu/support/visible.rb +2 -0
  111. data/lib/vedeu/support/write.rb +1 -0
  112. data/lib/vedeu/traps.rb +1 -0
  113. data/lib/vedeu.rb +2 -0
  114. data/test/integration/distributed_test.rb +10 -8
  115. data/test/lib/vedeu/api_test.rb +3 -7
  116. data/test/lib/vedeu/application_test.rb +2 -5
  117. data/test/lib/vedeu/configuration/api_test.rb +12 -0
  118. data/test/lib/vedeu/cursor/cursor_test.rb +2 -0
  119. data/test/lib/vedeu/distributed/client_test.rb +17 -7
  120. data/test/lib/vedeu/distributed/server_test.rb +56 -0
  121. data/test/lib/vedeu/distributed/test_application_test.rb +7 -3
  122. data/test/lib/vedeu/dsl/components/border_test.rb +10 -2
  123. data/test/lib/vedeu/dsl/interface_test.rb +6 -0
  124. data/test/lib/vedeu/dsl/line_test.rb +19 -0
  125. data/test/lib/vedeu/dsl/shared/colour_test.rb +4 -26
  126. data/test/lib/vedeu/dsl/shared/text_test.rb +8 -1
  127. data/test/lib/vedeu/dsl/stream_test.rb +13 -1
  128. data/test/lib/vedeu/input/input_test.rb +1 -1
  129. data/test/lib/vedeu/input/key_test.rb +3 -16
  130. data/test/lib/vedeu/launcher_test.rb +11 -1
  131. data/test/lib/vedeu/main_loop_test.rb +41 -0
  132. data/test/lib/vedeu/models/geometry_test.rb +15 -34
  133. data/test/lib/vedeu/models/view/char_test.rb +44 -45
  134. data/test/lib/vedeu/models/view/interface_test.rb +6 -0
  135. data/test/lib/vedeu/models/view/line_test.rb +1 -1
  136. data/test/lib/vedeu/models/view/stream_test.rb +1 -1
  137. data/test/lib/vedeu/output/border_test.rb +6 -5
  138. data/test/lib/vedeu/output/compositor_test.rb +2 -20
  139. data/test/lib/vedeu/output/html_char_test.rb +85 -0
  140. data/test/lib/vedeu/output/html_renderer_test.rb +37 -0
  141. data/test/lib/vedeu/output/position_index_test.rb +2 -10
  142. data/test/lib/vedeu/output/renderer_test.rb +24 -0
  143. data/test/lib/vedeu/output/virtual_buffer_test.rb +53 -0
  144. data/test/lib/vedeu/output/virtual_terminal_test.rb +32 -2
  145. data/test/lib/vedeu/presentation/background_test.rb +41 -1
  146. data/test/lib/vedeu/presentation/colour_test.rb +10 -6
  147. data/test/lib/vedeu/presentation/foreground_test.rb +46 -6
  148. data/test/lib/vedeu/presentation/presentation_test.rb +44 -1
  149. data/test/lib/vedeu/presentation/translator_test.rb +34 -0
  150. data/test/lib/vedeu/repositories/repository_test.rb +1 -1
  151. data/test/lib/vedeu/support/bounding_area_test.rb +4 -12
  152. data/test/lib/vedeu/support/console_test.rb +9 -50
  153. data/test/lib/vedeu/support/esc_test.rb +7 -7
  154. data/test/lib/vedeu/support/position_test.rb +42 -0
  155. data/test/lib/vedeu/support/terminal_test.rb +5 -20
  156. data/test/lib/vedeu/support/write_test.rb +42 -18
  157. data/test/support/helpers/all.rb +0 -1
  158. data/test/support/helpers/repository_test_module.rb +1 -0
  159. data/test/test_helper.rb +5 -2
  160. data/vedeu.gemspec +7 -5
  161. metadata +60 -14
  162. data/lib/vedeu/distributed/application.rb +0 -91
  163. data/test/lib/vedeu/distributed/application_test.rb +0 -24
  164. data/test/support/helpers/presentation.rb +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fccb60d2e33924a76f711a5ffccd643c7436a4fe
4
- data.tar.gz: 03c59bf2a8d7c6265aa164807f9b72af46c7d055
3
+ metadata.gz: c55cc711fc37aa01aeaba23c8ababc6c983801c4
4
+ data.tar.gz: e86bdcf954386935f4710649322622de5afadb3e
5
5
  SHA512:
6
- metadata.gz: 48627364195755fcd4390963bf27188ca813d62b2e1cf14d4c20b824ea087e36669942fbeedcf40df8857171a468e71505af437a0bfb93b0656c9a761a170532
7
- data.tar.gz: 52c5edb46c2a7e72e11084670829ae1e913a3fb4f96245463a682b6047f9cc45be5a597142a96327e1698a42f75357d6115fbdd7062acf9cadbc8fb16d6646b7
6
+ metadata.gz: 78f9a8eb02a9b61bdb6f9c0943f016bce77f4747d327d93ea62fc56b024a457af78b4268095ef3141a7085fb500de741ba0dee15c114ccb5715bf819444cc0ec
7
+ data.tar.gz: cd92b729793a54269549769f3ca235e465297cd6eedf92e752fb1eb72e9a12d1991b55a540466c455684b1fe986e24ab840e28c57b34c92acacaefbde0562b32
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # Vedeu
6
6
 
7
- Vedeu is my attempt at creating a terminal based application framework without the need for Ncurses. I've tried to make Vedeu as simple and flexible as possible.
7
+ Vedeu (vee-dee-you; aka VDU) is my attempt at creating a terminal based application framework without the need for Ncurses. I've tried to make Vedeu as simple and flexible as possible.
8
8
 
9
9
 
10
10
  ## Requirements
data/Rakefile CHANGED
@@ -2,6 +2,7 @@ require 'bundler/gem_tasks'
2
2
  require 'rake/testtask'
3
3
  require 'cucumber'
4
4
  require 'cucumber/rake/task'
5
+ require 'inch/rake'
5
6
 
6
7
  # Don't run cukes for the time being.
7
8
  # Cucumber::Rake::Task.new(:cucumber) do |t|
@@ -16,4 +17,9 @@ Rake::TestTask.new do |t|
16
17
  t.verbose = false
17
18
  end
18
19
 
20
+ Inch::Rake::Suggest.new do |suggest|
21
+ suggest.args << "--pedantic"
22
+ suggest.args << "--all"
23
+ end
24
+
19
25
  task :default => :test
data/bin/vedeu_drb_client CHANGED
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ lib_dir = File.dirname(__FILE__) + '/../lib'
4
+ $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
5
+
6
+ require 'vedeu'
7
+
3
8
  client = Vedeu::Distributed::Client.new("druby://localhost:21420")
4
- client.input('a')
5
- client.output # => 'some content...'
6
- client.stop
9
+ client.input('l')
10
+ sleep 1
11
+ client.shutdown
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ lib_dir = "/Users/gavinlaking/Source/vedeu/lib/vedeu/distributed/../../../lib"
4
+ $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
5
+
6
+ require 'vedeu'
7
+
8
+ class VedeuTestApplication
9
+ # include Vedeu
10
+
11
+ Vedeu.configure do
12
+ colour_mode 16777216
13
+ log '/tmp/vedeu_test_helper.log'
14
+ debug!
15
+ drb!
16
+ drb_host 'localhost'
17
+ drb_port 21420
18
+ drb_width 80
19
+ drb_height 25
20
+
21
+ # cooked!
22
+ # raw!
23
+
24
+ # run_once!
25
+
26
+ # interactive!
27
+ # standalone!
28
+
29
+ # trace!
30
+
31
+ # System keys can be redefined
32
+ # exit_key 'q'
33
+ # focus_next_key :tab
34
+ # focus_prev_key :shift_tab
35
+ # mode_switch_key :escape
36
+
37
+ # Not used yet
38
+ # stdin File.open("/dev/tty", "r")
39
+ # stdout File.open("/dev/tty", "w")
40
+ # stderr File.open("/tmp/vedeu_error.log", "w+")
41
+ end
42
+
43
+ Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
44
+
45
+ Vedeu.border 'test_interface' do
46
+ # Define colour and style of border
47
+ colour foreground: '#ffff00', background: '#0000ff'
48
+ style 'normal'
49
+
50
+ # Define visibility of border
51
+ show_bottom!
52
+ show_left!
53
+ show_right!
54
+ show_top!
55
+
56
+ # Define characters used to draw border
57
+ bottom_right '+'
58
+ bottom_left '+'
59
+ horizontal '-'
60
+ top_right '+'
61
+ top_left '+'
62
+ vertical '|'
63
+ end
64
+
65
+ Vedeu.geometry 'test_interface' do
66
+ # centred!
67
+ height 6
68
+ width 26
69
+ x 4
70
+ y 4
71
+ end
72
+
73
+ Vedeu.interface 'test_interface' do
74
+ colour foreground: '#ff0000', background: '#000000'
75
+ cursor!
76
+ end
77
+
78
+ Vedeu.keymap 'test_interface' do
79
+ key(:up, 'k') { Vedeu.trigger(:_cursor_up_) }
80
+ key(:right, 'l') { Vedeu.trigger(:_cursor_right_) }
81
+ key(:down, 'j') { Vedeu.trigger(:_cursor_down_) }
82
+ key(:left, 'h') { Vedeu.trigger(:_cursor_left_) }
83
+ end
84
+
85
+ Vedeu.menu 'test_interface' do
86
+ # ...
87
+ end
88
+
89
+ Vedeu.renders do
90
+ view 'test_interface' do
91
+ lines do
92
+ line 'a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1'
93
+ line 'a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2'
94
+ line 'a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3'
95
+ line 'a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4'
96
+ line 'a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5'
97
+ line 'a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6'
98
+ line 'a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7'
99
+ line 'a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8'
100
+ end
101
+ end
102
+ end
103
+
104
+ def self.start(argv = ARGV,
105
+ stdin = STDIN,
106
+ stdout = STDOUT,
107
+ stderr = STDERR,
108
+ kernel = Kernel)
109
+ Vedeu::Launcher.execute!(argv, stdin, stdout, stderr, kernel)
110
+ end
111
+ end
112
+
113
+ VedeuTestApplication.start(ARGV)
data/bin/vedeu_test CHANGED
@@ -7,7 +7,7 @@ require 'vedeu'
7
7
 
8
8
  class VedeuTestApp
9
9
  def self.start(argv = ARGV)
10
- Vedeu::Launcher.new(argv).execute!
10
+ Vedeu::Launcher.execute!(argv)
11
11
  end
12
12
  end
13
13
 
data/docs/events.md CHANGED
@@ -15,118 +15,6 @@ class SomeClassInYourApplication
15
15
 
16
16
  System events generally control the internal state of Vedeu with respects to your application. They are soft-namespaced using underscores.
17
17
 
18
- ### `:_clear_`
19
-
20
- Clears the whole terminal space.
21
-
22
- ### `:_cursor_up_`
23
-
24
- Moves the cursor for the focussed interface up one row, but will not exceed the boundary of the interface.
25
-
26
- ### `:_cursor_right_`
27
-
28
- Moves the cursor for the focussed interface right one column, but will not exceed the boundary of the interface.
29
-
30
- ### `:_cursor_down_`
31
-
32
- Moves the cursor for the focussed interface down one row, but will not exceed the boundary of the interface.
33
-
34
- ### `:_cursor_left_`
35
-
36
- Moves the cursor for the focussed interface left one column, but will not exceed the boundary of the interface.
37
-
38
- ### `:_cursor_hide_`
39
-
40
- Hides the cursor for the focussed interface.
41
-
42
- ### `:_cursor_show_`
43
-
44
- Shows the cursor for the focussed interface.
45
-
46
- ### `:_cursor_hide_by_name_`
47
-
48
- Hides the cursor for the named interface.
49
-
50
- ### `:_cursor_show_by_name_`
51
-
52
- Shows the cursor for the named interface.
53
-
54
- ### `:_cursor_origin_`
55
-
56
- Moves the cursor to the top left position of the focussed interface. If this interface has a border,then this is respected.
57
-
58
- ### `:_exit_`
59
-
60
- When triggered, Vedeu will trigger a `:cleanup` event which you can define (to save files, etc) and attempt to exit.
61
-
62
- ### `:_focus_by_name_`
63
-
64
- When triggered with an interface name will focus that interface and restore the cursor position and visibility.
65
-
66
- ### `:_focus_next_`
67
-
68
- When triggered will focus the next interface and restore the cursor position and visibility.
69
-
70
- ### `:_focus_prev_`
71
-
72
- When triggered will focus the previous interface and restore the cursor position and visibility.
73
-
74
- ### `:_keypress_`
75
-
76
- Triggering this event will cause the triggering of the `:key` event; which you should define to 'do things'. If the `escape` key is pressed, then `key` is triggered with the argument `:escape`, also an internal event `_mode_switch_` is triggered.
77
-
78
- ### `:_log_`
79
-
80
- When triggered with a message will cause Vedeu to log the message if logging is enabled in the configuration.
81
-
82
- ### `:_menu_current_`
83
-
84
- Requires target menu name as argument. Returns the current menu item.
85
-
86
- ### `:_menu_selected_`
87
-
88
- Requires target menu name as argument. Returns the selected menu item.
89
-
90
- ### `:_menu_next_`
91
-
92
- Requires target menu name as argument. Makes the next menu item the current menu item, until it reaches the last item.
93
-
94
- ### `:_menu_prev_`
95
-
96
- Requires target menu name as argument. Makes the previous menu item the current menu item, until it reaches the first item.
97
-
98
- ### `:_menu_top_`
99
-
100
- Requires target menu name as argument. Makes the first menu item the current menu item.
101
-
102
- ### `:_menu_bottom_`
103
-
104
- Requires target menu name as argument. Makes the last menu item the current menu item.
105
-
106
- ### `:_menu_select_`
107
-
108
- Requires target menu name as argument. Makes the current menu item also the selected menu item.
109
-
110
- ### `:_menu_deselect_`
111
-
112
- Requires target menu name as argument. Deselects all menu items.
113
-
114
- ### `:_menu_items_`
115
-
116
- Requires target menu name as argument. Returns all the menu items with respective `current` or `selected` boolean indicators.
117
-
118
- ### `:_menu_view_`
119
-
120
- Requires target menu name as argument. Returns a subset of the menu items; starting at the current item to the last item.
121
-
122
- ### `:_mode_switch_`
123
-
124
- When triggered (after the user presses `escape`), Vedeu switches from a "raw mode" terminal to a "cooked mode" terminal. The idea here being that the raw mode is for single keypress actions, whilst cooked mode allows the user to enter more elaborate commands- such as commands with arguments.
125
-
126
- ### `:_refresh_`
127
-
128
- Triggering this event will cause all interfaces to refresh.
129
-
130
18
  ### `:_refresh_group_(group_name)_`
131
19
 
132
20
  Will refresh all interfaces belonging to this group. E.g. `_refresh_group_home_` will refresh all interfaces with the group of `home`.
@@ -135,10 +23,6 @@ Will refresh all interfaces belonging to this group. E.g. `_refresh_group_home_`
135
23
 
136
24
  Will refresh the interface with this name. E.g. `_refresh_widget_` will refresh the interface `widget`.
137
25
 
138
- ### `:_resize_`
139
-
140
- When triggered will cause Vedeu to trigger the `:_clear_` and `:_refresh_` events. Please see those events for their behaviour.
141
-
142
26
 
143
27
  ##### Notes:
144
28
 
@@ -157,17 +41,6 @@ User events allow you to orchestrate behaviour within your application, ie. the
157
41
 
158
42
  Vedeu pre-defines a few user events, which client applications can listen for, or trigger themselves.
159
43
 
160
- ### `:cleanup`
161
-
162
- Vedeu triggers this event when `:_exit_` is triggered. You can hook into this to perform a special action before the application terminates. Saving the user's work, session or preferences might be popular here.
163
-
164
- ### `:_initialize_`
165
-
166
- Vedeu triggers this event when it is ready to enter the main loop. Client
167
- applications can listen for this event and perform some action(s), like render
168
- the first screen, interface or make a sound. When Vedeu triggers this event,
169
- the :_refresh_ event is also triggered automatically.
170
-
171
44
  ### `:_tick_`
172
45
 
173
46
  Each time Vedeu completes one cycle in the application loop
@@ -46,7 +46,7 @@ class VedeuBordersApp
46
46
  height 3
47
47
  width 7
48
48
  end
49
- colour foreground: '#000000', background: '#ffff00'
49
+ colour foreground: '#000000', background: '#ff5500'
50
50
  end
51
51
 
52
52
  interface 'no_bottom' do
@@ -56,7 +56,7 @@ class VedeuBordersApp
56
56
  height 3
57
57
  width 7
58
58
  end
59
- colour foreground: '#000000', background: '#ffff00'
59
+ colour foreground: '#000000', background: '#ff5500'
60
60
  end
61
61
 
62
62
  interface 'no_left' do
@@ -66,7 +66,7 @@ class VedeuBordersApp
66
66
  height 3
67
67
  width 7
68
68
  end
69
- colour foreground: '#000000', background: '#ffff00'
69
+ colour foreground: '#000000', background: '#ff5500'
70
70
  end
71
71
 
72
72
  interface 'no_right' do
@@ -76,7 +76,7 @@ class VedeuBordersApp
76
76
  height 3
77
77
  width 7
78
78
  end
79
- colour foreground: '#000000', background: '#ffff00'
79
+ colour foreground: '#000000', background: '#ff5500'
80
80
  end
81
81
 
82
82
  interface 'custom_corners' do
@@ -166,21 +166,27 @@ class VedeuBordersApp
166
166
 
167
167
  # Borders can be defined as part of a view (see below), or standalone.
168
168
  border 'no_bottom' do
169
+ foreground '#ffffff'
169
170
  show_bottom false
170
171
  end
171
172
  border 'no_left' do
173
+ foreground '#ffffff'
172
174
  show_left false
173
175
  end
174
176
  border 'no_right' do
177
+ foreground '#ffffff'
175
178
  show_right false
176
179
  end
177
180
  border 'no_top' do
181
+ foreground '#ffffff'
178
182
  show_top false
179
183
  end
180
184
 
181
185
  renders do
182
186
  view('default_border') do
183
- border!
187
+ border do
188
+ foreground '#ffffff'
189
+ end
184
190
  lines do
185
191
  line 'on'
186
192
  end
@@ -234,6 +240,7 @@ class VedeuBordersApp
234
240
  end
235
241
  view('only_top') do
236
242
  border do
243
+ foreground '#ffffff'
237
244
  show_right false
238
245
  show_bottom false
239
246
  show_left false
@@ -245,6 +252,7 @@ class VedeuBordersApp
245
252
  end
246
253
  view('only_bottom') do
247
254
  border do
255
+ foreground '#ffffff'
248
256
  show_top false
249
257
  show_right false
250
258
  show_left false
@@ -256,6 +264,7 @@ class VedeuBordersApp
256
264
  end
257
265
  view('only_left') do
258
266
  border do
267
+ foreground '#ffffff'
259
268
  show_top false
260
269
  show_bottom false
261
270
  show_right false
@@ -267,6 +276,7 @@ class VedeuBordersApp
267
276
  end
268
277
  view('only_right') do
269
278
  border do
279
+ foreground '#ffffff'
270
280
  show_top false
271
281
  show_bottom false
272
282
  show_left false
@@ -278,7 +288,7 @@ class VedeuBordersApp
278
288
  end
279
289
  view('custom_colour') do
280
290
  border do
281
- colour foreground: '#ffff00', background: '#0000ff'
291
+ colour foreground: '#ff5500', background: '#0000ff'
282
292
  end
283
293
  lines do
284
294
  line 'color'
@@ -295,7 +305,7 @@ class VedeuBordersApp
295
305
  end
296
306
 
297
307
  def self.start(argv = ARGV)
298
- Vedeu::Launcher.new(argv).execute!
308
+ Vedeu::Launcher.execute!(argv)
299
309
  end
300
310
  end
301
311
 
@@ -48,7 +48,7 @@ class VedeuConfigurationApp
48
48
  end
49
49
 
50
50
  def self.start(argv = ARGV)
51
- Vedeu::Launcher.new(argv).execute!
51
+ Vedeu::Launcher.execute!(argv)
52
52
  end
53
53
  end
54
54
 
@@ -39,7 +39,9 @@ class VedeuCursorApp
39
39
 
40
40
  renders do
41
41
  view 'main_interface' do
42
- border!
42
+ border do
43
+ colour foreground: '#aadd00', background: '#000000'
44
+ end
43
45
  lines do
44
46
  streams do
45
47
  text 'A.3456789 '
@@ -106,7 +108,7 @@ class VedeuCursorApp
106
108
  focus_by_name 'main_interface'
107
109
 
108
110
  def self.start(argv = ARGV)
109
- Vedeu::Launcher.new(argv).execute!
111
+ Vedeu::Launcher.execute!(argv)
110
112
  end
111
113
  end
112
114
 
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ lib_dir = "/Users/gavinlaking/Source/vedeu/lib/vedeu/distributed/../../../lib"
4
+ $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
5
+
6
+ require 'vedeu'
7
+
8
+ class VedeuTestApplication
9
+ # include Vedeu
10
+
11
+ Vedeu.configure do
12
+ colour_mode 16777216
13
+ log '/tmp/vedeu_test_helper.log'
14
+ debug!
15
+ drb!
16
+ drb_host 'localhost'
17
+ drb_port 21420
18
+ drb_width 80
19
+ drb_height 25
20
+
21
+ # cooked!
22
+ # raw!
23
+
24
+ # run_once!
25
+
26
+ # interactive!
27
+ # standalone!
28
+
29
+ # trace!
30
+
31
+ # System keys can be redefined
32
+ # exit_key 'q'
33
+ # focus_next_key :tab
34
+ # focus_prev_key :shift_tab
35
+ # mode_switch_key :escape
36
+
37
+ # Not used yet
38
+ # stdin File.open("/dev/tty", "r")
39
+ # stdout File.open("/dev/tty", "w")
40
+ # stderr File.open("/tmp/vedeu_error.log", "w+")
41
+ end
42
+
43
+ Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
44
+
45
+ Vedeu.border 'test_interface' do
46
+ # Define colour and style of border
47
+ colour foreground: '#ffff00', background: '#0000ff'
48
+ style 'normal'
49
+
50
+ # Define visibility of border
51
+ show_bottom!
52
+ show_left!
53
+ show_right!
54
+ show_top!
55
+
56
+ # Define characters used to draw border
57
+ bottom_right '+'
58
+ bottom_left '+'
59
+ horizontal '-'
60
+ top_right '+'
61
+ top_left '+'
62
+ vertical '|'
63
+ end
64
+
65
+ Vedeu.geometry 'test_interface' do
66
+ # centred!
67
+ height 6
68
+ width 26
69
+ x 4
70
+ y 4
71
+ end
72
+
73
+ Vedeu.interface 'test_interface' do
74
+ colour foreground: '#ff0000', background: '#000000'
75
+ cursor!
76
+ end
77
+
78
+ Vedeu.keymap 'test_interface' do
79
+ key(:up, 'k') { Vedeu.trigger(:_cursor_up_) }
80
+ key(:right, 'l') { Vedeu.trigger(:_cursor_right_) }
81
+ key(:down, 'j') { Vedeu.trigger(:_cursor_down_) }
82
+ key(:left, 'h') { Vedeu.trigger(:_cursor_left_) }
83
+ end
84
+
85
+ Vedeu.menu 'test_interface' do
86
+ # ...
87
+ end
88
+
89
+ Vedeu.renders do
90
+ view 'test_interface' do
91
+ lines do
92
+ line 'a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1'
93
+ line 'a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2'
94
+ line 'a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3'
95
+ line 'a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4'
96
+ line 'a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5'
97
+ line 'a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6'
98
+ line 'a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7'
99
+ line 'a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8'
100
+ end
101
+ end
102
+ end
103
+
104
+ def self.start(argv = ARGV,
105
+ stdin = STDIN,
106
+ stdout = STDOUT,
107
+ stderr = STDERR,
108
+ kernel = Kernel)
109
+ Vedeu::Launcher.execute!(argv, stdin, stdout, stderr, kernel)
110
+ end
111
+ end
112
+
113
+ VedeuTestApplication.start(ARGV)
@@ -123,7 +123,7 @@ class VedeuFocusApp
123
123
  end
124
124
 
125
125
  def self.start(argv = ARGV)
126
- Vedeu::Launcher.new(argv).execute!
126
+ Vedeu::Launcher.execute!(argv)
127
127
  end
128
128
  end
129
129
 
@@ -134,7 +134,7 @@ class VedeuGeometryApp
134
134
  focus_by_name 'main_interface'
135
135
 
136
136
  def self.start(argv = ARGV)
137
- Vedeu::Launcher.new(argv).execute!
137
+ Vedeu::Launcher.execute!(argv)
138
138
  end
139
139
  end
140
140
 
@@ -40,7 +40,7 @@ class HelloWorldApp
40
40
  end
41
41
 
42
42
  def self.start(argv = ARGV)
43
- Vedeu::Launcher.new(argv).execute!
43
+ Vedeu::Launcher.execute!(argv)
44
44
  end
45
45
  end
46
46
 
@@ -67,7 +67,7 @@ class VedeuLinesApp
67
67
  focus_by_name 'ruthenium'
68
68
 
69
69
  def self.start(argv = ARGV)
70
- Vedeu::Launcher.new(argv).execute!
70
+ Vedeu::Launcher.execute!(argv)
71
71
  end
72
72
  end
73
73
 
@@ -15,7 +15,7 @@ Feature: Starting and stopping a client application
15
15
  end
16
16
 
17
17
  def self.start(argv = ARGV)
18
- Vedeu::Launcher.new(argv).execute!
18
+ Vedeu::Launcher.execute!(argv)
19
19
  end
20
20
  end
21
21
 
data/inch.yml ADDED
@@ -0,0 +1,5 @@
1
+ files:
2
+ included:
3
+ lib/**/*.rb
4
+ excluded:
5
+ vendor/**/*.rb
data/lib/vedeu/all.rb CHANGED
@@ -1,6 +1,7 @@
1
1
 
2
2
  # load order is important
3
3
 
4
+ require 'vedeu/debug'
4
5
  require 'vedeu/traps'
5
6
  require 'vedeu/exceptions'
6
7
 
@@ -26,5 +27,6 @@ require 'vedeu/output/all'
26
27
  require 'vedeu/presentation/all'
27
28
  require 'vedeu/support/all'
28
29
 
30
+ require 'vedeu/main_loop'
29
31
  require 'vedeu/application'
30
32
  require 'vedeu/launcher'
data/lib/vedeu/api.rb CHANGED
@@ -14,6 +14,7 @@ module Vedeu
14
14
  # module expose Vedeu's core functionality.
15
15
  #
16
16
  # @api public
17
+ #
17
18
  module API
18
19
 
19
20
  extend Forwardable