/****************************************************************************
- * Copyright (c) 2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2016,2017 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 *
* authorization. *
****************************************************************************/
/*
- * $Id: clip_printw.c,v 1.3 2009/07/17 09:28:52 tom Exp $
+ * $Id: clip_printw.c,v 1.15 2017/09/28 23:07:23 tom Exp $
*
* demonstrate how to use printw without wrapping.
*/
#include <test.priv.h>
+#include <popup_msg.h>
#ifdef HAVE_VW_PRINTW
unsigned v;
int status;
int pair;
- unsigned attr;
+ attr_t attr;
int count;
int ch;
const char *c_msg;
start_color();
for (n = 0; n < SIZEOF(table); ++n) {
- init_pair(table[n].pair, table[n].fg, table[n].bg);
+ init_pair((short) table[n].pair,
+ (short) table[n].fg,
+ (short) table[n].bg);
}
}
if (state < SIZEOF(table)) {
}
static const char *
-video_params(unsigned state, unsigned *attr)
+video_params(unsigned state, attr_t *attr)
{
/* *INDENT-OFF* */
static struct {
- unsigned attr;
+ attr_t attr;
const char *msg;
} table[] = {
- { A_NORMAL, "normal" },
- { A_BOLD, "bold" },
- { A_REVERSE, "reverse" },
- { A_UNDERLINE, "underline" },
- { A_BLINK, "blink" },
+ { WA_NORMAL, "normal" },
+ { WA_BOLD, "bold" },
+ { WA_REVERSE, "reverse" },
+ { WA_UNDERLINE, "underline" },
+ { WA_BLINK, "blink" },
};
/* *INDENT-ON* */
delwin(win1);
touchwin(win);
} else {
+ if (win1)
+ delwin(win1);
beep();
}
}
static void
show_help(WINDOW *win)
{
- static const char *table[] =
+ static const char *msgs[] =
{
"Basic commands:"
,"Use h/j/k/l or arrow keys to move the cursor."
,"Other commands:"
,"space toggles through the set of video attributes and colors."
,"t touches (forces repaint) of the current line."
- ,". calls clip_wprintw at the current position with the given count."
+ ,". calls vw_printw at the current position with the given count."
,"= resets count to zero."
,"? shows this help-window"
- ,""
+ ,0
};
- int y_max, x_max;
- int row;
-
- getmaxyx(win, y_max, x_max);
- for (row = 0; row < (int) SIZEOF(table) && row < y_max; ++row) {
- mvwprintw(win, row, 0, "%.*s", x_max, table[row]);
- }
- while (wgetch(win) != 'q')
- beep();
+ popup_msg(win, msgs);
}
static void
sp->count = 0;
show_status(win, sp);
break;
- case '?':
- do_subwindow(win, sp, show_help);
+ case HELP_KEY_1:
+ show_help(win);
break;
default:
if (isdigit(sp->ch)) {
do {
switch (st.ch) {
case '.': /* change from current position */
- wattrset(win, st.attr | COLOR_PAIR(st.pair));
+ (void) wattrset(win, AttrArg(COLOR_PAIR(st.pair), st.attr));
if (st.count > 0) {
- need = st.count + 1;
- sprintf(fmt, "%%c%%%ds%%c", st.count);
+ need = (unsigned) st.count + 1;
+ _nc_SPRINTF(fmt, _nc_SLIMIT(sizeof(fmt)) "%%c%%%ds%%c", st.count);
} else {
- need = getmaxx(win) - 1;
- strcpy(fmt, "%c%s%c");
+ need = (unsigned) getmaxx(win) - 1;
+ _nc_STRCPY(fmt, "%c%s%c", sizeof(fmt));
}
- if ((buffer = typeMalloc(char, need)) != 0) {
+ if ((buffer = typeMalloc(char, need + 1)) != 0) {
for (j = 0; j < need; ++j) {
- buffer[j] = 'A' + (j % 26);
+ buffer[j] = (char) ('A' + (j % 26));
}
buffer[need - 1] = '\0';
st.status = clip_wprintw(win, fmt, '[', buffer, ']');
+ free(buffer);
}
break;
case 'w':
ExitProgram(EXIT_SUCCESS);
}
+
#else
int
main(void)