Prirucka pro programovani pro X Windows

Lubos Lunak l.lunak na sh.cvut.cz
Středa Únor 23 22:07:48 CET 2000


"Ing. Miloslav Ponkrác" wrote:
> 
> Dekuji mockrat.
> 
> MP+Respektive widgets nemusi byt spolecne, ale maji stejne
> MP+rozhrani pro komunikaci.
> 
> PT+Prave, ze nemaji :-(
> 
> Dobre, ale rekneme to tak, ze preci jakykoli window namager musi
> implemetovat urcitou "povinnou" sadu widgets, a kazde z techto widgets muze
> mit "povinnou" mnozimu funkci, aby byl nejaky standard pro psani aplikaci
> nezavislych na manageru. Chapu, ze u kazdeho widgetu muze byt rozsireni
> funkci zavisle na tom kterem manageru, ale nejaka spolecna podmnozina musi
> existovat, jinak by to prece neslo?
> 
> MP+A jak
> MP+pisu programem primo do okna, to asi volam funkce X-Windows primo, nebo
> ne?
> 
> PT+To muzete kdykoliv, jenom je to slozitejsi, nez pouzivani
> PT+ruznych knihoven (napriklad musite zajistit prekreslovani
> PT+pri zmene viditelnosti okna a pod. Widget sets to resi za
> PT+vas)
> 
> Aha, takze u X-Windows musi existovat jakysi system zprav podobne jako u
> Windows od MS. Zprava, ktera mi sdeluje, ze mam treba prekreslit okno apod.
> A widget je neco jako trida oken u MS. Ale i tam musi existovat zpravy,
> ktere se poslou programu treba kdyz vyberu prikaz z menu.
> 
> Miloslav Ponkrac
> 

 Zda se mi, ze asi moc nechapete, jak to s temi X vlastne je. Me to taky
chvili trvalo, ale jestli jsem to konecne dobre pochopil, tak je to asi
takhle :
- Uplne nejnize je X Windows system. Ten se v podstate stara jen o uplne
zakladni veci jako zjistovani vstupu, kresleni zakladnich grafickych
primitiv a jejich sdruzovani dohromady a ruzne eventy jako 'je potreba
prekreslit okno'. Okno z pohledu Xlibu ( tj. knihovny, s kterou se
komunikuje s X ) je obdelnik, do ktereho lze neco nakreslit a pripadne
obsahuje dalsi okna. X nema poneti o tom, co je to checkbox a takove
veci, to uz je na nej moc.
- Vyse je nejaky toolkit ( widget set ) neboli knihovna, ktera pomoci X
bude kreslit ty ruzne checkboxy a tak, obsluhovat je, prekreslovat veci,
kdyz je treba, atd. Toolkit se stara i o kresleni a obsluhu menu,
modalnich dialogu atd. . Z pohledu X to je zkratka jen kresleni
obdelniku a jejich obsahu, X vubec nema paru o tom, ze to je menu nebo
checkbox. Toolkity jsou napr. Qt( C++ ), Gtk+ ( C ), Motif( C ), atd.,
lisi se od sebe navzajem.
- Dale tu muze byt ( no, obvykle je ) nejaky window manager - vec, ktera
by se v podstate mela venovat takovym vecem jako kresleni zaviraciho,
maximalizacniho atd. tlacitka v liste top oken, presun oken,
minimalizace oken a takove veci. To je v podstate to jedine, co window
manager musi delat, z cehoz krom jine vyplyva, ze tam ani byt nemusi, a
tak je v podstate jedno, jaky window manager bezi ( to, ze vetsina
window manageru dela i vice nez jen starani se o okna nechme stranou ).
- Pak tu dale jsou ruzne protokoly a tak. Napr. pro drag&drop existuji
min. 3 ruzne prokokoly ( KDND, MotifDND a XDND ), temito protokoly
pomoci Xlib si aplikace posilaji data o probihajicim drag&drop, atd.
Podobne je to napr. s dokovanymi aplikacemi, mime typy a
janevimcimjeste. Pro usnadneni prace s temito vecmi existuji ruzne
knihovny, napr. knihovny KDE nebo Gnome ( a KDE nebo Gnome vlastne ve
skutecnosti jsou tvoreny knihovnami, ten zbytek jsou jen aplikace
napsane s pouzitim techto knihoven ). Z cehoz opet vyplyva, ze treba KDE
aplikace pobezi v pohode i treba pod Gnome, a i treba bez cehokoliv,
uplne ji bude stacit, kdyz bude mit svoje knihovny a maximalne nejakou
podpurnou aplikaci ( rekneme kpanel je podpurna aplikace co se dokovani
tyce, kaudioserver je potreba na hrani zvuku pres kdelibs, atd. ).

Takze ted to mate asi takhle :
- Chcete zkratka napsat aplikaci pro X : Vyberte si Qt, Gtk+ nebo
jakykoliv jiny toolkit, pripadne k tomu pridejte i kdelibs nebo
gnome-libs a muzete psat. Dokumentace napr. www.troll.no,
developer.kde.org, www.gtk.org, developer.gnome.org . Pri trose snahy
jdou ty aplikace napsat treba i tak, ze budou podporovat i vice
protokolu naraz, treba KDE + Gnome "soucasne".
- Chcete psat superrychly graficky program, potrebujete se dostat X az
do vnitrnosti, atd : Pouzijte pouze cisty Xlib - jen s nim asi moc
nepujde kreslit checkboxy a tak - treba jen hloupy Hello World! program
s jednim tlacitkem bych nevidel na mene nez nekolik stranek zdrojaku.
Dokumentace Xlib je dodavana treba i s XFree86.

Pokud ma nekdo dojem, ze je tu neco spatne nebo nepresne, racte me
opravit.

 Lubos Lunak
 l.lunak na email.cz http://dforce.sh.cvut.cz/~seli     ---KDE Now!---


Další informace o konferenci Linux