|
Packit |
437b5e |
/*
|
|
Packit |
437b5e |
* Curses binding for Lua 5.1, 5.2 & 5.3.
|
|
Packit |
437b5e |
*
|
|
Packit |
437b5e |
* (c) Gary V. Vaughan <gary@vaughan.pe> 2013-2015
|
|
Packit |
437b5e |
* (c) Reuben Thomas <rrt@sc3d.org> 2009-2012
|
|
Packit |
437b5e |
* (c) Tiago Dionizio <tiago.dionizio AT gmail.com> 2004-2007
|
|
Packit |
437b5e |
*
|
|
Packit |
437b5e |
* Permission is hereby granted, free of charge, to any person obtaining
|
|
Packit |
437b5e |
* a copy of this software and associated documentation files (the
|
|
Packit |
437b5e |
* "Software"), to deal in the Software without restriction, including
|
|
Packit |
437b5e |
* without limitation the rights to use, copy, modify, merge, publish,
|
|
Packit |
437b5e |
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
Packit |
437b5e |
* permit persons to whom the Software is furnished to do so, subject to
|
|
Packit |
437b5e |
* the following conditions:
|
|
Packit |
437b5e |
*
|
|
Packit |
437b5e |
* The above copyright notice and this permission notice shall be
|
|
Packit |
437b5e |
* included in all copies or substantial portions of the Software.
|
|
Packit |
437b5e |
*
|
|
Packit |
437b5e |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
Packit |
437b5e |
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
Packit |
437b5e |
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
Packit |
437b5e |
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
Packit |
437b5e |
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
Packit |
437b5e |
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
Packit |
437b5e |
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Curses Window objects.
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
The methods documented on this page are available on any Curses Window
|
|
Packit |
437b5e |
object, such as created by:
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
stdscr = curses.initscr ()
|
|
Packit |
437b5e |
window = curses.newwin (25, 80, 0, 0)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
@classmod posix.curses.window
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
#include <config.h>
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
#if HAVE_CURSES
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
#include "_helpers.c"
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
#include "curses/chstr.c"
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
static const char *WINDOWMETA = "posix.curses:window";
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
static void
|
|
Packit |
437b5e |
lc_newwin(lua_State *L, WINDOW *nw)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
if (nw)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW **w = lua_newuserdata(L, sizeof(WINDOW*));
|
|
Packit |
437b5e |
luaL_getmetatable(L, WINDOWMETA);
|
|
Packit |
437b5e |
lua_setmetatable(L, -2);
|
|
Packit |
437b5e |
*w = nw;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
else
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
lua_pushliteral(L, "failed to create window");
|
|
Packit |
437b5e |
lua_error(L);
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
static WINDOW **
|
|
Packit |
437b5e |
lc_getwin(lua_State *L, int offset)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW **w = (WINDOW**)luaL_checkudata(L, offset, WINDOWMETA);
|
|
Packit |
437b5e |
if (w == NULL)
|
|
Packit |
437b5e |
luaL_argerror(L, offset, "bad curses window");
|
|
Packit |
437b5e |
return w;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
static WINDOW *
|
|
Packit |
437b5e |
checkwin(lua_State *L, int offset)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW **w = lc_getwin(L, offset);
|
|
Packit |
437b5e |
if (*w == NULL)
|
|
Packit |
437b5e |
luaL_argerror(L, offset, "attempt to use closed curses window");
|
|
Packit |
437b5e |
return *w;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Unique string representation of a @{posix.curses.window}.
|
|
Packit |
437b5e |
@function __tostring
|
|
Packit |
437b5e |
@treturn string unique string representation of the window object.
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
W__tostring(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW **w = lc_getwin(L, 1);
|
|
Packit |
437b5e |
char buff[34];
|
|
Packit |
437b5e |
if (*w == NULL)
|
|
Packit |
437b5e |
strcpy(buff, "closed");
|
|
Packit |
437b5e |
else
|
|
Packit |
437b5e |
sprintf(buff, "%p", lua_touserdata(L, 1));
|
|
Packit |
437b5e |
lua_pushfstring(L, "curses window (%s)", buff);
|
|
Packit |
437b5e |
return 1;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Free all the resources associated with a window.
|
|
Packit |
437b5e |
@function close
|
|
Packit |
437b5e |
@see curs_window(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wclose(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW **w = lc_getwin(L, 1);
|
|
Packit |
437b5e |
if (*w != NULL && *w != stdscr)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
delwin(*w);
|
|
Packit |
437b5e |
*w = NULL;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Move the position of a window.
|
|
Packit |
437b5e |
@function move_window
|
|
Packit |
437b5e |
@int y offset frow top of screen
|
|
Packit |
437b5e |
@int x offset from left of screen
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_window(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmove_window(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
return pushokresult(mvwin(w, y, x));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Create a new subwindow.
|
|
Packit |
437b5e |
@function sub
|
|
Packit |
437b5e |
@treturn window a new absolutely positioned subwindow
|
|
Packit |
437b5e |
@int nlines number of window lines
|
|
Packit |
437b5e |
@int ncols number of window columns
|
|
Packit |
437b5e |
@int begin_y top line of window
|
|
Packit |
437b5e |
@int begin_x leftmost column of window
|
|
Packit |
437b5e |
@see curs_window(3x)
|
|
Packit |
437b5e |
@see derive
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wsub(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *orig = checkwin(L, 1);
|
|
Packit |
437b5e |
int nlines = checkint(L, 2);
|
|
Packit |
437b5e |
int ncols = checkint(L, 3);
|
|
Packit |
437b5e |
int begin_y = checkint(L, 4);
|
|
Packit |
437b5e |
int begin_x = checkint(L, 5);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
lc_newwin(L, subwin(orig, nlines, ncols, begin_y, begin_x));
|
|
Packit |
437b5e |
return 1;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Create a new derived window.
|
|
Packit |
437b5e |
@function derive
|
|
Packit |
437b5e |
@int nlines number of window lines
|
|
Packit |
437b5e |
@int ncols number of window columns
|
|
Packit |
437b5e |
@int begin_y top line of window
|
|
Packit |
437b5e |
@int begin_x leftmost column of window
|
|
Packit |
437b5e |
@treturn window a new relatively positioned subwindow
|
|
Packit |
437b5e |
@see curs_window(3x)
|
|
Packit |
437b5e |
@see sub
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wderive(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *orig = checkwin(L, 1);
|
|
Packit |
437b5e |
int nlines = checkint(L, 2);
|
|
Packit |
437b5e |
int ncols = checkint(L, 3);
|
|
Packit |
437b5e |
int begin_y = checkint(L, 4);
|
|
Packit |
437b5e |
int begin_x = checkint(L, 5);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
lc_newwin(L, derwin(orig, nlines, ncols, begin_y, begin_x));
|
|
Packit |
437b5e |
return 1;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Move the position of a derived window.
|
|
Packit |
437b5e |
@function move_derived
|
|
Packit |
437b5e |
@int par_y lines from top of parent window
|
|
Packit |
437b5e |
@int par_x columns from left of parent window
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_window(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmove_derived(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int par_y = checkint(L, 2);
|
|
Packit |
437b5e |
int par_x = checkint(L, 3);
|
|
Packit |
437b5e |
return pushokresult(mvderwin(w, par_y, par_x));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Change the size of a window.
|
|
Packit |
437b5e |
@function resize
|
|
Packit |
437b5e |
@int height new number of lines
|
|
Packit |
437b5e |
@int width new number of columns
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_wresize(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wresize(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int height = checkint(L, 2);
|
|
Packit |
437b5e |
int width = checkint(L, 3);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
int c = wresize(w, height, width);
|
|
Packit |
437b5e |
if (c == ERR) return 0;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushokresult(true);
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Make a duplicate of a window.
|
|
Packit |
437b5e |
@function clone
|
|
Packit |
437b5e |
@treturn window a new duplicate of this window
|
|
Packit |
437b5e |
@see curs_window(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wclone(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
lc_newwin(L, dupwin(w));
|
|
Packit |
437b5e |
return 1;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Mark ancestors of a window for refresh.
|
|
Packit |
437b5e |
@function syncup
|
|
Packit |
437b5e |
@see curs_window(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wsyncup(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
wsyncup(checkwin(L, 1));
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Automatically mark ancestors of a changed window for refresh.
|
|
Packit |
437b5e |
@function syncok
|
|
Packit |
437b5e |
@bool bf
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_window(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wsyncok(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
#if LPOSIX_CURSES_COMPLIANT
|
|
Packit |
437b5e |
int bf = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
return pushokresult(syncok(w, bf));
|
|
Packit |
437b5e |
#else
|
|
Packit |
437b5e |
return binding_notimplemented(L, "syncok", "curses");
|
|
Packit |
437b5e |
#endif
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Mark cursor position of ancestors of a window for refresh.
|
|
Packit |
437b5e |
@function cursyncup
|
|
Packit |
437b5e |
@see curs_window(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wcursyncup(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
wcursyncup(checkwin(L, 1));
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Mark child windows for refresh.
|
|
Packit |
437b5e |
@function syncdown
|
|
Packit |
437b5e |
@see curs_window(3x)
|
|
Packit |
437b5e |
@see refresh
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wsyncdown(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
wsyncdown(checkwin(L, 1));
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Refresh the window terminal display from the virtual screen.
|
|
Packit |
437b5e |
@function refresh
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_refresh(3x)
|
|
Packit |
437b5e |
@see posix.curses.doupdate
|
|
Packit |
437b5e |
@see noutrefresh
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wrefresh(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(wrefresh(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Copy the window backing screen to the virtual screen.
|
|
Packit |
437b5e |
@function noutrefresh
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_refresh(3x)
|
|
Packit |
437b5e |
@see posix.curses.doupdate
|
|
Packit |
437b5e |
@see refresh
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wnoutrefresh(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(wnoutrefresh(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Mark a window as having corrupted display that needs fully redrawing.
|
|
Packit |
437b5e |
@function redrawwin
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_refresh(3x)
|
|
Packit |
437b5e |
@see redrawln
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wredrawwin(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(redrawwin(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Mark a range of lines in a window as corrupted and in need of redrawing.
|
|
Packit |
437b5e |
@function redrawln
|
|
Packit |
437b5e |
@int beg_line
|
|
Packit |
437b5e |
@int num_lines
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_refresh(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wredrawln(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int beg_line = checkint(L, 2);
|
|
Packit |
437b5e |
int num_lines = checkint(L, 3);
|
|
Packit |
437b5e |
return pushokresult(wredrawln(w, beg_line, num_lines));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Change the cursor position.
|
|
Packit |
437b5e |
@function move
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_move(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmove(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
return pushokresult(wmove(w, y, x));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Scroll the window up *n* lines.
|
|
Packit |
437b5e |
@function scrl
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_scroll(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wscrl(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int n = checkint(L, 2);
|
|
Packit |
437b5e |
return pushokresult(wscrl(w, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Set the changed state of a window since the last refresh.
|
|
Packit |
437b5e |
@function touch
|
|
Packit |
437b5e |
@param[opt] changed
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_touch(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wtouch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int changed;
|
|
Packit |
437b5e |
if (lua_isnoneornil(L, 2))
|
|
Packit |
437b5e |
changed = TRUE;
|
|
Packit |
437b5e |
else
|
|
Packit |
437b5e |
changed = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (changed)
|
|
Packit |
437b5e |
return pushokresult(touchwin(w));
|
|
Packit |
437b5e |
return pushokresult(untouchwin(w));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Mark a range of lines as changed since the last refresh.
|
|
Packit |
437b5e |
@function touchline
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@param[opt] changed
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_refresh(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wtouchline(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int n = checkint(L, 3);
|
|
Packit |
437b5e |
int changed;
|
|
Packit |
437b5e |
if (lua_isnoneornil(L, 4))
|
|
Packit |
437b5e |
changed = TRUE;
|
|
Packit |
437b5e |
else
|
|
Packit |
437b5e |
changed = lua_toboolean(L, 4);
|
|
Packit |
437b5e |
return pushokresult(wtouchln(w, y, n, changed));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Has a particular window line changed since the last refresh?
|
|
Packit |
437b5e |
@function is_linetouched
|
|
Packit |
437b5e |
@int line
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_refresh(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wis_linetouched(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int line = checkint(L, 2);
|
|
Packit |
437b5e |
return pushboolresult(is_linetouched(w, line));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Has a window changed since the last refresh?
|
|
Packit |
437b5e |
@function is_wintouched
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_refresh(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wis_wintouched(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
return pushboolresult(is_wintouched(w));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Fetch the cursor position.
|
|
Packit |
437b5e |
@function getyx
|
|
Packit |
437b5e |
@treturn int y coordinate of top line
|
|
Packit |
437b5e |
@treturn int x coordinate of left column
|
|
Packit |
437b5e |
@see curs_getyx(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wgetyx(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y, x;
|
|
Packit |
437b5e |
getyx(w, y, x);
|
|
Packit |
437b5e |
lua_pushinteger(L, y);
|
|
Packit |
437b5e |
lua_pushinteger(L, x);
|
|
Packit |
437b5e |
return 2;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Fetch the parent-relative coordinates of a subwindow.
|
|
Packit |
437b5e |
@function getparyx
|
|
Packit |
437b5e |
@treturn int y coordinate of top line relative to parent window
|
|
Packit |
437b5e |
@treturn int x coordinate of left column relative to parent window
|
|
Packit |
437b5e |
@see curs_getyx(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wgetparyx(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y, x;
|
|
Packit |
437b5e |
getparyx(w, y, x);
|
|
Packit |
437b5e |
lua_pushinteger(L, y);
|
|
Packit |
437b5e |
lua_pushinteger(L, x);
|
|
Packit |
437b5e |
return 2;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Fetch the absolute top-left coordinates of a window.
|
|
Packit |
437b5e |
@function getbegyx
|
|
Packit |
437b5e |
@treturn int y coordinate of top line
|
|
Packit |
437b5e |
@treturn int x coordinate of left column
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_getyx(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wgetbegyx(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y, x;
|
|
Packit |
437b5e |
getbegyx(w, y, x);
|
|
Packit |
437b5e |
lua_pushinteger(L, y);
|
|
Packit |
437b5e |
lua_pushinteger(L, x);
|
|
Packit |
437b5e |
return 2;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Fetch the absolute bottom-right coordinates of a window.
|
|
Packit |
437b5e |
@function getmaxyx
|
|
Packit |
437b5e |
@treturn int y coordinate of bottom line
|
|
Packit |
437b5e |
@treturn int x coordinate of right column
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_getyx(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wgetmaxyx(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y, x;
|
|
Packit |
437b5e |
getmaxyx(w, y, x);
|
|
Packit |
437b5e |
lua_pushinteger(L, y);
|
|
Packit |
437b5e |
lua_pushinteger(L, x);
|
|
Packit |
437b5e |
return 2;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Draw a border around a window.
|
|
Packit |
437b5e |
@function border
|
|
Packit |
437b5e |
@int[opt] ls
|
|
Packit |
437b5e |
@int[opt] rs
|
|
Packit |
437b5e |
@int[opt] ts
|
|
Packit |
437b5e |
@int[opt] bs
|
|
Packit |
437b5e |
@int[opt] tl
|
|
Packit |
437b5e |
@int[opt] tr
|
|
Packit |
437b5e |
@int[opt] bl
|
|
Packit |
437b5e |
@int[opt] br
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_border(3x)
|
|
Packit |
437b5e |
@usage
|
|
Packit |
437b5e |
win:border (curses.ACS_VLINE, curses.ACS_VLINE,
|
|
Packit |
437b5e |
curses.ACS_HLINE, curses.ACS_HLINE,
|
|
Packit |
437b5e |
curses.ACS_ULCORNER, curses.ACS_URCORNER,
|
|
Packit |
437b5e |
curses.ACS_LLCORNER, curses.ACS_LRCORNER)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wborder(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
chtype ls = optch(L, 2, 0);
|
|
Packit |
437b5e |
chtype rs = optch(L, 3, 0);
|
|
Packit |
437b5e |
chtype ts = optch(L, 4, 0);
|
|
Packit |
437b5e |
chtype bs = optch(L, 5, 0);
|
|
Packit |
437b5e |
chtype tl = optch(L, 6, 0);
|
|
Packit |
437b5e |
chtype tr = optch(L, 7, 0);
|
|
Packit |
437b5e |
chtype bl = optch(L, 8, 0);
|
|
Packit |
437b5e |
chtype br = optch(L, 9, 0);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushokresult(wborder(w, ls, rs, ts, bs, tl, tr, bl, br));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Draw a box around a window.
|
|
Packit |
437b5e |
@function box
|
|
Packit |
437b5e |
@int verch
|
|
Packit |
437b5e |
@int horch
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_border(3x)
|
|
Packit |
437b5e |
@see border
|
|
Packit |
437b5e |
@usage
|
|
Packit |
437b5e |
win:box (curses.ACS_VLINE, curses.ACS_HLINE)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wbox(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
chtype verch = checkch(L, 2);
|
|
Packit |
437b5e |
chtype horch = checkch(L, 3);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushokresult(box(w, verch, horch));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Draw a row of characters from the current cursor position.
|
|
Packit |
437b5e |
@function hline
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_border(3x)
|
|
Packit |
437b5e |
@see mvhline
|
|
Packit |
437b5e |
@see vline
|
|
Packit |
437b5e |
@usage
|
|
Packit |
437b5e |
_, width = win:getmaxyx ()
|
|
Packit |
437b5e |
win:hline (curses.ACS_HLINE, width - curs_x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Whline(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 2);
|
|
Packit |
437b5e |
int n = checkint(L, 3);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushokresult(whline(w, ch, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Draw a column of characters from the current cursor position.
|
|
Packit |
437b5e |
@function vline
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_border(3x)
|
|
Packit |
437b5e |
@see hline
|
|
Packit |
437b5e |
@see mvvline
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wvline(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 2);
|
|
Packit |
437b5e |
int n = checkint(L, 3);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushokresult(wvline(w, ch, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Move the cursor, then draw a row of characters from the new cursor position.
|
|
Packit |
437b5e |
@function mvhline
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_border(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvhline(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 4);
|
|
Packit |
437b5e |
int n = checkint(L, 5);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushokresult(mvwhline(w, y, x, ch, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Move the cursor, then draw a column of characters from the new cursor position.
|
|
Packit |
437b5e |
@function mvvline
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_border(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvvline(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 4);
|
|
Packit |
437b5e |
int n = checkint(L, 5);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushokresult(mvwvline(w, y, x, ch, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Write blanks to every character position in the window.
|
|
Packit |
437b5e |
@function erase
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_clear(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Werase(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(werase(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{erase} and then @{clearok}.
|
|
Packit |
437b5e |
@function clear
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_border(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wclear(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(wclear(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Write blanks to every character position after the cursor.
|
|
Packit |
437b5e |
@function clrtobot
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_border(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wclrtobot(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(wclrtobot(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Write blanks from the cursor to the end of the current line.
|
|
Packit |
437b5e |
@function clrtoeol
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_border(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wclrtoeol(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(wclrtoeol(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Advance the cursor after writing a character at the old position.
|
|
Packit |
437b5e |
@function addch
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_addch(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Waddch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 2);
|
|
Packit |
437b5e |
return pushokresult(waddch(w, ch));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move}, then @{addch}.
|
|
Packit |
437b5e |
@function mvaddch
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_addch(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvaddch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 4);
|
|
Packit |
437b5e |
return pushokresult(mvwaddch(w, y, x, ch));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{addch} then @{refresh}.
|
|
Packit |
437b5e |
@function echoch
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_addch(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wechoch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 2);
|
|
Packit |
437b5e |
return pushokresult(wechochar(w, ch));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Copy a @{posix.curses.chstr} starting at the current cursor position.
|
|
Packit |
437b5e |
@function addchstr
|
|
Packit |
437b5e |
@int chstr cs
|
|
Packit |
437b5e |
@int[opt] n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_addchstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Waddchstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int n = optint(L, 3, -1);
|
|
Packit |
437b5e |
chstr *cs = checkchstr(L, 2);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (n < 0 || n > (int) cs->len)
|
|
Packit |
437b5e |
n = cs->len;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushokresult(waddchnstr(w, cs->str, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move} then @{addchstr}.
|
|
Packit |
437b5e |
@function mvaddchstr
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@int[opt] n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_addchstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvaddchstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
int n = optint(L, 5, -1);
|
|
Packit |
437b5e |
chstr *cs = checkchstr(L, 4);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (n < 0 || n > (int) cs->len)
|
|
Packit |
437b5e |
n = cs->len;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushokresult(mvwaddchnstr(w, y, x, cs->str, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Copy a Lua string starting at the current cursor position.
|
|
Packit |
437b5e |
@function addstr
|
|
Packit |
437b5e |
@string str
|
|
Packit |
437b5e |
@int[opt] n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_addstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Waddstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
const char *str = luaL_checkstring(L, 2);
|
|
Packit |
437b5e |
int n = optint(L, 3, -1);
|
|
Packit |
437b5e |
return pushokresult(waddnstr(w, str, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move} then @{addstr}.
|
|
Packit |
437b5e |
@function mvaddstr
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@string str
|
|
Packit |
437b5e |
@int[opt] n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_addstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvaddstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
const char *str = luaL_checkstring(L, 4);
|
|
Packit |
437b5e |
int n = optint(L, 5, -1);
|
|
Packit |
437b5e |
return pushokresult(mvwaddnstr(w, y, x, str, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Set the background attributes for subsequently written characters.
|
|
Packit |
437b5e |
@function wbkgdset
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@see curs_bkgd(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wwbkgdset(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 2);
|
|
Packit |
437b5e |
wbkgdset(w, ch);
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{wbkgdset} and then set the background of every position accordingly.
|
|
Packit |
437b5e |
@function wbkgd
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_bkgd(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wwbkgd(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 2);
|
|
Packit |
437b5e |
return pushokresult(wbkgd(w, ch));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Fetch the current background attribute for the window.
|
|
Packit |
437b5e |
@function getbkgd
|
|
Packit |
437b5e |
@treturn int current window background attribute
|
|
Packit |
437b5e |
@see curs_bkgd(3x)
|
|
Packit |
437b5e |
@see wbkgd
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wgetbkgd(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushintresult(getbkgd(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Set the flush on interrupt behaviour for the window.
|
|
Packit |
437b5e |
@function intrflush
|
|
Packit |
437b5e |
@bool bf
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_inopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wintrflush(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int bf = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
return pushokresult(intrflush(w, bf));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Set the single value keypad keys behaviour for the window.
|
|
Packit |
437b5e |
@function keypad
|
|
Packit |
437b5e |
@bool[opt] on
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_inopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wkeypad(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int bf = lua_isnoneornil(L, 2) ? 1 : lua_toboolean(L, 2);
|
|
Packit |
437b5e |
return pushokresult(keypad(w, bf));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Force 8-bit (or 7-bit) input characters for the window.
|
|
Packit |
437b5e |
@function meta
|
|
Packit |
437b5e |
@bool on `true` to force 8-bit input characters
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_inopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmeta(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int bf = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
return pushokresult(meta(w, bf));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Force @{getch} to be non-blocking.
|
|
Packit |
437b5e |
@function nodelay
|
|
Packit |
437b5e |
@bool on
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_inopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wnodelay(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int bf = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
return pushokresult(nodelay(w, bf));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
For differentiating user input from terminal control sequences.
|
|
Packit |
437b5e |
@function timeout
|
|
Packit |
437b5e |
@int delay milliseconds, `0` for blocking, `-1` for non-blocking
|
|
Packit |
437b5e |
@see curs_inopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wtimeout(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int delay = checkint(L, 2);
|
|
Packit |
437b5e |
wtimeout(w, delay);
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Return input immediately from this window.
|
|
Packit |
437b5e |
@function notimeout
|
|
Packit |
437b5e |
@bool bf
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_inopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wnotimeout(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int bf = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
return pushokresult(notimeout(w, bf));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
The next call to @{refresh} will clear and completely redraw the window.
|
|
Packit |
437b5e |
@function clearok
|
|
Packit |
437b5e |
@bool bf
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_outopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wclearok(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int bf = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
return pushokresult(clearok(w, bf));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Use hardware character insert and delete on supporting terminals.
|
|
Packit |
437b5e |
@function idcok
|
|
Packit |
437b5e |
@bool bf
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_outopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Widcok(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int bf = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
idcok(w, bf);
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Use hardware line insert and delete on supporting terminals.
|
|
Packit |
437b5e |
@function idlok
|
|
Packit |
437b5e |
@bool bf
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_outopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Widlok(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int bf = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
return pushokresult(idlok(w, bf));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
No need to force synchronisation of hardware cursor.
|
|
Packit |
437b5e |
@function leaveok
|
|
Packit |
437b5e |
@bool bf
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_outopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wleaveok(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int bf = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
return pushokresult(leaveok(w, bf));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Scroll up one line when the cursor writes to the last screen position.
|
|
Packit |
437b5e |
@function scrollok
|
|
Packit |
437b5e |
@bool bf
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_outopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wscrollok(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int bf = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
return pushokresult(scrollok(w, bf));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Automatically call @{refresh} whenever the window content is changed.
|
|
Packit |
437b5e |
@function immedok
|
|
Packit |
437b5e |
@bool bf
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_outopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wimmedok(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
#if LPOSIX_CURSES_COMPLIANT
|
|
Packit |
437b5e |
int bf = lua_toboolean(L, 2);
|
|
Packit |
437b5e |
immedok(w, bf);
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
#else
|
|
Packit |
437b5e |
return binding_notimplemented(L, "immedok", "curses");
|
|
Packit |
437b5e |
#endif
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Set a software scrolling region for the window.
|
|
Packit |
437b5e |
@function wsetscrreg
|
|
Packit |
437b5e |
@int top top line of the scrolling region (line 0 is the first line)
|
|
Packit |
437b5e |
@int bot bottom line of the scrolling region
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_outopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wwsetscrreg(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int top = checkint(L, 2);
|
|
Packit |
437b5e |
int bot = checkint(L, 3);
|
|
Packit |
437b5e |
return pushokresult(wsetscrreg(w, top, bot));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Overlay this window on top of another non-destructively.
|
|
Packit |
437b5e |
@function overlay
|
|
Packit |
437b5e |
@tparam window dst destination window
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_overlay(3x)
|
|
Packit |
437b5e |
@see overwrite
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Woverlay(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *srcwin = checkwin(L, 1);
|
|
Packit |
437b5e |
WINDOW *dstwin = checkwin(L, 2);
|
|
Packit |
437b5e |
return pushokresult(overlay(srcwin, dstwin));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Destructively overwrite another window with this one.
|
|
Packit |
437b5e |
@function overwrite
|
|
Packit |
437b5e |
@tparam window dst destination window
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_inopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Woverwrite(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *srcwin = checkwin(L, 1);
|
|
Packit |
437b5e |
WINDOW *dstwin = checkwin(L, 2);
|
|
Packit |
437b5e |
return pushokresult(overwrite(srcwin, dstwin));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Overlay a rectangle of this window over another.
|
|
Packit |
437b5e |
@function copywin
|
|
Packit |
437b5e |
@tparam window dst destination window
|
|
Packit |
437b5e |
@int st top row from this window
|
|
Packit |
437b5e |
@int sl left column from this window
|
|
Packit |
437b5e |
@int dt top row of rectangle
|
|
Packit |
437b5e |
@int dl left column of rectangle
|
|
Packit |
437b5e |
@int db bottom row of rectangle
|
|
Packit |
437b5e |
@int dr right column of rectangle
|
|
Packit |
437b5e |
@bool overlay if `true`, copy destructively like @{overlay}
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_inopts(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wcopywin(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *srcwin = checkwin(L, 1);
|
|
Packit |
437b5e |
WINDOW *dstwin = checkwin(L, 2);
|
|
Packit |
437b5e |
int sminrow = checkint(L, 3);
|
|
Packit |
437b5e |
int smincol = checkint(L, 4);
|
|
Packit |
437b5e |
int dminrow = checkint(L, 5);
|
|
Packit |
437b5e |
int dmincol = checkint(L, 6);
|
|
Packit |
437b5e |
int dmaxrow = checkint(L, 7);
|
|
Packit |
437b5e |
int dmaxcol = checkint(L, 8);
|
|
Packit |
437b5e |
int woverlay = lua_toboolean(L, 9);
|
|
Packit |
437b5e |
return pushokresult(copywin(srcwin, dstwin, sminrow,
|
|
Packit |
437b5e |
smincol, dminrow, dmincol, dmaxrow, dmaxcol, woverlay));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Delete the character under the cursor.
|
|
Packit |
437b5e |
@function delch
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_delch(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wdelch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(wdelch(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move} then @{delch}.
|
|
Packit |
437b5e |
@function mvdelch
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_util(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvdelch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
return pushokresult(mvwdelch(w, y, x));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Move the lines below the cursor up, to delete the current line.
|
|
Packit |
437b5e |
@function deleteln
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_deleteln(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wdeleteln(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(wdeleteln(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Move the current line and those below down one line, leaving a new blank line.
|
|
Packit |
437b5e |
@function insertln
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_deleteln(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Winsertln(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(winsertln(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{deleteln} *n* times.
|
|
Packit |
437b5e |
@function winsdelln
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_deleteln(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wwinsdelln(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int n = checkint(L, 2);
|
|
Packit |
437b5e |
return pushokresult(winsdelln(w, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Read a character from the window input.
|
|
Packit |
437b5e |
@function getch
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_getch(3x)
|
|
Packit |
437b5e |
@see posix.curses.cbreak
|
|
Packit |
437b5e |
@see posix.curses.echo
|
|
Packit |
437b5e |
@see keypad
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wgetch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int c = wgetch(w);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (c == ERR)
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushintresult(c);
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move} then @{getch}
|
|
Packit |
437b5e |
@function mvgetch
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_deleteln(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvgetch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
int c;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (wmove(w, y, x) == ERR)
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
c = wgetch(w);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (c == ERR)
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushintresult(c);
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Read characters up to the next newline from the window input.
|
|
Packit |
437b5e |
@function getstr
|
|
Packit |
437b5e |
@int[opt] n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_getstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wgetstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int n = optint(L, 2, 0);
|
|
Packit |
437b5e |
char buf[LUAL_BUFFERSIZE];
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (n == 0 || n >= LUAL_BUFFERSIZE)
|
|
Packit |
437b5e |
n = LUAL_BUFFERSIZE - 1;
|
|
Packit |
437b5e |
if (wgetnstr(w, buf, n) == ERR)
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushstringresult(buf);
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move} then @{getstr}.
|
|
Packit |
437b5e |
@function mvgetstr
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@int[opt=-1] n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_getstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvgetstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
int n = optint(L, 4, -1);
|
|
Packit |
437b5e |
char buf[LUAL_BUFFERSIZE];
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (n == 0 || n >= LUAL_BUFFERSIZE)
|
|
Packit |
437b5e |
n = LUAL_BUFFERSIZE - 1;
|
|
Packit |
437b5e |
if (mvwgetnstr(w, y, x, buf, n) == ERR)
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushstringresult(buf);
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Fetch the attributed character at the current cursor position.
|
|
Packit |
437b5e |
@function winch
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_inch(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wwinch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
return pushintresult(winch(w));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move} then @{winch}
|
|
Packit |
437b5e |
@function mvwinch
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_getstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvwinch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
return pushintresult(mvwinch(w, y, x));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Fetch attributed characters from cursor position up to rightmost window position.
|
|
Packit |
437b5e |
@function winchnstr
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn posix.curses.chstr characters from cursor to end of line
|
|
Packit |
437b5e |
@see curs_inchstr(3x)
|
|
Packit |
437b5e |
@see winnstr
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wwinchnstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int n = checkint(L, 2);
|
|
Packit |
437b5e |
chstr *cs = chstr_new(L, n);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (winchnstr(w, cs->str, n) == ERR)
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return 1;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move} then @{winchnstr}.
|
|
Packit |
437b5e |
@function mvwinchnstr
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_getstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvwinchnstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
int n = checkint(L, 4);
|
|
Packit |
437b5e |
chstr *cs = chstr_new(L, n);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (mvwinchnstr(w, y, x, cs->str, n) == ERR)
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return 1;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Fetch a string from cursor position up to rightmost window position.
|
|
Packit |
437b5e |
@function winnstr
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_instr(3x)
|
|
Packit |
437b5e |
@see winchnstr
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wwinnstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int n = checkint(L, 2);
|
|
Packit |
437b5e |
char buf[LUAL_BUFFERSIZE];
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (n >= LUAL_BUFFERSIZE)
|
|
Packit |
437b5e |
n = LUAL_BUFFERSIZE - 1;
|
|
Packit |
437b5e |
if (winnstr(w, buf, n) == ERR)
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
lua_pushlstring(L, buf, n);
|
|
Packit |
437b5e |
return 1;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move} then @{winnstr}.
|
|
Packit |
437b5e |
@function mvwinnstr
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_instr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvwinnstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
int n = checkint(L, 4);
|
|
Packit |
437b5e |
char buf[LUAL_BUFFERSIZE];
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
if (n >= LUAL_BUFFERSIZE)
|
|
Packit |
437b5e |
n = LUAL_BUFFERSIZE - 1;
|
|
Packit |
437b5e |
if (mvwinnstr(w, y, x, buf, n) == ERR)
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
lua_pushlstring(L, buf, n);
|
|
Packit |
437b5e |
return 1;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Insert a character before the current cursor position.
|
|
Packit |
437b5e |
@function winsch
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_insch(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wwinsch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 2);
|
|
Packit |
437b5e |
return pushokresult(winsch(w, ch));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move} then @{winsch}.
|
|
Packit |
437b5e |
@function mvwinsch
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_insch(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvwinsch(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 4);
|
|
Packit |
437b5e |
return pushokresult(mvwinsch(w, y, x, ch));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Insert a string of characters before the current cursor position.
|
|
Packit |
437b5e |
@function winsstr
|
|
Packit |
437b5e |
@string str
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_insstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wwinsstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
const char *str = luaL_checkstring(L, 2);
|
|
Packit |
437b5e |
return pushokresult(winsnstr(w, str, lua_strlen(L, 2)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move} then @{winsstr}.
|
|
Packit |
437b5e |
@function mvwinsstr
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@string str
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_getstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvwinsstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
const char *str = luaL_checkstring(L, 4);
|
|
Packit |
437b5e |
return pushokresult(mvwinsnstr(w, y, x, str, lua_strlen(L, 2)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Like @{winsstr}, but no more than *n* characters.
|
|
Packit |
437b5e |
@function winsnstr
|
|
Packit |
437b5e |
@string str
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_getstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wwinsnstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
const char *str = luaL_checkstring(L, 2);
|
|
Packit |
437b5e |
int n = checkint(L, 3);
|
|
Packit |
437b5e |
return pushokresult(winsnstr(w, str, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Call @{move} then @{winsnstr}.
|
|
Packit |
437b5e |
@function mvwinsnstr
|
|
Packit |
437b5e |
@int y
|
|
Packit |
437b5e |
@int x
|
|
Packit |
437b5e |
@string str
|
|
Packit |
437b5e |
@int n
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_getstr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wmvwinsnstr(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int y = checkint(L, 2);
|
|
Packit |
437b5e |
int x = checkint(L, 3);
|
|
Packit |
437b5e |
const char *str = luaL_checkstring(L, 4);
|
|
Packit |
437b5e |
int n = checkint(L, 5);
|
|
Packit |
437b5e |
return pushokresult(mvwinsnstr(w, y, x, str, n));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Return a new subpad window object.
|
|
Packit |
437b5e |
@function subpad
|
|
Packit |
437b5e |
@int nlines
|
|
Packit |
437b5e |
@int ncols
|
|
Packit |
437b5e |
@int begin_y
|
|
Packit |
437b5e |
@int begin_x
|
|
Packit |
437b5e |
@treturn window a new subpad window object
|
|
Packit |
437b5e |
@see cur_pad(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wsubpad(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *orig = checkwin(L, 1);
|
|
Packit |
437b5e |
int nlines = checkint(L, 2);
|
|
Packit |
437b5e |
int ncols = checkint(L, 3);
|
|
Packit |
437b5e |
int begin_y = checkint(L, 4);
|
|
Packit |
437b5e |
int begin_x = checkint(L, 5);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
lc_newwin(L, subpad(orig, nlines, ncols, begin_y, begin_x));
|
|
Packit |
437b5e |
return 1;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Equivalent to @{refresh} for use with pad windows.
|
|
Packit |
437b5e |
@function prefresh
|
|
Packit |
437b5e |
@int st top row from this pad window
|
|
Packit |
437b5e |
@int sl left column from this pad window
|
|
Packit |
437b5e |
@int dt top row of rectangle
|
|
Packit |
437b5e |
@int dl left column of rectangle
|
|
Packit |
437b5e |
@int db bottom row of rectangle
|
|
Packit |
437b5e |
@int dr right column of rectangle
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see cur_pad(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wprefresh(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *p = checkwin(L, 1);
|
|
Packit |
437b5e |
int pminrow = checkint(L, 2);
|
|
Packit |
437b5e |
int pmincol = checkint(L, 3);
|
|
Packit |
437b5e |
int sminrow = checkint(L, 4);
|
|
Packit |
437b5e |
int smincol = checkint(L, 5);
|
|
Packit |
437b5e |
int smaxrow = checkint(L, 6);
|
|
Packit |
437b5e |
int smaxcol = checkint(L, 7);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushokresult(prefresh(p, pminrow, pmincol,
|
|
Packit |
437b5e |
sminrow, smincol, smaxrow, smaxcol));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Equivalent to @{noutrefresh} for use with pad windows.
|
|
Packit |
437b5e |
@function pnoutrefresh
|
|
Packit |
437b5e |
@int st top row from this pad window
|
|
Packit |
437b5e |
@int sl left column from this pad window
|
|
Packit |
437b5e |
@int dt top row of rectangle
|
|
Packit |
437b5e |
@int dl left column of rectangle
|
|
Packit |
437b5e |
@int db bottom row of rectangle
|
|
Packit |
437b5e |
@int dr right column of rectangle
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see cur_pad(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wpnoutrefresh(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *p = checkwin(L, 1);
|
|
Packit |
437b5e |
int pminrow = checkint(L, 2);
|
|
Packit |
437b5e |
int pmincol = checkint(L, 3);
|
|
Packit |
437b5e |
int sminrow = checkint(L, 4);
|
|
Packit |
437b5e |
int smincol = checkint(L, 5);
|
|
Packit |
437b5e |
int smaxrow = checkint(L, 6);
|
|
Packit |
437b5e |
int smaxcol = checkint(L, 7);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return pushokresult(pnoutrefresh(p, pminrow, pmincol,
|
|
Packit |
437b5e |
sminrow, smincol, smaxrow, smaxcol));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
An efficient equivalent to @{addch} followed by @{refresh}.
|
|
Packit |
437b5e |
@function pechochar
|
|
Packit |
437b5e |
@int ch
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see cur_pad(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wpechochar(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *p = checkwin(L, 1);
|
|
Packit |
437b5e |
chtype ch = checkch(L, 2);
|
|
Packit |
437b5e |
return pushokresult(pechochar(p, ch));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Turn off the given attributes for subsequent writes to the window.
|
|
Packit |
437b5e |
@function attroff
|
|
Packit |
437b5e |
@int attrs
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_attr(3x)
|
|
Packit |
437b5e |
@see standend
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wattroff(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int attrs = checkint(L, 2);
|
|
Packit |
437b5e |
return pushokresult(wattroff(w, attrs));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Turn on the given attributes for subsequent writes to the window.
|
|
Packit |
437b5e |
@function attron
|
|
Packit |
437b5e |
@int attrs
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_attr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wattron(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int attrs = checkint(L, 2);
|
|
Packit |
437b5e |
return pushokresult(wattron(w, attrs));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Set the given attributes for subsequent writes to the window.
|
|
Packit |
437b5e |
@function attrset
|
|
Packit |
437b5e |
@int attrs
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_attr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wattrset(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
WINDOW *w = checkwin(L, 1);
|
|
Packit |
437b5e |
int attrs = checkint(L, 2);
|
|
Packit |
437b5e |
return pushokresult(wattrset(w, attrs));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Turn off all attributes for subsequent writes to the window.
|
|
Packit |
437b5e |
@function standend
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_attr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wstandend(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(wstandend(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Set `A_STANDOUT` for subsequent writes to the window.
|
|
Packit |
437b5e |
@function standout
|
|
Packit |
437b5e |
@treturn bool `true`, if successful
|
|
Packit |
437b5e |
@see curs_attr(3x)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Wstandout(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
return pushokresult(wstandout(checkwin(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
#endif /*!HAVE_CURSES*/
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
static const luaL_Reg posix_curses_window_fns[] =
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
#if HAVE_CURSES
|
|
Packit |
437b5e |
LPOSIX_FUNC( W__tostring ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Waddch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Waddchstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Waddstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wattroff ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wattron ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wattrset ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wborder ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wbox ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wclear ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wclearok ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wclone ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wclose ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wclrtobot ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wclrtoeol ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wcopywin ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wcursyncup ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wdelch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wdeleteln ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wderive ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wechoch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Werase ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wgetbegyx ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wgetbkgd ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wgetch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wgetmaxyx ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wgetparyx ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wgetstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wgetyx ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Whline ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Widcok ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Widlok ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wimmedok ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Winsertln ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wintrflush ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wis_linetouched ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wis_wintouched ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wkeypad ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wleaveok ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmeta ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmove ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmove_derived ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmove_window ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvaddch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvaddchstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvaddstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvdelch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvgetch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvgetstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvhline ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvvline ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvwinch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvwinchnstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvwinnstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvwinsch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvwinsnstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wmvwinsstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wnodelay ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wnotimeout ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wnoutrefresh ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Woverlay ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Woverwrite ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wpechochar ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wpnoutrefresh ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wprefresh ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wredrawln ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wredrawwin ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wrefresh ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wresize ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wscrl ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wscrollok ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wstandend ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wstandout ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wsub ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wsubpad ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wsyncdown ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wsyncok ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wsyncup ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wtimeout ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wtouch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wtouchline ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wvline ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wwbkgd ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wwbkgdset ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wwinch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wwinchnstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wwinnstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wwinsch ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wwinsdelln ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wwinsnstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wwinsstr ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Wwsetscrreg ),
|
|
Packit |
437b5e |
{"__gc", Wclose }, /* rough safety net */
|
|
Packit |
437b5e |
#endif
|
|
Packit |
437b5e |
{NULL, NULL}
|
|
Packit |
437b5e |
};
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
LUALIB_API int
|
|
Packit |
437b5e |
luaopen_posix_curses_window(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
int t, mt;
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
luaL_register(L, "posix.curses.window", posix_curses_window_fns);
|
|
Packit |
437b5e |
t = lua_gettop(L);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
#if HAVE_CURSES
|
|
Packit |
437b5e |
luaL_newmetatable(L, WINDOWMETA);
|
|
Packit |
437b5e |
mt = lua_gettop(L);
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
lua_pushvalue(L, mt);
|
|
Packit |
437b5e |
lua_setfield(L, mt, "__index"); /* mt.__index = mt */
|
|
Packit |
437b5e |
lua_pushliteral(L, "PosixWindow");
|
|
Packit |
437b5e |
lua_setfield(L, mt, "_type"); /* mt._type = "Curses Window" */
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/* for k,v in pairs(t) do mt[k]=v end */
|
|
Packit |
437b5e |
for (lua_pushnil(L); lua_next(L, t) != 0;)
|
|
Packit |
437b5e |
lua_setfield(L, mt, lua_tostring(L, -2));
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
lua_pop(L, 1); /* pop mt */
|
|
Packit |
437b5e |
#endif
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/* t.version = "posix.curses.window..." */
|
|
Packit |
437b5e |
lua_pushliteral(L, "posix.curses.window for " LUA_VERSION " / " PACKAGE_STRING);
|
|
Packit |
437b5e |
lua_setfield(L, t, "version");
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return 1;
|
|
Packit |
437b5e |
}
|