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,51 @@
|
|
1
|
+
# Watcom WMAKE Makefile for PDCurses library - Windows console Watcom C/C++ 10.6+
|
2
|
+
#
|
3
|
+
# Usage: wmake -f [wincon\]Makefile.wcc [DEBUG=Y] [WIDE=Y] [UTF8=Y] [target]
|
4
|
+
#
|
5
|
+
# where target can be any of:
|
6
|
+
# [all|demos|pdcurses.lib|testcurs.exe...]
|
7
|
+
|
8
|
+
!ifdef %PDCURSES_SRCDIR
|
9
|
+
PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR)
|
10
|
+
!else
|
11
|
+
PDCURSES_SRCDIR = ..
|
12
|
+
!endif
|
13
|
+
|
14
|
+
!include $(PDCURSES_SRCDIR)\version.mif
|
15
|
+
|
16
|
+
osdir = $(PDCURSES_SRCDIR)\wincon
|
17
|
+
|
18
|
+
CC = wcc386
|
19
|
+
TARGET = nt
|
20
|
+
|
21
|
+
CFLAGS = /ei /zq /wx /i=$(PDCURSES_SRCDIR)
|
22
|
+
|
23
|
+
!ifeq DEBUG Y
|
24
|
+
CFLAGS += /d2 /DPDCDEBUG
|
25
|
+
LDFLAGS = D W A op q sys $(TARGET)
|
26
|
+
!else
|
27
|
+
CFLAGS += /oneatx
|
28
|
+
LDFLAGS = op q sys $(TARGET)
|
29
|
+
!endif
|
30
|
+
|
31
|
+
!ifeq WIDE Y
|
32
|
+
CFLAGS += /DPDC_WIDE
|
33
|
+
!endif
|
34
|
+
|
35
|
+
!ifeq UTF8 Y
|
36
|
+
CFLAGS += /DPDC_FORCE_UTF8
|
37
|
+
!endif
|
38
|
+
|
39
|
+
LIBEXE = wlib /q /n /t
|
40
|
+
|
41
|
+
!include $(PDCURSES_SRCDIR)\watcom.mif
|
42
|
+
|
43
|
+
$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
|
44
|
+
$(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS)
|
45
|
+
-copy $(LIBCURSES) panel.lib
|
46
|
+
|
47
|
+
PLATFORM1 = Watcom C++ WinCon
|
48
|
+
PLATFORM2 = Open Watcom 1.6 for Windows console
|
49
|
+
ARCNAME = pdc$(VER)_wcc_w32
|
50
|
+
|
51
|
+
!include $(PDCURSES_SRCDIR)\makedist.mif
|
@@ -0,0 +1,85 @@
|
|
1
|
+
PDCurses for Win32
|
2
|
+
==================
|
3
|
+
|
4
|
+
This directory contains PDCurses source code files specific to Win32
|
5
|
+
console mode (Win95 and all subsequent forks of Windows).
|
6
|
+
|
7
|
+
Building
|
8
|
+
--------
|
9
|
+
|
10
|
+
(Note that the following is almost identical to the instructions
|
11
|
+
for the Win32a GUI flavor of PDCurses.)
|
12
|
+
|
13
|
+
- Choose the appropriate makefile for your compiler:
|
14
|
+
|
15
|
+
Makefile.bcc - Borland C++ 4.0.2+
|
16
|
+
Makefile.dmc - Digital Mars
|
17
|
+
Makefile.lcc - LCC-Win32
|
18
|
+
Makefile.mng - MinGW, Cygnus GNU Compiler
|
19
|
+
Makefile.vc - Microsoft Visual C++ 2.0+ or later & Intel(R) compiler
|
20
|
+
Makefile.wcc - Open Watcom 1.8+
|
21
|
+
|
22
|
+
- Optionally, you can build in a different directory than the platform
|
23
|
+
directory by setting PDCURSES_SRCDIR to point to the directory where
|
24
|
+
you unpacked PDCurses, and changing to your target directory:
|
25
|
+
|
26
|
+
set PDCURSES_SRCDIR=c:\pdcurses
|
27
|
+
|
28
|
+
This won't work with the LCC or Digital Mars makefiles, nor will the
|
29
|
+
options described below.
|
30
|
+
|
31
|
+
- Build it:
|
32
|
+
|
33
|
+
make -f makefilename
|
34
|
+
|
35
|
+
(For Watcom, use "wmake" instead of "make"; for MSVC, "nmake".) You'll
|
36
|
+
get the libraries (pdcurses.lib or .a, depending on your compiler; and
|
37
|
+
panel.lib or .a), the demos (*.exe), and a lot of object files. Note
|
38
|
+
that the panel library is just a copy of the main library, provided
|
39
|
+
for convenience; both panel and curses functions are in the main
|
40
|
+
library.
|
41
|
+
|
42
|
+
You can also give the optional parameter "WIDE=Y", to build the
|
43
|
+
library with wide-character (Unicode) support:
|
44
|
+
|
45
|
+
make -f Makefile.mng WIDE=Y
|
46
|
+
|
47
|
+
When built this way, the library is not compatible with Windows 9x,
|
48
|
+
unless you also link with the Microsoft Layer for Unicode (not
|
49
|
+
tested).
|
50
|
+
|
51
|
+
For the Intel(R) compiler, use Makefile.vc and add ICC=Y.
|
52
|
+
|
53
|
+
By default, Makefile.vc results in 64-bit code for both VC and Intel(R).
|
54
|
+
Add IX86=Y to generate 32-bit code. (Other builds are 32-bit only.)
|
55
|
+
|
56
|
+
Another option, "UTF8=Y", makes PDCurses ignore the system locale, and
|
57
|
+
treat all narrow-character strings as UTF-8. This option has no effect
|
58
|
+
unless WIDE=Y is also set. Use it to get around the poor support for
|
59
|
+
UTF-8 in the Win32 console:
|
60
|
+
|
61
|
+
make -f Makefile.mng WIDE=Y UTF8=Y
|
62
|
+
|
63
|
+
You can also use the optional parameter "DLL=Y" with Visual C++,
|
64
|
+
MinGW or Cygwin, to build the library as a DLL:
|
65
|
+
|
66
|
+
nmake -f Makefile.vc WIDE=Y DLL=Y
|
67
|
+
|
68
|
+
When you build the library as a Windows DLL, you must always define
|
69
|
+
PDC_DLL_BUILD when linking against it. (Or, if you only want to use
|
70
|
+
the DLL, you could add this definition to your curses.h.)
|
71
|
+
|
72
|
+
If cross-compiling from Linux, add the parameter `_w64=1` to get
|
73
|
+
64-bit code (default will be 32-bit).
|
74
|
+
|
75
|
+
make -f Makefile.mng _w64=1 [WIDE=Y UTF8=Y DLL=Y]
|
76
|
+
|
77
|
+
Distribution Status
|
78
|
+
-------------------
|
79
|
+
|
80
|
+
The files in this directory are released to the Public Domain.
|
81
|
+
|
82
|
+
Acknowledgements
|
83
|
+
----------------
|
84
|
+
|
85
|
+
Generic Win32 port was provided by Chris Szurgot <szurgot@itribe.net>
|
@@ -0,0 +1,174 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include "pdcwin.h"
|
4
|
+
|
5
|
+
/*man-start**************************************************************
|
6
|
+
|
7
|
+
clipboard
|
8
|
+
---------
|
9
|
+
|
10
|
+
### Synopsis
|
11
|
+
|
12
|
+
int PDC_getclipboard(char **contents, long *length);
|
13
|
+
int PDC_setclipboard(const char *contents, long length);
|
14
|
+
int PDC_freeclipboard(char *contents);
|
15
|
+
int PDC_clearclipboard(void);
|
16
|
+
|
17
|
+
### Description
|
18
|
+
|
19
|
+
PDC_getclipboard() gets the textual contents of the system's
|
20
|
+
clipboard. This function returns the contents of the clipboard
|
21
|
+
in the contents argument. It is the responsibility of the
|
22
|
+
caller to free the memory returned, via PDC_freeclipboard().
|
23
|
+
The length of the clipboard contents is returned in the length
|
24
|
+
argument.
|
25
|
+
|
26
|
+
PDC_setclipboard copies the supplied text into the system's
|
27
|
+
clipboard, emptying the clipboard prior to the copy.
|
28
|
+
|
29
|
+
PDC_clearclipboard() clears the internal clipboard.
|
30
|
+
|
31
|
+
### Return Values
|
32
|
+
|
33
|
+
indicator of success/failure of call.
|
34
|
+
PDC_CLIP_SUCCESS the call was successful
|
35
|
+
PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
|
36
|
+
the clipboard contents
|
37
|
+
PDC_CLIP_EMPTY the clipboard contains no text
|
38
|
+
PDC_CLIP_ACCESS_ERROR no clipboard support
|
39
|
+
|
40
|
+
### Portability
|
41
|
+
X/Open BSD SYS V
|
42
|
+
PDC_getclipboard - - -
|
43
|
+
PDC_setclipboard - - -
|
44
|
+
PDC_freeclipboard - - -
|
45
|
+
PDC_clearclipboard - - -
|
46
|
+
|
47
|
+
**man-end****************************************************************/
|
48
|
+
|
49
|
+
#ifdef PDC_WIDE
|
50
|
+
# define PDC_TEXT CF_UNICODETEXT
|
51
|
+
#else
|
52
|
+
# define PDC_TEXT CF_OEMTEXT
|
53
|
+
#endif
|
54
|
+
|
55
|
+
int PDC_getclipboard_handle( HANDLE *handle)
|
56
|
+
{
|
57
|
+
PDC_LOG(("PDC_getclipboard() - called\n"));
|
58
|
+
|
59
|
+
if (!OpenClipboard(NULL))
|
60
|
+
{
|
61
|
+
return PDC_CLIP_ACCESS_ERROR;
|
62
|
+
}
|
63
|
+
|
64
|
+
if ((*handle = GetClipboardData(PDC_TEXT)) == NULL)
|
65
|
+
{
|
66
|
+
CloseClipboard();
|
67
|
+
return PDC_CLIP_EMPTY;
|
68
|
+
}
|
69
|
+
|
70
|
+
return PDC_CLIP_SUCCESS;
|
71
|
+
}
|
72
|
+
|
73
|
+
int PDC_getclipboard(char **contents, long *length)
|
74
|
+
{
|
75
|
+
HANDLE handle;
|
76
|
+
int rval = PDC_getclipboard_handle( &handle);
|
77
|
+
|
78
|
+
if( rval == PDC_CLIP_SUCCESS)
|
79
|
+
{
|
80
|
+
void *tptr = GlobalLock( handle);
|
81
|
+
|
82
|
+
if( tptr)
|
83
|
+
{
|
84
|
+
#ifdef PDC_WIDE
|
85
|
+
size_t len = wcslen((wchar_t *)tptr) * 3;
|
86
|
+
#else
|
87
|
+
size_t len = strlen( tptr);
|
88
|
+
#endif
|
89
|
+
|
90
|
+
*contents = (char *)GlobalAlloc( GMEM_FIXED, len + 1);
|
91
|
+
|
92
|
+
if( !*contents)
|
93
|
+
rval = PDC_CLIP_MEMORY_ERROR;
|
94
|
+
else
|
95
|
+
{
|
96
|
+
#ifdef PDC_WIDE
|
97
|
+
len = PDC_wcstombs( (char *)*contents, tptr, len);
|
98
|
+
#else
|
99
|
+
strcpy((char *)*contents, tptr);
|
100
|
+
#endif
|
101
|
+
}
|
102
|
+
*length = (long)len;
|
103
|
+
GlobalUnlock( handle);
|
104
|
+
}
|
105
|
+
else
|
106
|
+
rval = PDC_CLIP_MEMORY_ERROR;
|
107
|
+
CloseClipboard();
|
108
|
+
}
|
109
|
+
return rval;
|
110
|
+
}
|
111
|
+
|
112
|
+
int PDC_setclipboard_raw( const char *contents, long length,
|
113
|
+
const bool translate_multibyte_to_wide_char)
|
114
|
+
{
|
115
|
+
HGLOBAL handle;
|
116
|
+
LPTSTR buff;
|
117
|
+
|
118
|
+
PDC_LOG(("PDC_setclipboard() - called\n"));
|
119
|
+
|
120
|
+
if (!OpenClipboard(NULL))
|
121
|
+
return PDC_CLIP_ACCESS_ERROR;
|
122
|
+
|
123
|
+
handle = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE,
|
124
|
+
(length + 1) * sizeof(TCHAR));
|
125
|
+
|
126
|
+
if (!handle)
|
127
|
+
return PDC_CLIP_MEMORY_ERROR;
|
128
|
+
|
129
|
+
buff = GlobalLock(handle);
|
130
|
+
|
131
|
+
#ifdef PDC_WIDE
|
132
|
+
if( translate_multibyte_to_wide_char)
|
133
|
+
PDC_mbstowcs((wchar_t *)buff, contents, length);
|
134
|
+
else
|
135
|
+
memcpy((char *)buff, contents, (length + 1) * sizeof( wchar_t));
|
136
|
+
#else
|
137
|
+
memcpy((char *)buff, contents, length);
|
138
|
+
buff[length] = 0; /* ensure null termination */
|
139
|
+
#endif
|
140
|
+
GlobalUnlock(handle);
|
141
|
+
EmptyClipboard();
|
142
|
+
|
143
|
+
if( !SetClipboardData(PDC_TEXT, handle))
|
144
|
+
{
|
145
|
+
GlobalFree(handle);
|
146
|
+
return PDC_CLIP_ACCESS_ERROR;
|
147
|
+
}
|
148
|
+
|
149
|
+
CloseClipboard();
|
150
|
+
|
151
|
+
return PDC_CLIP_SUCCESS;
|
152
|
+
}
|
153
|
+
|
154
|
+
int PDC_setclipboard(const char *contents, long length)
|
155
|
+
{
|
156
|
+
return( PDC_setclipboard_raw( contents, length, TRUE));
|
157
|
+
}
|
158
|
+
|
159
|
+
int PDC_freeclipboard(char *contents)
|
160
|
+
{
|
161
|
+
PDC_LOG(("PDC_freeclipboard() - called\n"));
|
162
|
+
|
163
|
+
GlobalFree(contents);
|
164
|
+
return PDC_CLIP_SUCCESS;
|
165
|
+
}
|
166
|
+
|
167
|
+
int PDC_clearclipboard(void)
|
168
|
+
{
|
169
|
+
PDC_LOG(("PDC_clearclipboard() - called\n"));
|
170
|
+
|
171
|
+
EmptyClipboard();
|
172
|
+
|
173
|
+
return PDC_CLIP_SUCCESS;
|
174
|
+
}
|
@@ -0,0 +1,143 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include "pdcwin.h"
|
4
|
+
|
5
|
+
#include <stdlib.h>
|
6
|
+
#include <string.h>
|
7
|
+
|
8
|
+
#ifdef CHTYPE_LONG
|
9
|
+
|
10
|
+
#ifdef PDC_WIDE
|
11
|
+
#define USE_UNICODE_ACS_CHARS 1
|
12
|
+
#else
|
13
|
+
#define USE_UNICODE_ACS_CHARS 0
|
14
|
+
#endif
|
15
|
+
|
16
|
+
#include "acs_defs.h"
|
17
|
+
|
18
|
+
#endif
|
19
|
+
|
20
|
+
/* position hardware cursor at (y, x) */
|
21
|
+
|
22
|
+
void PDC_gotoyx(int row, int col)
|
23
|
+
{
|
24
|
+
COORD coord;
|
25
|
+
|
26
|
+
PDC_LOG(("PDC_gotoyx() - called: row %d col %d from row %d col %d\n",
|
27
|
+
row, col, SP->cursrow, SP->curscol));
|
28
|
+
|
29
|
+
coord.X = col;
|
30
|
+
coord.Y = row;
|
31
|
+
|
32
|
+
SetConsoleCursorPosition(pdc_con_out, coord);
|
33
|
+
}
|
34
|
+
|
35
|
+
/* update the given physical line to look like the corresponding line in
|
36
|
+
curscr */
|
37
|
+
|
38
|
+
/* NOTE: the original indexing into pdc_atrtab[] relied on three or five
|
39
|
+
attribute bits in 'chtype' being adjacent to the color bits. Such is
|
40
|
+
not the case for 64-bit chtypes (CHTYPE_LONG == 2), so we have to do
|
41
|
+
additional bit-fiddling for that situation. Code is similar in Win32
|
42
|
+
and DOS flavors. (BJG) */
|
43
|
+
#define MAX_UNICODE 0x10ffff
|
44
|
+
#define DUMMY_CHAR_NEXT_TO_FULLWIDTH (MAX_UNICODE + 1)
|
45
|
+
|
46
|
+
/* see 'addch.c' for an explanation of how combining chars are handled. */
|
47
|
+
|
48
|
+
#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 && defined( PDC_WIDE)
|
49
|
+
#define USING_COMBINING_CHARACTER_SCHEME
|
50
|
+
int PDC_expand_combined_characters( const cchar_t c, cchar_t *added); /* addch.c */
|
51
|
+
#endif
|
52
|
+
|
53
|
+
#define PDC_NEW_WINCON_WORKAROUND 1
|
54
|
+
|
55
|
+
void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
|
56
|
+
{
|
57
|
+
CHAR_INFO ci[512];
|
58
|
+
int src, dst;
|
59
|
+
COORD bufSize, bufPos;
|
60
|
+
SMALL_RECT sr;
|
61
|
+
|
62
|
+
PDC_LOG(("PDC_transform_line() - called: lineno=%d\n", lineno));
|
63
|
+
|
64
|
+
bufPos.X = bufPos.Y = 0;
|
65
|
+
|
66
|
+
sr.Top = lineno;
|
67
|
+
sr.Bottom = lineno;
|
68
|
+
sr.Left = x;
|
69
|
+
sr.Right = x + len - 1;
|
70
|
+
|
71
|
+
for (src = dst = 0; src < len; src++)
|
72
|
+
if( (srcp[src] & A_CHARTEXT) != DUMMY_CHAR_NEXT_TO_FULLWIDTH)
|
73
|
+
{
|
74
|
+
const chtype ch = srcp[src];
|
75
|
+
chtype char_out = ch & A_CHARTEXT;
|
76
|
+
|
77
|
+
#if defined( CHTYPE_LONG) && (CHTYPE_LONG >= 2)
|
78
|
+
ci[dst].Attributes = pdc_atrtab[((ch >> PDC_ATTR_SHIFT) & 0x1f)
|
79
|
+
| (((ch >> PDC_COLOR_SHIFT) & 0xff) << 5)];
|
80
|
+
#else
|
81
|
+
ci[dst].Attributes = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
|
82
|
+
#endif
|
83
|
+
|
84
|
+
#ifdef CHTYPE_LONG
|
85
|
+
if (ch & A_ALTCHARSET && !(ch & 0xff80))
|
86
|
+
char_out = acs_map[ch & 0x7f];
|
87
|
+
|
88
|
+
#ifdef USING_COMBINING_CHARACTER_SCHEME
|
89
|
+
/* We can't actually display combining characters in cmd.exe. So
|
90
|
+
show the 'base' character and throw away the modifying marks. */
|
91
|
+
if( char_out > MAX_UNICODE)
|
92
|
+
{
|
93
|
+
cchar_t added;
|
94
|
+
int n_combined = 0;
|
95
|
+
|
96
|
+
while( (char_out = PDC_expand_combined_characters( char_out,
|
97
|
+
&added)) > MAX_UNICODE)
|
98
|
+
{
|
99
|
+
n_combined++;
|
100
|
+
}
|
101
|
+
}
|
102
|
+
#endif
|
103
|
+
if( char_out > 0xffff) /* SMP chars: use surrogates */
|
104
|
+
{
|
105
|
+
ci[dst].Char.UnicodeChar = (WCHAR)( 0xd800 | (char_out>>10));
|
106
|
+
ci[dst + 1] = ci[dst];
|
107
|
+
dst++;
|
108
|
+
char_out = (chtype)( 0xdc00 | (char_out & 0x3ff));
|
109
|
+
}
|
110
|
+
#endif
|
111
|
+
ci[dst].Char.UnicodeChar = (WCHAR)char_out;
|
112
|
+
|
113
|
+
#ifdef PDC_NEW_WINCON_WORKAROUND
|
114
|
+
sr.Left = x + src;
|
115
|
+
if( src < len - 1 &&
|
116
|
+
(srcp[src + 1] & A_CHARTEXT) == DUMMY_CHAR_NEXT_TO_FULLWIDTH)
|
117
|
+
{
|
118
|
+
/* necessary to erase garbage */
|
119
|
+
ci[dst + 1].Char.UnicodeChar = (WCHAR)' ';
|
120
|
+
ci[dst + 1].Attributes = ci[dst].Attributes;
|
121
|
+
bufSize.X = 2;
|
122
|
+
bufSize.Y = 1;
|
123
|
+
sr.Right = sr.Left + 2;
|
124
|
+
}
|
125
|
+
else
|
126
|
+
{
|
127
|
+
bufSize.X = 1;
|
128
|
+
bufSize.Y = 1;
|
129
|
+
sr.Right = sr.Left + 1;
|
130
|
+
}
|
131
|
+
WriteConsoleOutput(pdc_con_out, ci, bufSize, bufPos, &sr);
|
132
|
+
#else
|
133
|
+
dst++;
|
134
|
+
#endif
|
135
|
+
}
|
136
|
+
|
137
|
+
#ifndef PDC_NEW_WINCON_WORKAROUND
|
138
|
+
bufSize.X = dst;
|
139
|
+
bufSize.Y = 1;
|
140
|
+
|
141
|
+
WriteConsoleOutput(pdc_con_out, ci, bufSize, bufPos, &sr);
|
142
|
+
#endif
|
143
|
+
}
|