}
    function __set_gproperty($spec, $value)
    {
        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)
示例#2
0
 /**
  *	write the signals for the given class object.
  *	works only if php-gtk2 module is installed and working
  *	
  *	@param $object	The class object which is passes to write_class
  */
 function write_signals($object)
 {
     global $signals_start_tpl, $signal_start_tpl, $cbfuncproto_tpl, $no_parameter_tpl, $signal_end_tpl, $signals_end_tpl;
     if (isset($GLOBALS['disable_signal_generation']) && $GLOBALS['disable_signal_generation']) {
         //is the second warning necessary?
         echo "signals are NOT generated as you don't have php-gtk2 installed\r\n";
         return;
     }
     $classname = $object->c_name;
     //why can't I do "$classname::gtype"?
     eval("\$gtype = {$classname}::gtype;");
     $signals = GObject::signal_list_names($gtype);
     if (count($signals) == 0) {
         return;
     }
     fwrite($this->fp, $signals_start_tpl);
     sort($signals);
     foreach ($signals as $signalname) {
         $GLOBALS['docgenstats']['signals']++;
         fwrite($this->fp, sprintf($signal_start_tpl, $this->prefix, strtolower($classname), $signalname, $signalname));
         $signal_info = GObject::signal_query($signalname, $gtype);
         $return_type = $this->get_type($signal_info[4]->name);
         if (!$return_type && $signal_info[4]->name == 'void') {
             $return_type = $signal_info[4]->name;
         }
         fwrite($this->fp, sprintf($cbfuncproto_tpl, $return_type ? $return_type : '<!-- was: ' . $signal_info[4]->name . ' -->XXX', $this->get_signal_paramdef($signal_info[5], $classname)));
         fwrite($this->fp, $signal_end_tpl);
     }
     fwrite($this->fp, $signals_end_tpl);
 }
示例#3
0
<?php

var_dump(GObject::signal_query('delete-event', GtkWindow::gtype));
/* Returns:
array(6) {
  [0]=>
  int(31)
  [1]=>
  string(12) "delete-event"
  [2]=>
  object(GType)#1 (2) {
    ["type"]=>
    int(142760632)
    ["name"]=>
    string(9) "GtkWidget"
  }
  [3]=>
  int(2)
  [4]=>
  object(GType)#2 (2) {
    ["type"]=>
    int(20)
    ["name"]=>
    string(8) "gboolean"
  }
  [5]=>
  array(1) {
    [0]=>
    object(GType)#3 (2) {
      ["type"]=>
      int(148319049)