Sha256: acddfcd02075cd8fe4e2556414ef08a6da5a9aedf9f41d2f6fb889978573b359

Contents?: true

Size: 947 Bytes

Versions: 28

Compression:

Stored size: 947 Bytes

Contents

require 'glimmer/data_binding/observable'
require 'glimmer/data_binding/observer'

module Glimmer
  module DataBinding
    class WidgetBinding
      include Glimmer
      include Observable
      include Observer

      attr_reader :widget, :property
      def initialize(widget, property, translator = nil)
        @widget = widget
        @property = property
        @translator = translator || proc {|value| value} #TODO check on this it doesn't seem used

        if @widget.respond_to?(:dispose)
          @widget.on_widget_disposed do |dispose_event|
            unregister_all_observables
          end
        end
      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.get_attribute(@property)
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
glimmer-dsl-swt-0.6.9 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.6.8 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.6.7 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.6.6 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.6.5 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.6.4 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.6.3 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.6.2 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.6.1 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.6.0 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.5.6 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.5.5 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.5.4 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.5.3 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.5.2 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.5.1 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.5.0 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.4.1 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.4.0 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.3.1 lib/glimmer/data_binding/widget_binding.rb