view subtly/gobject.rb @ 42:c6f35cf6c4f6

Added GObject.set
author unexist
date Sun, 24 Jan 2010 01:55:42 +0100
parents 6838c7123945
children
line wrap: on
line source

##
# @package subtly
#
# @file GObject bindings
# @author Christoph Kappel <unexist@dorfelite.net>
# @version $Id: subtly/gobject.rb,v 42 1264294542.0-3600 unexist $
#
# This program can be distributed under the terms of the GNU GPL.
##

require "ffi"

module Subtly
  module GObject # {{{
    extend FFI::Library

    ffi_lib("libgobject-2.0")

    ## set {{{
    # Set object options
    #
    # @param [Object,  #read]  object               A #GObject
    # @param [String,  #read]  first_property_name  Name of the first property
    # @param [Pointer, #read]  value                Value for property
    ##

    def self.set(object, name, value)
      Subtly::GObject.ffi_set(object, name, value.to_wid, nil)
    end # }}}

    # Callback type
    callback :g_callback2, [ :pointer, :pointer ],                     :void
    callback :g_callback3, [ :pointer, :pointer, :pointer ],           :void
    callback :g_callback4, [ :pointer, :pointer, :pointer, :pointer ], :void

    ## ffi_signal_connect {{{
    # Add signal callback
    #
    # @param [Pointer, #read]  Widget to attach callback
    # @param [String,  #read]  Signal name
    # @param [Pointer, #read]  Callback function
    # @param [Pointer, #read]  Callback data
    ##

    attach_function(:ffi_signal_connect2,
      :g_signal_connect_data, [ :pointer, :string, :g_callback2, :pointer, :pointer, :int ], :ulong
    )
    attach_function(:ffi_signal_connect3,
      :g_signal_connect_data, [ :pointer, :string, :g_callback3, :pointer, :pointer, :int ], :ulong
    )
    attach_function(:ffi_signal_connect4,
      :g_signal_connect_data, [ :pointer, :string, :g_callback4, :pointer, :pointer, :int ], :ulong
    )
    # }}} 

    private

    ## ffi_set
    # Set object options
    #
    # @param [Pointer, #read]  object               A #GObject
    # @param [String,  #read]  first_property_name  Name of the first property
    # @param [Pointer, #read]  value                Value for property
    # @param [Pointer, #read]  data                 Nil data
    ##

    attach_function(:ffi_set,
      :g_object_set, [ :pointer, :string, :pointer, :pointer ], :void
    )
  end # }}}
end

# vim:ts=2:bs=2:sw=2:et:fdm=marker