Toolkity pro tvorbu grafických uživatelských rozhraní (GUI)

Toolkity pro tvorbu grafických uživatelských rozhraní (GUI)

V tomto článku se pokusím vysvětlit co jsou to je GUI (Graphical user interface), co to je widget a k čemu slouží GUI toolkity. Spolu s tím představím několik nejznámějších multiplatformních toolkitů (GTK+, Qt, wxWidgets, Swing).

Grafické uživatelské rozhraní

Co je to grafické uživatelské rozhraní asi většina z Vás ví, nebo alespoň tuší. V podstatě jde o rozhraní přes které komunikujete s počítačem (programem). Slovo grafické v názvu znamená, že příkazy nemusíte zadávat psaním na klávesnici ale můžete k tomu použít grafické prostředky. Těmito grafickými prostředky rozumíme tlačítka, posuvníky, různá menu, stavové lišty, ukazatele průběhu, tabulky, formuláře a další. Tyto grafické prostředky nazýváme widgety (Nepleťte si název „widgety“ s miniaplikacemi jako jsou gadgets ve Windows Vista a Windows7, plasmoidy v KDE 4, portlety v Google desktop apod., kterým se říká stejně ale ve skutečnosti jde o něco jiného.).

Widgety

Tak jako je cihlový dům postavený z cihel, tak je grafické uživatelské rozhraní postaveno z widgetů. Jsou to základní stavební kameny GUI, které vznikne jejich vhodným kaskádovitým poskládáním.

Můžeme je rozdělit do několika skupin: Výběrové (tlačítko, menu, nástrojová lišta, …), navigační (záložky, posuvníky, …), vstupní (textové pole, …), výstupní (popisek, stavová lišta, …), kontejnerové (okno programu, vyskakovací okno, …).

Widget Toolkity / GUI Toolkity

Jsou to balíčky widgetů. Slouží k udržení jednotného vzhledu jak v rámci jedné konkretní, tak v rámci různých aplikací. Díky tomu dva různé programy postavené na stejném toolkitu budou v prostředí jednoho operačního systému mít grafické prvky, které budou vypadat stejně. Toto samozřejmě neznamená, že aplikace na různých toolkitech musí vypadat každá jinak. Některé toolkity využívají pro své widgety vzhled hostitelského systému, a proto i různé aplikace na různých toolkitech můžou, co se týče ovládacích prvků, vypadat stejně. Zároveň ale existují toolkity, které mají svůj vzhled pevně daný a ten se nemění napříč různými operačními systémy.

Hlavní funkce toolkitu spočívá v poskytnutí API (Application Programming Interface), pomocí kterého může programátor s widgety pracovat. Kromě toho se toolkit také stará o zachytávání uživatelských akcí (kliknutí na tlačítko, stisknutí klávesy, …) a předává je aplikaci ke zpracování.

Přehled několika nejznámějších toolkitů

1. GTK+

Jde o jeden ze dvou nejpopulárnějších toolkitů pro X Window System (Grafické rozhraní pro unixové operační systémy). Původně byl vytvořen jako GUI pro grafický editor GIMP na Kalifornské univerzitě v Berkley. GTK+ je multiplatformní a lze jej používat nejen na operačních systémech unixového typu jako jsou Linux, Solaris, Mac OS X či FreeBSD, ale i na MS Windows. GTK+ je naprogramován v C s použitím knihovny GObject, díky tomu poskytuje objektové rozhraní, které je použitelné různými programovacími jazyky.

Mezi nejznámější jazyky které GTK+ podporuje patří:

C++
C#
Ruby
Python
Java (zatím ne ve verzi pro MS Windows)
PHP
Perl
Haskell
Seznam všech podporovaných jazyků

Nejznámější aplikace které GTK+ využívají jsou bezesporu grafický editor GIMP, grafické prostředí GNOME, internetový prohlížeč Mozilla Firefox, vývojové prostředí Eclipse nebo kancelářský balík OpenOffice.org.

GTK+ je šířeno pod licencí GNU LGPL 2.1, díky tomu je možno ho používat jak v otevřených, tak v komerčních, proprietárních aplikacích bez nutnosti platit poplatky, nebo zveřejňovat zdrojový kód (toto platí pouze v případě, že nebude změněn zdrojový kód samotného GTK+).

2. Qt

Je právě oním druhým nejpopulárnějším toolkitem pro X Window. Zkratka Qt se vyslovuje jako [kjůt], což v překladu znamená roztomilý. Stejně jako jeho konkurent i Qt se může chlubit širokou podporou různých platforem. Kromě klasických desktopových operačních systémů jako Linux, Mac OS X a MS Windows, podporuje i Windows CE (Systém pro malé počítače a přenosná zařízení z něhož se odvozují systémy jako Windows Mobile a Pocket PC). Vzhledem k tomu, že společnost Trolltech, která Qt vyvíjela, byla odkoupena firmou Nokia, nikoho nepřekvapí, že Qt bude zanedlouho podporovat i Symbian či Maemo.

Qt je naprogramováno v C++ a pro tento jazyk je i primárně určeno. Mezi další jazyky pro které je Qt dostupné patří C#, Python, Ada, Pascal, Perl, PHP a Ruby.

Mimo klasických funkcí poskytovaných grafickými toolkity, Qt poskytuje i další knihovny, které umožňují práci se SQL databázemi, zpracování XML, správu vláken, práci se síťovými protokoly nebo využívání OpenGL.

Co se týká licencí, je Qt dostupné hned pod třemi. První z nich je komerční licence, kterou si musíte koupit a která vám dává právo měnit kód knihoven aniž by jste museli tyto změněné kódy poskytovat. Druhá licence je GNU LGPL 2.1, tato licence je stejná jako v případě GTK+. Třetí a poslední licencí je GNU GPL 3.0, pokud se rozhodnete použít toolkit pod touto licencí tak jste povinni zveřejnit kompletní zdrojové kódy vaší aplikace včetně případných změn v kódu Qt viz: http://www.gnu.org/licenses/gpl.html.

Nejznámější aplikace využívající Qt jsou organizér fotografií Adobe Photoshop Album, virtuální mapa Google Earth, grafické prostředí KDE, komunikační program Skype, komunikační program TeamSpeek, virtualizační nástroj VirtualBox, multimediální přehrávač VLC Media Player atp.

3. wxWidgets

Další z velice populárních grafických toolkitů je wxWidgets, dříve wxWindows. Jde o výkonný, nenáročný a poměrně jednoduchý toolkit. Kromě knihoven na tvorbu GUI obsahuje i třídy umožňující práci s tiskárnou, ODBC API pro práci s databázemi. Také zde najdeme třídy pro práci se síťovými protokoly TCP/IP či OpenGL. Stejně jako oba předchozí tak i wxWidgets je multiplatformní, podporuje MS Windows, Unix, Linux, Mac OS X a Windows CE.

Samotný toolkit je naprogramován opět v C++. Z dalších jazyků wxWdigets podporuje C#, Java, Python, Ruby, Perl, Haskell, Lua, Smalltalk, JavaScript atp.

Aplikace využívající wxWidgets jsou P2P klient aMule, editor zvuku Audacity, vývojové prostředí Code::Blocks a další.

Licence pod kterou je toolkit dostupný se jmenuje wxWindows Licence, je to v podstatě klasická LGPL s výjimkou, že aplikace v binární podobě mohou být distribuovány pod podmínkami distributora.

4. Swing

Toolkit určený pro tvorbu GUI aplikací psaných v Javě. Podporuje všechny hlavní platformy a je součástí Java SE. Vzhled widgetů může být dynamicky měněn za běhu aplikace. Swing je akcelerovaný pomocí OpenGL.

A další…

Existuje ještě velká spousta dalších toolkitů, které mají různé vlastnosti a schopnosti. Výběr je opravdu obsáhlý a záleží pouze na vývojáři, který si vybere jako ten nejvhodnější pro svůj projekt. Pěkný seznam toolkitů naleznete na Wikipedii: http://en.wikipedia.org/wiki/List_of_widget_toolkits.

Který, že je to ten nejlepší?

Pokud jste si přečetli celý článek tak je Vám zřejmě jasné, že na tuto otázku neexistuje jednoznačná odpověď. Vždy záleží na konkrétním projektu a jeho účelu. Při výběru toho nejvhodnějšího toolkitu musíte brát v potaz programovací jazyk v kterém bude aplikace naprogramována, operační systém na kterém bude provozována, zkušenosti členů vývojového týmu s daným toolkitem, uživatele kteří budou výslednou aplikaci používat (Pokud má mít aplikace mezinárodní pole působnosti, bude vhodné zvolit toolkit, který podporuje lokalizaci) a v neposlední řadě je potřeba brát v úvahu licenční politiku toolkitu ,pokud hodláte vyvíjet uzavřenou komerční aplikaci.

Comments are closed.