vedeu 0.6.42 → 0.6.43
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.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/vedeu/all.rb +1 -1
- data/lib/vedeu/buffers/buffer.rb +28 -0
- data/lib/vedeu/colours/colour.rb +5 -0
- data/lib/vedeu/cursors/all.rb +1 -0
- data/lib/vedeu/cursors/cursor.rb +28 -8
- data/lib/vedeu/cursors/dsl.rb +68 -0
- data/lib/vedeu/cursors/refresh.rb +11 -9
- data/lib/vedeu/dsl/view.rb +1 -0
- data/lib/vedeu/interfaces/dsl.rb +1 -50
- data/lib/vedeu/interfaces/interface.rb +18 -12
- data/lib/vedeu/models/toggleable.rb +44 -9
- data/lib/vedeu/models/views/view.rb +14 -8
- data/lib/vedeu/null/generic.rb +1 -0
- data/lib/vedeu/output/renderers/all.rb +6 -3
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/buffers/buffer_test.rb +71 -0
- data/test/lib/vedeu/colours/colour_test.rb +6 -0
- data/test/lib/vedeu/cursors/dsl_test.rb +91 -0
- data/test/lib/vedeu/cursors/refresh_test.rb +31 -21
- data/test/lib/vedeu/interfaces/dsl_test.rb +0 -76
- data/test/lib/vedeu/interfaces/interface_test.rb +26 -21
- data/test/lib/vedeu/models/toggleable_test.rb +17 -0
- data/test/lib/vedeu/models/views/view_test.rb +2 -0
- data/test/support/examples/material_colours_app.rb +1 -4
- metadata +5 -11
- data/lib/vedeu/output/renderers/escape_sequence.rb +0 -46
- data/lib/vedeu/output/renderers/null.rb +0 -36
- data/lib/vedeu/output/renderers/text.rb +0 -37
- data/test/lib/vedeu/output/renderers/escape_sequence_test.rb +0 -78
- data/test/lib/vedeu/output/renderers/null_test.rb +0 -36
- data/test/lib/vedeu/output/renderers/text_test.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76cf0490e2ade62f367af8687bd0c3405cb50576
|
4
|
+
data.tar.gz: 22ead63f283a82e549c1473f894818d605e20c56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1303f2563550fdf5fdcffe76e105d8841ed1b9e45ba7f8bfdaecdaab1215b1c4faa91dc19b0647f74262dd0631d669dc9a5c19c4ad194511c81dc74aeb2ace23
|
7
|
+
data.tar.gz: 98b5280ad56de99846f43bda276d3abb5dc55c94cf1cba0079042a2b1f89174d7a5b947583554d9217fb3b58f67ec7373d7f6cfec772ad7d8b03daf2345e9962
|
data/README.md
CHANGED
data/lib/vedeu/all.rb
CHANGED
@@ -27,11 +27,11 @@ require 'vedeu/null/all'
|
|
27
27
|
require 'vedeu/models/views/all'
|
28
28
|
require 'vedeu/models/all'
|
29
29
|
require 'vedeu/application/all'
|
30
|
+
require 'vedeu/cursors/all'
|
30
31
|
require 'vedeu/dsl/all'
|
31
32
|
require 'vedeu/borders/all'
|
32
33
|
require 'vedeu/buffers/all'
|
33
34
|
require 'vedeu/colours/all'
|
34
|
-
require 'vedeu/cursors/all'
|
35
35
|
require 'vedeu/distributed/all'
|
36
36
|
require 'vedeu/editor/all'
|
37
37
|
require 'vedeu/geometry/all'
|
data/lib/vedeu/buffers/buffer.rb
CHANGED
@@ -74,6 +74,34 @@ module Vedeu
|
|
74
74
|
true
|
75
75
|
end
|
76
76
|
|
77
|
+
# Return a boolean indicating whether the cursor should be
|
78
|
+
# visible for this view.
|
79
|
+
#
|
80
|
+
# On a per-view (and per-interface) basis, the cursor can be
|
81
|
+
# set to be visible or not visible.
|
82
|
+
#
|
83
|
+
# - If the cursor is visible, then refresh actions or events
|
84
|
+
# involving the cursor will act as normal; hiding and showing
|
85
|
+
# as the view is rendered or as events are triggered to change
|
86
|
+
# the visibility state.
|
87
|
+
# - If the cursor is not visible, then refresh actions and
|
88
|
+
# events involving the cursor will be ignored- the cursor is
|
89
|
+
# not shown, so do no work.
|
90
|
+
#
|
91
|
+
# @return [Boolean]
|
92
|
+
def cursor_visible?
|
93
|
+
if front?
|
94
|
+
front.cursor_visible?
|
95
|
+
|
96
|
+
elsif previous?
|
97
|
+
previous.cursor_visible?
|
98
|
+
|
99
|
+
else
|
100
|
+
Vedeu.interfaces.by_name(name).cursor_visible?
|
101
|
+
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
77
105
|
# Return a boolean indicating content presence on the buffer
|
78
106
|
# type.
|
79
107
|
#
|
data/lib/vedeu/colours/colour.rb
CHANGED
data/lib/vedeu/cursors/all.rb
CHANGED
data/lib/vedeu/cursors/cursor.rb
CHANGED
@@ -200,8 +200,10 @@ module Vedeu
|
|
200
200
|
# @example
|
201
201
|
# Vedeu.trigger(:_hide_cursor_, name)
|
202
202
|
# Vedeu.trigger(:_hide_cursor_, Vedeu.focus)
|
203
|
+
# Vedeu.trigger(:_hide_cursor_)
|
203
204
|
# Vedeu.hide_cursor(name)
|
204
205
|
# Vedeu.hide_cursor(Vedeu.focus)
|
206
|
+
# Vedeu.hide_cursor
|
205
207
|
#
|
206
208
|
# @return [Vedeu::Models::Escape]
|
207
209
|
def hide
|
@@ -233,8 +235,10 @@ module Vedeu
|
|
233
235
|
# @example
|
234
236
|
# Vedeu.trigger(:_show_cursor_, name)
|
235
237
|
# Vedeu.trigger(:_show_cursor_, Vedeu.focus)
|
238
|
+
# Vedeu.trigger(:_show_cursor_)
|
236
239
|
# Vedeu.show_cursor(name)
|
237
240
|
# Vedeu.show_cursor(Vedeu.focus)
|
241
|
+
# Vedeu.show_cursor
|
238
242
|
#
|
239
243
|
# @return [Vedeu::Models::Escape]
|
240
244
|
def show
|
@@ -336,30 +340,46 @@ module Vedeu
|
|
336
340
|
|
337
341
|
# See {file:docs/cursors.md}
|
338
342
|
Vedeu.bind(:_cursor_left_) do |name|
|
339
|
-
Vedeu.cursors.by_name(name)
|
343
|
+
cursor = Vedeu.cursors.by_name(name)
|
340
344
|
|
341
|
-
|
345
|
+
if cursor.visible?
|
346
|
+
cursor.move_left
|
347
|
+
|
348
|
+
Vedeu.trigger(:_refresh_cursor_, name)
|
349
|
+
end
|
342
350
|
end
|
343
351
|
|
344
352
|
# See {file:docs/cursors.md}
|
345
353
|
Vedeu.bind(:_cursor_down_) do |name|
|
346
|
-
Vedeu.cursors.by_name(name)
|
354
|
+
cursor = Vedeu.cursors.by_name(name)
|
347
355
|
|
348
|
-
|
356
|
+
if cursor.visible?
|
357
|
+
cursor.move_down
|
358
|
+
|
359
|
+
Vedeu.trigger(:_refresh_cursor_, name)
|
360
|
+
end
|
349
361
|
end
|
350
362
|
|
351
363
|
# See {file:docs/cursors.md}
|
352
364
|
Vedeu.bind(:_cursor_up_) do |name|
|
353
|
-
Vedeu.cursors.by_name(name)
|
365
|
+
cursor = Vedeu.cursors.by_name(name)
|
354
366
|
|
355
|
-
|
367
|
+
if cursor.visible?
|
368
|
+
cursor.move_up
|
369
|
+
|
370
|
+
Vedeu.trigger(:_refresh_cursor_, name)
|
371
|
+
end
|
356
372
|
end
|
357
373
|
|
358
374
|
# See {file:docs/cursors.md}
|
359
375
|
Vedeu.bind(:_cursor_right_) do |name|
|
360
|
-
Vedeu.cursors.by_name(name)
|
376
|
+
cursor = Vedeu.cursors.by_name(name)
|
361
377
|
|
362
|
-
|
378
|
+
if cursor.visible?
|
379
|
+
cursor.move_right
|
380
|
+
|
381
|
+
Vedeu.trigger(:_refresh_cursor_, name)
|
382
|
+
end
|
363
383
|
end
|
364
384
|
|
365
385
|
# See {file:docs/cursors.md}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
module Cursors
|
4
|
+
|
5
|
+
# Control the visibility of the cursor for each interface/view.
|
6
|
+
#
|
7
|
+
module DSL
|
8
|
+
|
9
|
+
# Set the cursor visibility on an interface.
|
10
|
+
#
|
11
|
+
# @param value [Boolean] Any value other than nil or false will
|
12
|
+
# evaluate
|
13
|
+
# to true.
|
14
|
+
#
|
15
|
+
# @example
|
16
|
+
# Vedeu.interface :my_interface do
|
17
|
+
# cursor true # => show the cursor for this interface
|
18
|
+
# # or...
|
19
|
+
# cursor :show # => both of these are equivalent to line
|
20
|
+
# # above
|
21
|
+
# # or...
|
22
|
+
# cursor! #
|
23
|
+
# # ...
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
# Vedeu.interface :my_interface do
|
27
|
+
# cursor false # => hide the cursor for this interface
|
28
|
+
# # or...
|
29
|
+
# cursor nil # => as above
|
30
|
+
# # ...
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# Vedeu.view :my_interface do
|
34
|
+
# cursor true # => Specify the visibility of the cursor when
|
35
|
+
# # the view is rendered.
|
36
|
+
# # ...
|
37
|
+
# end
|
38
|
+
#
|
39
|
+
# @return [Vedeu::Cursors::Cursor]
|
40
|
+
def cursor(value = true)
|
41
|
+
boolean = value ? true : false
|
42
|
+
|
43
|
+
model.cursor_visible = boolean
|
44
|
+
|
45
|
+
Vedeu::Cursors::Cursor.store(name: model.name, visible: boolean)
|
46
|
+
end
|
47
|
+
|
48
|
+
# Set the cursor to visible for the interface or view.
|
49
|
+
#
|
50
|
+
# @return [Vedeu::Cursors::Cursor]
|
51
|
+
def cursor!
|
52
|
+
cursor(true)
|
53
|
+
end
|
54
|
+
alias_method :show_cursor!, :cursor!
|
55
|
+
|
56
|
+
# Set the cursor to invisible for the interface or view.
|
57
|
+
#
|
58
|
+
# @return [Vedeu::Cursors::Cursor]
|
59
|
+
def no_cursor!
|
60
|
+
cursor(false)
|
61
|
+
end
|
62
|
+
alias_method :hide_cursor!, :no_cursor!
|
63
|
+
|
64
|
+
end # DSL
|
65
|
+
|
66
|
+
end # Cursors
|
67
|
+
|
68
|
+
end # Vedeu
|
@@ -21,8 +21,6 @@ module Vedeu
|
|
21
21
|
# @param (see #initialize)
|
22
22
|
# @return (see #by_name)
|
23
23
|
def self.by_name(name = Vedeu.focus)
|
24
|
-
name || Vedeu.focus
|
25
|
-
|
26
24
|
new(name).by_name
|
27
25
|
end
|
28
26
|
|
@@ -32,7 +30,7 @@ module Vedeu
|
|
32
30
|
# cursor to be refreshed. Defaults to `Vedeu.focus`.
|
33
31
|
# @return [Vedeu::Cursors::Refresh]
|
34
32
|
def initialize(name)
|
35
|
-
@name =
|
33
|
+
@name = name
|
36
34
|
end
|
37
35
|
|
38
36
|
# Renders the cursor in the terminal. If the cursor's x or y
|
@@ -42,18 +40,22 @@ module Vedeu
|
|
42
40
|
#
|
43
41
|
# @return [Array]
|
44
42
|
def by_name
|
45
|
-
|
43
|
+
refresh_view if refresh_view?
|
46
44
|
|
47
45
|
cursor.render
|
48
46
|
end
|
49
47
|
|
50
|
-
|
48
|
+
private
|
51
49
|
|
52
|
-
# @!attribute [r] name
|
53
50
|
# @return [String|Symbol]
|
54
|
-
|
51
|
+
def name
|
52
|
+
present?(@name) ? @name : Vedeu.focus
|
53
|
+
end
|
55
54
|
|
56
|
-
|
55
|
+
# @return [void]
|
56
|
+
def refresh_view
|
57
|
+
Vedeu.trigger(:_refresh_view_content_, name)
|
58
|
+
end
|
57
59
|
|
58
60
|
# Returns true when the view should be refreshed. This is
|
59
61
|
# determined by checking that the offsets for x and y are
|
@@ -61,7 +63,7 @@ module Vedeu
|
|
61
63
|
#
|
62
64
|
# @return [Boolean]
|
63
65
|
def refresh_view?
|
64
|
-
cursor.ox >= width || cursor.oy >= height
|
66
|
+
cursor.visible? && cursor.ox >= width || cursor.oy >= height
|
65
67
|
end
|
66
68
|
|
67
69
|
# @return [Vedeu::Cursors::Cursor]
|
data/lib/vedeu/dsl/view.rb
CHANGED
data/lib/vedeu/interfaces/dsl.rb
CHANGED
@@ -8,6 +8,7 @@ module Vedeu
|
|
8
8
|
|
9
9
|
include Vedeu::Common
|
10
10
|
include Vedeu::DSL
|
11
|
+
include Vedeu::Cursors::DSL
|
11
12
|
include Vedeu::DSL::Presentation
|
12
13
|
include Vedeu::DSL::Shared
|
13
14
|
include Vedeu::DSL::Text
|
@@ -101,49 +102,6 @@ module Vedeu
|
|
101
102
|
|
102
103
|
end # Eigenclass
|
103
104
|
|
104
|
-
# Set the cursor visibility on an interface.
|
105
|
-
#
|
106
|
-
# @param value [Boolean] Any value other than nil or false will
|
107
|
-
# evaluate to true.
|
108
|
-
#
|
109
|
-
# @example
|
110
|
-
# Vedeu.interface :my_interface do
|
111
|
-
# cursor true # => show the cursor for this interface
|
112
|
-
# # or...
|
113
|
-
# cursor :show # => both of these are equivalent to line
|
114
|
-
# # above
|
115
|
-
# # or...
|
116
|
-
# cursor! #
|
117
|
-
# # ...
|
118
|
-
# end
|
119
|
-
#
|
120
|
-
# Vedeu.interface :my_interface do
|
121
|
-
# cursor false # => hide the cursor for this interface
|
122
|
-
# # or...
|
123
|
-
# cursor nil # => as above
|
124
|
-
# # ...
|
125
|
-
# end
|
126
|
-
#
|
127
|
-
# Vedeu.view :my_interface do
|
128
|
-
# cursor true # => Specify the visibility of the cursor when
|
129
|
-
# # the view is rendered.
|
130
|
-
# # ...
|
131
|
-
# end
|
132
|
-
#
|
133
|
-
# @return [Vedeu::Cursors::Cursor]
|
134
|
-
def cursor(value = true)
|
135
|
-
boolean = value ? true : false
|
136
|
-
|
137
|
-
Vedeu::Cursors::Cursor.store(name: model.name, visible: boolean)
|
138
|
-
end
|
139
|
-
|
140
|
-
# Set the cursor to visible for the interface.
|
141
|
-
#
|
142
|
-
# @return [Vedeu::Cursors::Cursor]
|
143
|
-
def cursor!
|
144
|
-
cursor(true)
|
145
|
-
end
|
146
|
-
|
147
105
|
# To maintain performance interfaces can be delayed from
|
148
106
|
# refreshing too often, the reduces artefacts particularly when
|
149
107
|
# resizing the terminal screen.
|
@@ -271,13 +229,6 @@ module Vedeu
|
|
271
229
|
model.name = value
|
272
230
|
end
|
273
231
|
|
274
|
-
# Set the cursor to invisible for the interface.
|
275
|
-
#
|
276
|
-
# @return [Vedeu::Cursors::Cursor]
|
277
|
-
def no_cursor!
|
278
|
-
cursor(false)
|
279
|
-
end
|
280
|
-
|
281
232
|
# Set the interface to visible.
|
282
233
|
#
|
283
234
|
# @example
|
@@ -19,6 +19,11 @@ module Vedeu
|
|
19
19
|
# @return [Fixnum|Float]
|
20
20
|
attr_accessor :client
|
21
21
|
|
22
|
+
# @!attribute [rw] cursor_visible
|
23
|
+
# @return [Boolean]
|
24
|
+
attr_accessor :cursor_visible
|
25
|
+
alias_method :cursor_visible?, :cursor_visible
|
26
|
+
|
22
27
|
# @!attribute [rw] delay
|
23
28
|
# @return [Fixnum|Float]
|
24
29
|
attr_accessor :delay
|
@@ -49,6 +54,7 @@ module Vedeu
|
|
49
54
|
# @param attributes [Hash]
|
50
55
|
# @option attributes client [Vedeu::Client]
|
51
56
|
# @option attributes colour [Vedeu::Colours::Colour]
|
57
|
+
# @option attributes cursor_visible [Boolean]
|
52
58
|
# @option attributes delay [Float]
|
53
59
|
# @option attributes group [String]
|
54
60
|
# @option attributes name [String|Symbol]
|
@@ -112,18 +118,18 @@ module Vedeu
|
|
112
118
|
# @return [Hash]
|
113
119
|
def defaults
|
114
120
|
{
|
115
|
-
client:
|
116
|
-
colour:
|
117
|
-
|
118
|
-
delay:
|
119
|
-
editable:
|
120
|
-
group:
|
121
|
-
name:
|
122
|
-
parent:
|
123
|
-
repository:
|
124
|
-
style:
|
125
|
-
visible:
|
126
|
-
zindex:
|
121
|
+
client: nil,
|
122
|
+
colour: Vedeu::Colours::Colour.default,
|
123
|
+
cursor_visible: true,
|
124
|
+
delay: 0.0,
|
125
|
+
editable: false,
|
126
|
+
group: '',
|
127
|
+
name: '',
|
128
|
+
parent: nil,
|
129
|
+
repository: Vedeu.interfaces,
|
130
|
+
style: :normal,
|
131
|
+
visible: true,
|
132
|
+
zindex: 0,
|
127
133
|
}
|
128
134
|
end
|
129
135
|
|
@@ -46,10 +46,10 @@ module Vedeu
|
|
46
46
|
#
|
47
47
|
module ClassMethods
|
48
48
|
|
49
|
-
# Hides the model
|
49
|
+
# Hides the named model, or without a name, the model with same
|
50
|
+
# name as the currently focussed interface.
|
50
51
|
#
|
51
52
|
# @example
|
52
|
-
# Vedeu.hide_cursor(name)
|
53
53
|
# Vedeu.hide_group(name)
|
54
54
|
# Vedeu.hide_interface(name)
|
55
55
|
#
|
@@ -58,14 +58,13 @@ module Vedeu
|
|
58
58
|
def hide(name = Vedeu.focus)
|
59
59
|
repository.by_name(name).hide
|
60
60
|
end
|
61
|
-
alias_method :hide_cursor, :hide
|
62
61
|
alias_method :hide_group, :hide
|
63
62
|
alias_method :hide_interface, :hide
|
64
63
|
|
65
|
-
# Shows the model
|
64
|
+
# Shows the named model, or without a name, the model with same
|
65
|
+
# name as the currently focussed interface.
|
66
66
|
#
|
67
67
|
# @example
|
68
|
-
# Vedeu.show_cursor(name)
|
69
68
|
# Vedeu.show_group(name)
|
70
69
|
# Vedeu.show_interface(name)
|
71
70
|
#
|
@@ -74,14 +73,13 @@ module Vedeu
|
|
74
73
|
def show(name = Vedeu.focus)
|
75
74
|
repository.by_name(name).show
|
76
75
|
end
|
77
|
-
alias_method :show_cursor, :show
|
78
76
|
alias_method :show_group, :show
|
79
77
|
alias_method :show_interface, :show
|
80
78
|
|
81
|
-
# Toggles the visibility of the model
|
79
|
+
# Toggles the visibility of the named model, or without a name,
|
80
|
+
# the model with same name as the currently focussed interface.
|
82
81
|
#
|
83
82
|
# @example
|
84
|
-
# Vedeu.toggle_cursor(name)
|
85
83
|
# Vedeu.toggle_group(name)
|
86
84
|
# Vedeu.toggle_interface(name)
|
87
85
|
#
|
@@ -90,10 +88,47 @@ module Vedeu
|
|
90
88
|
def toggle(name = Vedeu.focus)
|
91
89
|
repository.by_name(name).toggle
|
92
90
|
end
|
93
|
-
alias_method :toggle_cursor, :toggle
|
94
91
|
alias_method :toggle_group, :toggle
|
95
92
|
alias_method :toggle_interface, :toggle
|
96
93
|
|
94
|
+
# @example
|
95
|
+
# Vedeu.hide_cursor(name)
|
96
|
+
#
|
97
|
+
# @param name [String|Symbol]
|
98
|
+
# @return [void]
|
99
|
+
# @see Vedeu::Toggleable#hide
|
100
|
+
def hide_cursor(name = Vedeu.focus)
|
101
|
+
hide(name) if cursor_visible?(name)
|
102
|
+
end
|
103
|
+
|
104
|
+
# @example
|
105
|
+
# Vedeu.show_cursor(name)
|
106
|
+
#
|
107
|
+
# @param name [String|Symbol]
|
108
|
+
# @return [void]
|
109
|
+
# @see Vedeu::Toggleable#show
|
110
|
+
def show_cursor(name = Vedeu.focus)
|
111
|
+
show(name) if cursor_visible?(name)
|
112
|
+
end
|
113
|
+
|
114
|
+
# @example
|
115
|
+
# Vedeu.toggle_cursor(name)
|
116
|
+
#
|
117
|
+
# @param name [String|Symbol]
|
118
|
+
# @return [void]
|
119
|
+
# @see Vedeu::Toggleable#toggle
|
120
|
+
def toggle_cursor(name = Vedeu.focus)
|
121
|
+
toggle(name) if cursor_visible?(name)
|
122
|
+
end
|
123
|
+
|
124
|
+
private
|
125
|
+
|
126
|
+
# @param name [String|Symbol]
|
127
|
+
# @return [Boolean]
|
128
|
+
def cursor_visible?(name)
|
129
|
+
Vedeu.buffers.by_name(name).cursor_visible?
|
130
|
+
end
|
131
|
+
|
97
132
|
end # ClassMethods
|
98
133
|
|
99
134
|
# When this module is included in a class, provide ClassMethods as
|