]> rtime.felk.cvut.cz Git - edu/osp-wiki.git/blob - gui-prednaska/index.mdwn
(no commit message)
[edu/osp-wiki.git] / gui-prednaska / index.mdwn
1 [[!meta title="Grafická uživatelská prostředí a knihovny"]]
2
3 [[!toc levels=2]]
4
5 #Grafická uživatelská prostředí a knihovny
6
7 ## X Window System 
8
9 - Grafické prostředí pro operační systém UNIX
10 - Začal vyvíjet institut MIT (Massachusetts Institute of Technology) v r. 1984.
11 - Označení X11 (verze 11) od r. 1987
12 - Další verze jsou označovány jako revize. 
13 - Současná podoba systému oken X se principiálně nemění a nová vydání jsou rozšiřující především z pohledu způsobů implementace grafických režimů.
14 - Klient-server architektura, klient (GUI aplikace) nemusí nutně běžet na stejném stroji, jako server.
15 - Server se stará o klávesnici, myš a zobrazení grafického výstupu aplikací.
16 - Klient komunikuje se serverem pomocí socketu. Používá [X-protokol](#x-protocol). 
17 - XFree86 v roce 1992 z X386, což byla implementace X serveru pro 386 architekturu.
18 - X11R6.4 restriktivnější licence ve verzi 4.4 v únoru 2004.
19 - Referenční implementací je X server vyvíjený X.Org Foundation.
20
21 ![X architektura][1]
22
23 ## Správce oken (window manager)
24
25 Samotný X Server má na starost pouze zobrazení na obrazovku, obsluhu hardware (grafická karta, myš, klávesnice, touchpad) a sám o sobě je těžko použitelný. Proto se používá spolu se správcem oken (anglicky window manager), který se stará o ovládání uživatelem (přesun a změna velikosti okna) a podobně (horní lišta oken, ohraničení oken, změna velikosti, překrývání atp.). Z hlediska X Serveru je ovšem správce oken jen další klient, a proto je snadno zaměnitelný. Pro Linux existuje několik desítek správců oken, přičemž mezi nejznámějším patří IceWM, FVWM, Sawfish, Window Maker, Kwm, Metacity nebo Fluxbox.
26
27 <a name="x-protocol"/>
28
29 ## X protokol ###
30
31 - Specifikuje způsob komunikace mezi X-Serverem a X-Klienty. 
32 - Nejslavnější implementací je Xlib.
33
34 ![Xlib][3]
35
36 Používat přímo xlib by bylo poněkud těžkopádné ([[příklad| xlib-example]]), proto vzniklo mnoho knihoven, které se snaží tvorbu GUI aplikací zjednodušit. Např. GTK+, Qt, FLTK, wxWindows, HTML + DOM + JavaScript, atd.
37
38 ----------
39
40 ## Gnome
41 - GNU Network Object Model Environment
42 - Window manager
43 - Vývojová platforma
44 - GTK+
45 - V r. 1997 Miguel de Icaza and Federico Mena právě kvůli problémům s Qt licencí v KDE.
46
47 ----------
48
49 ## KDE
50 - 1996 Matthias Ettrich, student Eberhard Karls University v Tübingen.
51 - Qt
52 - Trošku jiná filosofie než Gnome, ale v podstatě to samé.
53
54 ----------
55
56 ## GTK+ (GIMP Toolkit)
57
58 - Vytvořen v roce 1997 členy skupiny eXperimental Computing Facility (XCF) Kalifornské university v Berkeley (Spencer Kimball, Peter Mattis a Josh MacDonald) pro vývoj programu GIMP (GNU Image Manipulation Program).
59 - Napsán objektově v jazyce C, což sebou nese řadu výhod i nevýhod.
60 - LGPL licence.
61 - Současná verze již multiplatformní.
62 - Součást GNU projektu.
63 - Využívá jej mnoho vyšších programovacích jazyků pro snadný wrapping.
64
65 [[GTK+ hello world]]
66
67 ----------
68
69 ## QT
70
71 - Haavard Nord a Eirik Chambe-Eng začali vývoj v roce 1991, později založili firmu Trolltech.
72 - V r. 2009 ji koupila Nokia.
73 - V C++ => obtížnější wrapping.
74 - Multiplatformní "C++ Java".
75 - Signal/Slot koncept (implementace observer pattern).
76 - Komerční a LGPL licence (od r. 2009), dříve GPL, ještě dříve podivná QPL (1998) kvuli KDE.
77
78 [[Qt hello world]]
79
80 ## Signal/Slot koncept
81
82 - Obecně řeší observer pattern.
83 - Many to many relationship.
84 - Velice se hodí na řešení volání callback funkcí widgetů.
85 - Kromě toho řeší mnoho dalších problémů, zejména neexistující reference.
86
87 ![signal-slot][4]
88
89   [1]: X_client_sever_example.svg
90   [2]: http://cs.wikipedia.org/wiki/X_display_manager
91   [3]: xlib.png
92   [4]: abstract-connections.png
93
94
95
96
97