Sha256: 9b0dfdcb669829e3f0403f615f8c040ff7490dc527f074fca6b9583bf1af2ee5

Contents?: true

Size: 797 Bytes

Versions: 4

Compression:

Stored size: 797 Bytes

Contents

require_relative 'observable'
require_relative 'observer'

module Glimmer
  class WidgetBinding
    include Glimmer
    include Observable
    include Observer

    attr_reader :widget, :property
    def initialize(model, property, translator = nil)
      @widget = model
      @property = property
      @translator = translator || proc {|value| value}
      add_contents(@widget) {
        on_widget_disposed { |dispose_event|
          unregister_all_observables
        }
      }
    end
    def call(value)
      converted_value = translated_value = @translator.call(value)
      @widget.set_attribute(@property, converted_value) unless evaluate_property == converted_value
    end
    def evaluate_property
      @widget.widget.send(@property)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
glimmer-0.4.3 lib/glimmer/command_handlers/models/widget_binding.rb
glimmer-0.4.2 lib/glimmer/command_handlers/models/widget_binding.rb
glimmer-0.4.1 lib/glimmer/command_handlers/models/widget_binding.rb
glimmer-0.4.0 lib/glimmer/command_handlers/models/widget_binding.rb