od 20020629 interfejs uytkownika oparty na ncurses jest ju uywalny,
jeli kto lubi nowoci. brakuje dopeniania tabem, brakuje prompta,
brakuje query, brakuje kilku klawiszy. i pewnie ma jeszcze mas bdw.
w kadym razie, mona przewija do gry klawiszami PageUp i PageDown (;

od 20020627 ekg jest przygotowane do obsugi rnych interfejsw uytkowika.
zrobiem 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
wiem 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_deinit, ui_print, ui_new_target, ui_loop, ui_beep, ui_query
	adresy funkcji danego interfejsu. nawet jeli funkcja nic nie
	robi, musi by zdefiniowana. zmienne nie mog zawiera NULL.

ui_deinit()
	pozamykanie wszystkiego.

ui_print(const char *target, const char *line)
	wywietlenie tekstu ,,line'' w oknie ,,target''. pki co, obsugi
	okien nie ma, ale kod jest przygotowany tak, e wiadomoci s ju
	wysyane w odpowiednie miejsce. przewidziano te dwa specjalne
	okna -- ,,__status'' dla pierwszego okna statusowego oraz
	,,__current'' dla aktualnego. 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 rozumanych 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.1.1.1 2002/07/09 22:22:02 chilek Exp $
