glimmer-dsl-swt 4.23.1.0 → 4.23.1.3
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.md +21 -1
 - data/README.md +5 -5
 - data/VERSION +1 -1
 - data/docs/reference/GLIMMER_GUI_DSL_SYNTAX.md +15 -13
 - data/docs/reference/GLIMMER_SAMPLES.md +7 -1
 - data/glimmer-dsl-swt.gemspec +0 -0
 - data/lib/glimmer/rake_task/scaffold.rb +18 -11
 - data/lib/glimmer/swt/custom/code_text.rb +13 -19
 - data/lib/glimmer/swt/shell_proxy.rb +2 -1
 - data/samples/elaborate/meta_sample/tutorials.yml +19 -0
 - data/samples/elaborate/meta_sample.rb +48 -34
 - data/samples/elaborate/weather.rb +3 -1
 - data/samples/hello/hello_menu_bar.rb +75 -0
 - data/samples/hello/hello_tree.rb +1 -1
 - metadata +3 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: c56f6eab2f22aaac950b9e566a79c94bdd0f39085de6e4e8221a76883e8a8f05
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 8af3b454dd1c3e921530f70b7771e2bd4261d16eb733c312e8e79eee29a8d420
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 9e602c4e3b8cba6ea17509be4b015a44e6e9587f2f57d569e24592b4162d168f00df1466b057027c399733c8960117b8742020efb8e6603ba34569aa42c3554e
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 491bbfbaa41427da7a172c5990b5579b1570314b4e20152e1e79937985def33c03367f4d4f27ca7f8b514c9fc19d8511c4b22f7f6a2cbbe26175ce15a027fa26
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,10 +1,30 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Change Log
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            ## 4.23.1.3
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            - Update initial tab folder width in Weather sample
         
     | 
| 
      
 6 
     | 
    
         
            +
            - Add Help menu to scaffolded apps/gems with About menu item that used to be in the scaffolded File menu
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Fix names of icons generated for custom shell gems to get them picked up by the `glimmer package` command
         
     | 
| 
      
 8 
     | 
    
         
            +
            - Fix issue with shell not packing layout correctly on initial open (might be caused by the latest version of SWT under certain scenarios)
         
     | 
| 
      
 9 
     | 
    
         
            +
            - Fix setting of Display app_name and app_version in scaffolded apps and custom shells
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ## 4.23.1.2
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            - Add Hello, Pop Up Context Menu! video tutorial to Glimmer Meta-Sample
         
     | 
| 
      
 14 
     | 
    
         
            +
            - Add Hello, Menu Bar! video tutorial to Glimmer Meta-Sample
         
     | 
| 
      
 15 
     | 
    
         
            +
            - Add Language & Country menus to Hello, Menu Bar!
         
     | 
| 
      
 16 
     | 
    
         
            +
            - Fix "Last Name" label in Hello, Tree! (was a duplicate "First Name" by mistake)
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            ## 4.23.1.1
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            - Switch order of buttons in Glimmer Meta-Sample to put Tutorial first
         
     | 
| 
      
 21 
     | 
    
         
            +
            - Make Glimmer Meta-Sample pull list of tutorials from GitHub to avoid needing to update gem when adding new tutorials
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       3 
23 
     | 
    
         
             
            ## 4.23.1.0
         
     | 
| 
       4 
24 
     | 
    
         | 
| 
       5 
25 
     | 
    
         
             
            - Upgrade to JRuby 9.3.4.0
         
     | 
| 
       6 
26 
     | 
    
         
             
            - Upgrade to glimmer 2.7.3
         
     | 
| 
       7 
     | 
    
         
            -
            - Add "Tutorial" button to  
     | 
| 
      
 27 
     | 
    
         
            +
            - Add "Tutorial" button to Glimmer Meta-Sample to show Youtube Video Tutorial
         
     | 
| 
       8 
28 
     | 
    
         | 
| 
       9 
29 
     | 
    
         
             
            ## 4.23.0.1
         
     | 
| 
       10 
30 
     | 
    
         | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for SWT 4.23.1. 
     | 
| 
      
 1 
     | 
    
         
            +
            # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for SWT 4.23.1.3
         
     | 
| 
       2 
2 
     | 
    
         
             
            ## JRuby Desktop Development GUI Framework
         
     | 
| 
       3 
3 
     | 
    
         
             
            [](http://badge.fury.io/rb/glimmer-dsl-swt)
         
     | 
| 
       4 
4 
     | 
    
         
             
            [](https://travis-ci.com/github/AndyObtiva/glimmer-dsl-swt)
         
     | 
| 
         @@ -19,7 +19,7 @@ Featured in JRuby Cookbook](http://shop.oreilly.com/product/9780596519650.do) an 
     | 
|
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
            
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
            [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) 4.23.1. 
     | 
| 
      
 22 
     | 
    
         
            +
            [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) 4.23.1.3 includes [SWT 4.23](https://download.eclipse.org/eclipse/downloads/drops4/R-4.23-202203080310/), which was released on March 8, 2022. Gem version numbers are in sync with the SWT library versions. The first two digits represent the SWT version number. The last two digits represent the minor and patch versions of Glimmer DSL for SWT.
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            **Starting in version 4.20.0.0, [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) comes with the new [***Shine***](/docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#shine) syntax** for highly intuitive and visually expressive View/Model Attribute Mapping, relying on `<=>` for bidirectional (two-way) data-binding and `<=` for unidirectional (one-way) data-binding, providing an alternative to the `bind` keyword.
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
         @@ -333,7 +333,7 @@ jgem install glimmer-dsl-swt 
     | 
|
| 
       333 
333 
     | 
    
         | 
| 
       334 
334 
     | 
    
         
             
            Or this command if you want a specific version:
         
     | 
| 
       335 
335 
     | 
    
         
             
            ```
         
     | 
| 
       336 
     | 
    
         
            -
            jgem install glimmer-dsl-swt -v 4.23.1. 
     | 
| 
      
 336 
     | 
    
         
            +
            jgem install glimmer-dsl-swt -v 4.23.1.3
         
     | 
| 
       337 
337 
     | 
    
         
             
            ```
         
     | 
| 
       338 
338 
     | 
    
         | 
| 
       339 
339 
     | 
    
         
             
            `jgem` is JRuby's version of `gem` command.
         
     | 
| 
         @@ -361,7 +361,7 @@ Note: if you're using activerecord or activesupport, keep in mind that Glimmer u 
     | 
|
| 
       361 
361 
     | 
    
         | 
| 
       362 
362 
     | 
    
         
             
            Add the following to `Gemfile`:
         
     | 
| 
       363 
363 
     | 
    
         
             
            ```
         
     | 
| 
       364 
     | 
    
         
            -
            gem 'glimmer-dsl-swt', '~> 4.23.1. 
     | 
| 
      
 364 
     | 
    
         
            +
            gem 'glimmer-dsl-swt', '~> 4.23.1.3'
         
     | 
| 
       365 
365 
     | 
    
         
             
            ```
         
     | 
| 
       366 
366 
     | 
    
         | 
| 
       367 
367 
     | 
    
         
             
            And, then run:
         
     | 
| 
         @@ -384,7 +384,7 @@ glimmer 
     | 
|
| 
       384 
384 
     | 
    
         
             
            ```
         
     | 
| 
       385 
385 
     | 
    
         | 
| 
       386 
386 
     | 
    
         
             
            ```
         
     | 
| 
       387 
     | 
    
         
            -
            Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.23.1. 
     | 
| 
      
 387 
     | 
    
         
            +
            Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.23.1.3
         
     | 
| 
       388 
388 
     | 
    
         | 
| 
       389 
389 
     | 
    
         
             
            Usage: glimmer [--bundler] [--pd] [--quiet] [--debug] [--log-level=VALUE] [[ENV_VAR=VALUE]...] [[-jruby-option]...] (application.rb or task[task_args]) [[application2.rb]...]
         
     | 
| 
       390 
390 
     | 
    
         | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            4.23.1. 
     | 
| 
      
 1 
     | 
    
         
            +
            4.23.1.3
         
     | 
| 
         @@ -938,12 +938,10 @@ shell { 
     | 
|
| 
       938 
938 
     | 
    
         | 
| 
       939 
939 
     | 
    
         
             
            The system tray allows showing icons for various apps that need to stay on for extended periods of time and provide quick access.
         
     | 
| 
       940 
940 
     | 
    
         | 
| 
       941 
     | 
    
         
            -
            In Glimmer DSL for SWT, generating tray items is automated via the `tray_item` keyword, which can be nested under `shell` and then have a child `menu` underneath that pops up when the user clicks on its icon in the system tray.
         
     | 
| 
      
 941 
     | 
    
         
            +
            In Glimmer DSL for SWT, generating tray items is automated via the `tray_item` keyword, which can be nested under `shell` and then have a child `menu` underneath that pops up when the user clicks on its icon in the system tray. It is recommended that the related shell is declared with the `:on_top` style (in addition to the default style `:shell_trim`) to ensure it opens above all apps when shown.
         
     | 
| 
       942 
942 
     | 
    
         | 
| 
       943 
943 
     | 
    
         
             
            Note that if you would like to display notifications, you can use the [Nebula Notifier custom widget](https://github.com/AndyObtiva/glimmer-cw-nebula#notifier). Alternatively, you can look into the [Two Slices](https://github.com/sshtools/two-slices) Java library.
         
     | 
| 
       944 
944 
     | 
    
         | 
| 
       945 
     | 
    
         
            -
            Note how the shell was declared with the `:on_top` style (in addition to the default, which is `:shell_trim`) to ensure it opens above all apps when the "Show Application" menu item is selected.
         
     | 
| 
       946 
     | 
    
         
            -
             
     | 
| 
       947 
945 
     | 
    
         
             
            Example code:
         
     | 
| 
       948 
946 
     | 
    
         | 
| 
       949 
947 
     | 
    
         
             
            ```ruby
         
     | 
| 
         @@ -1044,6 +1042,10 @@ It can be customized with the `weights` attribute by setting initial weights to 
     | 
|
| 
       1044 
1042 
     | 
    
         | 
| 
       1045 
1043 
     | 
    
         
             
            One noteworthy thing about the Glimmer implementation is that, unlike behavior in SWT, it allows declaring `weights` before the content of the `sash_form`, thus providing more natural and convenient syntax (Glimmer automatically takes care of sending that declaration to SWT at the end of declaring `sash_form` content as per the SWT requirements)
         
     | 
| 
       1046 
1044 
     | 
    
         | 
| 
      
 1045 
     | 
    
         
            +
            You can customize the color of the sash by setting the `background` attribute.
         
     | 
| 
      
 1046 
     | 
    
         
            +
             
     | 
| 
      
 1047 
     | 
    
         
            +
            Also, you can customize the `sash_width` (`Integer`) and `orientation` properties (`swt(:horizontal)` or `swt(:vertical)`).
         
     | 
| 
      
 1048 
     | 
    
         
            +
             
     | 
| 
       1047 
1049 
     | 
    
         
             
            Example (you may copy/paste in [`girb`](GLIMMER_GIRB.md)):
         
     | 
| 
       1048 
1050 
     | 
    
         | 
| 
       1049 
1051 
     | 
    
         
             
            ```ruby
         
     | 
| 
         @@ -3606,7 +3608,7 @@ Learn more at the [Hello, Tree!](/docs/reference/GLIMMER_SAMPLES.md#hello-tree) 
     | 
|
| 
       3606 
3608 
     | 
    
         | 
| 
       3607 
3609 
     | 
    
         
             
            #### DateTime
         
     | 
| 
       3608 
3610 
     | 
    
         | 
| 
       3609 
     | 
    
         
            -
            `date_time` represents the SWT DateTime widget.
         
     | 
| 
      
 3611 
     | 
    
         
            +
            `date_time` represents the SWT [DateTime](https://help.eclipse.org/latest/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/DateTime.html) widget.
         
     | 
| 
       3610 
3612 
     | 
    
         | 
| 
       3611 
3613 
     | 
    
         
             
            Glimmer s the following alias keywords for it for convenience:
         
     | 
| 
       3612 
3614 
     | 
    
         
             
            - `date`: `date_time(:date)`
         
     | 
| 
         @@ -3615,15 +3617,15 @@ Glimmer s the following alias keywords for it for convenience: 
     | 
|
| 
       3615 
3617 
     | 
    
         
             
            - `calendar`: `date_time(:calendar)`
         
     | 
| 
       3616 
3618 
     | 
    
         | 
| 
       3617 
3619 
     | 
    
         
             
            You can data-bind any of these properties:
         
     | 
| 
       3618 
     | 
    
         
            -
            - `date_time  
     | 
| 
       3619 
     | 
    
         
            -
            - `date  
     | 
| 
       3620 
     | 
    
         
            -
            - `time  
     | 
| 
       3621 
     | 
    
         
            -
            - `year  
     | 
| 
       3622 
     | 
    
         
            -
            - `month  
     | 
| 
       3623 
     | 
    
         
            -
            - `day  
     | 
| 
       3624 
     | 
    
         
            -
            - `hours  
     | 
| 
       3625 
     | 
    
         
            -
            - `minutes  
     | 
| 
       3626 
     | 
    
         
            -
            - `seconds  
     | 
| 
      
 3620 
     | 
    
         
            +
            - `date_time <=> [model, :property]`: produces a Ruby DateTime object
         
     | 
| 
      
 3621 
     | 
    
         
            +
            - `date <=> [model, :property]`: produces a Ruby Date object
         
     | 
| 
      
 3622 
     | 
    
         
            +
            - `time <=> [model, :property]`: produces a Ruby Time object
         
     | 
| 
      
 3623 
     | 
    
         
            +
            - `year <=> [model, :property]`: produces an integer
         
     | 
| 
      
 3624 
     | 
    
         
            +
            - `month <=> [model, :property]`: produces an integer
         
     | 
| 
      
 3625 
     | 
    
         
            +
            - `day <=> [model, :property]`: produces an integer
         
     | 
| 
      
 3626 
     | 
    
         
            +
            - `hours <=> [model, :property]`: produces an integer
         
     | 
| 
      
 3627 
     | 
    
         
            +
            - `minutes <=> [model, :property]`: produces an integer
         
     | 
| 
      
 3628 
     | 
    
         
            +
            - `seconds <=> [model, :property]`: produces an integer
         
     | 
| 
       3627 
3629 
     | 
    
         | 
| 
       3628 
3630 
     | 
    
         
             
            Learn more at the [Hello, Date Time!](/docs/reference/GLIMMER_SAMPLES.md#hello-date-time) sample.
         
     | 
| 
       3629 
3631 
     | 
    
         | 
| 
         @@ -682,7 +682,7 @@ Hello, Print! 
     | 
|
| 
       682 
682 
     | 
    
         | 
| 
       683 
683 
     | 
    
         
             
            #### Hello, Date Time!
         
     | 
| 
       684 
684 
     | 
    
         | 
| 
       685 
     | 
    
         
            -
            This sample demonstrates the use of [date_time](#datetime) widget keywords in Glimmer: `date`, `date_drop_down`, `time`, and `calendar`
         
     | 
| 
      
 685 
     | 
    
         
            +
            This sample demonstrates the use of [date_time](/docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#datetime) widget keywords in Glimmer: `date`, `date_drop_down`, `time`, and `calendar`
         
     | 
| 
       686 
686 
     | 
    
         | 
| 
       687 
687 
     | 
    
         
             
            Code:
         
     | 
| 
       688 
688 
     | 
    
         | 
| 
         @@ -1429,6 +1429,12 @@ Gladiator is a good demonstration of: 
     | 
|
| 
       1429 
1429 
     | 
    
         | 
| 
       1430 
1430 
     | 
    
         
             
            [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer-cs-timer/master/glimmer-timer-screenshot.png" />](https://github.com/AndyObtiva/glimmer-cs-timer)
         
     | 
| 
       1431 
1431 
     | 
    
         | 
| 
      
 1432 
     | 
    
         
            +
            #### Contact Manager
         
     | 
| 
      
 1433 
     | 
    
         
            +
             
     | 
| 
      
 1434 
     | 
    
         
            +
            [<img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/icons/linux/Contact%20Manager.png" height=40 /> Contact Manager](https://github.com/AndyObtiva/contact_manager) is an enhanced version of the included Contact Manager elaborate sample, which demonstrates how to connect to a [SQLite database](https://www.sqlite.org/index.html) with [ActiveRecord](https://rubygems.org/gems/activerecord).
         
     | 
| 
      
 1435 
     | 
    
         
            +
             
     | 
| 
      
 1436 
     | 
    
         
            +
            [<img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/screenshots/contact-manager.png" /> ](https://github.com/AndyObtiva/contact_manager)
         
     | 
| 
      
 1437 
     | 
    
         
            +
             
     | 
| 
       1432 
1438 
     | 
    
         
             
            ## License
         
     | 
| 
       1433 
1439 
     | 
    
         | 
| 
       1434 
1440 
     | 
    
         
             
            [MIT](LICENSE.txt)
         
     | 
    
        data/glimmer-dsl-swt.gemspec
    CHANGED
    
    | 
         Binary file 
     | 
| 
         @@ -280,17 +280,17 @@ module Glimmer 
     | 
|
| 
       280 
280 
     | 
    
         
             
                      write 'spec/spec_helper.rb', spec_helper_file
         
     | 
| 
       281 
281 
     | 
    
         | 
| 
       282 
282 
     | 
    
         
             
                      mkdir_p 'icons/windows'
         
     | 
| 
       283 
     | 
    
         
            -
                      icon_file = "icons/windows/#{human_name( 
     | 
| 
      
 283 
     | 
    
         
            +
                      icon_file = "icons/windows/#{human_name(gem_name)}.ico"
         
     | 
| 
       284 
284 
     | 
    
         
             
                      cp File.expand_path('../../../../icons/scaffold_app.ico', __FILE__), icon_file
         
     | 
| 
       285 
285 
     | 
    
         
             
                      puts "Created #{current_dir_name}/#{icon_file}"
         
     | 
| 
       286 
286 
     | 
    
         | 
| 
       287 
287 
     | 
    
         
             
                      mkdir_p 'icons/macosx'
         
     | 
| 
       288 
     | 
    
         
            -
                      icon_file = "icons/macosx/#{human_name( 
     | 
| 
      
 288 
     | 
    
         
            +
                      icon_file = "icons/macosx/#{human_name(gem_name)}.icns"
         
     | 
| 
       289 
289 
     | 
    
         
             
                      cp File.expand_path('../../../../icons/scaffold_app.icns', __FILE__), icon_file
         
     | 
| 
       290 
290 
     | 
    
         
             
                      puts "Created #{current_dir_name}/#{icon_file}"
         
     | 
| 
       291 
291 
     | 
    
         | 
| 
       292 
292 
     | 
    
         
             
                      mkdir_p 'icons/linux'
         
     | 
| 
       293 
     | 
    
         
            -
                      icon_file = "icons/linux/#{human_name( 
     | 
| 
      
 293 
     | 
    
         
            +
                      icon_file = "icons/linux/#{human_name(gem_name)}.png"
         
     | 
| 
       294 
294 
     | 
    
         
             
                      cp File.expand_path('../../../../icons/scaffold_app.png', __FILE__), icon_file
         
     | 
| 
       295 
295 
     | 
    
         
             
                      puts "Created #{current_dir_name}/#{icon_file}"
         
     | 
| 
       296 
296 
     | 
    
         | 
| 
         @@ -445,9 +445,13 @@ module Glimmer 
     | 
|
| 
       445 
445 
     | 
    
         
             
                        end
         
     | 
| 
       446 
446 
     | 
    
         | 
| 
       447 
447 
     | 
    
         
             
                        class #{class_name(app_name)}
         
     | 
| 
      
 448 
     | 
    
         
            +
                          include Glimmer
         
     | 
| 
      
 449 
     | 
    
         
            +
                          
         
     | 
| 
       448 
450 
     | 
    
         
             
                          APP_ROOT = File.expand_path('../..', __FILE__)
         
     | 
| 
       449 
451 
     | 
    
         
             
                          VERSION = File.read(File.join(APP_ROOT, 'VERSION'))
         
     | 
| 
       450 
452 
     | 
    
         
             
                          LICENSE = File.read(File.join(APP_ROOT, 'LICENSE.txt'))
         
     | 
| 
      
 453 
     | 
    
         
            +
                          Display.app_name = '#{human_name(app_name)}'
         
     | 
| 
      
 454 
     | 
    
         
            +
                          Display.app_version = VERSION
         
     | 
| 
       451 
455 
     | 
    
         
             
                        end
         
     | 
| 
       452 
456 
     | 
    
         | 
| 
       453 
457 
     | 
    
         
             
                        require '#{file_name(app_name)}/view/app_view'
         
     | 
| 
         @@ -574,6 +578,8 @@ module Glimmer 
     | 
|
| 
       574 
578 
     | 
    
         
             
                  APP_ROOT = File.expand_path('../../../..', __FILE__)
         
     | 
| 
       575 
579 
     | 
    
         
             
                  VERSION = File.read(File.join(APP_ROOT, 'VERSION'))
         
     | 
| 
       576 
580 
     | 
    
         
             
                  LICENSE = File.read(File.join(APP_ROOT, 'LICENSE.txt'))
         
     | 
| 
      
 581 
     | 
    
         
            +
                  Display.app_name = '#{human_name(custom_shell_name)}'
         
     | 
| 
      
 582 
     | 
    
         
            +
                  Display.app_version = VERSION
         
     | 
| 
       577 
583 
     | 
    
         | 
| 
       578 
584 
     | 
    
         
             
                        MULTI_LINE_STRING
         
     | 
| 
       579 
585 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -594,8 +600,6 @@ module Glimmer 
     | 
|
| 
       594 
600 
     | 
    
         
             
                      if %i[gem app desktopify].include?(shell_type)
         
     | 
| 
       595 
601 
     | 
    
         
             
                        custom_shell_file_content += <<-MULTI_LINE_STRING
         
     | 
| 
       596 
602 
     | 
    
         
             
                  before_body do
         
     | 
| 
       597 
     | 
    
         
            -
                    Display.app_name = '#{shell_type == :gem ? human_name(custom_shell_name) : human_name(namespace)}'
         
     | 
| 
       598 
     | 
    
         
            -
                    Display.app_version = VERSION
         
     | 
| 
       599 
603 
     | 
    
         
             
                    @display = display {
         
     | 
| 
       600 
604 
     | 
    
         
             
                      on_about do
         
     | 
| 
       601 
605 
     | 
    
         
             
                        display_about_dialog
         
     | 
| 
         @@ -630,8 +634,8 @@ module Glimmer 
     | 
|
| 
       630 
634 
     | 
    
         
             
                    shell#{'(:fill_screen)' if shell_type == :desktopify} {
         
     | 
| 
       631 
635 
     | 
    
         
             
                      # Replace example content below with custom shell content
         
     | 
| 
       632 
636 
     | 
    
         
             
                      minimum_size #{shell_type == :desktopify ? '768, 432' : '420, 240'}
         
     | 
| 
       633 
     | 
    
         
            -
                      image File.join(APP_ROOT, 'icons', 'windows', "#{human_name( 
     | 
| 
       634 
     | 
    
         
            -
                      image File.join(APP_ROOT, 'icons', 'linux', "#{human_name( 
     | 
| 
      
 637 
     | 
    
         
            +
                      image File.join(APP_ROOT, 'icons', 'windows', "#{human_name(current_dir_name)}.ico") if OS.windows?
         
     | 
| 
      
 638 
     | 
    
         
            +
                      image File.join(APP_ROOT, 'icons', 'linux', "#{human_name(current_dir_name)}.png") unless OS.windows?
         
     | 
| 
       635 
639 
     | 
    
         
             
                      text "#{human_name(namespace)}#{' - ' + human_name(custom_shell_name) if shell_type != :desktopify}"
         
     | 
| 
       636 
640 
     | 
    
         | 
| 
       637 
641 
     | 
    
         
             
                      MULTI_LINE_STRING
         
     | 
| 
         @@ -661,18 +665,21 @@ module Glimmer 
     | 
|
| 
       661 
665 
     | 
    
         
             
                          text '&File'
         
     | 
| 
       662 
666 
     | 
    
         | 
| 
       663 
667 
     | 
    
         
             
                          menu_item {
         
     | 
| 
       664 
     | 
    
         
            -
                            text '& 
     | 
| 
      
 668 
     | 
    
         
            +
                            text '&Preferences...'
         
     | 
| 
       665 
669 
     | 
    
         | 
| 
       666 
670 
     | 
    
         
             
                            on_widget_selected do
         
     | 
| 
       667 
     | 
    
         
            -
                              display_about_dialog
         
     | 
| 
      
 671 
     | 
    
         
            +
                              #{shell_type == :desktopify ? 'display_about_dialog' : 'display_preferences_dialog'}
         
     | 
| 
       668 
672 
     | 
    
         
             
                            end
         
     | 
| 
       669 
673 
     | 
    
         
             
                          }
         
     | 
| 
      
 674 
     | 
    
         
            +
                        }
         
     | 
| 
      
 675 
     | 
    
         
            +
                        menu {
         
     | 
| 
      
 676 
     | 
    
         
            +
                          text '&Help'
         
     | 
| 
       670 
677 
     | 
    
         | 
| 
       671 
678 
     | 
    
         
             
                          menu_item {
         
     | 
| 
       672 
     | 
    
         
            -
                            text '& 
     | 
| 
      
 679 
     | 
    
         
            +
                            text '&About...'
         
     | 
| 
       673 
680 
     | 
    
         | 
| 
       674 
681 
     | 
    
         
             
                            on_widget_selected do
         
     | 
| 
       675 
     | 
    
         
            -
                               
     | 
| 
      
 682 
     | 
    
         
            +
                              display_about_dialog
         
     | 
| 
       676 
683 
     | 
    
         
             
                            end
         
     | 
| 
       677 
684 
     | 
    
         
             
                          }
         
     | 
| 
       678 
685 
     | 
    
         
             
                        }
         
     | 
| 
         @@ -146,17 +146,11 @@ module Glimmer 
     | 
|
| 
       146 
146 
     | 
    
         
             
                          @line_numbers_styled_text_proxy = styled_text(swt(swt(swt_style), :h_scroll!, :v_scroll!)) {
         
     | 
| 
       147 
147 
     | 
    
         
             
                            layout_data(:right, :fill, false, true)
         
     | 
| 
       148 
148 
     | 
    
         | 
| 
       149 
     | 
    
         
            -
                            text  
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
     | 
    
         
            -
             
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
       154 
     | 
    
         
            -
                              },
         
     | 
| 
       155 
     | 
    
         
            -
                              after_read: lambda {
         
     | 
| 
       156 
     | 
    
         
            -
                                @line_numbers_styled_text_proxy&.top_pixel = styled_text_proxy_top_pixel unless styled_text_proxy_top_pixel.nil?
         
     | 
| 
       157 
     | 
    
         
            -
                              }
         
     | 
| 
       158 
     | 
    
         
            -
                            )
         
     | 
| 
       159 
     | 
    
         
            -
                            top_pixel bind(self, :styled_text_proxy_top_pixel, read_only: true)
         
     | 
| 
      
 149 
     | 
    
         
            +
                            text <= [self, :styled_text_proxy_text,
         
     | 
| 
      
 150 
     | 
    
         
            +
                                      on_read: lambda { |text_value| line_numbers_text_from(text_value) },
         
     | 
| 
      
 151 
     | 
    
         
            +
                                      after_read: lambda { @line_numbers_styled_text_proxy&.top_pixel = styled_text_proxy_top_pixel unless styled_text_proxy_top_pixel.nil? }
         
     | 
| 
      
 152 
     | 
    
         
            +
                                    ]
         
     | 
| 
      
 153 
     | 
    
         
            +
                            top_pixel <= [self, :styled_text_proxy_top_pixel]
         
     | 
| 
       160 
154 
     | 
    
         
             
                            font name: @font_name, height: OS.mac? ? 15 : 12
         
     | 
| 
       161 
155 
     | 
    
         
             
                            background color(:widget_background)
         
     | 
| 
       162 
156 
     | 
    
         
             
                            foreground :dark_blue
         
     | 
| 
         @@ -190,8 +184,8 @@ module Glimmer 
     | 
|
| 
       190 
184 
     | 
    
         
             
            #             custom_widget_property_owner # TODO implement to route properties here without declaring method_missing
         
     | 
| 
       191 
185 
     | 
    
         
             
                        layout_data :fill, :fill, true, true if lines
         
     | 
| 
       192 
186 
     | 
    
         | 
| 
       193 
     | 
    
         
            -
                        text  
     | 
| 
       194 
     | 
    
         
            -
                        top_pixel  
     | 
| 
      
 187 
     | 
    
         
            +
                        text <=> [self, :styled_text_proxy_text] if lines
         
     | 
| 
      
 188 
     | 
    
         
            +
                        top_pixel <=> [self, :styled_text_proxy_top_pixel] if lines
         
     | 
| 
       195 
189 
     | 
    
         
             
                        font name: @font_name, height: OS.mac? ? 15 : 12
         
     | 
| 
       196 
190 
     | 
    
         
             
                        foreground rgb(75, 75, 75)
         
     | 
| 
       197 
191 
     | 
    
         
             
                        left_margin 5
         
     | 
| 
         @@ -223,10 +217,10 @@ module Glimmer 
     | 
|
| 
       223 
217 
     | 
    
         
             
                          }
         
     | 
| 
       224 
218 
     | 
    
         
             
                        end
         
     | 
| 
       225 
219 
     | 
    
         | 
| 
       226 
     | 
    
         
            -
                        on_modify_text  
     | 
| 
      
 220 
     | 
    
         
            +
                        on_modify_text do |event|
         
     | 
| 
       227 
221 
     | 
    
         
             
                          # clear unnecessary syntax highlighting cache on text updates, and do it async to avoid affecting performance
         
     | 
| 
       228 
222 
     | 
    
         
             
                          new_text = event.data
         
     | 
| 
       229 
     | 
    
         
            -
                          async_exec  
     | 
| 
      
 223 
     | 
    
         
            +
                          async_exec do
         
     | 
| 
       230 
224 
     | 
    
         
             
                            unless @syntax_highlighting.nil?
         
     | 
| 
       231 
225 
     | 
    
         
             
                              lines = new_text.to_s.split("\n")
         
     | 
| 
       232 
226 
     | 
    
         
             
                              line_diff = @syntax_highlighting.keys - lines
         
     | 
| 
         @@ -234,10 +228,10 @@ module Glimmer 
     | 
|
| 
       234 
228 
     | 
    
         
             
                                @syntax_highlighting.delete(line)
         
     | 
| 
       235 
229 
     | 
    
         
             
                              end
         
     | 
| 
       236 
230 
     | 
    
         
             
                            end
         
     | 
| 
       237 
     | 
    
         
            -
                           
     | 
| 
       238 
     | 
    
         
            -
                         
     | 
| 
      
 231 
     | 
    
         
            +
                          end
         
     | 
| 
      
 232 
     | 
    
         
            +
                        end
         
     | 
| 
       239 
233 
     | 
    
         | 
| 
       240 
     | 
    
         
            -
                        on_line_get_style  
     | 
| 
      
 234 
     | 
    
         
            +
                        on_line_get_style do |line_style_event|
         
     | 
| 
       241 
235 
     | 
    
         
             
                          begin
         
     | 
| 
       242 
236 
     | 
    
         
             
                            styles = []
         
     | 
| 
       243 
237 
     | 
    
         
             
                            style_data = nil
         
     | 
| 
         @@ -259,7 +253,7 @@ module Glimmer 
     | 
|
| 
       259 
253 
     | 
    
         
             
                            Glimmer::Config.logger.error {e.message}
         
     | 
| 
       260 
254 
     | 
    
         
             
                            Glimmer::Config.logger.error {e.full_message}
         
     | 
| 
       261 
255 
     | 
    
         
             
                          end
         
     | 
| 
       262 
     | 
    
         
            -
                         
     | 
| 
      
 256 
     | 
    
         
            +
                        end
         
     | 
| 
       263 
257 
     | 
    
         
             
                      }
         
     | 
| 
       264 
258 
     | 
    
         
             
                    end
         
     | 
| 
       265 
259 
     | 
    
         | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            Hello, World!: Mi5phsSdNAA
         
     | 
| 
      
 3 
     | 
    
         
            +
            Hello, Message Box!: N0sDcr0xp40
         
     | 
| 
      
 4 
     | 
    
         
            +
            Hello, Tab!: cMwlYZ78uaQ
         
     | 
| 
      
 5 
     | 
    
         
            +
            Hello, Layout!: dAVFR9Y_thY
         
     | 
| 
      
 6 
     | 
    
         
            +
            Hello, File Dialog!: HwZRgdvKIDo
         
     | 
| 
      
 7 
     | 
    
         
            +
            Hello, Label!: i1PFHr-F8fQ
         
     | 
| 
      
 8 
     | 
    
         
            +
            Hello, Text!: pOaYB43G2pg
         
     | 
| 
      
 9 
     | 
    
         
            +
            Login: C_vSvXH9ISw
         
     | 
| 
      
 10 
     | 
    
         
            +
            Hello, Canvas Shape Listeners!: PV13YE-43M4
         
     | 
| 
      
 11 
     | 
    
         
            +
            Hello, Styled Text!: ahs54DPmmso
         
     | 
| 
      
 12 
     | 
    
         
            +
            Hello, Code Text!: y0rNzMURnHY
         
     | 
| 
      
 13 
     | 
    
         
            +
            Hello, Tree!: M-ZOFyzbEKo
         
     | 
| 
      
 14 
     | 
    
         
            +
            Hello, Table!: 3zyyXq7WJwc
         
     | 
| 
      
 15 
     | 
    
         
            +
            Hello, Pop Up Context Menu!: kupwWSZdsQE
         
     | 
| 
      
 16 
     | 
    
         
            +
            Hello, Menu Bar!: 3RRVFIfA_UM
         
     | 
| 
      
 17 
     | 
    
         
            +
            Weather: rC6x6aj1MdA
         
     | 
| 
      
 18 
     | 
    
         
            +
            Hello, Date Time!: MpXbPEMUrns
         
     | 
| 
      
 19 
     | 
    
         
            +
            Hello, Sash Form!: F7j2TTpbX6s
         
     | 
| 
         @@ -21,8 +21,15 @@ 
     | 
|
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
            require 'glimmer-dsl-swt'
         
     | 
| 
       23 
23 
     | 
    
         
             
            require 'fileutils'
         
     | 
| 
      
 24 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
      
 25 
     | 
    
         
            +
            require 'net/http'
         
     | 
| 
       24 
26 
     | 
    
         | 
| 
       25 
27 
     | 
    
         
             
            class Sample
         
     | 
| 
      
 28 
     | 
    
         
            +
              UNEDITABLE = ['meta_sample.rb'] + (OS.windows? ? ['calculator.rb', 'weather.rb'] : [])  # Windows StyledText does not support unicode characters found in certain samples
         
     | 
| 
      
 29 
     | 
    
         
            +
              URL_TUTORIALS = 'https://raw.githubusercontent.com/AndyObtiva/glimmer-dsl-swt/master/samples/elaborate/meta_sample/tutorials.yml'
         
     | 
| 
      
 30 
     | 
    
         
            +
              FILE_TUTORIALS = File.expand_path(File.join('meta_sample', 'tutorials.yml'), __dir__)
         
     | 
| 
      
 31 
     | 
    
         
            +
              TUTORIALS = YAML.load_file(FILE_TUTORIALS)
         
     | 
| 
      
 32 
     | 
    
         
            +
              
         
     | 
| 
       26 
33 
     | 
    
         
             
              class << self
         
     | 
| 
       27 
34 
     | 
    
         
             
                def glimmer_directory
         
     | 
| 
       28 
35 
     | 
    
         
             
                  File.expand_path('../../..', __FILE__)
         
     | 
| 
         @@ -39,28 +46,35 @@ class Sample 
     | 
|
| 
       39 
46 
     | 
    
         
             
                    @ensured_glimmer_directory = true
         
     | 
| 
       40 
47 
     | 
    
         
             
                  end
         
     | 
| 
       41 
48 
     | 
    
         
             
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
                
         
     | 
| 
      
 50 
     | 
    
         
            +
                def tutorials
         
     | 
| 
      
 51 
     | 
    
         
            +
                  if remote_tutorials && !remote_tutorials.empty? && remote_tutorials != local_tutorials
         
     | 
| 
      
 52 
     | 
    
         
            +
                    remote_tutorials
         
     | 
| 
      
 53 
     | 
    
         
            +
                  else
         
     | 
| 
      
 54 
     | 
    
         
            +
                    local_tutorials
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
                
         
     | 
| 
      
 58 
     | 
    
         
            +
                def remote_tutorials
         
     | 
| 
      
 59 
     | 
    
         
            +
                  if @remote_tutorials.nil?
         
     | 
| 
      
 60 
     | 
    
         
            +
                    remote_tutorials_response = Net::HTTP.get_response(URI(URL_TUTORIALS))
         
     | 
| 
      
 61 
     | 
    
         
            +
                    raise "Error downloading remote tutorial list from #{URL_TUTORIALS} (defaulting to local list): HTTP status #{remote_tutorials_response.code} #{remote_tutorials_response.message}!" unless remote_tutorials_response.code.to_i.between?(200, 299)
         
     | 
| 
      
 62 
     | 
    
         
            +
                    remote_tutorials_yaml = remote_tutorials_response.body
         
     | 
| 
      
 63 
     | 
    
         
            +
                    @remote_tutorials = YAML.load(remote_tutorials_yaml)
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
                  @remote_tutorials
         
     | 
| 
      
 66 
     | 
    
         
            +
                rescue => e
         
     | 
| 
      
 67 
     | 
    
         
            +
                  Glimmer::Config.logger.error e.full_message
         
     | 
| 
      
 68 
     | 
    
         
            +
                  nil
         
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
                
         
     | 
| 
      
 71 
     | 
    
         
            +
                def local_tutorials
         
     | 
| 
      
 72 
     | 
    
         
            +
                  TUTORIALS
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
       42 
74 
     | 
    
         
             
              end
         
     | 
| 
       43 
75 
     | 
    
         | 
| 
       44 
76 
     | 
    
         
             
              include Glimmer::DataBinding::ObservableModel
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
              UNEDITABLE = ['meta_sample.rb'] + (OS.windows? ? ['calculator.rb', 'weather.rb'] : [])  # Windows StyledText does not support unicode characters found in certain samples
         
     | 
| 
       47 
     | 
    
         
            -
              
         
     | 
| 
       48 
     | 
    
         
            -
              TEACHABLE = {
         
     | 
| 
       49 
     | 
    
         
            -
                'Hello, World!'                  => 'Mi5phsSdNAA',
         
     | 
| 
       50 
     | 
    
         
            -
                'Hello, Message Box!'            => 'N0sDcr0xp40',
         
     | 
| 
       51 
     | 
    
         
            -
                'Hello, Tab!'                    => 'cMwlYZ78uaQ',
         
     | 
| 
       52 
     | 
    
         
            -
                'Hello, Layout!'                 => 'dAVFR9Y_thY',
         
     | 
| 
       53 
     | 
    
         
            -
                'Hello, File Dialog!'            => 'HwZRgdvKIDo',
         
     | 
| 
       54 
     | 
    
         
            -
                'Hello, Label!'                  => 'i1PFHr-F8fQ',
         
     | 
| 
       55 
     | 
    
         
            -
                'Hello, Text!'                   => 'pOaYB43G2pg',
         
     | 
| 
       56 
     | 
    
         
            -
                'Login'                          => 'C_vSvXH9ISw',
         
     | 
| 
       57 
     | 
    
         
            -
                'Hello, Canvas Shape Listeners!' => 'PV13YE-43M4',
         
     | 
| 
       58 
     | 
    
         
            -
                'Hello, Styled Text!'            => 'ahs54DPmmso',
         
     | 
| 
       59 
     | 
    
         
            -
                'Hello, Code Text!'              => 'y0rNzMURnHY',
         
     | 
| 
       60 
     | 
    
         
            -
                'Hello, Tree!'                   => 'M-ZOFyzbEKo',
         
     | 
| 
       61 
     | 
    
         
            -
                'Hello, Table!'                  => '3zyyXq7WJwc',
         
     | 
| 
       62 
     | 
    
         
            -
              }
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
      
 77 
     | 
    
         
            +
                
         
     | 
| 
       64 
78 
     | 
    
         
             
              attr_accessor :sample_directory, :file, :selected
         
     | 
| 
       65 
79 
     | 
    
         | 
| 
       66 
80 
     | 
    
         
             
              def initialize(file, sample_directory: )
         
     | 
| 
         @@ -105,7 +119,7 @@ class Sample 
     | 
|
| 
       105 
119 
     | 
    
         
             
              end
         
     | 
| 
       106 
120 
     | 
    
         | 
| 
       107 
121 
     | 
    
         
             
              def tutorial
         
     | 
| 
       108 
     | 
    
         
            -
                 
     | 
| 
      
 122 
     | 
    
         
            +
                Sample.tutorials[name]
         
     | 
| 
       109 
123 
     | 
    
         
             
              end
         
     | 
| 
       110 
124 
     | 
    
         | 
| 
       111 
125 
     | 
    
         
             
              def file_relative_path
         
     | 
| 
         @@ -273,20 +287,6 @@ class MetaSampleApplication 
     | 
|
| 
       273 
287 
     | 
    
         
             
                          height_hint 96
         
     | 
| 
       274 
288 
     | 
    
         
             
                        }
         
     | 
| 
       275 
289 
     | 
    
         | 
| 
       276 
     | 
    
         
            -
                        button {
         
     | 
| 
       277 
     | 
    
         
            -
                          text 'Launch'
         
     | 
| 
       278 
     | 
    
         
            -
                          font height: 25
         
     | 
| 
       279 
     | 
    
         
            -
                          enabled <= [SampleDirectory, 'selected_sample.launchable']
         
     | 
| 
       280 
     | 
    
         
            -
                          
         
     | 
| 
       281 
     | 
    
         
            -
                          on_widget_selected do
         
     | 
| 
       282 
     | 
    
         
            -
                            begin
         
     | 
| 
       283 
     | 
    
         
            -
                              SampleDirectory.selected_sample.launch(@code_text.text)
         
     | 
| 
       284 
     | 
    
         
            -
                            rescue LoadError, StandardError, SyntaxError => launch_error
         
     | 
| 
       285 
     | 
    
         
            -
                              error_dialog(message: launch_error.full_message).open
         
     | 
| 
       286 
     | 
    
         
            -
                            end
         
     | 
| 
       287 
     | 
    
         
            -
                          end
         
     | 
| 
       288 
     | 
    
         
            -
                        }
         
     | 
| 
       289 
     | 
    
         
            -
                        
         
     | 
| 
       290 
290 
     | 
    
         
             
                        button {
         
     | 
| 
       291 
291 
     | 
    
         
             
                          text 'Tutorial'
         
     | 
| 
       292 
292 
     | 
    
         
             
                          font height: 25
         
     | 
| 
         @@ -303,6 +303,20 @@ class MetaSampleApplication 
     | 
|
| 
       303 
303 
     | 
    
         
             
                          end
         
     | 
| 
       304 
304 
     | 
    
         
             
                        }
         
     | 
| 
       305 
305 
     | 
    
         | 
| 
      
 306 
     | 
    
         
            +
                        button {
         
     | 
| 
      
 307 
     | 
    
         
            +
                          text 'Launch'
         
     | 
| 
      
 308 
     | 
    
         
            +
                          font height: 25
         
     | 
| 
      
 309 
     | 
    
         
            +
                          enabled <= [SampleDirectory, 'selected_sample.launchable']
         
     | 
| 
      
 310 
     | 
    
         
            +
                          
         
     | 
| 
      
 311 
     | 
    
         
            +
                          on_widget_selected do
         
     | 
| 
      
 312 
     | 
    
         
            +
                            begin
         
     | 
| 
      
 313 
     | 
    
         
            +
                              SampleDirectory.selected_sample.launch(@code_text.text)
         
     | 
| 
      
 314 
     | 
    
         
            +
                            rescue LoadError, StandardError, SyntaxError => launch_error
         
     | 
| 
      
 315 
     | 
    
         
            +
                              error_dialog(message: launch_error.full_message).open
         
     | 
| 
      
 316 
     | 
    
         
            +
                            end
         
     | 
| 
      
 317 
     | 
    
         
            +
                          end
         
     | 
| 
      
 318 
     | 
    
         
            +
                        }
         
     | 
| 
      
 319 
     | 
    
         
            +
                        
         
     | 
| 
       306 
320 
     | 
    
         
             
                        button {
         
     | 
| 
       307 
321 
     | 
    
         
             
                          text 'Reset'
         
     | 
| 
       308 
322 
     | 
    
         
             
                          font height: 25
         
     | 
| 
         @@ -41,6 +41,7 @@ shell { 
     | 
|
| 
       41 
41 
     | 
    
         
             
              menu_bar {
         
     | 
| 
       42 
42 
     | 
    
         
             
                menu {
         
     | 
| 
       43 
43 
     | 
    
         
             
                  text '&File'
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
       44 
45 
     | 
    
         
             
                  menu_item {
         
     | 
| 
       45 
46 
     | 
    
         
             
                    text '&New'
         
     | 
| 
       46 
47 
     | 
    
         
             
                    accelerator :command, :N
         
     | 
| 
         @@ -52,6 +53,7 @@ shell { 
     | 
|
| 
       52 
53 
     | 
    
         
             
                      }.open
         
     | 
| 
       53 
54 
     | 
    
         
             
                    end
         
     | 
| 
       54 
55 
     | 
    
         
             
                  }
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
       55 
57 
     | 
    
         
             
                  menu_item {
         
     | 
| 
       56 
58 
     | 
    
         
             
                    text '&Open...'
         
     | 
| 
       57 
59 
     | 
    
         
             
                    accelerator :command, :O
         
     | 
| 
         @@ -63,10 +65,13 @@ shell { 
     | 
|
| 
       63 
65 
     | 
    
         
             
                      }.open
         
     | 
| 
       64 
66 
     | 
    
         
             
                    end
         
     | 
| 
       65 
67 
     | 
    
         
             
                  }
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
       66 
69 
     | 
    
         
             
                  menu {
         
     | 
| 
       67 
70 
     | 
    
         
             
                    text 'Open &Recent'
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
       68 
72 
     | 
    
         
             
                    menu_item {
         
     | 
| 
       69 
73 
     | 
    
         
             
                      text 'File 1'
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
       70 
75 
     | 
    
         
             
                      on_widget_selected do
         
     | 
| 
       71 
76 
     | 
    
         
             
                        message_box {
         
     | 
| 
       72 
77 
     | 
    
         
             
                          text 'File 1'
         
     | 
| 
         @@ -74,8 +79,10 @@ shell { 
     | 
|
| 
       74 
79 
     | 
    
         
             
                        }.open
         
     | 
| 
       75 
80 
     | 
    
         
             
                      end
         
     | 
| 
       76 
81 
     | 
    
         
             
                    }
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
       77 
83 
     | 
    
         
             
                    menu_item {
         
     | 
| 
       78 
84 
     | 
    
         
             
                      text 'File 2'
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
       79 
86 
     | 
    
         
             
                      on_widget_selected do
         
     | 
| 
       80 
87 
     | 
    
         
             
                        message_box {
         
     | 
| 
       81 
88 
     | 
    
         
             
                          text 'File 2'
         
     | 
| 
         @@ -84,7 +91,9 @@ shell { 
     | 
|
| 
       84 
91 
     | 
    
         
             
                      end
         
     | 
| 
       85 
92 
     | 
    
         
             
                    }
         
     | 
| 
       86 
93 
     | 
    
         
             
                  }
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
       87 
95 
     | 
    
         
             
                  menu_item(:separator)
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
       88 
97 
     | 
    
         
             
                  menu_item {
         
     | 
| 
       89 
98 
     | 
    
         
             
                    text 'E&xit'
         
     | 
| 
       90 
99 
     | 
    
         | 
| 
         @@ -93,21 +102,26 @@ shell { 
     | 
|
| 
       93 
102 
     | 
    
         
             
                    end
         
     | 
| 
       94 
103 
     | 
    
         
             
                  }
         
     | 
| 
       95 
104 
     | 
    
         
             
                }
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
       96 
106 
     | 
    
         
             
                menu {
         
     | 
| 
       97 
107 
     | 
    
         
             
                  text '&Edit'
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
       98 
109 
     | 
    
         
             
                  menu_item {
         
     | 
| 
       99 
110 
     | 
    
         
             
                    text 'Cut'
         
     | 
| 
       100 
111 
     | 
    
         
             
                    accelerator :command, :X
         
     | 
| 
       101 
112 
     | 
    
         
             
                  }
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
       102 
114 
     | 
    
         
             
                  menu_item {
         
     | 
| 
       103 
115 
     | 
    
         
             
                    text 'Copy'
         
     | 
| 
       104 
116 
     | 
    
         
             
                    accelerator :command, :C
         
     | 
| 
       105 
117 
     | 
    
         
             
                  }
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
       106 
119 
     | 
    
         
             
                  menu_item {
         
     | 
| 
       107 
120 
     | 
    
         
             
                    text 'Paste'
         
     | 
| 
       108 
121 
     | 
    
         
             
                    accelerator :command, :V
         
     | 
| 
       109 
122 
     | 
    
         
             
                  }
         
     | 
| 
       110 
123 
     | 
    
         
             
                }
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
       111 
125 
     | 
    
         
             
                menu {
         
     | 
| 
       112 
126 
     | 
    
         
             
                  text '&Options'
         
     | 
| 
       113 
127 
     | 
    
         | 
| 
         @@ -119,6 +133,7 @@ shell { 
     | 
|
| 
       119 
133 
     | 
    
         
             
                      @select_multiple_menu.enabled = true
         
     | 
| 
       120 
134 
     | 
    
         
             
                    end
         
     | 
| 
       121 
135 
     | 
    
         
             
                  }
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
       122 
137 
     | 
    
         
             
                  @select_one_menu = menu {
         
     | 
| 
       123 
138 
     | 
    
         
             
                    text '&Select One'
         
     | 
| 
       124 
139 
     | 
    
         
             
                    enabled false
         
     | 
| 
         @@ -126,13 +141,16 @@ shell { 
     | 
|
| 
       126 
141 
     | 
    
         
             
                    menu_item(:radio) {
         
     | 
| 
       127 
142 
     | 
    
         
             
                      text 'Option 1'
         
     | 
| 
       128 
143 
     | 
    
         
             
                    }
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
       129 
145 
     | 
    
         
             
                    menu_item(:radio) {
         
     | 
| 
       130 
146 
     | 
    
         
             
                      text 'Option 2'
         
     | 
| 
       131 
147 
     | 
    
         
             
                    }
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
       132 
149 
     | 
    
         
             
                    menu_item(:radio) {
         
     | 
| 
       133 
150 
     | 
    
         
             
                      text 'Option 3'
         
     | 
| 
       134 
151 
     | 
    
         
             
                    }
         
     | 
| 
       135 
152 
     | 
    
         
             
                  }
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
       136 
154 
     | 
    
         
             
                  @select_multiple_menu = menu {
         
     | 
| 
       137 
155 
     | 
    
         
             
                    text '&Select Multiple'
         
     | 
| 
       138 
156 
     | 
    
         
             
                    enabled false
         
     | 
| 
         @@ -140,18 +158,64 @@ shell { 
     | 
|
| 
       140 
158 
     | 
    
         
             
                    menu_item(:check) {
         
     | 
| 
       141 
159 
     | 
    
         
             
                      text 'Option 4'
         
     | 
| 
       142 
160 
     | 
    
         
             
                    }
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
       143 
162 
     | 
    
         
             
                    menu_item(:check) {
         
     | 
| 
       144 
163 
     | 
    
         
             
                      text 'Option 5'
         
     | 
| 
       145 
164 
     | 
    
         
             
                    }
         
     | 
| 
      
 165 
     | 
    
         
            +
             
     | 
| 
       146 
166 
     | 
    
         
             
                    menu_item(:check) {
         
     | 
| 
       147 
167 
     | 
    
         
             
                      text 'Option 6'
         
     | 
| 
       148 
168 
     | 
    
         
             
                    }
         
     | 
| 
       149 
169 
     | 
    
         
             
                  }
         
     | 
| 
       150 
170 
     | 
    
         
             
                }
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
      
 172 
     | 
    
         
            +
                menu {
         
     | 
| 
      
 173 
     | 
    
         
            +
                  text '&Language'
         
     | 
| 
      
 174 
     | 
    
         
            +
             
     | 
| 
      
 175 
     | 
    
         
            +
                  ['denmark', 'finland', 'france', 'germany', 'italy', 'mexico', 'netherlands', 'norway', 'usa'].each do |image_name|
         
     | 
| 
      
 176 
     | 
    
         
            +
                    menu_item(:radio) { |a_menu_item|
         
     | 
| 
      
 177 
     | 
    
         
            +
                      image File.expand_path("images/#{image_name}.png", __dir__)
         
     | 
| 
      
 178 
     | 
    
         
            +
                      selection image_name == 'usa'
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
                      on_widget_selected do
         
     | 
| 
      
 181 
     | 
    
         
            +
                        if a_menu_item.selection
         
     | 
| 
      
 182 
     | 
    
         
            +
                          message_box {
         
     | 
| 
      
 183 
     | 
    
         
            +
                            text 'Language Selection'
         
     | 
| 
      
 184 
     | 
    
         
            +
                            message "You selected the language of #{image_name.capitalize}!"
         
     | 
| 
      
 185 
     | 
    
         
            +
                          }.open
         
     | 
| 
      
 186 
     | 
    
         
            +
                        end
         
     | 
| 
      
 187 
     | 
    
         
            +
                      end
         
     | 
| 
      
 188 
     | 
    
         
            +
                    }
         
     | 
| 
      
 189 
     | 
    
         
            +
                  end
         
     | 
| 
      
 190 
     | 
    
         
            +
                }
         
     | 
| 
      
 191 
     | 
    
         
            +
             
     | 
| 
      
 192 
     | 
    
         
            +
                menu {
         
     | 
| 
      
 193 
     | 
    
         
            +
                  text '&Country'
         
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
      
 195 
     | 
    
         
            +
                  ['denmark', 'finland', 'france', 'germany', 'italy', 'mexico', 'netherlands', 'norway', 'usa'].each do |image_name|
         
     | 
| 
      
 196 
     | 
    
         
            +
                    menu_item(:radio) { |a_menu_item|
         
     | 
| 
      
 197 
     | 
    
         
            +
                      text image_name.capitalize
         
     | 
| 
      
 198 
     | 
    
         
            +
                      image File.expand_path("images/#{image_name}.png", __dir__)
         
     | 
| 
      
 199 
     | 
    
         
            +
                      selection image_name == 'usa'
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
      
 201 
     | 
    
         
            +
                      on_widget_selected do
         
     | 
| 
      
 202 
     | 
    
         
            +
                        if a_menu_item.selection
         
     | 
| 
      
 203 
     | 
    
         
            +
                          message_box {
         
     | 
| 
      
 204 
     | 
    
         
            +
                            text 'Country Selection'
         
     | 
| 
      
 205 
     | 
    
         
            +
                            message "You selected the country of #{image_name.capitalize}!"
         
     | 
| 
      
 206 
     | 
    
         
            +
                          }.open
         
     | 
| 
      
 207 
     | 
    
         
            +
                        end
         
     | 
| 
      
 208 
     | 
    
         
            +
                      end
         
     | 
| 
      
 209 
     | 
    
         
            +
                    }
         
     | 
| 
      
 210 
     | 
    
         
            +
                  end
         
     | 
| 
      
 211 
     | 
    
         
            +
                }
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
       151 
213 
     | 
    
         
             
                menu {
         
     | 
| 
       152 
214 
     | 
    
         
             
                  text '&Format'
         
     | 
| 
      
 215 
     | 
    
         
            +
             
     | 
| 
       153 
216 
     | 
    
         
             
                  menu {
         
     | 
| 
       154 
217 
     | 
    
         
             
                    text '&Background Color'
         
     | 
| 
      
 218 
     | 
    
         
            +
             
     | 
| 
       155 
219 
     | 
    
         
             
                    COLORS.each { |color_style|
         
     | 
| 
       156 
220 
     | 
    
         
             
                      menu_item(:radio) {
         
     | 
| 
       157 
221 
     | 
    
         
             
                        text color_style.to_s.split('_').map(&:capitalize).join(' ')
         
     | 
| 
         @@ -162,8 +226,10 @@ shell { 
     | 
|
| 
       162 
226 
     | 
    
         
             
                      }
         
     | 
| 
       163 
227 
     | 
    
         
             
                    }
         
     | 
| 
       164 
228 
     | 
    
         
             
                  }
         
     | 
| 
      
 229 
     | 
    
         
            +
             
     | 
| 
       165 
230 
     | 
    
         
             
                  menu {
         
     | 
| 
       166 
231 
     | 
    
         
             
                    text 'Foreground &Color'
         
     | 
| 
      
 232 
     | 
    
         
            +
             
     | 
| 
       167 
233 
     | 
    
         
             
                    COLORS.each { |color_style|
         
     | 
| 
       168 
234 
     | 
    
         
             
                      menu_item(:radio) {
         
     | 
| 
       169 
235 
     | 
    
         
             
                        text color_style.to_s.split('_').map(&:capitalize).join(' ')
         
     | 
| 
         @@ -175,8 +241,10 @@ shell { 
     | 
|
| 
       175 
241 
     | 
    
         
             
                    }
         
     | 
| 
       176 
242 
     | 
    
         
             
                  }
         
     | 
| 
       177 
243 
     | 
    
         
             
                }
         
     | 
| 
      
 244 
     | 
    
         
            +
             
     | 
| 
       178 
245 
     | 
    
         
             
                menu {
         
     | 
| 
       179 
246 
     | 
    
         
             
                  text '&View'
         
     | 
| 
      
 247 
     | 
    
         
            +
             
     | 
| 
       180 
248 
     | 
    
         
             
                  menu_item(:radio) {
         
     | 
| 
       181 
249 
     | 
    
         
             
                    text 'Small'
         
     | 
| 
       182 
250 
     | 
    
         | 
| 
         @@ -185,6 +253,7 @@ shell { 
     | 
|
| 
       185 
253 
     | 
    
         
             
                      @label.parent.pack
         
     | 
| 
       186 
254 
     | 
    
         
             
                    end
         
     | 
| 
       187 
255 
     | 
    
         
             
                  }
         
     | 
| 
      
 256 
     | 
    
         
            +
             
     | 
| 
       188 
257 
     | 
    
         
             
                  menu_item(:radio) {
         
     | 
| 
       189 
258 
     | 
    
         
             
                    text 'Medium'
         
     | 
| 
       190 
259 
     | 
    
         
             
                    selection true
         
     | 
| 
         @@ -194,6 +263,7 @@ shell { 
     | 
|
| 
       194 
263 
     | 
    
         
             
                      @label.parent.pack
         
     | 
| 
       195 
264 
     | 
    
         
             
                    end
         
     | 
| 
       196 
265 
     | 
    
         
             
                  }
         
     | 
| 
      
 266 
     | 
    
         
            +
             
     | 
| 
       197 
267 
     | 
    
         
             
                  menu_item(:radio) {
         
     | 
| 
       198 
268 
     | 
    
         
             
                    text 'Large'
         
     | 
| 
       199 
269 
     | 
    
         | 
| 
         @@ -203,8 +273,10 @@ shell { 
     | 
|
| 
       203 
273 
     | 
    
         
             
                    end
         
     | 
| 
       204 
274 
     | 
    
         
             
                  }
         
     | 
| 
       205 
275 
     | 
    
         
             
                }
         
     | 
| 
      
 276 
     | 
    
         
            +
             
     | 
| 
       206 
277 
     | 
    
         
             
                menu {
         
     | 
| 
       207 
278 
     | 
    
         
             
                  text '&Help'
         
     | 
| 
      
 279 
     | 
    
         
            +
             
     | 
| 
       208 
280 
     | 
    
         
             
                  menu_item {
         
     | 
| 
       209 
281 
     | 
    
         
             
                    text '&Manual'
         
     | 
| 
       210 
282 
     | 
    
         
             
                    accelerator :command, :shift, :M
         
     | 
| 
         @@ -216,6 +288,7 @@ shell { 
     | 
|
| 
       216 
288 
     | 
    
         
             
                      }.open
         
     | 
| 
       217 
289 
     | 
    
         
             
                    end
         
     | 
| 
       218 
290 
     | 
    
         
             
                  }
         
     | 
| 
      
 291 
     | 
    
         
            +
             
     | 
| 
       219 
292 
     | 
    
         
             
                  menu_item {
         
     | 
| 
       220 
293 
     | 
    
         
             
                    text '&Tutorial'
         
     | 
| 
       221 
294 
     | 
    
         
             
                    accelerator :command, :shift, :T
         
     | 
| 
         @@ -227,7 +300,9 @@ shell { 
     | 
|
| 
       227 
300 
     | 
    
         
             
                      }.open
         
     | 
| 
       228 
301 
     | 
    
         
             
                    end
         
     | 
| 
       229 
302 
     | 
    
         
             
                  }
         
     | 
| 
      
 303 
     | 
    
         
            +
             
     | 
| 
       230 
304 
     | 
    
         
             
                  menu_item(:separator)
         
     | 
| 
      
 305 
     | 
    
         
            +
             
     | 
| 
       231 
306 
     | 
    
         
             
                  menu_item {
         
     | 
| 
       232 
307 
     | 
    
         
             
                    text '&Report an Issue...'
         
     | 
| 
       233 
308 
     | 
    
         | 
    
        data/samples/hello/hello_tree.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: glimmer-dsl-swt
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 4.23.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 4.23.1.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Andy Maleh
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2022- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2022-06-02 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -564,6 +564,7 @@ files: 
     | 
|
| 
       564 
564 
     | 
    
         
             
            - samples/elaborate/login.rb
         
     | 
| 
       565 
565 
     | 
    
         
             
            - samples/elaborate/mandelbrot_fractal.rb
         
     | 
| 
       566 
566 
     | 
    
         
             
            - samples/elaborate/meta_sample.rb
         
     | 
| 
      
 567 
     | 
    
         
            +
            - samples/elaborate/meta_sample/tutorials.yml
         
     | 
| 
       567 
568 
     | 
    
         
             
            - samples/elaborate/metronome.rb
         
     | 
| 
       568 
569 
     | 
    
         
             
            - samples/elaborate/parking.rb
         
     | 
| 
       569 
570 
     | 
    
         
             
            - samples/elaborate/parking/model/parking_floor.rb
         
     |