7588


Rozdział 9. Budowanie GUI za pomocą Glade i GTK+/GNOME

Omówimy teraz Glade, czyli wydajne narzędzie przeznaczone do szybkiego projektowania graficznych interfejsów użytkownika w środowisku GNOME/GTK. W tym rozdziale dokonamy przeglądu różnych właściwości Glade i różnych sposobów jego wykorzystania, a także pokażemy krok po kroku sposób tworzenia GUI dla naszej aplikacji obsługującej wypożyczalnię płyt DVD. Przy okazji zobaczymy także wszystkie właściwości GNOME, GTK+ i glib, o których wspominaliśmy w poprzednim rozdziale i które teraz będą użyte w konkretnym programie.

Przed rozpoczęciem pracy na dobre chcemy zwrócić uwagę, że borykanie się ze złożonością problemów spotykanych przy tworzeniu rzeczywistego GUI jest wielkim wyzwaniem dla niedoświadczonego programisty. Będziemy tworzyć stosunkowo złożony interfejs o nie okrojonych możliwościach — a więc jego kod jest skomplikowany i całe zadanie realizowane w celach pokazowych jest dość ambitne.

Mamy zamiar doprowadzić do tego, aby Czytelnik sam się przekonał, jak ważne jest pamiętanie o elemencie najmniej przewidywalnym, czyli o przyszłym użytkowniku. Oczekuje on, że interfejs graficzny będzie wykonywał wszystko w wymagany sposób, spójnie i bezpiecznie. Tworząc poważny program, pokażemy najpierw niektóre drobniejsze problemy, na które natknie się niedoświadczony programista GUI.

Ten rozdział ma następującą strukturę:

Ogólne omówienie Glade

Glade służy do tworzenia interfejsów użytkownika w systemie Linux. Narzędzie to pozwala programiście zaprojektować układ okien, okienek dialogowych, menu i pasków narzędzi. Podczas pracy szeroko wykorzystuje się myszkę, podobnie jak w programie malarskim. Analogia do takiego programu jest całkowicie uzasadniona, ponieważ znaczenie ikon i innych elementów jest dobrze znane doświadczonym projektantom grafiki korzystającym z takich narzędzi jak Gimp. Programy takie jak Glade pozwalają na tworzenie interfejsu użytkownika przez projektantów bez zwracania większej uwagi na podstawy działania programu, który ma być obsługiwany przez ten interfejs — bowiem projekt interfejsu jest oddzielony od kodu właściwego programu.

Program Glade jest najbardziej zaawansowanym narzędziem z grupy programów do szybkiego tworzenia aplikacji (RAD) w środowisku GNOME/GTK+ i jest podobny do narzędzi spotykanych w Windows, takich jak Power Builder i Visual C++ Resource Editor. Po rozpoczęciu projektowania Glade może utworzyć szkielet kodu źródłowego, łącznie z funkcjami tworzącymi okna i okienka dialogowe.

Jako alternatywę tego narzędzia możemy w graficznym interfejsie naszej aplikacji użyć biblioteki libglade, która służy do załadowania GUI w formacie XML podczas pracy programu. Takie dynamiczne ładowanie interfejsu jest bardzo zaawansowaną właściwością, dzięki której można korzystać z różnych interfejsów zależnie od okoliczności, lecz tym zajmiemy się nieco później.

Taka koncepcja jest faktycznie znacznie szersza niż zmiana „skór” znana z programu Winamp. Użycie „skór” pozwala na modyfikację wyglądu interfejsu i podobnie jak zmiana motywu w menedżerze okien X Window, służy tylko zmianom estetycznym. Biblioteka libglade umożliwia także modyfikację funkcjonalną interfejsu, dzięki czemu można uzyskać o wiele większą elastyczność.

Glade można używać do projektowania GUI, a także jako doskonałego narzędzia dydaktycznego dla GNOME/GTK+. Dzięki Glade mamy natychmiastowy dostęp do wszystkich popularnych widżetów GNOME/GTK+, łącznie z ich właściwościami, które można dowolnie kształtować, widząc natychmiast wyniki swojej pracy.

Uwagi na temat projektowania GUI

Powodzenie aplikacji zależy w znacznej mierze od jakości użytego interfejsu użytkownika i nie jest to rewolucyjne spostrzeżenie. Jeżeli interfejs wydaje się skomplikowany, mylący lub zgoła dziwny dla nowego użytkownika, wówczas cały produkt nie robi żadnego wrażenia, niezależnie od jakości swoich pozostałych elementów. Dobry interfejs użytkownika nie może więc być utworzony za pomocą prostych metod.

Na ten temat napisano wiele książek zawierających recepty dotyczące projektowania GUI, ale nietrudno wskazać popularne aplikacje, które nie są zgodne z wieloma tzw. „zasadami”. Rozważmy np. przyciski na pasku narzędziowym, których pierwotnym zadaniem było dublowanie często używanych pozycji menu w celu uzyskania do nich szybszego dostępu. Teraz spójrzmy, co występuje w programie Internet Explorer 5: po naciśnięciu przycisku Mail na pasku narzędziowym rozwija się menu podrzędne! Można to traktować jako niewygodę lub ulepszenie, ale niezależny od odczuć pozostaje oczywisty fakt: niespójny interfejs może wprowadzać użytkownika w błąd. Jeśli użytkownik oczekuje, że pewne funkcje będą działać w określony sposób, to przed próbą zmiany tego działania należy dobrze się zastanowić!

[[[ramka]]]

W akceptowalnych przez użytkowników projektach GUI zachodzą zmiany podobne do zmian w użyciu słów, w gramatyce i pisowni. Jeżeli byłoby trzeba podać tu podstawową zasadę, to będzie nią utrzymanie podobieństwa do interfejsu innych programów i pamiętanie o kluczowych modnych określeniach: intuicyjny, przyjazny dla użytkownika i prosty w użyciu.

[koniec ramki]]]

Samouczek Glade

W tym podrozdziale zapoznamy się z właściwościami Glade, tworząc przykładową aplikację o nazwie Example. Aplikacja ta umożliwi wprowadzenie tekstu do widżetu GtkEntry i wyświetlenie go w postaci komunikatu w okienku dialogowym. Podany tu materiał zawiera:

Glade wchodzi w skład pakietów tworzących GNOME, a więc zapewne każdy ma ten program w swojej dystrybucji Linuksa. Podobnie jak większość oprogramowania GNOME/GTK+, status Glade w momencie pisania tej książki był określany jako „stabilny, lecz nie ukończony” (była to wersja 0.5.7). Dlatego właśnie warto sprawdzić najnowszą wersję (jest ona dostępna pod adresem glade.pn.org), zawierającą więcej właściwości i z poprawionymi błędami. Na stronie WWW projektu Glade można także zapisać się na pocztową listę dyskusyjną oraz pobrać stamąd najnowsze wersje dokumentacji i zapoznać się z istniejącymi programami utworzonymi za pomocą tego narzędzia.

Zakładając, że mamy poprawnie zainstalowany program Glade, możemy wywołać go z menu panela GNOME, ponieważ podczas instalacji tworzony jest wpis w sekcji Development. Alternatywny sposób uruchomienia polega na użyciu polecenia glade w oknie terminala.

0x01 graphic

Glade po uruchomieniu wyświetla trzy okna: okno główne projektu (ang. main project window), paletę z widżetami (ang. widget palette) i edytor właściwości (ang. properties editor).

Okno główne

Okno główne (początkowo puste) zawiera listę okien, okienek dialogowych i menu związanych z bieżącym projektem. Nowy projekt tworzymy, korzystając z menu File | New Project, a następnie otwierając okno dialogowe Project Options za pomocą kliknięcia na odpowiedni przycisk paska narzędziowego lub z menu File | Project Options.

0x01 graphic

Na zakładce General można wpisać nazwę projektu i katalogu oraz nazwę pliku, który będzie używany przez Glade do przechowywania reprezentacji XML naszego projektu. Grupa przycisków opcji (ang. radio buttons) pozwala na wybór języka programowania używanego przez Glade do zapisu kodu źródłowego. Mamy także do dyspozycji przycisk opcji (ang. toggle button) włączający wspomaganie GNOME. Jeśli jest on wyłączony, to do dyspozycji jest tylko GTK+.

0x01 graphic

Na zakładkach C Options i libglade umieszczono opcje szczegółowe opisujące zachowywanie kodu źródłowego w języku C tworzonego przez Glade oraz opcje biblioteki libglade.

0x01 graphic

Paleta

Okno Palette zawiera widżety, które mogą być użyte w budowanym interfejsie. Jest ono podzielone na trzy zakładki o nazwach GTK+ Basic, GTK+ Additional i Gnome.