Using Custom Parameters

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.