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.
- checksums.yaml +4 -4
- data/lib/shoes/arc.rb +10 -13
- data/lib/shoes/arrow.rb +1 -11
- data/lib/shoes/background.rb +0 -3
- data/lib/shoes/border.rb +0 -3
- data/lib/shoes/button.rb +4 -1
- data/lib/shoes/check_button.rb +0 -1
- data/lib/shoes/common/art_element.rb +21 -0
- data/lib/shoes/common/background_element.rb +10 -0
- data/lib/shoes/common/clickable.rb +2 -0
- data/lib/shoes/common/rotate.rb +1 -2
- data/lib/shoes/common/ui_element.rb +10 -1
- data/lib/shoes/core/version.rb +1 -1
- data/lib/shoes/download.rb +47 -29
- data/lib/shoes/dsl.rb +99 -40
- data/lib/shoes/font.rb +0 -4
- data/lib/shoes/http_request.rb +91 -0
- data/lib/shoes/image.rb +0 -1
- data/lib/shoes/input_box.rb +0 -1
- data/lib/shoes/internal_app.rb +1 -1
- data/lib/shoes/line.rb +25 -11
- data/lib/shoes/link.rb +10 -4
- data/lib/shoes/list_box.rb +0 -1
- data/lib/shoes/mock/app.rb +6 -0
- data/lib/shoes/mock/clickable.rb +3 -0
- data/lib/shoes/mock/font.rb +0 -4
- data/lib/shoes/oval.rb +3 -13
- data/lib/shoes/progress.rb +0 -1
- data/lib/shoes/rect.rb +1 -11
- data/lib/shoes/shape.rb +16 -8
- data/lib/shoes/slot.rb +2 -1
- data/lib/shoes/star.rb +8 -11
- data/lib/shoes/text_block.rb +0 -1
- data/lib/shoes/ui/picker.rb +29 -8
- data/lib/shoes/version.rb +1 -1
- metadata +8 -231
- data/Guardfile +0 -5
- data/Rakefile +0 -1
- data/bin/shoes-stub +0 -62
- data/ext/install/Rakefile +0 -39
- data/ext/install/shoes.bat +0 -17
- data/lib/rubygems_plugin.rb +0 -24
- data/shoes-core.gemspec +0 -22
- data/spec/shoes/animation_spec.rb +0 -71
- data/spec/shoes/app_spec.rb +0 -454
- data/spec/shoes/arc_spec.rb +0 -52
- data/spec/shoes/arrow_spec.rb +0 -28
- data/spec/shoes/background_spec.rb +0 -47
- data/spec/shoes/border_spec.rb +0 -46
- data/spec/shoes/builtin_methods_spec.rb +0 -122
- data/spec/shoes/button_spec.rb +0 -55
- data/spec/shoes/check_spec.rb +0 -36
- data/spec/shoes/color_spec.rb +0 -429
- data/spec/shoes/common/attachable_spec.rb +0 -32
- data/spec/shoes/common/inspect_spec.rb +0 -26
- data/spec/shoes/common/remove_spec.rb +0 -37
- data/spec/shoes/common/rotate_spec.rb +0 -13
- data/spec/shoes/common/style_normalizer_spec.rb +0 -28
- data/spec/shoes/common/style_spec.rb +0 -197
- data/spec/shoes/common/translate_spec.rb +0 -27
- data/spec/shoes/configuration_spec.rb +0 -51
- data/spec/shoes/constants_spec.rb +0 -39
- data/spec/shoes/dialog_spec.rb +0 -169
- data/spec/shoes/dimension_spec.rb +0 -451
- data/spec/shoes/dimensions_spec.rb +0 -868
- data/spec/shoes/download_spec.rb +0 -198
- data/spec/shoes/flow_spec.rb +0 -132
- data/spec/shoes/font_spec.rb +0 -36
- data/spec/shoes/framework_learning_spec.rb +0 -31
- data/spec/shoes/gradient_spec.rb +0 -31
- data/spec/shoes/helpers/fake_absolute_element.rb +0 -31
- data/spec/shoes/helpers/fake_element.rb +0 -25
- data/spec/shoes/helpers/inspect_helpers.rb +0 -5
- data/spec/shoes/helpers/sample17_helper.rb +0 -65
- data/spec/shoes/image_spec.rb +0 -69
- data/spec/shoes/images/shoe.jpg +0 -0
- data/spec/shoes/input_box_spec.rb +0 -80
- data/spec/shoes/integration_spec.rb +0 -19
- data/spec/shoes/internal_app_spec.rb +0 -148
- data/spec/shoes/keypress_spec.rb +0 -11
- data/spec/shoes/keyrelease_spec.rb +0 -11
- data/spec/shoes/line_spec.rb +0 -120
- data/spec/shoes/link_spec.rb +0 -149
- data/spec/shoes/list_box_spec.rb +0 -87
- data/spec/shoes/logger/ruby_spec.rb +0 -8
- data/spec/shoes/logger_spec.rb +0 -45
- data/spec/shoes/oval_spec.rb +0 -25
- data/spec/shoes/packager_spec.rb +0 -25
- data/spec/shoes/point_spec.rb +0 -99
- data/spec/shoes/progress_spec.rb +0 -54
- data/spec/shoes/radio_spec.rb +0 -32
- data/spec/shoes/rect_spec.rb +0 -40
- data/spec/shoes/renamed_delegate_spec.rb +0 -69
- data/spec/shoes/shape_spec.rb +0 -119
- data/spec/shoes/shared_examples/button.rb +0 -6
- data/spec/shoes/shared_examples/changeable.rb +0 -26
- data/spec/shoes/shared_examples/clickable.rb +0 -5
- data/spec/shoes/shared_examples/common_methods.rb +0 -35
- data/spec/shoes/shared_examples/dimensions.rb +0 -32
- data/spec/shoes/shared_examples/dsl.rb +0 -44
- data/spec/shoes/shared_examples/dsl/animate.rb +0 -29
- data/spec/shoes/shared_examples/dsl/arc.rb +0 -45
- data/spec/shoes/shared_examples/dsl/background.rb +0 -26
- data/spec/shoes/shared_examples/dsl/border.rb +0 -10
- data/spec/shoes/shared_examples/dsl/button.rb +0 -5
- data/spec/shoes/shared_examples/dsl/cap.rb +0 -6
- data/spec/shoes/shared_examples/dsl/check.rb +0 -11
- data/spec/shoes/shared_examples/dsl/edit_box.rb +0 -8
- data/spec/shoes/shared_examples/dsl/edit_line.rb +0 -8
- data/spec/shoes/shared_examples/dsl/editable_element.rb +0 -29
- data/spec/shoes/shared_examples/dsl/fill.rb +0 -27
- data/spec/shoes/shared_examples/dsl/flow.rb +0 -15
- data/spec/shoes/shared_examples/dsl/gradient.rb +0 -62
- data/spec/shoes/shared_examples/dsl/image.rb +0 -21
- data/spec/shoes/shared_examples/dsl/line.rb +0 -9
- data/spec/shoes/shared_examples/dsl/nofill.rb +0 -6
- data/spec/shoes/shared_examples/dsl/nostroke.rb +0 -6
- data/spec/shoes/shared_examples/dsl/oval.rb +0 -88
- data/spec/shoes/shared_examples/dsl/pattern.rb +0 -34
- data/spec/shoes/shared_examples/dsl/progress.rb +0 -7
- data/spec/shoes/shared_examples/dsl/rect.rb +0 -92
- data/spec/shoes/shared_examples/dsl/rgb.rb +0 -28
- data/spec/shoes/shared_examples/dsl/shape.rb +0 -61
- data/spec/shoes/shared_examples/dsl/star.rb +0 -110
- data/spec/shoes/shared_examples/dsl/stroke.rb +0 -30
- data/spec/shoes/shared_examples/dsl/strokewidth.rb +0 -19
- data/spec/shoes/shared_examples/dsl/style.rb +0 -32
- data/spec/shoes/shared_examples/dsl/text_elements.rb +0 -84
- data/spec/shoes/shared_examples/dsl/video.rb +0 -5
- data/spec/shoes/shared_examples/dsl_app_context.rb +0 -11
- data/spec/shoes/shared_examples/hover.rb +0 -78
- data/spec/shoes/shared_examples/parent.rb +0 -6
- data/spec/shoes/shared_examples/scroll.rb +0 -41
- data/spec/shoes/shared_examples/shared_element_method.rb +0 -60
- data/spec/shoes/shared_examples/slot.rb +0 -441
- data/spec/shoes/shared_examples/state.rb +0 -26
- data/spec/shoes/shared_examples/style.rb +0 -77
- data/spec/shoes/slot_spec.rb +0 -176
- data/spec/shoes/sound_spec.rb +0 -16
- data/spec/shoes/span_spec.rb +0 -112
- data/spec/shoes/spec_helper.rb +0 -24
- data/spec/shoes/stack_spec.rb +0 -79
- data/spec/shoes/star_spec.rb +0 -49
- data/spec/shoes/text_block_dimensions_spec.rb +0 -77
- data/spec/shoes/text_block_spec.rb +0 -314
- data/spec/shoes/text_spec.rb +0 -22
- data/spec/shoes/ui/picker_spec.rb +0 -69
- data/spec/shoes/url_spec.rb +0 -67
- data/spec/shoes/widget_spec.rb +0 -78
- data/spec/shoes_spec.rb +0 -41
- data/spec/spec_helper.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1b7205ad873a89bbd6ed14d91f485200cf83f15
|
4
|
+
data.tar.gz: eec9c9656150201d5c0fcce0b9425c6f2c842fef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f10912fc2b305ce9296d58358b0b1de4553f291ab1e9471a5cecff13a9838b595ef650ebd36bdb266f0a5f699cf2e361f30e8c3196ccdbb68ee73e4b8b747e3b
|
7
|
+
data.tar.gz: e7de5b6d95f8b7ff98ade674141b42ccdf02e311b6afaa724459e9e0c69e7ca741f169757bee91f6e2155fb0e4fa312760b76e75364d9afd81b2234b3798246e
|
data/lib/shoes/arc.rb
CHANGED
@@ -1,22 +1,19 @@
|
|
1
1
|
class Shoes
|
2
2
|
class Arc
|
3
|
-
include Common::
|
4
|
-
include Common::Clickable
|
5
|
-
include Common::Hover
|
6
|
-
include Common::Fill
|
7
|
-
include Common::Stroke
|
8
|
-
include Common::Style
|
9
|
-
include Common::Translate
|
3
|
+
include Common::ArtElement
|
10
4
|
|
11
5
|
style_with :angle1, :angle2, :art_styles, :center, :common_styles, :dimensions, :radius, :wedge
|
12
|
-
STYLES = { wedge: false }.freeze
|
6
|
+
STYLES = { wedge: false, fill: Shoes::COLORS[:black] }.freeze
|
13
7
|
|
14
|
-
def
|
15
|
-
|
16
|
-
|
17
|
-
|
8
|
+
def create_dimensions(left, top, width, height, angle1, angle2)
|
9
|
+
@style[:angle1] = angle1 || @style[:angle1] || 0
|
10
|
+
@style[:angle2] = angle2 || @style[:angle2] || 0
|
11
|
+
|
12
|
+
left ||= @style[:left] || 0
|
13
|
+
top ||= @style[:top] || 0
|
14
|
+
width ||= @style[:width] || 0
|
15
|
+
height ||= @style[:height] || 0
|
18
16
|
|
19
|
-
def create_dimensions(left, top, width, height, _angle1, _angle2)
|
20
17
|
@dimensions = Dimensions.new parent, left, top, width, height, @style
|
21
18
|
end
|
22
19
|
|
data/lib/shoes/arrow.rb
CHANGED
@@ -1,12 +1,6 @@
|
|
1
1
|
class Shoes
|
2
2
|
class Arrow
|
3
|
-
include Common::
|
4
|
-
include Common::Clickable
|
5
|
-
include Common::Fill
|
6
|
-
include Common::Hover
|
7
|
-
include Common::Stroke
|
8
|
-
include Common::Style
|
9
|
-
include Common::Translate
|
3
|
+
include Common::ArtElement
|
10
4
|
|
11
5
|
style_with :angle, :art_styles, :curve, :common_styles, :dimensions
|
12
6
|
STYLES = { angle: 0, fill: Shoes::COLORS[:black] }.freeze
|
@@ -19,10 +13,6 @@ class Shoes
|
|
19
13
|
@dimensions = AbsoluteDimensions.new left, top, width, width, @style
|
20
14
|
end
|
21
15
|
|
22
|
-
def needs_rotate?
|
23
|
-
rotate && rotate.nonzero?
|
24
|
-
end
|
25
|
-
|
26
16
|
def width=(*_)
|
27
17
|
super
|
28
18
|
gui.update_position
|
data/lib/shoes/background.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
class Shoes
|
2
2
|
class Background
|
3
|
-
include Common::UIElement
|
4
3
|
include Common::BackgroundElement
|
5
4
|
include Common::Fill
|
6
|
-
include Common::Stroke
|
7
|
-
include Common::Style
|
8
5
|
|
9
6
|
style_with :angle, :common_styles, :curve, :dimensions, :fill
|
10
7
|
STYLES = { angle: 0, curve: 0 }.freeze
|
data/lib/shoes/border.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
class Shoes
|
2
2
|
class Border
|
3
|
-
include Common::UIElement
|
4
3
|
include Common::BackgroundElement
|
5
|
-
include Common::Fill
|
6
4
|
include Common::Stroke
|
7
|
-
include Common::Style
|
8
5
|
|
9
6
|
style_with :angle, :common_styles, :curve, :dimensions, :stroke, :strokewidth
|
10
7
|
STYLES = { angle: 0, curve: 0 }.freeze
|
data/lib/shoes/button.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
class Shoes
|
2
2
|
class Button
|
3
3
|
include Common::UIElement
|
4
|
-
include Common::Style
|
5
4
|
include Common::Clickable
|
6
5
|
include Common::State
|
7
6
|
|
7
|
+
# We don't actually support release from buttons, but want to use the
|
8
|
+
# shared infrastructure for clicking. So just get rid of release post def.
|
9
|
+
undef release
|
10
|
+
|
8
11
|
style_with :click, :common_styles, :dimensions, :state, :text
|
9
12
|
|
10
13
|
def before_initialize(styles, text)
|
data/lib/shoes/check_button.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
class Shoes
|
2
|
+
module Common
|
3
|
+
module ArtElement
|
4
|
+
include Common::UIElement
|
5
|
+
include Common::Clickable
|
6
|
+
include Common::Fill
|
7
|
+
include Common::Rotate
|
8
|
+
include Common::Stroke
|
9
|
+
include Common::Translate
|
10
|
+
|
11
|
+
# Modules that muck with class methods need to be included like this
|
12
|
+
#
|
13
|
+
# We also can't rely on Common::UIElement providing these, as it gets
|
14
|
+
# ArtElement, not the destination class to add things to!
|
15
|
+
def self.included(base)
|
16
|
+
base.include Common::Hover
|
17
|
+
base.include Common::Style
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,6 +1,16 @@
|
|
1
1
|
class Shoes
|
2
2
|
module Common
|
3
3
|
module BackgroundElement
|
4
|
+
include Common::UIElement
|
5
|
+
|
6
|
+
# Modules that muck with class methods need to be included like this
|
7
|
+
#
|
8
|
+
# We also can't rely on Common::UIElement providing these, as it gets
|
9
|
+
# BackgroundElement, not the destination class to add things to!
|
10
|
+
def self.included(base)
|
11
|
+
base.include Common::Style
|
12
|
+
end
|
13
|
+
|
4
14
|
def create_dimensions(*_)
|
5
15
|
@dimensions = ParentDimensions.new @parent, @style
|
6
16
|
end
|
data/lib/shoes/common/rotate.rb
CHANGED
@@ -7,9 +7,18 @@ class Shoes
|
|
7
7
|
include Common::Visibility
|
8
8
|
include Common::Positioning
|
9
9
|
include Common::Remove
|
10
|
-
include Common::Rotate
|
11
10
|
include DimensionsDelegations
|
12
11
|
|
12
|
+
# Modules that muck with class methods need to be included like this
|
13
|
+
def self.included(base)
|
14
|
+
base.include Common::Style
|
15
|
+
end
|
16
|
+
|
17
|
+
# Nobody rotates by default, but we need to let you check
|
18
|
+
def needs_rotate?
|
19
|
+
false
|
20
|
+
end
|
21
|
+
|
13
22
|
# Expected to be overridden by pulling in Common::Fill or Common::Stroke
|
14
23
|
# if element needs to actually notify GUI classes of colors changes.
|
15
24
|
def update_fill
|
data/lib/shoes/core/version.rb
CHANGED
data/lib/shoes/download.rb
CHANGED
@@ -17,7 +17,12 @@ class Shoes
|
|
17
17
|
def initialize(app, _parent, url, opts = {}, &blk)
|
18
18
|
@app = app
|
19
19
|
@url = url
|
20
|
+
|
20
21
|
@opts = opts
|
22
|
+
@body = opts[:body]
|
23
|
+
@headers = opts[:headers] || {}
|
24
|
+
@method = opts[:method] || "GET"
|
25
|
+
|
21
26
|
initialize_blocks(app, blk)
|
22
27
|
|
23
28
|
@gui = Shoes.backend_for(self)
|
@@ -70,20 +75,16 @@ class Shoes
|
|
70
75
|
private
|
71
76
|
|
72
77
|
def start_download
|
73
|
-
require 'open-uri'
|
74
78
|
@thread = Thread.new do
|
75
79
|
begin
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
open @url, uri_opts do |download_data|
|
81
|
-
@response.body = download_data.read
|
82
|
-
@response.status = download_data.status
|
83
|
-
@response.headers = download_data.meta
|
84
|
-
save_to_file(@opts[:save]) if @opts[:save]
|
85
|
-
finish_download download_data
|
80
|
+
request = Shoes::HttpRequest.new(download_started_proc)
|
81
|
+
request.read_chunks(@url, @method, @body, @headers) do |chunk|
|
82
|
+
@response.body += chunk
|
83
|
+
try_progress(@response.body.length)
|
86
84
|
end
|
85
|
+
|
86
|
+
save_to_file(@opts[:save]) if @opts[:save]
|
87
|
+
finish_download
|
87
88
|
rescue SocketError => e
|
88
89
|
Shoes.logger.error e
|
89
90
|
rescue => e
|
@@ -100,26 +101,25 @@ class Shoes
|
|
100
101
|
end
|
101
102
|
end
|
102
103
|
|
103
|
-
def
|
104
|
-
|
105
|
-
|
106
|
-
|
104
|
+
def try_progress(size)
|
105
|
+
if should_mark_progress?(size)
|
106
|
+
@transferred = size
|
107
|
+
mark_progress
|
107
108
|
end
|
108
109
|
end
|
109
110
|
|
110
|
-
def
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
end
|
111
|
+
def mark_progress
|
112
|
+
@gui.busy = true
|
113
|
+
eval_block(@progress_blk, self)
|
114
|
+
end
|
115
|
+
|
116
|
+
def should_mark_progress?(size)
|
117
|
+
!content_length.nil? &&
|
118
|
+
(size - transferred) > (content_length / UPDATE_STEPS) &&
|
119
|
+
!@gui.busy?
|
120
120
|
end
|
121
121
|
|
122
|
-
def finish_download
|
122
|
+
def finish_download
|
123
123
|
@finished = true
|
124
124
|
|
125
125
|
# In case backend didn't catch the 100%
|
@@ -140,9 +140,27 @@ class Shoes
|
|
140
140
|
open(file_path, 'wb') { |fw| fw.print @response.body }
|
141
141
|
end
|
142
142
|
|
143
|
-
def
|
144
|
-
|
145
|
-
|
143
|
+
def download_started_proc
|
144
|
+
lambda do |response|
|
145
|
+
download_started(response)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
def download_started(response)
|
150
|
+
@started = true
|
151
|
+
@content_length = read_content_length(response)
|
152
|
+
|
153
|
+
@response.status = [response.code, response.message]
|
154
|
+
response.each_header do |key|
|
155
|
+
@response.headers[key] = response[key]
|
156
|
+
end
|
157
|
+
|
158
|
+
mark_progress
|
159
|
+
end
|
160
|
+
|
161
|
+
def read_content_length(response)
|
162
|
+
len = response["Content-Length"]
|
163
|
+
len.nil? ? nil : len.to_i
|
146
164
|
end
|
147
165
|
end
|
148
166
|
end
|
data/lib/shoes/dsl.rb
CHANGED
@@ -68,14 +68,14 @@ require 'shoes/renamed_delegate'
|
|
68
68
|
require 'shoes/common/inspect'
|
69
69
|
require 'shoes/dimension'
|
70
70
|
require 'shoes/dimensions'
|
71
|
-
require 'shoes/not_implemented_error'
|
72
71
|
require 'shoes/file_not_found_error'
|
72
|
+
require 'shoes/http_request'
|
73
|
+
require 'shoes/not_implemented_error'
|
73
74
|
require 'shoes/text_block_dimensions'
|
74
75
|
|
75
76
|
require 'shoes/color'
|
76
77
|
|
77
78
|
require 'shoes/common/attachable'
|
78
|
-
require 'shoes/common/background_element'
|
79
79
|
require 'shoes/common/changeable'
|
80
80
|
require 'shoes/common/clickable'
|
81
81
|
require 'shoes/common/fill'
|
@@ -93,6 +93,8 @@ require 'shoes/common/translate'
|
|
93
93
|
require 'shoes/common/visibility'
|
94
94
|
|
95
95
|
require 'shoes/common/ui_element'
|
96
|
+
require 'shoes/common/art_element'
|
97
|
+
require 'shoes/common/background_element'
|
96
98
|
|
97
99
|
require 'shoes/builtin_methods'
|
98
100
|
require 'shoes/check_button'
|
@@ -148,7 +150,6 @@ class Shoes
|
|
148
150
|
# #element_styles: a hash of {Class => styles}, where styles is
|
149
151
|
# a hash of default styles for elements of Class,
|
150
152
|
module DSL
|
151
|
-
include Common::Style
|
152
153
|
include Color::DSLHelpers
|
153
154
|
|
154
155
|
# Set default style for elements of a particular class, or for all
|
@@ -308,15 +309,37 @@ class Shoes
|
|
308
309
|
Shoes::Sound.new @__app__, soundfile, opts, &blk
|
309
310
|
end
|
310
311
|
|
311
|
-
# Creates an arrow
|
312
|
+
# Creates an arrow
|
312
313
|
#
|
313
|
-
# @
|
314
|
-
#
|
315
|
-
#
|
316
|
-
#
|
317
|
-
#
|
318
|
-
|
319
|
-
|
314
|
+
# @overload arrow(left, top, width, opts)
|
315
|
+
# Creates an arrow centered at (left, top)
|
316
|
+
# @param [Integer] left the x-coordinate of the element center
|
317
|
+
# @param [Integer] top the y-coordinate of the element center
|
318
|
+
# @param [Integer] width the width of the arrow
|
319
|
+
# @param [Hash] opts Arrow style options
|
320
|
+
# @option opts [Integer] rotate (false)
|
321
|
+
# @overload arrow(opts)
|
322
|
+
# Creates an arrow using values from the opts Hash.
|
323
|
+
# @param [Hash] opts
|
324
|
+
# @option styles [Integer] left (0) the x-coordinate of the top-left corner
|
325
|
+
# @option styles [Integer] top (0) the y-coordinate of the top-left corner
|
326
|
+
# @option styles [Integer] width (0) the width
|
327
|
+
# @option styles [Integer] rotate (false)
|
328
|
+
def arrow(*args, &blk)
|
329
|
+
opts = style_normalizer.normalize pop_style(args)
|
330
|
+
|
331
|
+
left, top, width, *leftovers = args
|
332
|
+
|
333
|
+
message = <<EOS
|
334
|
+
Too many arguments. Must be one of:
|
335
|
+
- arrow(left, top, width, [opts])
|
336
|
+
- arrow(left, top, [opts])
|
337
|
+
- arrow(left, [opts])
|
338
|
+
- arrow([opts])
|
339
|
+
EOS
|
340
|
+
raise ArgumentError, message if leftovers.any?
|
341
|
+
|
342
|
+
create Shoes::Arrow, left, top, width, opts, blk
|
320
343
|
end
|
321
344
|
|
322
345
|
# Creates an arc at (left, top)
|
@@ -330,8 +353,24 @@ class Shoes
|
|
330
353
|
# @param [Hash] opts Arc style options
|
331
354
|
# @option opts [Boolean] wedge (false)
|
332
355
|
# @option opts [Boolean] center (false) is (left, top) the center of the rectangle?
|
333
|
-
def arc(
|
334
|
-
|
356
|
+
def arc(*args, &blk)
|
357
|
+
opts = style_normalizer.normalize pop_style(args)
|
358
|
+
|
359
|
+
left, top, width, height, angle1, angle2, *leftovers = args
|
360
|
+
|
361
|
+
message = <<EOS
|
362
|
+
Too many arguments. Must be one of:
|
363
|
+
- arc(left, top, width, height, angle1, angle2, [opts])
|
364
|
+
- arc(left, top, width, height, angle1, [opts])
|
365
|
+
- arc(left, top, width, height, [opts])
|
366
|
+
- arc(left, top, width, [opts])
|
367
|
+
- arc(left, top, [opts])
|
368
|
+
- arc(left, [opts])
|
369
|
+
- arc([opts])
|
370
|
+
EOS
|
371
|
+
raise ArgumentError, message if leftovers.any?
|
372
|
+
|
373
|
+
create Shoes::Arc, left, top, width, height, angle1, angle2, opts, blk
|
335
374
|
end
|
336
375
|
|
337
376
|
# Draws a line from point A (x1,y1) to point B (x2,y2)
|
@@ -341,8 +380,22 @@ class Shoes
|
|
341
380
|
# @param [Integer] x2 The x-value of point B
|
342
381
|
# @param [Integer] y2 The y-value of point B
|
343
382
|
# @param [Hash] opts Style options
|
344
|
-
def line(
|
345
|
-
|
383
|
+
def line(*args, &blk)
|
384
|
+
opts = style_normalizer.normalize pop_style(args)
|
385
|
+
|
386
|
+
x1, y1, x2, y2, *leftovers = args
|
387
|
+
|
388
|
+
message = <<EOS
|
389
|
+
Too many arguments. Must be one of:
|
390
|
+
- line(x1, y1, x2, y2, [opts])
|
391
|
+
- line(x1, y1, x2, [opts])
|
392
|
+
- line(x1, y1, [opts])
|
393
|
+
- line(x1, [opts])
|
394
|
+
- line([opts])
|
395
|
+
EOS
|
396
|
+
raise ArgumentError, message if leftovers.any?
|
397
|
+
|
398
|
+
create Shoes::Line, x1, y1, x2, y2, opts, blk
|
346
399
|
end
|
347
400
|
|
348
401
|
# Creates an oval at (left, top)
|
@@ -367,21 +420,22 @@ class Shoes
|
|
367
420
|
# @option styles [Integer] height (0) the height
|
368
421
|
# @option styles [Integer] top (0) the y-coordinate of the top-left corner
|
369
422
|
# @option styles [Boolean] center (false) is (left, top) the center of the oval
|
370
|
-
|
371
|
-
|
372
|
-
oval_style = pop_style(opts)
|
373
|
-
oval_style = style_normalizer.normalize(oval_style)
|
423
|
+
def oval(*args, &blk)
|
424
|
+
opts = style_normalizer.normalize pop_style(args)
|
374
425
|
|
375
|
-
left, top, width, height =
|
426
|
+
left, top, width, height, *leftovers = args
|
376
427
|
|
377
428
|
message = <<EOS
|
378
429
|
Wrong number of arguments. Must be one of:
|
379
|
-
- oval(left, top, diameter, [opts])
|
380
430
|
- oval(left, top, width, height, [opts])
|
431
|
+
- oval(left, top, diameter, [opts])
|
432
|
+
- oval(left, top, [opts])
|
433
|
+
- oval(left, [opts])
|
381
434
|
- oval(styles)
|
382
435
|
EOS
|
383
|
-
raise ArgumentError, message
|
384
|
-
|
436
|
+
raise ArgumentError, message if leftovers.any?
|
437
|
+
|
438
|
+
create Shoes::Oval, left, top, width, height, opts, blk
|
385
439
|
end
|
386
440
|
|
387
441
|
# Creates a rectangle
|
@@ -406,21 +460,24 @@ EOS
|
|
406
460
|
# @option styles [Integer] height (0) the height
|
407
461
|
# @option styles [Integer] top (0) the y-coordinate of the top-left corner
|
408
462
|
# @option styles [Boolean] center (false) is (left, top) the center of the rectangle?
|
409
|
-
RECT_ALLOWED_ARG_SIZES = [0, 3, 4, 5].freeze
|
410
463
|
def rect(*args, &blk)
|
411
464
|
opts = style_normalizer.normalize pop_style(args)
|
412
465
|
|
413
|
-
left, top, width, height, curve = args
|
466
|
+
left, top, width, height, curve, *leftovers = args
|
414
467
|
opts[:curve] = curve if curve
|
415
468
|
|
416
469
|
message = <<EOS
|
417
470
|
Wrong number of arguments. Must be one of:
|
418
|
-
- rect(left, top, side, [opts])
|
419
|
-
- rect(left, top, width, height, [opts])
|
420
471
|
- rect(left, top, width, height, curve, [opts])
|
472
|
+
- rect(left, top, width, height, [opts])
|
473
|
+
- rect(left, top, side, [opts])
|
474
|
+
- rect(left, top, [opts])
|
475
|
+
- rect(left, [opts])
|
421
476
|
- rect(styles)
|
422
477
|
EOS
|
423
|
-
|
478
|
+
|
479
|
+
raise ArgumentError, message if leftovers.any?
|
480
|
+
|
424
481
|
create Shoes::Rect, left, top, width, height, style.merge(opts), blk
|
425
482
|
end
|
426
483
|
|
@@ -452,21 +509,21 @@ EOS
|
|
452
509
|
# @param [Integer] outer outer radius of star
|
453
510
|
# @param [Integer] inner inner radius of star
|
454
511
|
# @param [Hash] styles optional, additional styling for the element
|
455
|
-
def star(
|
512
|
+
def star(*args, &blk)
|
456
513
|
styles = style_normalizer.normalize pop_style(args)
|
457
514
|
|
458
|
-
points, outer, inner,
|
515
|
+
left, top, points, outer, inner, *leftovers = args
|
459
516
|
|
460
|
-
|
461
|
-
message = <<EOS
|
517
|
+
message = <<EOS
|
462
518
|
Wrong number of arguments. Must be one of:
|
519
|
+
- star([styles])
|
520
|
+
- star(left, [styles])
|
463
521
|
- star(left, top, [styles])
|
464
522
|
- star(left, top, points, [styles])
|
465
523
|
- star(left, top, points, outer, [styles])
|
466
524
|
- star(left, top, points, outer, inner, [styles])
|
467
525
|
EOS
|
468
|
-
|
469
|
-
end
|
526
|
+
raise ArgumentError, message if leftovers.any?
|
470
527
|
|
471
528
|
create Shoes::Star, left, top, points, outer, inner, styles, blk
|
472
529
|
end
|
@@ -485,19 +542,21 @@ EOS
|
|
485
542
|
# Creates a shape at (0, 0)
|
486
543
|
# @option styles [Integer] left (0) the x-coordinate of the top-left corner
|
487
544
|
# @option styles [Integer] top (0) the y-coordinate of the top-left corner
|
488
|
-
SHAPE_ALLOWED_ARG_SIZES = [0, 2].freeze
|
489
545
|
def shape(*args, &blk)
|
490
546
|
opts = style_normalizer.normalize pop_style(args)
|
491
|
-
|
547
|
+
|
548
|
+
left, top, *leftovers = args
|
492
549
|
|
493
550
|
message = <<EOS
|
494
551
|
Wrong number of arguments. Must be one of:
|
495
|
-
- shape()
|
496
552
|
- shape(left, top, [opts])
|
497
|
-
- shape(
|
553
|
+
- shape(left, [opts])
|
554
|
+
- shape([opts])
|
498
555
|
EOS
|
499
|
-
|
500
|
-
|
556
|
+
|
557
|
+
raise ArgumentError, message if leftovers.any?
|
558
|
+
|
559
|
+
create Shoes::Shape, left, top, opts, blk
|
501
560
|
end
|
502
561
|
|
503
562
|
# Define app-level setter methods
|