shoes-core 4.0.0.pre12 → 4.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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