X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Flib_slkrefr.c;h=96ca6a6e48925aa18df70072d5a5f49d4b675036;hp=9040cc0429ecb2b9ac0222b63a7a4b29ae81b3aa;hb=404cc3f5b0751dd219565139f825c5a4d445f651;hpb=a8987e73ec254703634802b4f7ee30d3a485524d diff --git a/ncurses/base/lib_slkrefr.c b/ncurses/base/lib_slkrefr.c index 9040cc04..96ca6a6e 100644 --- a/ncurses/base/lib_slkrefr.c +++ b/ncurses/base/lib_slkrefr.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2003 Free Software Foundation, Inc. * + * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -29,6 +29,8 @@ /**************************************************************************** * Author: Zeyd M. Ben-Halim 1992,1995 * * and: Eric S. Raymond * + * and: Juergen Pfeifer 1996-on * + * and: Thomas E. Dickey * ****************************************************************************/ /* @@ -38,7 +40,31 @@ #include #include /* num_labels, label_*, plab_norm */ -MODULE_ID("$Id: lib_slkrefr.c,v 1.11 2003/03/29 22:53:48 tom Exp $") +#ifndef CUR +#define CUR SP_TERMTYPE +#endif + +MODULE_ID("$Id: lib_slkrefr.c,v 1.20 2009/05/10 00:48:29 tom Exp $") + +/* + * Paint the info line for the PC style SLK emulation. + */ +static void +slk_paint_info(WINDOW *win) +{ + SCREEN *sp = _nc_screen_of(win); + + if (win && sp && (sp->slk_format == 4)) { + int i; + + mvwhline(win, 0, 0, 0, getmaxx(win)); + wmove(win, 0, 0); + + for (i = 0; i < sp->_slk->maxlab; i++) { + mvwprintw(win, 0, sp->_slk->ent[i].ent_x, "F%d", i + 1); + } + } +} /* * Write the soft labels to the soft-key window. @@ -46,6 +72,9 @@ MODULE_ID("$Id: lib_slkrefr.c,v 1.11 2003/03/29 22:53:48 tom Exp $") static void slk_intern_refresh(SLK * slk) { +#if NCURSES_SP_FUNCS + SCREEN *sp = CURRENT_SCREEN; +#endif int i; int fmt = SP->slk_format; @@ -55,18 +84,20 @@ slk_intern_refresh(SLK * slk) if (num_labels > 0 && SLK_STDFMT(fmt)) { if (i < num_labels) { TPUTS_TRACE("plab_norm"); - putp(tparm(plab_norm, i + 1, slk->ent[i].form_text)); + putp(TPARM_2(plab_norm, i + 1, slk->ent[i].form_text)); } } else { + if (fmt == 4) + slk_paint_info(slk->win); wmove(slk->win, SLK_LINES(fmt) - 1, slk->ent[i].ent_x); - if (SP && SP->_slk) - wattrset(slk->win, SP->_slk->attr); - waddnstr(slk->win, slk->ent[i].form_text, - MAX_SKEY_LEN(fmt)); + if (SP->_slk) { + wattrset(slk->win, AttrOf(SP->_slk->attr)); + } + waddstr(slk->win, slk->ent[i].form_text); /* if we simulate SLK's, it's looking much more natural to use the current ATTRIBUTE also for the label window */ - wattrset(slk->win, stdscr->_attrs); + wattrset(slk->win, WINDOW_ATTRS(stdscr)); } } slk->ent[i].dirty = FALSE; @@ -89,32 +120,48 @@ slk_intern_refresh(SLK * slk) * Refresh the soft labels. */ NCURSES_EXPORT(int) -slk_noutrefresh(void) +NCURSES_SP_NAME(slk_noutrefresh) (NCURSES_SP_DCL0) { T((T_CALLED("slk_noutrefresh()"))); - if (SP == NULL || SP->_slk == NULL) + if (SP_PARM == NULL || SP_PARM->_slk == NULL) returnCode(ERR); - if (SP->_slk->hidden) + if (SP_PARM->_slk->hidden) returnCode(OK); - slk_intern_refresh(SP->_slk); + slk_intern_refresh(SP_PARM->_slk); + + returnCode(wnoutrefresh(SP_PARM->_slk->win)); +} - returnCode(wnoutrefresh(SP->_slk->win)); +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +slk_noutrefresh(void) +{ + return NCURSES_SP_NAME(slk_noutrefresh) (CURRENT_SCREEN); } +#endif /* * Refresh the soft labels. */ NCURSES_EXPORT(int) -slk_refresh(void) +NCURSES_SP_NAME(slk_refresh) (NCURSES_SP_DCL0) { T((T_CALLED("slk_refresh()"))); - if (SP == NULL || SP->_slk == NULL) + if (SP_PARM == NULL || SP_PARM->_slk == NULL) returnCode(ERR); - if (SP->_slk->hidden) + if (SP_PARM->_slk->hidden) returnCode(OK); - slk_intern_refresh(SP->_slk); + slk_intern_refresh(SP_PARM->_slk); + + returnCode(wrefresh(SP_PARM->_slk->win)); +} - returnCode(wrefresh(SP->_slk->win)); +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +slk_refresh(void) +{ + return NCURSES_SP_NAME(slk_refresh) (CURRENT_SCREEN); } +#endif