/** * 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); }