ekg2
Funkcje | Zmienne

Dokumentacja pliku ekg/windows.c

#include "ekg2-config.h"
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "commands.h"
#include "dynstuff.h"
#include "windows.h"
#include "userlist.h"
#include "sessions.h"
#include "themes.h"
#include "stuff.h"
#include "xmalloc.h"
#include "dynstuff_inline.h"
#include "queries.h"

Funkcje

static int window_new_compare (window_t *data1, window_t *data2)
static LIST_FREE_ITEM (list_window_free, window_t *)
static __DYNSTUFF_LIST_ADD_SORTED (windows, window_t, window_new_compare)
static __DYNSTUFF_LIST_UNLINK (windows, window_t)
static __DYNSTUFF_LIST_REMOVE_SAFE (windows, window_t, list_window_free)
 __DYNSTUFF_LIST_DESTROY (windows, window_t, list_window_free)
window_twindow_find_ptr (window_t *w)
window_twindow_find_sa (session_t *session, const char *target, int session_null_means_no_session)
window_twindow_find (const char *target)
void window_switch (int id)
window_twindow_new (const char *target, session_t *session, int new_id)
void window_print (window_t *w, fstring_t *line)
void window_next ()
void window_prev ()
void window_kill (window_t *w)
window_twindow_exist (int id)
static void window_move (int first, int second)
static void window_real_move (int source, int dest)
char * window_target (window_t *window)
int cmd_window (const char *name, const char **params, session_t *session, const char *target, int quiet)
void window_session_set (window_t *w, session_t *new_session)
int window_session_cycle (window_t *w)
int window_lock_inc (window_t *w)
int window_lock_dec (window_t *w)

Zmienne

int window_last_id = -1
window_twindows = NULL
int config_display_crap = 1
window_twindow_current = NULL
window_twindow_status = NULL
window_twindow_debug = NULL
window_lastlog_tlastlog_current = NULL

Dokumentacja funkcji

static __DYNSTUFF_LIST_ADD_SORTED ( windows  ,
window_t  ,
window_new_compare   
) [static]
__DYNSTUFF_LIST_DESTROY ( windows  ,
window_t  ,
list_window_free   
)
static __DYNSTUFF_LIST_REMOVE_SAFE ( windows  ,
window_t  ,
list_window_free   
) [static]
static __DYNSTUFF_LIST_UNLINK ( windows  ,
window_t   
) [static]
int cmd_window ( const char *  name,
const char **  params,
session_t session,
const char *  target,
int  quiet 
)
static LIST_FREE_ITEM ( list_window_free  ,
window_t  
) [static]
window_t* window_exist ( int  id)

window_exist()

check if window with id exist

Parametry:
id- id of window.
Zobacz również:
window_find() - If you want to search for window target, instead of window id.
window_find_s() - If you want to search for window session && target, instead of window id.
window_find_ptr() - if you want to search for window pointer, instead of window id.
Zwraca:
window_t *, with id specified by id, or NULL if such window doesn't exists.
window_t* window_find ( const char *  target)

window_find()

Seeks for an window with given target
Wrapper to: window_find_sa(NULL, target, 0);

Nota:
It's really slow, and you should avoid using it. You'll never know if you found good window... so use window_find_s()
Parametry:
target- window target
Zobacz również:
window_find_s() - If you know session.
Zwraca:
pointer to window_t struct if window was founded, else NULL
window_t* window_find_ptr ( window_t w)

window_find_ptr()

it's search over window list and checks if param w is still on that list.

Nota:
It's possible to find another window with the same address as old one.. it's rather not possible.. however, It's better if you use other functions...
Zobacz również:
window_find() - If you want to search for window target, instead of window ptr.
window_find_s() - If you want to search for window session && target, instead of window ptr.
window_exist - If you want to search for window id, instead of window ptr.
Parametry:
w- window to look for.
Zwraca:
It returns w if window was found, otherwise NULL.
window_t* window_find_sa ( session_t session,
const char *  target,
int  session_null_means_no_session 
)

window_find_sa()

Search for an window with given target and session

Parametry:
session- window session to search [See also @ session_null_means_no_session]
target- window target to search
session_null_means_no_session- if you know that this window must belong to given session [NULL, or whatever] so this should be 1. else NULL @ session will mean that you don't know which session should it be. And it'll search/check all sessions
Zobacz również:
window_find_ptr() - If you want to search for given window ptr.
window_find_s() - macro to window_find_sa(session, target, 1)
window_find() - wrapper to window_find_sa(NULL, target, 0)
Zwraca:
pointer to window_t struct if window was founded, else NULL
void window_kill ( window_t w)

window_kill()

Remove given window.
If it's __status window, and w->target than display nice message about closing talk, else display message about no possibility to close status window

Nota:
You cannot remove here __status and __debug windows.
You must do it by hand like in ekg_exit() but if you want do it.
Set window_debug and window_status for proper values.
ekg2 core need them.
Błąd:
Possible bug with sort_windows. Can anyone who wrote it look at it?
Parametry:
w- given window.
int window_lock_dec ( window_t w)
int window_lock_inc ( window_t w)
static void window_move ( int  first,
int  second 
) [static]

window_move()

swap windows (swap windows id -> change sequence of them in UI)

Parametry:
first- 1st window id.
second- 2nd window id.
Do zrobienia:
XXX: Rename to _swap, and make some real move.
window_t* window_new ( const char *  target,
session_t session,
int  new_id 
)

window_new()

Create new window_t, with given new_id (if new_id != 0)

Nota:
If target == "$" than it return current window. [POSSIBLE BUG] If window with such target [it can also be u->uid/u->nickname combination] exists. than it'll return it.
You shouldn't pass new_id here. Because it can break UI stuff. don't ask. it's wrong. Just don't use it. It'll be possible removed... In case you really need it, you can talk to the devs, and ask for an id from class: 1000 to 1999
Do zrobienia:
See XXX's
Parametry:
target- name of window
session- session of this window
new_id- if different than 0, than window will take this id.
Zwraca:
window_t struct
static int window_new_compare ( window_t data1,
window_t data2 
) [static]
void window_next ( )
void window_prev ( )
void window_print ( window_t w,
fstring_t line 
)

window_print()

Print fstring_t line to window

Do zrobienia:
If UI_WINDOW_PRINT is not handled by ui-plugin, we should free line, or we'll have memleaks.
Parametry:
w- window
line- line
static void window_real_move ( int  source,
int  dest 
) [static]
int window_session_cycle ( window_t w)

window_session_cycle()

Change session of given window to next good one (based on config_window_session_allow value)

Nota:
behaviour of window_session_cycle() based on values of config_window_session_allow: 0 - change session only if w->target == NULL 1 - like 0 + if w->target is set than new session must accept that uid [default && other values] 2 - change to any next session 4 - jump to status window before cycling.
If w->session was changed than UI_WINDOW_TARGET_CHANGED will be emited. If w == window_current than SESSION_CHANGED will be emited also.
Do zrobienia:
Gdy config_window_session_allow == 2, to najpierw sprobowac znalezc dobra sesje a potem jesli nie to nastepna?
Parametry:
w- window
Zwraca:
0 - if session of window was changed -1 - if not
void window_session_set ( window_t w,
session_t new_session 
)
void window_switch ( int  id)
char* window_target ( window_t window)

window_target()

Parametry:
window- window
Do zrobienia:
Make it const?
Zwraca:
Never NULL pointer [to don't care about it] look below for more details: if window->target is not NULL return it
else:
  • __current if window is NULL
  • __status if window->id == 1
  • __debug if window->id == 0
    else return ""

Dokumentacja zmiennych

int window_last_id = -1
window_t* windows = NULL
 All Struktury Danych Pliki Funkcje Zmienne Definicje typów Wyliczenia Wartości wyliczeń Definicje