1076 lines
72 KiB
Nim
1076 lines
72 KiB
Nim
{.deadCodeElim: on.}
|
|
when defined(windows):
|
|
const libncurses* = "libncursesw.dll"
|
|
elif defined(macosx):
|
|
const libncurses* = "libncursesw.dylib"
|
|
else:
|
|
const libncurses* = "libncursesw.so(.6|)"
|
|
|
|
type
|
|
chtype* = cuint ## Holds a character and possibly an attribute
|
|
attr_t* = chtype ## Attribute type
|
|
|
|
cchar_t* = object ## Complex char
|
|
attr: attr_t
|
|
chars: WideCString #5
|
|
ext_color: cint
|
|
|
|
ldat = object ## Holds line data
|
|
Screen* = object
|
|
Terminal* = object
|
|
Window* = object ## Holds window data
|
|
cury, curx: cshort # current cursor position
|
|
|
|
# window location and size
|
|
maxy, maxx: cshort # maximums of x and y, NOT window size
|
|
begy, begx: cshort # screen coords of upper-left-hand corner
|
|
flags: cshort # window state flags
|
|
|
|
# attribute tracking
|
|
attrs: attr_t # current attribute for non-space character
|
|
bkgd: chtype # current background char/attribute pair
|
|
|
|
# option values set by user
|
|
notimeout: bool # no time out on function-key entry?
|
|
clear: bool # consider all data in the window invalid?
|
|
leaveok: bool # OK to not reset cursor on exit?
|
|
scroll: bool # OK to scroll this window?
|
|
idlok: bool # OK to use insert/delete line?
|
|
idcok: bool # OK to use insert/delete char?
|
|
immed: bool # window in immed mode? (not yet used)
|
|
sync: bool # window in sync mode?
|
|
use_keypad: bool # process function keys into KEY_ symbols?
|
|
delay: cint # 0 = nodelay, <0 = blocking, >0 = delay
|
|
|
|
line: ptr ldat # the actual line data
|
|
|
|
# global screen state
|
|
regtop: cshort # top line of scrolling region
|
|
regbottom: cshort # bottom line of scrolling region
|
|
|
|
# these are used only if this is a sub-window
|
|
pary, parx: cint # y, x coordinates of this window in parent
|
|
parent: PWindow # pointer to parent if a sub-window
|
|
|
|
# these are used only if this is a pad
|
|
pad: pdat
|
|
yoffset: cshort # real begy is _begy + _yoffset
|
|
bkgrnd: cchar_t # current background char/attribute pair
|
|
color: cint # current color-pair for non-space character
|
|
window* {.deprecated: "Use PWindow instead".} = Window
|
|
|
|
pdat = object ## pad data
|
|
pad_y*, pad_x*: cshort
|
|
pad_top*, pad_left*: cshort
|
|
pad_bottom*, pad_right*: cshort
|
|
|
|
mmask_t* = uint32
|
|
Mevent* = object ## mouse event
|
|
id*: cshort # ID to distinguish multiple devices
|
|
x*, y*, z*: cint # event coordinates (character-cell)
|
|
bstate*: mmask_t # button state bits
|
|
|
|
#not ncurses but used to make things easier
|
|
ErrCode* = cint ## Error Code. Returns ERR (-1) upon failure or OK (0) on success.
|
|
PWindow* = ptr Window
|
|
PScreen* = ptr Screen
|
|
|
|
const
|
|
ERR*: ErrCode = (-1)
|
|
OK*: ErrCode = (0)
|
|
NCURSES_ATTR_SHIFT = 8
|
|
template NCURSES_CAST(`type`, value: untyped): untyped = (`type`)(value)
|
|
template NCURSES_BITS(mask, shift: untyped): untyped =
|
|
(NCURSES_CAST(chtype, (mask)) shl ((shift) + NCURSES_ATTR_SHIFT))
|
|
|
|
#color: color manipulation routines
|
|
const
|
|
COLOR_BLACK* = 0
|
|
COLOR_RED* = 1
|
|
COLOR_GREEN* = 2
|
|
COLOR_YELLOW* = 3
|
|
COLOR_BLUE* = 4
|
|
COLOR_MAGENTA* = 5
|
|
COLOR_CYAN* = 6
|
|
COLOR_WHITE* = 7
|
|
var
|
|
COLORS* {.importc: "COLORS", dynlib: libncurses.}: cint
|
|
## Initialized by start_color to the maximum number of colors thfe
|
|
## terminal can support.
|
|
COLOR_PAIRS* {.importc: "COLOR_PAIRS", dynlib: libncurses.}: cint
|
|
## Initialized by start_color to the maximum number of color pairs the
|
|
## terminal can support.
|
|
template COLOR_PAIR*(n: untyped): untyped = NCURSES_BITS((n), 0'i64)
|
|
template PAIR_NUMBER*(a: untyped): untyped =
|
|
(NCURSES_CAST(cint, ((NCURSES_CAST(cuint, (a)) and A_COLOR) shr
|
|
NCURSES_ATTR_SHIFT)))
|
|
|
|
proc start_color*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Initialises the the eight basic colours and the two global varables COLORS and COLOR_PAIRS.
|
|
## It also restores the colours on the terminal to the values that they had when the
|
|
## terminal was just turned on.
|
|
## @Note: It is good practice to call this routine right after initscr. It must be
|
|
## called before any other colour manipulating routines.
|
|
proc has_colors*(): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Used to determine if the terminal can manipulate colours.
|
|
## @Returns: true if the terminal can manipulate colours or false if it cannot.
|
|
proc can_change_color*(): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Used to determine if the terminal supports colours and can change their definitions.
|
|
## @Returns: true if the terminal supports colours and can change their definitions or
|
|
## false otherwise.
|
|
proc init_pair*(pair, f,b: cshort): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Changes the definition of a colour pair.
|
|
## @Param: 'pair' the number of the colour pair to change.
|
|
## @Param: 'foreground': the foreground colour number.
|
|
## @Param: 'background': the background colour number.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc init_color*(color: cshort, r, g, b: cshort): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc init_extended_pair*(pair, f,b: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc init_extended_color*(color: cint, r, g, b: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc color_content*(color: cshort, r, g, b: ptr cshort): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc pair_content*(pair: cshort, f,b: ptr cshort): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc extended_color_content*(color: cint, r, g, b: ptr cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc pair_content*(pair: cint, f,b: ptr cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc reset_color_pairs*(): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#threads: thread support
|
|
proc get_escdelay*(): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc set_escdelay*(size: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc set_tabsize*(size: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc use_screen*(scr: PScreen, scr_cb: proc(scr: PScreen, pt: pointer): cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc use_window*(win: PWindow, win_cb: proc(win: PWindow, pt: pointer): cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#add_wch: Adding complex characters to a window
|
|
proc add_wch*(wch: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wadd_wch*(win: PWindow, wch: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvadd_wch*(y, x: cint, wch: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwadd_wch*(win: PWindow, y, x: cint, wch: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc echo_wchar*(wch: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wecho_wchar*(win: PWindow, wch: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#add_wchstr: Adding an array of complex characters to a window
|
|
proc add_wchstr*(wchstr: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc add_wchnstr*(wchstr: ptr cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wadd_wchstr*(win: PWindow, wchstr: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wadd_wchnstr*(win: PWindow, wchstr: ptr cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvadd_wchstr*(y, x: cint, wchstr: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvadd_wchnstr*(y, x: cint, wchstr: ptr cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwadd_wchstr*(win: PWindow, y, x: cint, wchstr: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwadd_wchnstr*(win: PWindow, y, x: cint, wchstr: ptr cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#addch: Adding a character (with attributes) to a window
|
|
proc addch*(character: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Puts a character into the stdscr at its current window position and then advances
|
|
## the current window position to the next position.
|
|
## @Param: 'character' the character to put into the current window.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc waddch*(win: PWindow, ch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvaddch*(y,x: cint; character: chtype): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Moves the cursor to the specified position and outputs the provided character.
|
|
## The cursor is then advanced to the next position.
|
|
## @Param: 'y' the line to move the cursor to.
|
|
## @Param: 'x' the column to move the cursor to.
|
|
## @Param: 'character' the character to put into the current window.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc mvwaddch*(win: PWindow, y, x: cint, ch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc echochar*(ch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wechochar*(win: PWindow, ch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#addchstr: Adding a string of characters (and attributes) to a window
|
|
proc addchstr*(chstr: ptr chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc addchnstr*(chstr: ptr chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc waddchstr*(win: PWindow, chstr: ptr chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc waddchnstr*(win: PWindow, chstr: ptr chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvaddchstr*(y, x: cint, chstr: ptr chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvaddchnstr*(y, x: cint, chstr: ptr chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwaddchstr*(win: PWindow, y, x: cint, chstr: ptr chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwaddchnstr*(win: PWindow, y, x: cint, chstr: ptr chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#addstr: Adding a string of characters to a window (cstring)
|
|
proc addstr*(str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Adds a string of characters the the stdscr and advances the cursor.
|
|
## @Param: The string to add the stdscr.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc addnstr*(str: cstring, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc waddstr*(win: PWindow; str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Writes a string to the specified window.
|
|
## @Param: 'destinationWindow' the window to write the string to.
|
|
## @Param: 'stringToWrite'
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc waddnstr*(win: PWindow, str: cstring, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvaddstr*(y, x: cint; str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Moves the cursor to the specified position and outputs the provided string.
|
|
## The cursor is then advanced to the next position.
|
|
## @Param: 'y' the line to move the cursor to.
|
|
## @Param: 'x' the column to move the cursor to.
|
|
## @Param: 'stringToOutput' the string to put into the current window.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc mvaddnstr*(y, x: cint, str: cstring, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwaddstr*(win: PWindow, y, x: cint, str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwaddnstr*(win: PWindow, y, x: cint, str: cstring, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#addwstr: Adding a string of wide characters to a window (WideCString) ## Not used?
|
|
#[
|
|
proc addwstr(wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc addnwstr(wstr: WideCString, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc waddwstr(win: PWindow, wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc waddnwstr(win: PWindow, wstr: WideCString, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvaddwstr(y, x: cint, win: PWindow, wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvaddnwstr(y, x: cint, win: PWindow, wstr: WideCString, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwaddwstr(win: PWindow, y, x: cint, wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwaddnwstr(win: PWindow, y, x: cint, wstr: WideCString, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
]#
|
|
|
|
#new_pair: Color-pair functions
|
|
proc alloc_pair*(fg, bg: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc find_pair*(fg, bg: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc free_pair*(pair: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#default_colors: Use terminal's default colors
|
|
proc use_default_colors*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc assume_default_colors*(fg, bg: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#attr: Character and attribute control routines
|
|
const
|
|
u1: cuint = 1
|
|
A_NORMAL* = (u1 - u1)
|
|
A_ATTRIBUTES* = NCURSES_BITS(not (u1 - u1), 0)
|
|
A_CHAR_TEXT* = (NCURSES_BITS(u1, 0) - u1.chtype)
|
|
A_COLOR* = NCURSES_BITS((u1 shl 8) - u1, 0)
|
|
A_STANDOUT* = NCURSES_BITS(u1, 8)
|
|
A_UNDERLINE* = NCURSES_BITS(u1, 9)
|
|
A_REVERSE* = NCURSES_BITS(u1, 10)
|
|
A_BLINK* = NCURSES_BITS(u1, 11)
|
|
A_DIM* = NCURSES_BITS(u1, 12)
|
|
A_BOLD* = NCURSES_BITS(u1, 13)
|
|
A_ALT_CHARSET* = NCURSES_BITS(u1, 14)
|
|
A_INVIS* = NCURSES_BITS(u1, 15)
|
|
A_PROTECT* = NCURSES_BITS(u1, 16)
|
|
A_HORIZONTAL* = NCURSES_BITS(u1, 17)
|
|
A_LEFT* = NCURSES_BITS(u1, 18)
|
|
A_LOW* = NCURSES_BITS(u1, 19)
|
|
A_RIGHT* = NCURSES_BITS(u1, 20)
|
|
A_TOP* = NCURSES_BITS(u1, 21)
|
|
A_VERTICAL* = NCURSES_BITS(u1, 22)
|
|
A_ITALIC* = NCURSES_BITS(u1, 23)
|
|
|
|
proc attr_get*(attrs: ptr attr_t, pair: ptr cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wattr_get*(win: PWindow, attrs: ptr attr_t, pair: ptr cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc attr_set*(attrs: attr_t, pair: cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wattr_set*(win: PWindow, attrs: attr_t, pair: cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc attr_off*(attrs: attr_t, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wattr_off*(win: PWindow, attrs: attr_t, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc attr_on*(attrs: attr_t, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wattr_on*(win: PWindow, attrs: attr_t, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc attroff*(attrs: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Turns off the named attributes without affecting any other attributes.
|
|
## @Param: 'attributes' the attributes to turn off for the current window.
|
|
## @Returns: An integer value, but the returned value does not have any meaning and can
|
|
## thus be ignored.
|
|
proc wattroff*(win: PWindow, attrs: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc attron*(attrs: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Turns on the named attributes without affecting any other attributes.
|
|
## @Param: 'attributes' the attributes to turn on for the current window.
|
|
## @Returns: An integer value, but the returned value does not have any meaning and can
|
|
## thus be ignored.
|
|
proc wattron*(win: PWindow, attrs: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc attrset*(attrs: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Sets the current attributes of the given window to the provided attributes.
|
|
## @Param: 'attributes', the attributes to apply to the current window.
|
|
## @Returns: An integer value, but the returned value does not have any meaning and can
|
|
## thus be ignored.
|
|
proc wattrset*(win: PWindow, attrs: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc chgat*(n: cint, attr: attr_t, pair: cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wchgat*(win: PWindow, n: cint, attr: attr_t, pair: cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvchgat*(y, x: cint, n: cint, attr: attr_t, pair: cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwchgat*(win: PWindow, y, x: cint, n: cint, attr: attr_t, pair: cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc color_set*(pair: cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wcolor_set*(win: PWindow, pair: cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
#proc standend(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.} ## Not used?
|
|
proc wstandend*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc standout*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wstandout*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#termattrs: Enviroment query routines
|
|
proc baudrate*(): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc erasechar*() {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc erasewchar*(ch: WideCString) {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc has_ic*(): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc has_il*(): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc killchar*(): cchar {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc killwchar*(ch: WideCString): cchar {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc longname*(): cstring {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc term_attrs*(): attr_t {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc term_attrs_ch*(): chtype {.cdecl, importc: "termattrs", discardable, dynlib: libncurses.} ## Previously termattrs
|
|
proc termname*(): cstring {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#beep: Bell and screen flash routines
|
|
proc beep*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc flash*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Flashes the screen and if that is not possible it sounds the alert. If this is not possible
|
|
## nothing happens.
|
|
## @Returns: ERR on failure and OK upon successfully flashing.
|
|
|
|
#bkgd: Window background manipulation routines
|
|
proc bkgdset*(ch: chtype): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wbkgdset*(win: PWindow, ch: chtype): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc bkgd*(ch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Sets the background property of the current window and apply this setting to every
|
|
## character position in the window.
|
|
## @Param: 'background' the background property to apply.
|
|
proc wbkgd*(win: PWindow, ch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getbkgd*(win: PWindow): chtype {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#bkgrnd: Window complex background manipulation routines
|
|
proc bkgrnd*(wch: cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wbkgrnd*(win: PWindow, wch: cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc bkgrndset*(wch: cchar_t): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wbkgrndset*(win: PWindow, wch: cchar_t): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getbkgrnd*(wch: cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wgetbkgrnd*(win: PWindow, wch: cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#border: Create borders, horizontal and vertical lines
|
|
proc border*(ls, rs, ts, bs, tl, tr, bl, br: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wborder*(win: PWindow, ls, rs, ts, bs, tl, tr, bl, br: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc box*(win: PWindow, verch, horch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc hline*(ch: chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc whline*(win: PWindow, ch: chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc vline*(ch: chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wvline*(win: PWindow, ch: chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvhline*(y, x: cint, ch: chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwhline*(win: PWindow, y, x: cint, ch: chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvvline*(y, x: cint, ch: chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwvline*(win: PWindow, y, x: cint, ch: chtype, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#borderset: Create borders or lines using complex characters and renditions
|
|
proc border_set*(ls, rs, ts, bs, tl, tr, bl, br: cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wborder_set*(win: PWindow, ls, rs, ts, bs, tl, tr, bl, br: cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc box_set*(win: PWindow, verch, horch: cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc hline_set*(wch: cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc whline_set*(win: PWindow, wch: cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvhline_set*(y,x: cint, wch: cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwhline_set*(win: PWindow, y,x: cint, wch: cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc vline_set*(wch: cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wvline_set*(win: PWindow, wch: cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvvline_set*(y,x: cint, wch: cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwvline_set*(win: PWindow, y,x: cint, wch: cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#inopts: Input options
|
|
proc cbreak*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## The cbreak routine disables line buffering and erase/kill character-processing
|
|
## (interrupt and flow control characters are unaffected), making characters typed by
|
|
## the user immediately available to the program.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc nocbreak*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Returns the terminal to normal (cooked mode).
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc noecho*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc onecho*(): ErrCode {.cdecl, discardable, dynlib: libncurses, importc: "echo".} ## Previously echo
|
|
proc halfdelay*(tenths: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc keypad*(win: PWindow, bf: bool): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc meta*(win: PWindow, bf: bool): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc nodelay*(win: PWindow, bf: bool): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc raw*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc noraw*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc noqiflush*(): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc qiflush*(): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc notimeout*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc timeout*(delay: cint): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wtimeout*(win: PWindow, delay: cint): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc typeahead*(fd: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#clear: Clear all or part of a window
|
|
proc erase*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc werase*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc clear*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wclear*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc clrtobot*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wclrtobot*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc clrtoeol*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wclrtoeol*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#outopts: Output options
|
|
proc clearok*(win: PWindow, bf: bool): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc idlok*(win: PWindow, bf: bool): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc idcok*(win: PWindow, bf: bool): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc immedok*(win: PWindow, bf: bool): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc leaveok*(win: PWindow, bf: bool): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc setscrreg*(top, bot: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wsetscrreg*(win: PWindow, top, bot: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc scrollok*(win: PWindow, bf: bool): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc nl*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc nonl*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#overlay: overlay and manipulate overlapped windows
|
|
proc overlay*(srcwin, dstwin: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc overwrite*(srcwin, dstwin: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc copywin*(srcwin, dstwin: PWindow,
|
|
sminrow, smincol,
|
|
dminrow, dmincol,
|
|
dmaxrow, dmaxcol: cint
|
|
): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#kernel: low-level routines (all except cur_set will always return OK)
|
|
proc def_prog_mode*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc def_shell_mode*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc reset_prog_mode*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc reset_shell_mode*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc resetty*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc savetty*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getsyx*(y,x: cint): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc setsyx*(y,x: cint): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc ripoffline*(line: cint, init: proc(win: PWindow, cols: cint): cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc curs_set*(visibility: cint): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc napms*(ms: cint): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Used to sleep for the specified milliseconds.
|
|
## @Params: 'milliseconds' the number of milliseconds to sleep for.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
|
|
#extend: misc extensions
|
|
proc curses_version*(): cstring {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc use_extended_names*(enable: bool): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#define_key: define a keycode
|
|
proc define_key*(definition: cstring, keycode: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#terminfo: interfaces to terminfo database
|
|
var
|
|
cur_term*: ptr Terminal
|
|
boolnames*, boolcodes*, boolfnames*: cstringArray
|
|
numnames*, numcodes*, numfnames*: cstringArray
|
|
strnames*, strcodes*, strfnames*: cstringArray
|
|
proc setupterm*(term: cstring; filedes: cint; errret: ptr cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc setterm*(term: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc set_curterm*(nterm: ptr Terminal): ptr Terminal {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc del_curterm*(oterm: ptr Terminal): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc restartterm*(term: cstring; filedes: cint; errret: ptr cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc tparm*(str: cstring): cstring {.varargs, cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc putp*(str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc vid_puts_ch*(attrs: chtype; putc: proc(ch: cint): cint): ErrCode {.cdecl, importc: "vidputs", discardable, dynlib: libncurses.}
|
|
proc vid_attr_ch*(attrs: chtype): ErrCode {.cdecl, importc: "vidattr", discardable, dynlib: libncurses.}
|
|
proc vid_puts*(attrs: attr_t; pair: cshort; opts: pointer; putc: proc(ch: cint): cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc vid_attr*(attrs: attr_t; pair: cshort; opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvcur*(oldrow, oldcol, newrow, newcol: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc tigetflag*(capname: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc tigetnum*(capname: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc tigetstr*(capname: cstring): cstring {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc tiparm*(str: cstring): cstring {.varargs, cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#util: misc utility routines
|
|
proc unctrl*(c: chtype): cstring {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wunctrl*(c: ptr cchar_t): WideCString {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc keyname*(c: cint): cstring {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc keyname_wch*(w: WideCString): cstring {.cdecl, discardable, dynlib: libncurses, importc: "key_name".} ## previously key_name, had to be renamed.
|
|
proc filter*(): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc nofilter*(): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc use_env*(f: bool): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc use_tioctl*(f: bool): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc putwin*(win: PWindow, filep: File): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getwin*(filep: File): PWindow {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc delay_output*(ms: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc flushinp*(): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#delch: delete character under the cursor in a window
|
|
proc delch*(): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Delete the character under the cursor in the stdscr.
|
|
## @Returns: ERR on failure and OK upon successfully flashing.
|
|
proc wdelch*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvdelch*(y,x: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwdelch*(win: PWindow, y,x: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#deleteln: delete and insert lines in a window
|
|
proc deleteln*(): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Deletes the line under the cursor in the stdscr. All lines below the current line are moved up one line.
|
|
## The bottom line of the window is cleared and the cursor position does not change.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc wdeleteln*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc insdeln*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc winsdeln*(win: PWindow, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc insertln*(): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Inserts a blank line above the current line in stdscr and the bottom line is lost.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc winsertln*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#initscr: screen initialization and manipulation routines
|
|
proc initscr*(): PWindow {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Usually the first curses routine to be called when initialising a program
|
|
## The initscr code determines the terminal type and initialises all curses data structures. initscr also causes the
|
|
## first call to refresh to clear the screen.
|
|
## @Returns: A pointer to stdscr is returned if the operation is successful.
|
|
## @Note: If errors occur, initscr writes an appropriate error message to
|
|
## standard error and exits.
|
|
proc endwin*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## A program should always call endwin before exiting or escaping from curses mode temporarily. This routine
|
|
## restores tty modes, moves the cursor to the lower left-hand corner of the screen and resets the terminal into the
|
|
## proper non-visual mode. Calling refresh or doupdate after a temporary escape causes the program to resume visual mode.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc isendwin*(): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc newterm*(`type`: cstring, outfd, infd: File): PScreen {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc set_term*(`new`: PScreen): PScreen {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc delscreen*(sp: PScreen): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#window: create a window
|
|
proc newwin*(nlines, ncols, begin_y, begin_x: cint): PWindow {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc delwin*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwin*(win: PWindow, y,x: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc subwin*(orig: PWindow, nlines, ncols, begin_y, begin_x: cint): PWindow {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc derwin*(orig: PWindow, nlines, ncols, begin_y, begin_x: cint): PWindow {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvderwin*(win: PWindow, par_y, par_x: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc dupwin*(win: PWindow): PWindow {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wsyncup*(win: PWindow): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc syncok*(win: PWindow, bf: bool): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wcursyncup*(win: PWindow): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wsyncdown*(win: PWindow): void {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#refresh: refresh windows and lines
|
|
proc refresh*(): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Must be called to get actual output to the terminal. refresh uses stdscr has the default window.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc wrefresh*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wnoutrefresh*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc doupdate*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc redrawwin*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wredrawln*(win: PWindow, beg_lines, num_lines: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#slk: soft label routines
|
|
proc slk_init*(fmt: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_set*(labnum: cint, label: WideCString, fmt: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_wset*(labnum: cint, label: WideCString, fmt: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_label*(labnum: cint): cstring {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_refresh*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_noutrefresh*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_clear*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_restore*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_touch*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_attron_ch*(attrs: chtype): ErrCode {.cdecl, importc: "slk_attron", discardable, dynlib: libncurses.} ## Previously slk_attron
|
|
proc slk_attroff_ch*(attrs: chtype): ErrCode {.cdecl, importc: "slk_attroff", discardable, dynlib: libncurses.} ## Previously slk_attroff
|
|
proc slk_attrset_ch*(attrs: chtype): ErrCode {.cdecl, importc: "slk_attrset", discardable, dynlib: libncurses.} ## Previously slk_attrset
|
|
proc slk_attr_on*(attrs: attr_t, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_attr_off*(attrs: attr_t, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_attr_set*(attrs: attr_t, pair: cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_attr*(): attr_t {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc slk_color*(pair: cshort): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc extended_slk_color*(pair: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#get_wch: get (or push back) a wide character from a terminal keyboard
|
|
proc get_wch*(wch: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wget_wch*(win: PWindow, wch: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvget_wch*(y,x: cint, wch: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwget_wch*(win: PWindow, y,x: cint, wch: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc unget_wch*(wch: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#get_wstr: get an array of wide characters from a terminal keyboard
|
|
proc get_wstr*(wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getn_wstr*(wstr: WideCString, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wget_wstr*(win: PWindow, wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wgetn_wstr*(win: PWindow, wstr: WideCString, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvget_wstr*(y,x: cint, wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvgetn_wstr*(y,x: cint, wstr: WideCString, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwget_wstr*(win: PWindow, y,x: cint, wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwgetn_wstr*(win: PWindow, y,x: cint, wstr: WideCString, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#legacy: get cursor and window coordinates, attributes
|
|
proc getattrs*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getbegx*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getbegy*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getcurx*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getcury*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getmaxx*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getmaxy*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getparx*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getpary*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#getyx: get curses cursor and window coordinates (these are implemented as macros in ncurses.h)
|
|
template getyx*(win: PWindow, y, x: cint): untyped=
|
|
## Reads the logical cursor location from the specified window.
|
|
## @Param: 'win' the window to get the cursor location from.
|
|
## @Param: 'y' stores the height of the window.
|
|
## @Param: 'x' stores the width of the window.
|
|
(y = getcury(win); x = getcurx(win)) ## testing
|
|
template getbegyx*(win: PWindow, y, x: cint): untyped=
|
|
(y = getbegy(win); x = getbegx(win))
|
|
template getmaxyx*(win: PWindow, y, x: cint): untyped=
|
|
## retrieves the size of the specified window in the provided y and x parameters.
|
|
## @Param: 'win' the window to measure.
|
|
## @Param: 'y' stores the height of the window.
|
|
## @Param: 'x' stores the width of the window.
|
|
(y = getmaxy(win); x = getmaxx(win))
|
|
template getparyx*(win: PWindow, y, x: cint): untyped=
|
|
(y = getpary(win); x = getparx(win))
|
|
|
|
#getcchar: Get a wide character string and rendition from cchar_t or set a cchar_t from a wide-character string
|
|
proc getcchar*(wcval: ptr cchar_t, wch: WideCString, attrs: ptr attr_t, color_pair: ptr cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc setcchar*(wcval: ptr cchar_t, wch: WideCString, attrs: attr_t, color_pair: cshort, opts: pointer): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#getch: get (or push back) characters from the terminal keyboard
|
|
proc getch*(): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Read a character from the stdscr window.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc wgetch*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Read a character from the specified window.
|
|
## @Param: 'sourceWindow' the window to read a character from.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc mvgetch*(y,x: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwgetch*(win: PWindow, y,x: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc ungetch*(ch: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc has_key*(ch: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#mouse: mouse interface
|
|
proc has_mouse*(): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc getmouse*(event: ptr Mevent): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc ungetmouse*(event: ptr Mevent): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mousemask*(newmask: mmask_t, oldmask: ptr mmask_t): mmask_t {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wenclose*(win: PWindow, y, x: cint): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mouse_trafo*(y,x: ptr cint, to_screen: bool): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wmouse_trafo*(win: PWindow, y,x: ptr cint, to_screen: bool): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mouseinterval*(erval: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#getstr: accept character strings from terminal keyboard
|
|
proc getstr*(str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Reads the inputted characters into the provided string.
|
|
## @Param: 'inputString' the variable to read the input into.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc getnstr*(str: cstring; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Reads at most the specified number of characters into the provided string.
|
|
## @Param: 'inputString' the variable to read the input into.
|
|
## @Param: 'numberOfCharacters' the maximum number of characters to read.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc wgetstr*(win: PWindow, str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wgetnstr*(win: PWindow, str: cstring, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvgetstr*(y,x: cint, str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvgetnstr*(y,x: cint, str: cstring, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwgetstr*(win: PWindow, y,x: cint, str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwgetnstr*(win: PWindow, y,x: cint, str: cstring, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#in_wch: extract a complex character and rendition from a window
|
|
proc in_wch*(wcval: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvinwch*(y,x: cint, wcval: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwin_wch*(win: PWindow, y,x: cint, wcval: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc win_wch*(win: PWindow, wcval: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#in_wchstr: get an array of complex characters and renditions from a window
|
|
proc in_wchstr*(wchstr: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc in_wchnstr*(wchstr: ptr cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc win_wchstr*(win: PWindow, wchstr: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc win_wchnstr*(win: PWindow, wchstr: ptr cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvin_wchstr*(y,x: cint, wchstr: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvin_wchnstr*(y,x: cint, wchstr: ptr cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwin_wchstr*(win: PWindow, y,x: cint, wchstr: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwin_wchnstr*(win: PWindow; y,x: cint, wchstr: ptr cchar_t, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#inch: get a character and attributes from a window
|
|
proc inch*(): chtype {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc winch*(win: PWindow): chtype {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvinch*(y,x: cint): chtype {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwinch*(win: PWindow; y,x: cint): chtype {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#inchstr: get a string of characters (and attributes) from a window
|
|
proc inchstr*(chstr: ptr chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc inchnstr*(chstr: ptr chtype; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc winchstr*(win: PWindow; chstr: ptr chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc winchnstr*(win: PWindow; chstr: ptr chtype; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvinchstr*(y,x: cint; chstr: ptr chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvinchnstr*(y,x: cint; chstr: ptr chtype; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwinchstr*(win: PWindow, y,x: cint; chstr: ptr chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwinchnstr*(win: PWindow, y,x: cint; chstr: ptr chtype; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#instr: get a string of characters from a window
|
|
proc instr*(str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc innstr*(str: cstring, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc winstr*(win: PWindow, str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc winnstr*(win: PWindow, str: cstring, n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvinstr*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvinnstr*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwinstr*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwinnstr*(): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#inwstr: get a string of wchar_t characters from a window
|
|
proc inwstr*(wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc innwstr*(wstr: WideCString; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc winwstr*(win: PWindow; wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc winnwstr*(win: PWindow; wstr: WideCString; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvinwstr*(y,x: cint; wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvinnwstr*(y,x: cint; wstr: WideCString; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwinwstr*(win: PWindow; y,x: cint; wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwinnwstr*(win: PWindow; y,x: cint; wstr: WideCString; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#ins_wstr: insert a wide-character string into a window
|
|
proc ins_wstr*(wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc ins_nwstr*(wstr: WideCString; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wins_wstr*(win: PWindow; wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wins_nwstr*(win: PWindow; wstr: WideCString; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvins_wstr*(y,x: cint; wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvins_nwstr*(y,x: cint; wstr: WideCString; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwins_wstr*(win: PWindow; y,x: cint; wstr: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwins_nwstr*(win: PWindow; y,x: cint; wstr: WideCString; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#ins_wch: insert a complex character and rendition into a window
|
|
proc ins_wch*(wch: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wins_wch*(win: PWindow; wch: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvins_wch*(y,x: cint; wch: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwins_wch*(win: PWindow; y,x: cint; wch: ptr cchar_t): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#insch: insert a character before cursor in a window
|
|
proc insch*(ch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Inserts a character before the cursor in the stdscr.
|
|
## @Param: 'character' the character to insert.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc winsch*(win: PWindow; ch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvinsch*(y,x: cint; ch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwinsch*(win: PWindow; y,x: cint; ch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#insstr: insert string before cursor in a window
|
|
proc insstr*(str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc insnstr*(str: cstring; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc winsstr*(win: PWindow; str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc winsnstr*(win: PWindow; str: cstring; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvinsstr*(y,x: cint; str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvinsnstr*(y,x: cint; str: cstring; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwinsstr*(win: Pwindow; y,x: cint; str: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvwinsnstr*(win: Pwindow; y,x: cint; str: cstring; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#opaque: window properties
|
|
proc is_cleared*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the value set in clearok
|
|
proc is_idcok*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the value set in is_idcok
|
|
proc is_idlok*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the value set in is_idlok
|
|
proc is_immedok*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the value set in is_immedok
|
|
proc is_keypad*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the value set in is_keypad
|
|
proc is_leaveok*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the value set in is_leaveok
|
|
proc is_nodelay*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the value set in is_nodelay
|
|
proc is_notimeout*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the value set in is_notimeout
|
|
proc is_pad*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns TRUE if the window is a pad i.e., created by newpad
|
|
proc is_scrollok*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the value set in is_scrollok
|
|
proc is_subwin*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns TRUE if the window is a subwindow, i.e., created by subwin
|
|
## or derwin
|
|
proc is_syncok*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the value set in is_syncok
|
|
proc wgetparent*(win: PWindow): PWindow {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the parent WINDOW pointer for subwindows, or NULL for
|
|
## windows with no parent
|
|
proc wgetdelay*(win: PWindow): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the delay timeout as set in wtimeout
|
|
proc wgetscrreg*(win: PWindow; top, bottom: cint): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## returns the top and bottom rows for the scrolling margin as set in
|
|
## wsetscrreg
|
|
|
|
#touch: refresh control routines
|
|
proc touchwin*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Throws away all optimization information about which parts of the window
|
|
## have been touched, by pretending that the entire window has been drawn on.
|
|
## This is sometimes necessary when using overlapping windows, since a change
|
|
## to one window affects the other window, but the records of which lines
|
|
## have been changed in the other window do not reflect the change.
|
|
proc touchline*(win: PWindow; start, count: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## The same as touchwin, except it only pretends that count lines have been
|
|
## changed, beginning with line start.
|
|
proc untouchwin*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Marks all lines in the window as unchanged since the last call to wrefresh.
|
|
proc wtouchln*(win: PWindow; y, n, changed: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Makes n lines in the window, starting at line y, look as if they have
|
|
## (changed=1) or have not (changed=0) been changed since the last call to
|
|
## wrefresh.
|
|
proc is_wintouched*(win: PWindow): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Returns TRUE if the specified window was modified since the last call to
|
|
## wrefresh
|
|
proc is_linetouched*(win: PWindow; line: cint): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## The same as is_wintouched, In addition, returns ERR if line is not valid
|
|
## for the given window.
|
|
|
|
#resizeterm: change the curses terminal size
|
|
proc is_term_resized*(lines, columns: cint): bool {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Checks if the resize_term function would modify the window structures.
|
|
## returns TRUE if the windows would be modified, and FALSE otherwise.
|
|
proc resize_term*(lines, columns: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Resizes the standard and current windows to the specified dimensions,
|
|
## and adjusts other bookkeeping data used by the ncurses library that
|
|
## record the window dimensions such as the LINES and COLS variables.
|
|
proc resize_term_ext*(lines, columns: cint): ErrCode {.cdecl, discardable, dynlib: libncurses, importc: "resize_term".}
|
|
## Blank-fills the areas that are extended. The calling application should
|
|
## fill in these areas with appropriate data. The resize_term function
|
|
## attempts to resize all windows. However, due to the calling convention of
|
|
## pads, it is not possible to resize these without additional interaction
|
|
## with the application.
|
|
|
|
#key_defined: check if a keycode is defined
|
|
proc key_defined*(definition: cstring): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## If the string is bound to a keycode, its value (greater than zero) is
|
|
## returned. If no keycode is bound, zero is returned. If the string
|
|
## conflicts with longer strings which are bound to keys, -1 is returned.
|
|
|
|
#keybound: return definition of keycode
|
|
proc keybound*(keycode, count: cint): cstring {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## The keycode parameter must be greater than zero, else NULL is returned.
|
|
## If it does not correspond to a defined key, then NULL is returned. The
|
|
## count parameter is used to allow the application to iterate through
|
|
## multiple definitions, counting from zero. When successful, the function
|
|
## returns a string which must be freed by the caller.
|
|
|
|
#keyok: enable or disable a keycode
|
|
#[
|
|
proc keyok(keycode: cint; enable: bool): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.} ## Not used?
|
|
## The keycode must be greater than zero, else ERR is returned. If it
|
|
## does not correspond to a defined key, then ERR is returned. If the
|
|
## enable parameter is true, then the key must have been disabled, and
|
|
## vice versa. Otherwise, the function returns OK.
|
|
]#
|
|
|
|
#mcprint: ship binary data to printer
|
|
proc mcprint*(data: cstring; len: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#move: move window cursor
|
|
proc move*(y, x: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## Moves the cursor of stdscr to the specified coordinates.
|
|
## @Param: 'y' the line to move the cursor to.
|
|
## @Param: 'x' the column to move the cursor to.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc wmove*(win: PWindow; y,x: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#printw: print formatted output in windows
|
|
proc printw*(fmt: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses, varargs.}
|
|
## Prints out a formatted string to the stdscr.
|
|
## @Param: 'formattedString' the string with formatting to be output to stdscr.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc wprintw*(win: PWindow, fmt: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc mvprintw*(y, x: cint; fmt: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses, varargs.}
|
|
## Prints out a formatted string to the stdscr at the specified row and column.
|
|
## @Param: 'y' the line to move the cursor to.
|
|
## @Param: 'x' the column to move the cursor to.
|
|
## @Param: 'formattedString' the string with formatting to be output to stdscr.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc mvwprintw*(win: PWindow; y,x: cint; fmt: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses, varargs.}
|
|
## Prints out a formatted string to the specified window at the specified row and column.
|
|
## @Param: 'destinationWindow' the window to write the string to.
|
|
## @Param: 'y' the line to move the cursor to.
|
|
## @Param: 'x' the column to move the cursor to.
|
|
## @Param: 'formattedString' the string with formatting to be output to stdscr.
|
|
## @Returns: ERR on failure and OK upon successful completion.
|
|
proc vw_printw*(win: PWindow; fmt: cstring; varglist: varargs[cstring]): ErrCode {.cdecl, importc, discardable, dynlib: libncurses}
|
|
|
|
#scanw: convert formatted input from a window
|
|
proc scanw*(fmt: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses, varargs.}
|
|
## Converts formatted input from the stdscr.
|
|
## @Param: 'formattedInput' Contains the fields for the input to be mapped to.
|
|
## @Returns: The number of fields that were mapped in the call.
|
|
proc wscanw*(win: PWindow; fmt: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses, varargs.}
|
|
proc mvscanw*(y,x: cint; fmt: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses, varargs.}
|
|
proc mvwscanw*(win: PWindow; y,x: cint; fmt: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses, varargs.}
|
|
proc vw_scanw*(win: PWindow; fmt: cstring; varglist: varargs[cstring]): ErrCode {.cdecl, importc, discardable, dynlib: libncurses, varargs,.}
|
|
|
|
#pad: create and display pads
|
|
proc newpad*(nlines, ncols: cint): PWindow {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc subpad*(orig: PWindow; lines, columns, begin_y, begin_x: cint): PWindow {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc prefresh*(pad: PWindow;
|
|
pminrow, pmincol,
|
|
sminrow, smincol,
|
|
smaxrow, smaxcol: cint
|
|
): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc pnoutrefersh*(pad: PWindow;
|
|
pminrow, pmincol,
|
|
sminrow, smincol,
|
|
smaxrow, smaxcol: cint
|
|
): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc pechochar*(pad: PWindow; ch: chtype): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc pecho_wchar*(pad: PWindow; wch: WideCString): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#scr_dump: read (write) a screen from (to) a file
|
|
proc scr_dump*(filename: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc scr_restore*(filename: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc scr_init*(filename: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc scr_set*(filename: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#scroll: scroll a window
|
|
proc scroll*(win: PWindow): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc scrl*(n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc wscrl*(win: PWindow; n: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#termcap: direct interface to the terminfo capability database
|
|
var
|
|
PC* {.importc, dynlib: libncurses.}: cchar
|
|
## Set by tgetent to the terminfo entry's pad_char value.
|
|
## Used in the tdelay_output function.
|
|
UP* {.importc, dynlib: libncurses.}: ptr cchar
|
|
## Set by tgetent to the terminfo entry's cursor_up value.
|
|
## Not used by ncurses.
|
|
BC* {.importc, dynlib: libncurses.}: ptr cchar
|
|
## Set by tgetent to the terminfo entry's backspace_if_not_bs value.
|
|
## Used in the tgoto() emulation.
|
|
ospeed* {.importc, dynlib: libncurses.}: cshort
|
|
## Set by ncurses in a system-specific coding to reflect the terminal speed.
|
|
proc tgetent*(np, name: cstring): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc tgetflag*(id: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc tgetnum*(id: cstring): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc tgetstr*(id: cstring; area: cstringArray ): cstring {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc tgoto*(cap: cstring; col, row: cint): cstring {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
proc tputs*(str: cstring; affcnt: cint; putc: ptr proc(ch: cint): cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
#legacy_coding: override locale-encoding checks
|
|
proc use_legacy_coding*(level: cint): cint {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
## If the screen has not been initialized, or the level parameter is out
|
|
## of range, the function returns ERR. Otherwise, it returns the previous
|
|
## level: 0, 1 or 2.
|
|
|
|
#wresize: resize a curses window
|
|
proc wresize*(win: PWindow; line, column: cint): ErrCode {.cdecl, importc, discardable, dynlib: libncurses.}
|
|
|
|
# mouse interface
|
|
template NCURSES_MOUSE_MASK(b, m: untyped): untyped = ((m) shl (((b) - 1) * 5))
|
|
template BUTTON_RELEASE*(e, x: untyped): untyped =
|
|
((e) and NCURSES_MOUSE_MASK(x, NCURSES_BUTTON_RELEASED))
|
|
template BUTTON_PRESS*(e, x: untyped): untyped =
|
|
((e) and NCURSES_MOUSE_MASK(x, NCURSES_BUTTON_PRESSED))
|
|
template BUTTON_CLICK*(e, x: untyped): untyped =
|
|
((e) and NCURSES_MOUSE_MASK(x, NCURSES_BUTTON_CLICKED))
|
|
template BUTTON_DOUBLE_CLICK*(e, x: untyped): untyped =
|
|
((e) and NCURSES_MOUSE_MASK(x, NCURSES_DOUBLE_CLICKED))
|
|
template BUTTON_TRIPLE_CLICK*(e, x: untyped): untyped =
|
|
((e) and NCURSES_MOUSE_MASK(x, NCURSES_TRIPLE_CLICKED))
|
|
template BUTTON_RESERVED_EVENT*(e, x: untyped): untyped =
|
|
((e) and NCURSES_MOUSE_MASK(x, NCURSES_RESERVED_EVENT))
|
|
|
|
const
|
|
NCURSES_BUTTON_RELEASED* = 0o01'i32
|
|
NCURSES_BUTTON_PRESSED* = 0o02'i32
|
|
NCURSES_BUTTON_CLICKED* = 0o04'i32
|
|
NCURSES_DOUBLE_CLICKED* = 0o10'i32
|
|
NCURSES_TRIPLE_CLICKED* = 0o20'i32
|
|
NCURSES_RESERVED_EVENT* = 0o40'i32
|
|
|
|
# event masks
|
|
BUTTON1_RELEASED* = NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED)
|
|
BUTTON1_PRESSED* = NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED)
|
|
BUTTON1_CLICKED* = NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_CLICKED)
|
|
BUTTON1_DOUBLE_CLICKED* = NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED)
|
|
BUTTON1_TRIPLE_CLICKED* = NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED)
|
|
BUTTON2_RELEASED* = NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_RELEASED)
|
|
BUTTON2_PRESSED* = NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_PRESSED)
|
|
BUTTON2_CLICKED* = NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_CLICKED)
|
|
BUTTON2_DOUBLE_CLICKED* = NCURSES_MOUSE_MASK(2, NCURSES_DOUBLE_CLICKED)
|
|
BUTTON2_TRIPLE_CLICKED* = NCURSES_MOUSE_MASK(2, NCURSES_TRIPLE_CLICKED)
|
|
BUTTON3_RELEASED* = NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_RELEASED)
|
|
BUTTON3_PRESSED* = NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_PRESSED)
|
|
BUTTON3_CLICKED* = NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_CLICKED)
|
|
BUTTON3_DOUBLE_CLICKED* = NCURSES_MOUSE_MASK(3, NCURSES_DOUBLE_CLICKED)
|
|
BUTTON3_TRIPLE_CLICKED* = NCURSES_MOUSE_MASK(3, NCURSES_TRIPLE_CLICKED)
|
|
BUTTON4_RELEASED* = NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_RELEASED)
|
|
BUTTON4_PRESSED* = NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_PRESSED)
|
|
BUTTON4_CLICKED* = NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_CLICKED)
|
|
BUTTON4_DOUBLE_CLICKED* = NCURSES_MOUSE_MASK(4, NCURSES_DOUBLE_CLICKED)
|
|
BUTTON4_TRIPLE_CLICKED* = NCURSES_MOUSE_MASK(4, NCURSES_TRIPLE_CLICKED)
|
|
BUTTON5_RELEASED* = NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_RELEASED)
|
|
BUTTON5_PRESSED* = NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
|
|
BUTTON5_CLICKED* = NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_CLICKED)
|
|
BUTTON5_DOUBLE_CLICKED* = NCURSES_MOUSE_MASK(5, NCURSES_DOUBLE_CLICKED)
|
|
BUTTON5_TRIPLE_CLICKED* = NCURSES_MOUSE_MASK(5, NCURSES_TRIPLE_CLICKED)
|
|
BUTTON_CTRL* = NCURSES_MOUSE_MASK(6, 1)
|
|
BUTTON_SHIFT* = NCURSES_MOUSE_MASK(6, 2)
|
|
BUTTON_ALT* = NCURSES_MOUSE_MASK(6, 4)
|
|
|
|
# keys
|
|
KEY_CODE_YES* = 0o400 ## A wchar_t contains a key code
|
|
KEY_MIN* = 0o401 ## Minimum curses key
|
|
KEY_BREAK* = 0o401 ## Break key (unreliable)
|
|
KEY_SRESET* = 0o530 ## Soft (partial) reset (unreliable)
|
|
KEY_RESET* = 0o531 ## Reset or hard reset (unreliable)
|
|
|
|
KEY_DOWN* = 0o402 ## down-arrow key
|
|
KEY_UP* = 0o403 ## up-arrow key
|
|
KEY_LEFT* = 0o404 ## left-arrow key
|
|
KEY_RIGHT* = 0o405 ## right-arrow key
|
|
KEY_HOME* = 0o406 ## home key
|
|
KEY_BACKSPACE* = 0o407 ## backspace key
|
|
KEY_F0* = 0o410 ## Function keys. Space for 64
|
|
KEY_DL* = 0o510 ## delete-line key
|
|
KEY_IL* = 0o511 ## insert-line key
|
|
KEY_DC* = 0o512 ## delete-character key
|
|
KEY_IC* = 0o513 ## insert-character key
|
|
KEY_EIC* = 0o514 ## sent by rmir or smir in insert mode
|
|
KEY_CLEAR* = 0o515 ## clear-screen or erase key
|
|
KEY_EOS* = 0o516 ## clear-to-end-of-screen key
|
|
KEY_EOL* = 0o517 ## clear-to-end-of-line key
|
|
KEY_SF* = 0o520 ## scroll-forward key
|
|
KEY_SR* = 0o521 ## scroll-backward key
|
|
KEY_NPAGE* = 0o522 ## next-page key
|
|
KEY_PPAGE* = 0o523 ## previous-page key
|
|
KEY_STAB* = 0o524 ## set-tab key
|
|
KEY_CTAB* = 0o525 ## clear-tab key
|
|
KEY_CATAB* = 0o526 ## clear-all-tabs key
|
|
KEY_ENTER* = 0o527 ## enter/send key
|
|
KEY_PRINT* = 0o532 ## print key
|
|
KEY_LL* = 0o533 ## lower-left key (home down)
|
|
KEY_A1* = 0o534 ## upper left of keypad
|
|
KEY_A3* = 0o535 ## upper right of keypad
|
|
KEY_B2* = 0o536 ## center of keypad
|
|
KEY_C1* = 0o537 ## lower left of keypad
|
|
KEY_C3* = 0o540 ## lower right of keypad
|
|
KEY_BTAB* = 0o541 ## back-tab key
|
|
KEY_BEG* = 0o542 ## begin key
|
|
KEY_CANCEL* = 0o543 ## cancel key
|
|
KEY_CLOSE* = 0o544 ## close key
|
|
KEY_COMMAND* = 0o545 ## command key
|
|
KEY_COPY* = 0o546 ## copy key
|
|
KEY_CREATE* = 0o547 ## create key
|
|
KEY_END* = 0o550 ## end key
|
|
KEY_EXIT* = 0o551 ## exit key
|
|
KEY_FIND* = 0o552 ## find key
|
|
KEY_HELP* = 0o553 ## help key
|
|
KEY_MARK* = 0o554 ## mark key
|
|
KEY_MESSAGE* = 0o555 ## message key
|
|
KEY_MOVE* = 0o556 ## move key
|
|
KEY_NEXT* = 0o557 ## next key
|
|
KEY_OPEN* = 0o560 ## open key
|
|
KEY_OPTIONS* = 0o561 ## options key
|
|
KEY_PREVIOUS* = 0o562 ## previous key
|
|
KEY_REDO* = 0o563 ## redo key
|
|
KEY_REFERENCE* = 0o564 ## reference key
|
|
KEY_REFRESH* = 0o565 ## refresh key
|
|
KEY_REPLACE* = 0o566 ## replace key
|
|
KEY_RESTART* = 0o567 ## restart key
|
|
KEY_RESUME* = 0o570 ## resume key
|
|
KEY_SAVE* = 0o571 ## save key
|
|
KEY_SBEG* = 0o572 ## shifted begin key
|
|
KEY_SCANCEL* = 0o573 ## shifted cancel key
|
|
KEY_SCOMMAND* = 0o574 ## shifted command key
|
|
KEY_SCOPY* = 0o575 ## shifted copy key
|
|
KEY_SCREATE* = 0o576 ## shifted create key
|
|
KEY_SDC* = 0o577 ## shifted delete-character key
|
|
KEY_SDL* = 0o600 ## shifted delete-line key
|
|
KEY_SELECT* = 0o601 ## select key
|
|
KEY_SEND* = 0o602 ## shifted end key
|
|
KEY_SEOL* = 0o603 ## shifted clear-to-end-of-line key
|
|
KEY_SEXIT* = 0o604 ## shifted exit key
|
|
KEY_SFIND* = 0o605 ## shifted find key
|
|
KEY_SHELP* = 0o606 ## shifted help key
|
|
KEY_SHOME* = 0o607 ## shifted home key
|
|
KEY_SIC* = 0o610 ## shifted insert-character key
|
|
KEY_SLEFT* = 0o611 ## shifted left-arrow key
|
|
KEY_SMESSAGE* = 0o612 ## shifted message key
|
|
KEY_SMOVE* = 0o613 ## shifted move key
|
|
KEY_SNEXT* = 0o614 ## shifted next key
|
|
KEY_SOPTIONS* = 0o615 ## shifted options key
|
|
KEY_SPREVIOUS* = 0o616 ## shifted previous key
|
|
KEY_SPRINT* = 0o617 ## shifted print key
|
|
KEY_SREDO* = 0o620 ## shifted redo key
|
|
KEY_SREPLACE* = 0o621 ## shifted replace key
|
|
KEY_SRIGHT* = 0o622 ## shifted right-arrow key
|
|
KEY_SRSUME* = 0o623 ## shifted resume key
|
|
KEY_SSAVE* = 0o624 ## shifted save key
|
|
KEY_SSUSPEND* = 0o625 ## shifted suspend key
|
|
KEY_SUNDO* = 0o626 ## shifted undo key
|
|
KEY_SUSPEND* = 0o627 ## suspend key
|
|
KEY_UNDO* = 0o630 ## undo key
|
|
KEY_MOUSE* = 0o631 ## Mouse event has occurred
|
|
KEY_RESIZE* = 0o632 ## Terminal resize event
|
|
KEY_EVENT* = 0o633 ## We were interrupted by an event
|
|
template KEY_F*(n: untyped): untyped= (KEY_F0+(n)) ## Value of function key n
|