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:
parent
0919edb315
commit
788320264e
3 changed files with 42 additions and 2 deletions
|
@ -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".
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue