When you are connecting signals to functions, it is possible to add one or more custom parameters to the signal handler. As seen earlier, connect_object() can be used to pass a particular widget into a function, however an alternative is to use connect() with extra parameters for the information you wish to use inside the function.
So, connect() could have been called like this:
$window->connect('button-press-event', 'show_popup', $menu);
The handler function would then need to have accepted three parameters - the event, the GtkWindow object that emitted the signal, and the custom parameter $menu. The only difference here is that behind the scenes a little more data needs to be passed around for the handler function to be called with the extra parameter.
Here is a complete code example you can try out to get the idea:
<?php
function btnClick($button, $window) {
$window->destroy();
gtk::main_quit();
}
$window =& new GtkWindow();
$btnquit =& new GtkButton("Quit");
$btnquit->connect("clicked", "btnClick", $window);
$window->add($btnquit);
$window->show_all();
gtk::main();
?>
As you can see, the parameter $button is not being used inside btnClick(), however that is hardly a major speed hit.
Want to learn PHP 7?
Hacking with PHP has been fully updated for PHP 7, and is now available as a downloadable PDF. Get over 1200 pages of hands-on PHP learning today!
If this was helpful, please take a moment to tell others about Hacking with PHP by tweeting about it!
Next chapter: GUI Themes >>
Previous chapter: Advanced GUIs
Jump to:
Home: Table of Contents
Copyright ©2015 Paul Hudson. Follow me: @twostraws.