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,222 +0,0 @@
|
|
|
1
|
-
# syntax highlighting
|
|
2
|
-
|
|
3
|
-
require_relative 'common'
|
|
4
|
-
|
|
5
|
-
module HH::Markup
|
|
6
|
-
|
|
7
|
-
TOKENIZER = HH::Syntax.load "ruby"
|
|
8
|
-
COLORS = {
|
|
9
|
-
:comment => {:stroke => "#887"},
|
|
10
|
-
:keyword => {:stroke => "#111"},
|
|
11
|
-
:method => {:stroke => "#C09", :weight => "bold"},
|
|
12
|
-
# :class => {:stroke => "#0c4", :weight => "bold"},
|
|
13
|
-
# :module => {:stroke => "#050"},
|
|
14
|
-
# :punct => {:stroke => "#668", :weight => "bold"},
|
|
15
|
-
:symbol => {:stroke => "#C30"},
|
|
16
|
-
:string => {:stroke => "#C90"},
|
|
17
|
-
:number => {:stroke => "#396" },
|
|
18
|
-
:regex => {:stroke => "#000", :fill => "#FFC" },
|
|
19
|
-
# :char => {:stroke => "#f07"},
|
|
20
|
-
:attribute => {:stroke => "#369" },
|
|
21
|
-
# :global => {:stroke => "#7FB" },
|
|
22
|
-
:expr => {:stroke => "#722" },
|
|
23
|
-
# :escape => {:stroke => "#277" }
|
|
24
|
-
:ident => {:stroke => "#994c99"},
|
|
25
|
-
:constant => {:stroke => "#630", :weight => "bold"},
|
|
26
|
-
:class => {:stroke => "#630", :weight => "bold"},
|
|
27
|
-
:matching => {:stroke => "#ff0", :weight => "bold"},
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
def highlight str, pos=nil, colors=COLORS
|
|
32
|
-
tokens = []
|
|
33
|
-
TOKENIZER.tokenize(str) do |t|
|
|
34
|
-
if t.group == :punct
|
|
35
|
-
# split punctuation into single characters tokens
|
|
36
|
-
# TODO: to it in the parser
|
|
37
|
-
tokens += t.split('').map{|s| HH::Syntax::Token.new(s, :punct)}
|
|
38
|
-
else
|
|
39
|
-
# add token as is
|
|
40
|
-
tokens << t
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
res = []
|
|
45
|
-
tokens.each do |token|
|
|
46
|
-
res <<
|
|
47
|
-
if colors[token.group]
|
|
48
|
-
#span(token, colors[token.group])
|
|
49
|
-
tmp = fg(token, colors[token.group][:stroke])
|
|
50
|
-
colors[token.group][:fill] ? bg(tmp, colors[token.group][:fill]) : tmp
|
|
51
|
-
elsif colors[:any]
|
|
52
|
-
#span(token, colors[:any])
|
|
53
|
-
tmp = fg(token, colors[:any][:stroke])
|
|
54
|
-
colors[:any][:fill] ? bg(tmp, colors[:any][:fill]) : tmp
|
|
55
|
-
else
|
|
56
|
-
token
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
if pos.nil? or pos < 0
|
|
61
|
-
return res
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
token_index, matching_index = matching_token(tokens, pos)
|
|
65
|
-
|
|
66
|
-
if token_index
|
|
67
|
-
#res[token_index] = span(tokens[token_index], colors[:matching])
|
|
68
|
-
tmp = fg(tokens[token_index], colors[:matching][:stroke])
|
|
69
|
-
res[token_index] = colors[:matching][:fill] ? bg(tmp, colors[:matching][:fill]) : tmp
|
|
70
|
-
if matching_index
|
|
71
|
-
#res[matching_index] = span(tokens[matching_index], colors[:matching])
|
|
72
|
-
tmp = fg(tokens[matching_index], colors[:matching][:stroke])
|
|
73
|
-
res[matching_index] = colors[:matching][:fill] ? bg(tmp, colors[:matching][:fill]) : tmp
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
res
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
private
|
|
81
|
-
def matching_token(tokens, pos)
|
|
82
|
-
curr_pos = 0
|
|
83
|
-
token_index = nil
|
|
84
|
-
tokens.each_with_index do |t, i|
|
|
85
|
-
curr_pos += t.size
|
|
86
|
-
if token_index.nil? and curr_pos >= pos
|
|
87
|
-
token_index = i
|
|
88
|
-
break
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
if token_index.nil? then return nil end
|
|
92
|
-
|
|
93
|
-
match = matching_token_at_index(tokens, token_index);
|
|
94
|
-
if match.nil? and curr_pos == pos and token_index < tokens.size-1
|
|
95
|
-
# try the token before the cursor, instead of the one after
|
|
96
|
-
token_index += 1
|
|
97
|
-
match = matching_token_at_index(tokens, token_index)
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
if match
|
|
101
|
-
[token_index, match]
|
|
102
|
-
else
|
|
103
|
-
nil
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
def matching_token_at_index(tokens, index)
|
|
109
|
-
starts, ends, direction = matching_tokens(tokens, index)
|
|
110
|
-
if starts.nil?
|
|
111
|
-
return nil
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
stack_level = 1
|
|
115
|
-
index += direction
|
|
116
|
-
while index >= 0 and index < tokens.size
|
|
117
|
-
# TODO separate space in the tokenizer
|
|
118
|
-
t = tokens[index].gsub(/\s/, '')
|
|
119
|
-
if ends.include?(t) and not as_modifier?(tokens, index)
|
|
120
|
-
stack_level -= 1
|
|
121
|
-
return index if stack_level == 0
|
|
122
|
-
elsif starts.include?(t) and not as_modifier?(tokens, index)
|
|
123
|
-
stack_level += 1
|
|
124
|
-
end
|
|
125
|
-
index += direction
|
|
126
|
-
end
|
|
127
|
-
# no matching token found
|
|
128
|
-
return nil
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
# returns an array of tokens matching and the direction
|
|
132
|
-
def matching_tokens(tokens, index)
|
|
133
|
-
# TODO separate space in the tokenizer
|
|
134
|
-
token = tokens[index].gsub(/\s/, '')
|
|
135
|
-
starts = [token]
|
|
136
|
-
if OPEN_BRACKETS[token]
|
|
137
|
-
direction = 1
|
|
138
|
-
ends = [OPEN_BRACKETS[token]]
|
|
139
|
-
elsif CLOSE_BRACKETS[token]
|
|
140
|
-
direction = -1
|
|
141
|
-
ends = [CLOSE_BRACKETS[token]]
|
|
142
|
-
elsif OPEN_BLOCK.include?(token)
|
|
143
|
-
if as_modifier?(tokens, index)
|
|
144
|
-
return nil
|
|
145
|
-
end
|
|
146
|
-
direction = 1
|
|
147
|
-
ends = ['end']
|
|
148
|
-
starts = OPEN_BLOCK
|
|
149
|
-
elsif token == 'end'
|
|
150
|
-
direction = -1
|
|
151
|
-
ends = OPEN_BLOCK
|
|
152
|
-
else
|
|
153
|
-
return nil
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
[starts, ends, direction]
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
def as_modifier?(tokens, index)
|
|
160
|
-
|
|
161
|
-
if not MODIFIERS.include? tokens[index].gsub(/\s/, '')
|
|
162
|
-
return false
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
index -= 1
|
|
166
|
-
# find last index before the token that is no space
|
|
167
|
-
index -= 1 while index >= 0 and tokens[index] =~ /\A[ \t]*\z/
|
|
168
|
-
|
|
169
|
-
if index < 0
|
|
170
|
-
# first character of the string
|
|
171
|
-
false
|
|
172
|
-
elsif tokens[index] =~ /\n[ \t]*\Z/
|
|
173
|
-
# first token of the line
|
|
174
|
-
false
|
|
175
|
-
elsif tokens[index].group == :punct
|
|
176
|
-
# preceded by a punctuation token on the same line
|
|
177
|
-
i = tokens[index].rindex(/\S/)
|
|
178
|
-
punc = tokens[index][i, 1]
|
|
179
|
-
# true if the preceeding statement was terminating
|
|
180
|
-
not NON_TERMINATING.include?(punc)
|
|
181
|
-
else
|
|
182
|
-
# preceded by a non punctuation token on the same line
|
|
183
|
-
true
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
OPEN_BRACKETS = {
|
|
189
|
-
'{' => '}',
|
|
190
|
-
'(' => ')',
|
|
191
|
-
'[' => ']',
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
#close_bracket = {}
|
|
195
|
-
#OPEN_BRACKETS.each{|open, close| opens_bracket[close] = open}
|
|
196
|
-
#CLOSE_BRACKETS = opens_bracket
|
|
197
|
-
# the following is more readable :)
|
|
198
|
-
CLOSE_BRACKETS = {
|
|
199
|
-
'}' => '{',
|
|
200
|
-
')' => '(',
|
|
201
|
-
']' => '[',
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
BRACKETS = CLOSE_BRACKETS.keys + OPEN_BRACKETS.keys
|
|
205
|
-
|
|
206
|
-
OPEN_BLOCK = [
|
|
207
|
-
'def',
|
|
208
|
-
'class',
|
|
209
|
-
'module',
|
|
210
|
-
'do',
|
|
211
|
-
'if',
|
|
212
|
-
'unless',
|
|
213
|
-
'while',
|
|
214
|
-
'until',
|
|
215
|
-
'begin',
|
|
216
|
-
'for'
|
|
217
|
-
]
|
|
218
|
-
|
|
219
|
-
MODIFIERS = %w[if unless while until]
|
|
220
|
-
|
|
221
|
-
NON_TERMINATING = %w{+ - * / , . = ~ < > ( [}
|
|
222
|
-
end
|
data/lib/rubygems_plugin.rb
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
require 'rubygems'
|
|
2
|
-
require 'fileutils'
|
|
3
|
-
|
|
4
|
-
# See ext/install/Rakefile for why this cleanup is our responsibility.
|
|
5
|
-
# Decide if user uninstalled executables based on our actual Ruby script.
|
|
6
|
-
Gem.post_uninstall do |gem|
|
|
7
|
-
uninstalling_shoes = gem.spec.name == "shoes"
|
|
8
|
-
missing_executable = !File.exists?(File.join(Gem.bindir, "ruby-shoes")) &&
|
|
9
|
-
!File.exists?(File.join(Gem.bindir, "ruby-shoes.bat"))
|
|
10
|
-
|
|
11
|
-
if uninstalling_shoes && missing_executable
|
|
12
|
-
puts "Removing shoes"
|
|
13
|
-
if Gem.win_platform?
|
|
14
|
-
FileUtils.rm(File.join(Gem.bindir, "shoes.bat"))
|
|
15
|
-
else
|
|
16
|
-
FileUtils.rm(File.join(Gem.bindir, "shoes"))
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
data/lib/shoes/animation.rb
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
class Animation
|
|
3
|
-
|
|
4
|
-
# Creates a new Animation.
|
|
5
|
-
#
|
|
6
|
-
# @overload initialize(opts, &blk)
|
|
7
|
-
# @param [Hash] opts An options hash
|
|
8
|
-
# @param [Proc] blk A block of code to be executed for each
|
|
9
|
-
# animation frame
|
|
10
|
-
# @option opts [Integer] :framerate (24) The framerate (frames per second)
|
|
11
|
-
# @option opts [Shoes::App] :app The current Shoes app
|
|
12
|
-
def initialize(app, opts, blk)
|
|
13
|
-
@style = opts
|
|
14
|
-
@framerate = @style[:framerate] || 10
|
|
15
|
-
@app = app
|
|
16
|
-
@blk = blk
|
|
17
|
-
@current_frame = 0
|
|
18
|
-
@stopped = false
|
|
19
|
-
@gui = Shoes.configuration.backend_for(self, @app.gui)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
attr_reader :current_frame, :framerate, :blk
|
|
23
|
-
|
|
24
|
-
def start
|
|
25
|
-
@stopped = false
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def stop
|
|
29
|
-
@stopped = true
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def stopped?
|
|
33
|
-
@stopped
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def toggle
|
|
37
|
-
@stopped = !@stopped
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def remove
|
|
41
|
-
@removed = true
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def removed?
|
|
45
|
-
@removed
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Increments the current frame by 1
|
|
49
|
-
#
|
|
50
|
-
# @return [Integer] The new current frame
|
|
51
|
-
def increment_frame
|
|
52
|
-
@current_frame += 1
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
data/lib/shoes/app.rb
DELETED
|
@@ -1,320 +0,0 @@
|
|
|
1
|
-
class Shoes
|
|
2
|
-
shoes_icon = File.expand_path("../../../static/shoes-icon.png", __FILE__)
|
|
3
|
-
if shoes_icon.include? '.jar!'
|
|
4
|
-
SHOES_ICON = File.join(Dir.tmpdir, 'shoes-icon.png').freeze
|
|
5
|
-
open SHOES_ICON, 'wb' do |fw|
|
|
6
|
-
open shoes_icon, 'rb' do |fr|
|
|
7
|
-
fw.write fr.read
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
else
|
|
11
|
-
SHOES_ICON = shoes_icon.freeze
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# Instantiates a new Shoes app.
|
|
15
|
-
#
|
|
16
|
-
# @param opts [Hash] A hash of options used instantiate the Shoes::App object with.
|
|
17
|
-
# @param blk [Proc] The block containing the DSL instructions for the actual app.
|
|
18
|
-
#
|
|
19
|
-
# @example
|
|
20
|
-
# Shoes.app(title: "Chunky") do
|
|
21
|
-
# para "Bacon is awesome!"
|
|
22
|
-
# end
|
|
23
|
-
#
|
|
24
|
-
# @return A new instance of Shoes::App
|
|
25
|
-
#
|
|
26
|
-
# @see Shoes::App#initialize
|
|
27
|
-
|
|
28
|
-
def self.app(opts={}, &blk)
|
|
29
|
-
Shoes::App.new(opts, &blk)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
# This is the user-facing App object. It is `self` inside of a Shoes.app
|
|
34
|
-
# block, and is the context in which a Shoes app is evaled. It delegates most
|
|
35
|
-
# of its functionality to an InternalApp object, which interacts with other
|
|
36
|
-
# Shoes objects. There should be no unnecessary instance variables or methods
|
|
37
|
-
# in this class, so users are free to use whatever names they choose for
|
|
38
|
-
# their own code.
|
|
39
|
-
class App
|
|
40
|
-
include DSL
|
|
41
|
-
include BuiltinMethods
|
|
42
|
-
|
|
43
|
-
# Instantiates a new Shoes app.
|
|
44
|
-
#
|
|
45
|
-
# @param opts [Hash] The options to initialize the app with.
|
|
46
|
-
# @param blk [Proc] The block containing the DSL instructions to be executed within the app.
|
|
47
|
-
#
|
|
48
|
-
# @option opts [String] :title ("Shoes 4") The title of the window
|
|
49
|
-
# @option opts [Boolean] :resizable (true) Whether the window is resizable
|
|
50
|
-
# @option opts [Boolean] :fullscreen (false) Whether the app should start in fullscreen
|
|
51
|
-
# @option opts [Fixnum] :width (600) The width of the app window
|
|
52
|
-
# @option opts [Fixnum] :height (500) The height of the app window
|
|
53
|
-
#
|
|
54
|
-
# @see Dimension#initialize
|
|
55
|
-
|
|
56
|
-
def initialize(opts={}, &blk)
|
|
57
|
-
@__app__ = Shoes::InternalApp.new(self, opts, &blk)
|
|
58
|
-
@__app__.setup_gui
|
|
59
|
-
Shoes.register self
|
|
60
|
-
@__app__.open_gui
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# Shoes 3 exposes the app object like this, so we keep it for
|
|
64
|
-
# compatibility
|
|
65
|
-
def app
|
|
66
|
-
self
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def window(options={}, &block)
|
|
70
|
-
options.merge! owner: self
|
|
71
|
-
self.class.new(options, &block)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def close
|
|
75
|
-
quit
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def quit
|
|
79
|
-
Shoes.unregister self
|
|
80
|
-
@__app__.quit
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def to_s
|
|
84
|
-
'Shoes App: ' + @__app__.app_title
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
%w(
|
|
88
|
-
width height owner started? location left top absolute_left
|
|
89
|
-
absolute_top rotate click release clear fullscreen fullscreen=
|
|
90
|
-
contents
|
|
91
|
-
).each do |method|
|
|
92
|
-
define_method method do |*args, &block|
|
|
93
|
-
@__app__.public_send method, *args, &block
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
alias_method :fullscreen?, :fullscreen
|
|
98
|
-
|
|
99
|
-
# inspect normally recursively inspects the values of all instance
|
|
100
|
-
# variables... as the app has a reference to EVERYTHING this turns
|
|
101
|
-
# out to be quite a lot/so much that the app runs out of memory #504
|
|
102
|
-
def inspect
|
|
103
|
-
"#<#{self.class}:0x#{hash.to_s(16)} @__app__=So much stuff literally breaks the memory limit. Look at it selectively.>"
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
DELEGATE_BLACKLIST = [:parent]
|
|
107
|
-
|
|
108
|
-
# class definitions are evaluated top to bottom, want to have all of them
|
|
109
|
-
# so define at bottom
|
|
110
|
-
DELEGATE_METHODS = ((Shoes::App.public_instance_methods(false) +
|
|
111
|
-
Shoes::DSL.public_instance_methods) - DELEGATE_BLACKLIST).freeze
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
# This is the representation of the app that is used internally by Shoes
|
|
116
|
-
# objects. It is *NOT* the app object that a user interacts with in a
|
|
117
|
-
# Shoes.app block. The user facing App object is...the App object.
|
|
118
|
-
#
|
|
119
|
-
# The InternalApp object is responsible for maintaining the state of the App
|
|
120
|
-
# and providing the bulk of the functionality, leaving the App a relatively
|
|
121
|
-
# blank slate for users to bend to their will.
|
|
122
|
-
class InternalApp
|
|
123
|
-
include Common::Style
|
|
124
|
-
include Common::Clickable
|
|
125
|
-
include DimensionsDelegations
|
|
126
|
-
|
|
127
|
-
DEFAULT_OPTIONS = { :width => 600,
|
|
128
|
-
:height => 500,
|
|
129
|
-
:title => "Shoes 4",
|
|
130
|
-
:resizable => true,
|
|
131
|
-
:background => Shoes::COLORS.fetch(:shoes_background) }.freeze
|
|
132
|
-
|
|
133
|
-
def initialize(app, opts, &blk)
|
|
134
|
-
@app = app
|
|
135
|
-
@blk = blk
|
|
136
|
-
set_attributes_from_options(opts)
|
|
137
|
-
set_initial_attributes
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
def setup_gui
|
|
141
|
-
@gui = Shoes.configuration.backend::App.new self
|
|
142
|
-
|
|
143
|
-
execution_blk = create_execution_block(blk)
|
|
144
|
-
eval_block execution_blk
|
|
145
|
-
|
|
146
|
-
add_console
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
attr_reader :gui, :top_slot, :contents, :app, :dimensions,
|
|
150
|
-
:mouse_motion, :owner, :element_styles, :resize_callbacks
|
|
151
|
-
attr_accessor :elements, :current_slot, :opts, :blk, :mouse_button,
|
|
152
|
-
:mouse_pos, :mouse_hover_controls, :resizable, :app_title,
|
|
153
|
-
:width, :height, :start_as_fullscreen, :location
|
|
154
|
-
|
|
155
|
-
def clear(&blk)
|
|
156
|
-
top_slot.clear &blk
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
def width
|
|
160
|
-
started? ? gui.width : @dimensions.width
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
def height
|
|
164
|
-
started? ? gui.height : @dimensions.height
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
def font(path = Shoes::DEFAULT_TEXTBLOCK_FONT)
|
|
168
|
-
app.font path
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
def started?
|
|
172
|
-
gui && gui.started?
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
def rotate angle=nil
|
|
176
|
-
@rotate = angle || @rotate || 0
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
def add_child(child)
|
|
180
|
-
if top_slot
|
|
181
|
-
top_slot.add_child child
|
|
182
|
-
else
|
|
183
|
-
contents << child
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
def default_styles
|
|
188
|
-
{
|
|
189
|
-
:stroke => Shoes::COLORS[:black],
|
|
190
|
-
:strokewidth => 1
|
|
191
|
-
}
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
def in_bounds?(x, y)
|
|
195
|
-
true
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
def fullscreen=(state)
|
|
199
|
-
gui.fullscreen = state
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
def fullscreen
|
|
203
|
-
gui.fullscreen
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
alias_method :start_as_fullscreen?, :start_as_fullscreen
|
|
207
|
-
|
|
208
|
-
def add_mouse_hover_control(element)
|
|
209
|
-
unless mouse_hover_controls.include? element
|
|
210
|
-
mouse_hover_controls << element
|
|
211
|
-
end
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
def open_gui
|
|
215
|
-
gui.open
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
def quit
|
|
219
|
-
@gui.quit
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
def scroll_top
|
|
223
|
-
gui.scroll_top
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
def scroll_top=(n)
|
|
227
|
-
gui.scroll_top = n
|
|
228
|
-
end
|
|
229
|
-
|
|
230
|
-
def clipboard
|
|
231
|
-
gui.clipboard
|
|
232
|
-
end
|
|
233
|
-
|
|
234
|
-
def clipboard=(str)
|
|
235
|
-
gui.clipboard = str
|
|
236
|
-
end
|
|
237
|
-
|
|
238
|
-
def download(url, opts, &block)
|
|
239
|
-
app.download url, opts, &block
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
def textcursor(line_height)
|
|
243
|
-
app.line(0, 0, 0, line_height, hidden: true, strokewidth: 1, stroke: ::Shoes::COLORS[:black])
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
def execute_block(blk)
|
|
247
|
-
app.instance_eval &blk
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
def gutter
|
|
251
|
-
gui.gutter
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
def add_resize_callback(blk)
|
|
255
|
-
@resize_callbacks << blk
|
|
256
|
-
end
|
|
257
|
-
|
|
258
|
-
private
|
|
259
|
-
def eval_block(execution_blk)
|
|
260
|
-
# creating it first, then appending is important because that way
|
|
261
|
-
# top_slot already exists and methods may be called on it
|
|
262
|
-
@top_slot = Flow.new self, self, width: width, height: height
|
|
263
|
-
@top_slot.append &execution_blk
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
def create_execution_block(blk)
|
|
267
|
-
if blk
|
|
268
|
-
execution_blk = Proc.new do
|
|
269
|
-
execute_block blk
|
|
270
|
-
end
|
|
271
|
-
elsif Shoes::URL.urls.keys.any? { |page| page.match '/' }
|
|
272
|
-
execution_blk = Proc.new do
|
|
273
|
-
app.visit '/'
|
|
274
|
-
end
|
|
275
|
-
else
|
|
276
|
-
execution_blk = nil
|
|
277
|
-
end
|
|
278
|
-
execution_blk
|
|
279
|
-
end
|
|
280
|
-
|
|
281
|
-
def set_initial_attributes
|
|
282
|
-
@style = default_styles
|
|
283
|
-
@element_styles = {}
|
|
284
|
-
@contents = []
|
|
285
|
-
@mouse_motion = []
|
|
286
|
-
@mouse_button = 0
|
|
287
|
-
@mouse_pos = [0, 0]
|
|
288
|
-
@mouse_hover_controls = []
|
|
289
|
-
@resize_callbacks = []
|
|
290
|
-
@rotate = 0
|
|
291
|
-
end
|
|
292
|
-
|
|
293
|
-
def set_attributes_from_options(opts)
|
|
294
|
-
opts = DEFAULT_OPTIONS.merge(opts)
|
|
295
|
-
|
|
296
|
-
@app_title = opts[:title]
|
|
297
|
-
@resizable = opts[:resizable]
|
|
298
|
-
@start_as_fullscreen = opts[:fullscreen]
|
|
299
|
-
@opts = opts
|
|
300
|
-
@owner = opts[:owner]
|
|
301
|
-
@dimensions = AbsoluteDimensions.new opts
|
|
302
|
-
self.absolute_left = 0
|
|
303
|
-
self.absolute_top = 0
|
|
304
|
-
end
|
|
305
|
-
|
|
306
|
-
def add_console
|
|
307
|
-
console = Proc.new do
|
|
308
|
-
keypress do |key|
|
|
309
|
-
::Shoes::Logger.setup if key == :"alt_/"
|
|
310
|
-
end
|
|
311
|
-
end
|
|
312
|
-
@app.instance_eval &console
|
|
313
|
-
end
|
|
314
|
-
|
|
315
|
-
def inspect
|
|
316
|
-
"#<#{self.class}:0x#{hash.to_s(16)} @app_title=#{@app_title} @dimensions=#{@dimensions.inspect} and a lot of stuff that's too much too handle... and leads to OutOfMemoryErrors>"
|
|
317
|
-
end
|
|
318
|
-
|
|
319
|
-
end
|
|
320
|
-
end
|