glimmer-dsl-libui 0.5.9 → 0.5.10
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 +5 -0
- data/README.md +126 -2
- data/VERSION +1 -1
- data/examples/shape_coloring.rb +93 -0
- data/glimmer-dsl-libui.gemspec +0 -0
- data/lib/glimmer/dsl/libui/listener_expression.rb +1 -1
- data/lib/glimmer/libui/shape.rb +10 -0
- 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: a21485d1722dad246e40058c46dc14b63103e93b1243db1c0ae49bc3b96f96ab
         | 
| 4 | 
            +
              data.tar.gz: 390bac7628f29d016bfac073d926011d5fd91d10e7c23a95cae8b59c0bb4a55f
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 43aa1f65c47353b9ce340ff18264edaf6d9e6c09ee700919e3661b56d2bc8db00f1b31dd365b0a62ae7e39323dc07ba247bb0d06da24f51b01e477ceefa99a34
         | 
| 7 | 
            +
              data.tar.gz: c58efb32bc59359ec84cc804eec113004191fa0031676f0af7224c91b8271fb4851939ea761ddbecbc9ca912065bd4616869c76c05c95306991e5e0c68c73bf3
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,10 @@ | |
| 1 1 | 
             
            # Change Log
         | 
| 2 2 |  | 
| 3 | 
            +
            ## 0.5.10
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            - Support nesting area mouse and keyboard listeners underneath shapes directly given the newly added support for the `include?(x, y)` method, which can be used to detect if a mouse or keyboard event fired for a specific shape
         | 
| 6 | 
            +
            - examples/shape_coloring.rb
         | 
| 7 | 
            +
             | 
| 3 8 | 
             
            ## 0.5.9
         | 
| 4 9 |  | 
| 5 10 | 
             
            - Upgrade to glimmer v2.7.3
         | 
    
        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 LibUI 0.5. | 
| 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 LibUI 0.5.10
         | 
| 2 2 | 
             
            ## Prerequisite-Free Ruby Desktop Development GUI Library
         | 
| 3 3 | 
             
            [](http://badge.fury.io/rb/glimmer-dsl-libui)
         | 
| 4 4 | 
             
            [](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
         | 
| @@ -428,6 +428,7 @@ DSL | Platforms | Native? | Vector Graphics? | Pros | Cons | Prereqs | |
| 428 428 | 
             
                  - [Tetris](#tetris)
         | 
| 429 429 | 
             
                  - [Tic Tac Toe](#tic-tac-toe)
         | 
| 430 430 | 
             
                  - [Timer](#timer)
         | 
| 431 | 
            +
                  - [Shape Coloring](#shape-coloring)
         | 
| 431 432 | 
             
              - [Applications](#applications)
         | 
| 432 433 | 
             
                - [Manga2PDF](#manga2pdf)
         | 
| 433 434 | 
             
                - [Befunge98 GUI](#befunge98-gui)
         | 
| @@ -578,7 +579,7 @@ gem install glimmer-dsl-libui | |
| 578 579 | 
             
            Or install via Bundler `Gemfile`:
         | 
| 579 580 |  | 
| 580 581 | 
             
            ```ruby
         | 
| 581 | 
            -
            gem 'glimmer-dsl-libui', '~> 0.5. | 
| 582 | 
            +
            gem 'glimmer-dsl-libui', '~> 0.5.10'
         | 
| 582 583 | 
             
            ```
         | 
| 583 584 |  | 
| 584 585 | 
             
            Test that installation worked by running the [Meta-Example](#examples):
         | 
| @@ -1392,6 +1393,10 @@ In general, it is recommended to use declarative stable paths whenever feasible | |
| 1392 1393 |  | 
| 1393 1394 | 
             
            #### Area Listeners
         | 
| 1394 1395 |  | 
| 1396 | 
            +
            `area` supports a number of keyboard and mouse listeners to enable observing the control for user interaction to execute some logic.
         | 
| 1397 | 
            +
             | 
| 1398 | 
            +
            The same listeners can be nested directly under `area` shapes like `rectangle` and `circle`, and [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) will automatically detect when the mouse lands within those shapes to constrain triggering the listeners by the shape regions.
         | 
| 1399 | 
            +
             | 
| 1395 1400 | 
             
            `area` supported listeners are:
         | 
| 1396 1401 | 
             
            - `on_key_event {|area_key_event| ...}`: general catch-all key event (recommend using fine-grained key events below instead)
         | 
| 1397 1402 | 
             
            - `on_key_down {|area_key_event| ...}`
         | 
| @@ -11016,6 +11021,125 @@ end | |
| 11016 11021 | 
             
            Timer.new
         | 
| 11017 11022 | 
             
            ```
         | 
| 11018 11023 |  | 
| 11024 | 
            +
            #### Shape Coloring
         | 
| 11025 | 
            +
             | 
| 11026 | 
            +
            This example demonstrates being able to nest a listener within shapes directly, and [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) will automatically detect when the mouse lands inside a shape to notify listener.
         | 
| 11027 | 
            +
             | 
| 11028 | 
            +
            [examples/shape_coloring.rb](examples/shape_coloring.rb)
         | 
| 11029 | 
            +
             | 
| 11030 | 
            +
            Run with this command from the root of the project if you cloned the project:
         | 
| 11031 | 
            +
             | 
| 11032 | 
            +
            ```
         | 
| 11033 | 
            +
            ruby -r './lib/glimmer-dsl-libui' examples/shape_coloring.rb
         | 
| 11034 | 
            +
            ```
         | 
| 11035 | 
            +
             | 
| 11036 | 
            +
            Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/glimmer-dsl-libui):
         | 
| 11037 | 
            +
             | 
| 11038 | 
            +
            ```
         | 
| 11039 | 
            +
            ruby -r glimmer-dsl-libui -e "require 'examples/shape_coloring'"
         | 
| 11040 | 
            +
            ```
         | 
| 11041 | 
            +
             | 
| 11042 | 
            +
            
         | 
| 11043 | 
            +
            
         | 
| 11044 | 
            +
             | 
| 11045 | 
            +
            New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
         | 
| 11046 | 
            +
             | 
| 11047 | 
            +
            ```ruby
         | 
| 11048 | 
            +
            require 'glimmer-dsl-libui'
         | 
| 11049 | 
            +
             | 
| 11050 | 
            +
            class ShapeColoring
         | 
| 11051 | 
            +
              include Glimmer::LibUI::Application
         | 
| 11052 | 
            +
              
         | 
| 11053 | 
            +
              COLOR_SELECTION = Glimmer::LibUI.interpret_color(:red)
         | 
| 11054 | 
            +
              
         | 
| 11055 | 
            +
              before_body {
         | 
| 11056 | 
            +
                @shapes = []
         | 
| 11057 | 
            +
              }
         | 
| 11058 | 
            +
              
         | 
| 11059 | 
            +
              body {
         | 
| 11060 | 
            +
                window('Shape Coloring', 200, 200) {
         | 
| 11061 | 
            +
                  margined false
         | 
| 11062 | 
            +
                  
         | 
| 11063 | 
            +
                  grid {
         | 
| 11064 | 
            +
                    label("Click a shape to select and\nchange color via color button") {
         | 
| 11065 | 
            +
                      left 0
         | 
| 11066 | 
            +
                      top 0
         | 
| 11067 | 
            +
                      hexpand true
         | 
| 11068 | 
            +
                      halign :center
         | 
| 11069 | 
            +
                      vexpand false
         | 
| 11070 | 
            +
                    }
         | 
| 11071 | 
            +
                    
         | 
| 11072 | 
            +
                    color_button { |cb|
         | 
| 11073 | 
            +
                      left 0
         | 
| 11074 | 
            +
                      top 1
         | 
| 11075 | 
            +
                      hexpand true
         | 
| 11076 | 
            +
                      vexpand false
         | 
| 11077 | 
            +
                      
         | 
| 11078 | 
            +
                      on_changed do
         | 
| 11079 | 
            +
                        @selected_shape&.fill = cb.color
         | 
| 11080 | 
            +
                      end
         | 
| 11081 | 
            +
                    }
         | 
| 11082 | 
            +
                  
         | 
| 11083 | 
            +
                    area {
         | 
| 11084 | 
            +
                      left 0
         | 
| 11085 | 
            +
                      top 2
         | 
| 11086 | 
            +
                      hexpand true
         | 
| 11087 | 
            +
                      vexpand true
         | 
| 11088 | 
            +
                      
         | 
| 11089 | 
            +
                      rectangle(0, 0, 600, 400) { # background shape
         | 
| 11090 | 
            +
                        fill :white
         | 
| 11091 | 
            +
                      }
         | 
| 11092 | 
            +
                      
         | 
| 11093 | 
            +
                      @shapes << colorable(:rectangle, 20, 20, 40, 20) { |shape|
         | 
| 11094 | 
            +
                        fill :lime
         | 
| 11095 | 
            +
                      }
         | 
| 11096 | 
            +
                      
         | 
| 11097 | 
            +
                      @shapes << colorable(:square, 80, 20, 20) { |shape|
         | 
| 11098 | 
            +
                        fill :blue
         | 
| 11099 | 
            +
                      }
         | 
| 11100 | 
            +
                      
         | 
| 11101 | 
            +
                      @shapes << colorable(:circle, 75, 70, 20, 20) { |shape|
         | 
| 11102 | 
            +
                        fill :green
         | 
| 11103 | 
            +
                      }
         | 
| 11104 | 
            +
                      
         | 
| 11105 | 
            +
                      @shapes << colorable(:arc, 120, 70, 40, 0, 145) { |shape|
         | 
| 11106 | 
            +
                        fill :orange
         | 
| 11107 | 
            +
                      }
         | 
| 11108 | 
            +
                      
         | 
| 11109 | 
            +
                      @shapes << colorable(:polygon, 120, 10, 120, 50, 150, 10, 150, 50) {
         | 
| 11110 | 
            +
                        fill :cyan
         | 
| 11111 | 
            +
                      }
         | 
| 11112 | 
            +
                      
         | 
| 11113 | 
            +
                      @shapes << colorable(:polybezier, 20, 40,
         | 
| 11114 | 
            +
                                 30, 100, 50, 80, 80, 110,
         | 
| 11115 | 
            +
                                 40, 120, 20, 120, 30, 91) {
         | 
| 11116 | 
            +
                        fill :pink
         | 
| 11117 | 
            +
                      }
         | 
| 11118 | 
            +
                    }
         | 
| 11119 | 
            +
                  }
         | 
| 11120 | 
            +
                }
         | 
| 11121 | 
            +
              }
         | 
| 11122 | 
            +
              
         | 
| 11123 | 
            +
              def colorable(shape_symbol, *args, &content)
         | 
| 11124 | 
            +
                send(shape_symbol, *args) do |shape|
         | 
| 11125 | 
            +
                  on_mouse_up do |area_mouse_event|
         | 
| 11126 | 
            +
                    old_stroke = Glimmer::LibUI.interpret_color(shape.stroke).slice(:r, :g, :b)
         | 
| 11127 | 
            +
                    @shapes.each {|sh| sh.stroke = nil}
         | 
| 11128 | 
            +
                    @selected_shape = nil
         | 
| 11129 | 
            +
                    unless old_stroke == COLOR_SELECTION
         | 
| 11130 | 
            +
                      shape.stroke = COLOR_SELECTION.merge(thickness: 2)
         | 
| 11131 | 
            +
                      @selected_shape = shape
         | 
| 11132 | 
            +
                    end
         | 
| 11133 | 
            +
                  end
         | 
| 11134 | 
            +
                  
         | 
| 11135 | 
            +
                  content.call(shape)
         | 
| 11136 | 
            +
                end
         | 
| 11137 | 
            +
              end
         | 
| 11138 | 
            +
            end
         | 
| 11139 | 
            +
             | 
| 11140 | 
            +
            ShapeColoring.launch
         | 
| 11141 | 
            +
            ```
         | 
| 11142 | 
            +
             | 
| 11019 11143 | 
             
            ## Applications
         | 
| 11020 11144 |  | 
| 11021 11145 | 
             
            Here are some applications built with [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui)
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.5. | 
| 1 | 
            +
            0.5.10
         | 
| @@ -0,0 +1,93 @@ | |
| 1 | 
            +
            require 'glimmer-dsl-libui'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class ShapeColoring
         | 
| 4 | 
            +
              include Glimmer::LibUI::Application
         | 
| 5 | 
            +
              
         | 
| 6 | 
            +
              COLOR_SELECTION = Glimmer::LibUI.interpret_color(:red)
         | 
| 7 | 
            +
              
         | 
| 8 | 
            +
              before_body {
         | 
| 9 | 
            +
                @shapes = []
         | 
| 10 | 
            +
              }
         | 
| 11 | 
            +
              
         | 
| 12 | 
            +
              body {
         | 
| 13 | 
            +
                window('Shape Coloring', 200, 200) {
         | 
| 14 | 
            +
                  margined false
         | 
| 15 | 
            +
                  
         | 
| 16 | 
            +
                  grid {
         | 
| 17 | 
            +
                    label("Click a shape to select and\nchange color via color button") {
         | 
| 18 | 
            +
                      left 0
         | 
| 19 | 
            +
                      top 0
         | 
| 20 | 
            +
                      hexpand true
         | 
| 21 | 
            +
                      halign :center
         | 
| 22 | 
            +
                      vexpand false
         | 
| 23 | 
            +
                    }
         | 
| 24 | 
            +
                    
         | 
| 25 | 
            +
                    color_button { |cb|
         | 
| 26 | 
            +
                      left 0
         | 
| 27 | 
            +
                      top 1
         | 
| 28 | 
            +
                      hexpand true
         | 
| 29 | 
            +
                      vexpand false
         | 
| 30 | 
            +
                      
         | 
| 31 | 
            +
                      on_changed do
         | 
| 32 | 
            +
                        @selected_shape&.fill = cb.color
         | 
| 33 | 
            +
                      end
         | 
| 34 | 
            +
                    }
         | 
| 35 | 
            +
                  
         | 
| 36 | 
            +
                    area {
         | 
| 37 | 
            +
                      left 0
         | 
| 38 | 
            +
                      top 2
         | 
| 39 | 
            +
                      hexpand true
         | 
| 40 | 
            +
                      vexpand true
         | 
| 41 | 
            +
                      
         | 
| 42 | 
            +
                      rectangle(0, 0, 600, 400) { # background shape
         | 
| 43 | 
            +
                        fill :white
         | 
| 44 | 
            +
                      }
         | 
| 45 | 
            +
                      
         | 
| 46 | 
            +
                      @shapes << colorable(:rectangle, 20, 20, 40, 20) { |shape|
         | 
| 47 | 
            +
                        fill :lime
         | 
| 48 | 
            +
                      }
         | 
| 49 | 
            +
                      
         | 
| 50 | 
            +
                      @shapes << colorable(:square, 80, 20, 20) { |shape|
         | 
| 51 | 
            +
                        fill :blue
         | 
| 52 | 
            +
                      }
         | 
| 53 | 
            +
                      
         | 
| 54 | 
            +
                      @shapes << colorable(:circle, 75, 70, 20, 20) { |shape|
         | 
| 55 | 
            +
                        fill :green
         | 
| 56 | 
            +
                      }
         | 
| 57 | 
            +
                      
         | 
| 58 | 
            +
                      @shapes << colorable(:arc, 120, 70, 40, 0, 145) { |shape|
         | 
| 59 | 
            +
                        fill :orange
         | 
| 60 | 
            +
                      }
         | 
| 61 | 
            +
                      
         | 
| 62 | 
            +
                      @shapes << colorable(:polygon, 120, 10, 120, 50, 150, 10, 150, 50) {
         | 
| 63 | 
            +
                        fill :cyan
         | 
| 64 | 
            +
                      }
         | 
| 65 | 
            +
                      
         | 
| 66 | 
            +
                      @shapes << colorable(:polybezier, 20, 40,
         | 
| 67 | 
            +
                                 30, 100, 50, 80, 80, 110,
         | 
| 68 | 
            +
                                 40, 120, 20, 120, 30, 91) {
         | 
| 69 | 
            +
                        fill :pink
         | 
| 70 | 
            +
                      }
         | 
| 71 | 
            +
                    }
         | 
| 72 | 
            +
                  }
         | 
| 73 | 
            +
                }
         | 
| 74 | 
            +
              }
         | 
| 75 | 
            +
              
         | 
| 76 | 
            +
              def colorable(shape_symbol, *args, &content)
         | 
| 77 | 
            +
                send(shape_symbol, *args) do |shape|
         | 
| 78 | 
            +
                  on_mouse_up do |area_mouse_event|
         | 
| 79 | 
            +
                    old_stroke = Glimmer::LibUI.interpret_color(shape.stroke).slice(:r, :g, :b)
         | 
| 80 | 
            +
                    @shapes.each {|sh| sh.stroke = nil}
         | 
| 81 | 
            +
                    @selected_shape = nil
         | 
| 82 | 
            +
                    unless old_stroke == COLOR_SELECTION
         | 
| 83 | 
            +
                      shape.stroke = COLOR_SELECTION.merge(thickness: 2)
         | 
| 84 | 
            +
                      @selected_shape = shape
         | 
| 85 | 
            +
                    end
         | 
| 86 | 
            +
                  end
         | 
| 87 | 
            +
                  
         | 
| 88 | 
            +
                  content.call(shape)
         | 
| 89 | 
            +
                end
         | 
| 90 | 
            +
              end
         | 
| 91 | 
            +
            end
         | 
| 92 | 
            +
             | 
| 93 | 
            +
            ShapeColoring.launch
         | 
    
        data/glimmer-dsl-libui.gemspec
    CHANGED
    
    | Binary file | 
| @@ -27,7 +27,7 @@ module Glimmer | |
| 27 27 | 
             
                module Libui
         | 
| 28 28 | 
             
                  class ListenerExpression < Expression
         | 
| 29 29 | 
             
                    def can_interpret?(parent, keyword, *args, &block)
         | 
| 30 | 
            -
                      parent.is_a?(Glimmer::LibUI::ControlProxy) and
         | 
| 30 | 
            +
                      (parent.is_a?(Glimmer::LibUI::ControlProxy) or parent.is_a?(Glimmer::LibUI::Shape)) and
         | 
| 31 31 | 
             
                        block_given? and
         | 
| 32 32 | 
             
                        parent.can_handle_listener?(keyword)
         | 
| 33 33 | 
             
                    end
         | 
    
        data/lib/glimmer/libui/shape.rb
    CHANGED
    
    | @@ -147,6 +147,16 @@ module Glimmer | |
| 147 147 | 
             
                  end
         | 
| 148 148 | 
             
                  alias transform= transform
         | 
| 149 149 | 
             
                  alias set_transform transform
         | 
| 150 | 
            +
                  
         | 
| 151 | 
            +
                  def can_handle_listener?(listener_name)
         | 
| 152 | 
            +
                    area_proxy.can_handle_listener?(listener_name)
         | 
| 153 | 
            +
                  end
         | 
| 154 | 
            +
                  
         | 
| 155 | 
            +
                  def handle_listener(listener_name, &listener)
         | 
| 156 | 
            +
                    area_proxy.handle_listener(listener_name) do |event|
         | 
| 157 | 
            +
                      listener.call(event) if include?(event[:x], event[:y])
         | 
| 158 | 
            +
                    end
         | 
| 159 | 
            +
                  end
         | 
| 150 160 |  | 
| 151 161 | 
             
                  def respond_to?(method_name, *args, &block)
         | 
| 152 162 | 
             
                    self.class.parameters.include?(method_name.to_s.sub(/=$/, '').sub(/^set_/, '').to_sym) or
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: glimmer-dsl-libui
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.5. | 
| 4 | 
            +
              version: 0.5.10
         | 
| 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-05-14 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: glimmer
         | 
| @@ -355,6 +355,7 @@ files: | |
| 355 355 | 
             
            - examples/midi_player.rb
         | 
| 356 356 | 
             
            - examples/midi_player2.rb
         | 
| 357 357 | 
             
            - examples/midi_player3.rb
         | 
| 358 | 
            +
            - examples/shape_coloring.rb
         | 
| 358 359 | 
             
            - examples/simple_notepad.rb
         | 
| 359 360 | 
             
            - examples/snake.rb
         | 
| 360 361 | 
             
            - examples/snake/model/apple.rb
         |