in your object after creation */
    public $__gsignals = array('clicked' => 'override', 'mashed' => array(GObject::SIGNAL_RUN_LAST, GObject::TYPE_BOOLEAN, array(GObject::TYPE_LONG, GtkRequisition::gtype)));
    /* any method named ___do_{$signalname} will be considered the default handler for a signal */
    public function __do_clicked()
    {
        echo "do_clicked called\n";
    }
    function __do_mashed($arg, $arg2)
    {
        echo "NewType: class closure for `mashed` called with arguments {$arg}, ", get_class($arg2), "\n";
    }
}
/* handler to attach to our new signal */
function my_handler($obj, $arg, $arg2, $ex)
{
    echo "my_handler called with args {$arg}, ", get_class($arg2), " and extra {$ex}\n";
    /* This stops bubbling */
    return true;
}
GObject::register_type('NewType');
$c = new NewType();
$r = $c->size_request();
$c->connect('mashed', 'my_handler', 99);
$c->emit('clicked');
var_dump($c->emit('mashed', 42, $r));
/* Returns:
do_clicked called
my_handler called with args 42, GtkRequisition and extra 99
NewType: class closure for `mashed` called with arguments 42, GtkRequisition
bool(false)
*/
    {
        echo "__set_gproperty called for {$spec} = {$value}\n";
        if ($spec->name == 'foo') {
            $this->foo = $value;
        } else {
            if ($spec->name == 'bar') {
                $this->bar = $value;
            } else {
                trigger_error('Unknown property');
            }
        }
    }
}
GObject::register_type('NewType');
echo $c, "\n";
$c = new NewType();
var_dump($c->get_property('foo'));
var_dump($c->get_property('bar'));
var_dump($c->get_property('zoo'));
$c->set_property('bar', new GtkButton());
echo $c->get_property('bar');
echo "\n";
/* Returns:
__get_gproperty called for [GParamString 'foo']
string(6) "abcdef"
__get_gproperty called for [GParamObject 'bar']
NULL
__get_gproperty called for [GParamBoolean 'zoo']
bool(true)
__set_gproperty called for [GParamObject 'bar'] = [GtkButton object (GtkButton Gtk+ type)]
__get_gproperty called for [GParamObject 'bar']
Example #3
0
 function __do_mashed($arg, $arg2)
 {
     echo "NewType2: class closure for `mashed` called, chaining up to NewType\n";
     NewType::__do_mashed($arg, $arg2);
 }