1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-08 09:41:14 +02:00

add zcurses timeout

This commit is contained in:
Peter Stephenson 2007-10-28 20:28:29 +00:00
parent 0919edb315
commit 788320264e
3 changed files with 42 additions and 2 deletions

View file

@ -1,5 +1,8 @@
2007-10-28 Peter Stephenson <p.w.stephenson@ntlworld.com>
* 24028: Doc/Zsh/mod_curses.yo, Src/Modules/curses.c:
add "zcurses timeout".
* 24027: Doc/Zsh/mod_curses.yo, Src/Modules/curses.c:
add "touch", subwindows, optimized "refresh".

View file

@ -23,7 +23,8 @@ xitem(tt(zcurses) tt(string) var(targetwin) var(string) )
xitem(tt(zcurses) tt(border) var(targetwin) var(border) )(
xitem(tt(zcurses) tt(attr) var(targetwin) [ var({+/-}attribute) | var(fg_col)tt(/)var(bg_col) ] [...])
xitem(tt(zcurses) tt(scroll) [ tt(on) | tt(off) | {+/-}var(lines) ])
item(tt(input) var(targetwin) [ var(param) [ var(kpparm) ] ])(
xitem(tt(zcurses) tt(input) var(targetwin) [ var(param) [ var(kpparm) ] ])
item(tt(zcurses) tt(timeout) var(targetwin) var(intval))(
Manipulate curses windows. All uses of this command should be
bracketed by `tt(zcurses init)' to initialise use of curses, and
`tt(zcurses end)' to end it; omitting `tt(zcurses end)' can cause
@ -125,6 +126,14 @@ with the prefix `tt(KEY_)' removed. Other keys cause a value to be set in
var(param) as before. On a succesful return only one of var(param) or
var(kpparm) contains a non-empty string; the other is set to an empty
string.
tt(timeout) specifies a timeout value for input from var(targetwin).
If var(intval) is negative, `tt(zcurses input)' waits indefinitely for
a character to be typed; this is the default. If var(intval) is zero,
`tt(zcurses input)' returns immediately; if there is typeahead it is
returned, else no input is done and status 1 is returned. If var(intval)
is positive, `tt(zcurses input)' waits var(intval) milliseconds for
input and if there is none at the end of that period returns status 1.
)
enditem()

View file

@ -562,7 +562,7 @@ zccmd_refresh(const char *nam, char **args)
static int
zccmd_move(const char *nam, char **args)
zccmd_move(const char *nam, char **args)
{
int y, x;
LinkNode node;
@ -935,6 +935,33 @@ zccmd_input(const char *nam, char **args)
}
static int
zccmd_timeout(const char *nam, char **args)
{
LinkNode node;
ZCWin w;
int to;
char *eptr;
node = zcurses_validate_window(args[0], ZCURSES_USED);
if (node == NULL) {
zwarnnam(nam, "%s: %s", zcurses_strerror(zc_errno), args[0]);
return 1;
}
w = (ZCWin)getdata(node);
to = (int)zstrtol(args[1], &eptr, 10);
if (*eptr) {
zwarnnam(nam, "timeout requires an integer: %s", args[1]);
return 1;
}
wtimeout(w->win, to);
return 0;
}
static int
zccmd_position(const char *nam, char **args)
{
@ -1019,6 +1046,7 @@ bin_zcurses(char *nam, char **args, Options ops, UNUSED(int func))
{"attr", zccmd_attr, 2, -1},
{"scroll", zccmd_scroll, 2, 2},
{"input", zccmd_input, 1, 3},
{"timeout", zccmd_timeout, 2, 2},
{"touch", zccmd_touch, 1, -1},
{NULL, (zccmd_t)0, 0, 0}
};