Hlavní navigace

wxWindows 2.2

Václav Slavík 19. 7. 2000

Potřebujete psát programy, které poběží na Unixu i pod Windows, nejlépe tak, aby uživatel nepoznal rozdíl mezi vaší a nativními aplikacemi? Programujete v C++ nebo Pythonu? Pokud ano, pak pro vás může být tento článek o právě vyšlé verzi 2.2 freewarové knihovny wxWindows zajímavý.

wxWindows

je komplexní knihovna určená pro vývoj multiplatformních aplikací v C++ nebo Pythonu. Neomezuje se jenom na uživatelské rozhraní, ale řeší i další na platformě závislé záležitosti, jako například sokety, vlákna a podobně (k podrobnějšímu popisu toho, co wxWindows umí, se ještě dostanu). wxWindows je šířena pod licencí LGPL, doplněnou o dodatek umožňující linkovat zkompilovanou knihovnu bez omezení, což je pro komerční vývojáře významný faktor. Před týdnem konečně, po více než roce, vyšla nová stabilní verze.

Vývojáři wxWindows se snažili, aby aplikace napsaná pomocí této knihovny vypadala k nerozeznání od ostatních aplikací na dané platformě (jinými slovy, zachovávala look and feel). To je velký rozdíl oproti například Javě nebo knihovnám Qt, FLTK nebo GTK+ – ty všechny mají jeden vzhled a přirozeně vypadají na jediné platformě (pokud vůbec :). Naproti tomu wxWindows je vybudována nad nativní knihovnou – Win32 API v případě Windows a GTK+ nebo Motif na Unixech. Ostatně, podívejte se sami:



Hlavní podporované platformy jsou samozřejmě Unixy a Windows, trochu v závěsu je verze pro MacOS (v tom smyslu, že je odvozena ze starších zdrojových kódů a možná nepodporuje úplně všechny funkce – můj osobní odhad je, že je tak na úrovni předposlední betaverze 2.1.15). Z Unixů podporuje prakticky všechny běžně dostupné, včetně např. FreeBSD nebo HP-UX. Stejně tak široká je podpora kompilátorů – můžete použít GCC nebo komerční kompilátor dodávaný se systémem, pod Windows pak libovolný z rozšířených kompilátorů (velmi dobře jsou podporovány MSVC, Mingw/GCC, Borland C++).

Styl programování ve wxWindows připomíná MFC nebo borlandí OWL blahé paměti. Narozdíl od MFC je však k dispozici rozsáhlá (přes 1000 stránek) a hlavně vyčerpávající dokumentace v HTML a dalších formátech a samozřejmě i e-mailová konference pro uživatele, kde vám většinu dotazů vývojáři zodpoví a poradí. A ta cena taky není k zahození :)

Co všechno wxWindows umí? Samozřejmě všechny běžné prvky GUI, včetně složitějších věcí jako komfortní logování chyb, „Tipy dne“, tabulky a la spreadsheet. Důležitou součástí jsou tzv. sizery (pokud se nemýlím, tak používané i v Qt a GTK+), které umožňují vytvářet dialogová okna bez toho, že byste zadávali souřadnice ovládacích prvků – místo toho popíšete logickou strukturu dialogu tím, že vložíte kontrolky do jakýchsi boxů a o zbytek se postará knihovna. Výhodou je, že takto vytvořený dialog bude vypadat hezky na všech platformách a programátor se nemusí starat o to, jak je který prvek velký na jaké platformě… K dalším užitečným funkcím wxWindows patří schopnost číst a zapisovat nejběžnější grafické formáty (BMP, PNG, JPEG, GIF, PCX, TIFF, XPM), drag and drop, tisk nebo běžně používané dialogy jako např. otevírání souborů. Oproti předchozí verzi 2.0.1 se výrazně zlepšila podpora fontů a různých kódování, takže už není problém s psaním česky mluvících (ehm…) programů. Abych nezapomněl, nová verze obsahuje také jednoduchý HTML widget (viz. screenshoty) – Mozilla to sice není, ale na zobrazení nápovědy je dávno dobrý.

Jak už jsem se zmínil, wxWindows zdaleka není jenom GUI knihovna, ale „cross-platform toolkit“, který se snaží poskytnout vše, co může programátor multiplatformní aplikace potřebovat. Najdete zde už zmíněné sokety včetně implementace FTP a HTTP protokolu, meziprocesovou komunikaci, spouštění procesů, vlákna, načítání sdílených knihoven či ukládání a načítání konfigurace (registry pod Windows, dotfiles pod Unixem). wxWindows plně podporují internacionalizaci pomocí vlastní implementace gettextu a navíc poskytují třídy na konverzi mezi různými znakovými sadami. Co rozhodně stojí za zmínku, je kvalitní podpora nejrůznějších SQL databází – opět máte k dispozici jednotné API na všech platformách.

Samozřejmě, nic není dokonalé (a wxWindows je přece jenom software :) a tak se i tady najde několik nevýhod. wxWindows je poměrně velká knihovna (binárka má skoro 6 MB, ale je možné při kompilaci vypnout nepoužívané funkce), HTML widget je dobrý jen pro velmi jednoduché použití (jako jeho autor o tom vím svoje :). Součástí wxWindows není použitelný editor dialogů, takže je nutné dialogy vytvářet psaním kódu. (Naštěstí existuje komerční návrhář dialogů wxDesigner, jehož autor se nechal slyšet, že OpenSource programátorům ho poskytne zdarma.)

Navíc z principu věci nemůže poskytovat všechny funkce dostupné v nativní knihovně, ale jenom jejich podmnožinu. Přesto si myslím, že je to v současnosti nejlepší volba. To se možná změní s příchodem Kylixu, ale moc tomu nevěřím – přeci jenom, bude to komerční prostředí vázané na jednu firmu a jeden kompilátor a navíc omezené pouze na Linux a Windows…

Našli jste v článku chybu?

25. 3. 2004 15:17

radek (neregistrovaný)

Dobry den
Mel bych jen takovy dotaz, zacinam pouzivat wxwindows pod windows v dev-cpp, ale trosku me mate velikost vysledneho exe souboru. Uplne jednoduchy program mi zabira pres 2MB. V clanku pisete o nejakem zpusobu jak vypnout prilinkovani nepotrebnych funkci,mohl by jste mi to prosm popsat vice.
Diky



Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?