[Grafika] [WebTip] [Fotografování] [Galerie] [MujMac] [Printing]
  Redakce: info (at) builder.cz   Inzerce: reklama (at) grafika.cz
Diskuzní fóra
.Net (68472)
ASP (1591)
ActiveX (168)
Allegro (136)
Assembler (3926)
C++ Builder (23160)
C/C++ (44499)
Databáze (30680)
Delphi (78808)
DelphiX (1655)
DirectX (1464)
Java (39508)
JavaScript (12598)
Matematické programy (2178)
OOP a UML (732)
OpenGL (6920)
Php (65225)
PowerBuilder (464)
Problémy a algoritmy (10473)
Programování v Linuxu (2000)
Právo a programování (3384)
Python (1353)
Ruby (136)
Visual Basic (12078)
Visual C++ (12956)
Wap (56)
Web (10895)
Web servery (5549)
Win32 (13553)
Windows CE (865)
XML/XSL (1860)
Textová inzerce
Služby Builder.cz
  • Bazar - koupím(0)
  • Bazar - prodám(0)
  • Hledám práci(0)
  • Nabízíme práci(0)
  • Projekty(0)
  • PHP-GTK 4. - Hrátky s okny
    Dnes se seznámíme s určitě nejdůležitějším prvkem grafických aplikací - oknem.
    PHP-GTK
    Předchozí díl: PHP-GTK 3. - Užitečné utility

    Následující díl: PHP-GTK 5. - Texty
    Autor: Adam Rambousek
    Rubrika: PHP
    Publikováno: 25.06. 2001
     Tisk článku
    Poslat odkaz emailem
     

    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.


    Zpět na začátek stránky

    Autor: Adam Rambousek
    Klikni pro další články autora

    Hodnocení článku
    1 | 2 | 3 | 4 | 5
    Aktuální známka: 2.55
    (Počet známek: 3243)

    Komentáře k článku
    Dieg027.07.18:52Kompilace
    standa08.09.13:27RE: Kompilace
    Luke31.08.10:27knihovna php_gtk.dll
    Adam31.08.10:36RE: knihovna php_gtk.dll
    Luke03.09.11:58RE: RE: knihovna php_gtk.dll
    Adam03.09.12:46RE: RE: RE: knihovna php_gtk.dll
    Luber26.06.11:32Could not open display in ...
    Adam27.06.15:52RE: Could not open display in ...
         





    info@builder.cz
    Vydává Grafika Publishing, s.r.o.
    Copyright (c) 1997-2002 Všechna práva vyhrazena