od 20020627 ekg jest przygotowane do obsugi rnych interfejsw uytkownika.
przeprowadzono cakiem spor reorganizacj kodu, dziki czemu nie trzeba
bdzie psu zbyt duo, eby doda jakikolwiek inny frontend.

jeli kto chce napisa wasny interfejs (chociaby w gtk+, chocia nie
wiadomo po co, skoro jest GNU Gadu -- http://gadu.gnu.pl/), musi napisa
ui-costam.c, zawierajcy poniej podane funkcje i dopisa par linijek
do ekg.c.

ui_costam_init()
	inicjalizacja interfejsu uytkownika. dla ui-readline bdzie to
	ustawienie wszystkich zmiennych. dla ui-ncurses pewnie jakie
	initscr(), przygotowanie okienek itd. naley przypisa zmiennym
	ui_post_init, ui_deinit, ui_print, ui_event, ui_loop, ui_beep
	adresy funkcji danego interfejsu. nawet jeli funkcja nic nie robi,
	musi by zdefiniowana. zmiennym tym NIE WOLNO przypisa wartoci
	NULL. naley te utrzymywa w zmiennych ui_screen_width oraz
	ui_screen_height aktualny rozmiar ekranu.

ui_post_init()
	funkcja wywoywana po wczytaniu konfiguracji.

ui_deinit()
	pozamykanie wszystkiego.

ui_print(const char *target, int separate, const char *line)
	wywietlenie tekstu ,,line'' w oknie ,,target''. przewidziano
	trzy specjalne okna -- ,,__status'' dla pierwszego okna statusowego,
	,,__current'' dla aktualnego oraz ,,__debug'' dla okna z komunikatami
	dla developerw. parametr ,,separate'' mwi, czy wywietlany tekst
	jest na	tyle wany, eby otwiera nowe okno -- np. wiadomo. do
	pierwszego powinny by wysyane	informacje dotyczce stanu
	poczenia itd, itd, do aktualnego wszystko to, co jest zwizane
	z komendami wywoywanymi przez uytkownika.

ui_beep()
	dwik. niestety to, jak go wytworzy zaley od interfejsu. przy
	uyciu ncurses zwyke putchar('\a') nie zadziaa.

ui_event(const char *event, ...)
	interfejs uytkownika moe obsugiwa pewne zdarzenia:
	- "command" (char *cmd, ...) uytkownik wykona komend, aktualnie
	  obsugiwana to "query".
	- "my_status" (char *status, char *reason) uytkownik zmieni
	  stan na "away", "back", "invisible", "private_on", "private_off".
	- "my_status_raw" (int status, char *reason) uytkownik zmieni
	  stan, podawany w liczbach rozumianych przez protok.
	- "connecting" () klient prbuje si czy.
	- "connected" () klient poczy si.
	- "disconnected" () klient rozczy si lub zosta rozczony.

ui_loop()
	gwna ptla interfejsu, wywoywana zaraz po wczeniu klienta.
	powinna wywoa ekg_wait_for_key() przed wywoaniem funkcji
	czytajcej z klawiatury, by w przerwach mc obsugiwa poczenia
	sieciowe. gdy uytkownik wyda jak komend, powinna wywoa
	command_exec().

$Id$
