curses 1.4.4 → 1.4.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (258) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +6 -0
  3. data/.github/workflows/macos.yml +1 -1
  4. data/.github/workflows/push_gem.yml +48 -0
  5. data/.github/workflows/ubuntu.yml +2 -2
  6. data/.github/workflows/windows.yml +2 -2
  7. data/History.md +23 -0
  8. data/README.md +7 -0
  9. data/curses.gemspec +1 -1
  10. data/ext/curses/curses.c +7 -7
  11. data/sample/colors.rb +6 -1
  12. data/sample/form.rb +1 -1
  13. data/sample/menu.rb +2 -0
  14. metadata +9 -251
  15. data/vendor/PDCurses/.gitignore +0 -47
  16. data/vendor/PDCurses/.travis.yml +0 -49
  17. data/vendor/PDCurses/CMakeLists.txt +0 -68
  18. data/vendor/PDCurses/HISTORY.md +0 -2036
  19. data/vendor/PDCurses/IMPLEMNT.md +0 -327
  20. data/vendor/PDCurses/Makefile +0 -27
  21. data/vendor/PDCurses/README.md +0 -77
  22. data/vendor/PDCurses/acs_defs.h +0 -265
  23. data/vendor/PDCurses/appveyor.yml +0 -218
  24. data/vendor/PDCurses/cmake/README.md +0 -71
  25. data/vendor/PDCurses/cmake/build_dependencies.cmake +0 -178
  26. data/vendor/PDCurses/cmake/build_options.cmake +0 -25
  27. data/vendor/PDCurses/cmake/dll_version.cmake +0 -26
  28. data/vendor/PDCurses/cmake/gen_config_header.cmake +0 -43
  29. data/vendor/PDCurses/cmake/get_version.cmake +0 -17
  30. data/vendor/PDCurses/cmake/make_uninstall.cmake +0 -19
  31. data/vendor/PDCurses/cmake/project_common.cmake +0 -121
  32. data/vendor/PDCurses/cmake/resource.in.cmake +0 -52
  33. data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +0 -83
  34. data/vendor/PDCurses/cmake/target_arch.cmake +0 -36
  35. data/vendor/PDCurses/cmake/version.in.cmake +0 -73
  36. data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +0 -96
  37. data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +0 -106
  38. data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +0 -105
  39. data/vendor/PDCurses/curses.h +0 -1846
  40. data/vendor/PDCurses/curspriv.h +0 -134
  41. data/vendor/PDCurses/demos/README.md +0 -25
  42. data/vendor/PDCurses/demos/firework.c +0 -144
  43. data/vendor/PDCurses/demos/newtest.c +0 -581
  44. data/vendor/PDCurses/demos/ozdemo.c +0 -447
  45. data/vendor/PDCurses/demos/ptest.c +0 -283
  46. data/vendor/PDCurses/demos/rain.c +0 -157
  47. data/vendor/PDCurses/demos/testcurs.c +0 -1607
  48. data/vendor/PDCurses/demos/tui.c +0 -1048
  49. data/vendor/PDCurses/demos/tui.h +0 -65
  50. data/vendor/PDCurses/demos/tuidemo.c +0 -233
  51. data/vendor/PDCurses/demos/version.c +0 -61
  52. data/vendor/PDCurses/demos/worm.c +0 -432
  53. data/vendor/PDCurses/demos/xmas.c +0 -955
  54. data/vendor/PDCurses/dos/CMakeLists.txt +0 -47
  55. data/vendor/PDCurses/dos/Makefile +0 -105
  56. data/vendor/PDCurses/dos/Makefile.bcc +0 -83
  57. data/vendor/PDCurses/dos/Makefile.dmc +0 -257
  58. data/vendor/PDCurses/dos/Makefile.msc +0 -113
  59. data/vendor/PDCurses/dos/Makefile.wcc +0 -107
  60. data/vendor/PDCurses/dos/README.md +0 -51
  61. data/vendor/PDCurses/dos/bccdos.lrf +0 -9
  62. data/vendor/PDCurses/dos/mscdos.lrf +0 -50
  63. data/vendor/PDCurses/dos/pdcclip.c +0 -132
  64. data/vendor/PDCurses/dos/pdcdisp.c +0 -135
  65. data/vendor/PDCurses/dos/pdcdos.h +0 -194
  66. data/vendor/PDCurses/dos/pdcgetsc.c +0 -98
  67. data/vendor/PDCurses/dos/pdckbd.c +0 -513
  68. data/vendor/PDCurses/dos/pdcscrn.c +0 -785
  69. data/vendor/PDCurses/dos/pdcsetsc.c +0 -101
  70. data/vendor/PDCurses/dos/pdcutil.c +0 -212
  71. data/vendor/PDCurses/libobjs.mif +0 -26
  72. data/vendor/PDCurses/makedist.mif +0 -20
  73. data/vendor/PDCurses/man/Makefile +0 -37
  74. data/vendor/PDCurses/man/README.md +0 -21
  75. data/vendor/PDCurses/man/intro.md +0 -361
  76. data/vendor/PDCurses/man/manext.c +0 -119
  77. data/vendor/PDCurses/man/sdl.md +0 -152
  78. data/vendor/PDCurses/man/sdl2.md +0 -58
  79. data/vendor/PDCurses/man/x11.md +0 -407
  80. data/vendor/PDCurses/ncurses/CMakeLists.txt +0 -66
  81. data/vendor/PDCurses/ncurses/README.md +0 -26
  82. data/vendor/PDCurses/ncurses/makefile +0 -29
  83. data/vendor/PDCurses/os2/CMakeLists.txt +0 -41
  84. data/vendor/PDCurses/os2/Makefile +0 -132
  85. data/vendor/PDCurses/os2/Makefile.bcc +0 -90
  86. data/vendor/PDCurses/os2/Makefile.wcc +0 -43
  87. data/vendor/PDCurses/os2/README.md +0 -43
  88. data/vendor/PDCurses/os2/iccos2.lrf +0 -50
  89. data/vendor/PDCurses/os2/iccos2.mak +0 -256
  90. data/vendor/PDCurses/os2/pdcclip.c +0 -188
  91. data/vendor/PDCurses/os2/pdcdisp.c +0 -93
  92. data/vendor/PDCurses/os2/pdcgetsc.c +0 -89
  93. data/vendor/PDCurses/os2/pdckbd.c +0 -521
  94. data/vendor/PDCurses/os2/pdcos2.h +0 -55
  95. data/vendor/PDCurses/os2/pdcscrn.c +0 -449
  96. data/vendor/PDCurses/os2/pdcsetsc.c +0 -112
  97. data/vendor/PDCurses/os2/pdcutil.c +0 -52
  98. data/vendor/PDCurses/panel.h +0 -56
  99. data/vendor/PDCurses/pdcurses/README.md +0 -25
  100. data/vendor/PDCurses/pdcurses/addch.c +0 -693
  101. data/vendor/PDCurses/pdcurses/addchstr.c +0 -245
  102. data/vendor/PDCurses/pdcurses/addstr.c +0 -240
  103. data/vendor/PDCurses/pdcurses/attr.c +0 -359
  104. data/vendor/PDCurses/pdcurses/beep.c +0 -68
  105. data/vendor/PDCurses/pdcurses/bkgd.c +0 -223
  106. data/vendor/PDCurses/pdcurses/border.c +0 -411
  107. data/vendor/PDCurses/pdcurses/clear.c +0 -159
  108. data/vendor/PDCurses/pdcurses/color.c +0 -298
  109. data/vendor/PDCurses/pdcurses/debug.c +0 -109
  110. data/vendor/PDCurses/pdcurses/delch.c +0 -96
  111. data/vendor/PDCurses/pdcurses/deleteln.c +0 -211
  112. data/vendor/PDCurses/pdcurses/deprec.c +0 -27
  113. data/vendor/PDCurses/pdcurses/getch.c +0 -417
  114. data/vendor/PDCurses/pdcurses/getstr.c +0 -474
  115. data/vendor/PDCurses/pdcurses/getyx.c +0 -139
  116. data/vendor/PDCurses/pdcurses/inch.c +0 -127
  117. data/vendor/PDCurses/pdcurses/inchstr.c +0 -214
  118. data/vendor/PDCurses/pdcurses/initscr.c +0 -367
  119. data/vendor/PDCurses/pdcurses/inopts.c +0 -324
  120. data/vendor/PDCurses/pdcurses/insch.c +0 -271
  121. data/vendor/PDCurses/pdcurses/insstr.c +0 -264
  122. data/vendor/PDCurses/pdcurses/instr.c +0 -246
  123. data/vendor/PDCurses/pdcurses/kernel.c +0 -259
  124. data/vendor/PDCurses/pdcurses/keyname.c +0 -157
  125. data/vendor/PDCurses/pdcurses/mouse.c +0 -438
  126. data/vendor/PDCurses/pdcurses/move.c +0 -57
  127. data/vendor/PDCurses/pdcurses/outopts.c +0 -159
  128. data/vendor/PDCurses/pdcurses/overlay.c +0 -214
  129. data/vendor/PDCurses/pdcurses/pad.c +0 -260
  130. data/vendor/PDCurses/pdcurses/panel.c +0 -633
  131. data/vendor/PDCurses/pdcurses/printw.c +0 -126
  132. data/vendor/PDCurses/pdcurses/refresh.c +0 -279
  133. data/vendor/PDCurses/pdcurses/scanw.c +0 -578
  134. data/vendor/PDCurses/pdcurses/scr_dump.c +0 -213
  135. data/vendor/PDCurses/pdcurses/scroll.c +0 -101
  136. data/vendor/PDCurses/pdcurses/slk.c +0 -591
  137. data/vendor/PDCurses/pdcurses/termattr.c +0 -182
  138. data/vendor/PDCurses/pdcurses/terminfo.c +0 -217
  139. data/vendor/PDCurses/pdcurses/touch.c +0 -163
  140. data/vendor/PDCurses/pdcurses/util.c +0 -312
  141. data/vendor/PDCurses/pdcurses/window.c +0 -569
  142. data/vendor/PDCurses/sdl1/Makefile +0 -129
  143. data/vendor/PDCurses/sdl1/Makefile.mng +0 -110
  144. data/vendor/PDCurses/sdl1/README.md +0 -31
  145. data/vendor/PDCurses/sdl1/deffont.h +0 -385
  146. data/vendor/PDCurses/sdl1/deficon.h +0 -23
  147. data/vendor/PDCurses/sdl1/pdcclip.c +0 -131
  148. data/vendor/PDCurses/sdl1/pdcdisp.c +0 -373
  149. data/vendor/PDCurses/sdl1/pdcgetsc.c +0 -30
  150. data/vendor/PDCurses/sdl1/pdckbd.c +0 -405
  151. data/vendor/PDCurses/sdl1/pdcscrn.c +0 -414
  152. data/vendor/PDCurses/sdl1/pdcsdl.h +0 -31
  153. data/vendor/PDCurses/sdl1/pdcsetsc.c +0 -64
  154. data/vendor/PDCurses/sdl1/pdcutil.c +0 -40
  155. data/vendor/PDCurses/sdl1/sdltest.c +0 -79
  156. data/vendor/PDCurses/sdl2/CMakeLists.txt +0 -76
  157. data/vendor/PDCurses/sdl2/Makefile +0 -135
  158. data/vendor/PDCurses/sdl2/Makefile.vc +0 -164
  159. data/vendor/PDCurses/sdl2/README.md +0 -34
  160. data/vendor/PDCurses/sdl2/deffont.h +0 -385
  161. data/vendor/PDCurses/sdl2/deficon.h +0 -23
  162. data/vendor/PDCurses/sdl2/pdcclip.c +0 -93
  163. data/vendor/PDCurses/sdl2/pdcdisp.c +0 -534
  164. data/vendor/PDCurses/sdl2/pdcgetsc.c +0 -30
  165. data/vendor/PDCurses/sdl2/pdckbd.c +0 -480
  166. data/vendor/PDCurses/sdl2/pdcscrn.c +0 -443
  167. data/vendor/PDCurses/sdl2/pdcsdl.h +0 -33
  168. data/vendor/PDCurses/sdl2/pdcsetsc.c +0 -67
  169. data/vendor/PDCurses/sdl2/pdcutil.c +0 -39
  170. data/vendor/PDCurses/sdl2/sdltest.c +0 -81
  171. data/vendor/PDCurses/term.h +0 -48
  172. data/vendor/PDCurses/version.mif +0 -7
  173. data/vendor/PDCurses/vt/CMakeLists.txt +0 -28
  174. data/vendor/PDCurses/vt/Makefile +0 -135
  175. data/vendor/PDCurses/vt/Makefile.bcc +0 -111
  176. data/vendor/PDCurses/vt/Makefile.dmc +0 -258
  177. data/vendor/PDCurses/vt/Makefile.vc +0 -144
  178. data/vendor/PDCurses/vt/Makefile.wcc +0 -107
  179. data/vendor/PDCurses/vt/README.md +0 -64
  180. data/vendor/PDCurses/vt/pdcclip.c +0 -20
  181. data/vendor/PDCurses/vt/pdcdisp.c +0 -284
  182. data/vendor/PDCurses/vt/pdcgetsc.c +0 -27
  183. data/vendor/PDCurses/vt/pdckbd.c +0 -394
  184. data/vendor/PDCurses/vt/pdcscrn.c +0 -434
  185. data/vendor/PDCurses/vt/pdcsetsc.c +0 -45
  186. data/vendor/PDCurses/vt/pdcutil.c +0 -43
  187. data/vendor/PDCurses/vt/pdcvt.h +0 -16
  188. data/vendor/PDCurses/watcom.mif +0 -68
  189. data/vendor/PDCurses/wincon/CMakeLists.txt +0 -27
  190. data/vendor/PDCurses/wincon/Makefile.bcc +0 -88
  191. data/vendor/PDCurses/wincon/Makefile.dmc +0 -256
  192. data/vendor/PDCurses/wincon/Makefile.lcc +0 -273
  193. data/vendor/PDCurses/wincon/Makefile.mng +0 -176
  194. data/vendor/PDCurses/wincon/Makefile.vc +0 -144
  195. data/vendor/PDCurses/wincon/Makefile.wcc +0 -51
  196. data/vendor/PDCurses/wincon/README.md +0 -85
  197. data/vendor/PDCurses/wincon/pdcclip.c +0 -174
  198. data/vendor/PDCurses/wincon/pdcdisp.c +0 -143
  199. data/vendor/PDCurses/wincon/pdcgetsc.c +0 -55
  200. data/vendor/PDCurses/wincon/pdckbd.c +0 -786
  201. data/vendor/PDCurses/wincon/pdcscrn.c +0 -717
  202. data/vendor/PDCurses/wincon/pdcsetsc.c +0 -91
  203. data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
  204. data/vendor/PDCurses/wincon/pdcurses.rc +0 -28
  205. data/vendor/PDCurses/wincon/pdcutil.c +0 -41
  206. data/vendor/PDCurses/wincon/pdcwin.h +0 -31
  207. data/vendor/PDCurses/wingui/CMakeLists.txt +0 -27
  208. data/vendor/PDCurses/wingui/Makefile.bcc +0 -85
  209. data/vendor/PDCurses/wingui/Makefile.dmc +0 -259
  210. data/vendor/PDCurses/wingui/Makefile.lcc +0 -273
  211. data/vendor/PDCurses/wingui/Makefile.mng +0 -171
  212. data/vendor/PDCurses/wingui/Makefile.vc +0 -144
  213. data/vendor/PDCurses/wingui/Makefile.wcc +0 -51
  214. data/vendor/PDCurses/wingui/README.md +0 -93
  215. data/vendor/PDCurses/wingui/pdcclip.c +0 -174
  216. data/vendor/PDCurses/wingui/pdcdisp.c +0 -718
  217. data/vendor/PDCurses/wingui/pdcgetsc.c +0 -30
  218. data/vendor/PDCurses/wingui/pdckbd.c +0 -143
  219. data/vendor/PDCurses/wingui/pdcscrn.c +0 -2797
  220. data/vendor/PDCurses/wingui/pdcsetsc.c +0 -89
  221. data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
  222. data/vendor/PDCurses/wingui/pdcurses.rc +0 -28
  223. data/vendor/PDCurses/wingui/pdcutil.c +0 -61
  224. data/vendor/PDCurses/wingui/pdcwin.h +0 -122
  225. data/vendor/PDCurses/x11/Makefile.in +0 -754
  226. data/vendor/PDCurses/x11/PDCurses.spec +0 -82
  227. data/vendor/PDCurses/x11/README.md +0 -62
  228. data/vendor/PDCurses/x11/ScrollBox.c +0 -319
  229. data/vendor/PDCurses/x11/ScrollBox.h +0 -51
  230. data/vendor/PDCurses/x11/ScrollBoxP.h +0 -70
  231. data/vendor/PDCurses/x11/aclocal.m4 +0 -994
  232. data/vendor/PDCurses/x11/big_icon.xbm +0 -46
  233. data/vendor/PDCurses/x11/compose.h +0 -201
  234. data/vendor/PDCurses/x11/config.guess +0 -1500
  235. data/vendor/PDCurses/x11/config.h.in +0 -100
  236. data/vendor/PDCurses/x11/config.sub +0 -1616
  237. data/vendor/PDCurses/x11/configure +0 -6700
  238. data/vendor/PDCurses/x11/configure.ac +0 -295
  239. data/vendor/PDCurses/x11/debian/changelog +0 -6
  240. data/vendor/PDCurses/x11/debian/compat +0 -1
  241. data/vendor/PDCurses/x11/debian/control +0 -11
  242. data/vendor/PDCurses/x11/debian/copyright +0 -27
  243. data/vendor/PDCurses/x11/debian/rules +0 -98
  244. data/vendor/PDCurses/x11/install-sh +0 -253
  245. data/vendor/PDCurses/x11/little_icon.xbm +0 -14
  246. data/vendor/PDCurses/x11/ncurses_cfg.h +0 -45
  247. data/vendor/PDCurses/x11/pdcclip.c +0 -173
  248. data/vendor/PDCurses/x11/pdcdisp.c +0 -85
  249. data/vendor/PDCurses/x11/pdcgetsc.c +0 -28
  250. data/vendor/PDCurses/x11/pdckbd.c +0 -104
  251. data/vendor/PDCurses/x11/pdcscrn.c +0 -258
  252. data/vendor/PDCurses/x11/pdcsetsc.c +0 -95
  253. data/vendor/PDCurses/x11/pdcutil.c +0 -52
  254. data/vendor/PDCurses/x11/pdcx11.c +0 -316
  255. data/vendor/PDCurses/x11/pdcx11.h +0 -191
  256. data/vendor/PDCurses/x11/sb.c +0 -155
  257. data/vendor/PDCurses/x11/x11.c +0 -3686
  258. data/vendor/PDCurses/x11/xcurses-config.in +0 -81
@@ -1,591 +0,0 @@
1
- /* Public Domain Curses */
2
-
3
- #include <curspriv.h>
4
-
5
- /*man-start**************************************************************
6
-
7
- slk
8
- ---
9
-
10
- ### Synopsis
11
-
12
- int slk_init(int fmt);
13
- int slk_set(int labnum, const char *label, int justify);
14
- int slk_refresh(void);
15
- int slk_noutrefresh(void);
16
- char *slk_label(int labnum);
17
- int slk_clear(void);
18
- int slk_restore(void);
19
- int slk_touch(void);
20
- int slk_attron(const chtype attrs);
21
- int slk_attr_on(const attr_t attrs, void *opts);
22
- int slk_attrset(const chtype attrs);
23
- int slk_attr_set(const attr_t attrs, short color_pair, void *opts);
24
- int slk_attroff(const chtype attrs);
25
- int slk_attr_off(const attr_t attrs, void *opts);
26
- int slk_color(short color_pair);
27
-
28
- int slk_wset(int labnum, const wchar_t *label, int justify);
29
-
30
- int PDC_mouse_in_slk(int y, int x);
31
- void PDC_slk_free(void);
32
- void PDC_slk_initialize(void);
33
-
34
- wchar_t *slk_wlabel(int labnum)
35
-
36
- ### Description
37
-
38
- These functions manipulate a window that contain Soft Label Keys
39
- (SLK). To use the SLK functions, a call to slk_init() must be
40
- made BEFORE initscr() or newterm(). slk_init() removes 1 or 2
41
- lines from the useable screen, depending on the format selected.
42
-
43
- The line(s) removed from the screen are used as a separate
44
- window, in which SLKs are displayed.
45
-
46
- slk_init() requires a single parameter which describes the
47
- format of the SLKs as follows:
48
-
49
- 0 3-2-3 format
50
- 1 4-4 format
51
- 2 4-4-4 format (ncurses extension)
52
- 3 4-4-4 format with index line (ncurses extension)
53
- 2 lines used
54
- 55 5-5 format (pdcurses format)
55
-
56
- In PDCurses, one can alternatively set fmt as a series of hex
57
- digits specifying the format. For example, 0x414 would result
58
- in 4-1-4 format; 0x21b3 would result in 2-1-11-3 format; and
59
- so on. Also, negating fmt results in the index line being added.
60
-
61
- Also, in PDCurses, one can call slk_init() at any time
62
- _after_ initscr(), to reset the label format. If you do this,
63
- you'll need to reset the label text and call slk_refresh(). And
64
- you can't toggle the index line. (Doing so would add/remove a line
65
- from the useable screen, which would be hard to handle correctly.)
66
-
67
- slk_refresh(), slk_noutrefresh() and slk_touch() are analogous
68
- to refresh(), noutrefresh() and touch().
69
-
70
- ### Return Value
71
-
72
- All functions return OK on success and ERR on error.
73
-
74
- ### Portability
75
- X/Open BSD SYS V
76
- slk_init Y - Y
77
- slk_set Y - Y
78
- slk_refresh Y - Y
79
- slk_noutrefresh Y - Y
80
- slk_label Y - Y
81
- slk_clear Y - Y
82
- slk_restore Y - Y
83
- slk_touch Y - Y
84
- slk_attron Y - Y
85
- slk_attrset Y - Y
86
- slk_attroff Y - Y
87
- slk_attr_on Y
88
- slk_attr_set Y
89
- slk_attr_off Y
90
- slk_wset Y
91
- PDC_mouse_in_slk - - -
92
- PDC_slk_free - - -
93
- PDC_slk_initialize - - -
94
- slk_wlabel - - -
95
-
96
- **man-end****************************************************************/
97
-
98
- #include <stdlib.h>
99
-
100
- static int label_length = 0;
101
- static int n_labels = 0;
102
- static int label_fmt = 0;
103
- static int label_line = 0;
104
- static bool hidden = FALSE;
105
-
106
- #define MAX_LABEL_LENGTH 32
107
-
108
- static struct SLK {
109
- chtype label[MAX_LABEL_LENGTH];
110
- int len;
111
- int format;
112
- int start_col;
113
- } *slk = (struct SLK *)NULL;
114
-
115
- /* See comments above on this function. */
116
-
117
- int slk_init(int fmt)
118
- {
119
- int i;
120
-
121
- PDC_LOG(("slk_init() - called\n"));
122
-
123
- switch (fmt)
124
- {
125
- case 0: /* 3 - 2 - 3 */
126
- label_fmt = 0x323;
127
- break;
128
-
129
- case 1: /* 4 - 4 */
130
- label_fmt = 0x44;
131
- break;
132
-
133
- case 2: /* 4 4 4 */
134
- label_fmt = 0x444;
135
- break;
136
-
137
- case 3: /* 4 4 4 with index */
138
- label_fmt = -0x444;
139
- break;
140
-
141
- case 55: /* 5 - 5 */
142
- label_fmt = 0x55;
143
- break;
144
-
145
- default:
146
- label_fmt = fmt;
147
- break;
148
- }
149
-
150
- n_labels = 0;
151
- for( i = abs( label_fmt); i; i /= 16)
152
- n_labels += i % 16;
153
-
154
- PDC_LOG(("slk_init: fmt %d, %d labels, %p\n",
155
- fmt, n_labels, slk));
156
- if( slk)
157
- free( slk);
158
- slk = calloc(n_labels, sizeof(struct SLK));
159
- PDC_LOG(( "New slk: %p; SP = %p\n", slk, SP));
160
-
161
- if (!slk)
162
- n_labels = 0;
163
- if( SP)
164
- {
165
- if( SP->slk_winptr)
166
- wclear( SP->slk_winptr);
167
- PDC_slk_initialize( );
168
- }
169
-
170
- return slk ? OK : ERR;
171
- }
172
-
173
- /* draw a single button */
174
-
175
- static void _drawone(int num)
176
- {
177
- int i, col, slen;
178
-
179
- if (hidden)
180
- return;
181
-
182
- slen = slk[num].len;
183
-
184
- switch (slk[num].format)
185
- {
186
- case 0: /* LEFT */
187
- col = 0;
188
- break;
189
-
190
- case 1: /* CENTER */
191
- col = (label_length - slen) / 2;
192
-
193
- if (col + slen > label_length)
194
- --col;
195
- break;
196
-
197
- default: /* RIGHT */
198
- col = label_length - slen;
199
- }
200
-
201
- if( col < 0) /* Ensure start of label is visible */
202
- col = 0;
203
- wmove(SP->slk_winptr, label_line, slk[num].start_col);
204
-
205
- for (i = 0; i < label_length; ++i)
206
- waddch(SP->slk_winptr, (i >= col && i < (col + slen)) ?
207
- slk[num].label[i - col] : ' ');
208
- }
209
-
210
- /* redraw each button */
211
-
212
- static void _redraw(void)
213
- {
214
- int i;
215
-
216
- if( !hidden)
217
- {
218
- for (i = 0; i < n_labels; ++i)
219
- _drawone(i);
220
- if (label_fmt < 0)
221
- {
222
- const chtype save_attr = SP->slk_winptr->_attrs;
223
-
224
- wattrset(SP->slk_winptr, A_NORMAL);
225
- wmove(SP->slk_winptr, 0, 0);
226
- whline(SP->slk_winptr, 0, COLS);
227
-
228
- for (i = 0; i < n_labels; i++)
229
- mvwprintw(SP->slk_winptr, 0, slk[i].start_col, "F%d", i + 1);
230
-
231
- SP->slk_winptr->_attrs = save_attr;
232
- }
233
- }
234
- }
235
-
236
- /* slk_set() Used to set a slk label to a string.
237
-
238
- labnum = 1 - 8 (or 10) (number of the label)
239
- label = string (8 or 7 bytes total), or NULL
240
- justify = 0 : left, 1 : center, 2 : right */
241
-
242
- int slk_set(int labnum, const char *label, int justify)
243
- {
244
- #ifdef PDC_WIDE
245
- wchar_t wlabel[MAX_LABEL_LENGTH];
246
-
247
- PDC_mbstowcs(wlabel, label, MAX_LABEL_LENGTH - 1);
248
- return slk_wset(labnum, wlabel, justify);
249
- #else
250
- PDC_LOG(("slk_set() - called\n"));
251
-
252
- if (labnum < 1 || labnum > n_labels || justify < 0 || justify > 2)
253
- return ERR;
254
-
255
- labnum--;
256
-
257
- if (!label || !(*label))
258
- {
259
- /* Clear the label */
260
-
261
- *slk[labnum].label = 0;
262
- slk[labnum].format = 0;
263
- slk[labnum].len = 0;
264
- }
265
- else
266
- {
267
- int i;
268
-
269
- /* Skip leading spaces */
270
-
271
- while( *label == ' ')
272
- label++;
273
-
274
- /* Copy it */
275
-
276
- for (i = 0; label[i] && i < MAX_LABEL_LENGTH - 1; i++)
277
- slk[labnum].label[i] = label[i];
278
-
279
- /* Drop trailing spaces */
280
-
281
- while( i && label[i - 1] == ' ')
282
- i--;
283
-
284
- slk[labnum].label[i] = 0;
285
- slk[labnum].format = justify;
286
- slk[labnum].len = i;
287
- }
288
-
289
- _drawone(labnum);
290
-
291
- return OK;
292
- #endif
293
- }
294
-
295
- int slk_refresh(void)
296
- {
297
- PDC_LOG(("slk_refresh() - called\n"));
298
-
299
- return (slk_noutrefresh() == ERR) ? ERR : doupdate();
300
- }
301
-
302
- int slk_noutrefresh(void)
303
- {
304
- PDC_LOG(("slk_noutrefresh() - called\n"));
305
-
306
- return wnoutrefresh(SP->slk_winptr);
307
- }
308
-
309
- char *slk_label(int labnum)
310
- {
311
- static char temp[MAX_LABEL_LENGTH + 1];
312
- #ifdef PDC_WIDE
313
- wchar_t *wtemp = slk_wlabel(labnum);
314
-
315
- PDC_wcstombs(temp, wtemp, MAX_LABEL_LENGTH);
316
- #else
317
- chtype *p;
318
- int i;
319
-
320
- PDC_LOG(("slk_label() - called\n"));
321
-
322
- if (labnum < 1 || labnum > n_labels)
323
- return (char *)0;
324
-
325
- for (i = 0, p = slk[labnum - 1].label; *p; i++)
326
- temp[i] = (char)*p++; /* BJG */
327
-
328
- temp[i] = '\0';
329
- #endif
330
- return temp;
331
- }
332
-
333
- int slk_clear(void)
334
- {
335
- PDC_LOG(("slk_clear() - called\n"));
336
-
337
- hidden = TRUE;
338
- werase(SP->slk_winptr);
339
- return wrefresh(SP->slk_winptr);
340
- }
341
-
342
- int slk_restore(void)
343
- {
344
- PDC_LOG(("slk_restore() - called\n"));
345
-
346
- hidden = FALSE;
347
- _redraw();
348
- return wrefresh(SP->slk_winptr);
349
- }
350
-
351
- int slk_touch(void)
352
- {
353
- PDC_LOG(("slk_touch() - called\n"));
354
-
355
- return touchwin(SP->slk_winptr);
356
- }
357
-
358
- int slk_attron(const chtype attrs)
359
- {
360
- int rc;
361
-
362
- PDC_LOG(("slk_attron() - called\n"));
363
-
364
- rc = wattron(SP->slk_winptr, attrs);
365
- _redraw();
366
-
367
- return rc;
368
- }
369
-
370
- int slk_attr_on(const attr_t attrs, void *opts)
371
- {
372
- PDC_LOG(("slk_attr_on() - called\n"));
373
-
374
- return slk_attron(attrs);
375
- }
376
-
377
- int slk_attroff(const chtype attrs)
378
- {
379
- int rc;
380
-
381
- PDC_LOG(("slk_attroff() - called\n"));
382
-
383
- rc = wattroff(SP->slk_winptr, attrs);
384
- _redraw();
385
-
386
- return rc;
387
- }
388
-
389
- int slk_attr_off(const attr_t attrs, void *opts)
390
- {
391
- PDC_LOG(("slk_attr_off() - called\n"));
392
-
393
- return slk_attroff(attrs);
394
- }
395
-
396
- int slk_attrset(const chtype attrs)
397
- {
398
- int rc;
399
-
400
- PDC_LOG(("slk_attrset() - called\n"));
401
-
402
- rc = wattrset(SP->slk_winptr, attrs);
403
- _redraw();
404
-
405
- return rc;
406
- }
407
-
408
- int slk_color(short color_pair)
409
- {
410
- int rc;
411
-
412
- PDC_LOG(("slk_color() - called\n"));
413
-
414
- rc = wcolor_set(SP->slk_winptr, color_pair, NULL);
415
- _redraw();
416
-
417
- return rc;
418
- }
419
-
420
- int slk_attr_set(const attr_t attrs, short color_pair, void *opts)
421
- {
422
- PDC_LOG(("slk_attr_set() - called\n"));
423
-
424
- return slk_attrset(attrs | COLOR_PAIR(color_pair));
425
- }
426
-
427
- static void _slk_calc(void)
428
- {
429
- int i, j, idx, remaining_space;
430
- int n_groups = 0, group_size[10];
431
-
432
- label_length = COLS / n_labels;
433
- if (label_length > MAX_LABEL_LENGTH)
434
- label_length = MAX_LABEL_LENGTH;
435
- remaining_space = COLS - label_length * n_labels + 1;
436
- for( i = abs( label_fmt); i; i /= 16)
437
- group_size[n_groups++] = i % 16;
438
- /* We really want at least two spaces between groups: */
439
- while( label_length > 1 && remaining_space < n_groups - 1)
440
- {
441
- label_length--;
442
- remaining_space += n_labels;
443
- }
444
-
445
- for( i = idx = 0; i < n_groups; i++)
446
- for( j = 0; j < group_size[i]; j++, idx++)
447
- slk[idx].start_col = label_length * idx
448
- + (i ? (i * remaining_space) / (n_groups - 1) : 0);
449
-
450
- if( label_length)
451
- --label_length;
452
-
453
- /* make sure labels are all in window */
454
-
455
- _redraw();
456
- }
457
-
458
- void PDC_slk_initialize(void)
459
- {
460
- if (slk)
461
- {
462
- if( label_fmt < 0)
463
- {
464
- SP->slklines = 2;
465
- label_line = 1;
466
- }
467
- else
468
- SP->slklines = 1;
469
-
470
- if (!SP->slk_winptr)
471
- {
472
- if ( !(SP->slk_winptr = newwin(SP->slklines, COLS,
473
- LINES - SP->slklines, 0)) )
474
- return;
475
-
476
- wattrset(SP->slk_winptr, A_REVERSE);
477
- }
478
-
479
- _slk_calc();
480
-
481
- touchwin(SP->slk_winptr);
482
- }
483
- }
484
-
485
- void PDC_slk_free(void)
486
- {
487
- if (slk)
488
- {
489
- if (SP->slk_winptr)
490
- {
491
- delwin(SP->slk_winptr);
492
- SP->slk_winptr = (WINDOW *)NULL;
493
- }
494
-
495
- free(slk);
496
- slk = (struct SLK *)NULL;
497
-
498
- label_length = 0;
499
- n_labels = 0;
500
- label_fmt = 0;
501
- label_line = 0;
502
- hidden = FALSE;
503
- }
504
- }
505
-
506
- int PDC_mouse_in_slk(int y, int x)
507
- {
508
- int i;
509
-
510
- PDC_LOG(("PDC_mouse_in_slk() - called: y->%d x->%d\n", y, x));
511
-
512
- /* If the line on which the mouse was clicked is NOT the last line
513
- of the screen, or the SLKs are hidden, we are not interested in it. */
514
-
515
- if (!slk || hidden || !SP->slk_winptr
516
- || (y != SP->slk_winptr->_begy + label_line))
517
- return 0;
518
-
519
- for (i = 0; i < n_labels; i++)
520
- if (x >= slk[i].start_col && x < (slk[i].start_col + label_length))
521
- return i + 1;
522
-
523
- return 0;
524
- }
525
-
526
- #ifdef PDC_WIDE
527
- int slk_wset(int labnum, const wchar_t *label, int justify)
528
- {
529
- PDC_LOG(("slk_wset() - called\n"));
530
-
531
- if (labnum < 1 || labnum > n_labels || justify < 0 || justify > 2)
532
- return ERR;
533
-
534
- labnum--;
535
-
536
- if (!label || !(*label))
537
- {
538
- /* Clear the label */
539
-
540
- *slk[labnum].label = 0;
541
- slk[labnum].format = 0;
542
- slk[labnum].len = 0;
543
- }
544
- else
545
- {
546
- int i;
547
-
548
- /* Skip leading spaces */
549
-
550
- while( *label == L' ')
551
- label++;
552
-
553
- /* Copy it */
554
-
555
- for (i = 0; label[i] && i < MAX_LABEL_LENGTH - 1; i++)
556
- slk[labnum].label[i] = label[i];
557
-
558
- /* Drop trailing spaces */
559
-
560
- while( i && label[i - 1] == L' ')
561
- i--;
562
-
563
- slk[labnum].label[i] = 0;
564
- slk[labnum].format = justify;
565
- slk[labnum].len = i;
566
- }
567
-
568
- _drawone(labnum);
569
-
570
- return OK;
571
- }
572
-
573
- wchar_t *slk_wlabel(int labnum)
574
- {
575
- static wchar_t temp[MAX_LABEL_LENGTH + 1];
576
- chtype *p;
577
- int i;
578
-
579
- PDC_LOG(("slk_wlabel() - called\n"));
580
-
581
- if (labnum < 1 || labnum > n_labels)
582
- return (wchar_t *)0;
583
-
584
- for (i = 0, p = slk[labnum - 1].label; *p; i++)
585
- temp[i] = (wchar_t)*p++;
586
-
587
- temp[i] = '\0';
588
-
589
- return temp;
590
- }
591
- #endif