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 frontend w ncurses czy jakikolwiek inny.

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
	ekg_execute(). jeli ekg_execute() zwrci 1, funkcja powinna si
	zakoczy.

$Id: ui.txt,v 1.13 2003/03/22 08:56:12 chilek Exp $
