vedeu 0.4.3 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vedeu/api.rb +3 -1
- data/lib/vedeu/application.rb +1 -1
- data/lib/vedeu/bindings.rb +68 -101
- data/lib/vedeu/cursor/cursor.rb +1 -1
- data/lib/vedeu/cursor/move_cursor.rb +77 -1
- data/lib/vedeu/cursor/toggle_cursor.rb +2 -0
- data/lib/vedeu/distributed/all.rb +7 -0
- data/lib/vedeu/distributed/client.rb +23 -11
- data/lib/vedeu/distributed/server.rb +8 -0
- data/lib/vedeu/distributed/subprocess.rb +0 -24
- data/lib/vedeu/distributed/uri.rb +1 -8
- data/lib/vedeu/dsl/all.rb +3 -0
- data/lib/vedeu/dsl/components/all.rb +4 -4
- data/lib/vedeu/dsl/components/geometry.rb +2 -0
- data/lib/vedeu/dsl/components/keymap.rb +14 -3
- data/lib/vedeu/dsl/group.rb +69 -0
- data/lib/vedeu/dsl/interface.rb +9 -8
- data/lib/vedeu/dsl/shared/text.rb +3 -1
- data/lib/vedeu/events/event.rb +2 -2
- data/lib/vedeu/input/keymap.rb +1 -1
- data/lib/vedeu/models/geometry.rb +1 -1
- data/lib/vedeu/models/group.rb +24 -10
- data/lib/vedeu/models/view/lines.rb +1 -0
- data/lib/vedeu/output/all.rb +6 -1
- data/lib/vedeu/output/border.rb +1 -1
- data/lib/vedeu/{support → output}/esc.rb +0 -0
- data/lib/vedeu/output/foreground.rb +1 -1
- data/lib/vedeu/output/html_char.rb +2 -0
- data/lib/vedeu/output/html_renderer.rb +6 -0
- data/lib/vedeu/output/output.rb +21 -0
- data/lib/vedeu/{support → output}/refresh.rb +1 -1
- data/lib/vedeu/output/renderer.rb +3 -0
- data/lib/vedeu/{support → output}/text.rb +0 -0
- data/lib/vedeu/output/virtual_terminal.rb +2 -0
- data/lib/vedeu/support/all.rb +0 -7
- data/lib/vedeu/support/coercions.rb +7 -4
- data/lib/vedeu/support/terminal.rb +1 -1
- data/lib/vedeu/support/trace.rb +1 -1
- data/lib/vedeu/support/visible.rb +1 -1
- data/test/lib/vedeu/cursor/move_cursor_test.rb +60 -1
- data/test/lib/vedeu/distributed/client_test.rb +21 -2
- data/test/lib/vedeu/dsl/group_test.rb +52 -0
- data/test/lib/vedeu/models/group_test.rb +11 -4
- data/test/lib/vedeu/{support → output}/esc_test.rb +0 -0
- data/test/lib/vedeu/{support → output}/refresh_test.rb +0 -0
- data/test/lib/vedeu/{support → output}/text_test.rb +0 -0
- data/test/test_helper.rb +2 -0
- data/vedeu.gemspec +2 -1
- metadata +28 -24
- data/lib/vedeu/output/writer.rb +0 -44
- data/lib/vedeu/support/console.rb +0 -90
- data/lib/vedeu/support/node.rb +0 -51
- data/lib/vedeu/support/read.rb +0 -66
- data/lib/vedeu/support/write.rb +0 -86
- data/test/lib/vedeu/output/writer_test.rb +0 -32
- data/test/lib/vedeu/support/console_test.rb +0 -138
- data/test/lib/vedeu/support/read_test.rb +0 -86
- data/test/lib/vedeu/support/write_test.rb +0 -158
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce46fbb0f483168f5c1817fc857b4f1134afdc48
|
4
|
+
data.tar.gz: fe7eeaa6731a12dc572479b89f88de211cdf0c05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d996c0a1dc1ddb48cc050343ac91ee2d8ecba8035d833796d4a1fb0c07cc5cce75c265a12bd8b3c6c22de2e3b477805b602e20dcb8e4cc98112bf7e5cf31731c
|
7
|
+
data.tar.gz: 0d42cd88c6680854c1cd322762182d90f0dff970230db9064f709b382c36089a1c01cd406e24a74b9db6262055723eb37bd0cff64d06b4e5fe72cc923f39b23d
|
data/lib/vedeu/api.rb
CHANGED
@@ -3,9 +3,10 @@ require 'vedeu/support/terminal'
|
|
3
3
|
require 'vedeu/events/all'
|
4
4
|
require 'vedeu/models/all'
|
5
5
|
require 'vedeu/input/all'
|
6
|
-
require 'vedeu/dsl/components/
|
6
|
+
require 'vedeu/dsl/components/all'
|
7
7
|
require 'vedeu/dsl/composition'
|
8
8
|
require 'vedeu/dsl/shared/all'
|
9
|
+
require 'vedeu/dsl/group'
|
9
10
|
require 'vedeu/dsl/view'
|
10
11
|
|
11
12
|
module Vedeu
|
@@ -38,6 +39,7 @@ module Vedeu
|
|
38
39
|
def_delegators Vedeu::DSL::Border, :border
|
39
40
|
def_delegators Vedeu::DSL::Geometry, :geometry
|
40
41
|
def_delegators Vedeu::DSL::Keymap, :keymap
|
42
|
+
def_delegators Vedeu::DSL::Group, :group
|
41
43
|
def_delegators Vedeu::DSL::Use, :use
|
42
44
|
def_delegators Vedeu::DSL::View, :interface, :renders, :views
|
43
45
|
|
data/lib/vedeu/application.rb
CHANGED
data/lib/vedeu/bindings.rb
CHANGED
@@ -14,18 +14,11 @@ module Vedeu
|
|
14
14
|
#
|
15
15
|
module Bindings
|
16
16
|
|
17
|
-
# Clears the whole terminal space.
|
18
|
-
Vedeu.bind(:_clear_) do
|
19
|
-
Vedeu::Terminal.virtual.clear if Vedeu::Configuration.drb?
|
20
|
-
|
21
|
-
Vedeu::Terminal.clear
|
22
|
-
end
|
23
|
-
|
24
17
|
# Vedeu triggers this event when `:_exit_` is triggered. You can hook into
|
25
18
|
# this to perform a special action before the application terminates. Saving
|
26
19
|
# the user's work, session or preferences might be popular here.
|
27
20
|
Vedeu.bind(:_cleanup_) do
|
28
|
-
Vedeu.trigger(:_drb_stop_
|
21
|
+
Vedeu.trigger(:_drb_stop_)
|
29
22
|
Vedeu.trigger(:cleanup)
|
30
23
|
end
|
31
24
|
|
@@ -34,51 +27,40 @@ module Vedeu
|
|
34
27
|
Vedeu.trigger(:_keypress_, data)
|
35
28
|
end
|
36
29
|
|
37
|
-
Vedeu.bind(:_drb_retrieve_output_)
|
30
|
+
Vedeu.bind(:_drb_retrieve_output_) do
|
38
31
|
Vedeu.log(type: :drb, message: 'Retrieving output')
|
39
32
|
Vedeu::VirtualBuffer.retrieve
|
40
33
|
end
|
41
34
|
|
42
|
-
Vedeu.bind(:_drb_store_output_)
|
35
|
+
Vedeu.bind(:_drb_store_output_) do |data|
|
43
36
|
Vedeu.log(type: :drb, message: 'Storing output')
|
44
37
|
Vedeu::VirtualBuffer.store(Vedeu::Terminal.virtual.output(data))
|
45
38
|
end
|
46
39
|
|
47
|
-
Vedeu.bind(:_drb_restart_)
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
Vedeu.bind(:_drb_start_) do
|
53
|
-
Vedeu.log(type: :drb, message: 'Attempting to start')
|
54
|
-
Vedeu::Distributed::Server.start
|
55
|
-
end
|
56
|
-
|
57
|
-
Vedeu.bind(:_drb_status_) do
|
58
|
-
Vedeu.log(type: :drb, message: 'Fetching status')
|
59
|
-
Vedeu::Distributed::Server.status
|
60
|
-
end
|
61
|
-
|
62
|
-
Vedeu.bind(:_drb_stop_) do |message|
|
63
|
-
Vedeu.log(type: :drb, message: "Attempting to stop (#{message})")
|
64
|
-
Vedeu::Distributed::Server.stop
|
65
|
-
end
|
40
|
+
Vedeu.bind(:_drb_restart_) { Vedeu::Distributed::Server.restart }
|
41
|
+
Vedeu.bind(:_drb_start_) { Vedeu::Distributed::Server.start }
|
42
|
+
Vedeu.bind(:_drb_status_) { Vedeu::Distributed::Server.status }
|
43
|
+
Vedeu.bind(:_drb_stop_) { Vedeu::Distributed::Server.stop }
|
66
44
|
|
67
45
|
# When triggered, Vedeu will trigger a `:cleanup` event which you can define
|
68
46
|
# (to save files, etc) and attempt to exit.
|
69
|
-
Vedeu.bind(:_exit_)
|
47
|
+
Vedeu.bind(:_exit_) { Vedeu::Application.stop }
|
70
48
|
|
71
49
|
# Vedeu triggers this event when it is ready to enter the main loop. Client
|
72
50
|
# applications can listen for this event and perform some action(s), like
|
73
51
|
# render the first screen, interface or make a sound. When Vedeu triggers
|
74
52
|
# this event, the :_refresh_ event is also triggered automatically.
|
75
|
-
Vedeu.bind(:_initialize_)
|
53
|
+
Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
|
76
54
|
|
77
|
-
#
|
55
|
+
# Will cause the triggering of the `:key` event; which
|
78
56
|
# you should define to 'do things'. If the `escape` key is pressed, then
|
79
57
|
# `key` is triggered with the argument `:escape`, also an internal event
|
80
58
|
# `_mode_switch_` is triggered.
|
81
|
-
Vedeu.bind(:_keypress_)
|
59
|
+
Vedeu.bind(:_keypress_) do |key|
|
60
|
+
Vedeu.trigger(:key, key)
|
61
|
+
|
62
|
+
Vedeu.keypress(key)
|
63
|
+
end
|
82
64
|
|
83
65
|
# When triggered with a message will cause Vedeu to log the message if
|
84
66
|
# logging is enabled in the configuration.
|
@@ -96,79 +78,35 @@ module Vedeu
|
|
96
78
|
|
97
79
|
# Hide the cursor of the named interface or interface currently in focus.
|
98
80
|
Vedeu.bind(:_cursor_hide_) do |name|
|
99
|
-
named =
|
100
|
-
Vedeu.cursors.by_name(name)
|
101
|
-
|
102
|
-
else
|
103
|
-
Vedeu.cursor
|
104
|
-
|
105
|
-
end
|
81
|
+
named = name ? Vedeu.cursors.by_name(name) : Vedeu.cursor
|
106
82
|
|
107
83
|
ToggleCursor.hide(named)
|
108
84
|
end
|
109
85
|
|
110
86
|
# Show the cursor of the named interface or interface currently in focus.
|
111
87
|
Vedeu.bind(:_cursor_show_) do |name|
|
112
|
-
named =
|
113
|
-
Vedeu.cursors.by_name(name)
|
114
|
-
|
115
|
-
else
|
116
|
-
Vedeu.cursor
|
117
|
-
|
118
|
-
end
|
88
|
+
named = name ? Vedeu.cursors.by_name(name) : Vedeu.cursor
|
119
89
|
|
120
90
|
ToggleCursor.show(named)
|
121
91
|
end
|
122
92
|
|
123
|
-
#
|
124
|
-
|
125
|
-
Vedeu.bind(:_cursor_down_) do
|
126
|
-
interface = Vedeu.interfaces.current
|
93
|
+
# @see {Vedeu::MoveCursor}
|
94
|
+
Vedeu.bind(:_cursor_down_) { |name| MoveCursor.by_name(:down, name) }
|
127
95
|
|
128
|
-
|
96
|
+
# @see {Vedeu::MoveCursor}
|
97
|
+
Vedeu.bind(:_cursor_left_) { |name| MoveCursor.by_name(:left, name) }
|
129
98
|
|
130
|
-
|
131
|
-
|
99
|
+
# @see {Vedeu::MoveCursor}
|
100
|
+
Vedeu.bind(:_cursor_right_) { |name| MoveCursor.by_name(:right, name) }
|
132
101
|
|
133
|
-
#
|
134
|
-
|
135
|
-
Vedeu.bind(:_cursor_left_) do
|
136
|
-
interface = Vedeu.interfaces.current
|
102
|
+
# @see {Vedeu::MoveCursor}
|
103
|
+
Vedeu.bind(:_cursor_up_) { |name| MoveCursor.by_name(:up, name) }
|
137
104
|
|
138
|
-
|
139
|
-
|
140
|
-
Refresh.by_focus
|
141
|
-
end
|
105
|
+
# @see {Vedeu::MoveCursor}
|
106
|
+
Vedeu.bind(:_cursor_origin_) { |name| MoveCursor.by_name(:origin, name) }
|
142
107
|
|
143
|
-
#
|
144
|
-
|
145
|
-
Vedeu.bind(:_cursor_right_) do
|
146
|
-
interface = Vedeu.interfaces.current
|
147
|
-
|
148
|
-
MoveCursor.right(Vedeu.cursor, interface)
|
149
|
-
|
150
|
-
Refresh.by_focus
|
151
|
-
end
|
152
|
-
|
153
|
-
# Move the cursor up one character in the interface currently in focus.
|
154
|
-
# Will not exceed the border or boundary of the interface.
|
155
|
-
Vedeu.bind(:_cursor_up_) do
|
156
|
-
interface = Vedeu.interfaces.current
|
157
|
-
|
158
|
-
MoveCursor.up(Vedeu.cursor, interface)
|
159
|
-
|
160
|
-
Refresh.by_focus
|
161
|
-
end
|
162
|
-
|
163
|
-
# Moves the cursor to the top left position of the interface currently in
|
164
|
-
# focus; respecting a border if present.
|
165
|
-
Vedeu.bind(:_cursor_origin_) do
|
166
|
-
interface = Vedeu.interfaces.current
|
167
|
-
|
168
|
-
MoveCursor.origin(Vedeu.cursor, interface)
|
169
|
-
|
170
|
-
Refresh.by_focus
|
171
|
-
end
|
108
|
+
# @see {Vedeu::MoveCursor}
|
109
|
+
Vedeu.bind(:_cursor_reset_) { |name| Vedeu.trigger(:_cursor_origin_, name) }
|
172
110
|
|
173
111
|
# When triggered with an interface name will focus that interface and
|
174
112
|
# restore the cursor position and visibility.
|
@@ -219,22 +157,51 @@ module Vedeu
|
|
219
157
|
# starting at the current item to the last item.
|
220
158
|
Vedeu.bind(:_menu_view_) { |name| Vedeu.menus.find(name).view }
|
221
159
|
|
222
|
-
#
|
223
|
-
#
|
224
|
-
Vedeu.bind(:
|
225
|
-
if name
|
226
|
-
Vedeu::
|
160
|
+
# Clears the whole terminal space, or the named interface area to be cleared
|
161
|
+
# if given.
|
162
|
+
Vedeu.bind(:_clear_) do |name|
|
163
|
+
if name && Vedeu.interfaces.registered?(name)
|
164
|
+
Vedeu::Output.clear(Vedeu.interfaces.find(name))
|
227
165
|
|
228
166
|
else
|
229
|
-
Vedeu::
|
167
|
+
Vedeu::Terminal.virtual.clear if Vedeu::Configuration.drb?
|
168
|
+
|
169
|
+
Vedeu::Terminal.clear
|
170
|
+
end
|
171
|
+
end
|
230
172
|
|
173
|
+
# Clears the spaces occupied by the interfaces belonging to the named group.
|
174
|
+
Vedeu.bind(:_clear_group_) do |name|
|
175
|
+
Vedeu.groups.find(name).members.each do |group_name|
|
176
|
+
Vedeu.trigger(:_clear_, group_name)
|
231
177
|
end
|
232
178
|
end
|
233
179
|
|
234
|
-
#
|
235
|
-
|
236
|
-
|
237
|
-
|
180
|
+
# Will cause all interfaces to refresh, or the named interface if given.
|
181
|
+
Vedeu.bind(:_refresh_) do |name|
|
182
|
+
name ? Vedeu::Refresh.by_name(name) : Vedeu::Refresh.all
|
183
|
+
end
|
184
|
+
|
185
|
+
# Will cause all interfaces in the named group to refresh.
|
186
|
+
Vedeu.bind(:_refresh_group_) { |name| Vedeu::Refresh.by_group(name) }
|
187
|
+
|
188
|
+
# Will clear the terminal and then show all of the interfaces belonging to
|
189
|
+
# the named group.
|
190
|
+
Vedeu.bind(:_show_group_) do |name|
|
191
|
+
Vedeu.trigger(:_clear_)
|
192
|
+
|
193
|
+
Vedeu.trigger(:_refresh_group_, name)
|
194
|
+
end
|
195
|
+
|
196
|
+
# Will hide all of the interfaces belonging to the named group. Useful for
|
197
|
+
# hiding part of that which is currently displaying in the terminal.
|
198
|
+
#
|
199
|
+
# @note
|
200
|
+
# This may be rarely used, since the action of showing a group using
|
201
|
+
# `Vedeu.trigger(:_show_group_, group_name)` will effectively clear the
|
202
|
+
# terminal and show the new group.
|
203
|
+
Vedeu.bind(:_hide_group_) do |name|
|
204
|
+
Vedeu.trigger(:_clear_group_, name)
|
238
205
|
end
|
239
206
|
|
240
207
|
end # Bindings
|
data/lib/vedeu/cursor/cursor.rb
CHANGED
@@ -18,7 +18,7 @@ module Vedeu
|
|
18
18
|
|
19
19
|
attr_reader :attributes, :name, :ox, :oy, :state, :x, :y
|
20
20
|
|
21
|
-
#
|
21
|
+
# Returns a new instance of Cursor.
|
22
22
|
#
|
23
23
|
# @param attributes [Hash]
|
24
24
|
# @option attributes name [String] The name of the interface this cursor
|
@@ -4,7 +4,34 @@ require 'vedeu/geometry/position_validator'
|
|
4
4
|
|
5
5
|
module Vedeu
|
6
6
|
|
7
|
-
# Adjusts the position of the cursor.
|
7
|
+
# Adjusts the position of the cursor. To use this class, call the appropriate
|
8
|
+
# event:
|
9
|
+
#
|
10
|
+
# @example
|
11
|
+
# Vedeu.trigger(:_cursor_down_)
|
12
|
+
#
|
13
|
+
# Vedeu.trigger(:_cursor_left_) # When a name is not given, the cursor in
|
14
|
+
# # the interface which is currently in focus
|
15
|
+
# # should move to the left.
|
16
|
+
#
|
17
|
+
# Vedeu.trigger(:_cursor_left_, 'my_interface')
|
18
|
+
# # When a name is given, the cursor instance
|
19
|
+
# # belonging to this interface moves to the
|
20
|
+
# # left.
|
21
|
+
#
|
22
|
+
# Vedeu.trigger(:_cursor_right_)
|
23
|
+
# Vedeu.trigger(:_cursor_up_)
|
24
|
+
#
|
25
|
+
# Vedeu.trigger(:_cursor_origin_) # /or/
|
26
|
+
# Vedeu.trigger(:_cursor_origin_, 'my_interface')
|
27
|
+
# # Moves the cursor to the top left of the
|
28
|
+
# # named or current interface in focus.
|
29
|
+
#
|
30
|
+
# @note
|
31
|
+
# The cursor may not be visible, but it will still move if requested.
|
32
|
+
# The cursor will not exceed the border or boundary of the interface.
|
33
|
+
# The cursor will move freely within the bounds of the interface,
|
34
|
+
# irrespective of content.
|
8
35
|
#
|
9
36
|
class MoveCursor
|
10
37
|
|
@@ -19,6 +46,8 @@ module Vedeu
|
|
19
46
|
:height,
|
20
47
|
:width
|
21
48
|
|
49
|
+
# Returns an instance of MoveCursor.
|
50
|
+
#
|
22
51
|
# @param cursor [Cursor]
|
23
52
|
# @param interface [Interface]
|
24
53
|
# @param dy [Fixnum] Move up (-1), or down (1), or no action (0).
|
@@ -31,8 +60,37 @@ module Vedeu
|
|
31
60
|
@interface = interface
|
32
61
|
end
|
33
62
|
|
63
|
+
# Move the named cursor, or that which is currently in focus in the
|
64
|
+
# specified direction.
|
65
|
+
#
|
66
|
+
# @param direction [Symbol] The direction of travel. Directions include:
|
67
|
+
# (:down, :left, :right, :up, :origin). When ':origin' the cursor is moved
|
68
|
+
# to the top left of the interface.
|
69
|
+
# @param name [String|NilClass] The name of the interface/cursor to be
|
70
|
+
# moved; when not given, the interface currently in focus determines which
|
71
|
+
# cursor instance to move.
|
72
|
+
# @return [Cursor]
|
73
|
+
def self.by_name(direction, name = nil)
|
74
|
+
if name
|
75
|
+
cursor = Vedeu.cursors.by_name(name)
|
76
|
+
interface = Vedeu.interfaces.find(name)
|
77
|
+
new_cursor = MoveCursor.send(direction, cursor, interface)
|
78
|
+
Refresh.by_name(name)
|
79
|
+
|
80
|
+
else
|
81
|
+
cursor = Vedeu.cursor
|
82
|
+
interface = Vedeu.interfaces.current
|
83
|
+
new_cursor = MoveCursor.send(direction, cursor, interface)
|
84
|
+
Refresh.by_focus
|
85
|
+
|
86
|
+
end
|
87
|
+
new_cursor
|
88
|
+
end
|
89
|
+
|
34
90
|
# Moves the cursor down by one row.
|
35
91
|
#
|
92
|
+
# @param cursor [Cursor]
|
93
|
+
# @param interface [Interface]
|
36
94
|
# @return [Cursor]
|
37
95
|
def self.down(cursor, interface)
|
38
96
|
new(cursor, interface, 1, 0).move
|
@@ -40,6 +98,8 @@ module Vedeu
|
|
40
98
|
|
41
99
|
# Moves the cursor left by one column.
|
42
100
|
#
|
101
|
+
# @param cursor [Cursor]
|
102
|
+
# @param interface [Interface]
|
43
103
|
# @return [Cursor]
|
44
104
|
def self.left(cursor, interface)
|
45
105
|
return cursor unless cursor.ox > 0
|
@@ -49,6 +109,8 @@ module Vedeu
|
|
49
109
|
|
50
110
|
# Moves the cursor right by one column.
|
51
111
|
#
|
112
|
+
# @param cursor [Cursor]
|
113
|
+
# @param interface [Interface]
|
52
114
|
# @return [Cursor]
|
53
115
|
def self.right(cursor, interface)
|
54
116
|
new(cursor, interface, 0, 1).move
|
@@ -56,6 +118,8 @@ module Vedeu
|
|
56
118
|
|
57
119
|
# Moves the cursor up by one row.
|
58
120
|
#
|
121
|
+
# @param cursor [Cursor]
|
122
|
+
# @param interface [Interface]
|
59
123
|
# @return [Cursor]
|
60
124
|
def self.up(cursor, interface)
|
61
125
|
return cursor unless cursor.oy > 0
|
@@ -65,6 +129,8 @@ module Vedeu
|
|
65
129
|
|
66
130
|
# Moves the cursor to the top left coordinate of the interface.
|
67
131
|
#
|
132
|
+
# @param cursor [Cursor]
|
133
|
+
# @param interface [Interface]
|
68
134
|
# @return [Cursor]
|
69
135
|
def self.origin(cursor, interface)
|
70
136
|
new(cursor, interface, (0 - cursor.y), (0 - cursor.x)).move
|
@@ -98,6 +164,9 @@ module Vedeu
|
|
98
164
|
coordinate.y_position(oy))
|
99
165
|
end
|
100
166
|
|
167
|
+
# Apply the direction amount to the cursor offset. If the offset is less
|
168
|
+
# than 0, correct to 0.
|
169
|
+
#
|
101
170
|
# @return [Fixnum]
|
102
171
|
def ox
|
103
172
|
ox = cursor.ox + dx
|
@@ -105,6 +174,9 @@ module Vedeu
|
|
105
174
|
ox
|
106
175
|
end
|
107
176
|
|
177
|
+
# Apply the direction amount to the cursor offset. If the offset is less
|
178
|
+
# than 0, correct to 0.
|
179
|
+
#
|
108
180
|
# @return [Fixnum]
|
109
181
|
def oy
|
110
182
|
oy = cursor.oy + dy
|
@@ -120,6 +192,8 @@ module Vedeu
|
|
120
192
|
top)
|
121
193
|
end
|
122
194
|
|
195
|
+
# Return the height of the interface, minus any borders.
|
196
|
+
#
|
123
197
|
# @return [Fixnum]
|
124
198
|
def bordered_height
|
125
199
|
return border.height if border?
|
@@ -127,6 +201,8 @@ module Vedeu
|
|
127
201
|
height
|
128
202
|
end
|
129
203
|
|
204
|
+
# Return the width of the interface, minus any borders.
|
205
|
+
#
|
130
206
|
# @return [Fixnum]
|
131
207
|
def bordered_width
|
132
208
|
return border.width if border?
|