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.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/bin/shoes-picker +1 -0
  3. data/fonts/FiraMono.otf +0 -0
  4. data/lib/shoes.rb +1 -0
  5. data/lib/shoes/animation.rb +1 -0
  6. data/lib/shoes/app.rb +4 -3
  7. data/lib/shoes/arc.rb +3 -0
  8. data/lib/shoes/arrow.rb +34 -2
  9. data/lib/shoes/background.rb +1 -0
  10. data/lib/shoes/border.rb +1 -0
  11. data/lib/shoes/builtin_methods.rb +2 -1
  12. data/lib/shoes/button.rb +1 -0
  13. data/lib/shoes/check_button.rb +1 -0
  14. data/lib/shoes/color.rb +7 -6
  15. data/lib/shoes/color/dsl.rb +1 -0
  16. data/lib/shoes/color/dsl_helpers.rb +1 -0
  17. data/lib/shoes/color/hex_converter.rb +1 -0
  18. data/lib/shoes/common/art_element.rb +5 -0
  19. data/lib/shoes/common/attachable.rb +1 -0
  20. data/lib/shoes/common/background_element.rb +5 -0
  21. data/lib/shoes/common/changeable.rb +1 -0
  22. data/lib/shoes/common/clickable.rb +1 -0
  23. data/lib/shoes/common/fill.rb +1 -0
  24. data/lib/shoes/common/focus.rb +9 -0
  25. data/lib/shoes/common/hover.rb +8 -7
  26. data/lib/shoes/common/image_handling.rb +1 -0
  27. data/lib/shoes/common/inspect.rb +1 -0
  28. data/lib/shoes/common/link_finder.rb +1 -0
  29. data/lib/shoes/common/positioning.rb +1 -0
  30. data/lib/shoes/common/registration.rb +1 -0
  31. data/lib/shoes/common/remove.rb +2 -2
  32. data/lib/shoes/common/rotate.rb +1 -0
  33. data/lib/shoes/common/safely_evaluate.rb +1 -0
  34. data/lib/shoes/common/state.rb +1 -0
  35. data/lib/shoes/common/stroke.rb +1 -0
  36. data/lib/shoes/common/style.rb +3 -1
  37. data/lib/shoes/common/style_normalizer.rb +1 -0
  38. data/lib/shoes/common/translate.rb +1 -0
  39. data/lib/shoes/common/ui_element.rb +24 -0
  40. data/lib/shoes/common/visibility.rb +21 -1
  41. data/lib/shoes/configuration.rb +1 -0
  42. data/lib/shoes/console.rb +2 -1
  43. data/lib/shoes/core.rb +1 -0
  44. data/lib/shoes/core/version.rb +1 -1
  45. data/lib/shoes/dialog.rb +2 -1
  46. data/lib/shoes/dimension.rb +17 -7
  47. data/lib/shoes/dimensions.rb +12 -1
  48. data/lib/shoes/download.rb +1 -0
  49. data/lib/shoes/dsl.rb +2 -1
  50. data/lib/shoes/dsl/animate.rb +1 -0
  51. data/lib/shoes/dsl/art.rb +51 -50
  52. data/lib/shoes/dsl/element.rb +1 -0
  53. data/lib/shoes/dsl/interaction.rb +1 -0
  54. data/lib/shoes/dsl/media.rb +4 -3
  55. data/lib/shoes/dsl/setup.rb +1 -0
  56. data/lib/shoes/dsl/style.rb +1 -0
  57. data/lib/shoes/dsl/text.rb +3 -2
  58. data/lib/shoes/file_not_found_error.rb +1 -0
  59. data/lib/shoes/font.rb +1 -0
  60. data/lib/shoes/gradient.rb +1 -0
  61. data/lib/shoes/image.rb +1 -0
  62. data/lib/shoes/image_pattern.rb +1 -0
  63. data/lib/shoes/input_box.rb +1 -0
  64. data/lib/shoes/internal_app.rb +7 -4
  65. data/lib/shoes/key_event.rb +1 -0
  66. data/lib/shoes/line.rb +19 -2
  67. data/lib/shoes/link.rb +1 -0
  68. data/lib/shoes/list_box.rb +1 -0
  69. data/lib/shoes/mock/animation.rb +1 -0
  70. data/lib/shoes/mock/app.rb +1 -0
  71. data/lib/shoes/mock/arc.rb +1 -0
  72. data/lib/shoes/mock/arrow.rb +1 -0
  73. data/lib/shoes/mock/background.rb +1 -0
  74. data/lib/shoes/mock/border.rb +1 -0
  75. data/lib/shoes/mock/button.rb +1 -0
  76. data/lib/shoes/mock/check.rb +1 -0
  77. data/lib/shoes/mock/clickable.rb +1 -0
  78. data/lib/shoes/mock/common_methods.rb +1 -0
  79. data/lib/shoes/mock/dialog.rb +1 -0
  80. data/lib/shoes/mock/download.rb +1 -0
  81. data/lib/shoes/mock/font.rb +1 -0
  82. data/lib/shoes/mock/image.rb +1 -0
  83. data/lib/shoes/mock/image_pattern.rb +1 -0
  84. data/lib/shoes/mock/input_box.rb +1 -0
  85. data/lib/shoes/mock/keypress.rb +1 -0
  86. data/lib/shoes/mock/keyrelease.rb +1 -0
  87. data/lib/shoes/mock/line.rb +1 -0
  88. data/lib/shoes/mock/link.rb +1 -0
  89. data/lib/shoes/mock/list_box.rb +1 -0
  90. data/lib/shoes/mock/oval.rb +1 -0
  91. data/lib/shoes/mock/packager.rb +1 -0
  92. data/lib/shoes/mock/progress.rb +1 -0
  93. data/lib/shoes/mock/radio.rb +1 -0
  94. data/lib/shoes/mock/rect.rb +1 -0
  95. data/lib/shoes/mock/shape.rb +1 -0
  96. data/lib/shoes/mock/slot.rb +1 -0
  97. data/lib/shoes/mock/sound.rb +1 -0
  98. data/lib/shoes/mock/star.rb +1 -0
  99. data/lib/shoes/mock/text_block.rb +1 -0
  100. data/lib/shoes/mock/timer.rb +1 -0
  101. data/lib/shoes/not_implemented_error.rb +1 -0
  102. data/lib/shoes/oval.rb +1 -0
  103. data/lib/shoes/packager.rb +1 -0
  104. data/lib/shoes/point.rb +1 -0
  105. data/lib/shoes/progress.rb +1 -0
  106. data/lib/shoes/radio.rb +1 -0
  107. data/lib/shoes/rect.rb +3 -2
  108. data/lib/shoes/renamed_delegate.rb +1 -0
  109. data/lib/shoes/shape.rb +31 -0
  110. data/lib/shoes/slot.rb +52 -14
  111. data/lib/shoes/slot_contents.rb +1 -0
  112. data/lib/shoes/sound.rb +1 -0
  113. data/lib/shoes/span.rb +1 -0
  114. data/lib/shoes/standard_logger.rb +1 -0
  115. data/lib/shoes/star.rb +29 -2
  116. data/lib/shoes/text.rb +1 -0
  117. data/lib/shoes/text_block.rb +11 -1
  118. data/lib/shoes/text_block_dimensions.rb +9 -0
  119. data/lib/shoes/timer.rb +1 -0
  120. data/lib/shoes/ui/cli.rb +1 -0
  121. data/lib/shoes/ui/cli/base_command.rb +1 -0
  122. data/lib/shoes/ui/cli/default_command.rb +1 -0
  123. data/lib/shoes/ui/cli/help_command.rb +4 -3
  124. data/lib/shoes/ui/cli/manual_command.rb +4 -3
  125. data/lib/shoes/ui/cli/package_command.rb +1 -0
  126. data/lib/shoes/ui/cli/samples_command.rb +1 -0
  127. data/lib/shoes/ui/cli/select_backend_command.rb +5 -4
  128. data/lib/shoes/ui/cli/version_command.rb +4 -3
  129. data/lib/shoes/ui/picker.rb +1 -0
  130. data/lib/shoes/url.rb +1 -0
  131. data/lib/shoes/version.rb +1 -1
  132. data/lib/shoes/widget.rb +1 -0
  133. data/lib/shoes/window.rb +1 -0
  134. data/static/shoes-icon.png +0 -0
  135. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 661b33d7f533fcfeca029b50a73d2825fd861b9cb3dd22b802407c2c9530982a
4
- data.tar.gz: 1910df83d014768abe2dbd8fbc4475b857ca9c84c96e85506aa8db8572ce891d
3
+ metadata.gz: f7191316edb6e714b9463aca4217a1b01a95a4b2474a08991abe151cb2491dbd
4
+ data.tar.gz: 2fca9ebbb2065bd06fa6fe70ecc328fbccb55b95d260613c8c53e693afe62792
5
5
  SHA512:
6
- metadata.gz: 6955fbb19afbb56560f631f52c139ae43420da5c16cfd4f2cc85bb42114af6fbec7db5f49697fb9ce977f8a64b1b7d6425a4406f7580ed8fd0de0fb13cd56527
7
- data.tar.gz: 1d9df772049d179b46c3a70a92c5309a09495812607cdbdc9b4366040d778652dabca4c807e9ff2e2eaf2f8def21f0f335541ee6072f44dfef1ff48e7d0183ab
6
+ metadata.gz: 21af8b401b6533980537bd97539c601bcfe2ae5f74d3a865b483b25d116c3ca0cd4f0f1aa3af71681c811ef065b22b7da94aef2115518c5f81b3162ceede7836
7
+ data.tar.gz: 5684057007b1a95a6cfb1550bd2fa26139924246f9fb26b0612ba4f9736f706a5a50ccd0c122929520da6a7992b54cc7feef4afda223688d0648d66f19da2900
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
+
3
4
  lib_directory = File.expand_path('../../lib', __FILE__)
4
5
  $LOAD_PATH << lib_directory
5
6
 
Binary file
@@ -1,2 +1,3 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'shoes/core'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Animation
4
5
  include Common::Inspect
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  ICON = File.join(DIR, 'static/shoes-icon.png').freeze
4
5
 
@@ -83,11 +84,11 @@ class Shoes
83
84
  @__app__.current_slot.parent
84
85
  end
85
86
 
86
- delegated_to_internal_app = %w(
87
+ delegated_to_internal_app = %w[
87
88
  width height owner started? location left top absolute_left
88
89
  absolute_top click release clear fullscreen fullscreen=
89
90
  contents wait_until_closed focus open? gui
90
- )
91
+ ]
91
92
 
92
93
  def_delegators :@__app__, *delegated_to_internal_app
93
94
 
@@ -101,7 +102,7 @@ class Shoes
101
102
  end
102
103
 
103
104
  def method_missing(name, *args, &blk)
104
- if @__additional_context__
105
+ if defined?(@__additional_context__) && @__additional_context__
105
106
  @__additional_context__.public_send(name, *args, &blk)
106
107
  else
107
108
  super
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Arc < Common::ArtElement
5
+ # angle is the gradient angle used across all art elements
6
+ # angle1/2 are the angles of the arc itself!
4
7
  style_with :angle1, :angle2, :art_styles, :center, :common_styles, :dimensions, :radius, :wedge
5
8
  STYLES = { wedge: false, fill: Shoes::COLORS[:black] }.freeze
6
9
 
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Arrow < Common::ArtElement
4
- style_with :angle, :art_styles, :curve, :common_styles, :dimensions
5
- STYLES = { angle: 0, fill: Shoes::COLORS[:black] }.freeze
5
+ style_with :art_styles, :curve, :common_styles, :dimensions
6
+ STYLES = { fill: Shoes::COLORS[:black] }.freeze
6
7
 
7
8
  def create_dimensions(left, top, width)
8
9
  left ||= @style[:left] || 0
@@ -16,5 +17,36 @@ class Shoes
16
17
  super
17
18
  gui.update_position
18
19
  end
20
+
21
+ # Our locations are nonstandard, so let redrawing and gradient know
22
+ def redraw_left
23
+ return 0 unless element_left
24
+ element_left - width * 0.5 - style[:strokewidth].to_i
25
+ end
26
+
27
+ def redraw_top
28
+ return 0 unless element_top
29
+ element_top - width * 0.4 - style[:strokewidth].to_i
30
+ end
31
+
32
+ def redraw_width
33
+ width + style[:strokewidth].to_i * 2
34
+ end
35
+
36
+ def redraw_height
37
+ width + style[:strokewidth].to_i * 2
38
+ end
39
+
40
+ def gradient_left
41
+ redraw_left
42
+ end
43
+
44
+ def gradient_top
45
+ redraw_top
46
+ end
47
+
48
+ def gradient_height
49
+ redraw_height
50
+ end
19
51
  end
20
52
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Background < Common::BackgroundElement
4
5
  include Common::Fill
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Border < Common::BackgroundElement
4
5
  include Common::Stroke
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # The methods defined in this module/file are also available outside of the
3
4
  # Shoes.app block. So they are monkey patched onto the main object.
4
5
  # However they can also be used from the normal Shoes.app block.
@@ -18,7 +19,7 @@ class Shoes
18
19
  Shoes::Dialog.new.confirm(message)
19
20
  end
20
21
 
21
- %w(info debug warn error).each do |log_level|
22
+ %w[info debug warn error].each do |log_level|
22
23
  define_method(log_level) do |message = ''|
23
24
  Shoes.logger.public_send(log_level, message)
24
25
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Button < Common::UIElement
4
5
  include Common::Clickable
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class CheckButton < Common::UIElement
4
5
  include Common::Clickable
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Color
4
5
  include Common::Inspect
@@ -18,12 +19,12 @@ class Shoes
18
19
  when 3, 4
19
20
  red, green, blue, alpha = *args
20
21
  else
21
- message = <<EOS
22
- Wrong number of arguments (#{args.length} for 1, 3, or 4).
23
- Must be one of:
24
- - #{self.class}.new(hex_string)
25
- - #{self.class}.new(red, green, blue)
26
- - #{self.class}.new(red, green, blue, alpha)
22
+ message = <<~EOS
23
+ Wrong number of arguments (#{args.length} for 1, 3, or 4).
24
+ Must be one of:
25
+ - #{self.class}.new(hex_string)
26
+ - #{self.class}.new(red, green, blue)
27
+ - #{self.class}.new(red, green, blue, alpha)
27
28
  EOS
28
29
  raise ArgumentError, message
29
30
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  # Create all of the built-in Shoes colors
4
5
  COLORS = {}
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Color
4
5
  module DSLHelpers
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Color
4
5
  class HexConverter
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  class ArtElement < UIElement
@@ -13,6 +14,10 @@ class Shoes
13
14
  # We need to include it at inheritance time to get that behavior.
14
15
  child.include Common::Hover
15
16
  end
17
+
18
+ def painted?
19
+ true
20
+ end
16
21
  end
17
22
  end
18
23
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module Attachable
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  class BackgroundElement < Common::UIElement
@@ -6,6 +7,10 @@ class Shoes
6
7
  @dimensions = ParentDimensions.new @parent, @style
7
8
  end
8
9
 
10
+ def painted?
11
+ true
12
+ end
13
+
9
14
  # We derive everything from our parent, so we skip slot positioning.
10
15
  def needs_positioning?
11
16
  false
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  # Changeable elements are elements that receive `change' events.
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module Clickable
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module Fill
@@ -1,10 +1,19 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module Focus
5
6
  def focus
6
7
  @gui.focus
7
8
  end
9
+
10
+ def focused?
11
+ @gui.focused?
12
+ end
13
+
14
+ alias focussed? focused?
15
+ alias focussed focused?
16
+ alias focused focused?
8
17
  end
9
18
  end
10
19
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module Hover
@@ -25,32 +26,32 @@ class Shoes
25
26
  end
26
27
 
27
28
  def hovered?
28
- @hovered
29
+ @hovered ||= false
29
30
  end
30
31
 
31
32
  def hover_class
32
- return @hover_class if @hover_class
33
+ return @hover_class if defined?(@hover_class)
33
34
 
34
35
  name = self.class.name.split("::").last
35
36
  @hover_class = Shoes.const_get("#{name}Hover")
36
37
  end
37
38
 
38
39
  def mouse_hovered
39
- return if @hovered
40
+ return if hovered?
40
41
 
41
42
  @hovered = true
42
43
 
43
44
  apply_style_from_hover_class
44
- eval_hover_block(@hover_blk)
45
+ eval_hover_block(@hover_blk ||= nil)
45
46
  end
46
47
 
47
48
  def mouse_left
48
- return unless @hovered
49
+ return unless hovered?
49
50
 
50
51
  @hovered = false
51
52
 
52
53
  apply_style_from_pre_hover
53
- eval_hover_block(@leave_blk)
54
+ eval_hover_block(@leave_blk ||= nil)
54
55
  end
55
56
 
56
57
  def add_mouse_hover_control
@@ -74,7 +75,7 @@ class Shoes
74
75
  end
75
76
 
76
77
  def apply_style_from_pre_hover
77
- style(@pre_hover_style) if @pre_hover_style
78
+ style(@pre_hover_style) if defined?(@pre_hover_style) && @pre_hover_style
78
79
  @pre_hover_style = nil
79
80
  end
80
81
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module ImageHandling
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module Inspect
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module LinkFinder
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module Positioning
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module Registration
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module Remove
5
6
  def remove
6
7
  parent&.remove_child self
7
8
  gui&.remove if gui&.respond_to?(:remove)
8
-
9
- @app&.remove_mouse_hover_control(self)
9
+ @app&.remove_mouse_hover_control(self) if defined?(@app)
10
10
  end
11
11
  end
12
12
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module Rotate
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module SafelyEvaluate
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module State
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  module Stroke
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # The general Style module handles the many optional styles that may be passed
3
4
  # to shoes elements upon creates as well as the fact that they can later on be
4
5
  # altered through the #style method.
@@ -15,7 +16,8 @@ class Shoes
15
16
  }
16
17
 
17
18
  STYLE_GROUPS = {
18
- art_styles: [:cap, :click, :fill, :rotate, :stroke, :strokewidth, :transform, :translate],
19
+ art_styles: [:angle, :cap, :click, :fill, :rotate, :stroke,
20
+ :strokewidth, :transform, :translate],
19
21
  common_styles: [:displace_left, :displace_top, :hidden],
20
22
  dimensions: [:bottom, :height, :left, :margin,
21
23
  :margin_bottom, :margin_left, :margin_right,
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Common
4
5
  class StyleNormalizer