shoes-core 4.0.0.pre7 → 4.0.0.pre8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/lib/shoes/arc.rb +10 -13
  3. data/lib/shoes/arrow.rb +1 -11
  4. data/lib/shoes/background.rb +0 -3
  5. data/lib/shoes/border.rb +0 -3
  6. data/lib/shoes/button.rb +4 -1
  7. data/lib/shoes/check_button.rb +0 -1
  8. data/lib/shoes/common/art_element.rb +21 -0
  9. data/lib/shoes/common/background_element.rb +10 -0
  10. data/lib/shoes/common/clickable.rb +2 -0
  11. data/lib/shoes/common/rotate.rb +1 -2
  12. data/lib/shoes/common/ui_element.rb +10 -1
  13. data/lib/shoes/core/version.rb +1 -1
  14. data/lib/shoes/download.rb +47 -29
  15. data/lib/shoes/dsl.rb +99 -40
  16. data/lib/shoes/font.rb +0 -4
  17. data/lib/shoes/http_request.rb +91 -0
  18. data/lib/shoes/image.rb +0 -1
  19. data/lib/shoes/input_box.rb +0 -1
  20. data/lib/shoes/internal_app.rb +1 -1
  21. data/lib/shoes/line.rb +25 -11
  22. data/lib/shoes/link.rb +10 -4
  23. data/lib/shoes/list_box.rb +0 -1
  24. data/lib/shoes/mock/app.rb +6 -0
  25. data/lib/shoes/mock/clickable.rb +3 -0
  26. data/lib/shoes/mock/font.rb +0 -4
  27. data/lib/shoes/oval.rb +3 -13
  28. data/lib/shoes/progress.rb +0 -1
  29. data/lib/shoes/rect.rb +1 -11
  30. data/lib/shoes/shape.rb +16 -8
  31. data/lib/shoes/slot.rb +2 -1
  32. data/lib/shoes/star.rb +8 -11
  33. data/lib/shoes/text_block.rb +0 -1
  34. data/lib/shoes/ui/picker.rb +29 -8
  35. data/lib/shoes/version.rb +1 -1
  36. metadata +8 -231
  37. data/Guardfile +0 -5
  38. data/Rakefile +0 -1
  39. data/bin/shoes-stub +0 -62
  40. data/ext/install/Rakefile +0 -39
  41. data/ext/install/shoes.bat +0 -17
  42. data/lib/rubygems_plugin.rb +0 -24
  43. data/shoes-core.gemspec +0 -22
  44. data/spec/shoes/animation_spec.rb +0 -71
  45. data/spec/shoes/app_spec.rb +0 -454
  46. data/spec/shoes/arc_spec.rb +0 -52
  47. data/spec/shoes/arrow_spec.rb +0 -28
  48. data/spec/shoes/background_spec.rb +0 -47
  49. data/spec/shoes/border_spec.rb +0 -46
  50. data/spec/shoes/builtin_methods_spec.rb +0 -122
  51. data/spec/shoes/button_spec.rb +0 -55
  52. data/spec/shoes/check_spec.rb +0 -36
  53. data/spec/shoes/color_spec.rb +0 -429
  54. data/spec/shoes/common/attachable_spec.rb +0 -32
  55. data/spec/shoes/common/inspect_spec.rb +0 -26
  56. data/spec/shoes/common/remove_spec.rb +0 -37
  57. data/spec/shoes/common/rotate_spec.rb +0 -13
  58. data/spec/shoes/common/style_normalizer_spec.rb +0 -28
  59. data/spec/shoes/common/style_spec.rb +0 -197
  60. data/spec/shoes/common/translate_spec.rb +0 -27
  61. data/spec/shoes/configuration_spec.rb +0 -51
  62. data/spec/shoes/constants_spec.rb +0 -39
  63. data/spec/shoes/dialog_spec.rb +0 -169
  64. data/spec/shoes/dimension_spec.rb +0 -451
  65. data/spec/shoes/dimensions_spec.rb +0 -868
  66. data/spec/shoes/download_spec.rb +0 -198
  67. data/spec/shoes/flow_spec.rb +0 -132
  68. data/spec/shoes/font_spec.rb +0 -36
  69. data/spec/shoes/framework_learning_spec.rb +0 -31
  70. data/spec/shoes/gradient_spec.rb +0 -31
  71. data/spec/shoes/helpers/fake_absolute_element.rb +0 -31
  72. data/spec/shoes/helpers/fake_element.rb +0 -25
  73. data/spec/shoes/helpers/inspect_helpers.rb +0 -5
  74. data/spec/shoes/helpers/sample17_helper.rb +0 -65
  75. data/spec/shoes/image_spec.rb +0 -69
  76. data/spec/shoes/images/shoe.jpg +0 -0
  77. data/spec/shoes/input_box_spec.rb +0 -80
  78. data/spec/shoes/integration_spec.rb +0 -19
  79. data/spec/shoes/internal_app_spec.rb +0 -148
  80. data/spec/shoes/keypress_spec.rb +0 -11
  81. data/spec/shoes/keyrelease_spec.rb +0 -11
  82. data/spec/shoes/line_spec.rb +0 -120
  83. data/spec/shoes/link_spec.rb +0 -149
  84. data/spec/shoes/list_box_spec.rb +0 -87
  85. data/spec/shoes/logger/ruby_spec.rb +0 -8
  86. data/spec/shoes/logger_spec.rb +0 -45
  87. data/spec/shoes/oval_spec.rb +0 -25
  88. data/spec/shoes/packager_spec.rb +0 -25
  89. data/spec/shoes/point_spec.rb +0 -99
  90. data/spec/shoes/progress_spec.rb +0 -54
  91. data/spec/shoes/radio_spec.rb +0 -32
  92. data/spec/shoes/rect_spec.rb +0 -40
  93. data/spec/shoes/renamed_delegate_spec.rb +0 -69
  94. data/spec/shoes/shape_spec.rb +0 -119
  95. data/spec/shoes/shared_examples/button.rb +0 -6
  96. data/spec/shoes/shared_examples/changeable.rb +0 -26
  97. data/spec/shoes/shared_examples/clickable.rb +0 -5
  98. data/spec/shoes/shared_examples/common_methods.rb +0 -35
  99. data/spec/shoes/shared_examples/dimensions.rb +0 -32
  100. data/spec/shoes/shared_examples/dsl.rb +0 -44
  101. data/spec/shoes/shared_examples/dsl/animate.rb +0 -29
  102. data/spec/shoes/shared_examples/dsl/arc.rb +0 -45
  103. data/spec/shoes/shared_examples/dsl/background.rb +0 -26
  104. data/spec/shoes/shared_examples/dsl/border.rb +0 -10
  105. data/spec/shoes/shared_examples/dsl/button.rb +0 -5
  106. data/spec/shoes/shared_examples/dsl/cap.rb +0 -6
  107. data/spec/shoes/shared_examples/dsl/check.rb +0 -11
  108. data/spec/shoes/shared_examples/dsl/edit_box.rb +0 -8
  109. data/spec/shoes/shared_examples/dsl/edit_line.rb +0 -8
  110. data/spec/shoes/shared_examples/dsl/editable_element.rb +0 -29
  111. data/spec/shoes/shared_examples/dsl/fill.rb +0 -27
  112. data/spec/shoes/shared_examples/dsl/flow.rb +0 -15
  113. data/spec/shoes/shared_examples/dsl/gradient.rb +0 -62
  114. data/spec/shoes/shared_examples/dsl/image.rb +0 -21
  115. data/spec/shoes/shared_examples/dsl/line.rb +0 -9
  116. data/spec/shoes/shared_examples/dsl/nofill.rb +0 -6
  117. data/spec/shoes/shared_examples/dsl/nostroke.rb +0 -6
  118. data/spec/shoes/shared_examples/dsl/oval.rb +0 -88
  119. data/spec/shoes/shared_examples/dsl/pattern.rb +0 -34
  120. data/spec/shoes/shared_examples/dsl/progress.rb +0 -7
  121. data/spec/shoes/shared_examples/dsl/rect.rb +0 -92
  122. data/spec/shoes/shared_examples/dsl/rgb.rb +0 -28
  123. data/spec/shoes/shared_examples/dsl/shape.rb +0 -61
  124. data/spec/shoes/shared_examples/dsl/star.rb +0 -110
  125. data/spec/shoes/shared_examples/dsl/stroke.rb +0 -30
  126. data/spec/shoes/shared_examples/dsl/strokewidth.rb +0 -19
  127. data/spec/shoes/shared_examples/dsl/style.rb +0 -32
  128. data/spec/shoes/shared_examples/dsl/text_elements.rb +0 -84
  129. data/spec/shoes/shared_examples/dsl/video.rb +0 -5
  130. data/spec/shoes/shared_examples/dsl_app_context.rb +0 -11
  131. data/spec/shoes/shared_examples/hover.rb +0 -78
  132. data/spec/shoes/shared_examples/parent.rb +0 -6
  133. data/spec/shoes/shared_examples/scroll.rb +0 -41
  134. data/spec/shoes/shared_examples/shared_element_method.rb +0 -60
  135. data/spec/shoes/shared_examples/slot.rb +0 -441
  136. data/spec/shoes/shared_examples/state.rb +0 -26
  137. data/spec/shoes/shared_examples/style.rb +0 -77
  138. data/spec/shoes/slot_spec.rb +0 -176
  139. data/spec/shoes/sound_spec.rb +0 -16
  140. data/spec/shoes/span_spec.rb +0 -112
  141. data/spec/shoes/spec_helper.rb +0 -24
  142. data/spec/shoes/stack_spec.rb +0 -79
  143. data/spec/shoes/star_spec.rb +0 -49
  144. data/spec/shoes/text_block_dimensions_spec.rb +0 -77
  145. data/spec/shoes/text_block_spec.rb +0 -314
  146. data/spec/shoes/text_spec.rb +0 -22
  147. data/spec/shoes/ui/picker_spec.rb +0 -69
  148. data/spec/shoes/url_spec.rb +0 -67
  149. data/spec/shoes/widget_spec.rb +0 -78
  150. data/spec/shoes_spec.rb +0 -41
  151. data/spec/spec_helper.rb +0 -27
@@ -1,99 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shoes::Point do
4
- subject { Shoes::Point.new(40, 50) }
5
- let(:other_point) { Shoes::Point.new(10, 60) }
6
-
7
- its(:x) { should eq(40) }
8
- its(:y) { should eq(50) }
9
-
10
- it "#left works on either point" do
11
- expect(subject.left(other_point)).to eq(10)
12
- expect(other_point.left(subject)).to eq(10)
13
- end
14
-
15
- it "#top works on either point" do
16
- expect(subject.top(other_point)).to eq(50)
17
- expect(other_point.top(subject)).to eq(50)
18
- end
19
-
20
- describe "equality" do
21
- it "requires x and y to be equal" do
22
- expect(subject).to eq(Shoes::Point.new(40, 50))
23
- expect(subject).not_to eq(Shoes::Point.new(41, 50))
24
- expect(subject).not_to eq(Shoes::Point.new(40, 51))
25
- end
26
-
27
- it "works with other (x,y) objects" do
28
- expect(subject).to eq(Struct.new(:x, :y).new(40, 50))
29
- end
30
- end
31
-
32
- describe "#+" do
33
- it "performs element-wise addition with other point" do
34
- expect(subject + Shoes::Point.new(40, 50)).to eq(Shoes::Point.new(80, 100))
35
- end
36
-
37
- it "performs element-wise addition with an array" do
38
- expect(subject + [40, 50]).to eq(Shoes::Point.new(80, 100))
39
- end
40
-
41
- it "doesn't perform addition when dimensions don't match" do
42
- expect { subject + [40, 50, 60] }.to raise_error(ArgumentError)
43
- end
44
- end
45
-
46
- describe "#-" do
47
- it "performs element-wise subtraction with other point" do
48
- expect(subject - Shoes::Point.new(40, 50)).to eq(Shoes::Point.new(0, 0))
49
- end
50
-
51
- it "performs element-wise subtraction with an array" do
52
- expect(subject - [40, 50]).to eq(Shoes::Point.new(0, 0))
53
- end
54
-
55
- it "doesn't perform subtraction when dimensions don't match" do
56
- expect { subject - [40, 50, 60] }.to raise_error(ArgumentError)
57
- end
58
- end
59
-
60
- describe "#to" do
61
- it "positive" do
62
- expect(subject.to(24, 166)).to eq(Shoes::Point.new(64, 216))
63
- end
64
-
65
- it "negative" do
66
- expect(subject.to(-24, -166)).to eq(Shoes::Point.new(16, -116))
67
- end
68
- end
69
-
70
- it "calculates width of rectangle created with other point" do
71
- expect(subject.width(other_point)).to eq(30)
72
- expect(other_point.width(subject)).to eq(30)
73
- end
74
-
75
- it "calculates height of rectangle created with other point" do
76
- expect(subject.height(other_point)).to eq(10)
77
- expect(other_point.height(subject)).to eq(10)
78
- end
79
-
80
- describe "converting to string" do
81
- include InspectHelpers
82
-
83
- it "looks like (x,y)" do
84
- expect(subject.to_s).to eq("(40,50)")
85
- end
86
-
87
- it "inspects like (Shoes::Point:0x01234567 (x,y))" do
88
- expect(subject.inspect).to match(/[(]Shoes::Point:#{shoes_object_id_pattern} [(]40,50[)][)]/)
89
- end
90
-
91
- describe "with nil values" do
92
- subject { Shoes::Point.new(nil, nil) }
93
-
94
- it "looks like (nil,nil)" do
95
- expect(subject.to_s).to eq("(_,_)")
96
- end
97
- end
98
- end
99
- end
@@ -1,54 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shoes::Progress do
4
- include_context "dsl app"
5
- let(:input_opts) { { left: left, top: top, width: width, height: height } }
6
-
7
- let(:left) { 10 }
8
- let(:top) { 20 }
9
- let(:width) { 100 }
10
- let(:height) { 200 }
11
-
12
- subject(:progress) { Shoes::Progress.new(app, parent, input_opts, input_block) }
13
-
14
- it { is_expected.to respond_to :fraction }
15
- it { is_expected.to respond_to :fraction= }
16
-
17
- it_behaves_like "object with dimensions"
18
-
19
- it_behaves_like "object with style" do
20
- let(:subject_without_style) { Shoes::Progress.new(app, parent) }
21
- let(:subject_with_style) { Shoes::Progress.new(app, parent, arg_styles) }
22
- end
23
-
24
- context "initialize" do
25
- let(:input_opts) { { fraction: 50 } }
26
-
27
- it "sets fraction" do
28
- expect_any_instance_of(Shoes.configuration.backend::Progress).to receive(:fraction=).with(50)
29
- expect(progress).not_to be_nil
30
- end
31
- end
32
-
33
- context "setting fraction" do
34
- it "sets on gui" do
35
- expect(progress.gui).to receive(:fraction=).with(0.5)
36
- progress.fraction = 0.5
37
- end
38
-
39
- it "sets on self" do
40
- progress.fraction = 0.5
41
- expect(progress.fraction).to eq(0.5)
42
- end
43
- end
44
-
45
- describe "relative dimensions from parent" do
46
- subject { Shoes::Progress.new(app, parent, relative_opts, input_block) }
47
- it_behaves_like "object with relative dimensions"
48
- end
49
-
50
- describe "negative dimensions" do
51
- subject { Shoes::Progress.new(app, parent, negative_opts, input_block) }
52
- it_behaves_like "object with negative dimensions"
53
- end
54
- end
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shoes::Radio do
4
- include_context "dsl app"
5
-
6
- subject(:radio) { Shoes::Radio.new(app, parent, group, input_opts, input_block) }
7
- let(:group) { :a_group }
8
-
9
- it_behaves_like "checkable"
10
- it_behaves_like "object with state"
11
-
12
- it_behaves_like "object with style" do
13
- let(:subject_without_style) { Shoes::Radio.new(app, parent, group) }
14
- let(:subject_with_style) { Shoes::Radio.new(app, parent, group, arg_styles) }
15
- end
16
-
17
- # only one radio in a group can be checked
18
-
19
- describe "#initialize" do
20
- it "sets accessors" do
21
- expect(radio.parent).to eq(parent)
22
- expect(radio.group).to eq(group)
23
- end
24
- end
25
-
26
- describe "#group=" do
27
- it "changes the group" do
28
- radio.group = "New Group"
29
- expect(radio.group).to eq("New Group")
30
- end
31
- end
32
- end
@@ -1,40 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for "basic rect" do
4
- it "retains app" do
5
- expect(rect.app).to eq(app)
6
- end
7
-
8
- it "creates gui object" do
9
- expect(rect.gui).not_to be_nil
10
- end
11
- end
12
-
13
- describe Shoes::Rect do
14
- include_context "dsl app"
15
-
16
- let(:parent) { app }
17
- let(:left) { 44 }
18
- let(:top) { 66 }
19
- let(:width) { 111 }
20
- let(:height) { 333 }
21
- subject(:rect) { Shoes::Rect.new(app, parent, left, top, width, height) }
22
-
23
- describe '#style' do
24
- it 'restyles handed in fill colors (even the weird ones)' do
25
- subject.style fill: 'fff'
26
- expect(subject.style[:fill]).to eq Shoes::Color.new 255, 255, 255
27
- end
28
- end
29
-
30
- it_behaves_like "basic rect"
31
- it_behaves_like "object with style" do
32
- let(:subject_without_style) { Shoes::Rect.new(app, parent, left, top, width, height) }
33
- let(:subject_with_style) { Shoes::Rect.new(app, parent, left, top, width, height, arg_styles) }
34
- end
35
- it_behaves_like "object with dimensions"
36
- it_behaves_like "movable object"
37
- it_behaves_like "left, top as center"
38
- it_behaves_like 'object with parent'
39
- it_behaves_like "object with hover"
40
- end
@@ -1,69 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe RenamedDelegate do
4
- class ToDelegate
5
- def method_key
6
- end
7
-
8
- def abcd
9
- end
10
-
11
- def key
12
- end
13
-
14
- def bla_key
15
- end
16
-
17
- def method_something
18
- end
19
-
20
- def key_something
21
- end
22
- end
23
-
24
- class TestClass
25
- extend RenamedDelegate
26
-
27
- attr_reader :delegate
28
-
29
- def initialize(delegate)
30
- @delegate = delegate
31
- end
32
- end
33
-
34
- TestClass.renamed_delegate_to :delegate,
35
- ToDelegate.public_instance_methods(false),
36
- 'key' => 'shoes', 'something' => 'awesome'
37
-
38
- let(:delegate) { double('delegate').as_null_object }
39
- subject { TestClass.new delegate }
40
-
41
- def test_renaming(new_name, old_name)
42
- subject.public_send new_name
43
- expect(delegate).to have_received old_name
44
- end
45
-
46
- it 'delegates method_shoes to method_key' do
47
- test_renaming :method_shoes, :method_key
48
- end
49
-
50
- it 'delegates shoes to key' do
51
- test_renaming :shoes, :key
52
- end
53
-
54
- it 'delegates bla_shoes to bla_key' do
55
- test_renaming :bla_shoes, :bla_key
56
- end
57
-
58
- it 'delegates method_awesome to method_something' do
59
- test_renaming :method_awesome, :method_something
60
- end
61
-
62
- it 'also applies multiple renamings' do
63
- test_renaming :shoes_awesome, :key_something
64
- end
65
-
66
- it 'does not define a method for methods without renamings' do
67
- expect(subject).not_to respond_to :abcd
68
- end
69
- end
@@ -1,119 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shoes::Shape do
4
- include_context "dsl app"
5
-
6
- let(:left) { 0 }
7
- let(:top) { 0 }
8
- let(:style) { {translate_left: 0, translate_top: 0, left: left, top: top} }
9
- let(:draw) { proc {} }
10
-
11
- subject { Shoes::Shape.new app, parent, style, draw }
12
-
13
- it_behaves_like "object with style" do
14
- let(:subject_without_style) { Shoes::Shape.new(app, parent) }
15
- let(:subject_with_style) { Shoes::Shape.new(app, parent, arg_styles) }
16
- end
17
-
18
- it_behaves_like "movable object"
19
- it_behaves_like "clickable object"
20
-
21
- describe "octagon" do
22
- let(:draw) do
23
- proc do
24
- xs = [200, 300, 370, 370, 300, 200, 130, 130]
25
- ys = [100, 100, 170, 270, 340, 340, 270, 170]
26
- move_to xs.first, ys.first
27
- xs.zip(ys).each do |x, y|
28
- line_to(x, y)
29
- end
30
- line_to xs.first, ys.first
31
- end
32
- end
33
-
34
- its(:left) { should eq(0) }
35
- its(:top) { should eq(0) }
36
- its(:left_bound) { should eq(130) }
37
- its(:top_bound) { should eq(100) }
38
- its(:right_bound) { should eq(370) }
39
- its(:bottom_bound) { should eq(340) }
40
- its(:width) { should eq(app.width) }
41
- its(:height) { should eq app.height }
42
-
43
- it_behaves_like "movable object"
44
-
45
- describe "when created without left and top values" do
46
- let(:left) { nil }
47
- let(:top) { nil }
48
-
49
- its(:left) { should eq(nil) }
50
- its(:top) { should eq(nil) }
51
- end
52
-
53
- describe "when created with left and top values" do
54
- let(:left) { 10 }
55
- let(:top) { 100 }
56
-
57
- its(:left) { should eq(10) }
58
- its(:top) { should eq(100) }
59
- its(:left_bound) { should eq(130) }
60
- its(:top_bound) { should eq(100) }
61
- its(:right_bound) { should eq(370) }
62
- its(:bottom_bound) { should eq(340) }
63
- its(:width) { should eq(app.width) }
64
- its(:height) { should eq app.height }
65
- end
66
- end
67
-
68
- describe "curve" do
69
- let(:draw) do
70
- proc do
71
- move_to 10, 10
72
- curve_to 20, 30, 100, 200, 50, 50
73
- end
74
- end
75
-
76
- its(:left_bound) { should eq(10) }
77
- its(:top_bound) { should eq(10) }
78
- its(:right_bound) { should eq(100) }
79
- its(:bottom_bound) { should eq(200) }
80
- its(:width) { should eq(app.width) }
81
- its(:height) { should eq app.height }
82
-
83
- it_behaves_like "movable object"
84
- end
85
-
86
- describe "arc" do
87
- let(:draw) do
88
- proc do
89
- arc_to 10, 10, 100, 100, Shoes::PI, Shoes::TWO_PI
90
- end
91
- end
92
-
93
- it_behaves_like "movable object"
94
- end
95
-
96
- describe "in_bounds?" do
97
- let(:draw) { proc { line_to 100, 100 } }
98
-
99
- it "is in bounds" do
100
- expect(subject.in_bounds?(10, 10)).to be true
101
- end
102
-
103
- it "is out of bounds" do
104
- expect(subject.in_bounds?(101, 101)).to be false
105
- end
106
- end
107
-
108
- describe "accesses app" do
109
- let(:draw) do
110
- proc do
111
- background Shoes::COLORS[:red]
112
- stroke Shoes::COLORS[:blue]
113
- rect 10, 10, 100, 100
114
- end
115
- end
116
-
117
- it_behaves_like "movable object"
118
- end
119
- end
@@ -1,6 +0,0 @@
1
- shared_examples "checkable" do
2
- it { is_expected.to respond_to :checked= }
3
- it { is_expected.to respond_to :checked? }
4
- it { is_expected.to respond_to :focus }
5
- it { is_expected.to respond_to :click }
6
- end
@@ -1,26 +0,0 @@
1
- shared_examples "an element that can respond to change" do
2
- describe "when passing a block to the constructor" do
3
- it "should notify the block of change events" do
4
- expect(input_block).to receive(:call).with(subject)
5
- subject.call_change_listeners
6
- end
7
- end
8
-
9
- describe "when setting up a callback with #change" do
10
- it "should notify the callback of change events" do
11
- called = false
12
- subject.change do
13
- called = true
14
- end
15
- subject.call_change_listeners
16
- expect(called).to be_truthy
17
- end
18
-
19
- it "should pass the element itself to the callback" do
20
- subject.change do |element|
21
- expect(element).to eq(subject)
22
- end
23
- subject.call_change_listeners
24
- end
25
- end
26
- end