Grafická knihovna wxWidgets Bc. Vojtěch Kusý 128PGC3 - Počítačová grafika a CAD ČVUT v Praze, Fakulta stavební
Základní charakteristika „Windows and X widgets“, dříve známý jako wxWindows) free software/open source multiplatformní widget toolkit = knihovna základních elementů pro tvorbu grafického uživatelského rozhraní (GUI) + něco navíc
Stručná historie wxWidgets (tehdy ještě jako wxWindows) se vyvájejí již od roku 1992 projekt založil Julian Smart, během svého působení na University of Edinburgh Julian Smart se dodnes podílí na vývoji jádra 20. února 2004 změněn název z wxWindows na wxWidgets, jako výsledek tlaku Microsoftu (ochranná známka Windows® ve VB)
Podporované platformy wxWidgets je multiplatformní: MS Windows Linux Unix, BSD Mac OS X PalmPC/Pocket PC OpenVMS OS/2.
Podporované jazyky - „Bindings“ C++ implicitně wxAda xBasic wxD wxErlang wxEuphoria wxHaskell wxJava jwx! (také Java) wxJavaScript wxLua wxMax wxNet wxPerl wxPike wxPython wxRuby wxSqueak
Nejen multiplatformní GUI... wxWidgets aplikace musí být schopné běhu na různých platformách a to se netýká pouze GUI wxWidgets poskytuje i třídy pro práci se soubory s proudy více vlákny nastavením aplikace pro komunikaci mezi procesy přístup k databázi a mnoho dalšího...
Proč? J. Smart hledal GUI knihovnu která by splňovala následující... 1.crossplatform 2.nízká cena 3.mít k dispozici zdrojový kód 4.snadné programování 5.podpora široké škály kompilátorů a i když existovalo několik komerčních knihoven, žádné se nepodařilo splnit všechna kriteria...
Proč použít wxWidgets? 1/2 Je primárně multiplatformní aplikaci lze přeložit pro různé platformy s žádnými nebo jen minimálními změnami v kódu aplikace je nezávislá na platformě, kód lze kdykoliv přenést na jinou platformu pokud nabídne lepší podporu pro naši aplikaci nemusíme se učit používat různé grafické knihovny na různých platformách
Proč použít wxWidgets? 2/2 Poskytuje nativní vzhled a chování na dané platformě lepší pro uživatele aplikace je nezávislá na platformě, kód lze kdykoliv přenést na jinou platformu pokud nabídne lepší podporu pro naši aplikaci nemusíme se učit používat různé grafické knihovny na různých platformách
Zdrojový kód a licence licence je další výhodou této knihovny L-GPL s dovětkem, tj knihovnu lze použít bez omezení pro free software i pro komerční software otevřený zdrojový kód zdarma
Architektura wxWidgets
Přehled tříd 1/3 Managed windows Miscellaneous windows Common dialogs Controls Miscellaneous pickers Menus wxAUI - advanced user interface Window layout Device contexts Graphics device interface Events Validators Data structures Run-time class information system
Přehled tříd 2/3 Logging features Debugging features Networking classes Interprocess communication Document/view framework Printing framework Drag and drop and clipboard classes File related classes Stream classes Threading classes HTML classes Rich text classes Virtual file system classes
Přehled tříd 3/3 XML classes XML-based resource system classes Online help Database classes Miscellaneous
wxCode: když nám wxW. nestačí
Sestavení od verze 2.5 může být wxWidgets sestavena jako - soubor jednotlivých knihoven, tzv. multilib build - jako jediná knihovna, tzv. monolithic build
Návrh
Výsledek
RAD pro wxWidgets Boa Constructor (Python) wxGlade wxFormBuilder Code::Blocks (via wxSmith plugin) nebo integrace s wxFB CodeLite (vygeneruje wxW. projekt) wxDev-C++ podporu wxWidgets lze doinstalovat i do MS VS
wxFormBuilder
na základě navrženého rozhraní vygeneruje odpovídající kód uložení formátech C++ (.cpp soubory) nebo XRC (XML dokument) multiplatformní: Windows (2000, XP, and Vista) Linux MacOSX (Mac Universal (PPC/x86)) web:
Aplikace ve wxWidgets BitTorrent FileZilla (open source FTP solution) TortoiseCVS (CVS GUI) Audacity (free cross-platform sound editor) Code::Blocks (open source C++ IDE Chandler (note organizer) RapidSVN (Subversion GUI) wxDownload Fast...
Symlab: Windows
Symlab: Linux
poEdit
Audacity: Windows
Audacity: Linux
Audacity: Mac
Kniha o wxWidgets zdarma Cross-Platform GUI Programming with wxWidgets autoři: Julian Smart, Kevin Hock, Stefan Csomor počet stran: 744 (!) velmi dobře napsané, pokryté kompletní API včetně příkladů a popsání rozdílů mezi platformami ke stažení např. z knihovny Root.cz
Český překlad knihy český dobrovolnický překlad knihy formou „wiki“ na stránkách zatím přeloženo jen necelá stovka z 800 stránek
Zdroje kniha (e-book) Cross-Platform GUI Programming with wxWidgets