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
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module DSL
4
5
  module Style
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module DSL
4
5
  module Text
5
- %w(banner title subtitle tagline caption para inscription).each do |method|
6
+ %w[banner title subtitle tagline caption para inscription].each do |method|
6
7
  define_method method do |*texts|
7
8
  styles = pop_style(texts)
8
9
  klass = Shoes.const_get(method.capitalize)
@@ -20,7 +21,7 @@ class Shoes
20
21
  strong: { weight: true },
21
22
  }.freeze
22
23
 
23
- TEXT_STYLES.keys.each do |method|
24
+ TEXT_STYLES.each_key do |method|
24
25
  define_method method do |*texts|
25
26
  styles = style_normalizer.normalize(pop_style(texts))
26
27
  styles = TEXT_STYLES[method].merge(styles)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class FileNotFoundError < StandardError
4
5
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  FONT_DIR = DIR + "/fonts/"
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Gradient
4
5
  include Common::Inspect
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Image < 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 ImagePattern
4
5
  include Common::Inspect
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class InputBox < Common::UIElement
4
5
  include Common::Changeable
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  # This is the representation of the app that is used internally by Shoes
4
5
  # objects. It is *NOT* the app object that a user interacts with in a
@@ -53,10 +54,12 @@ class Shoes
53
54
 
54
55
  attr_reader :gui, :top_slot, :app, :dimensions,
55
56
  :mouse_motion, :owner, :element_styles, :resize_callbacks
57
+
58
+ attr_writer :width, :height
59
+
56
60
  attr_accessor :elements, :current_slot, :opts, :blk, :mouse_button,
57
61
  :mouse_pos, :mouse_hover_controls, :resizable, :app_title,
58
- :width, :height, :start_as_fullscreen, :location,
59
- :start_block
62
+ :start_as_fullscreen, :location, :start_block
60
63
 
61
64
  def_delegators :@app, :eval_with_additional_context
62
65
 
@@ -98,10 +101,10 @@ class Shoes
98
101
  true
99
102
  end
100
103
 
101
- delegated_to_gui = %w(
104
+ delegated_to_gui = %w[
102
105
  fullscreen= fullscreen quit scroll_top= scroll_top
103
106
  clipboard clipboard= gutter focus open?
104
- )
107
+ ]
105
108
 
106
109
  def_delegators :gui, *delegated_to_gui
107
110
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class KeyEvent
4
5
  def initialize(app, &blk)
@@ -1,12 +1,13 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'matrix'
3
4
 
4
5
  class Shoes
5
6
  class Line < Common::ArtElement
6
7
  attr_reader :point_a, :point_b
7
8
 
8
- style_with :angle, :art_styles, :dimensions, :x2, :y2
9
- STYLES = { angle: 0, fill: Shoes::COLORS[:black] }.freeze
9
+ style_with :art_styles, :dimensions, :x2, :y2
10
+ STYLES = { fill: Shoes::COLORS[:black] }.freeze
10
11
 
11
12
  def create_dimensions(x1, y1, x2, y2)
12
13
  x1, y1, x2, y2 = default_coordinates(x1, y1, x2, y2)
@@ -81,6 +82,22 @@ class Shoes
81
82
  alias x2= right=
82
83
  alias y2= bottom=
83
84
 
85
+ def redraw_left
86
+ [@point_a.x, @point_b.x].min - 0.5 * style[:strokewidth].to_i
87
+ end
88
+
89
+ def redraw_top
90
+ [@point_a.y, @point_b.y].min - 0.5 * style[:strokewidth].to_i
91
+ end
92
+
93
+ def redraw_width
94
+ (@point_a.x - @point_b.x).abs + style[:strokewidth].to_i
95
+ end
96
+
97
+ def redraw_height
98
+ (@point_a.y - @point_b.y).abs + style[:strokewidth].to_i
99
+ end
100
+
84
101
  def move(x, y, x2 = nil, y2 = nil)
85
102
  @point_a.x = x
86
103
  @point_a.y = y
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Link < Span
4
5
  include Common::Fill
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class ProxyArray < SimpleDelegator
4
5
  attr_accessor :gui
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Animation
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class App
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Arc
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Arrow
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Background
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Border
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Button
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Check
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  module Clickable
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  module CommonMethods
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Dialog
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Download
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  module Font
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Image
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class ImagePattern
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class InputBox
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Keypress
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Keyrelease
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Line
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Link
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class ListBox
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Oval
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Packager
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Progress
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Radio
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Rect
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Shape
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Slot
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Sound
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Star
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class TextBlock
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  module Mock
4
5
  class Timer
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class NotImplementedError < StandardError
4
5
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Oval < Common::ArtElement
4
5
  style_with :art_styles, :center, :common_styles, :dimensions
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Packager
4
5
  attr_reader :backend
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Point
4
5
  include Common::Inspect
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Progress < Common::UIElement
4
5
  style_with :common_styles, :dimensions, :fraction
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Radio < CheckButton
4
5
  style_with :checked, :click, :common_styles, :dimensions, :group, :state
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Shoes
3
4
  class Rect < Common::ArtElement
4
- style_with :angle, :art_styles, :curve, :common_styles, :dimensions
5
- STYLES = { angle: 0, curve: 0, fill: Shoes::COLORS[:black] }.freeze
5
+ style_with :art_styles, :curve, :common_styles, :dimensions
6
+ STYLES = { curve: 0, fill: Shoes::COLORS[:black] }.freeze
6
7
 
7
8
  def create_dimensions(left, top, width, height)
8
9
  left ||= @style[:left] || 0
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module RenamedDelegate
3
4
  include Forwardable
4
5