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)
Also aliased as: get_property_without_override
Alias for: get_property_with_override
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
initialize(properties)
Also aliased as: initialize_without_automatic_gtype, base_initialize
Alias for: initialize_with_automatic_gtype
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
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)
Also aliased as: set_property_without_override
Alias for: set_property_with_override
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
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
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