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
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
module Swt
|
|
3
|
-
module Common
|
|
4
|
-
module PainterUpdatesPosition
|
|
5
|
-
# No-op. This object manages its own position with its own painter. The
|
|
6
|
-
# painter is triggered automatically in the event loop.
|
|
7
|
-
def update_position
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
module Swt
|
|
3
|
-
module Common
|
|
4
|
-
# Methods for retrieving stroke values from a Shoes DSL class
|
|
5
|
-
#
|
|
6
|
-
# @note Including classes must provide `#dsl`
|
|
7
|
-
module Stroke
|
|
8
|
-
# This object's stroke color
|
|
9
|
-
#
|
|
10
|
-
# @return [Swt::Graphics::Color] The Swt representation of this object's stroke color
|
|
11
|
-
def stroke
|
|
12
|
-
dsl.stroke ? ::Shoes.configuration.backend_for(dsl.stroke) : nil
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# This object's stroke alpha value
|
|
16
|
-
#
|
|
17
|
-
# @return [Integer] The alpha value of this object's stroke color (0-255)
|
|
18
|
-
def stroke_alpha
|
|
19
|
-
dsl.stroke.alpha if dsl.stroke
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# This object's strokewidth
|
|
23
|
-
#
|
|
24
|
-
# @return [Integer] This object's strokewidth
|
|
25
|
-
def strokewidth
|
|
26
|
-
dsl.strokewidth
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def apply_stroke(context)
|
|
31
|
-
if stroke
|
|
32
|
-
l, t = self.is_a?(Star) ? [element_left - element_width/2.0, element_top - element_height/2.0] : [element_left, element_top]
|
|
33
|
-
stroke.apply_as_stroke(context, l, t, element_width, element_height, angle)
|
|
34
|
-
context.set_line_width strokewidth
|
|
35
|
-
true
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
module Swt
|
|
3
|
-
module Common
|
|
4
|
-
module UpdatePosition
|
|
5
|
-
# Updates the position of this object. This object does not have its
|
|
6
|
-
# own painter, so we need to update the position manually.
|
|
7
|
-
def update_position
|
|
8
|
-
unless @real.disposed?
|
|
9
|
-
@real.set_location dsl.element_left, dsl.element_top
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
data/lib/shoes/swt/dialog.rb
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
module Swt
|
|
3
|
-
class Dialog
|
|
4
|
-
SWT = ::Swt::SWT
|
|
5
|
-
ALERT_STYLE = SWT::OK | SWT::ICON_INFORMATION
|
|
6
|
-
CONFIRM_STYLE = SWT::YES | SWT::NO | SWT::ICON_QUESTION
|
|
7
|
-
|
|
8
|
-
def alert(msg = '')
|
|
9
|
-
open_message_box ALERT_STYLE, msg
|
|
10
|
-
nil
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def confirm(msg = '')
|
|
14
|
-
answer_id = open_message_box CONFIRM_STYLE, msg
|
|
15
|
-
confirmed? answer_id
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def dialog_chooser title, folder=false
|
|
19
|
-
style = ::Swt::SWT::OPEN
|
|
20
|
-
shell = ::Swt::Widgets::Shell.new Shoes.display
|
|
21
|
-
fd = folder ? ::Swt::Widgets::DirectoryDialog.new(shell, style) : ::Swt::Widgets::FileDialog.new(shell, style)
|
|
22
|
-
fd.setText title
|
|
23
|
-
fd.open
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def ask msg, args
|
|
27
|
-
Swt::AskDialog.new(::Swt::Widgets::Shell.new, msg, args).open
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def ask_color title
|
|
31
|
-
shell = ::Swt::Widgets::Shell.new Shoes.display
|
|
32
|
-
cd = ::Swt::Widgets::ColorDialog.new shell
|
|
33
|
-
cd.setText title
|
|
34
|
-
color = cd.open
|
|
35
|
-
color ? ::Shoes::Color.new(color.red, color.green, color.blue, ::Shoes::Color::OPAQUE) : ::Shoes::Color.new(0, 0, 0, ::Shoes::Color::OPAQUE)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
private
|
|
39
|
-
def open_message_box(style, msg)
|
|
40
|
-
shell = ::Swt::Widgets::Shell.new ::Swt.display
|
|
41
|
-
@message_box = ::Swt::Widgets::MessageBox.new shell, style
|
|
42
|
-
@message_box.message = msg.to_s
|
|
43
|
-
@message_box.open
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def confirmed?(answer_id)
|
|
47
|
-
answer_id == SWT::YES
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
class AskDialog < ::Swt::Widgets::Dialog
|
|
52
|
-
def initialize shell, msg, args
|
|
53
|
-
@shell, @msg, @args= shell, msg, args
|
|
54
|
-
super shell
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def open
|
|
58
|
-
display = getParent.getDisplay
|
|
59
|
-
icon = ::Swt::Graphics::Image.new display, File.join(::Shoes::DIR, 'static/shoes-icon.png')
|
|
60
|
-
@shell.setImage icon
|
|
61
|
-
@shell.setSize 300, 125
|
|
62
|
-
@shell.setText 'Shoes 4 asks:'
|
|
63
|
-
label = ::Swt::Widgets::Label.new @shell, ::Swt::SWT::NONE
|
|
64
|
-
label.setText @msg
|
|
65
|
-
label.setLocation 10, 10
|
|
66
|
-
label.pack
|
|
67
|
-
styles = @args[:secret] ? ::Swt::SWT::BORDER | ::Swt::SWT::SINGLE | ::Swt::SWT::PASSWORD : ::Swt::SWT::BORDER | ::Swt::SWT::SINGLE
|
|
68
|
-
text = ::Swt::Widgets::Text.new @shell, styles
|
|
69
|
-
text.setLocation 10, 30
|
|
70
|
-
text.setSize 270, 20
|
|
71
|
-
b = ::Swt::Widgets::Button.new @shell, ::Swt::SWT::NULL
|
|
72
|
-
b.setText 'OK'
|
|
73
|
-
b.setLocation 180, 55
|
|
74
|
-
b.pack
|
|
75
|
-
b.addSelectionListener{|e| @ret = text.getText; @shell.close}
|
|
76
|
-
b = ::Swt::Widgets::Button.new @shell, ::Swt::SWT::NULL
|
|
77
|
-
b.setText 'CANCEL'
|
|
78
|
-
b.setLocation 222, 55
|
|
79
|
-
b.pack
|
|
80
|
-
b.addSelectionListener{|e| @ret = nil; @shell.close}
|
|
81
|
-
@shell.open
|
|
82
|
-
while !@shell.isDisposed do
|
|
83
|
-
display.sleep unless display.readAndDispatch
|
|
84
|
-
end
|
|
85
|
-
@ret
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
module Swt
|
|
3
|
-
module DisposedProtection
|
|
4
|
-
def real
|
|
5
|
-
return NullObject.new(@real) if @real.disposed?
|
|
6
|
-
@real
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
class NullObject < BasicObject
|
|
10
|
-
def initialize(real)
|
|
11
|
-
@real = real
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def respond_to?(method)
|
|
15
|
-
@real.respond_to? method
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def method_missing(method, *args)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
data/lib/shoes/swt/download.rb
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
module Swt
|
|
3
|
-
class Download
|
|
4
|
-
|
|
5
|
-
attr_accessor :busy
|
|
6
|
-
def initialize(_dsl)
|
|
7
|
-
@busy = false
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
# This exists to guarantee the callback block for download completion
|
|
11
|
-
# executes on the main UI thread. Without it we get thread access errors.
|
|
12
|
-
def eval_block(blk, result)
|
|
13
|
-
::Swt.display.asyncExec do
|
|
14
|
-
blk.call result
|
|
15
|
-
@busy = false
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def busy?
|
|
20
|
-
@busy
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
module Swt
|
|
3
|
-
# Resources created here need to be disposed (see #dispose). Note that this
|
|
4
|
-
# applies to ::Swt::Font and ::Swt::TextLayout. ::Swt::TextStyle does not
|
|
5
|
-
# need to be disposed, because it is not backed by system resources.
|
|
6
|
-
#
|
|
7
|
-
# The instance factories and our own instances will track these resources
|
|
8
|
-
# and ensure that they get properly disposed when TextBlock or
|
|
9
|
-
# TextBlockFitter tell us we're done.
|
|
10
|
-
#
|
|
11
|
-
# These are only expected to be called when we're doing #contents_alignment
|
|
12
|
-
class FittedTextLayout
|
|
13
|
-
DEFAULT_SPACING = 4
|
|
14
|
-
|
|
15
|
-
attr_reader :layout, :element_left, :element_top
|
|
16
|
-
|
|
17
|
-
extend Forwardable
|
|
18
|
-
def_delegators :@layout, :get_bounds, :text, :text=,
|
|
19
|
-
:line_count, :line_metrics, :line_offsets
|
|
20
|
-
|
|
21
|
-
def initialize(dsl, text, width)
|
|
22
|
-
@dsl = dsl
|
|
23
|
-
@layout = ::Swt::TextLayout.new Shoes.display
|
|
24
|
-
@font_factory = TextFontFactory.new
|
|
25
|
-
@style_factory = TextStyleFactory.new
|
|
26
|
-
|
|
27
|
-
layout.text = text
|
|
28
|
-
style_from(font_styling, @dsl.opts)
|
|
29
|
-
shrink_layout_to(width) unless layout_fits_in?(width)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def dispose
|
|
33
|
-
@layout.dispose unless @layout.disposed?
|
|
34
|
-
@font_factory.dispose
|
|
35
|
-
@style_factory.dispose
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def position_at(element_left, element_top)
|
|
39
|
-
@element_left = element_left
|
|
40
|
-
@element_top = element_top
|
|
41
|
-
self
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def get_location(cursor, trailing=false)
|
|
45
|
-
@layout.get_location(cursor, trailing)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def style_from(default_text_styles, opts)
|
|
49
|
-
layout.justify = opts[:justify]
|
|
50
|
-
layout.spacing = (opts[:leading] || DEFAULT_SPACING)
|
|
51
|
-
layout.alignment = case opts[:align]
|
|
52
|
-
when 'center'; ::Swt::SWT::CENTER
|
|
53
|
-
when 'right'; ::Swt::SWT::RIGHT
|
|
54
|
-
else ::Swt::SWT::LEFT
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
set_style(TextStyleFactory.apply_styles(default_text_styles, opts))
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def set_style(styles, range=(0...text.length))
|
|
61
|
-
font = @font_factory.create_font(styles[:font_detail])
|
|
62
|
-
style = @style_factory.create_style(font, styles[:fg], styles[:bg], styles)
|
|
63
|
-
layout.set_style(style, range.min, range.max)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def font_styling
|
|
67
|
-
{
|
|
68
|
-
font_detail: {
|
|
69
|
-
name: @dsl.font,
|
|
70
|
-
size: @dsl.font_size,
|
|
71
|
-
styles:[::Swt::SWT::NORMAL]
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def shrink_layout_to(width)
|
|
77
|
-
layout.setWidth(width)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def layout_fits_in?(width)
|
|
81
|
-
layout.bounds.width <= width
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def draw(graphics_context)
|
|
85
|
-
layout.draw(graphics_context, element_left, element_top)
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# x,y in app coordinates, so translate for layout's element-local values
|
|
89
|
-
def in_bounds?(x, y)
|
|
90
|
-
layout.bounds.contains?(x - element_left, y - element_top)
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
module Swt
|
|
3
|
-
class FittedTextLayoutCollection
|
|
4
|
-
extend Forwardable
|
|
5
|
-
def_delegators :@layouts, :length
|
|
6
|
-
|
|
7
|
-
attr_reader :default_text_styles
|
|
8
|
-
|
|
9
|
-
def initialize(layouts, default_text_styles)
|
|
10
|
-
@layouts = layouts
|
|
11
|
-
@default_text_styles = default_text_styles
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def paint_control(dsl, graphic_context)
|
|
15
|
-
style_from(dsl.opts)
|
|
16
|
-
style_segment_ranges(dsl.text_styles)
|
|
17
|
-
create_links(dsl.text_styles)
|
|
18
|
-
draw(graphic_context)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def style_from(opts)
|
|
22
|
-
@layouts.each do |layout|
|
|
23
|
-
layout.style_from(default_text_styles, opts)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def draw(graphic_context)
|
|
28
|
-
@layouts.each do |layout|
|
|
29
|
-
layout.draw(graphic_context)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def style_segment_ranges(elements_by_range)
|
|
34
|
-
elements_by_range.each do |range, elements|
|
|
35
|
-
style = calculate_style(elements)
|
|
36
|
-
layout_ranges(range).each do |layout, inner_range|
|
|
37
|
-
layout.set_style(style, inner_range)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def calculate_style(elements)
|
|
43
|
-
elements.inject(default_text_styles) do |current_style, element|
|
|
44
|
-
if element.respond_to?(:opts)
|
|
45
|
-
TextStyleFactory.apply_styles(current_style, element.opts)
|
|
46
|
-
else
|
|
47
|
-
# Didn't know how to style from the element, so punt
|
|
48
|
-
current_style
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def create_links(elements_by_range)
|
|
54
|
-
elements_by_range.each do |range, elements|
|
|
55
|
-
elements.each do |element|
|
|
56
|
-
if supports_links?(element)
|
|
57
|
-
element.gui.create_links_in(layout_ranges(range))
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def supports_links?(element)
|
|
64
|
-
element.respond_to?(:gui) &&
|
|
65
|
-
element.gui &&
|
|
66
|
-
element.gui.respond_to?(:create_links_in)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
# If we've got segments that style us across different ranges, it might
|
|
70
|
-
# be in either, or both, of the layouts. This method figures out which
|
|
71
|
-
# layouts apply, and what the relative ranges within each layout to use.
|
|
72
|
-
def layout_ranges(text_range)
|
|
73
|
-
return [] unless @layouts.first # TODO WTF #636
|
|
74
|
-
first_text = @layouts.first.layout.text
|
|
75
|
-
slice = first_text[text_range]
|
|
76
|
-
|
|
77
|
-
if slice.nil? || slice.empty?
|
|
78
|
-
results_in_last_layout(text_range, first_text)
|
|
79
|
-
elsif slice.length < text_range.count
|
|
80
|
-
results_spanning_layouts(text_range, first_text, slice)
|
|
81
|
-
else
|
|
82
|
-
results_in_first_layout(text_range)
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def results_in_first_layout(text_range)
|
|
87
|
-
[[@layouts.first, text_range]]
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def results_spanning_layouts(text_range, first_text, slice)
|
|
91
|
-
result = []
|
|
92
|
-
result << [@layouts.first, (text_range.first..first_text.length)]
|
|
93
|
-
# If first == last, then requested range was longer than our one and
|
|
94
|
-
# only layout, so just stick with full range of the first layout.
|
|
95
|
-
if @layouts.first != @layouts.last
|
|
96
|
-
result << [@layouts.last, (0..text_range.count - slice.length - 1)]
|
|
97
|
-
end
|
|
98
|
-
result
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
def results_in_last_layout(text_range, first_text)
|
|
102
|
-
range_start = text_range.first - first_text.length
|
|
103
|
-
range_end = text_range.last - first_text.length
|
|
104
|
-
[[@layouts.last, (range_start..range_end)]]
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|