module GObject

Module representing GLib's GObject namespace.

Preload type contants

The part of the GObject namespace that is needed by GObjectIntrospection.

Constants

TYPE_ARRAY
TYPE_BOOLEAN
TYPE_BOXED
TYPE_BYTE_ARRAY
TYPE_CHAR
TYPE_DOUBLE
TYPE_ENUM
TYPE_FLAGS
TYPE_FLOAT
TYPE_GTYPE
TYPE_HASH_TABLE
TYPE_INT
TYPE_INT64
TYPE_INTERFACE
TYPE_INVALID
TYPE_LONG
TYPE_NONE
TYPE_OBJECT
TYPE_PARAM
TYPE_POINTER
TYPE_STRING
TYPE_STRV
TYPE_UCHAR
TYPE_UINT
TYPE_UINT64
TYPE_ULONG
TYPE_VARIANT

Public Class Methods

object_class_from_instance(instance) click to toggle source
# File lib/ffi-gobject.rb, line 27
def self.object_class_from_instance(instance)
  object_class_from_instance_pointer instance.to_ptr
end
object_class_from_instance_pointer(inst_ptr) click to toggle source
# File lib/ffi-gobject.rb, line 31
def self.object_class_from_instance_pointer(inst_ptr)
  return nil if inst_ptr.null?
  klsptr = inst_ptr.get_pointer 0
  ObjectClass.wrap klsptr
end
param_spec_int(name, nick, blurb, minimum, maximum, default_value, flags) click to toggle source

Smells of :reek:LongParameterList: due to the C interface. rubocop:disable Metrics/ParameterLists

# File lib/ffi-gobject.rb, line 73
def self.param_spec_int(name, nick, blurb, minimum, maximum, default_value, flags)
  ptr = Lib.g_param_spec_int(name, nick, blurb, minimum, maximum,
                             default_value, flags)
  ParamSpecInt.wrap(ptr)
end
signal_connect(object, detailed_signal, data = nil, after = false, &block) click to toggle source
# File lib/ffi-gobject.rb, line 57
def self.signal_connect(object, detailed_signal, data = nil, after = false, &block)
  raise ArgumentError, 'Block needed' unless block_given?
  signal_name, = detailed_signal.split('::')
  sig_info = object.class.find_signal signal_name

  closure = sig_info.wrap_in_closure { |*args| block.call(*args << data) }

  signal_connect_closure object, detailed_signal, closure, after
end
signal_connect_after(object, detailed_signal, data = nil, &block) click to toggle source
# File lib/ffi-gobject.rb, line 67
def self.signal_connect_after(object, detailed_signal, data = nil, &block)
  signal_connect object, detailed_signal, data, true, &block
end
signal_emit(object, detailed_signal, *args) click to toggle source
# File lib/ffi-gobject.rb, line 41
def self.signal_emit(object, detailed_signal, *args)
  signal, detail = detailed_signal.split('::')
  signal_id = signal_lookup_from_instance signal, object
  detail_quark = GLib.quark_from_string(detail)

  sig_info = object.class.find_signal signal
  argument_gvalues = sig_info.arguments_to_gvalues object, args
  return_gvalue = sig_info.gvalue_for_return_value

  result = signal_emitv argument_gvalues, signal_id, detail_quark, return_gvalue
  # NOTE: Depending on the version of GObjectIntrospection, the result will
  # be stored in result or return_gvalue. This was changed between versions
  # 1.44 and 1.46.
  result || return_gvalue
end
signal_lookup_from_instance(signal, object) click to toggle source
# File lib/ffi-gobject.rb, line 37
def self.signal_lookup_from_instance(signal, object)
  signal_lookup signal, type_from_instance(object)
end
type_from_instance(instance) click to toggle source
# File lib/ffi-gobject.rb, line 23
def self.type_from_instance(instance)
  type_from_instance_pointer instance.to_ptr
end
type_from_instance_pointer(inst_ptr) click to toggle source
# File lib/ffi-gobject.rb, line 17
def self.type_from_instance_pointer(inst_ptr)
  return nil if inst_ptr.null?
  klsptr = inst_ptr.get_pointer 0
  GirFFI::InOutPointer.new(:GType, klsptr).to_value
end
type_init() click to toggle source
# File lib/gir_ffi-base/gobject.rb, line 5
def self.type_init
  Lib.g_type_init
end