Class: GObject::Object
- Inherits:
-
Object
- Object
- GObject::Object
- Defined in:
- lib/ffi-gobject/object.rb
Overview
Overrides for GObject, GObject’s generic base class.
Class Method Summary collapse
- .make_finalizer(ptr) ⇒ Object
- .new(*args, &block) ⇒ Object
- .new_with_properties(*args, &block) ⇒ Object
Instance Method Summary collapse
- #get_property_extended(property_name) ⇒ Object deprecated Deprecated.
- #get_property_with_override(property_name) ⇒ Object (also: #get_property)
-
#initialize_with_automatic_gtype(properties = {}) ⇒ Object
(also: #initialize)
Before GLib 2.54.0, use g_object_newv, which takes an array of GParameter.
-
#initialize_with_properties(properties = {}) ⇒ Object
Starting with GLib 2.54.0, use g_object_new_with_properties, which takes an array of names and an array of values.
- #ref ⇒ Object
- #set_property_extended(property_name, value) ⇒ Object deprecated Deprecated.
- #set_property_with_override(property_name, value) ⇒ Object (also: #set_property)
- #signal_connect(event, data = nil, &block) ⇒ Object
- #signal_connect_after(event, data = nil, &block) ⇒ Object
- #store_pointer(ptr) ⇒ Object
Class Method Details
.make_finalizer(ptr) ⇒ Object
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/ffi-gobject/object.rb', line 82 def self.make_finalizer(ptr) 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 |
.new(*args, &block) ⇒ Object
41 42 43 44 45 |
# File 'lib/ffi-gobject/object.rb', line 41 def self.new(*args, &block) obj = allocate obj.__send__ :initialize, *args, &block obj end |
.new_with_properties(*args, &block) ⇒ Object
15 16 17 18 19 |
# File 'lib/ffi-gobject/object.rb', line 15 def self.new_with_properties(*args, &block) obj = allocate obj.__send__ :initialize_with_properties, *args, &block obj end |
Instance Method Details
#get_property_extended(property_name) ⇒ Object
Deprecated.
105 106 107 |
# File 'lib/ffi-gobject/object.rb', line 105 def get_property_extended(property_name) get_property(property_name) end |
#get_property_with_override(property_name) ⇒ Object Also known as: get_property
109 110 111 112 113 114 115 116 117 118 |
# File 'lib/ffi-gobject/object.rb', line 109 def get_property_with_override(property_name) gvalue = gvalue_for_property property_name get_property_without_override property_name, gvalue value = gvalue.get_value type_info = get_property_type property_name value = property_value_post_conversion(value, type_info) if type_info value end |
#initialize_with_automatic_gtype(properties = {}) ⇒ Object Also known as: initialize
Before GLib 2.54.0, use g_object_newv, which takes an array of GParameter.
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/ffi-gobject/object.rb', line 50 def initialize_with_automatic_gtype(properties = {}) gparameters = properties.map do |name, value| name = name.to_s property_param_spec(name) GObject::Parameter.new.tap do |gparam| gparam.name = name gparam.value = value end end initialize_without_automatic_gtype(self.class.gtype, gparameters) end |
#initialize_with_properties(properties = {}) ⇒ Object
Starting with GLib 2.54.0, use g_object_new_with_properties, which takes an array of names and an array of values.
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/ffi-gobject/object.rb', line 23 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 |
#ref ⇒ Object
72 73 74 75 |
# File 'lib/ffi-gobject/object.rb', line 72 def ref Lib.g_object_ref self self end |
#set_property_extended(property_name, value) ⇒ Object
Deprecated.
121 122 123 |
# File 'lib/ffi-gobject/object.rb', line 121 def set_property_extended(property_name, value) set_property property_name, value end |
#set_property_with_override(property_name, value) ⇒ Object Also known as: set_property
125 126 127 128 129 130 131 132 133 |
# File 'lib/ffi-gobject/object.rb', line 125 def set_property_with_override(property_name, value) type_info = get_property_type property_name value = property_value_pre_conversion(value, type_info) if type_info gvalue = gvalue_for_property(property_name) gvalue.set_value value set_property_without_override property_name, gvalue end |
#signal_connect(event, data = nil, &block) ⇒ Object
93 94 95 |
# File 'lib/ffi-gobject/object.rb', line 93 def signal_connect(event, data = nil, &block) GObject.signal_connect(self, event, data, &block) end |
#signal_connect_after(event, data = nil, &block) ⇒ Object
97 98 99 |
# File 'lib/ffi-gobject/object.rb', line 97 def signal_connect_after(event, data = nil, &block) GObject.signal_connect_after(self, event, data, &block) end |
#store_pointer(ptr) ⇒ Object
77 78 79 80 |
# File 'lib/ffi-gobject/object.rb', line 77 def store_pointer(ptr) super ObjectSpace.define_finalizer self, self.class.make_finalizer(ptr) end |