Class: GObject::Object

Inherits:
Object
  • Object
show all
Defined in:
lib/ffi-gobject/object.rb

Overview

Overrides for GObject, GObject’s generic base class.

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object

TODO: Generate accessor methods from GIR at class definition time



10
11
12
13
14
15
16
17
18
# File 'lib/ffi-gobject/object.rb', line 10

def method_missing(method, *args)
  if respond_to?("get_#{method}")
    return send("get_#{method}", *args)
  end
  if method.to_s =~ /(.*)=$/ && respond_to?("set_#{$1}")
    return send("set_#{$1}", *args)
  end
  super
end

Instance Method Details

#get_property_extended(property_name) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/ffi-gobject/object.rb', line 27

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) ⇒ Object Also known as: get_property



38
39
40
41
42
43
44
45
# File 'lib/ffi-gobject/object.rb', line 38

def get_property_with_override property_name
  pspec = type_class.find_property property_name

  gvalue = GObject::Value.for_g_type pspec.value_type
  get_property_without_override property_name, gvalue

  gvalue
end

#set_property_extended(property_name, value) ⇒ Object



47
48
49
50
51
52
# File 'lib/ffi-gobject/object.rb', line 47

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) ⇒ Object Also known as: set_property



54
55
56
57
58
59
# File 'lib/ffi-gobject/object.rb', line 54

def set_property_with_override property_name, value
  pspec = type_class.find_property property_name
  gvalue = GObject::Value.for_g_type pspec.value_type
  gvalue.set_value value
  set_property_without_override property_name, gvalue
end

#signal_connect(event, &block) ⇒ Object



20
21
22
# File 'lib/ffi-gobject/object.rb', line 20

def signal_connect(event, &block)
  GObject.signal_connect(self, event, &block)
end

#type_classObject



61
62
63
# File 'lib/ffi-gobject/object.rb', line 61

def type_class
  GObject::ObjectClass.wrap(self.to_ptr.get_pointer 0)
end