class Vizkit::VizkitAccessorItem

Item which can be bind to a member variable of an object which have simple types as possible values

Public Class Methods

new(obj,variable_name) click to toggle source
Calls superclass method Vizkit::VizkitItem.new
# File lib/vizkit/vizkit_items.rb, line 157
def initialize(obj,variable_name)
    super()
    variable_name = variable_name.to_sym
    @obj = obj
    @getter = if @obj.respond_to?(variable_name)
                  @obj.method(variable_name)
              else
                  raise ArgumentError,"no getter for #{variable_name} on obj #{obj}"
              end
    name = "#{variable_name}=".to_sym
    @setter = if @obj.respond_to?(name)
                  setEditable true
                  @obj.method(name)
              end
end

Public Instance Methods

data(role = Qt::UserRole+1) click to toggle source
Calls superclass method
# File lib/vizkit/vizkit_items.rb, line 173
def data(role = Qt::UserRole+1)
    # workaround memeroy leak qt-ruby
    # the returned Qt::Variant is never be deleted
    @last_data.dispose if @last_data
    @last_data = if role == Qt::DisplayRole || role == Qt::EditRole
                     Qt::Variant.new @getter.call
                 else
                     super
                 end
end
setData(data,role = Qt::UserRole+1) click to toggle source
Calls superclass method
# File lib/vizkit/vizkit_items.rb, line 184
def setData(data,role = Qt::UserRole+1)
    if role == Qt::EditRole && !data.isNull && @setter
        @setter.call(from_variant(data,@getter.call.class))
    else
        super
    end
end