curses 1.2.6 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/macos.yml +19 -0
- data/.github/workflows/ubuntu.yml +26 -0
- data/.github/workflows/windows.yml +28 -0
- data/.gitmodules +1 -1
- data/.travis.yml +6 -3
- data/History.md +40 -0
- data/README.md +4 -1
- data/Rakefile +0 -83
- data/curses.gemspec +2 -3
- data/ext/curses/curses.c +1271 -151
- data/ext/curses/extconf.rb +140 -17
- data/lib/curses.rb +5 -12
- data/sample/form.rb +52 -0
- data/sample/menu.rb +1 -1
- data/vendor/PDCurses/.gitignore +47 -0
- data/vendor/PDCurses/.travis.yml +49 -0
- data/vendor/PDCurses/CMakeLists.txt +68 -0
- data/vendor/PDCurses/HISTORY.md +2036 -0
- data/vendor/PDCurses/IMPLEMNT.md +327 -0
- data/vendor/PDCurses/README.md +77 -0
- data/vendor/PDCurses/acs_defs.h +265 -0
- data/vendor/PDCurses/appveyor.yml +218 -0
- data/vendor/PDCurses/cmake/README.md +71 -0
- data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
- data/vendor/PDCurses/cmake/build_options.cmake +25 -0
- data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
- data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
- data/vendor/PDCurses/cmake/get_version.cmake +17 -0
- data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
- data/vendor/PDCurses/cmake/project_common.cmake +121 -0
- data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
- data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
- data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
- data/vendor/PDCurses/cmake/version.in.cmake +73 -0
- data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
- data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
- data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
- data/vendor/PDCurses/curses.h +1846 -0
- data/vendor/PDCurses/curspriv.h +134 -0
- data/vendor/PDCurses/demos/README.md +25 -0
- data/vendor/PDCurses/demos/firework.c +144 -0
- data/vendor/PDCurses/demos/newtest.c +581 -0
- data/vendor/PDCurses/demos/ozdemo.c +447 -0
- data/vendor/PDCurses/demos/ptest.c +283 -0
- data/vendor/PDCurses/demos/rain.c +157 -0
- data/vendor/PDCurses/demos/testcurs.c +1607 -0
- data/vendor/PDCurses/demos/tui.c +1048 -0
- data/vendor/PDCurses/demos/tui.h +65 -0
- data/vendor/PDCurses/demos/tuidemo.c +233 -0
- data/vendor/PDCurses/demos/version.c +61 -0
- data/vendor/PDCurses/demos/worm.c +432 -0
- data/vendor/PDCurses/demos/xmas.c +955 -0
- data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
- data/vendor/PDCurses/dos/Makefile.bcc +83 -0
- data/vendor/PDCurses/dos/Makefile.dmc +257 -0
- data/vendor/PDCurses/dos/Makefile.msc +113 -0
- data/vendor/PDCurses/dos/Makefile.wcc +107 -0
- data/vendor/PDCurses/dos/README.md +51 -0
- data/vendor/PDCurses/dos/bccdos.lrf +9 -0
- data/vendor/PDCurses/dos/mscdos.lrf +50 -0
- data/vendor/PDCurses/dos/pdcclip.c +132 -0
- data/vendor/PDCurses/dos/pdcdisp.c +135 -0
- data/vendor/PDCurses/dos/pdcdos.h +194 -0
- data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
- data/vendor/PDCurses/dos/pdckbd.c +513 -0
- data/vendor/PDCurses/dos/pdcscrn.c +785 -0
- data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
- data/vendor/PDCurses/dos/pdcutil.c +212 -0
- data/vendor/PDCurses/libobjs.mif +26 -0
- data/vendor/PDCurses/makedist.mif +20 -0
- data/vendor/PDCurses/man/README.md +21 -0
- data/vendor/PDCurses/man/intro.md +361 -0
- data/vendor/PDCurses/man/manext.c +119 -0
- data/vendor/PDCurses/man/sdl.md +152 -0
- data/vendor/PDCurses/man/sdl2.md +58 -0
- data/vendor/PDCurses/man/x11.md +407 -0
- data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
- data/vendor/PDCurses/ncurses/README.md +26 -0
- data/vendor/PDCurses/ncurses/makefile +29 -0
- data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
- data/vendor/PDCurses/os2/Makefile.bcc +90 -0
- data/vendor/PDCurses/os2/Makefile.wcc +43 -0
- data/vendor/PDCurses/os2/README.md +43 -0
- data/vendor/PDCurses/os2/iccos2.lrf +50 -0
- data/vendor/PDCurses/os2/iccos2.mak +256 -0
- data/vendor/PDCurses/os2/pdcclip.c +188 -0
- data/vendor/PDCurses/os2/pdcdisp.c +93 -0
- data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
- data/vendor/PDCurses/os2/pdckbd.c +521 -0
- data/vendor/PDCurses/os2/pdcos2.h +55 -0
- data/vendor/PDCurses/os2/pdcscrn.c +449 -0
- data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
- data/vendor/PDCurses/os2/pdcutil.c +52 -0
- data/vendor/PDCurses/panel.h +56 -0
- data/vendor/PDCurses/pdcurses/README.md +25 -0
- data/vendor/PDCurses/pdcurses/addch.c +693 -0
- data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
- data/vendor/PDCurses/pdcurses/addstr.c +240 -0
- data/vendor/PDCurses/pdcurses/attr.c +359 -0
- data/vendor/PDCurses/pdcurses/beep.c +68 -0
- data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
- data/vendor/PDCurses/pdcurses/border.c +411 -0
- data/vendor/PDCurses/pdcurses/clear.c +159 -0
- data/vendor/PDCurses/pdcurses/color.c +298 -0
- data/vendor/PDCurses/pdcurses/debug.c +109 -0
- data/vendor/PDCurses/pdcurses/delch.c +96 -0
- data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
- data/vendor/PDCurses/pdcurses/deprec.c +27 -0
- data/vendor/PDCurses/pdcurses/getch.c +417 -0
- data/vendor/PDCurses/pdcurses/getstr.c +474 -0
- data/vendor/PDCurses/pdcurses/getyx.c +139 -0
- data/vendor/PDCurses/pdcurses/inch.c +127 -0
- data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
- data/vendor/PDCurses/pdcurses/initscr.c +367 -0
- data/vendor/PDCurses/pdcurses/inopts.c +324 -0
- data/vendor/PDCurses/pdcurses/insch.c +271 -0
- data/vendor/PDCurses/pdcurses/insstr.c +264 -0
- data/vendor/PDCurses/pdcurses/instr.c +246 -0
- data/vendor/PDCurses/pdcurses/kernel.c +259 -0
- data/vendor/PDCurses/pdcurses/keyname.c +157 -0
- data/vendor/PDCurses/pdcurses/mouse.c +438 -0
- data/vendor/PDCurses/pdcurses/move.c +57 -0
- data/vendor/PDCurses/pdcurses/outopts.c +159 -0
- data/vendor/PDCurses/pdcurses/overlay.c +214 -0
- data/vendor/PDCurses/pdcurses/pad.c +260 -0
- data/vendor/PDCurses/pdcurses/panel.c +633 -0
- data/vendor/PDCurses/pdcurses/printw.c +126 -0
- data/vendor/PDCurses/pdcurses/refresh.c +279 -0
- data/vendor/PDCurses/pdcurses/scanw.c +578 -0
- data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
- data/vendor/PDCurses/pdcurses/scroll.c +101 -0
- data/vendor/PDCurses/pdcurses/slk.c +591 -0
- data/vendor/PDCurses/pdcurses/termattr.c +182 -0
- data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
- data/vendor/PDCurses/pdcurses/touch.c +163 -0
- data/vendor/PDCurses/pdcurses/util.c +312 -0
- data/vendor/PDCurses/pdcurses/window.c +569 -0
- data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
- data/vendor/PDCurses/sdl1/README.md +31 -0
- data/vendor/PDCurses/sdl1/deffont.h +385 -0
- data/vendor/PDCurses/sdl1/deficon.h +23 -0
- data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
- data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
- data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
- data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
- data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
- data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
- data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
- data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
- data/vendor/PDCurses/sdl1/sdltest.c +79 -0
- data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
- data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
- data/vendor/PDCurses/sdl2/README.md +34 -0
- data/vendor/PDCurses/sdl2/deffont.h +385 -0
- data/vendor/PDCurses/sdl2/deficon.h +23 -0
- data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
- data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
- data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
- data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
- data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
- data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
- data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
- data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
- data/vendor/PDCurses/sdl2/sdltest.c +81 -0
- data/vendor/PDCurses/term.h +48 -0
- data/vendor/PDCurses/version.mif +7 -0
- data/vendor/PDCurses/vt/CMakeLists.txt +28 -0
- data/vendor/PDCurses/vt/Makefile.bcc +111 -0
- data/vendor/PDCurses/vt/Makefile.dmc +258 -0
- data/vendor/PDCurses/vt/Makefile.vc +144 -0
- data/vendor/PDCurses/vt/Makefile.wcc +107 -0
- data/vendor/PDCurses/vt/README.md +64 -0
- data/vendor/PDCurses/vt/pdcclip.c +20 -0
- data/vendor/PDCurses/vt/pdcdisp.c +284 -0
- data/vendor/PDCurses/vt/pdcgetsc.c +27 -0
- data/vendor/PDCurses/vt/pdckbd.c +394 -0
- data/vendor/PDCurses/vt/pdcscrn.c +434 -0
- data/vendor/PDCurses/vt/pdcsetsc.c +45 -0
- data/vendor/PDCurses/vt/pdcutil.c +43 -0
- data/vendor/PDCurses/vt/pdcvt.h +16 -0
- data/vendor/PDCurses/watcom.mif +68 -0
- data/vendor/PDCurses/wincon/CMakeLists.txt +27 -0
- data/vendor/PDCurses/wincon/Makefile.bcc +88 -0
- data/vendor/PDCurses/wincon/Makefile.dmc +256 -0
- data/vendor/PDCurses/wincon/Makefile.lcc +273 -0
- data/vendor/PDCurses/wincon/Makefile.mng +176 -0
- data/vendor/PDCurses/wincon/Makefile.vc +144 -0
- data/vendor/PDCurses/wincon/Makefile.wcc +51 -0
- data/vendor/PDCurses/wincon/README.md +85 -0
- data/vendor/PDCurses/wincon/pdcclip.c +174 -0
- data/vendor/PDCurses/wincon/pdcdisp.c +143 -0
- data/vendor/PDCurses/wincon/pdcgetsc.c +55 -0
- data/vendor/PDCurses/wincon/pdckbd.c +786 -0
- data/vendor/PDCurses/wincon/pdcscrn.c +717 -0
- data/vendor/PDCurses/wincon/pdcsetsc.c +91 -0
- data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
- data/vendor/PDCurses/wincon/pdcurses.rc +28 -0
- data/vendor/PDCurses/wincon/pdcutil.c +41 -0
- data/vendor/PDCurses/wincon/pdcwin.h +31 -0
- data/vendor/PDCurses/wingui/CMakeLists.txt +27 -0
- data/vendor/PDCurses/wingui/Makefile.bcc +85 -0
- data/vendor/PDCurses/wingui/Makefile.dmc +259 -0
- data/vendor/PDCurses/wingui/Makefile.lcc +273 -0
- data/vendor/PDCurses/wingui/Makefile.mng +171 -0
- data/vendor/PDCurses/wingui/Makefile.vc +144 -0
- data/vendor/PDCurses/wingui/Makefile.wcc +51 -0
- data/vendor/PDCurses/wingui/README.md +93 -0
- data/vendor/PDCurses/wingui/pdcclip.c +174 -0
- data/vendor/PDCurses/wingui/pdcdisp.c +718 -0
- data/vendor/PDCurses/wingui/pdcgetsc.c +30 -0
- data/vendor/PDCurses/wingui/pdckbd.c +143 -0
- data/vendor/PDCurses/wingui/pdcscrn.c +2797 -0
- data/vendor/PDCurses/wingui/pdcsetsc.c +89 -0
- data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
- data/vendor/PDCurses/wingui/pdcurses.rc +28 -0
- data/vendor/PDCurses/wingui/pdcutil.c +61 -0
- data/vendor/PDCurses/wingui/pdcwin.h +122 -0
- data/vendor/PDCurses/x11/Makefile.in +754 -0
- data/vendor/PDCurses/x11/PDCurses.spec +82 -0
- data/vendor/PDCurses/x11/README.md +62 -0
- data/vendor/PDCurses/x11/ScrollBox.c +319 -0
- data/vendor/PDCurses/x11/ScrollBox.h +51 -0
- data/vendor/PDCurses/x11/ScrollBoxP.h +70 -0
- data/vendor/PDCurses/x11/aclocal.m4 +994 -0
- data/vendor/PDCurses/x11/big_icon.xbm +46 -0
- data/vendor/PDCurses/x11/compose.h +201 -0
- data/vendor/PDCurses/x11/config.guess +1500 -0
- data/vendor/PDCurses/x11/config.h.in +100 -0
- data/vendor/PDCurses/x11/config.sub +1616 -0
- data/vendor/PDCurses/x11/configure +6700 -0
- data/vendor/PDCurses/x11/configure.ac +295 -0
- data/vendor/PDCurses/x11/debian/changelog +6 -0
- data/vendor/PDCurses/x11/debian/compat +1 -0
- data/vendor/PDCurses/x11/debian/control +11 -0
- data/vendor/PDCurses/x11/debian/copyright +27 -0
- data/vendor/PDCurses/x11/debian/rules +98 -0
- data/vendor/PDCurses/x11/install-sh +253 -0
- data/vendor/PDCurses/x11/little_icon.xbm +14 -0
- data/vendor/PDCurses/x11/ncurses_cfg.h +45 -0
- data/vendor/PDCurses/x11/pdcclip.c +173 -0
- data/vendor/PDCurses/x11/pdcdisp.c +85 -0
- data/vendor/PDCurses/x11/pdcgetsc.c +28 -0
- data/vendor/PDCurses/x11/pdckbd.c +104 -0
- data/vendor/PDCurses/x11/pdcscrn.c +258 -0
- data/vendor/PDCurses/x11/pdcsetsc.c +95 -0
- data/vendor/PDCurses/x11/pdcutil.c +52 -0
- data/vendor/PDCurses/x11/pdcx11.c +316 -0
- data/vendor/PDCurses/x11/pdcx11.h +191 -0
- data/vendor/PDCurses/x11/sb.c +155 -0
- data/vendor/PDCurses/x11/x11.c +3686 -0
- data/vendor/PDCurses/x11/xcurses-config.in +81 -0
- metadata +255 -21
@@ -0,0 +1,271 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include <curspriv.h>
|
4
|
+
|
5
|
+
/*man-start**************************************************************
|
6
|
+
|
7
|
+
insch
|
8
|
+
-----
|
9
|
+
|
10
|
+
### Synopsis
|
11
|
+
|
12
|
+
int insch(chtype ch);
|
13
|
+
int winsch(WINDOW *win, chtype ch);
|
14
|
+
int mvinsch(int y, int x, chtype ch);
|
15
|
+
int mvwinsch(WINDOW *win, int y, int x, chtype ch);
|
16
|
+
|
17
|
+
int insrawch(chtype ch);
|
18
|
+
int winsrawch(WINDOW *win, chtype ch);
|
19
|
+
int mvinsrawch(int y, int x, chtype ch);
|
20
|
+
int mvwinsrawch(WINDOW *win, int y, int x, chtype ch);
|
21
|
+
|
22
|
+
int ins_wch(const cchar_t *wch);
|
23
|
+
int wins_wch(WINDOW *win, const cchar_t *wch);
|
24
|
+
int mvins_wch(int y, int x, const cchar_t *wch);
|
25
|
+
int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch);
|
26
|
+
|
27
|
+
### Description
|
28
|
+
|
29
|
+
The insch() functions insert a chtype into the window at the
|
30
|
+
current or specified cursor position. The cursor is NOT
|
31
|
+
advanced. A newline is equivalent to clrtoeol(); tabs are
|
32
|
+
expanded; other control characters are converted as with
|
33
|
+
unctrl().
|
34
|
+
|
35
|
+
The ins_wch() functions are the wide-character
|
36
|
+
equivalents, taking cchar_t pointers rather than chtypes.
|
37
|
+
|
38
|
+
Video attributes can be combined with a character by ORing
|
39
|
+
them into the parameter. Text, including attributes, can be
|
40
|
+
copied from one place to another using inch() and insch().
|
41
|
+
|
42
|
+
insrawch() etc. are PDCurses-specific wrappers for insch() etc.
|
43
|
+
that disable the translation of control characters.
|
44
|
+
|
45
|
+
### Return Value
|
46
|
+
|
47
|
+
All functions return OK on success and ERR on error.
|
48
|
+
|
49
|
+
### Portability
|
50
|
+
X/Open BSD SYS V
|
51
|
+
insch Y Y Y
|
52
|
+
winsch Y Y Y
|
53
|
+
mvinsch Y Y Y
|
54
|
+
mvwinsch Y Y Y
|
55
|
+
insrawch - - -
|
56
|
+
winsrawch - - -
|
57
|
+
ins_wch Y
|
58
|
+
wins_wch Y
|
59
|
+
mvins_wch Y
|
60
|
+
mvwins_wch Y
|
61
|
+
|
62
|
+
**man-end****************************************************************/
|
63
|
+
|
64
|
+
#include <string.h>
|
65
|
+
|
66
|
+
int winsch(WINDOW *win, chtype ch)
|
67
|
+
{
|
68
|
+
int x, y;
|
69
|
+
chtype attr;
|
70
|
+
bool xlat;
|
71
|
+
|
72
|
+
PDC_LOG(("winsch() - called: win=%p ch=%x (text=%c attr=0x%x)\n",
|
73
|
+
win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES));
|
74
|
+
|
75
|
+
if (!win)
|
76
|
+
return ERR;
|
77
|
+
|
78
|
+
x = win->_curx;
|
79
|
+
y = win->_cury;
|
80
|
+
|
81
|
+
if (y > win->_maxy || x > win->_maxx || y < 0 || x < 0)
|
82
|
+
return ERR;
|
83
|
+
|
84
|
+
xlat = !SP->raw_out && !(ch & A_ALTCHARSET);
|
85
|
+
attr = ch & A_ATTRIBUTES;
|
86
|
+
ch &= A_CHARTEXT;
|
87
|
+
|
88
|
+
if (xlat && (ch < ' ' || ch == 0x7f))
|
89
|
+
{
|
90
|
+
int x2;
|
91
|
+
|
92
|
+
switch ((int)ch)
|
93
|
+
{
|
94
|
+
case '\t':
|
95
|
+
for (x2 = ((x / TABSIZE) + 1) * TABSIZE; x < x2; x++)
|
96
|
+
{
|
97
|
+
if (winsch(win, attr | ' ') == ERR)
|
98
|
+
return ERR;
|
99
|
+
}
|
100
|
+
return OK;
|
101
|
+
|
102
|
+
case '\n':
|
103
|
+
wclrtoeol(win);
|
104
|
+
break;
|
105
|
+
|
106
|
+
case 0x7f:
|
107
|
+
if (winsch(win, attr | '?') == ERR)
|
108
|
+
return ERR;
|
109
|
+
|
110
|
+
return winsch(win, attr | '^');
|
111
|
+
|
112
|
+
default:
|
113
|
+
/* handle control chars */
|
114
|
+
|
115
|
+
if (winsch(win, attr | (ch + '@')) == ERR)
|
116
|
+
return ERR;
|
117
|
+
|
118
|
+
return winsch(win, attr | '^');
|
119
|
+
}
|
120
|
+
}
|
121
|
+
else
|
122
|
+
{
|
123
|
+
int maxx;
|
124
|
+
chtype *temp;
|
125
|
+
|
126
|
+
/* If the incoming character doesn't have its own attribute,
|
127
|
+
then use the current attributes for the window. If it has
|
128
|
+
attributes but not a color component, OR the attributes to
|
129
|
+
the current attributes for the window. If it has a color
|
130
|
+
component, use the attributes solely from the incoming
|
131
|
+
character. */
|
132
|
+
|
133
|
+
if (!(attr & A_COLOR))
|
134
|
+
attr |= win->_attrs;
|
135
|
+
|
136
|
+
/* wrs (4/10/93): Apply the same sort of logic for the window
|
137
|
+
background, in that it only takes precedence if other color
|
138
|
+
attributes are not there and that the background character
|
139
|
+
will only print if the printing character is blank. */
|
140
|
+
|
141
|
+
if (!(attr & A_COLOR))
|
142
|
+
attr |= win->_bkgd & A_ATTRIBUTES;
|
143
|
+
else
|
144
|
+
attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR);
|
145
|
+
|
146
|
+
if (ch == ' ')
|
147
|
+
ch = win->_bkgd & A_CHARTEXT;
|
148
|
+
|
149
|
+
/* Add the attribute back into the character. */
|
150
|
+
|
151
|
+
ch |= attr;
|
152
|
+
|
153
|
+
maxx = win->_maxx;
|
154
|
+
temp = &win->_y[y][x];
|
155
|
+
|
156
|
+
memmove(temp + 1, temp, (maxx - x - 1) * sizeof(chtype));
|
157
|
+
|
158
|
+
win->_lastch[y] = maxx - 1;
|
159
|
+
|
160
|
+
if ((win->_firstch[y] == _NO_CHANGE) || (win->_firstch[y] > x))
|
161
|
+
win->_firstch[y] = x;
|
162
|
+
|
163
|
+
*temp = ch;
|
164
|
+
}
|
165
|
+
|
166
|
+
PDC_sync(win);
|
167
|
+
|
168
|
+
return OK;
|
169
|
+
}
|
170
|
+
|
171
|
+
int insch(chtype ch)
|
172
|
+
{
|
173
|
+
PDC_LOG(("insch() - called\n"));
|
174
|
+
|
175
|
+
return winsch(stdscr, ch);
|
176
|
+
}
|
177
|
+
|
178
|
+
int mvinsch(int y, int x, chtype ch)
|
179
|
+
{
|
180
|
+
PDC_LOG(("mvinsch() - called\n"));
|
181
|
+
|
182
|
+
if (move(y, x) == ERR)
|
183
|
+
return ERR;
|
184
|
+
|
185
|
+
return winsch(stdscr, ch);
|
186
|
+
}
|
187
|
+
|
188
|
+
int mvwinsch(WINDOW *win, int y, int x, chtype ch)
|
189
|
+
{
|
190
|
+
PDC_LOG(("mvwinsch() - called\n"));
|
191
|
+
|
192
|
+
if (wmove(win, y, x) == ERR)
|
193
|
+
return ERR;
|
194
|
+
|
195
|
+
return winsch(win, ch);
|
196
|
+
}
|
197
|
+
|
198
|
+
int winsrawch(WINDOW *win, chtype ch)
|
199
|
+
{
|
200
|
+
PDC_LOG(("winsrawch() - called: win=%p ch=%x "
|
201
|
+
"(char=%c attr=0x%x)\n", win, ch,
|
202
|
+
ch & A_CHARTEXT, ch & A_ATTRIBUTES));
|
203
|
+
|
204
|
+
if ((ch & A_CHARTEXT) < ' ' || (ch & A_CHARTEXT) == 0x7f)
|
205
|
+
ch |= A_ALTCHARSET;
|
206
|
+
|
207
|
+
return winsch(win, ch);
|
208
|
+
}
|
209
|
+
|
210
|
+
int insrawch(chtype ch)
|
211
|
+
{
|
212
|
+
PDC_LOG(("insrawch() - called\n"));
|
213
|
+
|
214
|
+
return winsrawch(stdscr, ch);
|
215
|
+
}
|
216
|
+
|
217
|
+
int mvinsrawch(int y, int x, chtype ch)
|
218
|
+
{
|
219
|
+
PDC_LOG(("mvinsrawch() - called\n"));
|
220
|
+
|
221
|
+
if (move(y, x) == ERR)
|
222
|
+
return ERR;
|
223
|
+
|
224
|
+
return winsrawch(stdscr, ch);
|
225
|
+
}
|
226
|
+
|
227
|
+
int mvwinsrawch(WINDOW *win, int y, int x, chtype ch)
|
228
|
+
{
|
229
|
+
PDC_LOG(("mvwinsrawch() - called\n"));
|
230
|
+
|
231
|
+
if (wmove(win, y, x) == ERR)
|
232
|
+
return ERR;
|
233
|
+
|
234
|
+
return winsrawch(win, ch);
|
235
|
+
}
|
236
|
+
|
237
|
+
#ifdef PDC_WIDE
|
238
|
+
int wins_wch(WINDOW *win, const cchar_t *wch)
|
239
|
+
{
|
240
|
+
PDC_LOG(("wins_wch() - called\n"));
|
241
|
+
|
242
|
+
return wch ? winsch(win, *wch) : ERR;
|
243
|
+
}
|
244
|
+
|
245
|
+
int ins_wch(const cchar_t *wch)
|
246
|
+
{
|
247
|
+
PDC_LOG(("ins_wch() - called\n"));
|
248
|
+
|
249
|
+
return wins_wch(stdscr, wch);
|
250
|
+
}
|
251
|
+
|
252
|
+
int mvins_wch(int y, int x, const cchar_t *wch)
|
253
|
+
{
|
254
|
+
PDC_LOG(("mvins_wch() - called\n"));
|
255
|
+
|
256
|
+
if (move(y, x) == ERR)
|
257
|
+
return ERR;
|
258
|
+
|
259
|
+
return wins_wch(stdscr, wch);
|
260
|
+
}
|
261
|
+
|
262
|
+
int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch)
|
263
|
+
{
|
264
|
+
PDC_LOG(("mvwins_wch() - called\n"));
|
265
|
+
|
266
|
+
if (wmove(win, y, x) == ERR)
|
267
|
+
return ERR;
|
268
|
+
|
269
|
+
return wins_wch(win, wch);
|
270
|
+
}
|
271
|
+
#endif
|
@@ -0,0 +1,264 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include <curspriv.h>
|
4
|
+
|
5
|
+
/*man-start**************************************************************
|
6
|
+
|
7
|
+
insstr
|
8
|
+
------
|
9
|
+
|
10
|
+
### Synopsis
|
11
|
+
|
12
|
+
int insstr(const char *str);
|
13
|
+
int insnstr(const char *str, int n);
|
14
|
+
int winsstr(WINDOW *win, const char *str);
|
15
|
+
int winsnstr(WINDOW *win, const char *str, int n);
|
16
|
+
int mvinsstr(int y, int x, const char *str);
|
17
|
+
int mvinsnstr(int y, int x, const char *str, int n);
|
18
|
+
int mvwinsstr(WINDOW *win, int y, int x, const char *str);
|
19
|
+
int mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n);
|
20
|
+
|
21
|
+
int ins_wstr(const wchar_t *wstr);
|
22
|
+
int ins_nwstr(const wchar_t *wstr, int n);
|
23
|
+
int wins_wstr(WINDOW *win, const wchar_t *wstr);
|
24
|
+
int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n);
|
25
|
+
int mvins_wstr(int y, int x, const wchar_t *wstr);
|
26
|
+
int mvins_nwstr(int y, int x, const wchar_t *wstr, int n);
|
27
|
+
int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr);
|
28
|
+
int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n);
|
29
|
+
|
30
|
+
### Description
|
31
|
+
|
32
|
+
The insstr() functions insert a character string into a window
|
33
|
+
at the current cursor position, by repeatedly calling winsch().
|
34
|
+
When PDCurses is built with wide-character support enabled, the
|
35
|
+
narrow-character functions treat the string as a multibyte
|
36
|
+
string in the current locale, and convert it first. All
|
37
|
+
characters to the right of the cursor are moved to the right,
|
38
|
+
with the possibility of the rightmost characters on the line
|
39
|
+
being lost. The cursor position does not change (after moving
|
40
|
+
to y, x, if specified). The routines with n as the last
|
41
|
+
argument insert at most n characters; if n is negative, then the
|
42
|
+
entire string is inserted.
|
43
|
+
|
44
|
+
### Return Value
|
45
|
+
|
46
|
+
All functions return OK on success and ERR on error.
|
47
|
+
|
48
|
+
### Portability
|
49
|
+
X/Open BSD SYS V
|
50
|
+
insstr Y - 4.0
|
51
|
+
winsstr Y - 4.0
|
52
|
+
mvinsstr Y - 4.0
|
53
|
+
mvwinsstr Y - 4.0
|
54
|
+
insnstr Y - 4.0
|
55
|
+
winsnstr Y - 4.0
|
56
|
+
mvinsnstr Y - 4.0
|
57
|
+
mvwinsnstr Y - 4.0
|
58
|
+
ins_wstr Y
|
59
|
+
wins_wstr Y
|
60
|
+
mvins_wstr Y
|
61
|
+
mvwins_wstr Y
|
62
|
+
ins_nwstr Y
|
63
|
+
wins_nwstr Y
|
64
|
+
mvins_nwstr Y
|
65
|
+
mvwins_nwstr Y
|
66
|
+
|
67
|
+
**man-end****************************************************************/
|
68
|
+
|
69
|
+
#include <string.h>
|
70
|
+
|
71
|
+
int winsnstr(WINDOW *win, const char *str, int n)
|
72
|
+
{
|
73
|
+
#ifdef PDC_WIDE
|
74
|
+
wchar_t wstr[513], *p;
|
75
|
+
int i;
|
76
|
+
#endif
|
77
|
+
int len;
|
78
|
+
|
79
|
+
PDC_LOG(("winsnstr() - called: string=\"%s\" n %d \n", str, n));
|
80
|
+
|
81
|
+
if (!win || !str)
|
82
|
+
return ERR;
|
83
|
+
|
84
|
+
len = (int)strlen(str);
|
85
|
+
|
86
|
+
if (n < 0 || n < len)
|
87
|
+
n = len;
|
88
|
+
|
89
|
+
#ifdef PDC_WIDE
|
90
|
+
if (n > 512)
|
91
|
+
n = 512;
|
92
|
+
|
93
|
+
p = wstr;
|
94
|
+
i = 0;
|
95
|
+
|
96
|
+
while (str[i] && i < n)
|
97
|
+
{
|
98
|
+
int retval = PDC_mbtowc(p, str + i, n - i);
|
99
|
+
|
100
|
+
if (retval <= 0)
|
101
|
+
break;
|
102
|
+
p++;
|
103
|
+
i += retval;
|
104
|
+
}
|
105
|
+
|
106
|
+
while (p > wstr)
|
107
|
+
if (winsch(win, *--p) == ERR)
|
108
|
+
#else
|
109
|
+
while (n)
|
110
|
+
if (winsch(win, (unsigned char)(str[--n])) == ERR)
|
111
|
+
#endif
|
112
|
+
return ERR;
|
113
|
+
|
114
|
+
return OK;
|
115
|
+
}
|
116
|
+
|
117
|
+
int insstr(const char *str)
|
118
|
+
{
|
119
|
+
PDC_LOG(("insstr() - called: string=\"%s\"\n", str));
|
120
|
+
|
121
|
+
return winsnstr(stdscr, str, -1);
|
122
|
+
}
|
123
|
+
|
124
|
+
int winsstr(WINDOW *win, const char *str)
|
125
|
+
{
|
126
|
+
PDC_LOG(("winsstr() - called: string=\"%s\"\n", str));
|
127
|
+
|
128
|
+
return winsnstr(win, str, -1);
|
129
|
+
}
|
130
|
+
|
131
|
+
int mvinsstr(int y, int x, const char *str)
|
132
|
+
{
|
133
|
+
PDC_LOG(("mvinsstr() - called: y %d x %d string=\"%s\"\n", y, x, str));
|
134
|
+
|
135
|
+
if (move(y, x) == ERR)
|
136
|
+
return ERR;
|
137
|
+
|
138
|
+
return winsnstr(stdscr, str, -1);
|
139
|
+
}
|
140
|
+
|
141
|
+
int mvwinsstr(WINDOW *win, int y, int x, const char *str)
|
142
|
+
{
|
143
|
+
PDC_LOG(("mvwinsstr() - called: string=\"%s\"\n", str));
|
144
|
+
|
145
|
+
if (wmove(win, y, x) == ERR)
|
146
|
+
return ERR;
|
147
|
+
|
148
|
+
return winsnstr(win, str, -1);
|
149
|
+
}
|
150
|
+
|
151
|
+
int insnstr(const char *str, int n)
|
152
|
+
{
|
153
|
+
PDC_LOG(("insnstr() - called: string=\"%s\" n %d \n", str, n));
|
154
|
+
|
155
|
+
return winsnstr(stdscr, str, n);
|
156
|
+
}
|
157
|
+
|
158
|
+
int mvinsnstr(int y, int x, const char *str, int n)
|
159
|
+
{
|
160
|
+
PDC_LOG(("mvinsnstr() - called: y %d x %d string=\"%s\" n %d \n",
|
161
|
+
y, x, str, n));
|
162
|
+
|
163
|
+
if (move(y, x) == ERR)
|
164
|
+
return ERR;
|
165
|
+
|
166
|
+
return winsnstr(stdscr, str, n);
|
167
|
+
}
|
168
|
+
|
169
|
+
int mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n)
|
170
|
+
{
|
171
|
+
PDC_LOG(("mvwinsnstr() - called: y %d x %d string=\"%s\" n %d \n",
|
172
|
+
y, x, str, n));
|
173
|
+
|
174
|
+
if (wmove(win, y, x) == ERR)
|
175
|
+
return ERR;
|
176
|
+
|
177
|
+
return winsnstr(win, str, n);
|
178
|
+
}
|
179
|
+
|
180
|
+
#ifdef PDC_WIDE
|
181
|
+
int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n)
|
182
|
+
{
|
183
|
+
const wchar_t *p;
|
184
|
+
int len;
|
185
|
+
|
186
|
+
PDC_LOG(("wins_nwstr() - called\n"));
|
187
|
+
|
188
|
+
if (!win || !wstr)
|
189
|
+
return ERR;
|
190
|
+
|
191
|
+
for (len = 0, p = wstr; *p; p++)
|
192
|
+
len++;
|
193
|
+
|
194
|
+
if (n < 0 || n < len)
|
195
|
+
n = len;
|
196
|
+
|
197
|
+
while (n)
|
198
|
+
if (winsch(win, wstr[--n]) == ERR)
|
199
|
+
return ERR;
|
200
|
+
|
201
|
+
return OK;
|
202
|
+
}
|
203
|
+
|
204
|
+
int ins_wstr(const wchar_t *wstr)
|
205
|
+
{
|
206
|
+
PDC_LOG(("ins_wstr() - called\n"));
|
207
|
+
|
208
|
+
return wins_nwstr(stdscr, wstr, -1);
|
209
|
+
}
|
210
|
+
|
211
|
+
int wins_wstr(WINDOW *win, const wchar_t *wstr)
|
212
|
+
{
|
213
|
+
PDC_LOG(("wins_wstr() - called\n"));
|
214
|
+
|
215
|
+
return wins_nwstr(win, wstr, -1);
|
216
|
+
}
|
217
|
+
|
218
|
+
int mvins_wstr(int y, int x, const wchar_t *wstr)
|
219
|
+
{
|
220
|
+
PDC_LOG(("mvins_wstr() - called\n"));
|
221
|
+
|
222
|
+
if (move(y, x) == ERR)
|
223
|
+
return ERR;
|
224
|
+
|
225
|
+
return wins_nwstr(stdscr, wstr, -1);
|
226
|
+
}
|
227
|
+
|
228
|
+
int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr)
|
229
|
+
{
|
230
|
+
PDC_LOG(("mvwinsstr() - called\n"));
|
231
|
+
|
232
|
+
if (wmove(win, y, x) == ERR)
|
233
|
+
return ERR;
|
234
|
+
|
235
|
+
return wins_nwstr(win, wstr, -1);
|
236
|
+
}
|
237
|
+
|
238
|
+
int ins_nwstr(const wchar_t *wstr, int n)
|
239
|
+
{
|
240
|
+
PDC_LOG(("ins_nwstr() - called\n"));
|
241
|
+
|
242
|
+
return wins_nwstr(stdscr, wstr, n);
|
243
|
+
}
|
244
|
+
|
245
|
+
int mvins_nwstr(int y, int x, const wchar_t *wstr, int n)
|
246
|
+
{
|
247
|
+
PDC_LOG(("mvinsnstr() - called\n"));
|
248
|
+
|
249
|
+
if (move(y, x) == ERR)
|
250
|
+
return ERR;
|
251
|
+
|
252
|
+
return wins_nwstr(stdscr, wstr, n);
|
253
|
+
}
|
254
|
+
|
255
|
+
int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n)
|
256
|
+
{
|
257
|
+
PDC_LOG(("mvwinsnstr() - called\n"));
|
258
|
+
|
259
|
+
if (wmove(win, y, x) == ERR)
|
260
|
+
return ERR;
|
261
|
+
|
262
|
+
return wins_nwstr(win, wstr, n);
|
263
|
+
}
|
264
|
+
#endif
|