Utilizando as facilidades do GtkMenuBar

Explicação

A criação de menus se torna complexo quando a arvore de itens é muito grande. Atualmente é necessário criar item, adiciona-lo ao menu e depois adicioná-lo ao menubar. Com a utilização do Fabula::GtkMenuBar, a construção é feita de forma automatizada, sendo que o programador só precisará adicionar os itens onde desejar.

Imagem

Exemplo


 * @download 
 */
class Demo {
	/**
	 * Armazena os widgets necessarios
	 * 
	 * @access private
	 * @property array $widgets
	 */
	public $widgets = array();
	
	/**
	 * @name __construct()
	 * @return Demo
	 */
	public function __construct() {
		// Cria a janela
		$this->widgets['frmDemo'] = new GtkWindow();
		$this->widgets['frmDemo']->set_size_request(250, 250);
		$this->widgets['frmDemo']->set_position(Gtk::WIN_POS_CENTER_ALWAYS);
		$this->widgets['frmDemo']->set_title("Demo");
		$this->widgets['frmDemo']->connect("destroy", array($this, "frmDemo_unload"));

		$vbox = new GtkVBox();
		
		// Adiciona o menu
		$this->widgets['mnuBar'] = Fabula::GtkMenuBar();
		$vbox->pack_start($this->widgets['mnuBar'], FALSE, FALSE);
		
		// Arquivo
		$mnuFile = $this->widgets['mnuBar']->append_menu("_Arquivo");
		$mnuImportar = $mnuFile->append_menu("Importar");
		$mnuFile->append_item("Exportar");
		$mnuFile->append_separator();
		$mnuFile->append_item("Sair", array($this, "sair_onclick"));
		
		// Importar
		$mnuImportar->append_item("Arquivo 1");
		$mnuImportar->append_item("Arquivo 2");
		
		// Ajuda
		$mnuHelp = $this->widgets['mnuBar']->append_menu("Aju_da");
		$mnuHelp->append_item("Ajuda");
		$mnuHelp->append_item("Site na Web");
		$mnuHelp->append_separator();
		$mnuHelp->append_item("Sobre");
		
		$this->widgets['frmDemo']->add($vbox);
		$vbox->pack_start(new GtkFixed(), TRUE, TRUE);
		
		// Inicia a aplicação
		$this->frmDemo_onload();
	}
	
	/**
	 * Método do carregamento do formulario
	 * 
	 * @name frmDemo_onload()
	 */
	public function frmDemo_onload() {
		// Inicia a aplicação
		$this->widgets['frmDemo']->show_all();
		Gtk::main();
	}
	
	/**
	 * Método do descarregamento do formulario
	 * 
	 * @name frmDemo_unload()
	 */
	public function frmDemo_unload() {
		// Encerra a aplicação
		Gtk::main_quit();
	}
}
	
/**
 * Inicia o demo
 */
new Demo();

Referências

http://gtk.php.net/manual/en/gtk.gtkmenubar.php