Tema: Tip
Pregunta: ¿ Cómo crear un boton con una imagen ?
Respuesta:
Como GtkButton solo tiene la capacidad de contener un solo widget, que por defecto vendria siendo GtkLabel, lo que tendriamos que hacer es crear un botón vacio y a ese botón vacio agregarle con el método add() un container que tenga la capacidad de contener más de un widget, y que a su vez este container tenga un GtkLabel y GtkPixmap en su interior.
Ejemplo:
Código PHP:
<?php
if(!extension_loaded("gtk"))
{
dl( 'php_gtk.' . PHP_SHLIB_SUFFIX);
}
function salir()
{
gtk::main_quit();
}
//creamos la ventana principal
$win = &new GtkWindow();
$win->realize();
//creamos un boton (vacio, sin etiqueta)
$boton = &new GtkButton();
//creamos una caja horizontal
$hbox = &new GtkHBox();
//creamos una etiqueta
$etiqueta = &new GtkLabel("Un boton");
//creamos un pixmap
list($pix,$mask) = gdk::pixmap_create_from_xpm($win->window, null, "pixmap.xpm");
$pixmap = &new GtkPixmap($pix,$mask);
//añadimos $pixmap y $etiqueta al container $hbox
$hbox->pack_start($pixmap);
$hbox->pack_end($etiqueta);
//añadimos $hbox a $boton con el método add()
$boton->add($hbox);
//añadimos $boton a $win
$win->add($boton);
//conectamos la ventana principal y el boton con el callback(función) "salir"
$win->connect("destroy","salir");
$boton->connect("clicked","salir");
//mostramos la ventana
$win->show_all();
//iniciamos el loop principal
gtk::main();
?>
Espero que a alguien le sirva y también espero que no me haya enredado mucho con la explicación, nunca he sido muy bueno en eso de explicar.
Saludos
Pd: El Formato de la imagen siempre tiene que ser xpm. Si usan Linux y tienen un icono que quieran usar y este no está en formato xpm, lo que pueden hacer es convertir ese icono a formato xpm usando ImageMagick (que viene en casi todas las distros por defecto)
Código:
$convert icono.png icono.xpm
Pd2: Ya se viene PHP-GTK 2
, y a mi recién se me ocurrió meterme en esto de PHP GTK, bueno, me sirve para estar preparado.