class GObject::Object

Overrides for GObject, GObject's generic base class.

Public Class Methods

make_finalizer(ptr, name) click to toggle source
# File lib/ffi-gobject/object.rb, line 24
def self.make_finalizer(ptr, name)
  proc do
    rc = GObject::Object::Struct.new(ptr)[:ref_count]
    if rc == 0
      warn "not unreffing #{name}:#{ptr} (#{rc})"
    else
      GObject::Lib.g_object_unref ptr
    end
  end
end

Public Instance Methods

get_property(property_name)
get_property_extended(property_name) click to toggle source
# File lib/ffi-gobject/object.rb, line 57
def get_property_extended(property_name)
  gvalue = get_property property_name
  type_info = get_property_type property_name
  case type_info.tag
  when :ghash, :glist
    adjust_value_to_type gvalue.get_value_plain, type_info
  else
    gvalue.get_value
  end
end
get_property_with_override(property_name) click to toggle source
# File lib/ffi-gobject/object.rb, line 68
def get_property_with_override(property_name)
  pspec = type_class.find_property property_name

  gvalue = GObject::Value.for_gtype pspec.value_type
  get_property_without_override property_name, gvalue

  gvalue
end
Also aliased as: get_property
get_property_without_override(property_name)
Alias for: get_property
initialize(properties)
initialize_with_automatic_gtype(properties) click to toggle source
# File lib/ffi-gobject/object.rb, line 8
def initialize_with_automatic_gtype(properties)
  initialize_without_automatic_gtype(self.class.gtype, properties)
end
Also aliased as: initialize
initialize_without_automatic_gtype(properties)
Alias for: initialize
method_missing(method, *args) click to toggle source

TODO: Generate accessor methods from GIR at class definition time

Calls superclass method
# File lib/ffi-gobject/object.rb, line 36
def method_missing(method, *args)
  getter_name = "get_#{method}"
  return send(getter_name, *args) if respond_to?(getter_name)
  if method.to_s =~ /(.*)=$/
    setter_name = "set_#{Regexp.last_match[1]}"
    return send(setter_name, *args) if respond_to?(setter_name)
  end
  super
end
set_property(property_name, value)
set_property_extended(property_name, value) click to toggle source
# File lib/ffi-gobject/object.rb, line 77
def set_property_extended(property_name, value)
  type_info = get_property_type property_name
  adjusted_value = adjust_value_to_type(value, type_info)

  set_property property_name, adjusted_value
end
set_property_with_override(property_name, value) click to toggle source
# File lib/ffi-gobject/object.rb, line 84
def set_property_with_override(property_name, value)
  pspec = type_class.find_property property_name
  gvalue = GObject::Value.for_gtype pspec.value_type
  gvalue.set_value value
  set_property_without_override property_name, gvalue
end
Also aliased as: set_property
set_property_without_override(property_name, value)
Alias for: set_property
signal_connect(event, data = nil, &block) click to toggle source
# File lib/ffi-gobject/object.rb, line 46
def signal_connect(event, data = nil, &block)
  GObject.signal_connect(self, event, data, &block)
end
signal_connect_after(event, data = nil, &block) click to toggle source
# File lib/ffi-gobject/object.rb, line 50
def signal_connect_after(event, data = nil, &block)
  GObject.signal_connect_after(self, event, data, &block)
end
store_pointer(ptr) click to toggle source
Calls superclass method
# File lib/ffi-gobject/object.rb, line 18
def store_pointer(ptr)
  super
  klass = self.class
  ObjectSpace.define_finalizer self, klass.make_finalizer(ptr, klass.name)
end
type_class() click to toggle source
# File lib/ffi-gobject/object.rb, line 91
def type_class
  GObject::ObjectClass.wrap(to_ptr.get_pointer 0)
end

Private Instance Methods

adjust_value_to_type(val, type_info) click to toggle source

TODO: Move to ITypeInfo

# File lib/ffi-gobject/object.rb, line 112
def adjust_value_to_type(val, type_info)
  case type_info.flattened_tag
  when :ghash
    GLib::HashTable.from type_info.element_type, val
  when :glist
    GLib::List.from type_info.element_type, val
  when :strv
    GLib::Strv.from val
  else
    val
  end
end
base_initialize(properties)
Alias for: initialize
get_property_type(property_name) click to toggle source
# File lib/ffi-gobject/object.rb, line 106
def get_property_type(property_name)
  prop = self.class.find_property property_name
  prop.property_type
end