shoes 4.0.0.pre1 → 4.0.0.pre2
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/CHANGELOG +84 -32
- data/Gemfile +22 -1
- data/README.md +28 -13
- data/Rakefile +7 -210
- data/bin/ruby-shoes +2 -2
- data/ext/install/shoes.bat +4 -1
- data/lib/shoes.rb +1 -121
- data/lib/shoes/{cli.rb → ui/cli.rb} +7 -1
- data/lib/shoes/{help.rb → ui/help.rb} +2 -2
- data/lib/shoes/{manual.rb → ui/manual.rb} +1 -1
- data/lib/shoes/version.rb +1 -1
- data/manifests/common.rb +34 -0
- data/manifests/shoes.rb +44 -0
- data/samples/Gemfile +3 -0
- data/samples/Gemfile.lock +35 -0
- data/samples/README +16 -5
- data/samples/boom.rb +239 -0
- data/samples/clicky.rb +24 -0
- data/samples/flow.rb +63 -0
- data/samples/gray.rb +11 -0
- data/samples/nks_booklist.rb +24 -0
- data/samples/nks_breadsticks.rb +7 -0
- data/samples/nks_dancing_circle.rb +13 -0
- data/samples/nks_dictionary.rb +23 -0
- data/samples/nks_edit_box.rb +4 -0
- data/samples/nks_edit_line.rb +6 -0
- data/samples/nks_notes.rb +16 -0
- data/samples/nks_self.rb +6 -0
- data/samples/nks_text_sizes.rb +10 -0
- data/samples/nks_trurl.rb +5 -0
- data/samples/packaging/package_me.rb +6 -0
- data/samples/present.rb +27 -0
- data/samples/progress.rb +10 -0
- data/samples/sample31.rb +1 -1
- data/samples/simple-calc.rb +1 -1
- data/samples/simple-tictactoe.rb +238 -0
- data/samples/simple-visibility.rb +11 -0
- data/samples/simple-widget.rb +9 -0
- data/samples/swt-raw.rb +20 -0
- data/samples/troll.rb +22 -0
- data/shoes.gemspec +10 -22
- data/snapshots/sample56.png +0 -0
- data/static/manual-en.txt +16 -7
- data/tasks/changelog.rb +92 -0
- data/tasks/gem.rb +38 -0
- data/tasks/rspec.rb +106 -0
- data/tasks/sample.rb +66 -0
- data/tasks/yard.rb +13 -0
- metadata +55 -488
- data/.gitignore +0 -53
- data/.rspec +0 -3
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/.travis.yml +0 -31
- data/bin/shoes +0 -59
- data/bin/shoes.bat +0 -6
- data/fonts/Coolvetica.ttf +0 -0
- data/fonts/Lacuna.ttf +0 -0
- data/lib/ext/highlighter.rb +0 -2
- data/lib/ext/highlighter/common.rb +0 -197
- data/lib/ext/highlighter/lang/ruby.rb +0 -316
- data/lib/ext/highlighter/markup.rb +0 -222
- data/lib/rubygems_plugin.rb +0 -19
- data/lib/shoes/animation.rb +0 -55
- data/lib/shoes/app.rb +0 -320
- data/lib/shoes/arc.rb +0 -35
- data/lib/shoes/background.rb +0 -30
- data/lib/shoes/border.rb +0 -33
- data/lib/shoes/builtin_methods.rb +0 -73
- data/lib/shoes/button.rb +0 -32
- data/lib/shoes/check_button.rb +0 -43
- data/lib/shoes/color.rb +0 -375
- data/lib/shoes/common/background_element.rb +0 -9
- data/lib/shoes/common/changeable.rb +0 -34
- data/lib/shoes/common/clickable.rb +0 -17
- data/lib/shoes/common/common_methods.rb +0 -70
- data/lib/shoes/common/fill.rb +0 -21
- data/lib/shoes/common/registration.rb +0 -33
- data/lib/shoes/common/state.rb +0 -18
- data/lib/shoes/common/stroke.rb +0 -28
- data/lib/shoes/common/style.rb +0 -34
- data/lib/shoes/common/style_normalizer.rb +0 -16
- data/lib/shoes/configuration.rb +0 -96
- data/lib/shoes/dialog.rb +0 -27
- data/lib/shoes/dimension.rb +0 -237
- data/lib/shoes/dimensions.rb +0 -194
- data/lib/shoes/download.rb +0 -117
- data/lib/shoes/dsl.rb +0 -478
- data/lib/shoes/font.rb +0 -49
- data/lib/shoes/gradient.rb +0 -18
- data/lib/shoes/image.rb +0 -33
- data/lib/shoes/image_pattern.rb +0 -10
- data/lib/shoes/input_box.rb +0 -68
- data/lib/shoes/key_event.rb +0 -17
- data/lib/shoes/line.rb +0 -38
- data/lib/shoes/link.rb +0 -49
- data/lib/shoes/link_hover.rb +0 -5
- data/lib/shoes/list_box.rb +0 -44
- data/lib/shoes/logger.rb +0 -66
- data/lib/shoes/logger/ruby.rb +0 -18
- data/lib/shoes/mock.rb +0 -30
- data/lib/shoes/mock/animation.rb +0 -8
- data/lib/shoes/mock/app.rb +0 -44
- data/lib/shoes/mock/arc.rb +0 -8
- data/lib/shoes/mock/background.rb +0 -10
- data/lib/shoes/mock/border.rb +0 -7
- data/lib/shoes/mock/button.rb +0 -10
- data/lib/shoes/mock/check.rb +0 -24
- data/lib/shoes/mock/common_methods.rb +0 -11
- data/lib/shoes/mock/dialog.rb +0 -13
- data/lib/shoes/mock/download.rb +0 -18
- data/lib/shoes/mock/font.rb +0 -17
- data/lib/shoes/mock/image.rb +0 -12
- data/lib/shoes/mock/image_pattern.rb +0 -9
- data/lib/shoes/mock/input_box.rb +0 -23
- data/lib/shoes/mock/keypress.rb +0 -8
- data/lib/shoes/mock/keyrelease.rb +0 -8
- data/lib/shoes/mock/line.rb +0 -14
- data/lib/shoes/mock/link.rb +0 -11
- data/lib/shoes/mock/list_box.rb +0 -16
- data/lib/shoes/mock/oval.rb +0 -11
- data/lib/shoes/mock/progress.rb +0 -10
- data/lib/shoes/mock/radio.rb +0 -26
- data/lib/shoes/mock/rect.rb +0 -13
- data/lib/shoes/mock/shape.rb +0 -19
- data/lib/shoes/mock/slot.rb +0 -14
- data/lib/shoes/mock/sound.rb +0 -8
- data/lib/shoes/mock/star.rb +0 -13
- data/lib/shoes/mock/text_block.rb +0 -29
- data/lib/shoes/mock/timer.rb +0 -8
- data/lib/shoes/oval.rb +0 -28
- data/lib/shoes/point.rb +0 -43
- data/lib/shoes/progress.rb +0 -26
- data/lib/shoes/radio.rb +0 -15
- data/lib/shoes/rect.rb +0 -28
- data/lib/shoes/renamed_delegate.rb +0 -15
- data/lib/shoes/shape.rb +0 -175
- data/lib/shoes/slot.rb +0 -232
- data/lib/shoes/slot_contents.rb +0 -56
- data/lib/shoes/sound.rb +0 -16
- data/lib/shoes/span.rb +0 -16
- data/lib/shoes/star.rb +0 -49
- data/lib/shoes/swt.rb +0 -114
- data/lib/shoes/swt/animation.rb +0 -46
- data/lib/shoes/swt/app.rb +0 -300
- data/lib/shoes/swt/arc.rb +0 -70
- data/lib/shoes/swt/background.rb +0 -31
- data/lib/shoes/swt/border.rb +0 -37
- data/lib/shoes/swt/button.rb +0 -18
- data/lib/shoes/swt/check.rb +0 -14
- data/lib/shoes/swt/check_button.rb +0 -19
- data/lib/shoes/swt/color.rb +0 -45
- data/lib/shoes/swt/common/child.rb +0 -16
- data/lib/shoes/swt/common/clear.rb +0 -24
- data/lib/shoes/swt/common/clickable.rb +0 -62
- data/lib/shoes/swt/common/container.rb +0 -28
- data/lib/shoes/swt/common/fill.rb +0 -37
- data/lib/shoes/swt/common/painter.rb +0 -83
- data/lib/shoes/swt/common/painter_updates_position.rb +0 -12
- data/lib/shoes/swt/common/resource.rb +0 -14
- data/lib/shoes/swt/common/selection_listener.rb +0 -14
- data/lib/shoes/swt/common/stroke.rb +0 -41
- data/lib/shoes/swt/common/toggle.rb +0 -13
- data/lib/shoes/swt/common/update_position.rb +0 -15
- data/lib/shoes/swt/dialog.rb +0 -89
- data/lib/shoes/swt/disposed_protection.rb +0 -23
- data/lib/shoes/swt/download.rb +0 -24
- data/lib/shoes/swt/fitted_text_layout.rb +0 -94
- data/lib/shoes/swt/fitted_text_layout_collection.rb +0 -108
- data/lib/shoes/swt/font.rb +0 -32
- data/lib/shoes/swt/gradient.rb +0 -77
- data/lib/shoes/swt/image.rb +0 -130
- data/lib/shoes/swt/image_pattern.rb +0 -19
- data/lib/shoes/swt/input_box.rb +0 -73
- data/lib/shoes/swt/key_listener.rb +0 -145
- data/lib/shoes/swt/line.rb +0 -57
- data/lib/shoes/swt/link.rb +0 -37
- data/lib/shoes/swt/link_segment.rb +0 -108
- data/lib/shoes/swt/list_box.rb +0 -49
- data/lib/shoes/swt/mouse_move_listener.rb +0 -61
- data/lib/shoes/swt/oval.rb +0 -53
- data/lib/shoes/swt/progress.rb +0 -35
- data/lib/shoes/swt/radio.rb +0 -29
- data/lib/shoes/swt/radio_group.rb +0 -54
- data/lib/shoes/swt/rect.rb +0 -31
- data/lib/shoes/swt/rect_painter.rb +0 -23
- data/lib/shoes/swt/redrawing_aspect.rb +0 -122
- data/lib/shoes/swt/shape.rb +0 -101
- data/lib/shoes/swt/shoes_layout.rb +0 -43
- data/lib/shoes/swt/slot.rb +0 -25
- data/lib/shoes/swt/sound.rb +0 -119
- data/lib/shoes/swt/star.rb +0 -51
- data/lib/shoes/swt/swt_button.rb +0 -49
- data/lib/shoes/swt/text_block.rb +0 -133
- data/lib/shoes/swt/text_block_cursor_painter.rb +0 -112
- data/lib/shoes/swt/text_block_fitter.rb +0 -180
- data/lib/shoes/swt/text_block_painter.rb +0 -49
- data/lib/shoes/swt/text_font_factory.rb +0 -27
- data/lib/shoes/swt/text_style_factory.rb +0 -88
- data/lib/shoes/swt/timer.rb +0 -19
- data/lib/shoes/swt/tooling/leak_hunter.rb +0 -84
- data/lib/shoes/text.rb +0 -14
- data/lib/shoes/text_block.rb +0 -162
- data/lib/shoes/timer.rb +0 -10
- data/lib/shoes/url.rb +0 -47
- data/lib/shoes/widget.rb +0 -73
- data/lib/support/jl1.0.1.jar +0 -0
- data/lib/support/jogg-0.0.7.jar +0 -0
- data/lib/support/jorbis-0.0.15.jar +0 -0
- data/lib/support/log4j-1.2.16.jar +0 -0
- data/lib/support/mp3spi1.9.5.jar +0 -0
- data/lib/support/tritonus_share.jar +0 -0
- data/lib/support/vorbisspi1.0.3.jar +0 -0
- data/samples/good-clock-adjusted.rb +0 -49
- data/spec/async_helper.rb +0 -21
- data/spec/code_coverage.rb +0 -11
- data/spec/shoes/animation_spec.rb +0 -65
- data/spec/shoes/app_spec.rb +0 -411
- data/spec/shoes/arc_spec.rb +0 -53
- data/spec/shoes/background_spec.rb +0 -48
- data/spec/shoes/border_spec.rb +0 -43
- data/spec/shoes/builtin_methods_spec.rb +0 -84
- data/spec/shoes/button_spec.rb +0 -41
- data/spec/shoes/check_spec.rb +0 -31
- data/spec/shoes/cli_spec.rb +0 -16
- data/spec/shoes/color_spec.rb +0 -396
- data/spec/shoes/common/style_normalizer_spec.rb +0 -28
- data/spec/shoes/common/style_spec.rb +0 -58
- data/spec/shoes/configuration_spec.rb +0 -37
- data/spec/shoes/constants_spec.rb +0 -38
- data/spec/shoes/dialog_spec.rb +0 -163
- data/spec/shoes/dimension_spec.rb +0 -381
- data/spec/shoes/dimensions_spec.rb +0 -831
- data/spec/shoes/download_spec.rb +0 -133
- data/spec/shoes/flow_spec.rb +0 -92
- data/spec/shoes/font_spec.rb +0 -38
- data/spec/shoes/framework_learning_spec.rb +0 -30
- data/spec/shoes/helpers/fake_element.rb +0 -11
- data/spec/shoes/helpers/sample17_helper.rb +0 -66
- data/spec/shoes/image_spec.rb +0 -45
- data/spec/shoes/images/shoe.jpg +0 -0
- data/spec/shoes/input_box_spec.rb +0 -44
- data/spec/shoes/integration_spec.rb +0 -20
- data/spec/shoes/keypress_spec.rb +0 -11
- data/spec/shoes/keyrelease_spec.rb +0 -12
- data/spec/shoes/line_spec.rb +0 -47
- data/spec/shoes/link_spec.rb +0 -89
- data/spec/shoes/list_box_spec.rb +0 -63
- data/spec/shoes/logger/ruby_spec.rb +0 -9
- data/spec/shoes/logger_spec.rb +0 -45
- data/spec/shoes/oval_spec.rb +0 -20
- data/spec/shoes/point_spec.rb +0 -51
- data/spec/shoes/progress_spec.rb +0 -40
- data/spec/shoes/radio_spec.rb +0 -28
- data/spec/shoes/rect_spec.rb +0 -38
- data/spec/shoes/renamed_delegate_spec.rb +0 -70
- data/spec/shoes/shape_spec.rb +0 -54
- data/spec/shoes/shared_examples/button.rb +0 -6
- data/spec/shoes/shared_examples/changeable.rb +0 -26
- data/spec/shoes/shared_examples/clickable.rb +0 -5
- data/spec/shoes/shared_examples/common_methods.rb +0 -42
- data/spec/shoes/shared_examples/dimensions.rb +0 -32
- data/spec/shoes/shared_examples/dsl.rb +0 -42
- data/spec/shoes/shared_examples/dsl/animate.rb +0 -29
- data/spec/shoes/shared_examples/dsl/arc.rb +0 -45
- data/spec/shoes/shared_examples/dsl/background.rb +0 -26
- data/spec/shoes/shared_examples/dsl/border.rb +0 -10
- data/spec/shoes/shared_examples/dsl/cap.rb +0 -6
- data/spec/shoes/shared_examples/dsl/check.rb +0 -11
- data/spec/shoes/shared_examples/dsl/edit_box.rb +0 -8
- data/spec/shoes/shared_examples/dsl/edit_line.rb +0 -8
- data/spec/shoes/shared_examples/dsl/editable_element.rb +0 -29
- data/spec/shoes/shared_examples/dsl/fill.rb +0 -27
- data/spec/shoes/shared_examples/dsl/flow.rb +0 -15
- data/spec/shoes/shared_examples/dsl/gradient.rb +0 -52
- data/spec/shoes/shared_examples/dsl/image.rb +0 -21
- data/spec/shoes/shared_examples/dsl/line.rb +0 -9
- data/spec/shoes/shared_examples/dsl/nofill.rb +0 -6
- data/spec/shoes/shared_examples/dsl/nostroke.rb +0 -6
- data/spec/shoes/shared_examples/dsl/oval.rb +0 -60
- data/spec/shoes/shared_examples/dsl/pattern.rb +0 -34
- data/spec/shoes/shared_examples/dsl/progress.rb +0 -7
- data/spec/shoes/shared_examples/dsl/rect.rb +0 -92
- data/spec/shoes/shared_examples/dsl/rgb.rb +0 -26
- data/spec/shoes/shared_examples/dsl/shape.rb +0 -21
- data/spec/shoes/shared_examples/dsl/star.rb +0 -48
- data/spec/shoes/shared_examples/dsl/stroke.rb +0 -30
- data/spec/shoes/shared_examples/dsl/strokewidth.rb +0 -19
- data/spec/shoes/shared_examples/dsl/style.rb +0 -32
- data/spec/shoes/shared_examples/dsl/text_elements.rb +0 -81
- data/spec/shoes/shared_examples/dsl_app_context.rb +0 -8
- data/spec/shoes/shared_examples/hover_leave.rb +0 -11
- data/spec/shoes/shared_examples/parent.rb +0 -6
- data/spec/shoes/shared_examples/shared_element_method.rb +0 -52
- data/spec/shoes/shared_examples/slot.rb +0 -272
- data/spec/shoes/shared_examples/state.rb +0 -19
- data/spec/shoes/shared_examples/style.rb +0 -24
- data/spec/shoes/slot_spec.rb +0 -60
- data/spec/shoes/sound_spec.rb +0 -15
- data/spec/shoes/span_spec.rb +0 -94
- data/spec/shoes/spec_helper.rb +0 -1
- data/spec/shoes/stack_spec.rb +0 -53
- data/spec/shoes/star_spec.rb +0 -30
- data/spec/shoes/text_block_spec.rb +0 -242
- data/spec/shoes/url_spec.rb +0 -66
- data/spec/shoes/widget_spec.rb +0 -34
- data/spec/shoes_spec.rb +0 -44
- data/spec/spec_helper.rb +0 -16
- data/spec/swt_shoes/animation_spec.rb +0 -86
- data/spec/swt_shoes/app_spec.rb +0 -75
- data/spec/swt_shoes/arc_spec.rb +0 -101
- data/spec/swt_shoes/background_spec.rb +0 -56
- data/spec/swt_shoes/border_spec.rb +0 -51
- data/spec/swt_shoes/button_spec.rb +0 -101
- data/spec/swt_shoes/check_spec.rb +0 -28
- data/spec/swt_shoes/color_spec.rb +0 -67
- data/spec/swt_shoes/common/painter_spec.rb +0 -29
- data/spec/swt_shoes/configuration_spec.rb +0 -12
- data/spec/swt_shoes/dialog_spec.rb +0 -106
- data/spec/swt_shoes/disposed_protection_spec.rb +0 -49
- data/spec/swt_shoes/fitted_text_layout_collection_spec.rb +0 -174
- data/spec/swt_shoes/fitted_text_layout_spec.rb +0 -130
- data/spec/swt_shoes/flow_spec.rb +0 -26
- data/spec/swt_shoes/font_spec.rb +0 -33
- data/spec/swt_shoes/gradient_spec.rb +0 -20
- data/spec/swt_shoes/image_pattern_spec.rb +0 -19
- data/spec/swt_shoes/image_spec.rb +0 -100
- data/spec/swt_shoes/input_box_spec.rb +0 -110
- data/spec/swt_shoes/integration_spec.rb +0 -18
- data/spec/swt_shoes/key_listener_spec.rb +0 -320
- data/spec/swt_shoes/line_spec.rb +0 -43
- data/spec/swt_shoes/link_segment_spec.rb +0 -103
- data/spec/swt_shoes/link_spec.rb +0 -59
- data/spec/swt_shoes/list_box_spec.rb +0 -51
- data/spec/swt_shoes/minimal.png +0 -0
- data/spec/swt_shoes/mouse_move_listener_spec.rb +0 -129
- data/spec/swt_shoes/oval_spec.rb +0 -51
- data/spec/swt_shoes/progress_spec.rb +0 -44
- data/spec/swt_shoes/radio_group_spec.rb +0 -73
- data/spec/swt_shoes/radio_spec.rb +0 -56
- data/spec/swt_shoes/rect_painter_spec.rb +0 -45
- data/spec/swt_shoes/rect_spec.rb +0 -19
- data/spec/swt_shoes/shape_spec.rb +0 -81
- data/spec/swt_shoes/shared_examples/button.rb +0 -24
- data/spec/swt_shoes/shared_examples/clearable.rb +0 -32
- data/spec/swt_shoes/shared_examples/clickable.rb +0 -60
- data/spec/swt_shoes/shared_examples/movable.rb +0 -36
- data/spec/swt_shoes/shared_examples/paintable_spec.rb +0 -7
- data/spec/swt_shoes/shared_examples/painter.rb +0 -83
- data/spec/swt_shoes/shared_examples/pattern.rb +0 -32
- data/spec/swt_shoes/shared_examples/swt_app_context.rb +0 -17
- data/spec/swt_shoes/shared_examples/togglable.rb +0 -15
- data/spec/swt_shoes/shell_control_listener_spec.rb +0 -23
- data/spec/swt_shoes/sound.rb +0 -10
- data/spec/swt_shoes/spec_helper.rb +0 -31
- data/spec/swt_shoes/star_spec.rb +0 -47
- data/spec/swt_shoes/text_block_cursor_painter_spec.rb +0 -202
- data/spec/swt_shoes/text_block_fitter_spec.rb +0 -181
- data/spec/swt_shoes/text_block_painter_spec.rb +0 -221
- data/spec/swt_shoes/text_block_spec.rb +0 -183
data/lib/shoes/timer.rb
DELETED
data/lib/shoes/url.rb
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
|
|
3
|
-
# Backwards compatibility, kind of likely to be removed
|
|
4
|
-
def self.inherited(base_class)
|
|
5
|
-
base_class.send :include, URL #include is private, therefore send
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
module URL
|
|
9
|
-
extend Forwardable
|
|
10
|
-
|
|
11
|
-
def_delegators :app, *(Shoes::App::DELEGATE_METHODS)
|
|
12
|
-
|
|
13
|
-
attr_accessor :app
|
|
14
|
-
|
|
15
|
-
def self.included(base_class)
|
|
16
|
-
base_class.extend URLDefiner
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def self.urls
|
|
20
|
-
@urls ||= {}
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
module URLDefiner
|
|
26
|
-
def url(page, method)
|
|
27
|
-
page = convert_page_to_regex(page)
|
|
28
|
-
url_class = self
|
|
29
|
-
|
|
30
|
-
Shoes::URL.urls[page] = proc do |app, arg|
|
|
31
|
-
new_url_instance = url_class.new
|
|
32
|
-
new_url_instance.app = app
|
|
33
|
-
|
|
34
|
-
if arg
|
|
35
|
-
new_url_instance.send(method, arg)
|
|
36
|
-
else
|
|
37
|
-
new_url_instance.send method
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
private
|
|
43
|
-
def convert_page_to_regex(page)
|
|
44
|
-
/^#{page}$/
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
data/lib/shoes/widget.rb
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
# This is the superclass for creating custom Shoes widgets.
|
|
3
|
-
#
|
|
4
|
-
# To use, inherit from {Shoes::Widget}. You get a few magical effects:
|
|
5
|
-
#
|
|
6
|
-
# * When you inherit from {Shoes::Widget}, you get a method in your Apps to
|
|
7
|
-
# create your widgets. The method is lower- and snake-cased. It returns
|
|
8
|
-
# an instance of your widget class.
|
|
9
|
-
# * Your widgets delegate missing methods to their app object. This
|
|
10
|
-
# allows you to use the Shoes DSL within your widgets.
|
|
11
|
-
#
|
|
12
|
-
# @example
|
|
13
|
-
# class SayHello < Shoes::Widget
|
|
14
|
-
# def initialize word
|
|
15
|
-
# para "Hello #{word}", stroke: green, size: 80
|
|
16
|
-
# end
|
|
17
|
-
# end
|
|
18
|
-
#
|
|
19
|
-
# Shoes.app do
|
|
20
|
-
# say_hello 'Shoes'
|
|
21
|
-
# end
|
|
22
|
-
#
|
|
23
|
-
class Widget
|
|
24
|
-
extend Forwardable
|
|
25
|
-
|
|
26
|
-
# Delegate missing methods to app, so you can use the Shoes DSL
|
|
27
|
-
# inside the widget.
|
|
28
|
-
def_delegators :app, *Shoes::App::DELEGATE_METHODS
|
|
29
|
-
|
|
30
|
-
attr_accessor :parent
|
|
31
|
-
attr_writer :app
|
|
32
|
-
|
|
33
|
-
class << self
|
|
34
|
-
attr_accessor :app
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# lookup a bit more complicated as during initialize we do
|
|
38
|
-
# not have @app yet...
|
|
39
|
-
def app
|
|
40
|
-
@app || self.class.app
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def self.inherited(klass, &blk)
|
|
44
|
-
dsl_method = dsl_method_name(klass)
|
|
45
|
-
Shoes::App.class_eval do
|
|
46
|
-
define_method(dsl_method) do |*args, &blk|
|
|
47
|
-
# we set app 2 times because widgets execute most of their code
|
|
48
|
-
# straight in initialize. I dunno if there is a good way of setting
|
|
49
|
-
# an @app instance variable before initialize is executed. We could
|
|
50
|
-
# hand it over in #initialize but that would break the interface
|
|
51
|
-
# and people would have to set it themselves or make sure to call
|
|
52
|
-
# super so for not it's like this.
|
|
53
|
-
# Setting the ref on the instance is important as we might have
|
|
54
|
-
# instances of the same widget in different Shoes::Apps so each one
|
|
55
|
-
# needs to save the reference to the one it was started with
|
|
56
|
-
klass.app = self
|
|
57
|
-
widget_instance = klass.new(*args, &blk)
|
|
58
|
-
widget_instance.app = self
|
|
59
|
-
widget_instance.parent = @__app__.current_slot
|
|
60
|
-
widget_instance
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
private
|
|
67
|
-
def self.dsl_method_name(klass)
|
|
68
|
-
klass.to_s[/(^|::)(\w+)$/, 2].
|
|
69
|
-
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
|
70
|
-
gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
data/lib/support/jl1.0.1.jar
DELETED
|
Binary file
|
data/lib/support/jogg-0.0.7.jar
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/lib/support/mp3spi1.9.5.jar
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Shoes Clock by Thomas Bell
|
|
3
|
-
# posted to the Shoes mailing list on 04 Dec 2007
|
|
4
|
-
# modified for Shoes 4, using fg instead of span in TextBlock.
|
|
5
|
-
#
|
|
6
|
-
Shoes.app height: 260, width: 250 do
|
|
7
|
-
@radius, @centerx, @centery = 90, 126, 140
|
|
8
|
-
animate(8) do
|
|
9
|
-
@time = Time.now
|
|
10
|
-
clear do
|
|
11
|
-
draw_background
|
|
12
|
-
stack do
|
|
13
|
-
background black
|
|
14
|
-
para(fg(@time.strftime("%a"), "#666"), fg(@time.strftime(" %b %d, %Y "), "#ccc"),
|
|
15
|
-
strong(fg(@time.strftime("%I:%M"), white)), fg(@time.strftime(".%S"), "#666"), margin: 4, align: 'center')
|
|
16
|
-
end
|
|
17
|
-
clock_hand @time.sec + (@time.usec * 0.000001),2,30,red
|
|
18
|
-
clock_hand @time.min + (@time.sec / 60.0),5
|
|
19
|
-
clock_hand @time.hour + (@time.min / 60.0),8,6
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
def draw_background
|
|
23
|
-
background rgb(230, 240, 200)
|
|
24
|
-
|
|
25
|
-
fill white
|
|
26
|
-
stroke black
|
|
27
|
-
strokewidth 4
|
|
28
|
-
oval @centerx - 102, @centery - 102, 204, 204
|
|
29
|
-
|
|
30
|
-
fill black
|
|
31
|
-
nostroke
|
|
32
|
-
oval @centerx - 5, @centery - 5, 10, 10
|
|
33
|
-
|
|
34
|
-
stroke black
|
|
35
|
-
strokewidth 1
|
|
36
|
-
line(@centerx, @centery - 102, @centerx, @centery - 95)
|
|
37
|
-
line(@centerx - 102, @centery, @centerx - 95, @centery)
|
|
38
|
-
line(@centerx + 95, @centery, @centerx + 102, @centery)
|
|
39
|
-
line(@centerx, @centery + 95, @centerx, @centery + 102)
|
|
40
|
-
end
|
|
41
|
-
def clock_hand(time, sw, unit=30, color=black)
|
|
42
|
-
radius_local = unit == 30 ? @radius : @radius - 15
|
|
43
|
-
_x = radius_local * Math.sin( time * Math::PI / unit )
|
|
44
|
-
_y = radius_local * Math.cos( time * Math::PI / unit )
|
|
45
|
-
stroke color
|
|
46
|
-
strokewidth sw
|
|
47
|
-
line(@centerx, @centery, @centerx + _x, @centery - _y)
|
|
48
|
-
end
|
|
49
|
-
end
|
data/spec/async_helper.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# from: https://gist.github.com/mattwynne/1228927
|
|
2
|
-
# usage:
|
|
3
|
-
# it "should return a result of 5" do
|
|
4
|
-
# eventually { long_running_thing.result.should eq(5) }
|
|
5
|
-
# end
|
|
6
|
-
module AsyncHelper
|
|
7
|
-
def eventually(options = {})
|
|
8
|
-
timeout = options[:timeout] || 2
|
|
9
|
-
interval = options[:interval] || 0.1
|
|
10
|
-
time_limit = Time.now + timeout
|
|
11
|
-
loop do
|
|
12
|
-
begin
|
|
13
|
-
yield
|
|
14
|
-
rescue => error
|
|
15
|
-
end
|
|
16
|
-
return if error.nil?
|
|
17
|
-
raise error if Time.now >= time_limit
|
|
18
|
-
sleep interval
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
data/spec/code_coverage.rb
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
require 'simplecov'
|
|
2
|
-
# using coveralls to publish test coverage statistics
|
|
3
|
-
require 'coveralls'
|
|
4
|
-
|
|
5
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
|
6
|
-
Coveralls::SimpleCov::Formatter,
|
|
7
|
-
SimpleCov::Formatter::HTMLFormatter
|
|
8
|
-
]
|
|
9
|
-
SimpleCov.start do
|
|
10
|
-
add_filter '/spec/'
|
|
11
|
-
end
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
require 'shoes/spec_helper'
|
|
2
|
-
|
|
3
|
-
shared_examples_for Shoes::Animation do
|
|
4
|
-
it "should start" do
|
|
5
|
-
subject.start
|
|
6
|
-
subject.should_not be_stopped
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it "should stop" do
|
|
10
|
-
subject.stop
|
|
11
|
-
subject.should be_stopped
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it "should toggle on" do
|
|
15
|
-
subject.stop
|
|
16
|
-
subject.toggle
|
|
17
|
-
subject.should_not be_stopped
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it "should toggle off" do
|
|
21
|
-
subject.start
|
|
22
|
-
subject.toggle
|
|
23
|
-
subject.should be_stopped
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it "increments frame" do
|
|
27
|
-
frame = subject.current_frame
|
|
28
|
-
subject.increment_frame
|
|
29
|
-
subject.current_frame.should eq(frame + 1)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe Shoes::Animation do
|
|
34
|
-
let(:app) { double('app') }
|
|
35
|
-
let(:app_gui) { double('app gui') }
|
|
36
|
-
let(:opts) { {} }
|
|
37
|
-
let(:block) { double('block') }
|
|
38
|
-
subject { Shoes::Animation.new( app, opts, block ) }
|
|
39
|
-
|
|
40
|
-
before :each do
|
|
41
|
-
app.should_receive(:gui) { app_gui }
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it_behaves_like Shoes::Animation
|
|
45
|
-
|
|
46
|
-
it "sets default framerate" do
|
|
47
|
-
subject.framerate.should eq(10)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "sets current frame to 0" do
|
|
51
|
-
subject.current_frame.should eq(0)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it { should_not be_stopped }
|
|
55
|
-
|
|
56
|
-
describe "with framerate" do
|
|
57
|
-
let(:opts) { {:framerate => 36, :app => app} }
|
|
58
|
-
|
|
59
|
-
it "sets framerate" do
|
|
60
|
-
subject.framerate.should eq(36)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it_behaves_like Shoes::Animation
|
|
64
|
-
end
|
|
65
|
-
end
|
data/spec/shoes/app_spec.rb
DELETED
|
@@ -1,411 +0,0 @@
|
|
|
1
|
-
require 'shoes/spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Shoes::App do
|
|
4
|
-
let(:input_blk) { Proc.new {} }
|
|
5
|
-
let(:opts) { Hash.new }
|
|
6
|
-
subject(:app) { Shoes::App.new(opts, &input_blk) }
|
|
7
|
-
|
|
8
|
-
it_behaves_like "DSL container"
|
|
9
|
-
it { should respond_to :clipboard }
|
|
10
|
-
it { should respond_to :clipboard= }
|
|
11
|
-
it { should respond_to :owner }
|
|
12
|
-
|
|
13
|
-
# For Shoes 3 compatibility
|
|
14
|
-
it "exposes self as #app" do
|
|
15
|
-
expect(app.app).to eq(app)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
describe "initialize" do
|
|
19
|
-
let(:input_blk) { Proc.new {} }
|
|
20
|
-
|
|
21
|
-
before do
|
|
22
|
-
Shoes::App.any_instance.stub(:flow)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "initializes style hash", :qt do
|
|
26
|
-
style = Shoes::App.new.style
|
|
27
|
-
style.class.should eq(Hash)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
context "console" do
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
context "defaults" do
|
|
34
|
-
let(:opts) { Hash.new }
|
|
35
|
-
let(:defaults) { Shoes::InternalApp::DEFAULT_OPTIONS }
|
|
36
|
-
|
|
37
|
-
it "sets width", :qt do
|
|
38
|
-
subject.width.should == defaults[:width]
|
|
39
|
-
expect(subject.width).to eq defaults[:width]
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it "sets height", :qt do
|
|
43
|
-
expect(subject.height).to eq defaults[:height]
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it 'has an absolute_left of 0' do
|
|
47
|
-
expect(subject.absolute_left).to eq 0
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it 'has an absolute_top of 0' do
|
|
51
|
-
expect(subject.absolute_top).to eq 0
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
describe "internal app state" do
|
|
55
|
-
let(:internal_app) { app.instance_variable_get(:@__app__) }
|
|
56
|
-
|
|
57
|
-
it "sets title", :qt do
|
|
58
|
-
expect(internal_app.app_title).to eq defaults[:title]
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it "is resizable", :qt do
|
|
62
|
-
expect(internal_app.resizable).to be_true
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
context "from opts" do
|
|
68
|
-
let(:opts) { {:width => 150, :height => 2, :title => "Shoes::App Spec", :resizable => false} }
|
|
69
|
-
|
|
70
|
-
it "sets width", :qt do
|
|
71
|
-
expect(subject.width).to eq opts[:width]
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it "sets height", :qt do
|
|
75
|
-
expect(subject.height).to eq opts[:height]
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
describe "internal app state" do
|
|
79
|
-
let(:internal_app) { app.instance_variable_get(:@__app__) }
|
|
80
|
-
|
|
81
|
-
it "sets title", :qt do
|
|
82
|
-
expect(internal_app.app_title).to eq opts[:title]
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
it "sets resizable", :qt do
|
|
86
|
-
expect(internal_app.resizable).to be_false
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
it 'initializes a flow with the right parameters' do
|
|
91
|
-
expect(Shoes::Flow).to receive(:new).with(anything, anything,
|
|
92
|
-
{width: opts[:width],
|
|
93
|
-
height: opts[:height]}).
|
|
94
|
-
and_call_original
|
|
95
|
-
subject
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
context "when registering" do
|
|
100
|
-
before :each do
|
|
101
|
-
Shoes.unregister_all
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
it "registers" do
|
|
105
|
-
old_apps_length = Shoes.apps.length
|
|
106
|
-
subject
|
|
107
|
-
expect(Shoes.apps.length).to eq(old_apps_length + 1)
|
|
108
|
-
expect(Shoes.apps).to include(subject)
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
describe "style" do
|
|
114
|
-
let(:black) { Shoes::COLORS[:black] }
|
|
115
|
-
let(:goldenrod) { Shoes::COLORS[:goldenrod] }
|
|
116
|
-
let(:defaults) { {stroke: black, strokewidth: 1} }
|
|
117
|
-
|
|
118
|
-
it "sets defaults" do
|
|
119
|
-
expect(app.style).to eq(defaults)
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
it "merges new styles with existing styles" do
|
|
123
|
-
new_styles = { strokewidth: 4 }
|
|
124
|
-
app.style new_styles
|
|
125
|
-
expect(app.style).to eq(defaults.merge(new_styles))
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
describe "strokewidth" do
|
|
129
|
-
it "defaults to 1" do
|
|
130
|
-
subject.style[:strokewidth].should eq(1)
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
it "passes default to objects" do
|
|
134
|
-
subject.line(0, 100, 100, 0).style[:strokewidth].should eq(1)
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
it "passes new values to objects" do
|
|
138
|
-
subject.strokewidth 10
|
|
139
|
-
subject.line(0, 100, 100, 0).style[:strokewidth].should eq(10)
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
describe "stroke" do
|
|
144
|
-
it "defaults to black" do
|
|
145
|
-
subject.style[:stroke].should eq(black)
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
it "passes default to objects" do
|
|
149
|
-
subject.oval(100, 100, 100).style[:stroke].should eq(black)
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
it "passes new value to objects" do
|
|
153
|
-
subject.stroke goldenrod
|
|
154
|
-
subject.oval(100, 100, 100).style[:stroke].should eq(goldenrod)
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
describe "default styles" do
|
|
159
|
-
it "is independent among Shoes::App instances" do
|
|
160
|
-
app1 = Shoes::App.new
|
|
161
|
-
app2 = Shoes::App.new
|
|
162
|
-
|
|
163
|
-
app1.strokewidth 10
|
|
164
|
-
app1.line(0, 100, 100, 0).style[:strokewidth].should == 10
|
|
165
|
-
|
|
166
|
-
# .. but does not affect app2
|
|
167
|
-
app2.line(0, 100, 100, 0).style[:strokewidth].should_not == 10
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
describe "connecting with gui" do
|
|
173
|
-
let(:gui) { app.instance_variable_get(:@__app__).gui }
|
|
174
|
-
|
|
175
|
-
describe "clipboard" do
|
|
176
|
-
it "gets clipboard" do
|
|
177
|
-
expect(gui).to receive(:clipboard)
|
|
178
|
-
subject.clipboard
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
it "sets clipboard" do
|
|
182
|
-
expect(gui).to receive(:clipboard=).with("test")
|
|
183
|
-
subject.clipboard = "test"
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
describe "quitting" do
|
|
188
|
-
it "#quit tells the GUI to quit" do
|
|
189
|
-
expect(gui).to receive :quit
|
|
190
|
-
subject.quit
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
it '#close tells the GUI to quit' do
|
|
194
|
-
expect(gui).to receive :quit
|
|
195
|
-
subject.close
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
describe "#started?" do
|
|
201
|
-
it "checks the window has been displayed or not" do
|
|
202
|
-
subject.started?
|
|
203
|
-
end
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
describe 'Execution context' do
|
|
207
|
-
it 'starts with self as the execution context' do
|
|
208
|
-
my_self = nil
|
|
209
|
-
app = Shoes.app do my_self = self end
|
|
210
|
-
my_self.should eq app
|
|
211
|
-
end
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
describe '#append' do
|
|
215
|
-
let(:input_blk) {Proc.new do append do para 'Hi' end end}
|
|
216
|
-
|
|
217
|
-
it 'understands append' do
|
|
218
|
-
subject.should respond_to :append
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
it 'should receive a call to what is called in the append block' do
|
|
222
|
-
Shoes::App.any_instance.should_receive :para
|
|
223
|
-
subject
|
|
224
|
-
end
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
describe '#resize' do
|
|
228
|
-
it 'understands resize' do
|
|
229
|
-
subject.should respond_to :resize
|
|
230
|
-
end
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
describe 'fullscreen' do
|
|
234
|
-
describe 'starting' do
|
|
235
|
-
let(:internal_app) { app.instance_variable_get(:@__app__) }
|
|
236
|
-
|
|
237
|
-
context 'with defaults' do
|
|
238
|
-
it 'does not start as fullscreen' do
|
|
239
|
-
expect(internal_app.start_as_fullscreen?).to be_false
|
|
240
|
-
end
|
|
241
|
-
end
|
|
242
|
-
|
|
243
|
-
describe 'with the fullscreen option' do
|
|
244
|
-
let(:opts) { {fullscreen: true} }
|
|
245
|
-
|
|
246
|
-
it 'starts as fullscreen ' do
|
|
247
|
-
expect(internal_app.start_as_fullscreen?).to be_true
|
|
248
|
-
end
|
|
249
|
-
end
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
it 'is not in fullscreen by default' do
|
|
253
|
-
expect(app).not_to be_fullscreen
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
it 'can be turned into fullscreen' do
|
|
257
|
-
app.fullscreen = true
|
|
258
|
-
expect(app).to be_fullscreen
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
describe 'going into fullscreen and back out again' do
|
|
262
|
-
let(:defaults) { Shoes::InternalApp::DEFAULT_OPTIONS }
|
|
263
|
-
|
|
264
|
-
before :each do
|
|
265
|
-
app.fullscreen = true
|
|
266
|
-
app.fullscreen = false
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
# Failing on Mac fullscreen doesnt seem to work see #397
|
|
270
|
-
it 'is not in fullscreen', :fails_on_osx => true do
|
|
271
|
-
expect(app).not_to be_fullscreen
|
|
272
|
-
end
|
|
273
|
-
|
|
274
|
-
# Failing on Mac fullscreen doesnt seem to work see #397
|
|
275
|
-
it 'has its original width', :fails_on_osx => true do
|
|
276
|
-
expect(app.width).to eq(defaults[:width])
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
# Failing on Mac fullscreen doesnt seem to work see #397
|
|
280
|
-
it 'has its original height', :fails_on_osx => true do
|
|
281
|
-
expect(app.height).to eq(defaults[:height])
|
|
282
|
-
end
|
|
283
|
-
end
|
|
284
|
-
end
|
|
285
|
-
|
|
286
|
-
describe '#add_child' do
|
|
287
|
-
let(:internal_app) { app.instance_variable_get(:@__app__) }
|
|
288
|
-
let(:child) {double 'child'}
|
|
289
|
-
|
|
290
|
-
it 'adds the child to the top_slot when there is one' do
|
|
291
|
-
top_slot_double = double 'top slot'
|
|
292
|
-
internal_app.stub(top_slot: top_slot_double)
|
|
293
|
-
expect(top_slot_double).to receive(:add_child).with(child)
|
|
294
|
-
internal_app.add_child child
|
|
295
|
-
end
|
|
296
|
-
|
|
297
|
-
it 'adds the child to the own contents when there is no top_slot' do
|
|
298
|
-
internal_app.stub top_slot: nil
|
|
299
|
-
internal_app.add_child child
|
|
300
|
-
internal_app.contents.should include child
|
|
301
|
-
end
|
|
302
|
-
end
|
|
303
|
-
|
|
304
|
-
describe '#clear' do
|
|
305
|
-
let(:input_blk) {Proc.new {para 'Hello'}}
|
|
306
|
-
let(:internal_app) {subject.instance_variable_get(:@__app__)}
|
|
307
|
-
|
|
308
|
-
it 'deletes everything (regression)' do
|
|
309
|
-
subject.clear
|
|
310
|
-
expect(internal_app.top_slot.contents).to be_empty
|
|
311
|
-
end
|
|
312
|
-
|
|
313
|
-
context 'clear in the initial input_block' do
|
|
314
|
-
let(:input_blk) {
|
|
315
|
-
Proc.new do
|
|
316
|
-
para 'Hello there'
|
|
317
|
-
clear do
|
|
318
|
-
para 'see you'
|
|
319
|
-
end
|
|
320
|
-
end
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
it 'does not raise an error calling clear on a top_slot that is nil' do
|
|
324
|
-
expect {subject}.not_to raise_error
|
|
325
|
-
end
|
|
326
|
-
end
|
|
327
|
-
|
|
328
|
-
end
|
|
329
|
-
|
|
330
|
-
describe "#gutter" do
|
|
331
|
-
context "when app has a scrollbar" do
|
|
332
|
-
let(:input_opts) { {width: 100, height: 100} }
|
|
333
|
-
let(:input_block) { Proc.new { para "Round peg, square hole" * 200 } }
|
|
334
|
-
|
|
335
|
-
it "has gutter of 16" do
|
|
336
|
-
expect(app.gutter).to eq(16)
|
|
337
|
-
end
|
|
338
|
-
end
|
|
339
|
-
|
|
340
|
-
context "when app has no scrollbar" do
|
|
341
|
-
let(:input_block) { Proc.new { para "Round peg, square hole" } }
|
|
342
|
-
|
|
343
|
-
it "has gutter of 16" do
|
|
344
|
-
expect(app.gutter).to eq(16)
|
|
345
|
-
end
|
|
346
|
-
end
|
|
347
|
-
end
|
|
348
|
-
|
|
349
|
-
describe 'DELEGATE_METHODS' do
|
|
350
|
-
subject {Shoes::App::DELEGATE_METHODS}
|
|
351
|
-
|
|
352
|
-
describe 'does not include general ruby object methods' do
|
|
353
|
-
it {should_not include :new, :initialize}
|
|
354
|
-
end
|
|
355
|
-
|
|
356
|
-
describe 'it has access to Shoes app and DSL methods' do
|
|
357
|
-
it {should include :para, :rect, :stack, :flow, :image, :location}
|
|
358
|
-
end
|
|
359
|
-
|
|
360
|
-
describe 'it does not have access to private methods' do
|
|
361
|
-
it {should_not include :pop_style, :style_normalizer, :create}
|
|
362
|
-
end
|
|
363
|
-
|
|
364
|
-
describe 'there are blacklisted methods which it should not include' do
|
|
365
|
-
it {should_not include :parent}
|
|
366
|
-
end
|
|
367
|
-
end
|
|
368
|
-
end
|
|
369
|
-
|
|
370
|
-
describe "App registry" do
|
|
371
|
-
subject { Shoes.apps }
|
|
372
|
-
|
|
373
|
-
before :each do
|
|
374
|
-
Shoes.unregister_all
|
|
375
|
-
end
|
|
376
|
-
|
|
377
|
-
it "only exposes a copy" do
|
|
378
|
-
subject << double("app")
|
|
379
|
-
Shoes.apps.length.should eq(0)
|
|
380
|
-
end
|
|
381
|
-
|
|
382
|
-
context "with no apps" do
|
|
383
|
-
it { should be_empty }
|
|
384
|
-
end
|
|
385
|
-
|
|
386
|
-
context "with one app" do
|
|
387
|
-
let(:app) { double('app') }
|
|
388
|
-
before :each do
|
|
389
|
-
Shoes.register(app)
|
|
390
|
-
end
|
|
391
|
-
|
|
392
|
-
its(:length) { should eq(1) }
|
|
393
|
-
it "marks first app as main app" do
|
|
394
|
-
Shoes.main_app.should be(app)
|
|
395
|
-
end
|
|
396
|
-
end
|
|
397
|
-
|
|
398
|
-
context "with two apps" do
|
|
399
|
-
let(:app_1) { double("app 1") }
|
|
400
|
-
let(:app_2) { double("app 2") }
|
|
401
|
-
|
|
402
|
-
before :each do
|
|
403
|
-
[app_1, app_2].each { |a| Shoes.register(a) }
|
|
404
|
-
end
|
|
405
|
-
|
|
406
|
-
its(:length) { should eq(2) }
|
|
407
|
-
it "marks first app as main app" do
|
|
408
|
-
Shoes.main_app.should be(app_1)
|
|
409
|
-
end
|
|
410
|
-
end
|
|
411
|
-
end
|