Chat with us, powered by LiveChat
How to create PHP-GTK GTK+ menus / menu items?

How to create PHP-GTK GTK+ menus / menu items?

PHP Programming Language Logo ImagePHP-GTK Logo

In respect to our forum post on how to install PHP-GTK on Ubuntu / Linux, we will have a series of howtos on our blog with respect to PHP-GTK – which is a PHP language binding to the GTK+ widget toolkit. With this in mind, you can create pretty robust desktop applications using PHP-GTK. In this article, we’ll show you how to create menus using PHP-GTK – and because the documentation is somewhat quite bear we thought we’d make an article on various aspects of PHP-GTK you may struggle to understand at first.

How well supported is PHP-GTK?

In comparison to PyGTK (a Python GTK+ language binding) and other language bindings you can use, PHP-GTK is not as widely supported as one would hope so if you are considering using PHP-GTK for most robust application development, you’ll unfortunately need to consider using a different language binding, such as Python. Many Linux distributions come bundled with all the packages you need to start developing and running PyGTK applications. However, with PHP-GTK, you need to install the dependencies and then compile and install PHP-GTK. If your primary target market is those that will understand how to execute commands via the Terminal and wouldn’t mind doing so, sure, PHP-GTK is a good option – and especially because on Windows, there are pre-compiled binaries available. All you need to do with the pre-compiled binary is execute your PHP-GTK script against the PHP interpreter executable. On Mac OS X, installation isn’t as easy – it’s essentially as cumbersome as getting PHP-GTK installed on Linux distributions.

How do I install PHP-GTK?

For Linux distributions, a link at the top of this article is to a forum post we have on our Web Hosting Forum with a detailed howto on getting PHP-GTK installed on Linux distributions such as Ubuntu. The primary issue at hand here is that you need to install quite a few packages (which are referred to as “dependencies” – because PHP-GTK depend on these packages prior to you being able to compile and install PHP-GTK). Once these dependencies are installed, all you need to install after that is “pecl-cairo” (the Cairo Extension) and then compile and install PHP-GTK. However, on Ubuntu, you may also need to do one more step which is relating to libtool.m4. All with easy to follow instructions in the thread itself.

PHP-GTK code.

So let’s take a look at the code – the code is commented to explain each part.

public function addMenu()
{
/* create the menu */
// the “File” and “Help” main menus
$file = new GtkMenuItem(“File”);
$help = new GtkMenuItem(“Help”);

// create the menubar
// we append the File, Help to the MenuBar
$menubar = new GtkMenuBar();
$menubar->append($file);
$menubar->append($help);

// append the menu options
// this is for the actual menu options

// this is for the “File” menu
$menu = new GtkMenu();

// this is for the “Help” menu
$menu2 = new GtkMenu();

$open = new GtkMenuItem(“Open”);
$save = new GtkMenuItem(“Save As…”);
$quit = new GtkMenuItem(“Quit”);
$about = new GtkMenuItem(“About”);

// connect the signals

$quit->connect_simple(‘activate’,array($this,’menuOptionClicked’),”quit”);
$open->connect_simple(‘activate’,array($this,’menuOptionClicked’),”open”);
$save->connect_simple(‘activate’,array($this,’menuOptionClicked’),”save”);

// we append the menu items to the MenuBar
$menu->append($open);
$menu->append($this->menuSaveItem);
$menu->append($quit);

$menu2->append($about);

// we set the MenuBar as the submenu for the MenuItem “File” and likewise for “Help”
$file->set_submenu($menu);
$help->set_submenu($menu2);

// we the pack the $menubar the MenuBar (which holds File and Help, to the init_vbox)
$this->init_vbox->pack_start($menubar,FALSE,FALSE);
}

You can then execute this method where necessary. For example, via the constructor method. Such as:

public function __construct()
{
$this->addMenu(); // execute the addMenu() method
}

And that’s it! It’s not as simple as it could be, but once you understand how it works – it’s easy to do again.

Ben Stones

Ben's main IT experience is on software, programming, website development and marketing topics including search engine optimisation. At eUKhost, he regularly works alongside the marketing department on product marketing strategies, and in the development and quality control of the communications which are sent to customers and through the press distribution network. Aside from his regular collaboration with the marketing department on product marketing objectives, Ben occasionally works with the design department in conjunction with the management team on the development of new product pages and the stringent quality control requirements.
Ben Stones

Sharing

Leave your comment