shoes-core 4.0.0.pre12 → 4.0.0.rc1
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/bin/shoes-picker +1 -0
- data/fonts/FiraMono.otf +0 -0
- data/lib/shoes.rb +1 -0
- data/lib/shoes/animation.rb +1 -0
- data/lib/shoes/app.rb +4 -3
- data/lib/shoes/arc.rb +3 -0
- data/lib/shoes/arrow.rb +34 -2
- data/lib/shoes/background.rb +1 -0
- data/lib/shoes/border.rb +1 -0
- data/lib/shoes/builtin_methods.rb +2 -1
- data/lib/shoes/button.rb +1 -0
- data/lib/shoes/check_button.rb +1 -0
- data/lib/shoes/color.rb +7 -6
- data/lib/shoes/color/dsl.rb +1 -0
- data/lib/shoes/color/dsl_helpers.rb +1 -0
- data/lib/shoes/color/hex_converter.rb +1 -0
- data/lib/shoes/common/art_element.rb +5 -0
- data/lib/shoes/common/attachable.rb +1 -0
- data/lib/shoes/common/background_element.rb +5 -0
- data/lib/shoes/common/changeable.rb +1 -0
- data/lib/shoes/common/clickable.rb +1 -0
- data/lib/shoes/common/fill.rb +1 -0
- data/lib/shoes/common/focus.rb +9 -0
- data/lib/shoes/common/hover.rb +8 -7
- data/lib/shoes/common/image_handling.rb +1 -0
- data/lib/shoes/common/inspect.rb +1 -0
- data/lib/shoes/common/link_finder.rb +1 -0
- data/lib/shoes/common/positioning.rb +1 -0
- data/lib/shoes/common/registration.rb +1 -0
- data/lib/shoes/common/remove.rb +2 -2
- data/lib/shoes/common/rotate.rb +1 -0
- data/lib/shoes/common/safely_evaluate.rb +1 -0
- data/lib/shoes/common/state.rb +1 -0
- data/lib/shoes/common/stroke.rb +1 -0
- data/lib/shoes/common/style.rb +3 -1
- data/lib/shoes/common/style_normalizer.rb +1 -0
- data/lib/shoes/common/translate.rb +1 -0
- data/lib/shoes/common/ui_element.rb +24 -0
- data/lib/shoes/common/visibility.rb +21 -1
- data/lib/shoes/configuration.rb +1 -0
- data/lib/shoes/console.rb +2 -1
- data/lib/shoes/core.rb +1 -0
- data/lib/shoes/core/version.rb +1 -1
- data/lib/shoes/dialog.rb +2 -1
- data/lib/shoes/dimension.rb +17 -7
- data/lib/shoes/dimensions.rb +12 -1
- data/lib/shoes/download.rb +1 -0
- data/lib/shoes/dsl.rb +2 -1
- data/lib/shoes/dsl/animate.rb +1 -0
- data/lib/shoes/dsl/art.rb +51 -50
- data/lib/shoes/dsl/element.rb +1 -0
- data/lib/shoes/dsl/interaction.rb +1 -0
- data/lib/shoes/dsl/media.rb +4 -3
- data/lib/shoes/dsl/setup.rb +1 -0
- data/lib/shoes/dsl/style.rb +1 -0
- data/lib/shoes/dsl/text.rb +3 -2
- data/lib/shoes/file_not_found_error.rb +1 -0
- data/lib/shoes/font.rb +1 -0
- data/lib/shoes/gradient.rb +1 -0
- data/lib/shoes/image.rb +1 -0
- data/lib/shoes/image_pattern.rb +1 -0
- data/lib/shoes/input_box.rb +1 -0
- data/lib/shoes/internal_app.rb +7 -4
- data/lib/shoes/key_event.rb +1 -0
- data/lib/shoes/line.rb +19 -2
- data/lib/shoes/link.rb +1 -0
- data/lib/shoes/list_box.rb +1 -0
- data/lib/shoes/mock/animation.rb +1 -0
- data/lib/shoes/mock/app.rb +1 -0
- data/lib/shoes/mock/arc.rb +1 -0
- data/lib/shoes/mock/arrow.rb +1 -0
- data/lib/shoes/mock/background.rb +1 -0
- data/lib/shoes/mock/border.rb +1 -0
- data/lib/shoes/mock/button.rb +1 -0
- data/lib/shoes/mock/check.rb +1 -0
- data/lib/shoes/mock/clickable.rb +1 -0
- data/lib/shoes/mock/common_methods.rb +1 -0
- data/lib/shoes/mock/dialog.rb +1 -0
- data/lib/shoes/mock/download.rb +1 -0
- data/lib/shoes/mock/font.rb +1 -0
- data/lib/shoes/mock/image.rb +1 -0
- data/lib/shoes/mock/image_pattern.rb +1 -0
- data/lib/shoes/mock/input_box.rb +1 -0
- data/lib/shoes/mock/keypress.rb +1 -0
- data/lib/shoes/mock/keyrelease.rb +1 -0
- data/lib/shoes/mock/line.rb +1 -0
- data/lib/shoes/mock/link.rb +1 -0
- data/lib/shoes/mock/list_box.rb +1 -0
- data/lib/shoes/mock/oval.rb +1 -0
- data/lib/shoes/mock/packager.rb +1 -0
- data/lib/shoes/mock/progress.rb +1 -0
- data/lib/shoes/mock/radio.rb +1 -0
- data/lib/shoes/mock/rect.rb +1 -0
- data/lib/shoes/mock/shape.rb +1 -0
- data/lib/shoes/mock/slot.rb +1 -0
- data/lib/shoes/mock/sound.rb +1 -0
- data/lib/shoes/mock/star.rb +1 -0
- data/lib/shoes/mock/text_block.rb +1 -0
- data/lib/shoes/mock/timer.rb +1 -0
- data/lib/shoes/not_implemented_error.rb +1 -0
- data/lib/shoes/oval.rb +1 -0
- data/lib/shoes/packager.rb +1 -0
- data/lib/shoes/point.rb +1 -0
- data/lib/shoes/progress.rb +1 -0
- data/lib/shoes/radio.rb +1 -0
- data/lib/shoes/rect.rb +3 -2
- data/lib/shoes/renamed_delegate.rb +1 -0
- data/lib/shoes/shape.rb +31 -0
- data/lib/shoes/slot.rb +52 -14
- data/lib/shoes/slot_contents.rb +1 -0
- data/lib/shoes/sound.rb +1 -0
- data/lib/shoes/span.rb +1 -0
- data/lib/shoes/standard_logger.rb +1 -0
- data/lib/shoes/star.rb +29 -2
- data/lib/shoes/text.rb +1 -0
- data/lib/shoes/text_block.rb +11 -1
- data/lib/shoes/text_block_dimensions.rb +9 -0
- data/lib/shoes/timer.rb +1 -0
- data/lib/shoes/ui/cli.rb +1 -0
- data/lib/shoes/ui/cli/base_command.rb +1 -0
- data/lib/shoes/ui/cli/default_command.rb +1 -0
- data/lib/shoes/ui/cli/help_command.rb +4 -3
- data/lib/shoes/ui/cli/manual_command.rb +4 -3
- data/lib/shoes/ui/cli/package_command.rb +1 -0
- data/lib/shoes/ui/cli/samples_command.rb +1 -0
- data/lib/shoes/ui/cli/select_backend_command.rb +5 -4
- data/lib/shoes/ui/cli/version_command.rb +4 -3
- data/lib/shoes/ui/picker.rb +1 -0
- data/lib/shoes/url.rb +1 -0
- data/lib/shoes/version.rb +1 -1
- data/lib/shoes/widget.rb +1 -0
- data/lib/shoes/window.rb +1 -0
- data/static/shoes-icon.png +0 -0
- metadata +3 -2
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
class Shoes
|
3
4
|
module Common
|
4
5
|
class UIElement
|
@@ -88,6 +89,29 @@ class Shoes
|
|
88
89
|
|
89
90
|
def update_stroke
|
90
91
|
end
|
92
|
+
|
93
|
+
# Some element types (arrows, shapes) don't necessarily track their
|
94
|
+
# element locations in the standard way. Let them inform redrawing about
|
95
|
+
# the actual bounds to redraw within by overriding these methods
|
96
|
+
def redraw_left
|
97
|
+
element_left
|
98
|
+
end
|
99
|
+
|
100
|
+
def redraw_top
|
101
|
+
element_top
|
102
|
+
end
|
103
|
+
|
104
|
+
def redraw_width
|
105
|
+
element_width
|
106
|
+
end
|
107
|
+
|
108
|
+
def redraw_height
|
109
|
+
element_height
|
110
|
+
end
|
111
|
+
|
112
|
+
def painted?
|
113
|
+
false
|
114
|
+
end
|
91
115
|
end
|
92
116
|
end
|
93
117
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
class Shoes
|
3
4
|
module Common
|
4
5
|
module Visibility
|
@@ -8,8 +9,10 @@ class Shoes
|
|
8
9
|
self
|
9
10
|
end
|
10
11
|
|
12
|
+
# Root method for determining whether we're visible or not, taking into
|
13
|
+
# account our parent chain's visibility.
|
11
14
|
def hidden?
|
12
|
-
style[:hidden]
|
15
|
+
(defined?(@parent) && @parent&.hidden?) || style[:hidden]
|
13
16
|
end
|
14
17
|
|
15
18
|
alias hidden hidden?
|
@@ -18,6 +21,18 @@ class Shoes
|
|
18
21
|
!hidden?
|
19
22
|
end
|
20
23
|
|
24
|
+
def hidden_from_view?
|
25
|
+
hidden? || outside_parent_view?
|
26
|
+
end
|
27
|
+
|
28
|
+
def outside_parent_view?
|
29
|
+
# Painted elements handle slot bounds themselves when painting
|
30
|
+
return false if @parent.nil? || @parent.variable_height? || painted?
|
31
|
+
|
32
|
+
# We hide when we're at all outside our parent's bounds
|
33
|
+
!@parent.contains?(dimensions)
|
34
|
+
end
|
35
|
+
|
21
36
|
# Reveals the element, if it is hidden. See also #hide and #toggle.
|
22
37
|
def show
|
23
38
|
style(hidden: false)
|
@@ -33,6 +48,11 @@ class Shoes
|
|
33
48
|
|
34
49
|
private
|
35
50
|
|
51
|
+
# Backend elements are expected to respond to update_visibility, and use
|
52
|
+
# the hidden? or visible? accessors to assess their proper display state.
|
53
|
+
#
|
54
|
+
# These take into account parent visibility, versus styling which applies
|
55
|
+
# only to the element itself.
|
36
56
|
def update_visibility
|
37
57
|
gui.update_visibility
|
38
58
|
self
|
data/lib/shoes/configuration.rb
CHANGED
data/lib/shoes/console.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
class Shoes
|
3
4
|
class Console
|
4
5
|
attr_reader :messages, :message_stacks
|
@@ -76,7 +77,7 @@ class Shoes
|
|
76
77
|
end
|
77
78
|
|
78
79
|
def add_message_stack(type, message, index = nil)
|
79
|
-
return unless @app && @app.open?
|
80
|
+
return unless defined?(@app) && @app.open?
|
80
81
|
|
81
82
|
@app.instance_exec do
|
82
83
|
append do
|
data/lib/shoes/core.rb
CHANGED
data/lib/shoes/core/version.rb
CHANGED
data/lib/shoes/dialog.rb
CHANGED
data/lib/shoes/dimension.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
class Shoes
|
3
4
|
class Dimension
|
4
5
|
attr_reader :parent
|
@@ -15,9 +16,22 @@ class Shoes
|
|
15
16
|
PIXEL_COUNTING_ADJUSTMENT = -1
|
16
17
|
|
17
18
|
def initialize(parent = nil, start_as_center = false)
|
18
|
-
@parent
|
19
|
-
@start_as_center
|
20
|
-
@combined_margins
|
19
|
+
@parent = parent
|
20
|
+
@start_as_center = start_as_center
|
21
|
+
@combined_margins = 0
|
22
|
+
@displace_start = nil
|
23
|
+
@displace_start_relative = nil
|
24
|
+
@end = nil
|
25
|
+
@extent = nil
|
26
|
+
@extent_negative = nil
|
27
|
+
@extent_relative = nil
|
28
|
+
@margin_end = nil
|
29
|
+
@margin_end_relative = nil
|
30
|
+
@margin_start = nil
|
31
|
+
@margin_start_relative = nil
|
32
|
+
@start = nil
|
33
|
+
@start = nil
|
34
|
+
@start_relative = nil
|
21
35
|
end
|
22
36
|
|
23
37
|
def start
|
@@ -45,8 +59,6 @@ class Shoes
|
|
45
59
|
|
46
60
|
@extent_relative = relative?(@extent)
|
47
61
|
@extent_negative = negative?(@extent)
|
48
|
-
|
49
|
-
@extent
|
50
62
|
end
|
51
63
|
|
52
64
|
def absolute_end
|
@@ -138,7 +150,6 @@ class Shoes
|
|
138
150
|
@margin_start = parse_int_value(value)
|
139
151
|
|
140
152
|
@combined_margins = margin_start + margin_end
|
141
|
-
@margin_start
|
142
153
|
end
|
143
154
|
|
144
155
|
def margin_end=(value)
|
@@ -146,7 +157,6 @@ class Shoes
|
|
146
157
|
@margin_end = parse_int_value(value)
|
147
158
|
|
148
159
|
@combined_margins = margin_start + margin_end
|
149
|
-
@margin_end
|
150
160
|
end
|
151
161
|
|
152
162
|
def displace_start=(value)
|
data/lib/shoes/dimensions.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
# Dimensions is a central class that most Shoes classes use to represent their
|
3
4
|
# dimensions, e.g. where they are and how much space they are taking up there.
|
4
5
|
# All the different position types might be confusing. So here is a little list:
|
@@ -82,6 +83,16 @@ class Shoes
|
|
82
83
|
x_dimension.in_bounds?(x) && y_dimension.in_bounds?(y)
|
83
84
|
end
|
84
85
|
|
86
|
+
def contains?(other)
|
87
|
+
return false unless other.element_left && other.element_top &&
|
88
|
+
other.element_right && other.element_bottom
|
89
|
+
|
90
|
+
element_left <= other.element_left &&
|
91
|
+
element_right >= other.element_right &&
|
92
|
+
element_top <= other.element_top &&
|
93
|
+
element_bottom >= other.element_bottom
|
94
|
+
end
|
95
|
+
|
85
96
|
def margin
|
86
97
|
[margin_left, margin_top, margin_right, margin_bottom]
|
87
98
|
end
|
@@ -205,7 +216,7 @@ class Shoes
|
|
205
216
|
WRITER_METHODS.each do |meth|
|
206
217
|
key = meth.to_s.sub("=", "").to_sym
|
207
218
|
define_method(meth) do |value|
|
208
|
-
@style[key] = value if @style
|
219
|
+
@style[key] = value if defined?(@style)
|
209
220
|
dimensions.send(meth, value)
|
210
221
|
end
|
211
222
|
end
|
data/lib/shoes/download.rb
CHANGED
data/lib/shoes/dsl.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'delegate'
|
3
4
|
require 'fileutils'
|
4
5
|
require 'forwardable'
|
@@ -24,7 +25,7 @@ class Shoes
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def logger
|
27
|
-
return @logger if @logger
|
28
|
+
return @logger if defined?(@logger)
|
28
29
|
|
29
30
|
@logger ||= Shoes::LoggerCollection.new
|
30
31
|
@logger << Shoes::StandardLogger.new
|
data/lib/shoes/dsl/animate.rb
CHANGED
data/lib/shoes/dsl/art.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
class Shoes
|
3
4
|
module DSL
|
4
5
|
module Art
|
@@ -23,12 +24,12 @@ class Shoes
|
|
23
24
|
|
24
25
|
left, top, width, *leftovers = args
|
25
26
|
|
26
|
-
message =
|
27
|
-
Too many arguments. Must be one of:
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
message = <<~EOS
|
28
|
+
Too many arguments. Must be one of:
|
29
|
+
- arrow(left, top, width, [opts])
|
30
|
+
- arrow(left, top, [opts])
|
31
|
+
- arrow(left, [opts])
|
32
|
+
- arrow([opts])
|
32
33
|
EOS
|
33
34
|
raise ArgumentError, message if leftovers.any?
|
34
35
|
|
@@ -51,15 +52,15 @@ EOS
|
|
51
52
|
|
52
53
|
left, top, width, height, angle1, angle2, *leftovers = args
|
53
54
|
|
54
|
-
message =
|
55
|
-
Too many arguments. Must be one of:
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
55
|
+
message = <<~EOS
|
56
|
+
Too many arguments. Must be one of:
|
57
|
+
- arc(left, top, width, height, angle1, angle2, [opts])
|
58
|
+
- arc(left, top, width, height, angle1, [opts])
|
59
|
+
- arc(left, top, width, height, [opts])
|
60
|
+
- arc(left, top, width, [opts])
|
61
|
+
- arc(left, top, [opts])
|
62
|
+
- arc(left, [opts])
|
63
|
+
- arc([opts])
|
63
64
|
EOS
|
64
65
|
raise ArgumentError, message if leftovers.any?
|
65
66
|
|
@@ -78,13 +79,13 @@ EOS
|
|
78
79
|
|
79
80
|
x1, y1, x2, y2, *leftovers = args
|
80
81
|
|
81
|
-
message =
|
82
|
-
Too many arguments. Must be one of:
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
82
|
+
message = <<~EOS
|
83
|
+
Too many arguments. Must be one of:
|
84
|
+
- line(x1, y1, x2, y2, [opts])
|
85
|
+
- line(x1, y1, x2, [opts])
|
86
|
+
- line(x1, y1, [opts])
|
87
|
+
- line(x1, [opts])
|
88
|
+
- line([opts])
|
88
89
|
EOS
|
89
90
|
raise ArgumentError, message if leftovers.any?
|
90
91
|
|
@@ -118,13 +119,13 @@ EOS
|
|
118
119
|
|
119
120
|
left, top, width, height, *leftovers = args
|
120
121
|
|
121
|
-
message =
|
122
|
-
Wrong number of arguments. Must be one of:
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
122
|
+
message = <<~EOS
|
123
|
+
Wrong number of arguments. Must be one of:
|
124
|
+
- oval(left, top, width, height, [opts])
|
125
|
+
- oval(left, top, diameter, [opts])
|
126
|
+
- oval(left, top, [opts])
|
127
|
+
- oval(left, [opts])
|
128
|
+
- oval(styles)
|
128
129
|
EOS
|
129
130
|
raise ArgumentError, message if leftovers.any?
|
130
131
|
|
@@ -159,14 +160,14 @@ EOS
|
|
159
160
|
left, top, width, height, curve, *leftovers = args
|
160
161
|
opts[:curve] = curve if curve
|
161
162
|
|
162
|
-
message =
|
163
|
-
Wrong number of arguments. Must be one of:
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
163
|
+
message = <<~EOS
|
164
|
+
Wrong number of arguments. Must be one of:
|
165
|
+
- rect(left, top, width, height, curve, [opts])
|
166
|
+
- rect(left, top, width, height, [opts])
|
167
|
+
- rect(left, top, side, [opts])
|
168
|
+
- rect(left, top, [opts])
|
169
|
+
- rect(left, [opts])
|
170
|
+
- rect(styles)
|
170
171
|
EOS
|
171
172
|
|
172
173
|
raise ArgumentError, message if leftovers.any?
|
@@ -207,14 +208,14 @@ EOS
|
|
207
208
|
|
208
209
|
left, top, points, outer, inner, *leftovers = args
|
209
210
|
|
210
|
-
message =
|
211
|
-
Wrong number of arguments. Must be one of:
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
211
|
+
message = <<~EOS
|
212
|
+
Wrong number of arguments. Must be one of:
|
213
|
+
- star([styles])
|
214
|
+
- star(left, [styles])
|
215
|
+
- star(left, top, [styles])
|
216
|
+
- star(left, top, points, [styles])
|
217
|
+
- star(left, top, points, outer, [styles])
|
218
|
+
- star(left, top, points, outer, inner, [styles])
|
218
219
|
EOS
|
219
220
|
raise ArgumentError, message if leftovers.any?
|
220
221
|
|
@@ -240,11 +241,11 @@ EOS
|
|
240
241
|
|
241
242
|
left, top, *leftovers = args
|
242
243
|
|
243
|
-
message =
|
244
|
-
Wrong number of arguments. Must be one of:
|
245
|
-
|
246
|
-
|
247
|
-
|
244
|
+
message = <<~EOS
|
245
|
+
Wrong number of arguments. Must be one of:
|
246
|
+
- shape(left, top, [opts])
|
247
|
+
- shape(left, [opts])
|
248
|
+
- shape([opts])
|
248
249
|
EOS
|
249
250
|
|
250
251
|
raise ArgumentError, message if leftovers.any?
|
data/lib/shoes/dsl/element.rb
CHANGED
data/lib/shoes/dsl/media.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
class Shoes
|
3
4
|
module DSL
|
4
5
|
module Media
|
@@ -12,9 +13,9 @@ class Shoes
|
|
12
13
|
opts = style_normalizer.normalize pop_style(args)
|
13
14
|
path, *leftovers = args
|
14
15
|
|
15
|
-
message =
|
16
|
-
Wrong number of arguments. Must be:
|
17
|
-
|
16
|
+
message = <<~EOS
|
17
|
+
Wrong number of arguments. Must be:
|
18
|
+
- image(path, [opts])
|
18
19
|
EOS
|
19
20
|
raise ArgumentError, message if leftovers.any?
|
20
21
|
|