class GObject::Object
Public Class Methods
Source
# File lib/ffi-gobject/object.rb, line 57 def self.make_finalizer(ptr) proc { finalize ptr } end
Source
# File lib/ffi-gobject/object.rb, line 40 def self.new(...) obj = allocate obj.__send__(:initialize, ...) obj end
Source
# File lib/ffi-gobject/object.rb, line 14 def self.new_with_properties(...) obj = allocate obj.__send__(:initialize_with_properties, ...) obj end
Protected Class Methods
Source
# File lib/ffi-gobject/object.rb, line 64 def finalize(ptr) 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
Public Instance Methods
Source
# File lib/ffi-gobject/object.rb, line 22 def initialize_with_properties(properties = {}) names, gvalues = names_and_gvalues_for_properties(properties) n_properties = names.length names_arr = GirFFI::SizedArray.from(:utf8, -1, names) gvalues_arr = GirFFI::SizedArray.from(GObject::Value, -1, gvalues) ptr = GObject::Lib.g_object_new_with_properties(self.class.gtype, n_properties, names_arr, gvalues_arr) store_pointer ptr end
Starting with GLib
2.54.0, use g_object_new_with_properties, which takes an array of names and an array of values.
Also aliased as: initialize
Source
# File lib/ffi-gobject/object.rb, line 74 def signal_connect(event, data = nil, &) GObject.signal_connect(self, event, data, &) end
Source
# File lib/ffi-gobject/object.rb, line 78 def signal_connect_after(event, data = nil, &) GObject.signal_connect_after(self, event, data, &) end
Private Instance Methods
Source
# File lib/ffi-gobject/object.rb, line 110 def gvalue_for_property(property_name) gtype = property_gtype property_name GObject::Value.for_gtype gtype end
Source
# File lib/ffi-gobject/object.rb, line 94 def make_finalizer ObjectSpace.define_finalizer self, self.class.make_finalizer(struct.to_ptr) end
Source
# File lib/ffi-gobject/object.rb, line 98 def names_and_gvalues_for_properties(properties) return [], [] unless properties.any? properties.map do |name, value| name = name.to_s gvalue = gvalue_for_property(name) gvalue.set_value value [name, gvalue] end.transpose end
Source
# File lib/ffi-gobject/object.rb, line 115 def property_gtype(property_name) property_param_spec(property_name).value_type end
Source
# File lib/ffi-gobject/object.rb, line 119 def property_param_spec(property_name) class_struct.find_property property_name or raise GirFFI::PropertyNotFoundError.new(property_name, self.class) end
Source
# File lib/ffi-gobject/object.rb, line 89 def store_pointer(ptr) super make_finalizer end
Calls superclass method