vedeu 0.6.27 → 0.6.28
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/docs/cursor.md +63 -3
- data/docs/events/application.md +1 -1
- data/docs/events/document.md +9 -9
- data/docs/events/drb.md +7 -7
- data/docs/events/focus.md +3 -3
- data/docs/events/menu.md +10 -10
- data/docs/events/movement.md +4 -43
- data/docs/events/refresh.md +6 -6
- data/docs/events/system.md +8 -8
- data/docs/events/view.md +3 -3
- data/docs/events/visibility.md +13 -13
- data/docs/geometry.md +1 -1
- data/docs/interfaces.md +1 -1
- data/examples/hello_worlds.rb +5 -1
- data/lib/vedeu/bindings/all.rb +1 -0
- data/lib/vedeu/bindings/bindings.rb +2 -0
- data/lib/vedeu/bindings/cursors.rb +101 -0
- data/lib/vedeu/bindings/movement.rb +2 -38
- data/lib/vedeu/cursors/cursor.rb +26 -0
- data/lib/vedeu/dsl/view.rb +1 -5
- data/lib/vedeu/groups/group.rb +1 -1
- data/lib/vedeu/models/interface.rb +1 -1
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/bindings/cursors_test.rb +24 -0
- data/test/lib/vedeu/bindings/movement_test.rb +0 -8
- data/test/lib/vedeu/cursors/cursor_test.rb +7 -0
- data/vedeu.gemspec +0 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e78a39e26891252b15013c3ee2e5b3d9255a824
|
4
|
+
data.tar.gz: 72ae82abfadbc68b4877b21379d086ddd552249d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06071e418374792ba1b007ececa0d47b04e8ef53290a821b1e8fe99283cac3e872f09c667a911a0f6f54e3c01490bacbfbcae47180b373244a678967f0d5c6c4
|
7
|
+
data.tar.gz: 09d5fe864aff632e25baf9b1ff0a0b0215e6e5ba5c5874fac7e4950ed4293b7410fc25229b54e31340d00c484e3a5e325f47ed69720d3190034fc38f1c00dc0f
|
data/docs/cursor.md
CHANGED
@@ -4,15 +4,75 @@
|
|
4
4
|
Each interface defined in Vedeu will have a separate cursor named,
|
5
5
|
conveniently after the interface itself.
|
6
6
|
|
7
|
-
- The cursor can moved left, right, up or down via events
|
7
|
+
- The cursor can moved left, right, up or down via events; whether
|
8
|
+
visible or not.
|
8
9
|
- The cursor can be shown or hidden (independently of the interface).
|
9
10
|
- The cursor may not be drawn on the border of the interface if a
|
10
11
|
border is defined and visible for any side of the interface.
|
11
|
-
- The cursor may not be drawn outside of the geometry of the
|
12
|
-
if a border is not defined or is invisible for the
|
12
|
+
- The cursor may not be drawn outside of the geometry of the
|
13
|
+
interface, even if a border is not defined or is invisible for the
|
14
|
+
interface.
|
15
|
+
- The cursor may not be drawn outside of the boundary of the visible
|
16
|
+
terminal.
|
13
17
|
- The position of the cursor is remembered for each interface.
|
14
18
|
- The cursor determines that which is shown in the interface via its
|
15
19
|
offset (this allows content to be larger than the interface size and
|
16
20
|
therefore 'scrolling').
|
17
21
|
- The cursor can be refreshed independently of the interface meaning
|
18
22
|
the content of the interface can change position if needed.
|
23
|
+
|
24
|
+
|
25
|
+
## Cursor Events
|
26
|
+
|
27
|
+
Note: 'name' is a Symbol unless mentioned otherwise, and can be
|
28
|
+
substituted for 'Vedeu.focus' to use the interface currently in focus.
|
29
|
+
|
30
|
+
### :\_cursor_origin_
|
31
|
+
This event moves the cursor to the interface origin; the top left
|
32
|
+
corner of the named interface.
|
33
|
+
|
34
|
+
Vedeu.trigger(:_cursor_origin_, name)
|
35
|
+
Vedeu.trigger(:_cursor_reset_, name)
|
36
|
+
|
37
|
+
### :\_cursor_position_
|
38
|
+
To ascertain the position of a cursor in a named interface, use the
|
39
|
+
following event (substituting 'name' for the interface name):
|
40
|
+
|
41
|
+
Vedeu.trigger(:_cursor_position_, name)
|
42
|
+
|
43
|
+
If you want to know where the cursor is without knowing the interface
|
44
|
+
name, you can check which interface is in focus:
|
45
|
+
|
46
|
+
Vedeu.trigger(:_cursor_position_, Vedeu.focus)
|
47
|
+
|
48
|
+
### :\_cursor_reposition_
|
49
|
+
Moves the cursor to a relative position inside the interface.
|
50
|
+
|
51
|
+
Vedeu.trigger(:_cursor_reposition_, name, y, x)
|
52
|
+
|
53
|
+
## Cursor Movement Events
|
54
|
+
|
55
|
+
Adjusts the position of the named cursor or view in the direction
|
56
|
+
specified. If 'name' is unknown, using 'Vedeu.focus' will use the
|
57
|
+
interface currently in focus.
|
58
|
+
|
59
|
+
### :\_cursor_left_
|
60
|
+
|
61
|
+
Vedeu.trigger(:_cursor_left_, name)
|
62
|
+
Vedeu.trigger(:_cursor_left_, Vedeu.focus)
|
63
|
+
|
64
|
+
### :\_cursor_down_
|
65
|
+
|
66
|
+
Vedeu.trigger(:_cursor_down_, name)
|
67
|
+
Vedeu.trigger(:_cursor_down_, Vedeu.focus)
|
68
|
+
|
69
|
+
### :\_cursor_up_
|
70
|
+
|
71
|
+
Vedeu.trigger(:_cursor_up_, name)
|
72
|
+
Vedeu.trigger(:_cursor_up_, Vedeu.focus)
|
73
|
+
|
74
|
+
### :\_cursor_right_
|
75
|
+
|
76
|
+
Vedeu.trigger(:_cursor_right_, name)
|
77
|
+
Vedeu.trigger(:_cursor_right_, Vedeu.focus)
|
78
|
+
|
data/docs/events/application.md
CHANGED
data/docs/events/document.md
CHANGED
@@ -4,29 +4,29 @@
|
|
4
4
|
|
5
5
|
Note: 'name' is a Symbol unless mentioned otherwise.
|
6
6
|
|
7
|
-
###
|
7
|
+
### :\_editor_execute_
|
8
8
|
|
9
9
|
Vedeu.trigger(:_editor_execute_, name)
|
10
10
|
|
11
|
-
###
|
11
|
+
### :\_editor_delete_character_
|
12
12
|
This event attempts to delete the character in the named
|
13
13
|
document at the current virtual cursor position.
|
14
14
|
|
15
15
|
Vedeu.trigger(:_editor_delete_character_, name)
|
16
16
|
|
17
|
-
###
|
17
|
+
### :\_editor_delete_line_
|
18
18
|
This event attempts to delete the line in the named document
|
19
19
|
at the current virtual cursor position.
|
20
20
|
|
21
21
|
Vedeu.trigger(:_editor_delete_line_, name)
|
22
22
|
|
23
|
-
###
|
23
|
+
### :\_editor_down_
|
24
24
|
This event attempts to move the virtual cursor down by one
|
25
25
|
line in the named document.
|
26
26
|
|
27
27
|
Vedeu.trigger(:_editor_down_, name)
|
28
28
|
|
29
|
-
###
|
29
|
+
### :\_editor_insert_character_
|
30
30
|
This event attempts to insert the given character in the named
|
31
31
|
document at the current virtual cursor position.
|
32
32
|
|
@@ -34,25 +34,25 @@ Note: 'character' is a string.
|
|
34
34
|
|
35
35
|
Vedeu.trigger(:_editor_insert_character_, name, character)
|
36
36
|
|
37
|
-
###
|
37
|
+
### :\_editor_insert_line_
|
38
38
|
This event attempts to insert a new line in the named document
|
39
39
|
at the current virtual cursor position.
|
40
40
|
|
41
41
|
Vedeu.trigger(:_editor_insert_line_, name)
|
42
42
|
|
43
|
-
###
|
43
|
+
### :\_editor_left_
|
44
44
|
This event attempts to move the virtual cursor left by one
|
45
45
|
character in the named document.
|
46
46
|
|
47
47
|
Vedeu.trigger(:_editor_left_, name)
|
48
48
|
|
49
|
-
###
|
49
|
+
### :\_editor_right_
|
50
50
|
This event attempts to move the virtual cursor right by one
|
51
51
|
character in the named document.
|
52
52
|
|
53
53
|
Vedeu.trigger(:_editor_right_, name)
|
54
54
|
|
55
|
-
###
|
55
|
+
### :\_editor_up_
|
56
56
|
This event attempts to move the virtual cursor up by one line
|
57
57
|
in the named document.
|
58
58
|
|
data/docs/events/drb.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
## DRB Events
|
4
4
|
|
5
|
-
###
|
5
|
+
### :\_drb_input_
|
6
6
|
Triggering this event will send input to the running application as
|
7
7
|
long as it has the DRb server running.
|
8
8
|
|
@@ -10,11 +10,11 @@ Note: See {Vedeu::Distributed::Server#input} for parameter details.
|
|
10
10
|
|
11
11
|
Vedeu.trigger(:_drb_input_, data, type)
|
12
12
|
|
13
|
-
###
|
13
|
+
### :\_drb_retrieve_output_
|
14
14
|
|
15
15
|
Vedeu.trigger(:_drb_retrieve_output_)
|
16
16
|
|
17
|
-
###
|
17
|
+
### :\_drb_store_output_
|
18
18
|
Triggering this event with 'data' will push data into the running
|
19
19
|
application's virtual buffer.
|
20
20
|
|
@@ -22,25 +22,25 @@ Note: See {Vedeu::Terminal::Buffer#write} for parameter details.
|
|
22
22
|
|
23
23
|
Vedeu.trigger(:_drb_store_output_, data)
|
24
24
|
|
25
|
-
###
|
25
|
+
### :\_drb_restart_
|
26
26
|
Use the DRb server to request the client application to restart.
|
27
27
|
|
28
28
|
Vedeu.trigger(:_drb_restart_)
|
29
29
|
Vedeu.drb_restart
|
30
30
|
|
31
|
-
###
|
31
|
+
### :\_drb_start_
|
32
32
|
Use the DRb server to request the client application to start.
|
33
33
|
|
34
34
|
Vedeu.trigger(:_drb_start_)
|
35
35
|
Vedeu.drb_start
|
36
36
|
|
37
|
-
###
|
37
|
+
### :\_drb_status_
|
38
38
|
Use the DRb server to request the status of the client application.
|
39
39
|
|
40
40
|
Vedeu.trigger(:_drb_status_)
|
41
41
|
Vedeu.drb_status
|
42
42
|
|
43
|
-
###
|
43
|
+
### :\_drb_stop_
|
44
44
|
Use the DRb server to request the client application to stop.
|
45
45
|
|
46
46
|
Vedeu.trigger(:_drb_stop_)
|
data/docs/events/focus.md
CHANGED
@@ -4,21 +4,21 @@
|
|
4
4
|
|
5
5
|
Note: 'name' is a Symbol unless mentioned otherwise.
|
6
6
|
|
7
|
-
###
|
7
|
+
### :\_focus_by_name_
|
8
8
|
When triggered with an interface name will focus that interface and
|
9
9
|
restore the cursor position and visibility.
|
10
10
|
|
11
11
|
Vedeu.trigger(:_focus_by_name_, name) # or
|
12
12
|
Vedeu.focus_by_name(name)
|
13
13
|
|
14
|
-
###
|
14
|
+
### :\_focus_next_
|
15
15
|
When triggered will focus the next visible interface and restore the
|
16
16
|
cursor position and visibility.
|
17
17
|
|
18
18
|
Vedeu.trigger(:_focus_next_) # or
|
19
19
|
Vedeu.focus_next
|
20
20
|
|
21
|
-
###
|
21
|
+
### :\_focus_prev_
|
22
22
|
When triggered will focus the previous visible interface and restore
|
23
23
|
the cursor position and visibility.
|
24
24
|
|
data/docs/events/menu.md
CHANGED
@@ -4,55 +4,55 @@
|
|
4
4
|
|
5
5
|
Note: 'name' is a Symbol unless mentioned otherwise.
|
6
6
|
|
7
|
-
###
|
7
|
+
### :\_menu_bottom_
|
8
8
|
Makes the last menu item the current menu item.
|
9
9
|
|
10
10
|
Vedeu.trigger(:_menu_bottom_, name)
|
11
11
|
|
12
|
-
###
|
12
|
+
### :\_menu_current_
|
13
13
|
Returns the current menu item.
|
14
14
|
|
15
15
|
Vedeu.trigger(:_menu_current_, name)
|
16
16
|
|
17
|
-
###
|
17
|
+
### :\_menu_deselect_
|
18
18
|
Deselects all menu items.
|
19
19
|
|
20
20
|
Vedeu.trigger(:_menu_deselect_, name)
|
21
21
|
|
22
|
-
###
|
22
|
+
### :\_menu_items_
|
23
23
|
Returns all the menu items with respective `current` or `selected`
|
24
24
|
boolean indicators.
|
25
25
|
|
26
26
|
Vedeu.trigger(:_menu_items_, name)
|
27
27
|
|
28
|
-
###
|
28
|
+
### :\_menu_next_
|
29
29
|
Makes the next menu item the current menu item, until it reaches the
|
30
30
|
last item.
|
31
31
|
|
32
32
|
Vedeu.trigger(:_menu_next_, name)
|
33
33
|
|
34
|
-
###
|
34
|
+
### :\_menu_prev_
|
35
35
|
Makes the previous menu item the current menu item, until it reaches
|
36
36
|
the first item.
|
37
37
|
|
38
38
|
Vedeu.trigger(:_menu_prev_, name)
|
39
39
|
|
40
|
-
###
|
40
|
+
### :\_menu_selected_
|
41
41
|
Returns the selected menu item.
|
42
42
|
|
43
43
|
Vedeu.trigger(:_menu_selected_, name)
|
44
44
|
|
45
|
-
###
|
45
|
+
### :\_menu_select_
|
46
46
|
Makes the current menu item also the selected menu item.
|
47
47
|
|
48
48
|
Vedeu.trigger(:_menu_select_, name)
|
49
49
|
|
50
|
-
###
|
50
|
+
### :\_menu_top_
|
51
51
|
Makes the first menu item the current menu item.
|
52
52
|
|
53
53
|
Vedeu.trigger(:_menu_top_, name)
|
54
54
|
|
55
|
-
###
|
55
|
+
### :\_menu_view_
|
56
56
|
Returns a subset of the menu items; starting at the current item to
|
57
57
|
the last item.
|
58
58
|
|
data/docs/events/movement.md
CHANGED
@@ -4,50 +4,11 @@
|
|
4
4
|
|
5
5
|
Note: 'name' is a Symbol unless mentioned otherwise.
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
corner of the named interface.
|
7
|
+
For cursor related movement events, please refer to
|
8
|
+
{file:docs/cursor.md} Cursors.
|
10
9
|
|
11
|
-
Vedeu.trigger(:_cursor_origin_, name)
|
12
|
-
Vedeu.trigger(:_cursor_reset_, name)
|
13
10
|
|
14
|
-
###
|
15
|
-
When triggered will return the current position of the cursor.
|
16
|
-
|
17
|
-
Vedeu.trigger(:_cursor_position_, name)
|
18
|
-
|
19
|
-
### :_cursor_reposition_
|
20
|
-
Moves the cursor to a relative position inside the interface.
|
21
|
-
|
22
|
-
Vedeu.trigger(:_cursor_reposition_, name, y, x)
|
23
|
-
|
24
|
-
### :_cursor_(up, down, left, right)_
|
25
|
-
Adjusts the position of the cursor or view.
|
26
|
-
|
27
|
-
When a name is not given, the cursor in the interface which is
|
28
|
-
currently in focus should move in the direction specified.
|
29
|
-
|
30
|
-
Vedeu.trigger(:_cursor_left_, name)
|
31
|
-
Vedeu.trigger(:_cursor_left_)
|
32
|
-
Vedeu.trigger(:_cursor_right_)
|
33
|
-
Vedeu.trigger(:_cursor_up_)
|
34
|
-
Vedeu.trigger(:_cursor_down_)
|
35
|
-
|
36
|
-
- The cursor or view may not be visible, but it will still move if
|
37
|
-
requested.
|
38
|
-
- The cursor will not exceed the border or boundary of the interface,
|
39
|
-
or boundary of the visible terminal.
|
40
|
-
- The cursor will move freely within the bounds of the interface,
|
41
|
-
irrespective of content.
|
42
|
-
- The view will not exceed the boundary of the visible terminal,
|
43
|
-
though its offset may (this means content will appear to have
|
44
|
-
scrolled).
|
45
|
-
- The view will move freely within the bounds of the interface,
|
46
|
-
irrespective of content.
|
47
|
-
|
48
|
-
### :_view_(up, down, left, right)_
|
49
|
-
|
50
|
-
See {file:docs/events.md#\_cursor__up_down_left_right_}
|
11
|
+
### :\_view_(up, down, left, right)_
|
51
12
|
|
52
13
|
Please note that the name of the view is required for these events.
|
53
14
|
|
@@ -56,4 +17,4 @@ Please note that the name of the view is required for these events.
|
|
56
17
|
Vedeu.trigger(:_view_right_, name)
|
57
18
|
Vedeu.trigger(:_view_up_, name)
|
58
19
|
|
59
|
-
Each of the
|
20
|
+
Each of the :\_view_* events has an alias, :\_geometry_* if you prefer.
|
data/docs/events/refresh.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
Note: 'name' is a Symbol unless mentioned otherwise.
|
6
6
|
|
7
|
-
###
|
7
|
+
### :\_refresh_
|
8
8
|
Refreshes all registered interfaces.
|
9
9
|
|
10
10
|
The interfaces will be refreshed in z-index order, meaning that
|
@@ -14,28 +14,28 @@ will be still refreshed in memory but not shown.
|
|
14
14
|
|
15
15
|
Vedeu.trigger(:_refresh_)
|
16
16
|
|
17
|
-
###
|
17
|
+
### :\_refresh_border_
|
18
18
|
Will cause the named border to refresh.
|
19
19
|
|
20
20
|
Vedeu.trigger(:_refresh_border_, name)
|
21
21
|
|
22
|
-
###
|
22
|
+
### :\_refresh_cursor_
|
23
23
|
Will cause the named cursor to refresh, or the cursor of the interface
|
24
24
|
which is currently in focus.
|
25
25
|
|
26
26
|
Vedeu.trigger(:_refresh_cursor_, name)
|
27
27
|
|
28
|
-
###
|
28
|
+
### :\_refresh_group_
|
29
29
|
Will cause all interfaces in the named group to refresh.
|
30
30
|
|
31
31
|
Vedeu.trigger(:_refresh_group_, name)
|
32
32
|
|
33
|
-
###
|
33
|
+
### :\_refresh_view_
|
34
34
|
Will cause the named view to refresh.
|
35
35
|
|
36
36
|
Vedeu.trigger(:_refresh_view_, name)
|
37
37
|
|
38
|
-
###
|
38
|
+
### :\_refresh_view_content_
|
39
39
|
Will cause only the content of the named view to refresh.
|
40
40
|
|
41
41
|
Vedeu.trigger(:_refresh_view_content_, name)
|
data/docs/events/system.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
## System Events
|
4
4
|
|
5
|
-
###
|
5
|
+
### :\_cleanup_
|
6
6
|
Vedeu triggers this event when `:_exit_` is triggered. You can hook
|
7
7
|
into this to perform a special action before the application
|
8
8
|
terminates. Saving the user's work, session or preferences might be
|
@@ -10,13 +10,13 @@ popular here.
|
|
10
10
|
|
11
11
|
Vedeu.trigger(:_exit_)
|
12
12
|
|
13
|
-
###
|
13
|
+
### :\_command_
|
14
14
|
Will cause the triggering of the `:command` event; which you should
|
15
15
|
define to 'do things'.
|
16
16
|
|
17
17
|
Vedeu.trigger(:_command_, command)
|
18
18
|
|
19
|
-
###
|
19
|
+
### :\_editor_
|
20
20
|
This event is called by {Vedeu::Input::Capture#read}. When
|
21
21
|
invoked, the key will be passed to the editor for currently
|
22
22
|
focussed view.
|
@@ -26,21 +26,21 @@ represented by Symbols.
|
|
26
26
|
|
27
27
|
Vedeu.trigger(:_editor_, key)
|
28
28
|
|
29
|
-
###
|
29
|
+
### :\_exit_
|
30
30
|
When triggered, Vedeu will trigger a `:cleanup` event which you can
|
31
31
|
define (to save files, etc) and attempt to exit.
|
32
32
|
|
33
33
|
Vedeu.trigger(:_exit_)
|
34
34
|
Vedeu.exit
|
35
35
|
|
36
|
-
###
|
36
|
+
### :\_initialize_
|
37
37
|
Vedeu triggers this event when it is ready to enter the main loop.
|
38
38
|
Client applications can listen for this event and perform some
|
39
39
|
action(s), like render the first screen, interface or make a sound.
|
40
40
|
|
41
41
|
Vedeu.trigger(:_initialize_)
|
42
42
|
|
43
|
-
###
|
43
|
+
### :\_keypress_
|
44
44
|
Will cause the triggering of the `:key` event; which you should define
|
45
45
|
to 'do things'. If the `escape` key is pressed, then `key` is
|
46
46
|
triggered with the argument `:escape`, also an internal event
|
@@ -50,7 +50,7 @@ can be found here: {Vedeu::Input::Capture}.
|
|
50
50
|
|
51
51
|
Vedeu.trigger(:_keypress_, key)
|
52
52
|
|
53
|
-
###
|
53
|
+
### :\_log_
|
54
54
|
When triggered with a message will cause Vedeu to log the message if
|
55
55
|
logging is enabled in the configuration.
|
56
56
|
|
@@ -58,7 +58,7 @@ Note: 'message' is a String.
|
|
58
58
|
|
59
59
|
Vedeu.trigger(:_log_, message)
|
60
60
|
|
61
|
-
###
|
61
|
+
### :\_mode_switch_
|
62
62
|
When triggered (by default, after the user presses `escape`), Vedeu
|
63
63
|
switches between modes of the terminal. The idea here being
|
64
64
|
that the raw mode is for single keypress actions, whilst fake and
|
data/docs/events/view.md
CHANGED
@@ -4,20 +4,20 @@
|
|
4
4
|
|
5
5
|
Note: 'name' is a Symbol unless mentioned otherwise.
|
6
6
|
|
7
|
-
###
|
7
|
+
### :\_maximise_
|
8
8
|
Maximising an interface.
|
9
9
|
|
10
10
|
Vedeu.trigger(:_maximise_, name)
|
11
11
|
|
12
12
|
See {Vedeu::Geometry::Geometry#maximise}
|
13
13
|
|
14
|
-
###
|
14
|
+
### :\_resize_
|
15
15
|
When triggered will cause Vedeu to trigger the `:_clear_` and
|
16
16
|
`:_refresh_` events. Please see those events for their behaviour.
|
17
17
|
|
18
18
|
Vedeu.trigger(:_resize_)
|
19
19
|
|
20
|
-
###
|
20
|
+
### :\_unmaximise_
|
21
21
|
Unmaximising an interface.
|
22
22
|
|
23
23
|
Vedeu.trigger(:_unmaximise_, name)
|
data/docs/events/visibility.md
CHANGED
@@ -4,32 +4,32 @@
|
|
4
4
|
|
5
5
|
Note: 'name' is a Symbol unless mentioned otherwise.
|
6
6
|
|
7
|
-
###
|
7
|
+
### :\_clear_
|
8
8
|
Clears the whole terminal space.
|
9
9
|
|
10
10
|
Vedeu.trigger(:_clear_)
|
11
11
|
Vedeu.clear
|
12
12
|
|
13
|
-
###
|
13
|
+
### :\_clear_group_
|
14
14
|
Clears the spaces occupied by the interfaces belonging to the named
|
15
15
|
group.
|
16
16
|
|
17
17
|
Vedeu.trigger(:_clear_group_, name)
|
18
18
|
Vedeu.clear_by_group(name)
|
19
19
|
|
20
|
-
###
|
20
|
+
### :\_clear_view_
|
21
21
|
Clears the named view/interface area.
|
22
22
|
|
23
23
|
Vedeu.trigger(:_clear_view_, name)
|
24
24
|
Vedeu.clear_by_name(name)
|
25
25
|
|
26
|
-
###
|
26
|
+
### :\_clear_view_content_
|
27
27
|
Clears only the content of the named view/interface area.
|
28
28
|
|
29
29
|
Vedeu.trigger(:_clear_view_content_, name)
|
30
30
|
Vedeu.clear_content_by_name(name)
|
31
31
|
|
32
|
-
###
|
32
|
+
### :\_hide_cursor_
|
33
33
|
Hide the cursor of the named interface or when a name is not given,
|
34
34
|
the interface currently in focus.
|
35
35
|
|
@@ -37,19 +37,19 @@ the interface currently in focus.
|
|
37
37
|
Vedeu.trigger(:_cursor_hide_, name)
|
38
38
|
Vedeu.hide_cursor(name)
|
39
39
|
|
40
|
-
###
|
40
|
+
### :\_hide_group_
|
41
41
|
Hiding a group of interfaces.
|
42
42
|
|
43
43
|
Vedeu.trigger(:_hide_group_, name)
|
44
44
|
Vedeu.hide_group(name)
|
45
45
|
|
46
|
-
###
|
46
|
+
### :\_hide_interface_
|
47
47
|
Hide an interface by name.
|
48
48
|
|
49
49
|
Vedeu.trigger(:_hide_interface_, name)
|
50
50
|
Vedeu.hide_interface(name)
|
51
51
|
|
52
|
-
###
|
52
|
+
### :\_show_cursor_
|
53
53
|
Show the cursor of the named interface or when a name is not given,
|
54
54
|
the interface currently in focus.
|
55
55
|
|
@@ -57,31 +57,31 @@ the interface currently in focus.
|
|
57
57
|
Vedeu.trigger(:_cursor_show_, name)
|
58
58
|
Vedeu.show_cursor(name)
|
59
59
|
|
60
|
-
###
|
60
|
+
### :\_show_group_
|
61
61
|
Showing a group of interfaces.
|
62
62
|
|
63
63
|
Vedeu.trigger(:_show_group_, name)
|
64
64
|
Vedeu.show_group(name)
|
65
65
|
|
66
|
-
###
|
66
|
+
### :\_show_interface_
|
67
67
|
Show an interface by name.
|
68
68
|
|
69
69
|
Vedeu.trigger(:_show_interface_, name)
|
70
70
|
Vedeu.show_interface(name)
|
71
71
|
|
72
|
-
###
|
72
|
+
### :\_toggle_cursor_
|
73
73
|
Toggling a cursor.
|
74
74
|
|
75
75
|
Vedeu.trigger(:_toggle_cursor_, name)
|
76
76
|
Vedeu.toggle_cursor(name)
|
77
77
|
|
78
|
-
###
|
78
|
+
### :\_toggle_group_
|
79
79
|
Toggling a group of interfaces.
|
80
80
|
|
81
81
|
Vedeu.trigger(:_toggle_group_, name)
|
82
82
|
Vedeu.toggle_group(name)
|
83
83
|
|
84
|
-
###
|
84
|
+
### :\_toggle_interface_
|
85
85
|
Toggling an interface.
|
86
86
|
|
87
87
|
Vedeu.trigger(:_toggle_interface_, name)
|
data/docs/geometry.md
CHANGED
@@ -24,5 +24,5 @@ of the terminal.
|
|
24
24
|
- Geometry can be maximised- to use all the available terminal space.
|
25
25
|
- It can also be unmaximised- to return to the pre-defined dimensions
|
26
26
|
as mentioned above.
|
27
|
-
- Geometry like a {file:docs/
|
27
|
+
- Geometry like a {file:docs/cursor.md Cursor}, via events can be
|
28
28
|
moved; left, right, up or down.
|
data/docs/interfaces.md
CHANGED
@@ -6,7 +6,7 @@ Think of interfaces as being discrete sections of the terminal space.
|
|
6
6
|
- It has a name, which all other aspects of Vedeu will be related.
|
7
7
|
- It has a size, in terms of a width and height, determined by
|
8
8
|
{file:docs/geometry.md Geometry}.
|
9
|
-
- It can have a {file:docs/border.md
|
9
|
+
- It can have a {file:docs/border.md Border}.
|
10
10
|
- It can be part of a {file:docs/group.md Group}.
|
11
11
|
- An interface is empty unless it has an associated
|
12
12
|
{file:docs/view.md View}.
|
data/examples/hello_worlds.rb
CHANGED
@@ -13,7 +13,10 @@ require 'vedeu'
|
|
13
13
|
#
|
14
14
|
class HelloWorldsApp
|
15
15
|
|
16
|
-
Vedeu.bind(:_initialize_) {
|
16
|
+
Vedeu.bind(:_initialize_) {
|
17
|
+
Vedeu.trigger(:_show_view_, :hello)
|
18
|
+
Vedeu.trigger(:_refresh_)
|
19
|
+
}
|
17
20
|
|
18
21
|
Vedeu.configure do
|
19
22
|
# Empty configure block is needed.
|
@@ -69,6 +72,7 @@ class HelloWorldsApp
|
|
69
72
|
line
|
70
73
|
line { centre "Press 'q' to exit,", width: 24 }
|
71
74
|
line { centre " 'w' to switch worlds.", width: 24 }
|
75
|
+
line { centre "#{Vedeu.trigger(:_cursor_position_, Vedeu.focus)" }
|
72
76
|
end
|
73
77
|
end
|
74
78
|
end
|
data/lib/vedeu/bindings/all.rb
CHANGED
@@ -11,6 +11,7 @@ module Vedeu
|
|
11
11
|
Vedeu::Events::Repository.reset!
|
12
12
|
|
13
13
|
Vedeu::Bindings::Application.setup!
|
14
|
+
Vedeu::Bindings::Cursors.setup!
|
14
15
|
Vedeu::Bindings::Document.setup!
|
15
16
|
Vedeu::Bindings::DRB.setup!
|
16
17
|
Vedeu::Bindings::Focus.setup!
|
@@ -30,6 +31,7 @@ module Vedeu
|
|
30
31
|
# @return [TrueClass]
|
31
32
|
def setup_aliases!
|
32
33
|
Vedeu::Bindings::Application.setup_aliases!
|
34
|
+
Vedeu::Bindings::Cursors.setup_aliases!
|
33
35
|
Vedeu::Bindings::Movement.setup_aliases!
|
34
36
|
Vedeu::Bindings::Visibility.setup_aliases!
|
35
37
|
|
@@ -0,0 +1,101 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
module Bindings
|
4
|
+
|
5
|
+
# System events relating to movement of cursors.
|
6
|
+
#
|
7
|
+
module Cursors
|
8
|
+
|
9
|
+
extend self
|
10
|
+
|
11
|
+
# Setup events relating to movement. This method is called by
|
12
|
+
# Vedeu.
|
13
|
+
#
|
14
|
+
# @return [TrueClass]
|
15
|
+
def setup!
|
16
|
+
cursor_left!
|
17
|
+
cursor_down!
|
18
|
+
cursor_up!
|
19
|
+
cursor_right!
|
20
|
+
cursor_origin!
|
21
|
+
cursor_position!
|
22
|
+
cursor_reposition!
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [TrueClass]
|
26
|
+
def setup_aliases!
|
27
|
+
Vedeu.bind_alias(:_cursor_reset_, :_cursor_origin_)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
# :nocov:
|
33
|
+
|
34
|
+
# See {file:docs/cursors.md}
|
35
|
+
def cursor_left!
|
36
|
+
Vedeu.bind(:_cursor_left_) do |name|
|
37
|
+
Vedeu.cursors.by_name(name).move_left
|
38
|
+
|
39
|
+
Vedeu.trigger(:_refresh_cursor_, name)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# See {file:docs/cursors.md}
|
44
|
+
def cursor_down!
|
45
|
+
Vedeu.bind(:_cursor_down_) do |name|
|
46
|
+
Vedeu.cursors.by_name(name).move_down
|
47
|
+
|
48
|
+
Vedeu.trigger(:_refresh_cursor_, name)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# See {file:docs/cursors.md}
|
53
|
+
def cursor_up!
|
54
|
+
Vedeu.bind(:_cursor_up_) do |name|
|
55
|
+
Vedeu.cursors.by_name(name).move_up
|
56
|
+
|
57
|
+
Vedeu.trigger(:_refresh_cursor_, name)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# See {file:docs/cursors.md}
|
62
|
+
def cursor_right!
|
63
|
+
Vedeu.bind(:_cursor_right_) do |name|
|
64
|
+
Vedeu.cursors.by_name(name).move_right
|
65
|
+
|
66
|
+
Vedeu.trigger(:_refresh_cursor_, name)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# See {file:docs/cursors.md}
|
71
|
+
def cursor_origin!
|
72
|
+
Vedeu.bind(:_cursor_origin_) do |name|
|
73
|
+
Vedeu.cursors.by_name(name).move_origin
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
# See {file:docs/cursors.md}
|
78
|
+
def cursor_position!
|
79
|
+
Vedeu.bind(:_cursor_position_) do |name|
|
80
|
+
Vedeu.cursors.by_name(name).to_a
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# See {file:docs/cursors.md}
|
85
|
+
def cursor_reposition!
|
86
|
+
Vedeu.bind(:_cursor_reposition_) do |name, y, x|
|
87
|
+
Vedeu.cursors.by_name(name).reposition(y, x)
|
88
|
+
|
89
|
+
Vedeu.trigger(:_clear_view_, name)
|
90
|
+
Vedeu.trigger(:_refresh_view_, name)
|
91
|
+
Vedeu.trigger(:_refresh_cursor_, name)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
# :nocov:
|
96
|
+
|
97
|
+
end # Cursors
|
98
|
+
|
99
|
+
end # Bindings
|
100
|
+
|
101
|
+
end # Vedeu
|
@@ -2,7 +2,7 @@ module Vedeu
|
|
2
2
|
|
3
3
|
module Bindings
|
4
4
|
|
5
|
-
# System events relating to movement of
|
5
|
+
# System events relating to movement of interfaces.
|
6
6
|
#
|
7
7
|
module Movement
|
8
8
|
|
@@ -13,9 +13,6 @@ module Vedeu
|
|
13
13
|
#
|
14
14
|
# @return [TrueClass]
|
15
15
|
def setup!
|
16
|
-
cursor_origin!
|
17
|
-
cursor_position!
|
18
|
-
cursor_reposition!
|
19
16
|
directional!
|
20
17
|
end
|
21
18
|
|
@@ -25,23 +22,15 @@ module Vedeu
|
|
25
22
|
Vedeu.bind_alias(:"_geometry_#{direction}_",
|
26
23
|
:"_view_#{direction}_")
|
27
24
|
end
|
28
|
-
|
29
|
-
Vedeu.bind_alias(:_cursor_reset_, :_cursor_origin_)
|
30
25
|
end
|
31
26
|
|
32
27
|
private
|
33
28
|
|
34
29
|
# :nocov:
|
35
30
|
|
36
|
-
# See {file:docs/events/movement.md#\
|
31
|
+
# See {file:docs/events/movement.md#\_view_up_down_left_right_}
|
37
32
|
def directional!
|
38
33
|
%w(down left right up).each do |direction|
|
39
|
-
Vedeu.bind(:"_cursor_#{direction}_") do |name|
|
40
|
-
Vedeu.cursors.by_name(name).send("move_#{direction}")
|
41
|
-
|
42
|
-
Vedeu.trigger(:_refresh_cursor_, name)
|
43
|
-
end
|
44
|
-
|
45
34
|
Vedeu.bind(:"_view_#{direction}_") do |name|
|
46
35
|
Vedeu.geometries.by_name(name).send("move_#{direction}")
|
47
36
|
|
@@ -53,31 +42,6 @@ module Vedeu
|
|
53
42
|
end
|
54
43
|
end
|
55
44
|
|
56
|
-
# See {file:docs/events/movement.md#\_cursor_origin_}
|
57
|
-
def cursor_origin!
|
58
|
-
Vedeu.bind(:_cursor_origin_) do |name|
|
59
|
-
Vedeu.cursors.by_name(name).move_origin
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
# See {file:docs/events/movement.md#\_cursor_position_}
|
64
|
-
def cursor_position!
|
65
|
-
Vedeu.bind(:_cursor_position_) do |name|
|
66
|
-
Vedeu.cursors.by_name(name).position
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
# See {file:docs/events/movement.md#\_cursor_reposition_}
|
71
|
-
def cursor_reposition!
|
72
|
-
Vedeu.bind(:_cursor_reposition_) do |name, y, x|
|
73
|
-
Vedeu.cursors.by_name(name).reposition(y, x)
|
74
|
-
|
75
|
-
Vedeu.trigger(:_clear_view_, name)
|
76
|
-
Vedeu.trigger(:_refresh_view_, name)
|
77
|
-
Vedeu.trigger(:_refresh_cursor_, name)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
45
|
# :nocov:
|
82
46
|
|
83
47
|
end # Movement
|
data/lib/vedeu/cursors/cursor.rb
CHANGED
@@ -82,6 +82,9 @@ module Vedeu
|
|
82
82
|
|
83
83
|
# Moves the cursor down by one row.
|
84
84
|
#
|
85
|
+
# Vedeu.trigger(:_cursor_down_, name)
|
86
|
+
# Vedeu.trigger(:_cursor_down_, Vedeu.focus)
|
87
|
+
#
|
85
88
|
# @return [Vedeu::Cursors::Cursor]
|
86
89
|
def move_down
|
87
90
|
@oy += 1
|
@@ -92,6 +95,9 @@ module Vedeu
|
|
92
95
|
|
93
96
|
# Moves the cursor left by one column.
|
94
97
|
#
|
98
|
+
# Vedeu.trigger(:_cursor_left_, name)
|
99
|
+
# Vedeu.trigger(:_cursor_left_, Vedeu.focus)
|
100
|
+
#
|
95
101
|
# @return [Vedeu::Cursors::Cursor]
|
96
102
|
def move_left
|
97
103
|
@ox -= 1
|
@@ -102,6 +108,9 @@ module Vedeu
|
|
102
108
|
|
103
109
|
# Moves the cursor to the top left of the named interface.
|
104
110
|
#
|
111
|
+
# Vedeu.trigger(:_cursor_origin_, name)
|
112
|
+
# Vedeu.trigger(:_cursor_origin_, Vedeu.focus)
|
113
|
+
#
|
105
114
|
# @return [Vedeu::Cursors::Cursor]
|
106
115
|
def move_origin
|
107
116
|
Vedeu::Cursors::Cursor.store(
|
@@ -110,6 +119,9 @@ module Vedeu
|
|
110
119
|
|
111
120
|
# Moves the cursor right by one column.
|
112
121
|
#
|
122
|
+
# Vedeu.trigger(:_cursor_right_, name)
|
123
|
+
# Vedeu.trigger(:_cursor_right_, Vedeu.focus)
|
124
|
+
#
|
113
125
|
# @return [Vedeu::Cursors::Cursor]
|
114
126
|
def move_right
|
115
127
|
@ox += 1
|
@@ -120,6 +132,9 @@ module Vedeu
|
|
120
132
|
|
121
133
|
# Moves the cursor up by one row.
|
122
134
|
#
|
135
|
+
# Vedeu.trigger(:_cursor_up_, name)
|
136
|
+
# Vedeu.trigger(:_cursor_up_, Vedeu.focus)
|
137
|
+
#
|
123
138
|
# @return [Vedeu::Cursors::Cursor]
|
124
139
|
def move_up
|
125
140
|
@oy -= 1
|
@@ -150,6 +165,11 @@ module Vedeu
|
|
150
165
|
new_attributes(coordinate.y_position, coordinate.x_position, oy, ox))
|
151
166
|
end
|
152
167
|
|
168
|
+
# @return [Array<Fixnum>]
|
169
|
+
def to_a
|
170
|
+
position.to_a
|
171
|
+
end
|
172
|
+
|
153
173
|
# Returns an escape sequence to position the cursor and set its
|
154
174
|
# visibility. When passed a block, will position the cursor,
|
155
175
|
# yield and return the original position.
|
@@ -166,7 +186,10 @@ module Vedeu
|
|
166
186
|
# currently focussed interface.
|
167
187
|
#
|
168
188
|
# @example
|
189
|
+
# Vedeu.trigger(:_hide_cursor_, name)
|
190
|
+
# Vedeu.trigger(:_hide_cursor_, Vedeu.focus)
|
169
191
|
# Vedeu.hide_cursor(name)
|
192
|
+
# Vedeu.hide_cursor(Vedeu.focus)
|
170
193
|
#
|
171
194
|
# @return [Vedeu::Models::Escape]
|
172
195
|
def hide
|
@@ -198,7 +221,10 @@ module Vedeu
|
|
198
221
|
# currently focussed interface.
|
199
222
|
#
|
200
223
|
# @example
|
224
|
+
# Vedeu.trigger(:_show_cursor_, name)
|
225
|
+
# Vedeu.trigger(:_show_cursor_, Vedeu.focus)
|
201
226
|
# Vedeu.show_cursor(name)
|
227
|
+
# Vedeu.show_cursor(Vedeu.focus)
|
202
228
|
#
|
203
229
|
# @return [Vedeu::Models::Escape]
|
204
230
|
def show
|
data/lib/vedeu/dsl/view.rb
CHANGED
data/lib/vedeu/groups/group.rb
CHANGED
data/lib/vedeu/version.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
module Bindings
|
6
|
+
|
7
|
+
describe Cursors do
|
8
|
+
|
9
|
+
context 'the movement events are defined' do
|
10
|
+
it { Vedeu.bound?(:_cursor_down_).must_equal(true) }
|
11
|
+
it { Vedeu.bound?(:_cursor_left_).must_equal(true) }
|
12
|
+
it { Vedeu.bound?(:_cursor_origin_).must_equal(true) }
|
13
|
+
it { Vedeu.bound?(:_cursor_position_).must_equal(true) }
|
14
|
+
it { Vedeu.bound?(:_cursor_reposition_).must_equal(true) }
|
15
|
+
it { Vedeu.bound?(:_cursor_reset_).must_equal(true) }
|
16
|
+
it { Vedeu.bound?(:_cursor_right_).must_equal(true) }
|
17
|
+
it { Vedeu.bound?(:_cursor_up_).must_equal(true) }
|
18
|
+
end
|
19
|
+
|
20
|
+
end # Cursors
|
21
|
+
|
22
|
+
end # Bindings
|
23
|
+
|
24
|
+
end # Vedeu
|
@@ -7,14 +7,6 @@ module Vedeu
|
|
7
7
|
describe Movement do
|
8
8
|
|
9
9
|
context 'the movement events are defined' do
|
10
|
-
it { Vedeu.bound?(:_cursor_down_).must_equal(true) }
|
11
|
-
it { Vedeu.bound?(:_cursor_left_).must_equal(true) }
|
12
|
-
it { Vedeu.bound?(:_cursor_origin_).must_equal(true) }
|
13
|
-
it { Vedeu.bound?(:_cursor_position_).must_equal(true) }
|
14
|
-
it { Vedeu.bound?(:_cursor_reposition_).must_equal(true) }
|
15
|
-
it { Vedeu.bound?(:_cursor_reset_).must_equal(true) }
|
16
|
-
it { Vedeu.bound?(:_cursor_right_).must_equal(true) }
|
17
|
-
it { Vedeu.bound?(:_cursor_up_).must_equal(true) }
|
18
10
|
it { Vedeu.bound?(:_geometry_down_).must_equal(true) }
|
19
11
|
it { Vedeu.bound?(:_geometry_left_).must_equal(true) }
|
20
12
|
it { Vedeu.bound?(:_geometry_right_).must_equal(true) }
|
@@ -250,6 +250,13 @@ module Vedeu
|
|
250
250
|
it { subject.oy.must_equal(3) }
|
251
251
|
end
|
252
252
|
|
253
|
+
describe '#to_a' do
|
254
|
+
subject { instance.to_a }
|
255
|
+
|
256
|
+
it { subject.must_be_instance_of(Array) }
|
257
|
+
it { subject.must_equal([8, 19]) }
|
258
|
+
end
|
259
|
+
|
253
260
|
describe '#to_s' do
|
254
261
|
let(:visible) { true }
|
255
262
|
|
data/vedeu.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vedeu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: guard
|
@@ -299,6 +299,7 @@ files:
|
|
299
299
|
- lib/vedeu/bindings/all.rb
|
300
300
|
- lib/vedeu/bindings/application.rb
|
301
301
|
- lib/vedeu/bindings/bindings.rb
|
302
|
+
- lib/vedeu/bindings/cursors.rb
|
302
303
|
- lib/vedeu/bindings/document.rb
|
303
304
|
- lib/vedeu/bindings/drb.rb
|
304
305
|
- lib/vedeu/bindings/focus.rb
|
@@ -501,6 +502,7 @@ files:
|
|
501
502
|
- test/lib/vedeu/application/view_test.rb
|
502
503
|
- test/lib/vedeu/bindings/application_test.rb
|
503
504
|
- test/lib/vedeu/bindings/bindings_test.rb
|
505
|
+
- test/lib/vedeu/bindings/cursors_test.rb
|
504
506
|
- test/lib/vedeu/bindings/document_test.rb
|
505
507
|
- test/lib/vedeu/bindings/drb_test.rb
|
506
508
|
- test/lib/vedeu/bindings/focus_test.rb
|
@@ -714,6 +716,7 @@ test_files:
|
|
714
716
|
- test/lib/vedeu/application/view_test.rb
|
715
717
|
- test/lib/vedeu/bindings/application_test.rb
|
716
718
|
- test/lib/vedeu/bindings/bindings_test.rb
|
719
|
+
- test/lib/vedeu/bindings/cursors_test.rb
|
717
720
|
- test/lib/vedeu/bindings/document_test.rb
|
718
721
|
- test/lib/vedeu/bindings/drb_test.rb
|
719
722
|
- test/lib/vedeu/bindings/focus_test.rb
|