Co to je PHP-GTK? - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



PHP

Co to je PHP-GTK?

php

11. května 2001, 00.00 | Termín PHP jste již zřejmě slyšeli, GTK možná ne. My vám ukážeme, co to vlastně je PHP-GTK. Aneb jak vytvářet grafické rozhraní a přitom používat všechny výhody PHP.

Nuže, co znamená ta podivná zkratka PHP-GTK? Většina z vás asi bude znát PHP, menší část už rozluští GTK. Tedy - PHP je hlavně serverový skriptovací jazyk. GTK+ je sada knihoven (původně napsaných pro grafický editor GIMP), které slouží k vytváření grafického uživatelského rozhraní. A určitě jste již uhodli, že PHP-GTK spojuje oba tyto zdánlivě rozdílné projekty.

Můžete tedy vytvářet grafické rozhraní a používat všechny výhody PHP, např. spolupráci s databázemi. Jak PHP, tak GTK+ jsou portovány na různé operační systémy (Linux, Windows i další), takže máte zaručeno snadné použití téměř všude.

Základní pojmy a instalace

Jako základní pojem bych zdůraznil widget - je to jakýkoli prvek uživatelského rozhraní vytvořený GTK+. (Ve slovníku jsem našel widget přeložen jako "taková ta věcička", takže raději zůstanu u anglického názvu.) Všechny widgety se vytváří stejně - např. nové okno vytvoříme příkazem $okno = &new GtkWindow;

Nechci vyvolávat zuřivou debatu, ale instalaci popíši na Windows, jelikož je jednodušší. Z webu gtk.php.net si stáhněte zkompilovanou poslední verzi pro Windows (v současné době je to 0.0.3, což ukazuje, že PHP-GTK se ještě mohutně vyvíjí). Vytvořte si např. adresář C:\phpgtk a do něj zkopírujte php.exe, php.ini a všechny dll knihovny. Tím je instalace dokončena. V zipu máte přibaleno i několik ukázkových skriptů, takže si je můžete prostudovat. Skripty se spouští takto: php.exe skript.php

První program

Proč otálet? Zkusíme si hned napsat první jednoduchý program.

Jak už jsme si řekli, výsledné programy jsou použitelné pod Windows i Linuxem. A toho dosáhneme jednoduchou podmínkou na samotném začátku skriptu.

if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
dl('php_gtk.dll'); //pokud pracujeme na Windows, použijeme knihovnu php_gtk.dll
else
dl('php_gtk.so'); //v opačném případě použijeme knihovnu php_gtk.so

Základem každého grafického prostředí je okno (což je vidět již z názvu - Windows či X-window), tudíž si vytvoříme nové okno našeho programu. Nastavíme si titulek okna, jeho velikost v pixelech a jeho pozici. S okny (a všemi widgety) toho lze provádět samozřejmě mnohem více, ale nebudeme program zbytečně prodlužovat.

Pro všechny widgety je však důležitá funkce $widget->connect_object('událost','funkce');. Tímto určíme, která funkce se provede při určité události. Události jsou předdefinované - např. pro tlačítko existují události pressed, released, clicked, enter, leave. U našeho okna sledujeme událost destroy, která nastane např. kliknutím na křížek v pravém horním rohu či stiskem Alt+F4; na tuto událost napojíme funkci Gtk::main_quit() (v tomto případě je napojení sice trochu komplikovanější, ale tím se nemusíte trápit).

$okno = &new GtkWindow(); //vytvoří nové okno
$okno->set_name('okno'); //jméno okna, které lze používat v rámci programu
$okno->set_title('moje prvni okno'); //nastaví titulek okna
$okno->set_position(GTK_WIN_POS_CENTER); //okno se otevře uprostřed obrazovky
$okno->set_usize(300,200); //velikost okna bude 300x200 pixelů
$okno->connect_object('destroy',array('gtk','main_quit')); //určí funkci, která se provede při zavření okna - v našem případě ukončí celý program

Dalším důležitým prvkem v GTK+ je GtkBox. Ten sám o sobě nic zvláštního neprovádí, pouze může obsahovat jiné widgety. Boxy jsou vertikální GtkVBox a horizontální GtkHBox. Widgety umístěné do horizontálního boxu se budou zobrazovat pěkně vedle sebe, kdežto ve vertikálním boxu se zobrazí pod sebou. Do boxu můžete samozřejmě umístit i další box, takže si snadno vytvoříte design okna přesně podle svých potřeb. Pro umístění jednoho widgetu do jiného (např. tlačítka do boxu) slouží funkce $box->add($widget);

Teď si vytvoříme vertikální box, do kterého umístíme nápis a tlačítko pěkně pod sebe. Při vytváření textu (GtkLabel) hned jako parametr zadáme text, který se má zobrazovat.

U nového tlačítka opět zadáme jako parametr text, který se ukáže na tlačítku. Události spojené s tlačítkem jsem nezmiňoval náhodou - nyní využijeme událost clicked (kliknutí na tlačítko), kterou propojíme se stejnou funkcí jako destroy událost okna - tedy ukončení celého programu.

$box = &new GtkVBox(); //vytvoří nový vertikální box
$okno->add($box); //umístíme box do okna

$text = &new GtkLabel("Toto je muj prvni program napsany v PHP-GTK"); //vytvoří nový text
$box->add($text); //přidá text do boxu

$tlacitko = &new GtkButton('ukonceni programu'); //vytvoří nové tlačítko s popisem
$tlacitko->connect_object('clicked',array('gtk','main_quit')); //při kliknutí na tlačítko se ukončí celý program
$box->add($tlacitko); //přidá tlačítko do boxu

Už nám zbývají jen poslední dva úkony. Vytvořené widgety jsou sice hezké, ale ještě se nezobrazí. K tomu poslouží funkce $widget->show(); (zobrazí daný widget), nebo lépe $widget->show_all(); (zobrazí daný widget a také všechny widget v něm obsažené - tedy v našem případě okno a všechno, co toto okno obsahuje).

A nakonec spustíme hlavní smyčku Gtk::main(); celého programu, čímž zaručíme, že se program hned neukončí a bude čekat až na ukončovací funkci Gtk::main_quit();

$okno->show_all(); //zobrazí okno a všechny widgety obsažené v okně
Gtk::main(); //spustí hlavní smyčku

Ještě dvě důležitá upozornění. První - jelikož jde o PHP skript, je třeba začít <? a skončit ?>. Druhé - v textech, které se mají zobrazit, nepoužívejte diakritiku - GTK+ používá Unicode UTF-8. Celý skript, který jsme spolu vytvořili si můžete stáhnout zde.

Výsledkem celého snažení by mělo být podobné okno:

Tento článek měl posloužit jako první letmé seznámení s PHP-GTK a doufám, že alespoň trochu pomůže v rozšíření tohoto výborného nástroje. Pokud by byl z vaší strany zájem, určitě se přemohu a napíši seriál, ve kterém bychom se mohli všem úskalím PHP-GTK věnovat podrobně.

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: