class GObject::Object
Public Class Methods
make_finalizer(ptr)
click to toggle source
# File lib/ffi-gobject/object.rb, line 57 def self.make_finalizer(ptr) proc { finalize ptr } end
new(...)
click to toggle source
# File lib/ffi-gobject/object.rb, line 40 def self.new(...) obj = allocate obj.__send__(:initialize, ...) obj end
new_with_properties(...)
click to toggle 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
finalize(ptr)
click to toggle 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
initialize(properties = {})
Also aliased as: old_initialze, base_initialize
Alias for: initialize_with_properties
initialize_with_properties(properties = {})
click to toggle source
Starting with GLib
2.54.0, use g_object_new_with_properties, which takes an array of names and an array of values.
# 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
Also aliased as: initialize
ref()
click to toggle source
# File lib/ffi-gobject/object.rb, line 52 def ref Lib.g_object_ref self self end
signal_connect(event, data = nil, &block)
click to toggle source
# File lib/ffi-gobject/object.rb, line 74 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 78 def signal_connect_after(event, data = nil, &block) GObject.signal_connect_after(self, event, data, &block) end
Private Instance Methods
gvalue_for_property(property_name)
click to toggle 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
make_finalizer()
click to toggle source
# File lib/ffi-gobject/object.rb, line 94 def make_finalizer ObjectSpace.define_finalizer self, self.class.make_finalizer(struct.to_ptr) end
names_and_gvalues_for_properties(properties)
click to toggle 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
property_gtype(property_name)
click to toggle source
# File lib/ffi-gobject/object.rb, line 115 def property_gtype(property_name) property_param_spec(property_name).value_type end
property_param_spec(property_name)
click to toggle 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
store_pointer(ptr)
click to toggle source
Calls superclass method
# File lib/ffi-gobject/object.rb, line 89 def store_pointer(ptr) super make_finalizer end