glimmer-dsl-libui 0.4.16 → 0.4.20
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 +26 -0
- data/README.md +451 -68
- data/VERSION +1 -1
- data/examples/area_based_custom_controls.rb +278 -0
- data/examples/basic_table.rb +1 -1
- data/examples/cpu_percentage.rb +1 -1
- data/examples/custom_draw_text.rb +14 -7
- data/examples/custom_draw_text2.rb +15 -8
- data/examples/method_based_custom_keyword.rb +9 -9
- data/examples/method_based_custom_keyword2.rb +9 -9
- data/glimmer-dsl-libui.gemspec +0 -0
- data/lib/glimmer/dsl/libui/dsl.rb +1 -0
- data/lib/glimmer/dsl/libui/observe_expression.rb +1 -1
- data/lib/glimmer/dsl/libui/operation_expression.rb +47 -0
- data/lib/glimmer/dsl/libui/property_expression.rb +2 -2
- data/lib/glimmer/libui/control_proxy/box.rb +1 -0
- data/lib/glimmer/libui/control_proxy/column/background_color_column_proxy.rb +6 -0
- data/lib/glimmer/libui/control_proxy/column/button_column_proxy.rb +6 -0
- data/lib/glimmer/libui/control_proxy/column/checkbox_column_proxy.rb +6 -0
- data/lib/glimmer/libui/control_proxy/column/checkbox_text_color_column_proxy.rb +6 -0
- data/lib/glimmer/libui/control_proxy/column/checkbox_text_column_proxy.rb +6 -0
- data/lib/glimmer/libui/control_proxy/column/image_column_proxy.rb +6 -0
- data/lib/glimmer/libui/control_proxy/column/image_text_color_column_proxy.rb +6 -0
- data/lib/glimmer/libui/control_proxy/column/image_text_column_proxy.rb +6 -0
- data/lib/glimmer/libui/control_proxy/column/progress_bar_column_proxy.rb +6 -0
- data/lib/glimmer/libui/control_proxy/column/text_color_column_proxy.rb +6 -0
- data/lib/glimmer/libui/control_proxy/column/text_column_proxy.rb +6 -0
- data/lib/glimmer/libui/control_proxy/column.rb +7 -0
- data/lib/glimmer/libui/control_proxy/form_proxy.rb +1 -0
- data/lib/glimmer/libui/control_proxy/image_proxy.rb +1 -0
- data/lib/glimmer/libui/control_proxy/menu_item_proxy/quit_menu_item_proxy.rb +0 -1
- data/lib/glimmer/libui/control_proxy/path_proxy.rb +6 -4
- data/lib/glimmer/libui/control_proxy/table_proxy.rb +51 -28
- data/lib/glimmer/libui/control_proxy.rb +1 -0
- data/lib/glimmer/libui/data_bindable.rb +1 -1
- data/lib/glimmer/libui/shape/bezier.rb +20 -3
- data/lib/glimmer/libui/shape/line.rb +23 -3
- data/lib/glimmer-dsl-libui.rb +6 -0
- metadata +23 -6
| @@ -24,6 +24,13 @@ module Glimmer | |
| 24 24 | 
             
                class ControlProxy
         | 
| 25 25 | 
             
                  # Common logic for all column proxy objects
         | 
| 26 26 | 
             
                  module Column
         | 
| 27 | 
            +
                    class << self
         | 
| 28 | 
            +
                      # subclasses may override to provide a valid default value like a blank image for image columns and false for checkbox
         | 
| 29 | 
            +
                      def default_value
         | 
| 30 | 
            +
                        nil
         | 
| 31 | 
            +
                      end
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
             | 
| 27 34 | 
             
                    def initialize(keyword, parent, args, &block)
         | 
| 28 35 | 
             
                      @keyword = keyword
         | 
| 29 36 | 
             
                      @parent_proxy = parent
         | 
| @@ -70,7 +70,8 @@ module Glimmer | |
| 70 70 | 
             
                      else
         | 
| 71 71 | 
             
                        new_color = Glimmer::LibUI.interpret_color(args)
         | 
| 72 72 | 
             
                        if new_color != @fill
         | 
| 73 | 
            -
                           | 
| 73 | 
            +
                          # TODO consider replacing unobserve with observer_registration.deregister
         | 
| 74 | 
            +
                          @fill_observer&.unobserve(@fill, attribute_writer_type: [:attribute=, :set_attribute]) if @fill
         | 
| 74 75 | 
             
                          @fill = new_color
         | 
| 75 76 | 
             
                          request_auto_redraw
         | 
| 76 77 | 
             
                        end
         | 
| @@ -79,7 +80,7 @@ module Glimmer | |
| 79 80 | 
             
                        @fill_observer ||= Glimmer::DataBinding::Observer.proc do
         | 
| 80 81 | 
             
                          request_auto_redraw
         | 
| 81 82 | 
             
                        end
         | 
| 82 | 
            -
                        @fill_observer.observe(@fill)
         | 
| 83 | 
            +
                        @fill_observer.observe(@fill, attribute_writer_type: [:attribute=, :set_attribute])
         | 
| 83 84 | 
             
                      end
         | 
| 84 85 | 
             
                    end
         | 
| 85 86 | 
             
                    alias fill= fill
         | 
| @@ -98,7 +99,8 @@ module Glimmer | |
| 98 99 | 
             
                      else
         | 
| 99 100 | 
             
                        new_color = Glimmer::LibUI.interpret_color(args)
         | 
| 100 101 | 
             
                        if new_color != @stroke
         | 
| 101 | 
            -
                           | 
| 102 | 
            +
                          # TODO consider replacing unobserve with observer_registration.deregister
         | 
| 103 | 
            +
                          @stroke_observer&.unobserve(@stroke, attribute_writer_type: [:attribute=, :set_attribute]) if @stroke
         | 
| 102 104 | 
             
                          @stroke = Glimmer::LibUI.interpret_color(args)
         | 
| 103 105 | 
             
                          request_auto_redraw
         | 
| 104 106 | 
             
                        end
         | 
| @@ -107,7 +109,7 @@ module Glimmer | |
| 107 109 | 
             
                        @stroke_observer ||= Glimmer::DataBinding::Observer.proc do
         | 
| 108 110 | 
             
                          request_auto_redraw
         | 
| 109 111 | 
             
                        end
         | 
| 110 | 
            -
                        @stroke_observer.observe(@stroke)
         | 
| 112 | 
            +
                        @stroke_observer.observe(@stroke, attribute_writer_type: [:attribute=, :set_attribute])
         | 
| 111 113 | 
             
                      end
         | 
| 112 114 | 
             
                    end
         | 
| 113 115 | 
             
                    alias stroke= stroke
         | 
| @@ -48,6 +48,8 @@ module Glimmer | |
| 48 48 | 
             
                      @enabled = true
         | 
| 49 49 | 
             
                      @columns = []
         | 
| 50 50 | 
             
                      @cell_rows = []
         | 
| 51 | 
            +
                      @last_cell_rows = []
         | 
| 52 | 
            +
                      register_cell_rows_observer
         | 
| 51 53 | 
             
                      window_proxy.on_destroy do
         | 
| 52 54 | 
             
                        # the following unless condition is an exceptional condition stumbled upon that fails freeing the table model
         | 
| 53 55 | 
             
                        ::LibUI.free_table_model(@model) unless @destroyed && parent_proxy.is_a?(Box)
         | 
| @@ -75,7 +77,8 @@ module Glimmer | |
| 75 77 |  | 
| 76 78 | 
             
                    def destroy
         | 
| 77 79 | 
             
                      super
         | 
| 78 | 
            -
                       | 
| 80 | 
            +
                      # TODO consider replacing unobserve with observer_registration.deregister
         | 
| 81 | 
            +
                      @cell_rows_observer&.unobserve(self, :cell_rows, recursive: true, ignore_frozen: true, attribute_writer_type: [:attribute=, :set_attribute])
         | 
| 79 82 | 
             
                      @destroyed = true
         | 
| 80 83 | 
             
                    end
         | 
| 81 84 |  | 
| @@ -86,31 +89,6 @@ module Glimmer | |
| 86 89 | 
             
                        if rows != @cell_rows
         | 
| 87 90 | 
             
                          @cell_rows = rows
         | 
| 88 91 | 
             
                          @cell_rows = @cell_rows.to_a if @cell_rows.is_a?(Enumerator)
         | 
| 89 | 
            -
                          @last_cell_rows ||= array_deep_clone(@cell_rows)
         | 
| 90 | 
            -
                          @cell_rows_observer ||= Glimmer::DataBinding::Observer.proc do |new_cell_rows|
         | 
| 91 | 
            -
                            if @cell_rows.size < @last_cell_rows.size && @last_cell_rows.include_all?(*@cell_rows)
         | 
| 92 | 
            -
                              @last_cell_rows.array_diff_indexes(@cell_rows).reverse.each do |row|
         | 
| 93 | 
            -
                                ::LibUI.table_model_row_deleted(model, row)
         | 
| 94 | 
            -
                                notify_custom_listeners('on_changed', row, :deleted, @last_cell_rows[row])
         | 
| 95 | 
            -
                              end
         | 
| 96 | 
            -
                            elsif @cell_rows.size > @last_cell_rows.size && @cell_rows.include_all?(*@last_cell_rows)
         | 
| 97 | 
            -
                              @cell_rows.array_diff_indexes(@last_cell_rows).each do |row|
         | 
| 98 | 
            -
                                ::LibUI.table_model_row_inserted(model, row)
         | 
| 99 | 
            -
                                notify_custom_listeners('on_changed', row, :inserted, @cell_rows[row])
         | 
| 100 | 
            -
                              end
         | 
| 101 | 
            -
                            else
         | 
| 102 | 
            -
                              @cell_rows.each_with_index do |new_row_data, row|
         | 
| 103 | 
            -
                                if new_row_data != @last_cell_rows[row]
         | 
| 104 | 
            -
                                  ::LibUI.table_model_row_changed(model, row)
         | 
| 105 | 
            -
                                  notify_custom_listeners('on_changed', row, :changed, @cell_rows[row])
         | 
| 106 | 
            -
                                end
         | 
| 107 | 
            -
                              end
         | 
| 108 | 
            -
                            end
         | 
| 109 | 
            -
                            @last_last_cell_rows = array_deep_clone(@last_cell_rows)
         | 
| 110 | 
            -
                            @last_cell_rows = array_deep_clone(@cell_rows)
         | 
| 111 | 
            -
                          end.tap do |cell_rows_observer|
         | 
| 112 | 
            -
                            cell_rows_observer.observe(self, :cell_rows, recursive: true)
         | 
| 113 | 
            -
                          end
         | 
| 114 92 | 
             
                        end
         | 
| 115 93 | 
             
                        @cell_rows
         | 
| 116 94 | 
             
                      end
         | 
| @@ -153,13 +131,13 @@ module Glimmer | |
| 153 131 | 
             
                        new_value = new_value.to_a if new_value.is_a?(Enumerator)
         | 
| 154 132 | 
             
                        if model_binding.binding_options[:column_attributes] || (!new_value.empty? && !new_value.first.is_a?(Array))
         | 
| 155 133 | 
             
                          @model_attribute_array_observer_registration&.deregister
         | 
| 156 | 
            -
                          @model_attribute_array_observer_registration = model_attribute_observer.observe(new_value, @column_attributes)
         | 
| 134 | 
            +
                          @model_attribute_array_observer_registration = model_attribute_observer.observe(new_value, @column_attributes, ignore_frozen: true, attribute_writer_type: [:attribute=, :set_attribute])
         | 
| 157 135 | 
             
                          model_attribute_observer.add_dependent(model_attribute_observer_registration => @model_attribute_array_observer_registration)
         | 
| 158 136 | 
             
                        end
         | 
| 159 137 | 
             
                        # TODO look if multiple notifications are happening as a result of observing array and observing model binding
         | 
| 160 138 | 
             
                        send("#{property}=", new_value) unless @last_cell_rows == new_value
         | 
| 161 139 | 
             
                      end
         | 
| 162 | 
            -
                      model_attribute_observer_registration = model_attribute_observer.observe(model_binding)
         | 
| 140 | 
            +
                      model_attribute_observer_registration = model_attribute_observer.observe(model_binding, attribute_writer_type: [:attribute=, :set_attribute])
         | 
| 163 141 | 
             
                      model_attribute_observer.call # initial update
         | 
| 164 142 | 
             
                      data_binding_model_attribute_observer_registrations << model_attribute_observer_registration
         | 
| 165 143 | 
             
                      model_attribute_observer
         | 
| @@ -310,12 +288,57 @@ module Glimmer | |
| 310 288 | 
             
                      @libui.tap do
         | 
| 311 289 | 
             
                        @columns.each {|column| column.respond_to?(:build_control, true) && column.send(:build_control) }
         | 
| 312 290 | 
             
                      end
         | 
| 291 | 
            +
             | 
| 292 | 
            +
                      if !@applied_windows_fix && OS.windows?
         | 
| 293 | 
            +
                        @applied_windows_fix = true
         | 
| 294 | 
            +
                        apply_windows_fix
         | 
| 295 | 
            +
                      end
         | 
| 313 296 | 
             
                    end
         | 
| 314 297 |  | 
| 315 298 | 
             
                    def next_column_index
         | 
| 316 299 | 
             
                      @next_column_index ||= -1
         | 
| 317 300 | 
             
                      @next_column_index += 1
         | 
| 318 301 | 
             
                    end
         | 
| 302 | 
            +
                    
         | 
| 303 | 
            +
                    def register_cell_rows_observer
         | 
| 304 | 
            +
                      @cell_rows_observer = Glimmer::DataBinding::Observer.proc do |new_cell_rows|
         | 
| 305 | 
            +
                        if @cell_rows.size < @last_cell_rows.size && @last_cell_rows.include_all?(*@cell_rows)
         | 
| 306 | 
            +
                          @last_cell_rows.array_diff_indexes(@cell_rows).reverse.each do |row|
         | 
| 307 | 
            +
                            ::LibUI.table_model_row_deleted(model, row) if model && row
         | 
| 308 | 
            +
                            notify_custom_listeners('on_changed', row, :deleted, @last_cell_rows[row])
         | 
| 309 | 
            +
                          end
         | 
| 310 | 
            +
                        elsif @cell_rows.size > @last_cell_rows.size && @cell_rows.include_all?(*@last_cell_rows)
         | 
| 311 | 
            +
                          @cell_rows.array_diff_indexes(@last_cell_rows).each do |row|
         | 
| 312 | 
            +
                            ::LibUI.table_model_row_inserted(model, row) if model && row
         | 
| 313 | 
            +
                            notify_custom_listeners('on_changed', row, :inserted, @cell_rows[row])
         | 
| 314 | 
            +
                          end
         | 
| 315 | 
            +
                        else
         | 
| 316 | 
            +
                          @cell_rows.each_with_index do |new_row_data, row|
         | 
| 317 | 
            +
                            if new_row_data != @last_cell_rows[row]
         | 
| 318 | 
            +
                              ::LibUI.table_model_row_changed(model, row) if model && row
         | 
| 319 | 
            +
                              notify_custom_listeners('on_changed', row, :changed, @cell_rows[row])
         | 
| 320 | 
            +
                            end
         | 
| 321 | 
            +
                          end
         | 
| 322 | 
            +
                        end
         | 
| 323 | 
            +
                        @last_last_cell_rows = array_deep_clone(@last_cell_rows)
         | 
| 324 | 
            +
                        @last_cell_rows = array_deep_clone(@cell_rows)
         | 
| 325 | 
            +
                        if !@applied_windows_fix_on_first_cell_rows_update && OS.windows?
         | 
| 326 | 
            +
                          @applied_windows_fix_on_first_cell_rows_update = true
         | 
| 327 | 
            +
                          apply_windows_fix
         | 
| 328 | 
            +
                        end
         | 
| 329 | 
            +
                      end
         | 
| 330 | 
            +
                      @cell_rows_observer_registration = @cell_rows_observer.observe(self, :cell_rows, recursive: true, ignore_frozen: true, attribute_writer_type: [:attribute=, :set_attribute])
         | 
| 331 | 
            +
                    end
         | 
| 332 | 
            +
             | 
| 333 | 
            +
                    def apply_windows_fix
         | 
| 334 | 
            +
                      Glimmer::LibUI.queue_main do
         | 
| 335 | 
            +
                        new_row = @columns&.select {|column| column.is_a?(Column)}&.map {|column| column.class.default_value}
         | 
| 336 | 
            +
                        if new_row
         | 
| 337 | 
            +
                          @cell_rows << new_row
         | 
| 338 | 
            +
                          @cell_rows.pop
         | 
| 339 | 
            +
                        end
         | 
| 340 | 
            +
                      end
         | 
| 341 | 
            +
                    end
         | 
| 319 342 | 
             
                  end
         | 
| 320 343 | 
             
                end
         | 
| 321 344 | 
             
              end
         | 
| @@ -46,7 +46,7 @@ module Glimmer | |
| 46 46 | 
             
                      new_value = model_binding.evaluate_property
         | 
| 47 47 | 
             
                      send("#{property}=", new_value) unless send(property) == new_value
         | 
| 48 48 | 
             
                    end
         | 
| 49 | 
            -
                    observer_registration = model_attribute_observer.observe(model_binding)
         | 
| 49 | 
            +
                    observer_registration = model_attribute_observer.observe(model_binding, attribute_writer_type: [:attribute=, :set_attribute])
         | 
| 50 50 | 
             
                    model_attribute_observer.call # initial update
         | 
| 51 51 | 
             
                    data_binding_model_attribute_observer_registrations << observer_registration
         | 
| 52 52 | 
             
                    observer_registration
         | 
| @@ -25,13 +25,30 @@ module Glimmer | |
| 25 25 | 
             
              module LibUI
         | 
| 26 26 | 
             
                class Shape
         | 
| 27 27 | 
             
                  class Bezier < Shape
         | 
| 28 | 
            -
                    parameters :c1_x, :c1_y, :c2_x, :c2_y, :end_x, :end_y
         | 
| 29 | 
            -
                    parameter_defaults 0, 0, 0, 0, 0, 0
         | 
| 28 | 
            +
                    parameters :x, :y, :c1_x, :c1_y, :c2_x, :c2_y, :end_x, :end_y
         | 
| 29 | 
            +
                    parameter_defaults nil, nil, 0, 0, 0, 0, 0, 0
         | 
| 30 | 
            +
                            
         | 
| 31 | 
            +
                    def initialize(keyword, parent, args, &block)
         | 
| 32 | 
            +
                      args.prepend nil until args.size == 8
         | 
| 33 | 
            +
                      super(keyword, parent, args, &block)
         | 
| 34 | 
            +
                    end
         | 
| 30 35 |  | 
| 31 36 | 
             
                    def draw(area_draw_params)
         | 
| 32 | 
            -
                       | 
| 37 | 
            +
                      if !parent.is_a?(Figure)
         | 
| 38 | 
            +
                        if include_start_point?
         | 
| 39 | 
            +
                          ::LibUI.draw_path_new_figure(path_proxy.libui, x, y)
         | 
| 40 | 
            +
                        else
         | 
| 41 | 
            +
                          ::LibUI.draw_path_new_figure(path_proxy.libui, 0, 0)
         | 
| 42 | 
            +
                        end
         | 
| 43 | 
            +
                      end
         | 
| 44 | 
            +
                      ::LibUI.draw_path_bezier_to(path_proxy.libui, c1_x, c1_y, c2_x, c2_y, end_x, end_y)
         | 
| 33 45 | 
             
                      super
         | 
| 34 46 | 
             
                    end
         | 
| 47 | 
            +
                    
         | 
| 48 | 
            +
                    # Indicates if bezier is not part of a figure and yet it includes the start point in addition to other points
         | 
| 49 | 
            +
                    def include_start_point?
         | 
| 50 | 
            +
                      x && y
         | 
| 51 | 
            +
                    end
         | 
| 35 52 | 
             
                  end
         | 
| 36 53 | 
             
                end
         | 
| 37 54 | 
             
              end
         | 
| @@ -24,14 +24,34 @@ require 'glimmer/libui/shape' | |
| 24 24 | 
             
            module Glimmer
         | 
| 25 25 | 
             
              module LibUI
         | 
| 26 26 | 
             
                class Shape
         | 
| 27 | 
            +
                  # Line to use as part of a figure (when having 2 args)
         | 
| 28 | 
            +
                  # or independently (when having 4 args representing start point x/y and end point x/y)
         | 
| 27 29 | 
             
                  class Line < Shape
         | 
| 28 | 
            -
                    parameters :x, :y
         | 
| 29 | 
            -
                    parameter_defaults 0, 0
         | 
| 30 | 
            +
                    parameters :x, :y, :end_x, :end_y
         | 
| 31 | 
            +
                    parameter_defaults 0, 0, nil, nil
         | 
| 30 32 |  | 
| 31 33 | 
             
                    def draw(area_draw_params)
         | 
| 32 | 
            -
                       | 
| 34 | 
            +
                      if parent.is_a?(Figure)
         | 
| 35 | 
            +
                        ::LibUI.draw_path_line_to(path_proxy.libui, x, y)
         | 
| 36 | 
            +
                      else
         | 
| 37 | 
            +
                        if include_start_point?
         | 
| 38 | 
            +
                          ::LibUI.draw_path_new_figure(path_proxy.libui, x, y)
         | 
| 39 | 
            +
                          ::LibUI.draw_path_line_to(path_proxy.libui, end_x, end_y)
         | 
| 40 | 
            +
                        else
         | 
| 41 | 
            +
                          ::LibUI.draw_path_new_figure(path_proxy.libui, 0, 0)
         | 
| 42 | 
            +
                          ::LibUI.draw_path_line_to(path_proxy.libui, x, y)
         | 
| 43 | 
            +
                        end
         | 
| 44 | 
            +
                      end
         | 
| 33 45 | 
             
                      super
         | 
| 34 46 | 
             
                    end
         | 
| 47 | 
            +
                    
         | 
| 48 | 
            +
                    # Indicates if line is not part of a figure and yet it includes the start point in addition to end point
         | 
| 49 | 
            +
                    def include_start_point?
         | 
| 50 | 
            +
                      # if the last 2 args are available, it means that the first 2 args represent the start point
         | 
| 51 | 
            +
                      # if line is part of a figure, then the last 2 args are ignored and it is never assumed to include
         | 
| 52 | 
            +
                      # start point
         | 
| 53 | 
            +
                      !parent.is_a?(Figure) && end_x && end_y
         | 
| 54 | 
            +
                    end
         | 
| 35 55 | 
             
                  end
         | 
| 36 56 | 
             
                end
         | 
| 37 57 | 
             
              end
         | 
    
        data/lib/glimmer-dsl-libui.rb
    CHANGED
    
    | @@ -28,6 +28,7 @@ require 'glimmer' | |
| 28 28 | 
             
            # require 'super_module'
         | 
| 29 29 | 
             
            require 'color'
         | 
| 30 30 | 
             
            require 'os'
         | 
| 31 | 
            +
            require 'equalizer'
         | 
| 31 32 | 
             
            require 'array_include_methods'
         | 
| 32 33 | 
             
            require 'facets/hash/stringify_keys'
         | 
| 33 34 | 
             
            require 'facets/string/underscore'
         | 
| @@ -46,3 +47,8 @@ Glimmer::Config.excluded_keyword_checkers << lambda do |method_symbol, *args| | |
| 46 47 | 
             
            end
         | 
| 47 48 |  | 
| 48 49 | 
             
            ::LibUI.init
         | 
| 50 | 
            +
            # begin
         | 
| 51 | 
            +
            #   PutsDebuggerer.printer = lambda { |m| puts m; $stdout.flush}
         | 
| 52 | 
            +
            # rescue
         | 
| 53 | 
            +
              ##### No Op if puts_debuggerer is not loaded
         | 
| 54 | 
            +
            # end
         | 
    
        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.4. | 
| 4 | 
            +
              version: 0.4.20
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Andy Maleh
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-01-01 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: glimmer
         | 
| @@ -16,14 +16,14 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 2.5. | 
| 19 | 
            +
                    version: 2.5.4
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: 2.5. | 
| 26 | 
            +
                    version: 2.5.4
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: os
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -86,6 +86,20 @@ dependencies: | |
| 86 86 | 
             
                - - "~>"
         | 
| 87 87 | 
             
                  - !ruby/object:Gem::Version
         | 
| 88 88 | 
             
                    version: 1.4.0
         | 
| 89 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 90 | 
            +
              name: equalizer
         | 
| 91 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 92 | 
            +
                requirements:
         | 
| 93 | 
            +
                - - '='
         | 
| 94 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 95 | 
            +
                    version: 0.0.11
         | 
| 96 | 
            +
              type: :runtime
         | 
| 97 | 
            +
              prerelease: false
         | 
| 98 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 99 | 
            +
                requirements:
         | 
| 100 | 
            +
                - - '='
         | 
| 101 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 102 | 
            +
                    version: 0.0.11
         | 
| 89 103 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 90 104 | 
             
              name: juwelier
         | 
| 91 105 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -195,7 +209,8 @@ description: Glimmer DSL for LibUI (Prerequisite-Free Ruby Desktop Development G | |
| 195 209 | 
             
              platform-independent native GUI that just works! Glimmer DSL for LibUI aims to provide
         | 
| 196 210 | 
             
              declarative DSL syntax that visually maps to GUI control hierarchy, convention over
         | 
| 197 211 | 
             
              configuration via smart defaults, automation of low-level details, requiring the
         | 
| 198 | 
            -
              least amount of syntax possible to build GUI, and custom | 
| 212 | 
            +
              least amount of syntax possible to build GUI, bidirectional data-binding, and custom
         | 
| 213 | 
            +
              keyword support.
         | 
| 199 214 | 
             
            email: andy.am@gmail.com
         | 
| 200 215 | 
             
            executables:
         | 
| 201 216 | 
             
            - girb
         | 
| @@ -211,6 +226,7 @@ files: | |
| 211 226 | 
             
            - VERSION
         | 
| 212 227 | 
             
            - bin/girb
         | 
| 213 228 | 
             
            - bin/girb_runner.rb
         | 
| 229 | 
            +
            - examples/area_based_custom_controls.rb
         | 
| 214 230 | 
             
            - examples/area_gallery.rb
         | 
| 215 231 | 
             
            - examples/area_gallery2.rb
         | 
| 216 232 | 
             
            - examples/area_gallery3.rb
         | 
| @@ -320,6 +336,7 @@ files: | |
| 320 336 | 
             
            - lib/glimmer/dsl/libui/listener_expression.rb
         | 
| 321 337 | 
             
            - lib/glimmer/dsl/libui/observe_expression.rb
         | 
| 322 338 | 
             
            - lib/glimmer/dsl/libui/open_file_expression.rb
         | 
| 339 | 
            +
            - lib/glimmer/dsl/libui/operation_expression.rb
         | 
| 323 340 | 
             
            - lib/glimmer/dsl/libui/property_expression.rb
         | 
| 324 341 | 
             
            - lib/glimmer/dsl/libui/save_file_expression.rb
         | 
| 325 342 | 
             
            - lib/glimmer/dsl/libui/shape_expression.rb
         | 
| @@ -434,7 +451,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 434 451 | 
             
                - !ruby/object:Gem::Version
         | 
| 435 452 | 
             
                  version: '0'
         | 
| 436 453 | 
             
            requirements: []
         | 
| 437 | 
            -
            rubygems_version: 3. | 
| 454 | 
            +
            rubygems_version: 3.3.1
         | 
| 438 455 | 
             
            signing_key:
         | 
| 439 456 | 
             
            specification_version: 4
         | 
| 440 457 | 
             
            summary: Glimmer DSL for LibUI
         |