PHP-GTK 4. - Hrátky s okny - 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:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kdo je autorem výstavy obrazových fotografií „Očima Hanse Christiana Andersena“?

V dnešní soutěži hrajeme o:



PHP

PHP-GTK 4. - Hrátky s okny

php

25. června 2001, 00.00 | Dnes se seznámíme s určitě nejdůležitějším prvkem grafických aplikací - oknem.

Dnes se seznámíme s určitě nejdůležitějším prvkem grafických aplikací - oknem.

Kostra programu

Určitě už se těšíte, až začneme vytvářet nějaké aplikace. Takže se do toho bez zbytečných okolků pustíme.

Nejprve je třeba zdůraznit, že aplikace v PHP-GTK jsou samozřejmě PHP skripty, a tudíž musí být patřičně ohraničeny. Na začátek programu tedy patří <? a na konec ?>.

Dále nesmíte zapomenout na nahrání potřebné knihovny. A jelikož je PHP-GTK provozovatelné na Windows i Linuxu, musíme podle operačního systému zvolit správnou knihovnu.

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 jiném případě (Linux/Unix) použijeme php_gtk.so

Pokud se vám tato podmínka zdá příliš dlouhá, můžete zkusit toto: dl('php_gtk.' . (strstr(PHP_OS, 'WIN') ? 'dll' : 'so'));

Programy v GTK+ fungují tak, že se nejprve nadefinují všechny funkce a určí všechny prvky GUI, a poté se odstartuje hlavní smyčka - teprve teď aplikace "běží". Hlavní smyčka se spouští pomocí funkce Gtk::main();. Samozřejmě má tato funkce i svůj opak, kterým běžící aplikaci ukončíte - Gtk::main_quit(); Ve třídě Gtk je nadefinováno mnohem více užitečných funkcí GTK+ (kupříkladu časovače, které vám předvedu v některém z dalších dílů).

Kostra programu bude vypadat přibližně takto:

<?
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 jiném případě (Linux/Unix) použijeme php_gtk.so

//nadefinujeme si funkci, kterou zavoláme vždy, když budeme potřebovat ukončit program
function destroy() {
Gtk::main_quit();
}

...zde je celý program - funkce, nastavení GUI apod. ...

Gtk::main(); //spustíme hlavní smyčku
?>
Používání widgetů

Pro všechny widgety platí stejná základní pravidla. Každý widget v GTK+ projde pěti fázemi:

  1. Vytvoření - v PHP-GTK se provádí vytvořením objektu, např. $okno = &new GtkWindow();
  2. Umístění - v této fázi umístíme widget do kontejneru pomocí příkazu $kontejner->add($widget);
  3. Napojení signálů - můžeme určit funkce, které se zavolají při určité události. Pomůže nám funkce $widget->connect("událost","volaná_funkce"); - za událost dosadíme některý z definovaných stavů, např. clicked (po kliknutí), a při této události se provede funkce volaná_funkce().
  4. Zobrazení - widget zobrazíme pomocí funkce $widget->show() a skryjeme pomocí $widget->hide().
  5. Zničení - o zničení widgetu se postará PHP-GTK automaticky.
Okna

Základem každé grafické aplikace jsou okna (snadno to zjistíte již podle názvů Windows či XWindow). Nejinak tomu je i v PHP-GTK. Jako první vám tedy představím widget GtkWindow.

V souladu s výše uvedenými pravidly vyvtvoříme nové okno příkazem $okno = &new GtkWindow();. Takto vytvořené okno si můžete dle libosti upravovat:

  • $okno->set_name('jmeno'); - takto si nastavíte jméno okna, které budete používat v programu k odkazování na určité okno
  • $okno->set_title('titulek'); - určuje text, který se zobrazí v záhlaví okna. Pokud titulek nezadáte, použije se jméno skriptu.
  • $okno->set_usize(x,y); - nastaví velikost okna v pixelech po otevření.
  • $okno->set_uposition(x,y); - určí pozici okna po otevření. Jde o vzdálenost v pixelech od levého horního rohu obrazovky.
  • $okno->set_position(příznak); - jako příznak můžete uvést buď GTK_WIN_POS_CENTER - okno se otevře uprostřed obrazovky, nebo GTK_WIN_POS_MOUSE - okno se otevře na pozici kurzoru myši. Použití této funkce je lepší než určení pozice okna pomocí pevných souřadnic.

Tento seznam samozřejmě není úplný, obsahuje jen některé užitečné funkce. Pokud vás zajímají i další možnosti, podívejte se do manuálu GTK+ (anebo raději do manuálu PHP-GTK, až vznikne).

Na definované událost je GtkWindow vcelku chudé. Jediná využitelná událost je destroy, která nastane při zavření okna - kliknutí na křížek, stisknutí Alt+F4 apod. Tato událost se tedy obvykle spojuje s ukončením aplikace, ale fantazii se meze nekladou. Můžete například vytvořit neposednou aplikaci, která při pokusu o zavření otevře další okna :-).

V kostře programu jsme si nadefinovali funkci destroy(), takže zajištění ukončení aplikace je snadné: $okno->connect('destroy','destroy');.

Příklad

Dnešní díl se nachýlil ke konci, takže si vyzkoušíme, co jsme se dnes naučili. Otevřeme okno veliké 300x100 pixelů s titulkem Moje uplne prvni okno, které se otevře uprostřed obrazovky a při ukončení poslušně skončí aplikaci. Výsledkem vašeho snažení by mělo být takovéto okno:

okno otevřené PHP-GTK

Nejprve si zkuste takový krátký prográmek napsat sami. Když si nebudete vědět rady nebo si budete chtít zkontrolovat svůj výtvor, stáhněte si skriptík phpgtk4.php.

Těším se na shledání za týden u dalšího dílu seriálu. Příště se podívám na tlačítka a texty.

Obsah seriálu (více o seriálu):

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: