static char rcsid[] = "@(#)$Id: wrapper.c,v 1.10 2006/04/09 07:37:37 hurtta Exp $"; /****************************************************************************** * The Elm (ME+) Mail System - $Revision: 1.10 $ $State: Exp $ * * Author: Kari Hurtta *****************************************************************************/ #include "def_screen.h" DEBUG_VAR(Debug,__FILE__,"screen"); #if ANSI_C #define S_(x) static x; #else #define S_(x) #endif static void CUR_init P_((struct menu_context *ctx)); static void CUR_init(ctx) struct menu_context *ctx; { DPRINT(Debug,10, (&Debug, "CUR_init: %p\n", ctx)); } static void CUR_free P_((struct menu_context *ctx)); static void CUR_free(ctx) struct menu_context *ctx; { DPRINT(Debug,10, (&Debug, "CUR_free: %p\n", ctx)); } static void CUR_Writechar P_((struct menu_context * ctx, int ch)); static void CUR_Writechar(ctx,ch) struct menu_context * ctx; int ch; { cur_Writechar(ch, NULL); } static void CUR_PutLineS P_((struct menu_context * ctx, struct string *text)); static void CUR_PutLineS(ctx,text) struct menu_context * ctx; struct string *text; { cur_PutLineS(text,NULL); } static void CUR_PutLine0 P_((struct menu_context * ctx, int x, int y, const char *line)); static void CUR_PutLine0(ctx,x,y,line) struct menu_context * ctx; int x; int y; CONST char *line; { cur_PutLine0(x,y,line,NULL); } static void CUR_CleartoEOLN P_((struct menu_context * ctx)); static void CUR_CleartoEOLN(ctx) struct menu_context * ctx; { cur_CleartoEOLN(); } static void CUR_CleartoEOS P_((struct menu_context * ctx)); static void CUR_CleartoEOS(ctx) struct menu_context * ctx; { cur_CleartoEOS(); } static struct charset_state * CUR_ReadCh2 P_((struct menu_context *ctx, int flags, int break_flag)); static struct charset_state * CUR_ReadCh2(ctx,flags,break_flag) struct menu_context *ctx; int flags; int break_flag; { return cur_ReadCh2(flags,break_flag); } static void CUR_ScreenSize P_((struct menu_context *ctx, int *lines, int *columns)); static void CUR_ScreenSize(ctx,lines,columns) struct menu_context *ctx; int *lines; int *columns; { cur_ScreenSize(lines,columns); /* ? ? ? syncronize? */ ctx->lines = *lines; ctx->columns = *columns; } static void CUR_GetXYLocation P_((struct menu_context *ctx, int *x, int *y)); static void CUR_GetXYLocation(ctx,x,y) struct menu_context *ctx; int *x; int *y; { cur_GetXYLocation(x,y); } static void CUR_ClearScreen P_((struct menu_context *ctx)); static void CUR_ClearScreen(ctx) struct menu_context *ctx; { ctx->redraw = 0; /* cur_ClearScreen() clear flag from default_context now */ cur_ClearScreen(); } static void CUR_MoveCursor P_((struct menu_context *ctx, int row, int col)); static void CUR_MoveCursor(ctx,row,col) struct menu_context *ctx; int row; int col; { cur_MoveCursor(row, col,NULL); } static void CUR_changemode P_((struct menu_context *ctx, int start, int end)); static void CUR_changemode(ctx,start,end) struct menu_context *ctx; int start; int end; { cur_changemode(&ctx->modes, start, end); } static void CUR_SyncEnter P_((struct menu_context *ctx)); static void CUR_SyncEnter(ctx) struct menu_context *ctx; { DPRINT(Debug,10, (&Debug, "CUR_SyncEnter: %p: Setting mode=0x%02x row=%d col=%d\n", ctx,ctx->modes,ctx->row,ctx->col)); /* Switch attributes */ cur_changemode(&CUR_modes,ctx->modes,CUR_modes); /* Move cursor */ cur_MoveCursor(ctx->row,ctx->col,NULL); } static void CUR_SyncLeave P_((struct menu_context *ctx)); static void CUR_SyncLeave(ctx) struct menu_context *ctx; { /* Remember attributes */ ctx->modes |= CUR_modes; /* disable attributes */ cur_changemode(&CUR_modes,0,ctx->modes); /* Remember cursor location */ cur_GetXYLocation(&ctx->row, &ctx->col); DPRINT(Debug,10, (&Debug, "CUR_SyncLeave: %p: mode=0x%02x row=%d col=%d\n", ctx,ctx->modes,ctx->row,ctx->col)); } /* called from menu_resized() */ static void CUR_resized P_((struct menu_context *ctx)); static void CUR_resized(ctx) struct menu_context *ctx; { ctx->lines = ROOT_MENU.lines; ctx->columns = ROOT_MENU.columns; ctx->changed = ROOT_MENU.changed; /* ? ? ? ? */ } static void CUR_calculate_line P_((struct menu_context *ctx, int rel_line, int *result)); static void CUR_calculate_line(ctx,rel_line,result) struct menu_context *ctx; int rel_line; int *result; { *result = rel_line; } static void CUR_get_linelimit P_((struct menu_context *ctx, int *startline, int *endline)); static void CUR_get_linelimit(ctx,startline,endline) struct menu_context *ctx; int *startline; int *endline; { *startline = 0; *endline = ctx->lines-1; if (ROOT_MENU.lines <= *endline) *endline = ROOT_MENU.lines-1; } /* called by need_redraw() */ static void CUR_reset_redraw P_((struct menu_context *ctx)); static void CUR_reset_redraw(ctx) struct menu_context *ctx; { ctx->redraw = ROOT_MENU.redraw; /* ? ? ? ? */ } static int CUR_do_redraw P_((struct menu_context *ctx)); static int CUR_do_redraw(ctx) struct menu_context *ctx; { return 0; } struct menu_draw_routine CURSES_ROUTINES = { MENU_DRAW_magic, CUR_init, CUR_free, CUR_Writechar, CUR_PutLineS, CUR_PutLine0, CUR_CleartoEOLN, CUR_CleartoEOS, CUR_ReadCh2, CUR_ScreenSize, CUR_GetXYLocation, CUR_ClearScreen, CUR_MoveCursor, CUR_changemode, CUR_SyncEnter, CUR_SyncLeave, CUR_resized, CUR_calculate_line, CUR_get_linelimit, CUR_reset_redraw, CUR_do_redraw, }; /* * Local Variables: * mode:c * c-basic-offset:4 * buffer-file-coding-system: iso-8859-1 * End: */