class GLib::Instantiatable

Public Class Methods

include(*modules, &block) click to toggle source
Calls superclass method
# File lib/glib2.rb, line 142
def include(*modules, &block)
  result = super
  modules.each do |mod|
    next if mod.is_a?(Interface)
    mod.public_instance_methods(false).each do |name|
      check_new_method(name)
    end
    mod.protected_instance_methods(false).each do |name|
      check_new_method(name)
    end
    mod.private_instance_methods(false).each do |name|
      check_new_method(name)
    end
  end
  result
end
method_added(name) click to toggle source
Calls superclass method
# File lib/glib2.rb, line 136
def method_added(name)
  result = super
  check_new_method(name)
  result
end

Private Class Methods

check_new_method(name) click to toggle source
# File lib/glib2.rb, line 160
def check_new_method(name)
  case name.to_s
  when /\A#{Regexp.escape(SIGNAL_HANDLER_PREFIX)}/o
    signal_name = $POSTMATCH
    begin
      signal_ = signal(signal_name)
    rescue NoSignalError
      return
    end
    return unless signal_.class != self
    signal_handler_attach(signal_, name.to_s) do |instance, *args|
      instance.__send__(name, *args)
    end
  when /\A#{Regexp.escape(VIRTUAL_FUNCTION_IMPLEMENTATION_PREFIX)}/o
    ancestors.each do |klass|
      next unless klass.respond_to?(:implement_virtual_function)
      return if klass.implement_virtual_function(self, name)
    end
  end
end

Private Instance Methods

create_signal_handler(signal_name, callback) click to toggle source
# File lib/glib2.rb, line 183
def create_signal_handler(signal_name, callback)
  callback
end