Sha256: e7882e74a96bed986ec4655715ab47d2ba8eb2d8e2fd80986996cb9f5416e630

Contents?: true

Size: 884 Bytes

Versions: 18

Compression:

Stored size: 884 Bytes

Contents

require 'glimmer'
require_relative 'observable'
require_relative 'observer'

module Glimmer
  module DataBinding
    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}

        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

18 entries across 18 versions & 2 rubygems

Version Path
glimmer-dsl-swt-0.1.1 lib/glimmer/data_binding/widget_binding.rb
glimmer-dsl-swt-0.1.0 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.8.2 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.8.1 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.8.0 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.7.8 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.7.7 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.7.6 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.7.5 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.7.4 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.7.3 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.7.2 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.7.1 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.7.0 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.6.0 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.5.11 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.5.10 lib/glimmer/data_binding/widget_binding.rb
glimmer-0.5.9 lib/glimmer/data_binding/widget_binding.rb