shoes-core 4.0.0.pre3

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 (219) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +31 -0
  3. data/README.md +8 -0
  4. data/Rakefile +1 -0
  5. data/bin/shoes +62 -0
  6. data/bin/shoes-guard +8 -0
  7. data/bin/shoes-picker +6 -0
  8. data/bin/shoes-stub +62 -0
  9. data/ext/install/Rakefile +29 -0
  10. data/ext/install/shoes.bat +15 -0
  11. data/fonts/Coolvetica.ttf +0 -0
  12. data/fonts/Lacuna.ttf +0 -0
  13. data/lib/rubygems_plugin.rb +24 -0
  14. data/lib/shoes.rb +1 -0
  15. data/lib/shoes/animation.rb +56 -0
  16. data/lib/shoes/app.rb +130 -0
  17. data/lib/shoes/arc.rb +25 -0
  18. data/lib/shoes/background.rb +20 -0
  19. data/lib/shoes/border.rb +20 -0
  20. data/lib/shoes/builtin_methods.rb +76 -0
  21. data/lib/shoes/button.rb +29 -0
  22. data/lib/shoes/check_button.rb +41 -0
  23. data/lib/shoes/color.rb +387 -0
  24. data/lib/shoes/common/background_element.rb +9 -0
  25. data/lib/shoes/common/changeable.rb +34 -0
  26. data/lib/shoes/common/clickable.rb +24 -0
  27. data/lib/shoes/common/inspect.rb +14 -0
  28. data/lib/shoes/common/positioning.rb +30 -0
  29. data/lib/shoes/common/registration.rb +31 -0
  30. data/lib/shoes/common/remove.rb +10 -0
  31. data/lib/shoes/common/state.rb +16 -0
  32. data/lib/shoes/common/style.rb +160 -0
  33. data/lib/shoes/common/style_normalizer.rb +16 -0
  34. data/lib/shoes/common/ui_element.rb +11 -0
  35. data/lib/shoes/common/visibility.rb +41 -0
  36. data/lib/shoes/configuration.rb +96 -0
  37. data/lib/shoes/core.rb +1 -0
  38. data/lib/shoes/core/version.rb +5 -0
  39. data/lib/shoes/dialog.rb +56 -0
  40. data/lib/shoes/dimension.rb +269 -0
  41. data/lib/shoes/dimensions.rb +203 -0
  42. data/lib/shoes/download.rb +130 -0
  43. data/lib/shoes/dsl.rb +656 -0
  44. data/lib/shoes/file_not_found_error.rb +4 -0
  45. data/lib/shoes/font.rb +50 -0
  46. data/lib/shoes/gradient.rb +31 -0
  47. data/lib/shoes/image.rb +53 -0
  48. data/lib/shoes/image_pattern.rb +12 -0
  49. data/lib/shoes/input_box.rb +59 -0
  50. data/lib/shoes/internal_app.rb +230 -0
  51. data/lib/shoes/key_event.rb +17 -0
  52. data/lib/shoes/line.rb +84 -0
  53. data/lib/shoes/link.rb +57 -0
  54. data/lib/shoes/link_hover.rb +5 -0
  55. data/lib/shoes/list_box.rb +50 -0
  56. data/lib/shoes/logger.rb +65 -0
  57. data/lib/shoes/logger/ruby.rb +16 -0
  58. data/lib/shoes/mock.rb +33 -0
  59. data/lib/shoes/mock/animation.rb +8 -0
  60. data/lib/shoes/mock/app.rb +49 -0
  61. data/lib/shoes/mock/arc.rb +9 -0
  62. data/lib/shoes/mock/background.rb +10 -0
  63. data/lib/shoes/mock/border.rb +7 -0
  64. data/lib/shoes/mock/button.rb +22 -0
  65. data/lib/shoes/mock/check.rb +24 -0
  66. data/lib/shoes/mock/clickable.rb +8 -0
  67. data/lib/shoes/mock/common_methods.rb +12 -0
  68. data/lib/shoes/mock/dialog.rb +13 -0
  69. data/lib/shoes/mock/download.rb +16 -0
  70. data/lib/shoes/mock/font.rb +15 -0
  71. data/lib/shoes/mock/image.rb +13 -0
  72. data/lib/shoes/mock/image_pattern.rb +8 -0
  73. data/lib/shoes/mock/input_box.rb +30 -0
  74. data/lib/shoes/mock/keypress.rb +11 -0
  75. data/lib/shoes/mock/keyrelease.rb +11 -0
  76. data/lib/shoes/mock/line.rb +14 -0
  77. data/lib/shoes/mock/link.rb +11 -0
  78. data/lib/shoes/mock/list_box.rb +19 -0
  79. data/lib/shoes/mock/oval.rb +11 -0
  80. data/lib/shoes/mock/packager.rb +13 -0
  81. data/lib/shoes/mock/progress.rb +10 -0
  82. data/lib/shoes/mock/radio.rb +27 -0
  83. data/lib/shoes/mock/rect.rb +14 -0
  84. data/lib/shoes/mock/shape.rb +20 -0
  85. data/lib/shoes/mock/slot.rb +16 -0
  86. data/lib/shoes/mock/sound.rb +8 -0
  87. data/lib/shoes/mock/star.rb +14 -0
  88. data/lib/shoes/mock/text_block.rb +36 -0
  89. data/lib/shoes/mock/timer.rb +8 -0
  90. data/lib/shoes/not_implemented_error.rb +4 -0
  91. data/lib/shoes/oval.rb +20 -0
  92. data/lib/shoes/packager.rb +26 -0
  93. data/lib/shoes/point.rb +54 -0
  94. data/lib/shoes/progress.rb +25 -0
  95. data/lib/shoes/radio.rb +15 -0
  96. data/lib/shoes/rect.rb +21 -0
  97. data/lib/shoes/renamed_delegate.rb +15 -0
  98. data/lib/shoes/shape.rb +159 -0
  99. data/lib/shoes/slot.rb +276 -0
  100. data/lib/shoes/slot_contents.rb +51 -0
  101. data/lib/shoes/sound.rb +18 -0
  102. data/lib/shoes/span.rb +16 -0
  103. data/lib/shoes/star.rb +50 -0
  104. data/lib/shoes/text.rb +24 -0
  105. data/lib/shoes/text_block.rb +142 -0
  106. data/lib/shoes/text_block_dimensions.rb +51 -0
  107. data/lib/shoes/timer.rb +14 -0
  108. data/lib/shoes/ui/cli.rb +67 -0
  109. data/lib/shoes/ui/picker.rb +47 -0
  110. data/lib/shoes/url.rb +44 -0
  111. data/lib/shoes/version.rb +3 -0
  112. data/lib/shoes/widget.rb +67 -0
  113. data/shoes-core.gemspec +22 -0
  114. data/spec/shoes/animation_spec.rb +71 -0
  115. data/spec/shoes/app_spec.rb +484 -0
  116. data/spec/shoes/arc_spec.rb +51 -0
  117. data/spec/shoes/background_spec.rb +47 -0
  118. data/spec/shoes/border_spec.rb +46 -0
  119. data/spec/shoes/builtin_methods_spec.rb +110 -0
  120. data/spec/shoes/button_spec.rb +44 -0
  121. data/spec/shoes/check_spec.rb +35 -0
  122. data/spec/shoes/color_spec.rb +408 -0
  123. data/spec/shoes/common/inspect_spec.rb +26 -0
  124. data/spec/shoes/common/remove_spec.rb +38 -0
  125. data/spec/shoes/common/style_normalizer_spec.rb +28 -0
  126. data/spec/shoes/common/style_spec.rb +147 -0
  127. data/spec/shoes/configuration_spec.rb +36 -0
  128. data/spec/shoes/constants_spec.rb +38 -0
  129. data/spec/shoes/dialog_spec.rb +171 -0
  130. data/spec/shoes/dimension_spec.rb +433 -0
  131. data/spec/shoes/dimensions_spec.rb +837 -0
  132. data/spec/shoes/download_spec.rb +146 -0
  133. data/spec/shoes/flow_spec.rb +133 -0
  134. data/spec/shoes/font_spec.rb +37 -0
  135. data/spec/shoes/framework_learning_spec.rb +30 -0
  136. data/spec/shoes/gradient_spec.rb +32 -0
  137. data/spec/shoes/helpers/fake_element.rb +17 -0
  138. data/spec/shoes/helpers/inspect_helpers.rb +5 -0
  139. data/spec/shoes/helpers/sample17_helper.rb +66 -0
  140. data/spec/shoes/image_spec.rb +68 -0
  141. data/spec/shoes/images/shoe.jpg +0 -0
  142. data/spec/shoes/input_box_spec.rb +80 -0
  143. data/spec/shoes/integration_spec.rb +20 -0
  144. data/spec/shoes/internal_app_spec.rb +141 -0
  145. data/spec/shoes/keypress_spec.rb +11 -0
  146. data/spec/shoes/keyrelease_spec.rb +12 -0
  147. data/spec/shoes/line_spec.rb +87 -0
  148. data/spec/shoes/link_spec.rb +118 -0
  149. data/spec/shoes/list_box_spec.rb +74 -0
  150. data/spec/shoes/logger/ruby_spec.rb +8 -0
  151. data/spec/shoes/logger_spec.rb +45 -0
  152. data/spec/shoes/oval_spec.rb +24 -0
  153. data/spec/shoes/packager_spec.rb +25 -0
  154. data/spec/shoes/point_spec.rb +71 -0
  155. data/spec/shoes/progress_spec.rb +54 -0
  156. data/spec/shoes/radio_spec.rb +32 -0
  157. data/spec/shoes/rect_spec.rb +39 -0
  158. data/spec/shoes/renamed_delegate_spec.rb +70 -0
  159. data/spec/shoes/shape_spec.rb +106 -0
  160. data/spec/shoes/shared_examples/button.rb +6 -0
  161. data/spec/shoes/shared_examples/changeable.rb +26 -0
  162. data/spec/shoes/shared_examples/clickable.rb +5 -0
  163. data/spec/shoes/shared_examples/common_methods.rb +35 -0
  164. data/spec/shoes/shared_examples/dimensions.rb +32 -0
  165. data/spec/shoes/shared_examples/dsl.rb +44 -0
  166. data/spec/shoes/shared_examples/dsl/animate.rb +29 -0
  167. data/spec/shoes/shared_examples/dsl/arc.rb +45 -0
  168. data/spec/shoes/shared_examples/dsl/background.rb +26 -0
  169. data/spec/shoes/shared_examples/dsl/border.rb +10 -0
  170. data/spec/shoes/shared_examples/dsl/button.rb +5 -0
  171. data/spec/shoes/shared_examples/dsl/cap.rb +6 -0
  172. data/spec/shoes/shared_examples/dsl/check.rb +11 -0
  173. data/spec/shoes/shared_examples/dsl/edit_box.rb +8 -0
  174. data/spec/shoes/shared_examples/dsl/edit_line.rb +8 -0
  175. data/spec/shoes/shared_examples/dsl/editable_element.rb +29 -0
  176. data/spec/shoes/shared_examples/dsl/fill.rb +27 -0
  177. data/spec/shoes/shared_examples/dsl/flow.rb +15 -0
  178. data/spec/shoes/shared_examples/dsl/gradient.rb +62 -0
  179. data/spec/shoes/shared_examples/dsl/image.rb +21 -0
  180. data/spec/shoes/shared_examples/dsl/line.rb +9 -0
  181. data/spec/shoes/shared_examples/dsl/nofill.rb +6 -0
  182. data/spec/shoes/shared_examples/dsl/nostroke.rb +6 -0
  183. data/spec/shoes/shared_examples/dsl/oval.rb +88 -0
  184. data/spec/shoes/shared_examples/dsl/pattern.rb +34 -0
  185. data/spec/shoes/shared_examples/dsl/progress.rb +7 -0
  186. data/spec/shoes/shared_examples/dsl/rect.rb +92 -0
  187. data/spec/shoes/shared_examples/dsl/rgb.rb +26 -0
  188. data/spec/shoes/shared_examples/dsl/shape.rb +57 -0
  189. data/spec/shoes/shared_examples/dsl/star.rb +111 -0
  190. data/spec/shoes/shared_examples/dsl/stroke.rb +30 -0
  191. data/spec/shoes/shared_examples/dsl/strokewidth.rb +19 -0
  192. data/spec/shoes/shared_examples/dsl/style.rb +32 -0
  193. data/spec/shoes/shared_examples/dsl/text_elements.rb +81 -0
  194. data/spec/shoes/shared_examples/dsl/video.rb +5 -0
  195. data/spec/shoes/shared_examples/dsl_app_context.rb +8 -0
  196. data/spec/shoes/shared_examples/hover_leave.rb +11 -0
  197. data/spec/shoes/shared_examples/parent.rb +6 -0
  198. data/spec/shoes/shared_examples/scroll.rb +41 -0
  199. data/spec/shoes/shared_examples/shared_element_method.rb +60 -0
  200. data/spec/shoes/shared_examples/slot.rb +394 -0
  201. data/spec/shoes/shared_examples/state.rb +19 -0
  202. data/spec/shoes/shared_examples/style.rb +82 -0
  203. data/spec/shoes/slot_spec.rb +186 -0
  204. data/spec/shoes/sound_spec.rb +15 -0
  205. data/spec/shoes/span_spec.rb +112 -0
  206. data/spec/shoes/spec_helper.rb +24 -0
  207. data/spec/shoes/stack_spec.rb +79 -0
  208. data/spec/shoes/star_spec.rb +48 -0
  209. data/spec/shoes/text_block_dimensions_spec.rb +75 -0
  210. data/spec/shoes/text_block_spec.rb +270 -0
  211. data/spec/shoes/url_spec.rb +68 -0
  212. data/spec/shoes/widget_spec.rb +70 -0
  213. data/spec/shoes_spec.rb +44 -0
  214. data/spec/spec_helper.rb +19 -0
  215. data/static/downloading.png +0 -0
  216. data/static/shoes-icon-blue.png +0 -0
  217. data/static/shoes-icon-brown.png +0 -0
  218. data/static/shoes-icon.png +0 -0
  219. metadata +366 -0
@@ -0,0 +1,84 @@
1
+ class Shoes
2
+ class Line
3
+ include Common::UIElement
4
+ include Common::Style
5
+ include Common::Clickable
6
+
7
+ attr_reader :app, :parent, :dimensions, :gui, :point_a, :point_b
8
+
9
+ style_with :angle, :art_styles, :dimensions, :x2, :y2
10
+ STYLES = { angle: 0 }
11
+
12
+ def initialize(app, parent, point_a, point_b, styles = {}, blk = nil)
13
+ @app = app
14
+ @parent = parent
15
+ @point_a = point_a
16
+ @point_b = point_b
17
+
18
+ style_init styles, x2: point_b.x, y2: point_b.y
19
+ enclosing_box_of_line
20
+
21
+ @parent.add_child self
22
+ @gui = Shoes.backend_for self
23
+ register_click blk
24
+ end
25
+
26
+ def update_style(new_styles)
27
+ super
28
+ enclosing_box_of_line
29
+ end
30
+
31
+ def left=(val)
32
+ set_point_a(:x, val)
33
+ end
34
+
35
+ def right=(val)
36
+ set_point_b(:x, val)
37
+ end
38
+
39
+ def top=(val)
40
+ set_point_a(:y, val)
41
+ end
42
+
43
+ def bottom=(val)
44
+ set_point_b(:y, val)
45
+ end
46
+
47
+ alias_method :x2=, :right=
48
+ alias_method :y2=, :bottom=
49
+
50
+ def move(x, y, x2=nil, y2=nil)
51
+ @point_a.x = x
52
+ @point_a.y = y
53
+ @point_b.x = x2 if x2
54
+ @point_b.y = y2 if y2
55
+ enclosing_box_of_line
56
+ self
57
+ end
58
+
59
+ private
60
+
61
+ def set_point_a(which, val)
62
+ @point_a.x = val if which == :x
63
+ @point_a.y = val if which == :y
64
+ enclosing_box_of_line
65
+ end
66
+
67
+ def set_point_b(which, val)
68
+ @point_b.x = val if which == :x
69
+ @point_b.y = val if which == :y
70
+ style(x2: val) if which == :x
71
+ style(y2: val) if which == :y
72
+ enclosing_box_of_line
73
+ end
74
+
75
+ def enclosing_box_of_line
76
+ @dimensions = AbsoluteDimensions.new left: @point_a.x,
77
+ top: @point_a.y,
78
+ right: @point_b.x,
79
+ bottom: @point_b.y,
80
+ width: @point_b.x - @point_a.x,
81
+ height: @point_b.y - @point_a.y
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,57 @@
1
+ class Shoes
2
+ class Link < Span
3
+ include Common::Style
4
+
5
+ attr_reader :app, :gui, :blk
6
+ style_with :common_styles, :text_block_styles
7
+ STYLES = { underline: true, stroke: ::Shoes::COLORS[:blue], fill: nil }
8
+
9
+ def initialize(my_app, texts, styles = {}, blk = nil)
10
+ @app = my_app
11
+ style_init styles
12
+ @gui = Shoes.backend_for self
13
+
14
+ setup_click blk
15
+ super texts, @style
16
+ end
17
+
18
+ # Doesn't use Common::Clickable because of URL flavor option clicks
19
+ def setup_click(blk)
20
+ if blk.nil?
21
+ if @style[:click].respond_to? :call
22
+ blk = @style[:click]
23
+ else
24
+ # Slightly awkward, but we need App, not InternalApp, to call visit
25
+ blk = proc { app.app.visit @style[:click] }
26
+ end
27
+ end
28
+
29
+ click(&blk)
30
+ end
31
+
32
+ def click(&blk)
33
+ @gui.click blk if blk
34
+ @blk = blk
35
+ end
36
+
37
+ def pass_coordinates?
38
+ false
39
+ end
40
+
41
+ def in_bounds?(x, y)
42
+ @gui.in_bounds?(x, y)
43
+ end
44
+
45
+ def remove
46
+ @gui.remove
47
+ end
48
+
49
+ def hidden?
50
+ @text_block.hidden?
51
+ end
52
+
53
+ def visible?
54
+ @text_block.visible?
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,5 @@
1
+ class Shoes
2
+ class LinkHover
3
+ # Just a placeholder for now until we get this implemented
4
+ end
5
+ end
@@ -0,0 +1,50 @@
1
+ class Shoes
2
+ class ListBox
3
+ include Common::UIElement
4
+ include Common::Style
5
+ include Common::Changeable
6
+
7
+ attr_reader :app, :parent, :dimensions, :gui
8
+ style_with :change, :choose, :common_styles, :dimensions, :items, :state, :text
9
+ STYLES = { width: 200, height: 20, items: [""] }
10
+
11
+ def initialize(app, parent, styles = {}, blk = nil)
12
+ @app = app
13
+ @parent = parent
14
+ style_init styles
15
+ @dimensions = Dimensions.new parent, @style
16
+ @parent.add_child self
17
+ @gui = Shoes.configuration.backend_for self, @parent.gui
18
+ change(&blk) if blk
19
+
20
+ choose @style[:choose]
21
+ end
22
+
23
+ def items=(values)
24
+ style(items: values)
25
+ @gui.update_items
26
+ end
27
+
28
+ def text
29
+ @gui.text
30
+ end
31
+
32
+ def choose(item_or_hash = nil)
33
+ case item_or_hash
34
+ when String
35
+ style(choose: item_or_hash)
36
+ @gui.choose item_or_hash
37
+ when Hash
38
+ style(choose: item_or_hash[:item])
39
+ @gui.choose item_or_hash[:item]
40
+ end
41
+ end
42
+
43
+ alias_method :choose=, :choose
44
+
45
+ def state=(value)
46
+ style(state: value)
47
+ @gui.enabled value.nil?
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,65 @@
1
+ class Shoes
2
+ module Logger
3
+ class << self
4
+ def register(name, obj)
5
+ @loggers ||= {}
6
+ @loggers[name] = obj
7
+ end
8
+
9
+ def unregister(name)
10
+ @loggers.delete(name)
11
+ end
12
+
13
+ def get(name)
14
+ @loggers && @loggers[name]
15
+ end
16
+ end
17
+
18
+ def self.setup
19
+ Shoes.app do
20
+ def update
21
+ if @hash != Shoes::LOG.hash
22
+ @hash = Shoes::LOG.hash
23
+ @log.clear do
24
+ Shoes::LOG.each_with_index do |(typ, msg), index|
25
+ stack do
26
+ background "#f1f5e1" if index % 2 == 0
27
+ background rgb(220, 220, 220) if index % 2 != 0
28
+ para typ, stroke: blue
29
+ flow do
30
+ stack margin: 4 do
31
+ s = msg.to_s
32
+ para s, margin: 4, margin_top: 0
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ stack do
42
+ flow do
43
+ background black
44
+ stack do
45
+ tagline "Shoes Console", stroke: white
46
+ end
47
+ button "Clear", margin: 6, width: 80, height: 40, right: 10 do
48
+ Shoes::LOG.clear
49
+ end
50
+ end
51
+ @log, @hash = stack, nil
52
+ update
53
+
54
+ every(0.2) do
55
+ update
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ Dir[File.join(File.dirname(__FILE__), "logger", "*.rb")].each do |logger|
64
+ require logger
65
+ end
@@ -0,0 +1,16 @@
1
+ class Shoes
2
+ module Logger
3
+ class Ruby < SimpleDelegator
4
+ def initialize(device = STDERR)
5
+ require 'logger'
6
+ logger = ::Logger.new(device)
7
+ logger.formatter = proc do |severity, _datetime, _progname, message|
8
+ "%s: %s\n" % [severity, message]
9
+ end
10
+ super(logger)
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ Shoes::Logger.register(:ruby, Shoes::Logger::Ruby)
@@ -0,0 +1,33 @@
1
+ require 'shoes/mock/common_methods'
2
+ require 'shoes/mock/clickable'
3
+
4
+ require 'shoes/mock/packager'
5
+
6
+ require 'shoes/mock/animation'
7
+ require 'shoes/mock/app'
8
+ require 'shoes/mock/arc'
9
+ require 'shoes/mock/background'
10
+ require 'shoes/mock/border'
11
+ require 'shoes/mock/button'
12
+ require 'shoes/mock/check'
13
+ require 'shoes/mock/download'
14
+ require 'shoes/mock/font'
15
+ require 'shoes/mock/image'
16
+ require 'shoes/mock/image_pattern'
17
+ require 'shoes/mock/input_box'
18
+ require 'shoes/mock/keypress'
19
+ require 'shoes/mock/keyrelease'
20
+ require 'shoes/mock/line'
21
+ require 'shoes/mock/link'
22
+ require 'shoes/mock/list_box'
23
+ require 'shoes/mock/oval'
24
+ require 'shoes/mock/progress'
25
+ require 'shoes/mock/radio'
26
+ require 'shoes/mock/rect'
27
+ require 'shoes/mock/star'
28
+ require 'shoes/mock/shape'
29
+ require 'shoes/mock/slot'
30
+ require 'shoes/mock/sound'
31
+ require 'shoes/mock/text_block'
32
+ require 'shoes/mock/dialog'
33
+ require 'shoes/mock/timer'
@@ -0,0 +1,8 @@
1
+ class Shoes
2
+ module Mock
3
+ class Animation
4
+ def initialize(*_opts)
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,49 @@
1
+ class Shoes
2
+ module Mock
3
+ class App
4
+ attr_accessor :fullscreen
5
+ def initialize(dsl)
6
+ @dsl = dsl
7
+ @started = false
8
+ end
9
+
10
+ # suboptimal but good enough for now... calling the DSL lets the methods
11
+ # play ping pong calling each other... will think of something.
12
+ def width
13
+ @dsl.opts[:width]
14
+ end
15
+
16
+ def height
17
+ @dsl.opts[:height]
18
+ end
19
+
20
+ def open
21
+ @started = true
22
+ self.fullscreen = true if @dsl.start_as_fullscreen?
23
+ end
24
+
25
+ def quit
26
+ end
27
+
28
+ def started?
29
+ @started
30
+ end
31
+
32
+ def flush
33
+ end
34
+
35
+ def clipboard
36
+ end
37
+
38
+ def clipboard=(_text)
39
+ end
40
+
41
+ def gutter
42
+ 16
43
+ end
44
+
45
+ def wait_until_closed
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,9 @@
1
+ class Shoes
2
+ module Mock
3
+ class Arc
4
+ include Shoes::Mock::Clickable
5
+ def initialize(_dsl, _app, _opts = {})
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ class Shoes
2
+ module Mock
3
+ class Background
4
+ include Shoes::Mock::CommonMethods
5
+
6
+ def background=(*_opts)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ class Shoes
2
+ module Mock
3
+ class Border
4
+ include Shoes::Mock::CommonMethods
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,22 @@
1
+ class Shoes
2
+ module Mock
3
+ class Button
4
+ include Shoes::Mock::CommonMethods
5
+ include Shoes::Mock::Clickable
6
+
7
+ def initialize(dsl, _parent)
8
+ # For whatever reason the SWT button sets sizes back during initialize
9
+ # and at least one test (for the ask dialog which runs a full Shoes.app)
10
+ # relies on that sizing being set for positioning logic to run.
11
+ #
12
+ # Best I can tell, it doesn't matter *what* the values are, as long as
13
+ # they're there.
14
+ dsl.width = 0 unless dsl.width
15
+ dsl.height = 0 unless dsl.height
16
+ end
17
+
18
+ def enabled(_value)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ class Shoes
2
+ module Mock
3
+ class Check
4
+ include Shoes::Mock::CommonMethods
5
+ include Shoes::Mock::Clickable
6
+
7
+ def initialize(*_opts)
8
+ end
9
+
10
+ def checked?
11
+ false
12
+ end
13
+
14
+ def checked=(*_opts)
15
+ end
16
+
17
+ def focus
18
+ end
19
+
20
+ def enabled(_value)
21
+ end
22
+ end
23
+ end
24
+ end