vedeu 0.4.20 → 0.4.21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/cursor_app.rb +3 -0
- data/lib/vedeu/bindings.rb +20 -0
- data/lib/vedeu/geometry/dimension.rb +11 -2
- data/lib/vedeu/geometry/geometry.rb +35 -14
- data/lib/vedeu/null/geometry.rb +4 -0
- data/test/lib/vedeu/distributed/subprocess_test.rb +1 -1
- data/test/lib/vedeu/geometry/dimension_test.rb +7 -0
- data/test/lib/vedeu/geometry/geometry_test.rb +53 -8
- data/test/lib/vedeu/models/group_test.rb +1 -1
- data/test/lib/vedeu/models/interface_test.rb +1 -0
- data/test/lib/vedeu/null/interface_test.rb +1 -1
- data/vedeu.gemspec +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d59258ed8c80d1a0edbe50022689de2cdd6b0ae
|
4
|
+
data.tar.gz: 68f3f7a8bbde59807faa8c9517400f4d43d0c127
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6841e54f8ca0cc71018cf628d0384bc1c250e608505ce55881391130358b9296e1716a3adde7863cf41370c4416e4fe7126b232976a83d8173166cd2c2384d62
|
7
|
+
data.tar.gz: 50c7fcc0dbd3e42e54dce9367e3fb1af1443a7e853dce4614ed25cbee41f2621a7e4a1624daf3b61285f6c0f8caff7341728f2b7144102feaca8a8b98c01186f
|
data/examples/cursor_app.rb
CHANGED
@@ -32,6 +32,9 @@ class VedeuCursorApp
|
|
32
32
|
key(:right, 'l') { Vedeu.trigger(:_cursor_right_) }
|
33
33
|
key(:down, 'j') { Vedeu.trigger(:_cursor_down_) }
|
34
34
|
key(:left, 'h') { Vedeu.trigger(:_cursor_left_) }
|
35
|
+
|
36
|
+
key('m') { Vedeu.trigger(:_maximise_, 'main_interface') }
|
37
|
+
key('u') { Vedeu.trigger(:_unmaximise_, 'main_interface') }
|
35
38
|
end
|
36
39
|
|
37
40
|
renders do
|
data/lib/vedeu/bindings.rb
CHANGED
@@ -262,6 +262,26 @@ module Vedeu
|
|
262
262
|
end
|
263
263
|
end
|
264
264
|
|
265
|
+
# Will maximise the named interface geometry. This means it will occupy all
|
266
|
+
# of the available space on the terminal window.
|
267
|
+
Vedeu.bind(:_maximise_) do |name|
|
268
|
+
Vedeu.geometries.by_name(name).maximise
|
269
|
+
|
270
|
+
Vedeu.trigger(:_refresh_, name)
|
271
|
+
end
|
272
|
+
|
273
|
+
# Will unmaximise the named interface geometry. Previously, if a geometry
|
274
|
+
# was maximised, then triggering the unmaximise event will return it to its
|
275
|
+
# usual defined size (terminal size permitting: if the terminal has been
|
276
|
+
# resized, then the new geometry size should adapt).
|
277
|
+
Vedeu.bind(:_unmaximise_) do |name|
|
278
|
+
Vedeu.trigger(:_clear_, name)
|
279
|
+
|
280
|
+
Vedeu.geometries.by_name(name).unmaximise
|
281
|
+
|
282
|
+
Vedeu.trigger(:_refresh_, name)
|
283
|
+
end
|
284
|
+
|
265
285
|
end # Bindings
|
266
286
|
# :nocov:
|
267
287
|
|
@@ -63,7 +63,10 @@ module Vedeu
|
|
63
63
|
|
64
64
|
# @return [Array<Fixnum>]
|
65
65
|
def dimension
|
66
|
-
@dimension ||= if
|
66
|
+
@dimension ||= if maximised?
|
67
|
+
[1, default]
|
68
|
+
|
69
|
+
elsif centred? && length?
|
67
70
|
[centred_d, centred_dn]
|
68
71
|
|
69
72
|
else
|
@@ -128,6 +131,11 @@ module Vedeu
|
|
128
131
|
end
|
129
132
|
end
|
130
133
|
|
134
|
+
# @return [Boolean]
|
135
|
+
def maximised?
|
136
|
+
options[:maximised]
|
137
|
+
end
|
138
|
+
|
131
139
|
# @return [Hash<Symbol => Boolean>]
|
132
140
|
def options
|
133
141
|
defaults.merge!(@options)
|
@@ -136,7 +144,8 @@ module Vedeu
|
|
136
144
|
# @return [Hash<Symbol => Boolean>]
|
137
145
|
def defaults
|
138
146
|
{
|
139
|
-
centred:
|
147
|
+
centred: false,
|
148
|
+
maximised: false,
|
140
149
|
}
|
141
150
|
end
|
142
151
|
|
@@ -58,6 +58,10 @@ module Vedeu
|
|
58
58
|
# @return [Fixnum]
|
59
59
|
attr_writer :height
|
60
60
|
|
61
|
+
# @!attribute [rw] maximised
|
62
|
+
# @return [Boolean]
|
63
|
+
attr_accessor :maximised
|
64
|
+
|
61
65
|
# @!attribute [w] width
|
62
66
|
# @return [Fixnum]
|
63
67
|
attr_writer :width
|
@@ -94,34 +98,50 @@ module Vedeu
|
|
94
98
|
def initialize(attributes = {})
|
95
99
|
@attributes = defaults.merge!(attributes)
|
96
100
|
|
97
|
-
@attributes.each
|
98
|
-
|
99
|
-
|
101
|
+
@attributes.each { |key, value| instance_variable_set("@#{key}", value) }
|
102
|
+
end
|
103
|
+
|
104
|
+
# @return [Vedeu::Geometry]
|
105
|
+
def maximise
|
106
|
+
@maximised = true
|
107
|
+
|
108
|
+
store
|
109
|
+
end
|
110
|
+
|
111
|
+
# @return [Vedeu::Geometry]
|
112
|
+
def unmaximise
|
113
|
+
@maximised = false
|
114
|
+
|
115
|
+
store
|
100
116
|
end
|
101
117
|
|
102
118
|
private
|
103
119
|
|
104
120
|
# @return [Vedeu::Area]
|
105
121
|
def area
|
106
|
-
|
122
|
+
Vedeu::Area.from_dimensions(y_yn: y_yn, x_xn: x_xn)
|
107
123
|
end
|
108
124
|
|
109
125
|
# @return [Array<Fixnum>]
|
110
126
|
def x_xn
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
127
|
+
Vedeu::Dimension.pair(d: _x,
|
128
|
+
dn: _xn,
|
129
|
+
d_dn: @width,
|
130
|
+
default: Vedeu::Terminal.width,
|
131
|
+
options: {
|
132
|
+
centred: centred,
|
133
|
+
maximised: maximised })
|
116
134
|
end
|
117
135
|
|
118
136
|
# @return [Array<Fixnum>]
|
119
137
|
def y_yn
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
138
|
+
Vedeu::Dimension.pair(d: _y,
|
139
|
+
dn: _yn,
|
140
|
+
d_dn: @height,
|
141
|
+
default: Vedeu::Terminal.height,
|
142
|
+
options: {
|
143
|
+
centred: centred,
|
144
|
+
maximised: maximised })
|
125
145
|
end
|
126
146
|
|
127
147
|
# Returns the row/line start position for the interface.
|
@@ -157,6 +177,7 @@ module Vedeu
|
|
157
177
|
{
|
158
178
|
centred: nil,
|
159
179
|
height: nil,
|
180
|
+
maximised: false,
|
160
181
|
name: nil,
|
161
182
|
repository: Vedeu.geometries,
|
162
183
|
width: nil,
|
data/lib/vedeu/null/geometry.rb
CHANGED
@@ -11,7 +11,7 @@ module Vedeu
|
|
11
11
|
describe '#initialize' do
|
12
12
|
subject { instance }
|
13
13
|
|
14
|
-
it { subject.must_be_instance_of(
|
14
|
+
it { subject.must_be_instance_of(described) }
|
15
15
|
it do
|
16
16
|
subject.instance_variable_get('@application').must_equal(application)
|
17
17
|
end
|
@@ -39,6 +39,13 @@ module Vedeu
|
|
39
39
|
it { subject.must_be_instance_of(Array) }
|
40
40
|
it { subject.must_equal([15, 38]) }
|
41
41
|
|
42
|
+
context 'when maximised' do
|
43
|
+
let(:options) { { maximised: true } }
|
44
|
+
let(:default) { 80 }
|
45
|
+
|
46
|
+
it { subject.must_equal([1, 80]) }
|
47
|
+
end
|
48
|
+
|
42
49
|
context 'when centred and a length can be determined' do
|
43
50
|
let(:options) { { centred: true } }
|
44
51
|
let(:default) { 80 }
|
@@ -10,6 +10,7 @@ module Vedeu
|
|
10
10
|
{
|
11
11
|
centred: centred,
|
12
12
|
height: height,
|
13
|
+
maximised: maximised,
|
13
14
|
name: _name,
|
14
15
|
repository: Vedeu.geometries,
|
15
16
|
width: width,
|
@@ -19,14 +20,15 @@ module Vedeu
|
|
19
20
|
yn: yn,
|
20
21
|
}
|
21
22
|
}
|
22
|
-
let(:centred)
|
23
|
-
let(:height)
|
24
|
-
let(:
|
25
|
-
let(:
|
26
|
-
let(:
|
27
|
-
let(:
|
28
|
-
let(:
|
29
|
-
let(:
|
23
|
+
let(:centred) {}
|
24
|
+
let(:height) {}
|
25
|
+
let(:maximised) {}
|
26
|
+
let(:_name) {}
|
27
|
+
let(:width) {}
|
28
|
+
let(:x) {}
|
29
|
+
let(:xn) {}
|
30
|
+
let(:y) {}
|
31
|
+
let(:yn) {}
|
30
32
|
|
31
33
|
before { Terminal.stubs(:size).returns([12, 40]) }
|
32
34
|
|
@@ -48,7 +50,50 @@ module Vedeu
|
|
48
50
|
end
|
49
51
|
end
|
50
52
|
|
53
|
+
describe '#maximise' do
|
54
|
+
let(:attributes) {
|
55
|
+
{
|
56
|
+
height: 6,
|
57
|
+
maximised: false,
|
58
|
+
name: 'maximise',
|
59
|
+
width: 18
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
subject { instance.maximise }
|
64
|
+
|
65
|
+
it { subject.must_be_instance_of(described) }
|
66
|
+
|
67
|
+
it { subject.maximised.must_equal(true) }
|
68
|
+
end
|
69
|
+
|
70
|
+
describe '#unmaximise' do
|
71
|
+
let(:attributes) {
|
72
|
+
{
|
73
|
+
height: 6,
|
74
|
+
maximised: true,
|
75
|
+
name: 'unmaximise',
|
76
|
+
width: 18
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
subject { instance.unmaximise }
|
81
|
+
|
82
|
+
it { subject.must_be_instance_of(described) }
|
83
|
+
|
84
|
+
it { subject.maximised.must_equal(false) }
|
85
|
+
end
|
86
|
+
|
51
87
|
describe '#top, #right, #bottom, #left' do
|
88
|
+
context 'maximised is true' do
|
89
|
+
let(:attributes) { { maximised: true } }
|
90
|
+
|
91
|
+
it { instance.top.must_equal(1) }
|
92
|
+
it { instance.right.must_equal(40) }
|
93
|
+
it { instance.bottom.must_equal(12) }
|
94
|
+
it { instance.left.must_equal(1) }
|
95
|
+
end
|
96
|
+
|
52
97
|
context 'centred is true' do
|
53
98
|
let(:attributes) { { height: 6, width: 18, centred: true } }
|
54
99
|
|
@@ -33,6 +33,7 @@ module Vedeu
|
|
33
33
|
describe '#initialize' do
|
34
34
|
subject { instance }
|
35
35
|
|
36
|
+
it { subject.must_be_instance_of(described) }
|
36
37
|
it { subject.instance_variable_get('@client').must_equal(client) }
|
37
38
|
it { subject.instance_variable_get('@delay').must_equal(delay) }
|
38
39
|
it { subject.instance_variable_get('@group').must_equal(group) }
|
data/vedeu.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'vedeu'
|
7
|
-
spec.version = '0.4.
|
7
|
+
spec.version = '0.4.21'
|
8
8
|
spec.authors = ['Gavin Laking']
|
9
9
|
spec.email = ['gavinlaking@gmail.com']
|
10
10
|
spec.summary = 'A terminal case of wonderland.'
|