[ Pobierz całość w formacie PDF ]
gramowanie aplikacji GUI jest Å‚atwiejsze. Zwolennicy zestawu GTK+ wskazujÄ… na jego
wspaniaÅ‚y system ukÅ‚adu pojemników (zobacz podrozdziaÅ‚ Pojemniki w dalszej cz¹Å›ci
tego rozdziału) do projektowania okien, jak też na przejrzysty system łączenia zdarzeń
generowanych przez użytkownika z kodem.
W systemie X Window zdarzenia nazywa się sygnałami. Takie sygnały różnią się
całkowicie od sygnałów niskiego poziomu w UNIX-ie, więc nie należy ich mylić ze sobą.
GDK
GDK (GIMP Drawing Kit) jest zestawem narz¹dzi do rysowania, który udost¹pnia cienkÄ…
warstw¹ pomi¹dzy aplikacjami a elementarnymi procedurami Xlib do rysowania. W cza-
sie opracowywania oprogramowania przy użyciu GTK+ w istocie używa si¹ nakÅ‚adki na
GDK, który z kolei stanowi nakÅ‚adk¹ na system X. Oznacza to, że biblioteka GDK jest
niezb¹dnym skÅ‚adnikiem w opracowywaniu aplikacji dla Linuksa przy użyciu narz¹dzi
GTK+ i GNOME.
IstniejÄ… jeszcze inne, bardzo rozbudowane biblioteki zwiÄ…zane z GNOME. Ich opis sta-
nowczo wykracza poza zakres tej książki. Jednak z uwagi na to, że w środowisku użyt-
kowników GNOME powszechnie si¹ je stosuje i do nich odwoÅ‚uje, grzechem byÅ‚oby
o nich nie wspomnieć. Są to:
Imlib,
ORBit,
libGnorba.
278 Zaawansowane programowanie w systemie Linux
Imlib
Imlib jest rozbudowaną biblioteką do obsługi grafiki, zdolną do operowania dużą liczbą for-
matów graficznych, jak np. JPG i PNG. GNOME używa wersji GDK tej biblioteki. W przy-
szÅ‚oÅ›ci biblioteka Imlib b¹dzie zastÄ…piona przez doskonalszÄ… bibliotek¹ .
ORBit
ORBit jest nieodpÅ‚atnie udost¹pnianÄ… implementacjÄ… CORBA 2.2 ORB, zaprojektowanÄ…
z myÅ›lÄ… o szybkoÅ›ci i prostocie. ORBit także obsÅ‚uguje j¹zyk C, a zatem jest wÅ‚aÅ›ciwym
wyborem obiektowego pośrednika zapytań ORB dla GNOME. W rozdziałach 20. i 21.
podamy wi¹cej wiadomoÅ›ci o implementacji CORBA.
libGnorba
Biblioteka libGnorba zaopatruje GNOME w łącza z ORBit, włącznie z mechanizmami
aktywacji obiektów i systemem zabezpieczeń.
Biblioteka glib
Jest bibliotekÄ… narz¹dzi C ogólnego przeznaczenia, która dostarcza solidnych elementów
niskiego poziomu i ma zasadnicze znaczenie dla operacji przenoszenia oprogramowania
mi¹dzy różnymi typami systemów UNIX i Windows. Biblioteka glib wnosi standardo-
wy zestaw funkcji narz¹dziowych i typów danych do wykorzystania przez programistów
wszystkich platform. Dzi¹ki temu nie trzeba wyważać otwartych drzwi i można skrócić
zarówno czas opracowania aplikacji, jak i zużycie pami¹ci. Co wi¹cej, biblioteka może
zwi¹kszyć stabilność opracowywanego kodu, ponieważ nie trzeba poznawać nowych
standardów dla każdej platformy, na której si¹ programuje. I jest cudownie użyteczna
nawet przy zwykłym opracowywaniu aplikacji dla Linuksa.
Zestaw funkcji udost¹pnianych przez glib wywiera imponujÄ…ce wrażenie niezależnie od
przyj¹tych standardów. Szczegółowe ich omówienie wykracza znacznie poza ramy tego
rozdziaÅ‚u. Na szcz¹Å›cie, podobnie jak każdy typowy projekt GNU, biblioteka glib jest
bardzo dobrze opisana zarówno na swojej witrynie http://www.gtk.org, jak i w pliku na-
główkowym . Nawet jeśli ktoś nie należy do miłośników czytania plików na-
główkowych, powinien docenić skarbnic¹ wiedzy tam zawartÄ…. Nierzadko okazuje si¹,
że szybciej można odnalezć potrzebnÄ… informacj¹ w pliku nagłówkowym niż podczas
przeglądania plików pomocy lub stron WWW.
GNOME i GTK+ same znaczÄ…co polegajÄ… na typach, funkcjach i makrodefinicjach diagno-
stycznych udost¹pnionych przez glib. Tak wi¹c, należyte opanowanie wiedzy na temat glib
powinno być zasadą każdego kursu programowania w GNOME-GTK+.
Rozdział 8. Programowanie graficznych interfejsów użytkownika (GUI) ... 279
W tym podrozdziale zostanÄ… scharakteryzowane:
typy danych biblioteki glib,
makrodefinicje,
procedury obsÅ‚ugi pami¹ci (memory routines),
funkcje obsługi napisów,
listy.
Typy
Jeden ważny, aczkolwiek cz¹sto zaniedbywany aspekt j¹zyka C, to zależność rozmiaru
pewnych elementarnych typów od platformy systemowej. Na przykład zwykle zajmie
32 bity pami¹ci, ale komputery mogÄ… zarezerwować dla mniej lub wi¹cej. Oczywi-
Å›cie istniejÄ… wzgl¹dnie proste metody programowania, które pozwalajÄ… wykluczyć tego
rodzaju problemy, niemniej jednak pomyÅ‚ki si¹ zdarzajÄ….
Dlatego też, aby uczynić nasze życie łatwiejszym, glib definiuje własny zbiór elemen-
tarnych typów o gwarantowanej długości oraz nowe typy , i typ wskaz-
nika na . I tak na przykład jest typem całkowitym ze znakiem o długości 16
bitów, a jest jego odpowiednikiem bez znaku.
Typ zdefiniowany w glib Opis
liczba całkowita o gwarantowanej długości, ze znakiem
liczba całkowita o gwarantowanej długości, bez znaku
typ boole owski, i także zdefiniowane w glib
odpowiednik
odpowiednik
odpowiednik
odpowiednik
odpowiednik
odpowiednik
Zauważmy, że i istnieją jedynie wtedy, gdy platforma systemowa może
je obsłużyć. Jeśli tak, to glib zdefiniuje .
Typy , , , i to otoczki istniejÄ…cych typów j¹zyka C i sÄ…
wÅ‚Ä…czone jedynie dla zachowania zgodnoÅ›ci. BiorÄ…c pod uwag¹ ich identycznÄ… natur¹,
można zapytać, jakie korzyści płyną z użycia w miejsce , czy też zamiast
. Faktem jest, że z technicznego punktu widzenia nie ma żadnej różnicy. Jednak
rozważając to w kategoriach stylu dobrego programowania, zachowamy spójność, a ten
280 Zaawansowane programowanie w systemie Linux
nawyk powinniśmy ćwiczyć przy każdej okazji. Użycie jednolitego stylu kodowania i za-
chowanie spójności jest szczególnie istotne w czasie pisania kodu dla wielu platform
systemowych. Choć skompilowany kod nie ma różnicy spowodowanej zastąpieniem
przez , to taka zamiana może jednak pomóc programiście w bardziej subtelny sposób.
Makrodefinicje
Biblioteka glib definiuje kilka makrodefinicji pomocnych w ogólnym programowaniu
i usuwaniu bÅ‚¹dów. Wi¹kszość z nich jest zapewne znana programistom j¹zyka C. Dla
uzupełnienia typu załączono makrodefinicje oraz . jest zdefi-
niowane w ANSI C jako pusty wskaznik (void pointer): .
Istnieje także kilka prostych makrodefinicji ułatwiających żonglowanie liczbami. Wszystko
po to, by przyspieszyć kodowanie i zwi¹kszyć czytelność kodu
Makrodefinicja Opis
.
.
.
[ Pobierz całość w formacie PDF ]