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