přihlásit 5453/805857

GTK+ ver. 2.x – podrobnosti

GTK+ je napsáno v jazyce C, ale cílem jeho vývojářů je snadná použitelnost i v jiných jazycích, z čehož těží i Python a jeho GTK+ nadstavba PyGTK. Proto je GTK+ (navzdory neobjektovému jazyku C) objektově orientované. Dalším cílem vývojářů GTK+ je snadná přenositelnost mezi platformami (UNIX, Windows, ...) a architekturami (různé typy nekompatibilních procesorů). To dohromady klady vysoké nároky na kvalitu a přenositelnost kódu, které GTK+ splňuje.

Z toho důvodu je GTK+ modulární a skládá se ze tří vrstev GLib-GDK-GTK a několika dalších částí, jako Pango, Cairo a dalších. Některé z těchto částí jsou samostatné knihovny, použitelné i bez GTK+. S výjimkou knihovny Cairo byly ale všechny napsány primárně pro GTK+.

GLib

GLib [1] je samostatná knihovna a základ všeho. Staví na ni všechny ostatní GTK+ knihovny. Jejím cílem je snadná přenositelnost a zjednodušení programování v C. GLib zavádí vlastní, na platformě a architektuře nezávislé, datové typy, dynamický typový systém, nové vyšší datové typy, signály, objektové paradigma a řadu šikovných funkcí, třeba pro alokaci paměti, práci s kódováním a podobně.

GObject

GObject [2] je fyzicky součástí GLib, ale logicky je to samostatná část. Zavádí do GTK+ objektové paradigma, které je pro GUI toolkity ideální a významně usnadňuje používání GTK+ v objektově orientovaných jazycích. Je to základní objekt, z kterého jsou odvozeny všechny ostatní objekty v GTK+. Tato část GLib je v Pythonu dostupná jako modul gobject.

GDK

GDK [3] je nízkoúrovnňová GUI knihovna. Definuje základní grafické datové typy, umožňuje kreslení primitivních tvarů, jako body, čáry a podobně, práci s barvami, obrazovkou, okny, kurzory, obrázky, interakci se správcem oken, a další nízkoúrovňové operace a operace závislé na operačním systému. V UNIXech je postaveno nad xlib X Window Serveru a ve windows (domnívám se) nad GDI a Win32 API. Cílem této knihovny je setřít rozdíly mezi jednotlivými platformami. Od GTK+ 2.8 ji s tímto pomáhá vektorová knihovna Cairo, která si na starost bere systémově nazávislé kreslení na obrazovku (a ne jen na ni). Další pomocník je knihovna Pango, která ma na starost práci s texty. V Pythonu je GDK knihovna přístupná jako modul gdk.

GTK

GTK [4] je základní GUI knihovna, pro kterou všechny ostatní knihovny pracují. Je tedy postavena nejvýše a programátor GUI aplikace pracuje především s ní. Například vytvoří widget Label a nastaví mu nějaký text. Na pozadí se pak používá GObject a funkce z GLib, GDK, ATK, Pango a podobně, ale tím se programátor GUI aplikace vůbec nemusí zabývat. Proto je programování v GTK+ tak snadné a GTK+ programy snadno přenositelné.

GTK+ obsahuje především definice widgetů a dialogů a funkce pro práci se styly, Drag and Drop, signály, klávesovými zkratkami a podobně. V Pythonu je dostupná jako objekt gtk.

Pango

Pango [5] je samostatná [6] knihovna pro sjednocení práce s fonty a pro formátování a vykreslení textů. Může k tomu používat další různé knihovny, jako FreeType, fontconfig, Cairo, Win32 API a podobně v závislosti na systému a dlaších okolnostech. Pro programátora GUI aplikace je prakticky neviditelná, protože se používá transparentně. Zajímavá je pouze podpora jednoduchého XML jazyka podobnému HTML pro snadné formátování textů třeba v popiscích nebo názvech tlačítek a podobně. Knihovna je v Pythonu dostupná jako modul pango.

ATK

Pnago [7] je knihovna, která má na starost přístupnost (accessibility) pro různě indisponované (zrakově, motoricky) uživatele. GTK+ aplikace by tak díky této knihovně mely být použitelné i pro ně. Nevyznám se v této oblasti, takže to nedovedu posoudit. Ani nevím zda je tato podpora automatická, nebo se pro ní něco musí udělat.

Cairo

Cairo [7] je samostatná [7]vektorová grafická knihovna s výstupem nazávislým na zařízení. Vyjadřovací schopnosti této knihovny jsou na úrovni PDF. Výstup je možný na obrazovku v různých window systémech (X Window, MS Windows), na tiskárnu (PS), do souboru jako vektorový obrázek (PDF) nebo bitmapový (PNG). Další výstupní tzv. povrchy lze přidávat. V současné době je experimentální výstup do Open GL, tedy hardwarově akcelerovaný výstup. GTK+ od verze 2.8 používá Cairo jako backend pro vykreslování, čímž se z GTK+ stal moderní vektorový GUI toolkit, schopný přizpůsobit se různým rozlišením obrazovek. Další obrovská výhoda je sjednocení výstupu na obrazovku a na tiskárnu. Díky tomu GTK+ ve verzi 2.10 mohlo přinést kvalitní podporu tisku.

 [7]
Seznam URL na stránce:
[1] http://developer.gnome.org/doc/API/2.0/glib/index.html
[2] http://developer.gnome.org/doc/API/2.0/gobject/index.html
[3] http://developer.gnome.org/doc/API/2.0/gdk/index.html
[4] http://developer.gnome.org/doc/API/2.0/gtk/index.html
[5] http://developer.gnome.org/doc/API/2.0/pango/index.html
[6] http://www.pango.org/
[7]

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /web/htdocs2/wraithcz/home/www/python/data/sessions/sessions1.php on line 2