shoes-core 4.0.0.pre4 → 4.0.0.pre5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Guardfile +5 -0
- data/bin/shoes +1 -1
- data/bin/shoes-stub +1 -1
- data/ext/install/Rakefile +15 -5
- data/ext/install/shoes.bat +1 -1
- data/lib/shoes/animation.rb +2 -2
- data/lib/shoes/arc.rb +1 -0
- data/lib/shoes/builtin_methods.rb +5 -18
- data/lib/shoes/button.rb +1 -5
- data/lib/shoes/check_button.rb +1 -5
- data/lib/shoes/color.rb +5 -274
- data/lib/shoes/color/dsl.rb +166 -0
- data/lib/shoes/color/dsl_helpers.rb +84 -0
- data/lib/shoes/color/hex_converter.rb +32 -0
- data/lib/shoes/common/background_element.rb +5 -0
- data/lib/shoes/common/hover.rb +87 -0
- data/lib/shoes/common/initialization.rb +21 -8
- data/lib/shoes/common/remove.rb +2 -0
- data/lib/shoes/common/state.rb +17 -3
- data/lib/shoes/common/style.rb +8 -0
- data/lib/shoes/configuration.rb +18 -15
- data/lib/shoes/core/version.rb +1 -1
- data/lib/shoes/dimension.rb +6 -19
- data/lib/shoes/dimensions.rb +8 -0
- data/lib/shoes/download.rb +5 -3
- data/lib/shoes/dsl.rb +3 -3
- data/lib/shoes/image.rb +1 -0
- data/lib/shoes/image_pattern.rb +1 -1
- data/lib/shoes/input_box.rb +2 -5
- data/lib/shoes/internal_app.rb +13 -2
- data/lib/shoes/line.rb +1 -0
- data/lib/shoes/link.rb +8 -0
- data/lib/shoes/list_box.rb +2 -5
- data/lib/shoes/mock/check.rb +3 -0
- data/lib/shoes/mock/image.rb +6 -0
- data/lib/shoes/mock/progress.rb +6 -0
- data/lib/shoes/mock/radio.rb +3 -0
- data/lib/shoes/mock/sound.rb +1 -1
- data/lib/shoes/oval.rb +1 -0
- data/lib/shoes/packager.rb +1 -1
- data/lib/shoes/rect.rb +1 -0
- data/lib/shoes/shape.rb +4 -0
- data/lib/shoes/slot.rb +75 -38
- data/lib/shoes/slot_contents.rb +4 -0
- data/lib/shoes/sound.rb +3 -2
- data/lib/shoes/star.rb +1 -0
- data/lib/shoes/text_block.rb +18 -2
- data/lib/shoes/text_block_dimensions.rb +19 -3
- data/lib/shoes/timer.rb +2 -2
- data/lib/shoes/ui/picker.rb +4 -4
- data/lib/shoes/version.rb +1 -1
- data/shoes-core.gemspec +1 -1
- data/spec/shoes/animation_spec.rb +2 -2
- data/spec/shoes/app_spec.rb +6 -17
- data/spec/shoes/arc_spec.rb +2 -1
- data/spec/shoes/background_spec.rb +2 -2
- data/spec/shoes/border_spec.rb +2 -2
- data/spec/shoes/builtin_methods_spec.rb +68 -56
- data/spec/shoes/button_spec.rb +3 -3
- data/spec/shoes/check_spec.rb +3 -2
- data/spec/shoes/color_spec.rb +9 -3
- data/spec/shoes/common/remove_spec.rb +0 -1
- data/spec/shoes/common/rotate_spec.rb +13 -0
- data/spec/shoes/common/style_spec.rb +12 -3
- data/spec/shoes/configuration_spec.rb +18 -3
- data/spec/shoes/constants_spec.rb +1 -0
- data/spec/shoes/dialog_spec.rb +1 -3
- data/spec/shoes/dimension_spec.rb +33 -24
- data/spec/shoes/dimensions_spec.rb +21 -31
- data/spec/shoes/download_spec.rb +14 -3
- data/spec/shoes/flow_spec.rb +6 -7
- data/spec/shoes/font_spec.rb +2 -3
- data/spec/shoes/framework_learning_spec.rb +1 -2
- data/spec/shoes/gradient_spec.rb +1 -2
- data/spec/shoes/helpers/fake_absolute_element.rb +30 -0
- data/spec/shoes/helpers/sample17_helper.rb +0 -1
- data/spec/shoes/image_spec.rb +2 -1
- data/spec/shoes/input_box_spec.rb +2 -2
- data/spec/shoes/integration_spec.rb +0 -1
- data/spec/shoes/internal_app_spec.rb +4 -5
- data/spec/shoes/keypress_spec.rb +1 -1
- data/spec/shoes/keyrelease_spec.rb +1 -2
- data/spec/shoes/line_spec.rb +3 -2
- data/spec/shoes/link_spec.rb +26 -6
- data/spec/shoes/list_box_spec.rb +2 -2
- data/spec/shoes/oval_spec.rb +2 -1
- data/spec/shoes/packager_spec.rb +1 -1
- data/spec/shoes/point_spec.rb +1 -1
- data/spec/shoes/progress_spec.rb +1 -1
- data/spec/shoes/radio_spec.rb +1 -1
- data/spec/shoes/rect_spec.rb +2 -1
- data/spec/shoes/renamed_delegate_spec.rb +0 -1
- data/spec/shoes/shape_spec.rb +1 -1
- data/spec/shoes/shared_examples/common_methods.rb +1 -1
- data/spec/shoes/shared_examples/dsl/animate.rb +1 -1
- data/spec/shoes/shared_examples/dsl/background.rb +2 -2
- data/spec/shoes/shared_examples/dsl/rgb.rb +4 -2
- data/spec/shoes/shared_examples/dsl/star.rb +0 -1
- data/spec/shoes/shared_examples/dsl/style.rb +1 -1
- data/spec/shoes/shared_examples/dsl/text_elements.rb +2 -2
- data/spec/shoes/shared_examples/dsl/video.rb +1 -1
- data/spec/shoes/shared_examples/dsl_app_context.rb +4 -1
- data/spec/shoes/shared_examples/hover.rb +78 -0
- data/spec/shoes/shared_examples/slot.rb +34 -4
- data/spec/shoes/shared_examples/state.rb +9 -2
- data/spec/shoes/shared_examples/style.rb +0 -5
- data/spec/shoes/slot_spec.rb +11 -38
- data/spec/shoes/sound_spec.rb +3 -2
- data/spec/shoes/span_spec.rb +2 -2
- data/spec/shoes/spec_helper.rb +1 -1
- data/spec/shoes/stack_spec.rb +6 -6
- data/spec/shoes/star_spec.rb +2 -1
- data/spec/shoes/text_block_dimensions_spec.rb +3 -4
- data/spec/shoes/text_block_spec.rb +16 -11
- data/spec/shoes/ui/picker_spec.rb +5 -6
- data/spec/shoes/url_spec.rb +1 -2
- data/spec/shoes/widget_spec.rb +11 -3
- data/spec/shoes_spec.rb +1 -4
- data/spec/spec_helper.rb +2 -1
- metadata +16 -9
- data/bin/shoes-guard +0 -8
- data/lib/shoes/link_hover.rb +0 -5
- data/spec/shoes/shared_examples/hover_leave.rb +0 -11
data/lib/shoes/rect.rb
CHANGED
data/lib/shoes/shape.rb
CHANGED
data/lib/shoes/slot.rb
CHANGED
@@ -2,6 +2,7 @@ class Shoes
|
|
2
2
|
class Slot
|
3
3
|
include Common::UIElement
|
4
4
|
include Common::Clickable
|
5
|
+
include Common::Hover
|
5
6
|
include Common::Style
|
6
7
|
|
7
8
|
# We need that offset because otherwise element overlap e.g. occupy
|
@@ -9,7 +10,7 @@ class Shoes
|
|
9
10
|
# See #update_current_position
|
10
11
|
NEXT_ELEMENT_OFFSET = 1
|
11
12
|
|
12
|
-
attr_reader :parent, :dimensions, :gui, :contents, :blk
|
13
|
+
attr_reader :parent, :dimensions, :gui, :contents, :blk
|
13
14
|
|
14
15
|
style_with :art_styles, :attach, :common_styles, :dimensions, :scroll
|
15
16
|
STYLES = { scroll: false, fill: Shoes::COLORS[:black] }
|
@@ -28,14 +29,13 @@ class Shoes
|
|
28
29
|
end
|
29
30
|
|
30
31
|
def handle_block(blk)
|
32
|
+
@current_position = CurrentPosition.new element_left,
|
33
|
+
element_top,
|
34
|
+
element_top
|
31
35
|
@blk = blk
|
32
36
|
eval_block blk
|
33
37
|
end
|
34
38
|
|
35
|
-
def after_initialize(*_)
|
36
|
-
contents_alignment
|
37
|
-
end
|
38
|
-
|
39
39
|
def set_default_dimension_values
|
40
40
|
self.width ||= 1.0
|
41
41
|
self.height ||= 0
|
@@ -63,6 +63,50 @@ class Shoes
|
|
63
63
|
|
64
64
|
def add_child(element)
|
65
65
|
contents.add_element element
|
66
|
+
|
67
|
+
if !element.hidden? && element.takes_up_space?
|
68
|
+
# Prepending would entail repositioning everyone after us, so just give
|
69
|
+
# it up and let contents_alignment save us the work.
|
70
|
+
if contents.prepending?
|
71
|
+
contents_alignment
|
72
|
+
else
|
73
|
+
original_height = self.height
|
74
|
+
@current_position = positioning(element, @current_position)
|
75
|
+
|
76
|
+
height_delta = slot_grew_by(original_height)
|
77
|
+
bump_parent_current_position(height_delta)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def slot_grew_by(original_height)
|
83
|
+
determine_slot_height
|
84
|
+
self.height - original_height
|
85
|
+
end
|
86
|
+
|
87
|
+
def bump_parent_current_position(height_delta)
|
88
|
+
return unless height_delta > 0
|
89
|
+
return unless parent.respond_to?(:bump_current_position)
|
90
|
+
|
91
|
+
parent.bump_current_position(self, height_delta)
|
92
|
+
end
|
93
|
+
|
94
|
+
# This method gets called when one of our child slots got larger, so we
|
95
|
+
# need to move our current position to accomodate.
|
96
|
+
def bump_current_position(growing_slot, height_delta)
|
97
|
+
# If intermediate child changed, give up and hit it with the big hammer
|
98
|
+
if any_sibling_slots_following?(growing_slot)
|
99
|
+
contents_alignment
|
100
|
+
else
|
101
|
+
@current_position.y += height_delta
|
102
|
+
@current_position.next_line_start += height_delta
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def any_sibling_slots_following?(growing_slot)
|
107
|
+
next_sibling = contents.index(growing_slot) + 1
|
108
|
+
next_siblings = contents[next_sibling..-1]
|
109
|
+
next_siblings.any? { |e| e.is_a?(Slot) }
|
66
110
|
end
|
67
111
|
|
68
112
|
def remove_child(element)
|
@@ -84,28 +128,8 @@ class Shoes
|
|
84
128
|
determine_slot_height
|
85
129
|
end
|
86
130
|
|
87
|
-
def
|
88
|
-
@
|
89
|
-
end
|
90
|
-
|
91
|
-
def hover(blk)
|
92
|
-
@hover_proc = blk
|
93
|
-
@app.add_mouse_hover_control self
|
94
|
-
end
|
95
|
-
|
96
|
-
def leave(blk)
|
97
|
-
@leave_proc = blk
|
98
|
-
@app.add_mouse_hover_control self
|
99
|
-
end
|
100
|
-
|
101
|
-
def mouse_hovered
|
102
|
-
@hovered = true
|
103
|
-
@hover_proc.call(self) if @hover_proc
|
104
|
-
end
|
105
|
-
|
106
|
-
def mouse_left
|
107
|
-
@hovered = false
|
108
|
-
@leave_proc.call(self) if @leave_proc
|
131
|
+
def add_mouse_hover_control
|
132
|
+
@app.add_mouse_hover_control(self)
|
109
133
|
end
|
110
134
|
|
111
135
|
def scroll_height
|
@@ -128,25 +152,36 @@ class Shoes
|
|
128
152
|
"#<#{self.class}:0x#{hash.to_s(16)} @contents=#{@contents.inspect} and so much stuff literally breaks the memory limit. Look at it selectively.>"
|
129
153
|
end
|
130
154
|
|
155
|
+
def fixed_height?
|
156
|
+
!!@fixed_height
|
157
|
+
end
|
158
|
+
|
159
|
+
def variable_height?
|
160
|
+
!@fixed_height
|
161
|
+
end
|
162
|
+
|
131
163
|
protected
|
132
164
|
|
133
165
|
CurrentPosition = Struct.new(:x, :y, :next_line_start)
|
134
166
|
|
135
167
|
def position_contents
|
136
|
-
current_position = CurrentPosition.new element_left,
|
168
|
+
@current_position = CurrentPosition.new element_left,
|
137
169
|
element_top,
|
138
170
|
element_top
|
139
171
|
|
140
172
|
contents.each do |element|
|
141
173
|
next if element.hidden?
|
142
|
-
current_position = positioning(element, current_position)
|
174
|
+
@current_position = positioning(element, @current_position)
|
143
175
|
end
|
144
|
-
current_position
|
176
|
+
@current_position
|
145
177
|
end
|
146
178
|
|
147
179
|
def positioning(element, current_position)
|
148
|
-
|
149
|
-
|
180
|
+
if element.needs_positioning?
|
181
|
+
position_element element, current_position
|
182
|
+
element.contents_alignment(current_position) if element.respond_to? :contents_alignment
|
183
|
+
end
|
184
|
+
|
150
185
|
if element.takes_up_space?
|
151
186
|
update_current_position(current_position, element)
|
152
187
|
else
|
@@ -244,7 +279,7 @@ class Shoes
|
|
244
279
|
|
245
280
|
def determine_slot_height
|
246
281
|
content_height = compute_content_height
|
247
|
-
self.
|
282
|
+
self.element_height = content_height if variable_height?
|
248
283
|
content_height
|
249
284
|
end
|
250
285
|
|
@@ -256,18 +291,17 @@ class Shoes
|
|
256
291
|
max
|
257
292
|
|
258
293
|
if max_bottom
|
259
|
-
max_bottom - self.
|
294
|
+
max_bottom - self.element_top + NEXT_ELEMENT_OFFSET
|
260
295
|
else
|
261
296
|
0
|
262
297
|
end
|
263
298
|
end
|
264
|
-
|
265
|
-
def variable_height?
|
266
|
-
!@fixed_height
|
267
|
-
end
|
268
299
|
end
|
269
300
|
|
270
301
|
class Flow < Slot
|
302
|
+
# Included to generate the *Hover class
|
303
|
+
include Common::Hover
|
304
|
+
|
271
305
|
def position_element(element, current_position)
|
272
306
|
if fits_on_the_same_line?(element, current_position.x)
|
273
307
|
position_in_current_line(element, current_position)
|
@@ -278,6 +312,9 @@ class Shoes
|
|
278
312
|
end
|
279
313
|
|
280
314
|
class Stack < Slot
|
315
|
+
# Included to generate the *Hover class
|
316
|
+
include Common::Hover
|
317
|
+
|
281
318
|
def position_element(element, current_position)
|
282
319
|
move_to_next_line(element, current_position)
|
283
320
|
end
|
data/lib/shoes/slot_contents.rb
CHANGED
data/lib/shoes/sound.rb
CHANGED
@@ -3,13 +3,14 @@ class Shoes
|
|
3
3
|
include Common::Inspect
|
4
4
|
|
5
5
|
def initialize(parent, filepath, _opts = {}, &_blk)
|
6
|
+
@app = parent
|
6
7
|
@parent = parent
|
7
8
|
@filepath = filepath
|
8
9
|
|
9
|
-
@gui = Shoes.
|
10
|
+
@gui = Shoes.backend_for(self)
|
10
11
|
end
|
11
12
|
|
12
|
-
attr_reader :gui, :filepath, :parent
|
13
|
+
attr_reader :app, :gui, :filepath, :parent
|
13
14
|
|
14
15
|
def play
|
15
16
|
@gui.play
|
data/lib/shoes/star.rb
CHANGED
data/lib/shoes/text_block.rb
CHANGED
@@ -6,6 +6,7 @@ class Shoes
|
|
6
6
|
include Common::UIElement
|
7
7
|
include Common::Style
|
8
8
|
include Common::Clickable
|
9
|
+
include Common::Hover
|
9
10
|
include TextBlockDimensionsDelegations
|
10
11
|
|
11
12
|
attr_reader :text, :contents, :text_styles
|
@@ -18,17 +19,27 @@ class Shoes
|
|
18
19
|
@dimensions = TextBlockDimensions.new @parent, @style
|
19
20
|
end
|
20
21
|
|
21
|
-
def
|
22
|
+
def add_to_parent(text)
|
22
23
|
handle_styles @style
|
23
24
|
|
24
|
-
# Important to use accessor and do this after the backend exists
|
25
|
+
# Important to use accessor and do this after the backend exists, but
|
26
|
+
# before we place ourselves in the parent container!
|
25
27
|
self.text = Array(text)
|
28
|
+
|
29
|
+
super
|
26
30
|
end
|
27
31
|
|
28
32
|
def in_bounds?(*args)
|
29
33
|
@gui.in_bounds?(*args)
|
30
34
|
end
|
31
35
|
|
36
|
+
def remove
|
37
|
+
super
|
38
|
+
links.each do |link|
|
39
|
+
@app.remove_mouse_hover_control(link)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
32
43
|
def text=(*texts)
|
33
44
|
replace(*texts[0])
|
34
45
|
end
|
@@ -138,6 +149,11 @@ class Shoes
|
|
138
149
|
clazz = Class.new(TextBlock) do
|
139
150
|
const_set("STYLES", { font: DEFAULT_TEXTBLOCK_FONT, fill: nil }.merge(styles))
|
140
151
|
end
|
152
|
+
|
141
153
|
Shoes.const_set(name, clazz)
|
154
|
+
|
155
|
+
clazz.class_eval do
|
156
|
+
include Shoes::Common::Hover
|
157
|
+
end
|
142
158
|
end
|
143
159
|
end
|
@@ -29,9 +29,21 @@ class Shoes
|
|
29
29
|
10
|
30
30
|
end
|
31
31
|
|
32
|
-
# This is the width the text block initially wants to try
|
33
|
-
|
34
|
-
|
32
|
+
# This is the width the text block initially wants to try to fit in.
|
33
|
+
#
|
34
|
+
# If an explicit containing width is provided, trust that most
|
35
|
+
# If we've gotten an explicit width, use that but check that we fit still
|
36
|
+
# Last but certainly not least, consult what's remaining in our parent.
|
37
|
+
def desired_width(containing = nil)
|
38
|
+
if containing
|
39
|
+
desired = parent.absolute_left + containing - absolute_left
|
40
|
+
elsif element_width
|
41
|
+
desired = [element_width, remaining_in_parent].min
|
42
|
+
else
|
43
|
+
desired = remaining_in_parent
|
44
|
+
end
|
45
|
+
|
46
|
+
desired - margin_left - margin_right
|
35
47
|
end
|
36
48
|
|
37
49
|
# If an explicit width's set, use that when asking how much space we need.
|
@@ -39,6 +51,10 @@ class Shoes
|
|
39
51
|
def containing_width
|
40
52
|
element_width || parent.element_width
|
41
53
|
end
|
54
|
+
|
55
|
+
def remaining_in_parent
|
56
|
+
parent.absolute_left + parent.element_width - absolute_left
|
57
|
+
end
|
42
58
|
end
|
43
59
|
|
44
60
|
module TextBlockDimensionsDelegations
|
data/lib/shoes/timer.rb
CHANGED
@@ -6,9 +6,9 @@ class Shoes
|
|
6
6
|
@app = app
|
7
7
|
@n = n
|
8
8
|
@blk = @app.current_slot.create_bound_block(blk)
|
9
|
-
@gui = Shoes.
|
9
|
+
@gui = Shoes.backend_for(self, @blk)
|
10
10
|
end
|
11
11
|
|
12
|
-
attr_reader :n, :gui
|
12
|
+
attr_reader :app, :n, :gui
|
13
13
|
end
|
14
14
|
end
|
data/lib/shoes/ui/picker.rb
CHANGED
@@ -3,12 +3,12 @@ class Shoes
|
|
3
3
|
# This class is used for interactively (if necessary) picking the Shoes
|
4
4
|
# backend that the user will run their Shoes app with.
|
5
5
|
class Picker
|
6
|
-
def initialize(input=STDIN, output=STDOUT)
|
6
|
+
def initialize(input = STDIN, output = STDOUT)
|
7
7
|
@input = input
|
8
8
|
@output = output
|
9
9
|
end
|
10
10
|
|
11
|
-
def run(bin_dir, desired_backend=nil)
|
11
|
+
def run(bin_dir, desired_backend = nil)
|
12
12
|
bundle
|
13
13
|
generator_file = select_generator(desired_backend)
|
14
14
|
write_backend(generator_file, bin_dir)
|
@@ -25,7 +25,7 @@ class Shoes
|
|
25
25
|
require 'bundler/setup'
|
26
26
|
end
|
27
27
|
|
28
|
-
def select_generator(desired_backend=nil)
|
28
|
+
def select_generator(desired_backend = nil)
|
29
29
|
candidates = find_candidates(desired_backend)
|
30
30
|
|
31
31
|
if candidates.empty?
|
@@ -75,7 +75,7 @@ class Shoes
|
|
75
75
|
|
76
76
|
def name_for_candidate(candidate)
|
77
77
|
/.*lib\/shoes\/(.*)\/generate-backend.rb/.match(candidate)
|
78
|
-
return "shoes-#{$1.gsub(
|
78
|
+
return "shoes-#{$1.gsub('/', '-')}"
|
79
79
|
end
|
80
80
|
|
81
81
|
def write_backend(generator_file, bin_dir)
|
data/lib/shoes/version.rb
CHANGED
data/shoes-core.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.description = "Shoes is the best little GUI toolkit for Ruby. Shoes makes building for Mac, Windows, and Linux super simple. This is the DSL for writing your app. You'll need a backend to run it."
|
13
13
|
s.license = 'MIT'
|
14
14
|
|
15
|
-
s.files = `git ls-files`.split(
|
15
|
+
s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
16
16
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
shared_examples_for Shoes::Animation do
|
4
4
|
it "should start" do
|
@@ -60,7 +60,7 @@ describe Shoes::Animation do
|
|
60
60
|
it { is_expected.not_to be_stopped }
|
61
61
|
|
62
62
|
describe "with framerate" do
|
63
|
-
let(:opts) { {:
|
63
|
+
let(:opts) { {framerate: 36, app: app} }
|
64
64
|
|
65
65
|
it "sets framerate" do
|
66
66
|
expect(subject.framerate).to eq(36)
|
data/spec/shoes/app_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::App do
|
4
4
|
let(:input_blk) { Proc.new {} }
|
@@ -64,7 +64,7 @@ describe Shoes::App do
|
|
64
64
|
end
|
65
65
|
|
66
66
|
context "from opts" do
|
67
|
-
let(:opts) { {:
|
67
|
+
let(:opts) { {width: 150, height: 2, title: "Shoes::App Spec", resizable: false} }
|
68
68
|
|
69
69
|
it "sets width", :qt do
|
70
70
|
expect(subject.width).to eq opts[:width]
|
@@ -125,11 +125,9 @@ describe Shoes::App do
|
|
125
125
|
it "passes default to objects" do
|
126
126
|
expect(subject.line(0, 100, 100, 0).style[key]).to eq(value)
|
127
127
|
end
|
128
|
-
|
129
128
|
end
|
130
129
|
end
|
131
130
|
|
132
|
-
|
133
131
|
describe "default styles" do
|
134
132
|
it "are independent among Shoes::App instances" do
|
135
133
|
app1 = Shoes::App.new
|
@@ -140,7 +138,6 @@ describe Shoes::App do
|
|
140
138
|
|
141
139
|
# .. but does not affect app2
|
142
140
|
expect(app2.line(0, 100, 100, 0).style[:strokewidth]).not_to eq(10)
|
143
|
-
|
144
141
|
end
|
145
142
|
end
|
146
143
|
end
|
@@ -164,7 +161,6 @@ describe Shoes::App do
|
|
164
161
|
expect(subject.line(0, 100, 100, 0).style[style]).to eq('val')
|
165
162
|
end
|
166
163
|
end
|
167
|
-
|
168
164
|
end
|
169
165
|
|
170
166
|
describe "connecting with gui" do
|
@@ -234,7 +230,7 @@ describe Shoes::App do
|
|
234
230
|
expect(app).not_to be_fullscreen
|
235
231
|
end
|
236
232
|
|
237
|
-
it 'can enter fullscreen' do
|
233
|
+
it 'can enter fullscreen', :fullscreen do
|
238
234
|
app.fullscreen = true
|
239
235
|
expect(app).to be_fullscreen
|
240
236
|
end
|
@@ -248,18 +244,15 @@ describe Shoes::App do
|
|
248
244
|
app.fullscreen = false
|
249
245
|
end
|
250
246
|
|
251
|
-
|
252
|
-
it 'is not in fullscreen', :fails_on_osx do
|
247
|
+
it 'is not in fullscreen', :fullscreen do
|
253
248
|
expect(app).not_to be_fullscreen
|
254
249
|
end
|
255
250
|
|
256
|
-
|
257
|
-
it 'has its origina', :fails_on_osx do
|
251
|
+
it 'has its original', :fullscreen do
|
258
252
|
expect(app.width).to eq(defaults[:width])
|
259
253
|
end
|
260
254
|
|
261
|
-
|
262
|
-
it 'has its original height', :fails_on_osx do
|
255
|
+
it 'has its original height', :fullscreen do
|
263
256
|
expect(app.height).to eq(defaults[:height])
|
264
257
|
end
|
265
258
|
end
|
@@ -311,7 +304,6 @@ describe Shoes::App do
|
|
311
304
|
expect(my_parent).to eq my_stack
|
312
305
|
end
|
313
306
|
end
|
314
|
-
|
315
307
|
end
|
316
308
|
|
317
309
|
describe "additional context" do
|
@@ -352,7 +344,6 @@ describe Shoes::App do
|
|
352
344
|
end
|
353
345
|
|
354
346
|
describe 'subscribing to DSL methods' do
|
355
|
-
|
356
347
|
class TestSubscribeClass
|
357
348
|
attr_reader :app
|
358
349
|
def initialize(app)
|
@@ -384,7 +375,6 @@ describe Shoes::App do
|
|
384
375
|
end
|
385
376
|
|
386
377
|
describe '.new_dsl_method (for widget method notifications etc.)' do
|
387
|
-
|
388
378
|
before :each do
|
389
379
|
Shoes::App.new_dsl_method :widget_method do
|
390
380
|
# noop
|
@@ -417,7 +407,6 @@ describe Shoes::App do
|
|
417
407
|
it {is_expected.not_to include :parent, :app}
|
418
408
|
end
|
419
409
|
end
|
420
|
-
|
421
410
|
end
|
422
411
|
end
|
423
412
|
|