160 likes | 278 Views
Motif, okienka i obiekty. Mateusz Srebrny 15 grudnia 2003. Plan. The X Window System widgety callbacki Motif obiektowość w bibliotekach w C Lesstif zastosowania. The X Window System. protokół model klient-serwer Cechy: klient i serwer w różnych miejscach
E N D
Motif, okienka i obiekty Mateusz Srebrny 15 grudnia 2003
Plan • The X Window System • widgety • callbacki • Motif • obiektowość w bibliotekach w C • Lesstif • zastosowania
The X Window System • protokół • model klient-serwer Cechy: • klient i serwer w różnych miejscach • klient nie zajmuje się sprzętem • wielu klientów lub wiele serwerów naraz • serwer może przekazywać informacje
Serwer i okna • klient – co najmniej jedno okno • drzewo okien (root window) • okna są zarządzane przez serwer • klienci pośrednio kontrolują swoje okna • inne zasoby: pixmap, colormap, font, kursor, kontekst graficzny, property
Interakcja klient-serwer • Klient wysyła zapytania (request) • Serwer odsyła odpowiedzi (reply) • Serwer odsyła raport o błędzie (error) • Serwer zawiadamia o zmianie stanu wysyłając zdarzenia (event)
Zdarzenia • Efekt zapytania bądź działania użytkownika • Klient może posłać zdarzenie klientowi • Klient prosi o konkretne zdarzenia • Asynchroniczne przetwarzanie • Aplikacja zwykle w pętli czeka na zdarzenie • Sporo zdarzeń jest stemplowanych czasem
Biblioteka Xlib • interfejs protokołu od strony klienta (C): • tworzenie/operowanie podstawowymi zasobami • buforowanie/kolejkowanie zapytań i zdarzeń • struktury danych reprezentujące zdarzenia • niezależne sprzętowo operacje I/O • Xrm (resource manager)
X Toolkit Intrinsics (Xt) • wyższy poziom niż Xlib Trzy główne aspekty: • widgety = dane + interfejs dla użytkownika • „zarządzanie geometrią” widgetów • rozsyłanie (dispatching) zdarzeń do widgetów
Widgety ‘data abstraction built on an object metaphor’ • stan, procedury, klasa, instancje • pojedyncze dziedziczenie • las instancji widgetów Przykłady: przycisk, lista, etykieta, menu,kontener, scrollbar
Obsługa zdarzeń - callbacki • oczekiwanie na zdarzenie • przesłanie do odpowiedniego widgetu • tablica translacji: opis zdarzenia akcja • akcja „zwrotnie woła” callback Efekt: aplikacje są sterowane zdarzeniami (event-driven)
Motif • graficzny interfejs użytkownika (GUI) • mechanizmy komunikacji aplikacji z użytkownikiem • zbiór widgetów (ogólnych, wyspecjalizowanych) • styl, zaznaczanie, drag’’drop, XmString, UIL X Xlib Xt Motif
Widgety w Motifie Trzy grupy: • Gadżety (gadgets, primitives) • Manadżery (managers) • Powłoki (shells)
Realizacja obiektowości • struktura WidgetClass: superclass, name, widget_size, konstruktory, itp. • struktura Widget: self, widget_class, parent, destroy_callbacks • funkcje biorą Widget • Przydatne metody: XtIsSubclass(Widget, WidgetClass), XtSuperclass(Widget), XtClass(Widget), XtParent(Widget)
Lesstif • Motif długo nie był wolnodostępny • Powstał klon – Lesstif (LGPL) • OpenMotif – bardziej otwarty Motif
Aplikacje używające Motifa • gVim • GNU Emacs • Star Office • xpdf
Bibliografia • www.opengroup.org • ‘MOTIF 2.1 – Programmer’s Guide’ • www.lesstiff.org • ‘Inside LessTif’, D.Backx, M.Miers, C.Toshok, H.Albrecht