FOX GUI Library


Strona główna | Autor | Borland C++ 5.5 | GUI | Książki | OpenGL | Programy | Projekty | Teksty

Wstęp

Biblioteka FOX (dostępna pod adresem: http://www.fox-toolkit.org) to zbiór klas napisanych w języku C++ przeznaczonych do budowy graficznego interfejsu użytkownika. Autorem biblioteki jest Jeroen van der Zijp (jvz@cfdrc.com). FOX jest rozpowszechniany na licencji GNU Lesser General Public License w wersji 2.1. Niniejszy opis powstał w oparciu o wersję 0.99.174 biblioteki. Zamieszczone przykłady zostały zmienione w celu umożliwienia kompilacji przy użyciu wersji 0.99.179 biblioteki FOX.


Obsługiwane systemy

FOX jest biblioteką wieloplatformową, dostępną na następujące systemy operacyjne:


Instalacja

W systemie Linux instalacja nie odbiega od instalacji innych pakietów z tekstów źródłowych. Wystarczy sekwencja polecen: configure, make i make install. Pod Windows pakiet (dostępny format to archiwum ZIP) zawiera pliki makefile dla 32-bitowych kompilatorów Borlanda i kompilatora IBM VisualAge C++ 3.5 oraz pliki projektu dla Microsoft Visual C++ 6.0. Autor testował bibliotekę i przykładowe programy przy zastosowaniu kompilatorów: Borland C++ Builder 4.0 Standard, Borland C++ Compiler 5.5 oraz GCC w systemie LINUX (dystrybucja Mandrake 7.2).


Możliwości biblioteki

Biblioteka FOX obsługuje wszystkie typowe elementy GUI (ang. Widgets) jak okna, przyciski, menu, paski narzędziowe itp. FOX obsługuje pliki graficzne w formatach: BMP, GIF, XMP, PCX, JPEG, PNG, TIFF, ale trzy ostanie wymagają dodania zewnętrznych bibliotek. Zasoby zawierające ikony, kursory i rysunki mogą zostać dołączone do programu. Dzięki klasie Registry biblioteka umożliwia zapamiętywanie np. położenia i wielkości okienek, bądź innych informacji programu. FOX wspiera tworzenie aplikacji MDI (ang. Multiple Document Interface). Oczywiście można także tworzyć programy SDI (ang. Single Document Interface).

Ponadto biblioteka wspiera interfejs OpenGL. W systemach LINUX można korzystać z darmowej implementacji OpenGL, biblioteki Mesa, lub (lepiej) sterowników GLX dołączonych do XFree 4.0. Z innych mechanizmów obsługiwanych przez bibliotekę FOX warto wspomnieć o technice Drag and Drop (w UNIX/Linux z zastosowaniem protokołu XDND), dostępie do schowka czy obsłudze dymków - podpowiedzi.

Komunikacja w bibliotece FOX wykorzystuje system nazwany cel/komunikat (ang. Target/Message). Każda kontrolka wysyła komunikat do pewnego obiektu - celu. Do wydzielenia komunikatów przesyłanych przez różne kontrolki do jednego celu służą identyfikatory (ang. message id). Ponieważ kontrolki mogą wysyłać różnego rodzaju komunikaty, każdy z nich posiada unikatowy typ (ang. message type). Kombinacja identyfikatora i typu komunikatu pozwala na jednoznaczną reakcję na dane zdarzenie.


Programowanie - krótki tutorial

Przedstawione przykłady opisują podstawowe mechanizmy działania biblioteki FOX, których zrozumienie jest bardzo ważne na początku poznawania biblioteki. Oczywiście FOX posiada także wiele innych klas obsługujących poszczególne elementy graficznego systemu użytkownika. Zainteresowanych odsyłam do programów przykładowych i dokumentacji.


Programy przykładowe

Biblioteka FOX zawiera kilkanaście przykładowych programów. Najciekawsze z nich to:


Inne programy wykorzystujące bibliotekę FOX

Chyba najbardziej znanym programem napisanym przy użyciu biblioteki FOX jest program do zarządzania plikami X WinCommander, autorstwa Maxima Baranova, przeznaczony, jak wskazuje nazwa dla systemów Linux/UNIX. Wersja 0.91.4 jest dołączona do dystrybucji Linux Mandrake 7.2. Filozofią działania program przypomina eksploaratora z Windows. Wygląd także jest podobny, co można ocenić na rysunku rysunku.

Kolejnym ciekawym projektem, jest będący we wczesnej fazie rozwoju (wersja 0.1.7), RPM Package Builder autorstwa Davina S. Hillsa. W założeniu ma to być narzędzie do wizualnego tworzenia plików RPM w systemie Linux. Aktualny wygląd programu przedstawia rysunek.


Narzędzia programistyczne

Obecnie coraz większą popularnością cieszą się różnorodne wizualne narzędzia wspomagające proces tworzenia oprogramowania. Także dla biblioteki FOX powstały takie programy.

Najbardziej zaawansowany jest program FOX Dialog Editor, autorstwa Martina Welcha. Program działa poprawnie zarówno pod Windows jak i Linux i pozwala na wizualne tworzenie okienek dialogowych. Filozofia działania programu zbliżona jest do takich pakietów jak Delphi. FOX Dialog Editor zapisuje tekst źródłowy okienka dialogowego (pliki *.cpp i *.h) oraz pliki projektu (*.dlg) we własnym formacie binarnym. Wygląd wersji 0.2.1 programu FOX Dialog Editor przedstawia rysunek.

Kolejne wizualne narzędzie to FOX Pilot, autorstwa Davida Tyreea. W wersji dostępnej autorowi tj. 0.02b program pozwala na wizualną budowę okna, menu i innych elementów GUI. Jednocześnie cały projekt jest widoczny w formie drzewa. Zasadniczą wadą programu jest zapisywanie projektu wyłącznie w postaci pliku w formacie XML, nie ma możliwości zapisu tekstu źródłowego. Program posiada wielookienkowy interfejs, typowy dla wielu programów pod X Window. Wygląd FOX Pilota z przykładowym projektem przestawia rysunek.

Jeszcze jednym ambitnym projektem jest FOX IDE. Autor - Jim Bag, postawił sobie zadanie przygotowania kompletnego środowiska do tworzenia aplikacji z użyciem biblioteki FOX. Obecna wersja 0.06 ma zaimplementowaną obsługę projektów oraz edytora kolorującego składnię języka C++. Wygląd programu przedstawia rysunek.

Na szczęście programista może swobodnie korzystać z dostępnych środowisk programistycznych takich jak Microsoft Visual C++, Borland C++ Builder czy w systemie Linux KDevelop. Wprawdzie narzędzia te nie zawierają bezpośredniego wsparcia do projektów korzystających z biblioteki FOX, ale umożliwiają komfortową pracę przy pisaniu i testowaniu aplikacji.


Dokumentacja

Podobnie jak dodatkowe narzędzia także dokumentacja do biblioteki FOX nie jest zbyt obszerna. Podstawowa dokumentacja, pióra autora biblioteki, dołączona jest do pakietu. Na serwerach FTP można dodatkowo znaleźć także dokument FOX Messages Sent w formacie PostScript (plik FoxMessages.ps.gz) i PDF zawierający zestawienie wszystkich rodzajów komunikatów generowanych przez poszczególne klasy. Przydatna jest także dokumentacja w formacie HTML wygenerowana przez pakiet DOC++ (pliki fox.api.tar.gz).

Ciekawostką jest program Class Browser ver.0.2.0, zawierający drzewo klas biblioteki wraz z opisem poszczególnych metod. Program wykorzystuje komentarze umieszczone w plikach nagłówkowych. Wygląd okna programu przedstawia rysunek.

Nowością jest umieszczona na serwerze FTP dokumentacja w formacie CHM, możliwa do zintegrowania z MSDN firmy Microsoft. Jest to znakomite rozwiązanie dla programujących w systemie Windows.


Ciekawe adresy

Strony WWW:

Serwer FTP:


Do pobrania

Poniżej przedstawiam mój wkład w rozwój biblioteki FOX:


Zakończenie

Biblioteka FOX to bardzo interesujący, choć jeszcze niedoskonały produkt. Możliwościami nie może równać się z takimi bibliotekami jak QT czy GTK+, ale względna prostota może stanowić w pewnych zastosowaniach zaletę. Ponadto w porównaniu do biblioteki GTK+, FOX nie sprawia problemów w wersji dla Windows. Z kolei QT w wersji pod Windows jest niestety produktem czysto komercyjnym, co znacznie zawęża krąg użytkowników.

Podane przykłady programów pokazują, że biblioteka znakomicie nadaje się do tworzenia przenośnego oprogramowania zarówno dla wielu systemów klasy Linux jak i Windows. W każdej z tych platform FOX korzysta z mechanizmów systemowych (X11 w X Window i WIN32 API w Windows), co czyni ją niezależną od wszelkich menadżerów okien i ich bibliotek.

Do największych mankamentów należy brak wersji językowych, a nawet mechanizmów do ich obsługi. Zmusza to przygotowania np. polskich zasobów samodzielnie przez programistę - i to jest obecnie główną wadą biblioteki FOX.

Wszystkich chętnych zapraszam do zapoznania się z przykładowymi programami i dokumentacją dołączoną do pakietu. Naprawdę warto spróbować.


© Janusz Ganczarski
JanuszG@enter.net.pl