This commit was manufactured by cvs2svn to create tag 'WX_2_2_8'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/WX_2_2_8@12118 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
17
.cvsignore
@@ -21,10 +21,23 @@ linux-gnu.system.cache
|
|||||||
*.d
|
*.d
|
||||||
*.swp
|
*.swp
|
||||||
*.swo
|
*.swo
|
||||||
|
*.swq
|
||||||
Release
|
Release
|
||||||
Debug
|
Debug
|
||||||
ReleaseDLL
|
ReleaseDll
|
||||||
DebugDLL
|
DebugDll
|
||||||
|
ReleaseUnicode
|
||||||
|
DebugUnicode
|
||||||
|
ReleaseUnicodeDll
|
||||||
|
DebugUnicodeDll
|
||||||
|
BaseRelease
|
||||||
|
BaseDebug
|
||||||
|
BaseReleaseDll
|
||||||
|
BaseDebugDll
|
||||||
|
BaseReleaseUnicode
|
||||||
|
BaseDebugUnicode
|
||||||
|
BaseReleaseUnicodeDll
|
||||||
|
BaseDebugUnicodeDll
|
||||||
robert
|
robert
|
||||||
stamp-h.in
|
stamp-h.in
|
||||||
Makefile
|
Makefile
|
||||||
|
|||||||
78
BuildCVS.txt
@@ -2,6 +2,9 @@
|
|||||||
How to build the sources from CVS
|
How to build the sources from CVS
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Please use the install.txt files in docs/gtk, docs/msw, docs/motif, docs/mac
|
||||||
|
etc. alongside these instructions.
|
||||||
|
|
||||||
I) Windows using plain makefiles
|
I) Windows using plain makefiles
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
@@ -16,45 +19,30 @@ varaibles and PATH entries.
|
|||||||
Continue with item c) below.
|
Continue with item c) below.
|
||||||
|
|
||||||
|
|
||||||
b) If using the GNU MinGW32 or GNU CygWin32 compilers
|
b) If using the GNU Mingw32 or GNU Cygwin32 compilers
|
||||||
|
|
||||||
You'll need the compiler itself which is available from
|
You can get Mingw32 from http://www.mingw.org
|
||||||
|
|
||||||
http://www.cygwin.com
|
Cygwin32 is available at http://www.cygwin.com
|
||||||
|
|
||||||
When using MingW32 you'll need GNU make which is a part
|
The makefile might have small problems with Cygwin's tools
|
||||||
of the CygWin32 toolchain and is also available as a stand
|
so it is recommended to use Mingw32 and its toolchain instead
|
||||||
alone port without the infamous Cygwin.dll from
|
if possible.
|
||||||
|
|
||||||
http://agnes.dida.physik.uni-essen.de/~janjaap/mingw32
|
|
||||||
|
|
||||||
The makefile has small problems with Cygwin<69>s tools
|
|
||||||
so it is recommended not to use these (but MingGW32
|
|
||||||
and its make.exe).
|
|
||||||
|
|
||||||
-> Set your path so that it includes the directory
|
-> Set your path so that it includes the directory
|
||||||
where your compiler and tools reside
|
where your compiler and tools reside
|
||||||
|
|
||||||
b-2) Using Mingw32 with gcc-2.95 and Anders Norlander's
|
-> If your are using an old Mingw32 version (gcc-2.95 or older),
|
||||||
Win32 headers
|
you might need to fix some headers with the patches contained
|
||||||
|
in the wxWin\Mingw32-gcc295.patches file. PLEASE APPLY THESE
|
||||||
Using the newer gcc-2.95/Noralander header combination
|
PATCHES BY HAND! There are apparently a few different versions
|
||||||
will allow you to compile more of the MSW code, such
|
of the headers floating around. Note that these patches are
|
||||||
as OLE and Drag-n-Drop.
|
not needed if you are using Mingw32 gcc-2.95.2 or newer.
|
||||||
|
|
||||||
Instructions are similar to those for Regular Mingw32 except
|
-> Edit wx/src/makeg95.env and set the MINGW32 variable at the top of
|
||||||
|
the file to either 1 (you have Mingw32) or 0 (you have Cygwin32).
|
||||||
->Get the compiler from
|
If using MINGW32, also set the MINGW32VERSION variable
|
||||||
ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/gcc-2.95/
|
appropiately.
|
||||||
|
|
||||||
->patch the gcc headers with info in wxWin\Mingw32-gcc295.patches.
|
|
||||||
PLEASE APPLY THESE PATCHES BY HAND! There are apparently a few
|
|
||||||
different versions of the headers floating around.
|
|
||||||
|
|
||||||
->Edit wx/src/makeg95.env and set the MINGW32 variable at the top of
|
|
||||||
the file to either 1 (you have Mingw32) or 0 (you have Cygwin32).
|
|
||||||
If using MINGW32, also set the MINGW32VERSION variable
|
|
||||||
appropriately.
|
|
||||||
|
|
||||||
|
|
||||||
c) Build instructions
|
c) Build instructions
|
||||||
@@ -64,9 +52,9 @@ c) Build instructions
|
|||||||
-> Copy c:\wxWin\include\wx\msw\setup0.h
|
-> Copy c:\wxWin\include\wx\msw\setup0.h
|
||||||
to c:\wxWin\include\wx\msw\setup.h
|
to c:\wxWin\include\wx\msw\setup.h
|
||||||
-> Edit c:\wxWin\include\wx\msw\setup.h so that
|
-> Edit c:\wxWin\include\wx\msw\setup.h so that
|
||||||
most features are enabled (i.e. defined to 1) with
|
most features are enabled (i.e. defined to 1), for example:
|
||||||
#define wxUSE_ODBC 0
|
#define wxUSE_ODBC 0
|
||||||
#define wxUSE_SOCKETS 0
|
#define wxUSE_SOCKETS 1
|
||||||
#define wxUSE_HTML 1
|
#define wxUSE_HTML 1
|
||||||
#define wxUSE_THREADS 1
|
#define wxUSE_THREADS 1
|
||||||
#define wxUSE_FS_INET 0
|
#define wxUSE_FS_INET 0
|
||||||
@@ -77,14 +65,12 @@ c) Build instructions
|
|||||||
#define wxUSE_LIBJPEG 1
|
#define wxUSE_LIBJPEG 1
|
||||||
#define wxUSE_LIBPNG 1
|
#define wxUSE_LIBPNG 1
|
||||||
|
|
||||||
and iostreams ares disabled with
|
and std iostreams are disabled with
|
||||||
#define wxUSE_STD_IOSTREAM 0
|
#define wxUSE_STD_IOSTREAM 0
|
||||||
|
|
||||||
note: ODBC and SOCKETS can be 1 for gcc-2.95
|
|
||||||
|
|
||||||
-> type: cd c:\wxWin\src\msw
|
-> type: cd c:\wxWin\src\msw
|
||||||
-> type: make -f makefile.g95 (if using GNU tools)
|
-> type: make -f makefile.g95 (if using GNU tools)
|
||||||
or type: make -f makefile.vc (if using MS VC++)
|
or type: nmake -f makefile.vc (if using MS VC++)
|
||||||
|
|
||||||
|
|
||||||
II) Unix ports
|
II) Unix ports
|
||||||
@@ -132,6 +118,20 @@ ftp server at ftp://sourceware.cygnus.com/pub/cygwin/.
|
|||||||
Of course, you can also build the library using plain makefiles (see
|
Of course, you can also build the library using plain makefiles (see
|
||||||
section I).
|
section I).
|
||||||
|
|
||||||
|
IV) wxBase
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
wxBase is the non GUI part of wxWindows. Currently it can be only built using
|
||||||
|
configure (i.e. under Unix and probably under Win32 with cygwin) and with
|
||||||
|
Visual C++.
|
||||||
|
|
||||||
|
To build it using configure, just add "--disable-gui" argument to it.
|
||||||
|
|
||||||
|
To build wxBase with VC++, use the project files wxBase.dsp and wxBaseDll.dsp
|
||||||
|
included in the CVS. See http://www.wxwindows.org/vadim/wxDocs/buildmsw.html
|
||||||
|
for the instructions on how to generate the project files for the programs
|
||||||
|
using wxBase.
|
||||||
|
|
||||||
V) MacOS
|
V) MacOS
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
|
|||||||
478
Makefile.in
@@ -1,11 +1,12 @@
|
|||||||
#
|
#
|
||||||
# File: makefile.unx
|
# File: makefile.unx
|
||||||
# Author: Julian Smart, Robert Roebling, Vadim Zeitlin
|
# Author: Julian Smart, Robert Roebling, Vadim Zeitlin, Ron Lee
|
||||||
# Created: 1993
|
# Created: 1993
|
||||||
# Updated: 1999
|
# Updated: 2001
|
||||||
# Copyright:(c) 1993, AIAI, University of Edinburgh,
|
# Copyright:(c) 1993, AIAI, University of Edinburgh,
|
||||||
# Copyright:(c) 1999, Vadim Zeitlin
|
# Copyright:(c) 1999, Vadim Zeitlin
|
||||||
# Copyright:(c) 1999, Robert Roebling
|
# Copyright:(c) 1999, Robert Roebling
|
||||||
|
# Copyright:(c) 2001, Ron Lee
|
||||||
#
|
#
|
||||||
# Makefile for libwx_gtk.a, libwx_motif.a and libwx_msw.a
|
# Makefile for libwx_gtk.a, libwx_motif.a and libwx_msw.a
|
||||||
|
|
||||||
@@ -15,24 +16,22 @@ include ./src/make.env
|
|||||||
|
|
||||||
############## override make.env for PIC ##########################
|
############## override make.env for PIC ##########################
|
||||||
|
|
||||||
# Clears all default suffixes
|
%.o : %.c
|
||||||
.SUFFIXES: .o .cpp .c .cxx
|
$(CC) -c $(CFLAGS) $(PICFLAGS) @WXMSW_DLL_DEFINES@ -o $@ $<
|
||||||
|
|
||||||
.c.o :
|
%.o : %.cpp
|
||||||
$(CCC) -c @DEP_INFO_FLAGS@ $(CFLAGS) $(PICFLAGS) -o $@ $<
|
$(CXX) -c $(CXXFLAGS) $(PICFLAGS) @WXMSW_DLL_DEFINES@ -o $@ $<
|
||||||
|
|
||||||
.cpp.o :
|
%.o : %.cxx
|
||||||
$(CC) -c @DEP_INFO_FLAGS@ $(CPPFLAGS) $(PICFLAGS) -o $@ $<
|
$(CXX) -c $(CXXFLAGS) $(PICFLAGS) @WXMSW_DLL_DEFINES@ -o $@ $<
|
||||||
|
|
||||||
.cxx.o :
|
|
||||||
$(CC) -c @DEP_INFO_FLAGS@ $(CPPFLAGS) $(PICFLAGS) -o $@ $<
|
|
||||||
|
|
||||||
########################### Paths #################################
|
########################### Paths #################################
|
||||||
|
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
|
||||||
VP1 = @top_srcdir@/src/common
|
VP1 = @TOOLKIT_VPATH@
|
||||||
VP2 = @top_srcdir@/src/@TOOLKIT_DIR@
|
VP2 = @top_srcdir@/src/common
|
||||||
VP3 = @top_srcdir@/src/motif/xmcombo
|
VP3 = @top_srcdir@/src/motif/xmcombo
|
||||||
VP4 = @top_srcdir@/src/generic
|
VP4 = @top_srcdir@/src/generic
|
||||||
VP5 = @top_srcdir@/src/unix
|
VP5 = @top_srcdir@/src/unix
|
||||||
@@ -42,52 +41,51 @@ VP8 = @top_srcdir@/src/jpeg
|
|||||||
VP9 = @top_srcdir@/src/tiff
|
VP9 = @top_srcdir@/src/tiff
|
||||||
VP10 = @top_srcdir@/src/zlib
|
VP10 = @top_srcdir@/src/zlib
|
||||||
VP11 = @top_srcdir@/src/iodbc
|
VP11 = @top_srcdir@/src/iodbc
|
||||||
|
VP12 = @top_srcdir@/src/msw/ole
|
||||||
|
|
||||||
|
FTVP01 = @top_srcdir@/src/freetype/unix
|
||||||
|
FTVP02 = @top_srcdir@/src/freetype/autohint
|
||||||
|
FTVP03 = @top_srcdir@/src/freetype/base
|
||||||
|
FTVP04 = @top_srcdir@/src/freetype/cff
|
||||||
|
FTVP05 = @top_srcdir@/src/freetype/cid
|
||||||
|
FTVP06 = @top_srcdir@/src/freetype/macfond
|
||||||
|
FTVP07 = @top_srcdir@/src/freetype/otlayout
|
||||||
|
FTVP08 = @top_srcdir@/src/freetype/psnames
|
||||||
|
FTVP09 = @top_srcdir@/src/freetype/raster1
|
||||||
|
FTVP10 = @top_srcdir@/src/freetype/sfnt
|
||||||
|
FTVP11 = @top_srcdir@/src/freetype/smooth
|
||||||
|
FTVP12 = @top_srcdir@/src/freetype/truetype
|
||||||
|
FTVP13 = @top_srcdir@/src/freetype/type1
|
||||||
|
FTVP14 = @top_srcdir@/src/freetype/type1z
|
||||||
|
FTVP15 = @top_srcdir@/src/freetype/winfonts
|
||||||
|
|
||||||
|
VP13 = $(FTVP01)@PATH_IFS@$(FTVP02)@PATH_IFS@$(FTVP03)@PATH_IFS@$(FTVP04)@PATH_IFS@$(FTVP05)@PATH_IFS@$(FTVP06)@PATH_IFS@$(FTVP07)@PATH_IFS@$(FTVP08)@PATH_IFS@
|
||||||
|
VP14 = $(FTVP09)@PATH_IFS@$(FTVP10)@PATH_IFS@$(FTVP11)@PATH_IFS@$(FTVP12)@PATH_IFS@$(FTVP13)@PATH_IFS@$(FTVP14)@PATH_IFS@$(FTVP15)@PATH_IFS@
|
||||||
|
|
||||||
# the comment at the end of the next line is needed because otherwise autoconf
|
# the comment at the end of the next line is needed because otherwise autoconf
|
||||||
# would remove this line completely - it contains a built-in hack to remove
|
# would remove this line completely - it contains a built-in hack to remove
|
||||||
# any VPATH assignment not containing ':'
|
# any VPATH assignment not containing ':'
|
||||||
VPATH = $(VP1)@PATH_IFS@$(VP2)@PATH_IFS@$(VP3)@PATH_IFS@$(VP4)@PATH_IFS@$(VP5)@PATH_IFS@$(VP6)@PATH_IFS@$(VP7)@PATH_IFS@$(VP8)@PATH_IFS@$(VP9)@PATH_IFS@$(VP10)@PATH_IFS@$(VP11) # ':' for autoconf
|
VPATH = $(VP1)@PATH_IFS@$(VP2)@PATH_IFS@$(VP3)@PATH_IFS@$(VP4)@PATH_IFS@$(VP5)@PATH_IFS@$(VP6)@PATH_IFS@$(VP7)@PATH_IFS@$(VP8)@PATH_IFS@$(VP9)@PATH_IFS@$(VP10)@PATH_IFS@$(VP11)@PATH_IFS@$(VP12)@PATH_IFS@$(VP13)@PATH_IFS@$(VP14) # ':' for autoconf
|
||||||
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
prefix = @prefix@
|
prefix = @prefix@
|
||||||
exec_prefix = @exec_prefix@
|
exec_prefix = @exec_prefix@
|
||||||
|
|
||||||
bindir = @bindir@
|
bindir = @bindir@
|
||||||
sbindir = @sbindir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
libdir = @libdir@
|
libdir = @libdir@
|
||||||
infodir = @infodir@
|
|
||||||
mandir = @mandir@
|
mandir = @mandir@
|
||||||
includedir = @includedir@
|
includedir = @includedir@
|
||||||
oldincludedir = /usr/include
|
|
||||||
|
|
||||||
DESTDIR =
|
localedir = $(datadir)/locale
|
||||||
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
|
|
||||||
top_builddir = .
|
top_builddir = .
|
||||||
|
build_libdir = $(top_builddir)/lib
|
||||||
|
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
# my autoconf doesn't set this
|
|
||||||
#INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
# maybe do an additional chmod if needed?
|
|
||||||
INSTALL_SCRIPT = @INSTALL@
|
INSTALL_SCRIPT = @INSTALL@
|
||||||
transform = @program_transform_name@
|
|
||||||
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
build_alias = @build_alias@
|
build_alias = @build_alias@
|
||||||
build_triplet = @build@
|
build_triplet = @build@
|
||||||
host_alias = @host_alias@
|
host_alias = @host_alias@
|
||||||
@@ -116,25 +114,39 @@ GTKDIR = $(WXDIR)/src/gtk
|
|||||||
MOTIFDIR = $(WXDIR)/src/motif
|
MOTIFDIR = $(WXDIR)/src/motif
|
||||||
MSWDIR = $(WXDIR)/src/msw
|
MSWDIR = $(WXDIR)/src/msw
|
||||||
PMDIR = $(WXDIR)/src/os2
|
PMDIR = $(WXDIR)/src/os2
|
||||||
|
MACDIR = $(WXDIR)/src/mac
|
||||||
ODBCDIR = $(WXDIR)/src/iodbc
|
ODBCDIR = $(WXDIR)/src/iodbc
|
||||||
|
FTDIR = $(WXDIR)/src/freetype
|
||||||
INCDIR = $(WXDIR)/include
|
INCDIR = $(WXDIR)/include
|
||||||
SAMPDIR = $(WXDIR)/samples
|
SAMPDIR = $(WXDIR)/samples
|
||||||
DEMODIR = $(WXDIR)/demos
|
DEMODIR = $(WXDIR)/demos
|
||||||
UTILSDIR = $(WXDIR)/utils
|
UTILSDIR = $(WXDIR)/utils
|
||||||
MISCDIR = $(WXDIR)/misc
|
MISCDIR = $(WXDIR)/misc
|
||||||
|
|
||||||
DOCDIR = $(WXDIR)/docs
|
DOCDIR = $(WXDIR)/docs
|
||||||
|
INTLDIR = $(WXDIR)/locale
|
||||||
|
|
||||||
########################## Archive name ###############################
|
########################## Archive name ###############################
|
||||||
|
|
||||||
WXARCHIVE = @DISTDIR@-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tgz
|
# append a version suffix x.y.z to all file names
|
||||||
WXGLARCHIVE = @DISTDIR@-gl-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tgz
|
VER_SUFFIX=$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER)
|
||||||
WXSAMPLES = wx$(TOOLKIT)-samples-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tgz
|
WXARCHIVE = @DISTDIR@-$(VER_SUFFIX).tar.gz
|
||||||
WXDEMOS = wx$(TOOLKIT)-demos-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tgz
|
WXGLARCHIVE = @DISTDIR@-gl-$(VER_SUFFIX).tar.gz
|
||||||
|
WXSAMPLES = wx$(TOOLKIT)-samples-$(VER_SUFFIX).tar.gz
|
||||||
|
WXDEMOS = wx$(TOOLKIT)-demos-$(VER_SUFFIX).tar.gz
|
||||||
|
|
||||||
|
WXARCHIVE_BZIP = @DISTDIR@-$(VER_SUFFIX).tar.bz2
|
||||||
|
WXGLARCHIVE_BZIP = @DISTDIR@-gl-$(VER_SUFFIX).tar.bz2
|
||||||
|
WXSAMPLES_BZIP = wx$(TOOLKIT)-samples-$(VER_SUFFIX).tar.bz2
|
||||||
|
WXDEMOS_BZIP = wx$(TOOLKIT)-demos-$(VER_SUFFIX).tar.bz2
|
||||||
|
|
||||||
DISTDIR = ./_dist_dir/@DISTDIR@
|
DISTDIR = ./_dist_dir/@DISTDIR@
|
||||||
|
|
||||||
|
|
||||||
############################## Files ##################################
|
############################## Files ##################################
|
||||||
|
|
||||||
|
WX_LINGUAS = `cd $(top_srcdir)/locale && ls *.mo 2> /dev/null | sed -n 's/\.mo//p'`
|
||||||
|
|
||||||
# this line will include a file which defines ALL_SOURCES, ALL_OBJECTS,
|
# this line will include a file which defines ALL_SOURCES, ALL_OBJECTS,
|
||||||
# ALL_DEPFILES and ALL_HEADERS variables with the complete list of .cpp, .o,
|
# ALL_DEPFILES and ALL_HEADERS variables with the complete list of .cpp, .o,
|
||||||
# .d and .h/.inl files for the current toolkit
|
# .d and .h/.inl files for the current toolkit
|
||||||
@@ -146,7 +158,6 @@ HEADERS = $(ALL_HEADERS)
|
|||||||
# for the objects and depfiles, we might be bulding only part of them
|
# for the objects and depfiles, we might be bulding only part of them
|
||||||
# depending on configure arguments, so select a subset of ALL
|
# depending on configure arguments, so select a subset of ALL
|
||||||
OBJECTS = @ALL_OBJECTS@
|
OBJECTS = @ALL_OBJECTS@
|
||||||
DEPFILES = @ALL_DEPFILES@
|
|
||||||
|
|
||||||
# the object files of sublibraries (we assume that they don't change [often],
|
# the object files of sublibraries (we assume that they don't change [often],
|
||||||
# so we don't generate these lists with tmake but embed them here)
|
# so we don't generate these lists with tmake but embed them here)
|
||||||
@@ -183,6 +194,24 @@ PNGOBJS = \
|
|||||||
pngget.o \
|
pngget.o \
|
||||||
pngset.o
|
pngset.o
|
||||||
|
|
||||||
|
FREETYPEOBJS = \
|
||||||
|
ftsystem.o \
|
||||||
|
autohint.o \
|
||||||
|
ftbase.o \
|
||||||
|
ftdebug.o \
|
||||||
|
ftglyph.o \
|
||||||
|
ftinit.o \
|
||||||
|
ftmm.o \
|
||||||
|
cff.o \
|
||||||
|
type1cid.o \
|
||||||
|
psnames.o \
|
||||||
|
psmodule.o \
|
||||||
|
raster1.o \
|
||||||
|
sfnt.o \
|
||||||
|
smooth.o \
|
||||||
|
truetype.o \
|
||||||
|
type1z.o \
|
||||||
|
winfnt.o
|
||||||
|
|
||||||
JPEGOBJS = \
|
JPEGOBJS = \
|
||||||
jcomapi.o \
|
jcomapi.o \
|
||||||
@@ -286,65 +315,43 @@ IODBCOBJS = \
|
|||||||
|
|
||||||
############################## Rules ##################################
|
############################## Rules ##################################
|
||||||
|
|
||||||
BURNT_LIBRARY_NAME = @BURNT_LIBRARY_NAME@
|
SONAME_FLAGS = @SONAME_FLAGS@
|
||||||
BURNT_LIBRARY_NAME_GL = @BURNT_LIBRARY_NAME_GL@
|
SONAME_FLAGS_GL = @SONAME_FLAGS_GL@
|
||||||
|
|
||||||
all: @WX_ALL@
|
all: @WX_ALL@
|
||||||
|
|
||||||
@WX_LIBRARY_NAME_STATIC@: $(OBJECTS)
|
$(build_libdir)/@WX_LIBRARY_NAME_STATIC@: $(OBJECTS)
|
||||||
@$(INSTALL) -d ./lib
|
@$(INSTALL) -d $(build_libdir)
|
||||||
$(AR) $(AROPTIONS) ./lib/$@ $(OBJECTS)
|
$(AR) $(AROPTIONS) $@ $(OBJECTS)
|
||||||
$(RANLIB) ./lib/$@
|
$(RANLIB) $@
|
||||||
|
|
||||||
@WX_LIBRARY_NAME_STATIC_GL@: glcanvas.o
|
$(build_libdir)/@WX_LIBRARY_NAME_STATIC_GL@: glcanvas.o
|
||||||
@$(INSTALL) -d ./lib
|
@$(INSTALL) -d $(build_libdir)
|
||||||
$(AR) $(AROPTIONS) ./lib/$@ glcanvas.o
|
$(AR) $(AROPTIONS) $@ glcanvas.o
|
||||||
$(RANLIB) ./lib/$@
|
$(RANLIB) $@
|
||||||
|
|
||||||
@WX_LIBRARY_NAME_SHARED@: $(OBJECTS)
|
$(build_libdir)/@WX_LIBRARY_NAME_SHARED@: $(OBJECTS)
|
||||||
@$(INSTALL) -d ./lib
|
@$(INSTALL) -d $(build_libdir)
|
||||||
$(SHARED_LD) ./lib/$@ $(BURNT_LIBRARY_NAME) $(OBJECTS) $(EXTRALIBS)
|
$(SHARED_LD) $@ $(SONAME_FLAGS) $(OBJECTS) $(EXTRALIBS)
|
||||||
|
|
||||||
@WX_LIBRARY_NAME_SHARED_GL@: glcanvas.o
|
$(build_libdir)/@WX_LIBRARY_NAME_SHARED_GL@: glcanvas.o $(build_libdir)/@WX_LIBRARY_NAME_SHARED@
|
||||||
@$(INSTALL) -d ./lib
|
@$(INSTALL) -d $(build_libdir)
|
||||||
$(SHARED_LD) ./lib/$@ $(BURNT_LIBRARY_NAME_GL) glcanvas.o $(EXTRALIBS)
|
$(SHARED_LD) $@ $(SONAME_FLAGS_GL) glcanvas.o -L$(build_libdir) @WXCONFIG_LIBS@ $(EXTRALIBS) $(OPENGLLIBS)
|
||||||
|
|
||||||
CREATE_LINKS: @WX_LIBRARY_NAME_SHARED@
|
$(build_libdir)/@WX_LIBRARY_LINK1@: $(build_libdir)/@WX_LIBRARY_NAME_SHARED@
|
||||||
@$(RM) ./lib/@WX_LIBRARY_LINK1@
|
@$(RM) $(build_libdir)/@WX_LIBRARY_LINK1@
|
||||||
@$(RM) ./lib/@WX_LIBRARY_LINK2@
|
@$(RM) $(build_libdir)/@WX_LIBRARY_LINK2@
|
||||||
@$(RM) ./lib/@WX_LIBRARY_LINK3@
|
cd $(build_libdir) \
|
||||||
cd lib \
|
|
||||||
&& $(LN_S) @WX_TARGET_LIBRARY@ @WX_LIBRARY_LINK1@ \
|
&& $(LN_S) @WX_TARGET_LIBRARY@ @WX_LIBRARY_LINK1@ \
|
||||||
&& $(LN_S) @WX_TARGET_LIBRARY@ @WX_LIBRARY_LINK2@ \
|
&& $(LN_S) @WX_TARGET_LIBRARY@ @WX_LIBRARY_LINK2@
|
||||||
&& $(LN_S) @WX_TARGET_LIBRARY@ @WX_LIBRARY_LINK3@
|
|
||||||
|
$(build_libdir)/@WX_LIBRARY_LINK1_GL@: $(build_libdir)/@WX_LIBRARY_NAME_SHARED_GL@
|
||||||
CREATE_LINKS_GL: @WX_LIBRARY_NAME_SHARED_GL@
|
@$(RM) $(build_libdir)/@WX_LIBRARY_LINK1_GL@
|
||||||
@$(RM) ./lib/@WX_LIBRARY_LINK1_GL@
|
@$(RM) $(build_libdir)/@WX_LIBRARY_LINK2_GL@
|
||||||
@$(RM) ./lib/@WX_LIBRARY_LINK2_GL@
|
cd $(build_libdir) \
|
||||||
@$(RM) ./lib/@WX_LIBRARY_LINK3_GL@
|
|
||||||
cd lib \
|
|
||||||
&& $(LN_S) @WX_TARGET_LIBRARY_GL@ @WX_LIBRARY_LINK1_GL@ \
|
&& $(LN_S) @WX_TARGET_LIBRARY_GL@ @WX_LIBRARY_LINK1_GL@ \
|
||||||
&& $(LN_S) @WX_TARGET_LIBRARY_GL@ @WX_LIBRARY_LINK2_GL@ \
|
&& $(LN_S) @WX_TARGET_LIBRARY_GL@ @WX_LIBRARY_LINK2_GL@
|
||||||
&& $(LN_S) @WX_TARGET_LIBRARY_GL@ @WX_LIBRARY_LINK3_GL@
|
|
||||||
|
|
||||||
CREATE_INSTALLED_LINKS: preinstall
|
|
||||||
$(RM) $(libdir)/@WX_LIBRARY_LINK1@
|
|
||||||
$(RM) $(libdir)/@WX_LIBRARY_LINK2@
|
|
||||||
$(RM) $(libdir)/@WX_LIBRARY_LINK3@
|
|
||||||
cd $(libdir) \
|
|
||||||
&& $(LN_S) @WX_LIBRARY_NAME_SHARED@ @WX_LIBRARY_LINK1@ \
|
|
||||||
&& $(LN_S) @WX_LIBRARY_NAME_SHARED@ @WX_LIBRARY_LINK2@ \
|
|
||||||
&& $(LN_S) @WX_LIBRARY_NAME_SHARED@ @WX_LIBRARY_LINK3@
|
|
||||||
|
|
||||||
CREATE_INSTALLED_LINKS_GL: preinstall_gl
|
|
||||||
$(RM) $(libdir)/@WX_LIBRARY_LINK1_GL@
|
|
||||||
$(RM) $(libdir)/@WX_LIBRARY_LINK2_GL@
|
|
||||||
$(RM) $(libdir)/@WX_LIBRARY_LINK3_GL@
|
|
||||||
cd $(libdir) \
|
|
||||||
&& $(LN_S) @WX_LIBRARY_NAME_SHARED_GL@ @WX_LIBRARY_LINK1_GL@ \
|
|
||||||
&& $(LN_S) @WX_LIBRARY_NAME_SHARED_GL@ @WX_LIBRARY_LINK2_GL@ \
|
|
||||||
&& $(LN_S) @WX_LIBRARY_NAME_SHARED_GL@ @WX_LIBRARY_LINK3_GL@
|
|
||||||
|
|
||||||
$(OBJECTS): $(WXDIR)/include/wx/defs.h $(WXDIR)/include/wx/object.h
|
$(OBJECTS): $(WXDIR)/include/wx/defs.h $(WXDIR)/include/wx/object.h
|
||||||
|
|
||||||
parser.o: parser.c lexer.c
|
parser.o: parser.c lexer.c
|
||||||
@@ -368,7 +375,22 @@ lexer.c: $(COMMDIR)/lexer.l
|
|||||||
sed -e "s/unput/PROIO_unput/g" > lexer.c
|
sed -e "s/unput/PROIO_unput/g" > lexer.c
|
||||||
@$(RM) @LEX_STEM@.c
|
@$(RM) @LEX_STEM@.c
|
||||||
|
|
||||||
-include $(DEPFILES)
|
-include $(OBJECTS:.o=.d)
|
||||||
|
|
||||||
|
|
||||||
|
CREATE_INSTALLED_LINKS: preinstall
|
||||||
|
$(RM) $(libdir)/@WX_LIBRARY_LINK1@
|
||||||
|
$(RM) $(libdir)/@WX_LIBRARY_LINK2@
|
||||||
|
cd $(libdir) \
|
||||||
|
&& $(LN_S) @WX_LIBRARY_NAME_SHARED@ @WX_LIBRARY_LINK1@ \
|
||||||
|
&& $(LN_S) @WX_LIBRARY_NAME_SHARED@ @WX_LIBRARY_LINK2@
|
||||||
|
|
||||||
|
CREATE_INSTALLED_LINKS_GL: preinstall_gl
|
||||||
|
$(RM) $(libdir)/@WX_LIBRARY_LINK1_GL@
|
||||||
|
$(RM) $(libdir)/@WX_LIBRARY_LINK2_GL@
|
||||||
|
cd $(libdir) \
|
||||||
|
&& $(LN_S) @WX_LIBRARY_NAME_SHARED_GL@ @WX_LIBRARY_LINK1_GL@ \
|
||||||
|
&& $(LN_S) @WX_LIBRARY_NAME_SHARED_GL@ @WX_LIBRARY_LINK2_GL@
|
||||||
|
|
||||||
afminstall: preinstall
|
afminstall: preinstall
|
||||||
$(INSTALL) -d $(datadir)
|
$(INSTALL) -d $(datadir)
|
||||||
@@ -380,7 +402,7 @@ afminstall: preinstall
|
|||||||
|
|
||||||
# this is the real install target: copies the library, wx-config and the
|
# this is the real install target: copies the library, wx-config and the
|
||||||
# headers to the installation directory
|
# headers to the installation directory
|
||||||
preinstall: $(top_builddir)/lib/@WX_TARGET_LIBRARY@ $(top_builddir)/wx@TOOLKIT_DIR@-config
|
preinstall: $(top_builddir)/lib/@WX_TARGET_LIBRARY@ $(top_builddir)/wx@TOOLCHAIN_NAME@-config
|
||||||
@echo " "
|
@echo " "
|
||||||
@echo " Installing wxWindows..."
|
@echo " Installing wxWindows..."
|
||||||
@echo " "
|
@echo " "
|
||||||
@@ -389,20 +411,27 @@ preinstall: $(top_builddir)/lib/@WX_TARGET_LIBRARY@ $(top_builddir)/wx@TOOLKIT_D
|
|||||||
$(INSTALL) -d $(bindir)
|
$(INSTALL) -d $(bindir)
|
||||||
$(INSTALL) -d $(libdir)
|
$(INSTALL) -d $(libdir)
|
||||||
|
|
||||||
$(INSTALL_SCRIPT) $(top_builddir)/wx@TOOLKIT_DIR@-config $(bindir)/wx@TOOLKIT_DIR@-config
|
$(INSTALL_SCRIPT) $(top_builddir)/wx@TOOLCHAIN_NAME@-config $(bindir)/wx@TOOLCHAIN_NAME@-config
|
||||||
cd $(bindir) && rm -f wx-config && $(LN_S) wx@TOOLKIT_DIR@-config wx-config
|
cd $(bindir) && rm -f wx-config && $(LN_S) wx@TOOLCHAIN_NAME@-config wx-config
|
||||||
$(INSTALL_PROGRAM) $(top_builddir)/lib/@WX_TARGET_LIBRARY@ $(libdir)/@WX_TARGET_LIBRARY@
|
$(INSTALL_PROGRAM) $(top_builddir)/lib/@WX_TARGET_LIBRARY@ $(libdir)/@WX_TARGET_LIBRARY@
|
||||||
|
@# this installs the import library for a MSW DLL
|
||||||
|
@# remember: for wxMSW DLL WX_LIBRARY_NAME_STATIC is the
|
||||||
|
@# import livraru name
|
||||||
|
@if test "@TOOLKIT_DIR@" = "msw" -a "@WX_LIBRARY_NAME_STATIC@" != "@WX_TARGET_LIBRARY@"; then $(INSTALL_PROGRAM) $(top_builddir)/lib/@WX_LIBRARY_NAME_STATIC@ $(libdir)/@WX_LIBRARY_NAME_STATIC@; fi
|
||||||
|
|
||||||
$(INSTALL) -d $(libdir)/wx
|
$(INSTALL) -d $(libdir)/wx
|
||||||
$(INSTALL) -d $(libdir)/wx/include
|
$(INSTALL) -d $(libdir)/wx/include
|
||||||
$(INSTALL) -d $(libdir)/wx/include/wx
|
$(INSTALL) -d $(libdir)/wx/include/@TOOLCHAIN_NAME@
|
||||||
$(INSTALL) -d $(libdir)/wx/include/wx/@TOOLKIT_DIR@
|
$(INSTALL) -d $(libdir)/wx/include/@TOOLCHAIN_NAME@/wx
|
||||||
$(INSTALL_DATA) $(top_builddir)/include/wx/@TOOLKIT_DIR@/setup.h $(libdir)/wx/include/wx/@TOOLKIT_DIR@/setup.h
|
$(INSTALL_DATA) $(top_builddir)/lib/wx/include/@TOOLCHAIN_NAME@/wx/setup.h $(libdir)/wx/include/@TOOLCHAIN_NAME@/wx/setup.h
|
||||||
|
|
||||||
$(INSTALL) -d $(includedir)/wx
|
$(INSTALL) -d $(includedir)/wx
|
||||||
|
@# FIXME: This will erroneously install a wx/base dir for wxBase..
|
||||||
@if test "$(USE_GUI)" = 1; then $(INSTALL) -d $(includedir)/wx/@TOOLKIT_DIR@; fi
|
@if test "$(USE_GUI)" = 1; then $(INSTALL) -d $(includedir)/wx/@TOOLKIT_DIR@; fi
|
||||||
@if test "$(USE_GUI)" = 1; then $(INSTALL) -d $(includedir)/wx/html; fi
|
@if test "$(USE_GUI)" = 1; then $(INSTALL) -d $(includedir)/wx/html; fi
|
||||||
@if test "$(USE_GUI)" = 1; then $(INSTALL) -d $(includedir)/wx/generic; fi
|
@if test "$(USE_GUI)" = 1; then $(INSTALL) -d $(includedir)/wx/generic; fi
|
||||||
|
@if test "@TOOLKIT_DIR@" = "msw"; then $(INSTALL) -d $(includedir)/wx/msw/ole; fi
|
||||||
|
|
||||||
$(INSTALL) -d $(includedir)/wx/protocol
|
$(INSTALL) -d $(includedir)/wx/protocol
|
||||||
$(INSTALL) -d $(includedir)/wx/unix
|
$(INSTALL) -d $(includedir)/wx/unix
|
||||||
@list='$(HEADERS)'; for p in $$list; do \
|
@list='$(HEADERS)'; for p in $$list; do \
|
||||||
@@ -410,6 +439,14 @@ preinstall: $(top_builddir)/lib/@WX_TARGET_LIBRARY@ $(top_builddir)/wx@TOOLKIT_D
|
|||||||
echo "$(INSTALL_DATA) $(top_srcdir)/include/wx/$$p $(includedir)/wx/$$p"; \
|
echo "$(INSTALL_DATA) $(top_srcdir)/include/wx/$$p $(includedir)/wx/$$p"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
$(INSTALL) -d $(localedir)
|
||||||
|
@for p in $(WX_LINGUAS); do \
|
||||||
|
$(INSTALL) -d $(localedir)/$$p; \
|
||||||
|
$(INSTALL) -d $(localedir)/$$p/LC_MESSAGES; \
|
||||||
|
$(INSTALL_DATA) $(top_srcdir)/locale/$$p.mo $(localedir)/$$p/LC_MESSAGES/wxstd.mo; \
|
||||||
|
echo "$(INSTALL_DATA) $(top_srcdir)/locale/$$p.mo $(localedir)/$$p/LC_MESSAGES/wxstd.mo"; \
|
||||||
|
done
|
||||||
|
|
||||||
preinstall_gl: $(top_builddir)/lib/@WX_TARGET_LIBRARY_GL@
|
preinstall_gl: $(top_builddir)/lib/@WX_TARGET_LIBRARY_GL@
|
||||||
@echo " "
|
@echo " "
|
||||||
@echo " Installing wxWindows OpenGl add-on..."
|
@echo " Installing wxWindows OpenGl add-on..."
|
||||||
@@ -438,16 +475,14 @@ uninstall:
|
|||||||
@$(RM) $(libdir)/@WX_TARGET_LIBRARY@
|
@$(RM) $(libdir)/@WX_TARGET_LIBRARY@
|
||||||
@$(RM) $(libdir)/@WX_LIBRARY_LINK1@
|
@$(RM) $(libdir)/@WX_LIBRARY_LINK1@
|
||||||
@$(RM) $(libdir)/@WX_LIBRARY_LINK2@
|
@$(RM) $(libdir)/@WX_LIBRARY_LINK2@
|
||||||
@$(RM) $(libdir)/@WX_LIBRARY_LINK3@
|
|
||||||
@echo " Removing GL library..."
|
@echo " Removing GL library..."
|
||||||
@$(RM) $(libdir)/@WX_TARGET_LIBRARY_GL@
|
@$(RM) $(libdir)/@WX_TARGET_LIBRARY_GL@
|
||||||
@$(RM) $(libdir)/@WX_LIBRARY_LINK1_GL@
|
@$(RM) $(libdir)/@WX_LIBRARY_LINK1_GL@
|
||||||
@$(RM) $(libdir)/@WX_LIBRARY_LINK2_GL@
|
@$(RM) $(libdir)/@WX_LIBRARY_LINK2_GL@
|
||||||
@$(RM) $(libdir)/@WX_LIBRARY_LINK3_GL@
|
|
||||||
@echo " Removing helper files..."
|
@echo " Removing helper files..."
|
||||||
@$(RM) $(libdir)/wx/include/wx/@TOOLKIT_DIR@/setup.h
|
@$(RM) $(libdir)/wx/include/@TOOLCHAIN_NAME@/wx/setup.h
|
||||||
@$(RM) $(bindir)/wx-config
|
@$(RM) $(bindir)/wx-config
|
||||||
@$(RM) $(bindir)/wx@TOOLKIT_DIR@-config
|
@$(RM) $(bindir)/wx@TOOLCHAIN_NAME@-config
|
||||||
@$(RM) $(datadir)/wx/afm/*
|
@$(RM) $(datadir)/wx/afm/*
|
||||||
@$(RM) $(datadir)/wx/gs_afm/*
|
@$(RM) $(datadir)/wx/gs_afm/*
|
||||||
# FIXME: wxBase doesnt install these next 3 dirs.
|
# FIXME: wxBase doesnt install these next 3 dirs.
|
||||||
@@ -458,9 +493,16 @@ uninstall:
|
|||||||
@list='$(HEADERS)'; for p in $$list; do \
|
@list='$(HEADERS)'; for p in $$list; do \
|
||||||
$(RM) $(includedir)/wx/$$p; \
|
$(RM) $(includedir)/wx/$$p; \
|
||||||
done
|
done
|
||||||
|
@echo " Removing i18n files..."
|
||||||
|
@-for p in $(WX_LINGUAS); do \
|
||||||
|
$(RM) $(localedir)/$$p/LC_MESSAGES/wxstd.mo; \
|
||||||
|
rmdir $(localedir)/$$p/LC_MESSAGES; \
|
||||||
|
rmdir $(localedir)/$$p; \
|
||||||
|
done
|
||||||
@echo " Removing directories..."
|
@echo " Removing directories..."
|
||||||
@if test -d $(libdir)/wx/include/wx/@TOOLKIT_DIR@; then rmdir $(libdir)/wx/include/wx/@TOOLKIT_DIR@; fi
|
@-rmdir $(localedir)
|
||||||
@if test -d $(libdir)/wx/include/wx; then rmdir $(libdir)/wx/include/wx; fi
|
@if test -d $(libdir)/wx/include/@TOOLCHAIN_NAME@/wx; then rmdir $(libdir)/wx/include/@TOOLCHAIN_NAME@/wx; fi
|
||||||
|
@if test -d $(libdir)/wx/include/@TOOLCHAIN_NAME@; then rmdir $(libdir)/wx/include/@TOOLCHAIN_NAME@; fi
|
||||||
@if test -d $(libdir)/wx/include; then rmdir $(libdir)/wx/include; fi
|
@if test -d $(libdir)/wx/include; then rmdir $(libdir)/wx/include; fi
|
||||||
@if test -d $(libdir)/wx; then rmdir $(libdir)/wx; fi
|
@if test -d $(libdir)/wx; then rmdir $(libdir)/wx; fi
|
||||||
@if test -d $(includedir)/wx/gtk; then rmdir $(includedir)/wx/gtk; fi
|
@if test -d $(includedir)/wx/gtk; then rmdir $(includedir)/wx/gtk; fi
|
||||||
@@ -505,6 +547,7 @@ ALL_DIST: distclean
|
|||||||
# but is not used when building wxBase distribution
|
# but is not used when building wxBase distribution
|
||||||
ALL_GUI_DIST: ALL_DIST
|
ALL_GUI_DIST: ALL_DIST
|
||||||
cp $(WXDIR)/wx$(TOOLKIT).spec $(DISTDIR)
|
cp $(WXDIR)/wx$(TOOLKIT).spec $(DISTDIR)
|
||||||
|
cp $(WXDIR)/wxBase.spec $(DISTDIR)
|
||||||
cp $(DOCDIR)/$(TOOLKITDIR)/install.txt $(DISTDIR)/INSTALL.txt
|
cp $(DOCDIR)/$(TOOLKITDIR)/install.txt $(DISTDIR)/INSTALL.txt
|
||||||
cp $(DOCDIR)/$(TOOLKITDIR)/changes.txt $(DISTDIR)/CHANGES.txt
|
cp $(DOCDIR)/$(TOOLKITDIR)/changes.txt $(DISTDIR)/CHANGES.txt
|
||||||
cp $(DOCDIR)/$(TOOLKITDIR)/readme.txt $(DISTDIR)/README.txt
|
cp $(DOCDIR)/$(TOOLKITDIR)/readme.txt $(DISTDIR)/README.txt
|
||||||
@@ -577,13 +620,13 @@ BASE_DIST: ALL_DIST
|
|||||||
cp $(WXDIR)/@PORT_FILES@ $(DISTDIR)/@PORT_FILES@
|
cp $(WXDIR)/@PORT_FILES@ $(DISTDIR)/@PORT_FILES@
|
||||||
cp $(WXDIR)/@RPM_FILES@ $(DISTDIR)/@RPM_FILES@
|
cp $(WXDIR)/@RPM_FILES@ $(DISTDIR)/@RPM_FILES@
|
||||||
cp $(WXDIR)/@RPM_SPEC@ $(DISTDIR)/@RPM_SPEC@
|
cp $(WXDIR)/@RPM_SPEC@ $(DISTDIR)/@RPM_SPEC@
|
||||||
cp $(WXDIR)/wxBase.dsp $(DISTDIR)
|
cp $(WXDIR)/wxBase*.ds[pw] $(DISTDIR)
|
||||||
cp $(DOCDIR)/install.txt $(DISTDIR)/INSTALL.txt
|
|
||||||
cp $(DOCDIR)/changes.txt $(DISTDIR)/CHANGES.txt
|
cp $(DOCDIR)/changes.txt $(DISTDIR)/CHANGES.txt
|
||||||
cp $(DOCDIR)/readme.txt $(DISTDIR)/README.txt
|
cp $(DOCDIR)/readme.txt $(DISTDIR)/README.txt
|
||||||
cp $(DOCDIR)/todo.txt $(DISTDIR)/TODO.txt
|
|
||||||
cp $(SRCDIR)/*.in $(DISTDIR)/src
|
cp $(SRCDIR)/*.in $(DISTDIR)/src
|
||||||
cp $(WXDIR)/src/common/unzip.h $(DISTDIR)/src/common/unzip.h
|
cp $(WXDIR)/src/common/*.inc $(DISTDIR)/src/common
|
||||||
|
cp $(WXDIR)/src/common/base.rc $(DISTDIR)/src/common
|
||||||
|
cp $(WXDIR)/src/common/unzip.h $(DISTDIR)/src/common
|
||||||
list='$(HEADERS)'; for p in $$list; do \
|
list='$(HEADERS)'; for p in $$list; do \
|
||||||
cp $(WXDIR)/include/wx/$$p $(DISTDIR)/include/wx/$$p; \
|
cp $(WXDIR)/include/wx/$$p $(DISTDIR)/include/wx/$$p; \
|
||||||
done
|
done
|
||||||
@@ -591,8 +634,18 @@ BASE_DIST: ALL_DIST
|
|||||||
cp $(WXDIR)/src/$$p $(DISTDIR)/src/$$p; \
|
cp $(WXDIR)/src/$$p $(DISTDIR)/src/$$p; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
mkdir $(DISTDIR)/samples
|
||||||
|
cp $(SAMPDIR)/Makefile.in $(DISTDIR)/samples
|
||||||
|
cp $(SAMPDIR)/configure $(DISTDIR)/samples
|
||||||
|
cp $(SAMPDIR)/configure.in $(DISTDIR)/samples
|
||||||
|
|
||||||
|
mkdir $(DISTDIR)/samples/console
|
||||||
|
cp $(SAMPDIR)/console/Makefile.in $(DISTDIR)/samples/console
|
||||||
|
cp $(SAMPDIR)/console/makefile.unx $(DISTDIR)/samples/console
|
||||||
|
cp $(SAMPDIR)/console/console.cpp $(DISTDIR)/samples/console
|
||||||
|
cp $(SAMPDIR)/console/testdata.fc $(DISTDIR)/samples/console
|
||||||
|
|
||||||
GTK_DIST: ALL_GUI_DIST
|
GTK_DIST: ALL_GUI_DIST
|
||||||
cp $(WXDIR)/wxGTK.spec $(DISTDIR)
|
|
||||||
cp $(INCDIR)/wx/gtk/*.h $(DISTDIR)/include/wx/gtk
|
cp $(INCDIR)/wx/gtk/*.h $(DISTDIR)/include/wx/gtk
|
||||||
cp $(INCDIR)/wx/gtk/*.xpm $(DISTDIR)/include/wx/gtk
|
cp $(INCDIR)/wx/gtk/*.xpm $(DISTDIR)/include/wx/gtk
|
||||||
cp $(GTKDIR)/*.cpp $(DISTDIR)/src/gtk
|
cp $(GTKDIR)/*.cpp $(DISTDIR)/src/gtk
|
||||||
@@ -612,17 +665,30 @@ MOTIF_DIST: ALL_GUI_DIST
|
|||||||
cp $(MOTIFDIR)/xmcombo/*.h $(DISTDIR)/src/motif/xmcombo
|
cp $(MOTIFDIR)/xmcombo/*.h $(DISTDIR)/src/motif/xmcombo
|
||||||
cp $(MOTIFDIR)/xmcombo/copying.txt $(DISTDIR)/src/motif/xmcombo
|
cp $(MOTIFDIR)/xmcombo/copying.txt $(DISTDIR)/src/motif/xmcombo
|
||||||
|
|
||||||
|
MACX_DIST: ALL_GUI_DIST
|
||||||
|
echo "Apple Mac OS X specific distribution not complete"
|
||||||
|
|
||||||
MSW_DIST: ALL_GUI_DIST
|
MSW_DIST: ALL_GUI_DIST
|
||||||
cp $(WXDIR)/wxWINE.spec $(DISTDIR)
|
cp $(WXDIR)/wxWINE.spec $(DISTDIR)
|
||||||
|
mkdir $(DISTDIR)/include/wx/msw/ctl3d
|
||||||
|
mkdir $(DISTDIR)/include/wx/msw/gnuwin32
|
||||||
|
mkdir $(DISTDIR)/include/wx/msw/gnuwin32/gl
|
||||||
|
mkdir $(DISTDIR)/include/wx/msw/ole
|
||||||
cp $(INCDIR)/wx/msw/*.h $(DISTDIR)/include/wx/msw
|
cp $(INCDIR)/wx/msw/*.h $(DISTDIR)/include/wx/msw
|
||||||
cp $(INCDIR)/wx/msw/*.cur $(DISTDIR)/include/wx/msw
|
cp $(INCDIR)/wx/msw/*.cur $(DISTDIR)/include/wx/msw
|
||||||
cp $(INCDIR)/wx/msw/*.ico $(DISTDIR)/include/wx/msw
|
cp $(INCDIR)/wx/msw/*.ico $(DISTDIR)/include/wx/msw
|
||||||
cp $(INCDIR)/wx/msw/*.bmp $(DISTDIR)/include/wx/msw
|
cp $(INCDIR)/wx/msw/*.bmp $(DISTDIR)/include/wx/msw
|
||||||
cp $(INCDIR)/wx/msw/*.rc $(DISTDIR)/include/wx/msw
|
cp $(INCDIR)/wx/msw/*.rc $(DISTDIR)/include/wx/msw
|
||||||
|
cp $(INCDIR)/wx/msw/ctl3d/*.h $(DISTDIR)/include/wx/msw/ctl3d
|
||||||
|
cp $(INCDIR)/wx/msw/gnuwin32/*.h $(DISTDIR)/include/wx/msw/gnuwin32
|
||||||
|
cp $(INCDIR)/wx/msw/gnuwin32/gl/*.h $(DISTDIR)/include/wx/msw/gnuwin32/gl
|
||||||
|
cp $(INCDIR)/wx/msw/gnuwin32/gl/*.def $(DISTDIR)/include/wx/msw/gnuwin32/gl
|
||||||
|
cp $(INCDIR)/wx/msw/ole/*.h $(DISTDIR)/include/wx/msw/ole
|
||||||
|
|
||||||
|
mkdir $(DISTDIR)/src/msw/ole
|
||||||
cp $(MSWDIR)/*.cpp $(DISTDIR)/src/msw
|
cp $(MSWDIR)/*.cpp $(DISTDIR)/src/msw
|
||||||
cp $(MSWDIR)/*.c $(DISTDIR)/src/msw
|
cp $(MSWDIR)/*.c $(DISTDIR)/src/msw
|
||||||
cp $(MSWDIR)/*.def $(DISTDIR)/src/msw
|
cp $(MSWDIR)/*.def $(DISTDIR)/src/msw
|
||||||
mkdir $(DISTDIR)/src/msw/ole
|
|
||||||
cp $(MSWDIR)/ole/*.cpp $(DISTDIR)/src/msw/ole
|
cp $(MSWDIR)/ole/*.cpp $(DISTDIR)/src/msw/ole
|
||||||
|
|
||||||
DEMOS_DIST: ALL_GUI_DIST
|
DEMOS_DIST: ALL_GUI_DIST
|
||||||
@@ -630,9 +696,9 @@ DEMOS_DIST: ALL_GUI_DIST
|
|||||||
cp $(DEMODIR)/Makefile.in $(DISTDIR)/demos
|
cp $(DEMODIR)/Makefile.in $(DISTDIR)/demos
|
||||||
cp $(DEMODIR)/configure $(DISTDIR)/demos
|
cp $(DEMODIR)/configure $(DISTDIR)/demos
|
||||||
cp $(DEMODIR)/configure.in $(DISTDIR)/demos
|
cp $(DEMODIR)/configure.in $(DISTDIR)/demos
|
||||||
|
|
||||||
cp -R $(DEMODIR)/dbbrowse $(DISTDIR)/demos/dbbrowse
|
cp -R $(DEMODIR)/dbbrowse $(DISTDIR)/demos/dbbrowse
|
||||||
|
|
||||||
mkdir $(DISTDIR)/demos/bombs
|
mkdir $(DISTDIR)/demos/bombs
|
||||||
cp $(DEMODIR)/bombs/Makefile.in $(DISTDIR)/demos/bombs
|
cp $(DEMODIR)/bombs/Makefile.in $(DISTDIR)/demos/bombs
|
||||||
cp $(DEMODIR)/bombs/makefile.unx $(DISTDIR)/demos/bombs
|
cp $(DEMODIR)/bombs/makefile.unx $(DISTDIR)/demos/bombs
|
||||||
@@ -640,7 +706,7 @@ DEMOS_DIST: ALL_GUI_DIST
|
|||||||
cp $(DEMODIR)/bombs/*.h $(DISTDIR)/demos/bombs
|
cp $(DEMODIR)/bombs/*.h $(DISTDIR)/demos/bombs
|
||||||
cp $(DEMODIR)/bombs/*.xpm $(DISTDIR)/demos/bombs
|
cp $(DEMODIR)/bombs/*.xpm $(DISTDIR)/demos/bombs
|
||||||
cp $(DEMODIR)/bombs/readme.txt $(DISTDIR)/demos/bombs
|
cp $(DEMODIR)/bombs/readme.txt $(DISTDIR)/demos/bombs
|
||||||
|
|
||||||
mkdir $(DISTDIR)/demos/forty
|
mkdir $(DISTDIR)/demos/forty
|
||||||
cp $(DEMODIR)/forty/Makefile.in $(DISTDIR)/demos/forty
|
cp $(DEMODIR)/forty/Makefile.in $(DISTDIR)/demos/forty
|
||||||
cp $(DEMODIR)/forty/makefile.unx $(DISTDIR)/demos/forty
|
cp $(DEMODIR)/forty/makefile.unx $(DISTDIR)/demos/forty
|
||||||
@@ -648,7 +714,7 @@ DEMOS_DIST: ALL_GUI_DIST
|
|||||||
cp $(DEMODIR)/forty/*.cpp $(DISTDIR)/demos/forty
|
cp $(DEMODIR)/forty/*.cpp $(DISTDIR)/demos/forty
|
||||||
cp $(DEMODIR)/forty/*.xpm $(DISTDIR)/demos/forty
|
cp $(DEMODIR)/forty/*.xpm $(DISTDIR)/demos/forty
|
||||||
cp $(DEMODIR)/forty/*.xbm $(DISTDIR)/demos/forty
|
cp $(DEMODIR)/forty/*.xbm $(DISTDIR)/demos/forty
|
||||||
|
|
||||||
mkdir $(DISTDIR)/demos/life
|
mkdir $(DISTDIR)/demos/life
|
||||||
mkdir $(DISTDIR)/demos/life/bitmaps
|
mkdir $(DISTDIR)/demos/life/bitmaps
|
||||||
cp $(DEMODIR)/life/Makefile.in $(DISTDIR)/demos/life
|
cp $(DEMODIR)/life/Makefile.in $(DISTDIR)/demos/life
|
||||||
@@ -657,8 +723,9 @@ DEMOS_DIST: ALL_GUI_DIST
|
|||||||
cp $(DEMODIR)/life/*.h $(DISTDIR)/demos/life
|
cp $(DEMODIR)/life/*.h $(DISTDIR)/demos/life
|
||||||
cp $(DEMODIR)/life/*.xpm $(DISTDIR)/demos/life
|
cp $(DEMODIR)/life/*.xpm $(DISTDIR)/demos/life
|
||||||
cp $(DEMODIR)/life/*.inc $(DISTDIR)/demos/life
|
cp $(DEMODIR)/life/*.inc $(DISTDIR)/demos/life
|
||||||
|
cp $(DEMODIR)/life/*.lif $(DISTDIR)/demos/life
|
||||||
cp $(DEMODIR)/life/bitmaps/*.xpm $(DISTDIR)/demos/life/bitmaps
|
cp $(DEMODIR)/life/bitmaps/*.xpm $(DISTDIR)/demos/life/bitmaps
|
||||||
|
|
||||||
mkdir $(DISTDIR)/demos/poem
|
mkdir $(DISTDIR)/demos/poem
|
||||||
cp $(DEMODIR)/poem/Makefile.in $(DISTDIR)/demos/poem
|
cp $(DEMODIR)/poem/Makefile.in $(DISTDIR)/demos/poem
|
||||||
cp $(DEMODIR)/poem/makefile.unx $(DISTDIR)/demos/poem
|
cp $(DEMODIR)/poem/makefile.unx $(DISTDIR)/demos/poem
|
||||||
@@ -667,12 +734,12 @@ DEMOS_DIST: ALL_GUI_DIST
|
|||||||
cp $(DEMODIR)/poem/*.xpm $(DISTDIR)/demos/poem
|
cp $(DEMODIR)/poem/*.xpm $(DISTDIR)/demos/poem
|
||||||
cp $(DEMODIR)/poem/*.dat $(DISTDIR)/demos/poem
|
cp $(DEMODIR)/poem/*.dat $(DISTDIR)/demos/poem
|
||||||
cp $(DEMODIR)/poem/*.txt $(DISTDIR)/demos/poem
|
cp $(DEMODIR)/poem/*.txt $(DISTDIR)/demos/poem
|
||||||
|
|
||||||
mkdir $(DISTDIR)/demos/fractal
|
mkdir $(DISTDIR)/demos/fractal
|
||||||
cp $(DEMODIR)/fractal/Makefile.in $(DISTDIR)/demos/fractal
|
cp $(DEMODIR)/fractal/Makefile.in $(DISTDIR)/demos/fractal
|
||||||
cp $(DEMODIR)/fractal/makefile.unx $(DISTDIR)/demos/fractal
|
cp $(DEMODIR)/fractal/makefile.unx $(DISTDIR)/demos/fractal
|
||||||
cp $(DEMODIR)/fractal/*.cpp $(DISTDIR)/demos/fractal
|
cp $(DEMODIR)/fractal/*.cpp $(DISTDIR)/demos/fractal
|
||||||
|
|
||||||
SAMPLES_DIST: ALL_GUI_DIST
|
SAMPLES_DIST: ALL_GUI_DIST
|
||||||
mkdir $(DISTDIR)/samples
|
mkdir $(DISTDIR)/samples
|
||||||
cp $(SAMPDIR)/Makefile.in $(DISTDIR)/samples
|
cp $(SAMPDIR)/Makefile.in $(DISTDIR)/samples
|
||||||
@@ -860,8 +927,10 @@ SAMPLES_DIST: ALL_GUI_DIST
|
|||||||
cp $(SAMPDIR)/internat/*.po $(DISTDIR)/samples/internat
|
cp $(SAMPDIR)/internat/*.po $(DISTDIR)/samples/internat
|
||||||
cp $(SAMPDIR)/internat/fr/*.mo $(DISTDIR)/samples/internat/fr
|
cp $(SAMPDIR)/internat/fr/*.mo $(DISTDIR)/samples/internat/fr
|
||||||
cp $(SAMPDIR)/internat/de/*.mo $(DISTDIR)/samples/internat/de
|
cp $(SAMPDIR)/internat/de/*.mo $(DISTDIR)/samples/internat/de
|
||||||
|
cp $(SAMPDIR)/internat/ru/*.mo $(DISTDIR)/samples/internat/de
|
||||||
cp $(SAMPDIR)/internat/fr/*.po $(DISTDIR)/samples/internat/fr
|
cp $(SAMPDIR)/internat/fr/*.po $(DISTDIR)/samples/internat/fr
|
||||||
cp $(SAMPDIR)/internat/de/*.po $(DISTDIR)/samples/internat/de
|
cp $(SAMPDIR)/internat/de/*.po $(DISTDIR)/samples/internat/de
|
||||||
|
cp $(SAMPDIR)/internat/ru/*.po $(DISTDIR)/samples/internat/de
|
||||||
|
|
||||||
mkdir $(DISTDIR)/samples/ipc
|
mkdir $(DISTDIR)/samples/ipc
|
||||||
cp $(SAMPDIR)/ipc/Makefile.in $(DISTDIR)/samples/ipc
|
cp $(SAMPDIR)/ipc/Makefile.in $(DISTDIR)/samples/ipc
|
||||||
@@ -966,11 +1035,6 @@ SAMPLES_DIST: ALL_GUI_DIST
|
|||||||
cp $(SAMPDIR)/opengl/isosurf/*.h $(DISTDIR)/samples/opengl/isosurf
|
cp $(SAMPDIR)/opengl/isosurf/*.h $(DISTDIR)/samples/opengl/isosurf
|
||||||
cp $(SAMPDIR)/opengl/isosurf/*.gz $(DISTDIR)/samples/opengl/isosurf
|
cp $(SAMPDIR)/opengl/isosurf/*.gz $(DISTDIR)/samples/opengl/isosurf
|
||||||
|
|
||||||
mkdir $(DISTDIR)/samples/plot
|
|
||||||
cp $(SAMPDIR)/plot/Makefile.in $(DISTDIR)/samples/plot
|
|
||||||
cp $(SAMPDIR)/plot/makefile.unx $(DISTDIR)/samples/plot
|
|
||||||
cp $(SAMPDIR)/plot/*.cpp $(DISTDIR)/samples/plot
|
|
||||||
|
|
||||||
mkdir $(DISTDIR)/samples/png
|
mkdir $(DISTDIR)/samples/png
|
||||||
cp $(SAMPDIR)/png/Makefile.in $(DISTDIR)/samples/png
|
cp $(SAMPDIR)/png/Makefile.in $(DISTDIR)/samples/png
|
||||||
cp $(SAMPDIR)/png/makefile.unx $(DISTDIR)/samples/png
|
cp $(SAMPDIR)/png/makefile.unx $(DISTDIR)/samples/png
|
||||||
@@ -1144,6 +1208,12 @@ MISC_DIST: ALL_GUI_DIST
|
|||||||
mkdir $(DISTDIR)/misc/gs_afm
|
mkdir $(DISTDIR)/misc/gs_afm
|
||||||
cp $(MISCDIR)/gs_afm/*.afm $(DISTDIR)/misc/gs_afm
|
cp $(MISCDIR)/gs_afm/*.afm $(DISTDIR)/misc/gs_afm
|
||||||
|
|
||||||
|
INTL_DIST:
|
||||||
|
mkdir $(DISTDIR)/locale
|
||||||
|
cp $(INTLDIR)/Makefile $(DISTDIR)/locale
|
||||||
|
cp $(INTLDIR)/*.po $(DISTDIR)/locale
|
||||||
|
-cp $(INTLDIR)/*.mo $(DISTDIR)/locale
|
||||||
|
|
||||||
MANUAL_DIST:
|
MANUAL_DIST:
|
||||||
mkdir $(DISTDIR)/docs
|
mkdir $(DISTDIR)/docs
|
||||||
mkdir $(DISTDIR)/docs/latex
|
mkdir $(DISTDIR)/docs/latex
|
||||||
@@ -1158,53 +1228,113 @@ MANUAL_DIST:
|
|||||||
# those files needed for the Debian source package.
|
# those files needed for the Debian source package.
|
||||||
# see utils/wxPython/distrib for scripts to make a proper wxPython dist.
|
# see utils/wxPython/distrib for scripts to make a proper wxPython dist.
|
||||||
PYTHON_DIST:
|
PYTHON_DIST:
|
||||||
mkdir $(DISTDIR)/utils/wxPython
|
mkdir $(DISTDIR)/wxPython
|
||||||
mkdir $(DISTDIR)/utils/wxPython/demo
|
mkdir $(DISTDIR)/wxPython/contrib
|
||||||
mkdir $(DISTDIR)/utils/wxPython/demo/bitmaps
|
mkdir $(DISTDIR)/wxPython/contrib/glcanvas
|
||||||
mkdir $(DISTDIR)/utils/wxPython/demo/data
|
mkdir $(DISTDIR)/wxPython/contrib/glcanvas/gtk
|
||||||
mkdir $(DISTDIR)/utils/wxPython/distrib
|
mkdir $(DISTDIR)/wxPython/contrib/ogl
|
||||||
mkdir $(DISTDIR)/utils/wxPython/lib
|
mkdir $(DISTDIR)/wxPython/contrib/stc
|
||||||
mkdir $(DISTDIR)/utils/wxPython/lib/editor
|
mkdir $(DISTDIR)/wxPython/demo
|
||||||
mkdir $(DISTDIR)/utils/wxPython/lib/sizers
|
mkdir $(DISTDIR)/wxPython/demo/bitmaps
|
||||||
mkdir $(DISTDIR)/utils/wxPython/modules
|
mkdir $(DISTDIR)/wxPython/demo/data
|
||||||
mkdir $(DISTDIR)/utils/wxPython/modules/html
|
mkdir $(DISTDIR)/wxPython/src
|
||||||
mkdir $(DISTDIR)/utils/wxPython/modules/utils
|
mkdir $(DISTDIR)/wxPython/src/gtk
|
||||||
mkdir $(DISTDIR)/utils/wxPython/modules/utils/gtk
|
mkdir $(DISTDIR)/wxPython/wxPython
|
||||||
mkdir $(DISTDIR)/utils/wxPython/src
|
mkdir $(DISTDIR)/wxPython/wxPython/lib
|
||||||
mkdir $(DISTDIR)/utils/wxPython/src/gtk
|
mkdir $(DISTDIR)/wxPython/wxPython/lib/editor
|
||||||
|
mkdir $(DISTDIR)/wxPython/wxPython/lib/sizers
|
||||||
|
|
||||||
cp $(UTILSDIR)/wxPython/*.txt $(DISTDIR)/utils/wxPython
|
cp $(WXDIR)/wxPython/*.txt $(DISTDIR)/wxPython
|
||||||
-cp $(UTILSDIR)/wxPython/demo/* $(DISTDIR)/utils/wxPython/demo
|
cp $(WXDIR)/wxPython/*.py $(DISTDIR)/wxPython
|
||||||
-cp $(UTILSDIR)/wxPython/demo/bitmaps/* $(DISTDIR)/utils/wxPython/demo/bitmaps
|
cp $(WXDIR)/wxPython/setup.cfg $(DISTDIR)/wxPython
|
||||||
-cp $(UTILSDIR)/wxPython/demo/data/* $(DISTDIR)/utils/wxPython/demo/data
|
cp $(WXDIR)/wxPython/MANIFEST.in $(DISTDIR)/wxPython
|
||||||
cp $(UTILSDIR)/wxPython/distrib/build.py $(DISTDIR)/utils/wxPython/distrib
|
-cp $(WXDIR)/wxPython/contrib/glcanvas/* $(DISTDIR)/wxPython/contrib/glcanvas
|
||||||
cp $(UTILSDIR)/wxPython/lib/*.py $(DISTDIR)/utils/wxPython/lib
|
cp $(WXDIR)/wxPython/contrib/glcanvas/gtk/glcanvas.* $(DISTDIR)/wxPython/contrib/glcanvas/gtk
|
||||||
cp $(UTILSDIR)/wxPython/lib/editor/*.py $(DISTDIR)/utils/wxPython/lib/editor
|
-cp $(WXDIR)/wxPython/contrib/ogl/* $(DISTDIR)/wxPython/contrib/ogl
|
||||||
cp $(UTILSDIR)/wxPython/lib/sizers/*.py $(DISTDIR)/utils/wxPython/lib/sizers
|
-cp $(WXDIR)/wxPython/contrib/stc/* $(DISTDIR)/wxPython/contrib/stc
|
||||||
-cp $(UTILSDIR)/wxPython/modules/html/* $(DISTDIR)/utils/wxPython/modules/html
|
-cp $(WXDIR)/wxPython/demo/* $(DISTDIR)/wxPython/demo
|
||||||
-cp $(UTILSDIR)/wxPython/modules/utils/* $(DISTDIR)/utils/wxPython/modules/utils
|
-cp $(WXDIR)/wxPython/demo/bitmaps/* $(DISTDIR)/wxPython/demo/bitmaps
|
||||||
cp $(UTILSDIR)/wxPython/modules/utils/gtk/utils.* $(DISTDIR)/utils/wxPython/modules/utils/gtk
|
-cp $(WXDIR)/wxPython/demo/data/* $(DISTDIR)/wxPython/demo/data
|
||||||
-cp $(UTILSDIR)/wxPython/src/* $(DISTDIR)/utils/wxPython/src
|
-cp $(WXDIR)/wxPython/src/* $(DISTDIR)/wxPython/src
|
||||||
cp $(UTILSDIR)/wxPython/src/gtk/*.py $(DISTDIR)/utils/wxPython/src/gtk
|
cp $(WXDIR)/wxPython/src/gtk/*.py $(DISTDIR)/wxPython/src/gtk
|
||||||
cp $(UTILSDIR)/wxPython/src/gtk/*.cpp $(DISTDIR)/utils/wxPython/src/gtk
|
cp $(WXDIR)/wxPython/src/gtk/*.cpp $(DISTDIR)/wxPython/src/gtk
|
||||||
|
cp $(WXDIR)/wxPython/wxPython/lib/*.py $(DISTDIR)/wxPython/wxPython/lib
|
||||||
|
cp $(WXDIR)/wxPython/wxPython/lib/editor/*.py $(DISTDIR)/wxPython/wxPython/lib/editor
|
||||||
|
|
||||||
distclean:
|
distclean:
|
||||||
$(RM) -r _dist_dir
|
$(RM) -r _dist_dir
|
||||||
|
|
||||||
dist: @GUIDIST@
|
# VZ: the -only targets allow to do "make dist bzip-dist-only" without copying
|
||||||
|
# the files twice
|
||||||
|
dist-only:
|
||||||
@echo "*** Creating wxWindows distribution in $(DISTDIR)..."
|
@echo "*** Creating wxWindows distribution in $(DISTDIR)..."
|
||||||
cd _dist_dir; tar ch @DISTDIR@ | gzip -f9 > $(WXARCHIVE); mv $(WXARCHIVE) ..
|
@cd _dist_dir; \
|
||||||
|
mv @DISTDIR@ @DISTDIR@-$(VER_SUFFIX); \
|
||||||
|
tar ch @DISTDIR@-$(VER_SUFFIX) | gzip -f9 > ../$(WXARCHIVE); \
|
||||||
|
mv @DISTDIR@-$(VER_SUFFIX) @DISTDIR@
|
||||||
@if test "$(USE_GUI)" = 1; then \
|
@if test "$(USE_GUI)" = 1; then \
|
||||||
cd $(DISTDIR); \
|
cd $(DISTDIR); \
|
||||||
mv samples wxSamples; \
|
mv samples wxSamples-$(VER_SUFFIX); \
|
||||||
tar ch wxSamples | gzip -f9 > ../../$(WXSAMPLES); \
|
echo "*** Creating wxSamples archive..."; \
|
||||||
mv wxSamples samples; \
|
tar ch wxSamples-$(VER_SUFFIX) | gzip -f9 > ../../$(WXSAMPLES); \
|
||||||
mv demos wxDemos; \
|
mv wxSamples-$(VER_SUFFIX) samples; \
|
||||||
tar ch wxDemos | gzip -f9 > ../../$(WXDEMOS); \
|
mv demos wxDemos-$(VER_SUFFIX); \
|
||||||
mv wxDemos demos; \
|
echo "*** Creating wxDemos archive..."; \
|
||||||
|
tar ch wxDemos-$(VER_SUFFIX) | gzip -f9 > ../../$(WXDEMOS); \
|
||||||
|
mv wxDemos-$(VER_SUFFIX) demos; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
debian-dist: @GUIDIST@ MANUAL_DIST PYTHON_DIST
|
dist: @GUIDIST@
|
||||||
|
cp $(WXDIR)/src/files.lst $(DISTDIR)/src/
|
||||||
|
@echo "*** Creating wxWindows distribution in $(DISTDIR)..."
|
||||||
|
@cd _dist_dir; \
|
||||||
|
mv @DISTDIR@ @DISTDIR@-$(VER_SUFFIX); \
|
||||||
|
tar ch @DISTDIR@-$(VER_SUFFIX) | gzip -f9 > ../$(WXARCHIVE); \
|
||||||
|
mv @DISTDIR@-$(VER_SUFFIX) @DISTDIR@
|
||||||
|
@if test "$(USE_GUI)" = 1; then \
|
||||||
|
cd $(DISTDIR); \
|
||||||
|
mv samples wxSamples-$(VER_SUFFIX); \
|
||||||
|
echo "*** Creating wxSamples archive..."; \
|
||||||
|
tar ch wxSamples-$(VER_SUFFIX) | gzip -f9 > ../../$(WXSAMPLES); \
|
||||||
|
mv wxSamples-$(VER_SUFFIX) samples; \
|
||||||
|
mv demos wxDemos-$(VER_SUFFIX); \
|
||||||
|
echo "*** Creating wxDemos archive..."; \
|
||||||
|
tar ch wxDemos-$(VER_SUFFIX) | gzip -f9 > ../../$(WXDEMOS); \
|
||||||
|
mv wxDemos-$(VER_SUFFIX) demos; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
bzip-dist-only:
|
||||||
|
@echo "*** Creating wxWindows distribution in $(DISTDIR)..."
|
||||||
|
@cd _dist_dir; tar ch @DISTDIR@ | bzip2 -f9 > $(WXARCHIVE_BZIP); mv $(WXARCHIVE_BZIP) ..
|
||||||
|
@if test "$(USE_GUI)" = 1; then \
|
||||||
|
cd $(DISTDIR); \
|
||||||
|
mv samples wxSamples-${VER_SUFFIX}; \
|
||||||
|
echo "*** Creating wxSamples archive..."; \
|
||||||
|
tar ch wxSamples-${VER_SUFFIX} | bzip2 -f9 > ../../$(WXSAMPLES_BZIP); \
|
||||||
|
mv wxSamples-${VER_SUFFIX} samples; \
|
||||||
|
mv demos wxDemos-${VER_SUFFIX}; \
|
||||||
|
echo "*** Creating wxDemos archive..."; \
|
||||||
|
tar ch wxDemos-${VER_SUFFIX} | bzip2 -f9 > ../../$(WXDEMOS_BZIP); \
|
||||||
|
mv wxDemos-${VER_SUFFIX} demos; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
bzip-dist: @GUIDIST@
|
||||||
|
cp $(WXDIR)/src/files.lst $(DISTDIR)/src/
|
||||||
|
@echo "*** Creating wxWindows distribution in $(DISTDIR)..."
|
||||||
|
cd _dist_dir; tar ch @DISTDIR@ | bzip2 -f9 > $(WXARCHIVE_BZIP); mv $(WXARCHIVE_BZIP) ..
|
||||||
|
@if test "$(USE_GUI)" = 1; then \
|
||||||
|
cd $(DISTDIR); \
|
||||||
|
mv samples wxSamples-${VER_SUFFIX}; \
|
||||||
|
echo "*** Creating wxSamples archive..."; \
|
||||||
|
tar ch wxSamples-${VER_SUFFIX} | bzip2 -f9 > ../../$(WXSAMPLES_BZIP); \
|
||||||
|
mv wxSamples-${VER_SUFFIX} samples; \
|
||||||
|
mv demos wxDemos-${VER_SUFFIX}; \
|
||||||
|
echo "*** Creating wxDemos archive..."; \
|
||||||
|
tar ch wxDemos-${VER_SUFFIX} | bzip2 -f9 > ../../$(WXDEMOS_BZIP); \
|
||||||
|
mv wxDemos-${VER_SUFFIX} demos; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
debian-dist: debian-native-dist debian-msw-dirs MSW_DIST
|
||||||
mkdir $(DISTDIR)/debian
|
mkdir $(DISTDIR)/debian
|
||||||
-cp $(WXDIR)/debian/* $(DISTDIR)/debian
|
-cp $(WXDIR)/debian/* $(DISTDIR)/debian
|
||||||
cp $(WXDIR)/src/files.lst $(DISTDIR)/src/
|
cp $(WXDIR)/src/files.lst $(DISTDIR)/src/
|
||||||
@@ -1212,14 +1342,32 @@ debian-dist: @GUIDIST@ MANUAL_DIST PYTHON_DIST
|
|||||||
cp $(DOCDIR)/licendoc.txt $(DISTDIR)/docs
|
cp $(DOCDIR)/licendoc.txt $(DISTDIR)/docs
|
||||||
cp $(DOCDIR)/preamble.txt $(DISTDIR)/docs
|
cp $(DOCDIR)/preamble.txt $(DISTDIR)/docs
|
||||||
rm -f $(DISTDIR)/*.spec
|
rm -f $(DISTDIR)/*.spec
|
||||||
|
|
||||||
|
@# now prune away a lot of the crap included by using cp -R
|
||||||
|
@# in other dist targets. Ugly and hardly portable but it
|
||||||
|
@# will run on any Debian box and that's enough for now.
|
||||||
|
|
||||||
|
find $(DISTDIR) \( -name "CVS" -o -name "*.dsp" -o -name "*.dsw" -o -name "*.hh*" -o \
|
||||||
|
\( -name "makefile.*" -a ! -name "makefile.unx" \) \) \
|
||||||
|
-print0 | xargs -0 rm -rf
|
||||||
|
|
||||||
rm -rf $(WXDIR)/../wxwindows$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER)-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER)
|
rm -rf $(WXDIR)/../wxwindows$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER)-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER)
|
||||||
mv $(DISTDIR) $(WXDIR)/../wxwindows$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER)-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER)
|
mv $(DISTDIR) $(WXDIR)/../wxwindows$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER)-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER)
|
||||||
|
|
||||||
|
debian-native-dist: @GUIDIST@ MANUAL_DIST PYTHON_DIST
|
||||||
|
|
||||||
|
debian-msw-dirs:
|
||||||
|
mkdir $(DISTDIR)/include/wx/msw
|
||||||
|
mkdir $(DISTDIR)/src/msw
|
||||||
|
cp $(WXDIR)/src/msw/files.lst $(DISTDIR)/src/msw
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) *.o
|
$(RM) *.o
|
||||||
$(RM) *.d
|
$(RM) *.d
|
||||||
$(RM) parser.c
|
$(RM) parser.c
|
||||||
$(RM) lexer.c
|
$(RM) lexer.c
|
||||||
$(RM) -r ./lib/*
|
$(RM) -r ./lib/wx/*
|
||||||
|
$(RM) ./lib/lib*
|
||||||
|
|
||||||
cleanall: clean
|
cleanall: clean
|
||||||
|
|||||||
878
config.guess
vendored
588
config.sub
vendored
@@ -1,6 +1,10 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Configuration validation subroutine script, version 1.1.
|
# Configuration validation subroutine script.
|
||||||
# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
|
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||||
|
# Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
timestamp='2001-09-07'
|
||||||
|
|
||||||
# This file is (in principle) common to ALL GNU software.
|
# This file is (in principle) common to ALL GNU software.
|
||||||
# The presence of a machine in this file suggests that SOME GNU software
|
# The presence of a machine in this file suggests that SOME GNU software
|
||||||
# can handle that machine. It does not imply ALL GNU software can.
|
# can handle that machine. It does not imply ALL GNU software can.
|
||||||
@@ -25,6 +29,8 @@
|
|||||||
# configuration script generated by Autoconf, you may include it under
|
# configuration script generated by Autoconf, you may include it under
|
||||||
# the same distribution terms that you use for the rest of that program.
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# Please send patches to <config-patches@gnu.org>.
|
||||||
|
#
|
||||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||||
# Supply the specified configuration type as an argument.
|
# Supply the specified configuration type as an argument.
|
||||||
# If it is invalid, we print an error message on stderr and exit with code 1.
|
# If it is invalid, we print an error message on stderr and exit with code 1.
|
||||||
@@ -45,30 +51,73 @@
|
|||||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||||
# It is wrong to echo any other type of specification.
|
# It is wrong to echo any other type of specification.
|
||||||
|
|
||||||
if [ x$1 = x ]
|
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||||
then
|
|
||||||
echo Configuration name missing. 1>&2
|
|
||||||
echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
|
|
||||||
echo "or $0 ALIAS" 1>&2
|
|
||||||
echo where ALIAS is a recognized configuration type. 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# First pass through any local machine types.
|
usage="\
|
||||||
case $1 in
|
Usage: $0 [OPTION] CPU-MFR-OPSYS
|
||||||
*local*)
|
$0 [OPTION] ALIAS
|
||||||
echo $1
|
|
||||||
exit 0
|
Canonicalize a configuration name.
|
||||||
;;
|
|
||||||
*)
|
Operation modes:
|
||||||
;;
|
-h, --help print this help, then exit
|
||||||
|
-t, --time-stamp print date of last modification, then exit
|
||||||
|
-v, --version print version number, then exit
|
||||||
|
|
||||||
|
Report bugs and patches to <config-patches@gnu.org>."
|
||||||
|
|
||||||
|
version="\
|
||||||
|
GNU config.sub ($timestamp)
|
||||||
|
|
||||||
|
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This is free software; see the source for copying conditions. There is NO
|
||||||
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
|
|
||||||
|
help="
|
||||||
|
Try \`$me --help' for more information."
|
||||||
|
|
||||||
|
# Parse command line
|
||||||
|
while test $# -gt 0 ; do
|
||||||
|
case $1 in
|
||||||
|
--time-stamp | --time* | -t )
|
||||||
|
echo "$timestamp" ; exit 0 ;;
|
||||||
|
--version | -v )
|
||||||
|
echo "$version" ; exit 0 ;;
|
||||||
|
--help | --h* | -h )
|
||||||
|
echo "$usage"; exit 0 ;;
|
||||||
|
-- ) # Stop option processing
|
||||||
|
shift; break ;;
|
||||||
|
- ) # Use stdin as input.
|
||||||
|
break ;;
|
||||||
|
-* )
|
||||||
|
echo "$me: invalid option $1$help"
|
||||||
|
exit 1 ;;
|
||||||
|
|
||||||
|
*local*)
|
||||||
|
# First pass through any local machine types.
|
||||||
|
echo $1
|
||||||
|
exit 0;;
|
||||||
|
|
||||||
|
* )
|
||||||
|
break ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
case $# in
|
||||||
|
0) echo "$me: missing argument$help" >&2
|
||||||
|
exit 1;;
|
||||||
|
1) ;;
|
||||||
|
*) echo "$me: too many arguments$help" >&2
|
||||||
|
exit 1;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
|
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
|
||||||
# Here we must recognize all the valid KERNEL-OS combinations.
|
# Here we must recognize all the valid KERNEL-OS combinations.
|
||||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||||
case $maybe_os in
|
case $maybe_os in
|
||||||
linux-gnu*)
|
nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*)
|
||||||
os=-$maybe_os
|
os=-$maybe_os
|
||||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||||
;;
|
;;
|
||||||
@@ -94,15 +143,33 @@ case $os in
|
|||||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||||
-apple)
|
-apple | -axis)
|
||||||
os=
|
os=
|
||||||
basic_machine=$1
|
basic_machine=$1
|
||||||
;;
|
;;
|
||||||
|
-sim | -cisco | -oki | -wec | -winbond)
|
||||||
|
os=
|
||||||
|
basic_machine=$1
|
||||||
|
;;
|
||||||
|
-scout)
|
||||||
|
;;
|
||||||
|
-wrs)
|
||||||
|
os=-vxworks
|
||||||
|
basic_machine=$1
|
||||||
|
;;
|
||||||
|
-chorusos*)
|
||||||
|
os=-chorusos
|
||||||
|
basic_machine=$1
|
||||||
|
;;
|
||||||
|
-chorusrdb)
|
||||||
|
os=-chorusrdb
|
||||||
|
basic_machine=$1
|
||||||
|
;;
|
||||||
-hiux*)
|
-hiux*)
|
||||||
os=-hiuxwe2
|
os=-hiuxwe2
|
||||||
;;
|
;;
|
||||||
-sco5)
|
-sco5)
|
||||||
os=sco3.2v5
|
os=-sco3.2v5
|
||||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
;;
|
;;
|
||||||
-sco4)
|
-sco4)
|
||||||
@@ -121,6 +188,9 @@ case $os in
|
|||||||
os=-sco3.2v2
|
os=-sco3.2v2
|
||||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
;;
|
;;
|
||||||
|
-udk*)
|
||||||
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
|
;;
|
||||||
-isc)
|
-isc)
|
||||||
os=-isc2.2
|
os=-isc2.2
|
||||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
@@ -143,26 +213,60 @@ case $os in
|
|||||||
-psos*)
|
-psos*)
|
||||||
os=-psos
|
os=-psos
|
||||||
;;
|
;;
|
||||||
|
-mint | -mint[0-9]*)
|
||||||
|
basic_machine=m68k-atari
|
||||||
|
os=-mint
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Decode aliases for certain CPU-COMPANY combinations.
|
# Decode aliases for certain CPU-COMPANY combinations.
|
||||||
case $basic_machine in
|
case $basic_machine in
|
||||||
# Recognize the basic CPU types without company name.
|
# Recognize the basic CPU types without company name.
|
||||||
# Some are omitted here because they have special meanings below.
|
# Some are omitted here because they have special meanings below.
|
||||||
tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
|
1750a | 580 \
|
||||||
| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
|
| a29k \
|
||||||
| 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \
|
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||||
| alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
|
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
|
||||||
| i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
|
| c4x | clipper \
|
||||||
| mips64 | mipsel | mips64el | mips64orion | mips64orionel \
|
| d10v | d30v | dsp16xx \
|
||||||
| mipstx39 | mipstx39el \
|
| fr30 \
|
||||||
| sparc | sparclet | sparclite | sparc64 | v850)
|
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||||
|
| i370 | i860 | i960 | ia64 \
|
||||||
|
| m32r | m68000 | m68k | m88k | mcore \
|
||||||
|
| mips16 | mips64 | mips64el | mips64orion | mips64orionel \
|
||||||
|
| mips64vr4100 | mips64vr4100el | mips64vr4300 \
|
||||||
|
| mips64vr4300el | mips64vr5000 | mips64vr5000el \
|
||||||
|
| mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
|
||||||
|
| mipsisa32 \
|
||||||
|
| mn10200 | mn10300 \
|
||||||
|
| ns16k | ns32k \
|
||||||
|
| openrisc \
|
||||||
|
| pdp10 | pdp11 | pj | pjl \
|
||||||
|
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
|
||||||
|
| pyramid \
|
||||||
|
| s390 | s390x \
|
||||||
|
| sh | sh[34] | sh[34]eb | shbe | shle \
|
||||||
|
| sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
|
||||||
|
| stormy16 | strongarm \
|
||||||
|
| tahoe | thumb | tic80 | tron \
|
||||||
|
| v850 \
|
||||||
|
| we32k \
|
||||||
|
| x86 | xscale \
|
||||||
|
| z8k)
|
||||||
basic_machine=$basic_machine-unknown
|
basic_machine=$basic_machine-unknown
|
||||||
;;
|
;;
|
||||||
|
m6811 | m68hc11 | m6812 | m68hc12)
|
||||||
|
# Motorola 68HC11/12.
|
||||||
|
basic_machine=$basic_machine-unknown
|
||||||
|
os=-none
|
||||||
|
;;
|
||||||
|
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
|
||||||
|
;;
|
||||||
|
|
||||||
# We use `pc' rather than `unknown'
|
# We use `pc' rather than `unknown'
|
||||||
# because (1) that's what they normally are, and
|
# because (1) that's what they normally are, and
|
||||||
# (2) the word "unknown" tends to confuse beginning users.
|
# (2) the word "unknown" tends to confuse beginning users.
|
||||||
i[34567]86)
|
i*86 | x86_64)
|
||||||
basic_machine=$basic_machine-pc
|
basic_machine=$basic_machine-pc
|
||||||
;;
|
;;
|
||||||
# Object if more than one company name word.
|
# Object if more than one company name word.
|
||||||
@@ -171,27 +275,64 @@ case $basic_machine in
|
|||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
# Recognize the basic CPU types with company name.
|
# Recognize the basic CPU types with company name.
|
||||||
vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
|
580-* \
|
||||||
| m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
|
| a29k-* \
|
||||||
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
|
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||||
| power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
|
| alphapca5[67]-* | arc-* \
|
||||||
| xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \
|
| arm-* | armbe-* | armle-* | armv*-* \
|
||||||
| alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
|
| bs2000-* \
|
||||||
| ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
|
| c[123]* | c30-* | [cjt]90-* | c54x-* \
|
||||||
| sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
|
| clipper-* | cray2-* | cydra-* \
|
||||||
| sparc64-* | mips64-* | mipsel-* \
|
| d10v-* | d30v-* \
|
||||||
| mips64el-* | mips64orion-* | mips64orionel-* \
|
| elxsi-* \
|
||||||
| mipstx39-* | mipstx39el-* \
|
| f30[01]-* | f700-* | fr30-* | fx80-* \
|
||||||
| f301-*)
|
| h8300-* | h8500-* \
|
||||||
|
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||||
|
| i*86-* | i860-* | i960-* | ia64-* \
|
||||||
|
| m32r-* \
|
||||||
|
| m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \
|
||||||
|
| m88110-* | m88k-* | mcore-* \
|
||||||
|
| mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
|
||||||
|
| mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
|
||||||
|
| mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
|
||||||
|
| mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
|
||||||
|
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||||
|
| orion-* \
|
||||||
|
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||||
|
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
|
||||||
|
| pyramid-* \
|
||||||
|
| romp-* | rs6000-* \
|
||||||
|
| s390-* | s390x-* \
|
||||||
|
| sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \
|
||||||
|
| sparc-* | sparc64-* | sparc86x-* | sparclite-* \
|
||||||
|
| sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \
|
||||||
|
| t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
|
||||||
|
| v850-* | vax-* \
|
||||||
|
| we32k-* \
|
||||||
|
| x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \
|
||||||
|
| ymp-* \
|
||||||
|
| z8k-*)
|
||||||
;;
|
;;
|
||||||
# Recognize the various machine names and aliases which stand
|
# Recognize the various machine names and aliases which stand
|
||||||
# for a CPU type and a company and sometimes even an OS.
|
# for a CPU type and a company and sometimes even an OS.
|
||||||
|
386bsd)
|
||||||
|
basic_machine=i386-unknown
|
||||||
|
os=-bsd
|
||||||
|
;;
|
||||||
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
|
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
|
||||||
basic_machine=m68000-att
|
basic_machine=m68000-att
|
||||||
;;
|
;;
|
||||||
3b*)
|
3b*)
|
||||||
basic_machine=we32k-att
|
basic_machine=we32k-att
|
||||||
;;
|
;;
|
||||||
|
a29khif)
|
||||||
|
basic_machine=a29k-amd
|
||||||
|
os=-udi
|
||||||
|
;;
|
||||||
|
adobe68k)
|
||||||
|
basic_machine=m68010-adobe
|
||||||
|
os=-scout
|
||||||
|
;;
|
||||||
alliant | fx80)
|
alliant | fx80)
|
||||||
basic_machine=fx80-alliant
|
basic_machine=fx80-alliant
|
||||||
;;
|
;;
|
||||||
@@ -207,20 +348,24 @@ case $basic_machine in
|
|||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
amiga | amiga-*)
|
amiga | amiga-*)
|
||||||
basic_machine=m68k-cbm
|
basic_machine=m68k-unknown
|
||||||
;;
|
;;
|
||||||
amigaos | amigados)
|
amigaos | amigados)
|
||||||
basic_machine=m68k-cbm
|
basic_machine=m68k-unknown
|
||||||
os=-amigaos
|
os=-amigaos
|
||||||
;;
|
;;
|
||||||
amigaunix | amix)
|
amigaunix | amix)
|
||||||
basic_machine=m68k-cbm
|
basic_machine=m68k-unknown
|
||||||
os=-sysv4
|
os=-sysv4
|
||||||
;;
|
;;
|
||||||
apollo68)
|
apollo68)
|
||||||
basic_machine=m68k-apollo
|
basic_machine=m68k-apollo
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
|
apollo68bsd)
|
||||||
|
basic_machine=m68k-apollo
|
||||||
|
os=-bsd
|
||||||
|
;;
|
||||||
aux)
|
aux)
|
||||||
basic_machine=m68k-apple
|
basic_machine=m68k-apple
|
||||||
os=-aux
|
os=-aux
|
||||||
@@ -257,13 +402,16 @@ case $basic_machine in
|
|||||||
basic_machine=cray2-cray
|
basic_machine=cray2-cray
|
||||||
os=-unicos
|
os=-unicos
|
||||||
;;
|
;;
|
||||||
[ctj]90-cray)
|
[cjt]90)
|
||||||
basic_machine=c90-cray
|
basic_machine=${basic_machine}-cray
|
||||||
os=-unicos
|
os=-unicos
|
||||||
;;
|
;;
|
||||||
crds | unos)
|
crds | unos)
|
||||||
basic_machine=m68k-crds
|
basic_machine=m68k-crds
|
||||||
;;
|
;;
|
||||||
|
cris | cris-* | etrax*)
|
||||||
|
basic_machine=cris-axis
|
||||||
|
;;
|
||||||
da30 | da30-*)
|
da30 | da30-*)
|
||||||
basic_machine=m68k-da30
|
basic_machine=m68k-da30
|
||||||
;;
|
;;
|
||||||
@@ -297,6 +445,10 @@ case $basic_machine in
|
|||||||
encore | umax | mmax)
|
encore | umax | mmax)
|
||||||
basic_machine=ns32k-encore
|
basic_machine=ns32k-encore
|
||||||
;;
|
;;
|
||||||
|
es1800 | OSE68k | ose68k | ose | OSE)
|
||||||
|
basic_machine=m68k-ericsson
|
||||||
|
os=-ose
|
||||||
|
;;
|
||||||
fx2800)
|
fx2800)
|
||||||
basic_machine=i860-alliant
|
basic_machine=i860-alliant
|
||||||
;;
|
;;
|
||||||
@@ -307,6 +459,10 @@ case $basic_machine in
|
|||||||
basic_machine=tron-gmicro
|
basic_machine=tron-gmicro
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
|
go32)
|
||||||
|
basic_machine=i386-pc
|
||||||
|
os=-go32
|
||||||
|
;;
|
||||||
h3050r* | hiux*)
|
h3050r* | hiux*)
|
||||||
basic_machine=hppa1.1-hitachi
|
basic_machine=hppa1.1-hitachi
|
||||||
os=-hiuxwe2
|
os=-hiuxwe2
|
||||||
@@ -315,6 +471,14 @@ case $basic_machine in
|
|||||||
basic_machine=h8300-hitachi
|
basic_machine=h8300-hitachi
|
||||||
os=-hms
|
os=-hms
|
||||||
;;
|
;;
|
||||||
|
h8300xray)
|
||||||
|
basic_machine=h8300-hitachi
|
||||||
|
os=-xray
|
||||||
|
;;
|
||||||
|
h8500hms)
|
||||||
|
basic_machine=h8500-hitachi
|
||||||
|
os=-hms
|
||||||
|
;;
|
||||||
harris)
|
harris)
|
||||||
basic_machine=m88k-harris
|
basic_machine=m88k-harris
|
||||||
os=-sysv3
|
os=-sysv3
|
||||||
@@ -330,13 +494,30 @@ case $basic_machine in
|
|||||||
basic_machine=m68k-hp
|
basic_machine=m68k-hp
|
||||||
os=-hpux
|
os=-hpux
|
||||||
;;
|
;;
|
||||||
|
hp3k9[0-9][0-9] | hp9[0-9][0-9])
|
||||||
|
basic_machine=hppa1.0-hp
|
||||||
|
;;
|
||||||
hp9k2[0-9][0-9] | hp9k31[0-9])
|
hp9k2[0-9][0-9] | hp9k31[0-9])
|
||||||
basic_machine=m68000-hp
|
basic_machine=m68000-hp
|
||||||
;;
|
;;
|
||||||
hp9k3[2-9][0-9])
|
hp9k3[2-9][0-9])
|
||||||
basic_machine=m68k-hp
|
basic_machine=m68k-hp
|
||||||
;;
|
;;
|
||||||
hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
|
hp9k6[0-9][0-9] | hp6[0-9][0-9])
|
||||||
|
basic_machine=hppa1.0-hp
|
||||||
|
;;
|
||||||
|
hp9k7[0-79][0-9] | hp7[0-79][0-9])
|
||||||
|
basic_machine=hppa1.1-hp
|
||||||
|
;;
|
||||||
|
hp9k78[0-9] | hp78[0-9])
|
||||||
|
# FIXME: really hppa2.0-hp
|
||||||
|
basic_machine=hppa1.1-hp
|
||||||
|
;;
|
||||||
|
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
|
||||||
|
# FIXME: really hppa2.0-hp
|
||||||
|
basic_machine=hppa1.1-hp
|
||||||
|
;;
|
||||||
|
hp9k8[0-9][13679] | hp8[0-9][13679])
|
||||||
basic_machine=hppa1.1-hp
|
basic_machine=hppa1.1-hp
|
||||||
;;
|
;;
|
||||||
hp9k8[0-9][0-9] | hp8[0-9][0-9])
|
hp9k8[0-9][0-9] | hp8[0-9][0-9])
|
||||||
@@ -345,27 +526,42 @@ case $basic_machine in
|
|||||||
hppa-next)
|
hppa-next)
|
||||||
os=-nextstep3
|
os=-nextstep3
|
||||||
;;
|
;;
|
||||||
|
hppaosf)
|
||||||
|
basic_machine=hppa1.1-hp
|
||||||
|
os=-osf
|
||||||
|
;;
|
||||||
|
hppro)
|
||||||
|
basic_machine=hppa1.1-hp
|
||||||
|
os=-proelf
|
||||||
|
;;
|
||||||
i370-ibm* | ibm*)
|
i370-ibm* | ibm*)
|
||||||
basic_machine=i370-ibm
|
basic_machine=i370-ibm
|
||||||
os=-mvs
|
|
||||||
;;
|
;;
|
||||||
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
|
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
|
||||||
i[34567]86v32)
|
i*86v32)
|
||||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||||
os=-sysv32
|
os=-sysv32
|
||||||
;;
|
;;
|
||||||
i[34567]86v4*)
|
i*86v4*)
|
||||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||||
os=-sysv4
|
os=-sysv4
|
||||||
;;
|
;;
|
||||||
i[34567]86v)
|
i*86v)
|
||||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
i[34567]86sol2)
|
i*86sol2)
|
||||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||||
os=-solaris2
|
os=-solaris2
|
||||||
;;
|
;;
|
||||||
|
i386mach)
|
||||||
|
basic_machine=i386-mach
|
||||||
|
os=-mach
|
||||||
|
;;
|
||||||
|
i386-vsta | vsta)
|
||||||
|
basic_machine=i386-unknown
|
||||||
|
os=-vsta
|
||||||
|
;;
|
||||||
iris | iris4d)
|
iris | iris4d)
|
||||||
basic_machine=mips-sgi
|
basic_machine=mips-sgi
|
||||||
case $os in
|
case $os in
|
||||||
@@ -391,9 +587,17 @@ case $basic_machine in
|
|||||||
basic_machine=ns32k-utek
|
basic_machine=ns32k-utek
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
|
mingw32)
|
||||||
|
basic_machine=i386-pc
|
||||||
|
os=-mingw32
|
||||||
|
;;
|
||||||
miniframe)
|
miniframe)
|
||||||
basic_machine=m68000-convergent
|
basic_machine=m68000-convergent
|
||||||
;;
|
;;
|
||||||
|
*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
|
||||||
|
basic_machine=m68k-atari
|
||||||
|
os=-mint
|
||||||
|
;;
|
||||||
mipsel*-linux*)
|
mipsel*-linux*)
|
||||||
basic_machine=mipsel-unknown
|
basic_machine=mipsel-unknown
|
||||||
os=-linux-gnu
|
os=-linux-gnu
|
||||||
@@ -408,10 +612,34 @@ case $basic_machine in
|
|||||||
mips3*)
|
mips3*)
|
||||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
|
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
|
||||||
;;
|
;;
|
||||||
|
mmix*)
|
||||||
|
basic_machine=mmix-knuth
|
||||||
|
os=-mmixware
|
||||||
|
;;
|
||||||
|
monitor)
|
||||||
|
basic_machine=m68k-rom68k
|
||||||
|
os=-coff
|
||||||
|
;;
|
||||||
|
msdos)
|
||||||
|
basic_machine=i386-pc
|
||||||
|
os=-msdos
|
||||||
|
;;
|
||||||
|
mvs)
|
||||||
|
basic_machine=i370-ibm
|
||||||
|
os=-mvs
|
||||||
|
;;
|
||||||
ncr3000)
|
ncr3000)
|
||||||
basic_machine=i486-ncr
|
basic_machine=i486-ncr
|
||||||
os=-sysv4
|
os=-sysv4
|
||||||
;;
|
;;
|
||||||
|
netbsd386)
|
||||||
|
basic_machine=i386-unknown
|
||||||
|
os=-netbsd
|
||||||
|
;;
|
||||||
|
netwinder)
|
||||||
|
basic_machine=armv4l-rebel
|
||||||
|
os=-linux
|
||||||
|
;;
|
||||||
news | news700 | news800 | news900)
|
news | news700 | news800 | news900)
|
||||||
basic_machine=m68k-sony
|
basic_machine=m68k-sony
|
||||||
os=-newsos
|
os=-newsos
|
||||||
@@ -424,6 +652,10 @@ case $basic_machine in
|
|||||||
basic_machine=mips-sony
|
basic_machine=mips-sony
|
||||||
os=-newsos
|
os=-newsos
|
||||||
;;
|
;;
|
||||||
|
necv70)
|
||||||
|
basic_machine=v70-nec
|
||||||
|
os=-sysv
|
||||||
|
;;
|
||||||
next | m*-next )
|
next | m*-next )
|
||||||
basic_machine=m68k-next
|
basic_machine=m68k-next
|
||||||
case $os in
|
case $os in
|
||||||
@@ -449,9 +681,32 @@ case $basic_machine in
|
|||||||
basic_machine=i960-intel
|
basic_machine=i960-intel
|
||||||
os=-nindy
|
os=-nindy
|
||||||
;;
|
;;
|
||||||
|
mon960)
|
||||||
|
basic_machine=i960-intel
|
||||||
|
os=-mon960
|
||||||
|
;;
|
||||||
|
nonstopux)
|
||||||
|
basic_machine=mips-compaq
|
||||||
|
os=-nonstopux
|
||||||
|
;;
|
||||||
np1)
|
np1)
|
||||||
basic_machine=np1-gould
|
basic_machine=np1-gould
|
||||||
;;
|
;;
|
||||||
|
nsr-tandem)
|
||||||
|
basic_machine=nsr-tandem
|
||||||
|
;;
|
||||||
|
op50n-* | op60c-*)
|
||||||
|
basic_machine=hppa1.1-oki
|
||||||
|
os=-proelf
|
||||||
|
;;
|
||||||
|
OSE68000 | ose68000)
|
||||||
|
basic_machine=m68000-ericsson
|
||||||
|
os=-ose
|
||||||
|
;;
|
||||||
|
os68k)
|
||||||
|
basic_machine=m68k-none
|
||||||
|
os=-os68k
|
||||||
|
;;
|
||||||
pa-hitachi)
|
pa-hitachi)
|
||||||
basic_machine=hppa1.1-hitachi
|
basic_machine=hppa1.1-hitachi
|
||||||
os=-hiuxwe2
|
os=-hiuxwe2
|
||||||
@@ -469,28 +724,28 @@ case $basic_machine in
|
|||||||
pc532 | pc532-*)
|
pc532 | pc532-*)
|
||||||
basic_machine=ns32k-pc532
|
basic_machine=ns32k-pc532
|
||||||
;;
|
;;
|
||||||
pentium | p5 | k5 | nexen)
|
pentium | p5 | k5 | k6 | nexgen)
|
||||||
basic_machine=i586-pc
|
basic_machine=i586-pc
|
||||||
;;
|
;;
|
||||||
pentiumpro | p6 | k6 | 6x86)
|
pentiumpro | p6 | 6x86 | athlon)
|
||||||
basic_machine=i686-pc
|
basic_machine=i686-pc
|
||||||
;;
|
;;
|
||||||
pentiumii | pentium2)
|
pentiumii | pentium2)
|
||||||
basic_machine=i786-pc
|
basic_machine=i686-pc
|
||||||
;;
|
;;
|
||||||
pentium-* | p5-* | k5-* | nexen-*)
|
pentium-* | p5-* | k5-* | k6-* | nexgen-*)
|
||||||
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
|
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
;;
|
;;
|
||||||
pentiumpro-* | p6-* | k6-* | 6x86-*)
|
pentiumpro-* | p6-* | 6x86-* | athlon-*)
|
||||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
;;
|
;;
|
||||||
pentiumii-* | pentium2-*)
|
pentiumii-* | pentium2-*)
|
||||||
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
|
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
;;
|
;;
|
||||||
pn)
|
pn)
|
||||||
basic_machine=pn-gould
|
basic_machine=pn-gould
|
||||||
;;
|
;;
|
||||||
power) basic_machine=rs6000-ibm
|
power) basic_machine=power-ibm
|
||||||
;;
|
;;
|
||||||
ppc) basic_machine=powerpc-unknown
|
ppc) basic_machine=powerpc-unknown
|
||||||
;;
|
;;
|
||||||
@@ -502,15 +757,37 @@ case $basic_machine in
|
|||||||
ppcle-* | powerpclittle-*)
|
ppcle-* | powerpclittle-*)
|
||||||
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
|
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
;;
|
;;
|
||||||
|
ppc64) basic_machine=powerpc64-unknown
|
||||||
|
;;
|
||||||
|
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
;;
|
||||||
|
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
|
||||||
|
basic_machine=powerpc64le-unknown
|
||||||
|
;;
|
||||||
|
ppc64le-* | powerpc64little-*)
|
||||||
|
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
;;
|
||||||
ps2)
|
ps2)
|
||||||
basic_machine=i386-ibm
|
basic_machine=i386-ibm
|
||||||
;;
|
;;
|
||||||
|
pw32)
|
||||||
|
basic_machine=i586-unknown
|
||||||
|
os=-pw32
|
||||||
|
;;
|
||||||
|
rom68k)
|
||||||
|
basic_machine=m68k-rom68k
|
||||||
|
os=-coff
|
||||||
|
;;
|
||||||
rm[46]00)
|
rm[46]00)
|
||||||
basic_machine=mips-siemens
|
basic_machine=mips-siemens
|
||||||
;;
|
;;
|
||||||
rtpc | rtpc-*)
|
rtpc | rtpc-*)
|
||||||
basic_machine=romp-ibm
|
basic_machine=romp-ibm
|
||||||
;;
|
;;
|
||||||
|
sa29200)
|
||||||
|
basic_machine=a29k-amd
|
||||||
|
os=-udi
|
||||||
|
;;
|
||||||
sequent)
|
sequent)
|
||||||
basic_machine=i386-sequent
|
basic_machine=i386-sequent
|
||||||
;;
|
;;
|
||||||
@@ -518,6 +795,10 @@ case $basic_machine in
|
|||||||
basic_machine=sh-hitachi
|
basic_machine=sh-hitachi
|
||||||
os=-hms
|
os=-hms
|
||||||
;;
|
;;
|
||||||
|
sparclite-wrs)
|
||||||
|
basic_machine=sparclite-wrs
|
||||||
|
os=-vxworks
|
||||||
|
;;
|
||||||
sps7)
|
sps7)
|
||||||
basic_machine=m68k-bull
|
basic_machine=m68k-bull
|
||||||
os=-sysv2
|
os=-sysv2
|
||||||
@@ -525,6 +806,13 @@ case $basic_machine in
|
|||||||
spur)
|
spur)
|
||||||
basic_machine=spur-unknown
|
basic_machine=spur-unknown
|
||||||
;;
|
;;
|
||||||
|
st2000)
|
||||||
|
basic_machine=m68k-tandem
|
||||||
|
;;
|
||||||
|
stratus)
|
||||||
|
basic_machine=i860-stratus
|
||||||
|
os=-sysv4
|
||||||
|
;;
|
||||||
sun2)
|
sun2)
|
||||||
basic_machine=m68000-sun
|
basic_machine=m68000-sun
|
||||||
;;
|
;;
|
||||||
@@ -565,10 +853,22 @@ case $basic_machine in
|
|||||||
sun386 | sun386i | roadrunner)
|
sun386 | sun386i | roadrunner)
|
||||||
basic_machine=i386-sun
|
basic_machine=i386-sun
|
||||||
;;
|
;;
|
||||||
|
sv1)
|
||||||
|
basic_machine=sv1-cray
|
||||||
|
os=-unicos
|
||||||
|
;;
|
||||||
symmetry)
|
symmetry)
|
||||||
basic_machine=i386-sequent
|
basic_machine=i386-sequent
|
||||||
os=-dynix
|
os=-dynix
|
||||||
;;
|
;;
|
||||||
|
t3e)
|
||||||
|
basic_machine=t3e-cray
|
||||||
|
os=-unicos
|
||||||
|
;;
|
||||||
|
tic54x | c54x*)
|
||||||
|
basic_machine=tic54x-unknown
|
||||||
|
os=-coff
|
||||||
|
;;
|
||||||
tx39)
|
tx39)
|
||||||
basic_machine=mipstx39-unknown
|
basic_machine=mipstx39-unknown
|
||||||
;;
|
;;
|
||||||
@@ -586,6 +886,10 @@ case $basic_machine in
|
|||||||
basic_machine=a29k-nyu
|
basic_machine=a29k-nyu
|
||||||
os=-sym1
|
os=-sym1
|
||||||
;;
|
;;
|
||||||
|
v810 | necv810)
|
||||||
|
basic_machine=v810-nec
|
||||||
|
os=-none
|
||||||
|
;;
|
||||||
vaxv)
|
vaxv)
|
||||||
basic_machine=vax-dec
|
basic_machine=vax-dec
|
||||||
os=-sysv
|
os=-sysv
|
||||||
@@ -609,6 +913,18 @@ case $basic_machine in
|
|||||||
basic_machine=a29k-wrs
|
basic_machine=a29k-wrs
|
||||||
os=-vxworks
|
os=-vxworks
|
||||||
;;
|
;;
|
||||||
|
w65*)
|
||||||
|
basic_machine=w65-wdc
|
||||||
|
os=-none
|
||||||
|
;;
|
||||||
|
w89k-*)
|
||||||
|
basic_machine=hppa1.1-winbond
|
||||||
|
os=-proelf
|
||||||
|
;;
|
||||||
|
windows32)
|
||||||
|
basic_machine=i386-pc
|
||||||
|
os=-windows32-msvcrt
|
||||||
|
;;
|
||||||
xmp)
|
xmp)
|
||||||
basic_machine=xmp-cray
|
basic_machine=xmp-cray
|
||||||
os=-unicos
|
os=-unicos
|
||||||
@@ -616,6 +932,10 @@ case $basic_machine in
|
|||||||
xps | xps100)
|
xps | xps100)
|
||||||
basic_machine=xps100-honeywell
|
basic_machine=xps100-honeywell
|
||||||
;;
|
;;
|
||||||
|
z8k-*-coff)
|
||||||
|
basic_machine=z8k-unknown
|
||||||
|
os=-sim
|
||||||
|
;;
|
||||||
none)
|
none)
|
||||||
basic_machine=none-none
|
basic_machine=none-none
|
||||||
os=-none
|
os=-none
|
||||||
@@ -623,6 +943,15 @@ case $basic_machine in
|
|||||||
|
|
||||||
# Here we handle the default manufacturer of certain CPU types. It is in
|
# Here we handle the default manufacturer of certain CPU types. It is in
|
||||||
# some cases the only manufacturer, in others, it is the most popular.
|
# some cases the only manufacturer, in others, it is the most popular.
|
||||||
|
w89k)
|
||||||
|
basic_machine=hppa1.1-winbond
|
||||||
|
;;
|
||||||
|
op50n)
|
||||||
|
basic_machine=hppa1.1-oki
|
||||||
|
;;
|
||||||
|
op60c)
|
||||||
|
basic_machine=hppa1.1-oki
|
||||||
|
;;
|
||||||
mips)
|
mips)
|
||||||
if [ x$os = x-linux-gnu ]; then
|
if [ x$os = x-linux-gnu ]; then
|
||||||
basic_machine=mips-unknown
|
basic_machine=mips-unknown
|
||||||
@@ -639,13 +968,20 @@ case $basic_machine in
|
|||||||
vax)
|
vax)
|
||||||
basic_machine=vax-dec
|
basic_machine=vax-dec
|
||||||
;;
|
;;
|
||||||
|
pdp10)
|
||||||
|
# there are many clones, so DEC is not a safe bet
|
||||||
|
basic_machine=pdp10-unknown
|
||||||
|
;;
|
||||||
pdp11)
|
pdp11)
|
||||||
basic_machine=pdp11-dec
|
basic_machine=pdp11-dec
|
||||||
;;
|
;;
|
||||||
we32k)
|
we32k)
|
||||||
basic_machine=we32k-att
|
basic_machine=we32k-att
|
||||||
;;
|
;;
|
||||||
sparc)
|
sh3 | sh4 | sh3eb | sh4eb)
|
||||||
|
basic_machine=sh-unknown
|
||||||
|
;;
|
||||||
|
sparc | sparcv9 | sparcv9b)
|
||||||
basic_machine=sparc-sun
|
basic_machine=sparc-sun
|
||||||
;;
|
;;
|
||||||
cydra)
|
cydra)
|
||||||
@@ -657,6 +993,19 @@ case $basic_machine in
|
|||||||
orion105)
|
orion105)
|
||||||
basic_machine=clipper-highlevel
|
basic_machine=clipper-highlevel
|
||||||
;;
|
;;
|
||||||
|
mac | mpw | mac-mpw)
|
||||||
|
basic_machine=m68k-apple
|
||||||
|
;;
|
||||||
|
pmac | pmac-mpw)
|
||||||
|
basic_machine=powerpc-apple
|
||||||
|
;;
|
||||||
|
c4x*)
|
||||||
|
basic_machine=c4x-none
|
||||||
|
os=-coff
|
||||||
|
;;
|
||||||
|
*-unknown)
|
||||||
|
# Make sure to match an already-canonicalized machine name.
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
@@ -710,13 +1059,37 @@ case $os in
|
|||||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||||
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
|
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
|
||||||
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
|
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||||
| -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
| -chorusos* | -chorusrdb* \
|
||||||
| -mingw32* | -linux-gnu* | -uxpv* | -beos*)
|
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||||
|
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
|
||||||
|
| -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
|
||||||
|
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||||
|
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||||
|
| -os2* | -vos*)
|
||||||
# Remember, each alternative MUST END IN *, to match a version number.
|
# Remember, each alternative MUST END IN *, to match a version number.
|
||||||
;;
|
;;
|
||||||
|
-qnx*)
|
||||||
|
case $basic_machine in
|
||||||
|
x86-* | i*86-*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
os=-nto$os
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
-nto*)
|
||||||
|
os=-nto-qnx
|
||||||
|
;;
|
||||||
|
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
|
||||||
|
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \
|
||||||
|
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
|
||||||
|
;;
|
||||||
|
-mac*)
|
||||||
|
os=`echo $os | sed -e 's|mac|macos|'`
|
||||||
|
;;
|
||||||
-linux*)
|
-linux*)
|
||||||
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
||||||
;;
|
;;
|
||||||
@@ -726,6 +1099,12 @@ case $os in
|
|||||||
-sunos6*)
|
-sunos6*)
|
||||||
os=`echo $os | sed -e 's|sunos6|solaris3|'`
|
os=`echo $os | sed -e 's|sunos6|solaris3|'`
|
||||||
;;
|
;;
|
||||||
|
-opened*)
|
||||||
|
os=-openedition
|
||||||
|
;;
|
||||||
|
-wince*)
|
||||||
|
os=-wince
|
||||||
|
;;
|
||||||
-osfrose*)
|
-osfrose*)
|
||||||
os=-osfrose
|
os=-osfrose
|
||||||
;;
|
;;
|
||||||
@@ -741,12 +1120,18 @@ case $os in
|
|||||||
-acis*)
|
-acis*)
|
||||||
os=-aos
|
os=-aos
|
||||||
;;
|
;;
|
||||||
|
-386bsd)
|
||||||
|
os=-bsd
|
||||||
|
;;
|
||||||
-ctix* | -uts*)
|
-ctix* | -uts*)
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
-ns2 )
|
-ns2 )
|
||||||
os=-nextstep2
|
os=-nextstep2
|
||||||
;;
|
;;
|
||||||
|
-nsk*)
|
||||||
|
os=-nsk
|
||||||
|
;;
|
||||||
# Preserve the version number of sinix5.
|
# Preserve the version number of sinix5.
|
||||||
-sinix5.*)
|
-sinix5.*)
|
||||||
os=`echo $os | sed -e 's|sinix|sysv|'`
|
os=`echo $os | sed -e 's|sinix|sysv|'`
|
||||||
@@ -772,9 +1157,18 @@ case $os in
|
|||||||
# This must come after -sysvr4.
|
# This must come after -sysvr4.
|
||||||
-sysv*)
|
-sysv*)
|
||||||
;;
|
;;
|
||||||
|
-ose*)
|
||||||
|
os=-ose
|
||||||
|
;;
|
||||||
|
-es1800*)
|
||||||
|
os=-ose
|
||||||
|
;;
|
||||||
-xenix)
|
-xenix)
|
||||||
os=-xenix
|
os=-xenix
|
||||||
;;
|
;;
|
||||||
|
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
|
||||||
|
os=-mint
|
||||||
|
;;
|
||||||
-none)
|
-none)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -800,9 +1194,15 @@ case $basic_machine in
|
|||||||
*-acorn)
|
*-acorn)
|
||||||
os=-riscix1.2
|
os=-riscix1.2
|
||||||
;;
|
;;
|
||||||
|
arm*-rebel)
|
||||||
|
os=-linux
|
||||||
|
;;
|
||||||
arm*-semi)
|
arm*-semi)
|
||||||
os=-aout
|
os=-aout
|
||||||
;;
|
;;
|
||||||
|
pdp10-*)
|
||||||
|
os=-tops20
|
||||||
|
;;
|
||||||
pdp11-*)
|
pdp11-*)
|
||||||
os=-none
|
os=-none
|
||||||
;;
|
;;
|
||||||
@@ -821,6 +1221,15 @@ case $basic_machine in
|
|||||||
# default.
|
# default.
|
||||||
# os=-sunos4
|
# os=-sunos4
|
||||||
;;
|
;;
|
||||||
|
m68*-cisco)
|
||||||
|
os=-aout
|
||||||
|
;;
|
||||||
|
mips*-cisco)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
|
mips*-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
*-tti) # must be before sparc entry or we get the wrong os.
|
*-tti) # must be before sparc entry or we get the wrong os.
|
||||||
os=-sysv3
|
os=-sysv3
|
||||||
;;
|
;;
|
||||||
@@ -833,6 +1242,15 @@ case $basic_machine in
|
|||||||
*-ibm)
|
*-ibm)
|
||||||
os=-aix
|
os=-aix
|
||||||
;;
|
;;
|
||||||
|
*-wec)
|
||||||
|
os=-proelf
|
||||||
|
;;
|
||||||
|
*-winbond)
|
||||||
|
os=-proelf
|
||||||
|
;;
|
||||||
|
*-oki)
|
||||||
|
os=-proelf
|
||||||
|
;;
|
||||||
*-hp)
|
*-hp)
|
||||||
os=-hpux
|
os=-hpux
|
||||||
;;
|
;;
|
||||||
@@ -893,9 +1311,21 @@ case $basic_machine in
|
|||||||
*-masscomp)
|
*-masscomp)
|
||||||
os=-rtu
|
os=-rtu
|
||||||
;;
|
;;
|
||||||
f301-fujitsu)
|
f30[01]-fujitsu | f700-fujitsu)
|
||||||
os=-uxpv
|
os=-uxpv
|
||||||
;;
|
;;
|
||||||
|
*-rom68k)
|
||||||
|
os=-coff
|
||||||
|
;;
|
||||||
|
*-*bug)
|
||||||
|
os=-coff
|
||||||
|
;;
|
||||||
|
*-apple)
|
||||||
|
os=-macos
|
||||||
|
;;
|
||||||
|
*-atari*)
|
||||||
|
os=-mint
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
os=-none
|
os=-none
|
||||||
;;
|
;;
|
||||||
@@ -917,9 +1347,15 @@ case $basic_machine in
|
|||||||
-aix*)
|
-aix*)
|
||||||
vendor=ibm
|
vendor=ibm
|
||||||
;;
|
;;
|
||||||
|
-beos*)
|
||||||
|
vendor=be
|
||||||
|
;;
|
||||||
-hpux*)
|
-hpux*)
|
||||||
vendor=hp
|
vendor=hp
|
||||||
;;
|
;;
|
||||||
|
-mpeix*)
|
||||||
|
vendor=hp
|
||||||
|
;;
|
||||||
-hiux*)
|
-hiux*)
|
||||||
vendor=hitachi
|
vendor=hitachi
|
||||||
;;
|
;;
|
||||||
@@ -935,7 +1371,7 @@ case $basic_machine in
|
|||||||
-genix*)
|
-genix*)
|
||||||
vendor=ns
|
vendor=ns
|
||||||
;;
|
;;
|
||||||
-mvs*)
|
-mvs* | -opened*)
|
||||||
vendor=ibm
|
vendor=ibm
|
||||||
;;
|
;;
|
||||||
-ptx*)
|
-ptx*)
|
||||||
@@ -947,9 +1383,29 @@ case $basic_machine in
|
|||||||
-aux*)
|
-aux*)
|
||||||
vendor=apple
|
vendor=apple
|
||||||
;;
|
;;
|
||||||
|
-hms*)
|
||||||
|
vendor=hitachi
|
||||||
|
;;
|
||||||
|
-mpw* | -macos*)
|
||||||
|
vendor=apple
|
||||||
|
;;
|
||||||
|
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
|
||||||
|
vendor=atari
|
||||||
|
;;
|
||||||
|
-vos*)
|
||||||
|
vendor=stratus
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
|
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
echo $basic_machine$os
|
echo $basic_machine$os
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "timestamp='"
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d"
|
||||||
|
# time-stamp-end: "'"
|
||||||
|
# End:
|
||||||
|
|||||||
1057
configure.in
@@ -3,11 +3,11 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
all:
|
all:
|
||||||
cd src; make
|
cd src; $(MAKE)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
cd src; make clean
|
cd src; $(MAKE) clean
|
||||||
cd samples; make clean
|
cd samples; $(MAKE) clean
|
||||||
|
|
||||||
samples:
|
samples:
|
||||||
cd samples; make
|
cd samples; $(MAKE)
|
||||||
|
|||||||
6
contrib/configure
vendored
@@ -819,6 +819,9 @@ trap 'rm -fr `echo "
|
|||||||
src/stc/Makefile
|
src/stc/Makefile
|
||||||
samples/Makefile
|
samples/Makefile
|
||||||
samples/mmedia/Makefile
|
samples/mmedia/Makefile
|
||||||
|
samples/ogl/Makefile
|
||||||
|
samples/ogl/ogledit/Makefile
|
||||||
|
samples/ogl/studio/Makefile
|
||||||
samples/stc/Makefile
|
samples/stc/Makefile
|
||||||
" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
|
" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
|
||||||
EOF
|
EOF
|
||||||
@@ -905,6 +908,9 @@ CONFIG_FILES=\${CONFIG_FILES-"Makefile
|
|||||||
src/stc/Makefile
|
src/stc/Makefile
|
||||||
samples/Makefile
|
samples/Makefile
|
||||||
samples/mmedia/Makefile
|
samples/mmedia/Makefile
|
||||||
|
samples/ogl/Makefile
|
||||||
|
samples/ogl/ogledit/Makefile
|
||||||
|
samples/ogl/studio/Makefile
|
||||||
samples/stc/Makefile
|
samples/stc/Makefile
|
||||||
"}
|
"}
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -44,5 +44,8 @@ AC_OUTPUT([
|
|||||||
src/stc/Makefile
|
src/stc/Makefile
|
||||||
samples/Makefile
|
samples/Makefile
|
||||||
samples/mmedia/Makefile
|
samples/mmedia/Makefile
|
||||||
|
samples/ogl/Makefile
|
||||||
|
samples/ogl/ogledit/Makefile
|
||||||
|
samples/ogl/studio/Makefile
|
||||||
samples/stc/Makefile
|
samples/stc/Makefile
|
||||||
])
|
])
|
||||||
|
|||||||
5
contrib/docs/.cvsignore
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
html
|
||||||
|
htmlhelp
|
||||||
|
pdf
|
||||||
|
winhelp
|
||||||
|
htb
|
||||||
|
Before Width: | Height: | Size: 225 B After Width: | Height: | Size: 978 B |
|
Before Width: | Height: | Size: 231 B After Width: | Height: | Size: 996 B |
|
Before Width: | Height: | Size: 164 B After Width: | Height: | Size: 959 B |
@@ -1,5 +1,5 @@
|
|||||||
[OPTIONS]
|
[OPTIONS]
|
||||||
BMROOT=d:\wx2\wxwind~1\docs\latex\ogl ; Assume that bitmaps are where the source is
|
BMROOT=d:\wx2\wxwind~1\contrib\docs\latex\ogl ; Assume that bitmaps are where the source is
|
||||||
TITLE=OGL Manual
|
TITLE=OGL Manual
|
||||||
CONTENTS=Contents
|
CONTENTS=Contents
|
||||||
COMPRESS=HIGH
|
COMPRESS=HIGH
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 137 B After Width: | Height: | Size: 998 B |
@@ -1,12 +1,10 @@
|
|||||||
#
|
# $Id$
|
||||||
# Makefile : Builds wxWindows utils for Unix.
|
|
||||||
#
|
CONTRIB_SAMPLES=mmedia ogl stc
|
||||||
|
|
||||||
all:
|
all:
|
||||||
cd mmedia; make
|
@for d in $(CONTRIB_SAMPLES); do (cd $$d && $(MAKE)); done
|
||||||
cd stc; make
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
cd mmedia; make clean
|
@for d in $(CONTRIB_SAMPLES); do (cd $$d && $(MAKE) clean); done
|
||||||
cd stc; make clean
|
|
||||||
|
|
||||||
|
|||||||
235
contrib/samples/mmedia/MMboardVC.dsp
Normal file
@@ -0,0 +1,235 @@
|
|||||||
|
# Microsoft Developer Studio Project File - Name="MMboardVC" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 5.00
|
||||||
|
# (Actually, generated by MakeProject, (c) Julian Smart, 1998)
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||||
|
|
||||||
|
CFG=MMboardVC - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "MMboardVC.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "MMboardVC.mak" CFG="MMboardVC - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "MMboardVC - Win32 Release" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "MMboardVC - Win32 Debug" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "MMboardVC - Win32 Debug DLL" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "MMboardVC - Win32 Release DLL" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
MTL=midl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "MMboardVC - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "Release"
|
||||||
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "Release"
|
||||||
|
# PROP Intermediate_Dir "Release"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
|
||||||
|
# SUBTRACT CPP /YX
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx.lib xpm.lib png.lib zlib.lib jpeg.lib tiff.lib mmedia.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib,libci.lib,msvcrtd.lib" /out:"Release/mmboard.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "Debug"
|
||||||
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "Debug"
|
||||||
|
# PROP Intermediate_Dir "Debug"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../include" /I "../../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxd.lib xpmd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib mmediad.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib,libcid.lib,msvcrt.lib" /out:"Debug/mmboard.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "DebugDLL"
|
||||||
|
# PROP BASE Intermediate_Dir "DebugDLL"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "DebugDLL"
|
||||||
|
# PROP Intermediate_Dir "DebugDLL"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../include" /I "../../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /Yu"wx/wxprec.h" /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_8d.lib mmediad.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/mmboard.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "ReleaseDLL"
|
||||||
|
# PROP BASE Intermediate_Dir "ReleaseDLL"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "ReleaseDLL"
|
||||||
|
# PROP Intermediate_Dir "ReleaseDLL"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /FD /c
|
||||||
|
# SUBTRACT CPP /YX
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_8.lib mmedia.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/mmboard.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "MMboardVC - Win32 Release"
|
||||||
|
# Name "MMboardVC - Win32 Debug"
|
||||||
|
# Name "MMboardVC - Win32 Debug DLL"
|
||||||
|
# Name "MMboardVC - Win32 Release DLL"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\mmboard.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "MMboardVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\mmboard.h
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "MMboardVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\mmbman.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "MMboardVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\mmbman.h
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "MMboardVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "MMboardVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\mmboard.rc
|
||||||
|
# ADD BASE RSC /l 0x809
|
||||||
|
# ADD RSC /l 0x809 /i "../../../include" /i "../../../contrib/include"
|
||||||
|
# End Source File
|
||||||
|
# End Target
|
||||||
|
# End Project
|
||||||
29
contrib/samples/mmedia/MMboardVC.dsw
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
Microsoft Developer Studio Workspace File, Format Version 5.00
|
||||||
|
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Project: "MMboardVC"=.\MMboardVC.dsp - Package Owner=<4>
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<4>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Global:
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<3>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
@@ -1,13 +1,5 @@
|
|||||||
#
|
# Makefile for mmedia sample.
|
||||||
# File: makefile.unx
|
# $Id$
|
||||||
# Author: Julian Smart
|
|
||||||
# Created: 1998
|
|
||||||
# Updated:
|
|
||||||
# Copyright: (c) 1998 Julian Smart
|
|
||||||
#
|
|
||||||
# "%W% %G%"
|
|
||||||
#
|
|
||||||
# Makefile for minimal example (UNIX).
|
|
||||||
|
|
||||||
top_srcdir = @top_srcdir@/..
|
top_srcdir = @top_srcdir@/..
|
||||||
top_builddir = ../../..
|
top_builddir = ../../..
|
||||||
@@ -17,25 +9,8 @@ PROGRAM=mmboard
|
|||||||
|
|
||||||
OBJECTS=mmboard.o mmbman.o
|
OBJECTS=mmboard.o mmbman.o
|
||||||
|
|
||||||
EXTRA_LIBS= $(top_builddir)/contrib/src/mmedia/libmmedia.@WX_TARGET_LIBRARY_TYPE@ @ESD_LINK@
|
APPEXTRALIBS=$(top_builddir)/lib/libmmedia.@WX_TARGET_LIBRARY_TYPE@ @ESD_LINK@
|
||||||
APPEXTRADEFS=-I$(top_srcdir)/contrib/include
|
APPEXTRADEFS=-I$(top_srcdir)/contrib/include
|
||||||
|
|
||||||
# the comment at the end of the next line is needed because otherwise autoconf
|
include $(top_builddir)/src/makeprog.env
|
||||||
# would remove this line completely - it contains a built-in hack to remove
|
|
||||||
# any VPATH assignment not containing ':'
|
|
||||||
VPATH = @PATH_IFS@$(top_srcdir)/contrib/samples/mmedia # ':' for autoconf
|
|
||||||
|
|
||||||
include ../../../src/make.env
|
|
||||||
|
|
||||||
.SUFFIXES: .o .cpp .c
|
|
||||||
|
|
||||||
.cpp.o:
|
|
||||||
$(CC) -c $(CPPFLAGS) $(EXTRA_CPPFLAGS) -o $@ $<
|
|
||||||
|
|
||||||
all: $(PROGRAM)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *.o $(PROGRAM)
|
|
||||||
|
|
||||||
mmboard: $(OBJECTS)
|
|
||||||
$(CC) $(LDFLAGS) -o mmboard $(OBJECTS) $(EXTRA_LIBS) $(LDLIBS) $(top_builddir)/lib/@WX_TARGET_LIBRARY@
|
|
||||||
|
|||||||
12
contrib/samples/ogl/Makefile.in
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#
|
||||||
|
# Makefile : Builds wxWindows utils for Unix.
|
||||||
|
#
|
||||||
|
|
||||||
|
OGL_SAMPLES=ogledit studio
|
||||||
|
|
||||||
|
all:
|
||||||
|
@for d in $(OGL_SAMPLES); do (cd $$d && $(MAKE)); done
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@for d in $(OGL_SAMPLES); do (cd $$d && $(MAKE) clean); done
|
||||||
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
#
|
|
||||||
# File: Makefile
|
|
||||||
# Author: Julian Smart
|
|
||||||
# Created: 1999
|
|
||||||
# Updated:
|
|
||||||
# Copyright: (c) 2000 Julian Smart
|
|
||||||
#
|
|
||||||
# Makefile for OGL demo (GTK version)
|
|
||||||
#
|
|
||||||
# This makefile requires wxWindows/GTK to be
|
|
||||||
# installed (possibly using "make install")
|
|
||||||
# on your system.
|
|
||||||
#
|
|
||||||
|
|
||||||
CPP = gcc -g
|
|
||||||
CC = gcc
|
|
||||||
WXCONFIG=../../../../wx-config
|
|
||||||
WXINCLUDE=-I../../../../include -I../../../include
|
|
||||||
WXLIB=-L../../../../lib -L../../../src/ogl
|
|
||||||
|
|
||||||
OBJECTS=ogledit.o palette.o doc.o view.o
|
|
||||||
|
|
||||||
ogledit: $(OBJECTS)
|
|
||||||
$(CPP) -o ogledit $(OBJECTS) `$(WXCONFIG) --libs` $(WXLIB) -logl
|
|
||||||
|
|
||||||
ogledit.o: ogledit.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c ogledit.cpp
|
|
||||||
|
|
||||||
palette.o: palette.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c palette.cpp
|
|
||||||
|
|
||||||
doc.o: doc.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c doc.cpp
|
|
||||||
|
|
||||||
view.o: view.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c view.cpp
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *.o ogledit
|
|
||||||
16
contrib/samples/ogl/ogledit/Makefile.in
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Makefile for OGLEdit example.
|
||||||
|
# $Id$
|
||||||
|
|
||||||
|
top_srcdir = @top_srcdir@/..
|
||||||
|
top_builddir = ../../../..
|
||||||
|
program_dir = contrib/samples/ogl/ogledit
|
||||||
|
|
||||||
|
PROGRAM=ogledit
|
||||||
|
|
||||||
|
OBJECTS=$(PROGRAM).o doc.o view.o palette.o
|
||||||
|
|
||||||
|
APPEXTRALIBS=$(top_builddir)/lib/libogl.@WX_TARGET_LIBRARY_TYPE@
|
||||||
|
APPEXTRADEFS=-I$(top_srcdir)/contrib/include
|
||||||
|
|
||||||
|
include $(top_builddir)/src/makeprog.env
|
||||||
|
|
||||||
315
contrib/samples/ogl/ogledit/OGLEditVC.dsp
Normal file
@@ -0,0 +1,315 @@
|
|||||||
|
# Microsoft Developer Studio Project File - Name="OGLEditVC" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 5.00
|
||||||
|
# (Actually, generated by MakeProject, (c) Julian Smart, 1998)
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||||
|
|
||||||
|
CFG=OGLEditVC - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "OGLEditVC.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "OGLEditVC.mak" CFG="OGLEditVC - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "OGLEditVC - Win32 Release" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "OGLEditVC - Win32 Debug" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "OGLEditVC - Win32 Debug DLL" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "OGLEditVC - Win32 Release DLL" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
MTL=midl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "OGLEditVC - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "Release"
|
||||||
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "Release"
|
||||||
|
# PROP Intermediate_Dir "Release"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
|
||||||
|
# SUBTRACT CPP /YX
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx.lib xpm.lib png.lib zlib.lib jpeg.lib tiff.lib ogl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib,libci.lib,msvcrtd.lib" /out:"Release/ogledit.exe" /libpath:"../../../../lib" /libpath:"../../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "Debug"
|
||||||
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "Debug"
|
||||||
|
# PROP Intermediate_Dir "Debug"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../../include" /I "../../../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxd.lib xpmd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib ogld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib,libcid.lib,msvcrt.lib" /out:"Debug/ogledit.exe" /pdbtype:sept /libpath:"../../../../lib" /libpath:"../../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "DebugDLL"
|
||||||
|
# PROP BASE Intermediate_Dir "DebugDLL"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "DebugDLL"
|
||||||
|
# PROP Intermediate_Dir "DebugDLL"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../../include" /I "../../../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /Yu"wx/wxprec.h" /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_8d.lib ogld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/ogledit.exe" /pdbtype:sept /libpath:"../../../../lib" /libpath:"../../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "ReleaseDLL"
|
||||||
|
# PROP BASE Intermediate_Dir "ReleaseDLL"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "ReleaseDLL"
|
||||||
|
# PROP Intermediate_Dir "ReleaseDLL"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /FD /c
|
||||||
|
# SUBTRACT CPP /YX
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_8.lib ogl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/ogledit.exe" /libpath:"../../../../lib" /libpath:"../../../../contrib/lib"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "OGLEditVC - Win32 Release"
|
||||||
|
# Name "OGLEditVC - Win32 Debug"
|
||||||
|
# Name "OGLEditVC - Win32 Debug DLL"
|
||||||
|
# Name "OGLEditVC - Win32 Release DLL"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ogledit.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "OGLEditVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\doc.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "OGLEditVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\palette.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "OGLEditVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\view.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "OGLEditVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\doc.h
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "OGLEditVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ogledit.h
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "OGLEditVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\palette.h
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "OGLEditVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\view.h
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "OGLEditVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "OGLEditVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ogledit.rc
|
||||||
|
# ADD BASE RSC /l 0x809
|
||||||
|
# ADD RSC /l 0x809 /i "../../../../include" /i "../../../../contrib/include"
|
||||||
|
# End Source File
|
||||||
|
# End Target
|
||||||
|
# End Project
|
||||||
29
contrib/samples/ogl/ogledit/OGLEditVC.dsw
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
Microsoft Developer Studio Workspace File, Format Version 5.00
|
||||||
|
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Project: "OGLEditVC"=.\OGLEditVC.dsp - Package Owner=<4>
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<4>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Global:
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<3>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
@@ -1,20 +1,39 @@
|
|||||||
#
|
#
|
||||||
# File: makefile.unx
|
# File: Makefile
|
||||||
# Author: Julian Smart
|
# Author: Julian Smart
|
||||||
# Created: 1998
|
# Created: 1999
|
||||||
# Updated:
|
# Updated:
|
||||||
# Copyright: (c) 1998 Julian Smart
|
# Copyright: (c) 2000 Julian Smart
|
||||||
#
|
#
|
||||||
# "%W% %G%"
|
# Makefile for OGL demo (GTK version)
|
||||||
|
#
|
||||||
|
# This makefile requires wxWindows/GTK to be
|
||||||
|
# installed (possibly using "make install")
|
||||||
|
# on your system.
|
||||||
#
|
#
|
||||||
# Makefile for OGLEdit example (UNIX).
|
|
||||||
|
|
||||||
PROGRAM=ogledit
|
CPP = gcc -g
|
||||||
|
CC = gcc
|
||||||
|
WXCONFIG=../../../../wx-config
|
||||||
|
WXINCLUDE=-I../../../../include -I../../../include
|
||||||
|
WXLIB=-L../../../../lib -L../../../src/ogl
|
||||||
|
|
||||||
OBJECTS=$(PROGRAM).o doc.o view.o palette.o
|
OBJECTS=ogledit.o palette.o doc.o view.o
|
||||||
|
|
||||||
# EXTRACPPFLAGS=-I$(WXDIR)/contrib/include
|
ogledit: $(OBJECTS)
|
||||||
EXTRALDLIBS=-logl$(GUISUFFIX)
|
$(CPP) -o ogledit $(OBJECTS) `$(WXCONFIG) --libs` $(WXLIB) -logl
|
||||||
|
|
||||||
include ../../../../src/makeprog.env
|
ogledit.o: ogledit.cpp
|
||||||
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c ogledit.cpp
|
||||||
|
|
||||||
|
palette.o: palette.cpp
|
||||||
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c palette.cpp
|
||||||
|
|
||||||
|
doc.o: doc.cpp
|
||||||
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c doc.cpp
|
||||||
|
|
||||||
|
view.o: view.cpp
|
||||||
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c view.cpp
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o ogledit
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ void MyCanvas::OnLeftClick(double x, double y, int keys)
|
|||||||
}
|
}
|
||||||
if (info)
|
if (info)
|
||||||
{
|
{
|
||||||
view->GetDocument()->GetCommandProcessor()->Submit(new DiagramCommand(info->GetClassName(), OGLEDIT_ADD_SHAPE, (DiagramDocument *)view->GetDocument(), info,
|
view->GetDocument()->GetCommandProcessor()->Submit(new DiagramCommand((char*) info->GetClassName(), OGLEDIT_ADD_SHAPE, (DiagramDocument *)view->GetDocument(), info,
|
||||||
x, y));
|
x, y));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
#
|
|
||||||
# File: Makefile
|
|
||||||
# Author: Julian Smart
|
|
||||||
# Created: 1999
|
|
||||||
# Updated:
|
|
||||||
# Copyright: (c) 2000 Julian Smart
|
|
||||||
#
|
|
||||||
# Makefile for OGL demo (GTK version)
|
|
||||||
#
|
|
||||||
# This makefile requires wxWindows/GTK to be
|
|
||||||
# installed (possibly using "make install")
|
|
||||||
# on your system.
|
|
||||||
#
|
|
||||||
|
|
||||||
CPP = gcc -g
|
|
||||||
CC = gcc
|
|
||||||
WXCONFIG=../../../../wx-config
|
|
||||||
WXINCLUDE=-I../../../../include -I../../../include
|
|
||||||
WXLIB=-L../../../../lib -L../../../src/ogl
|
|
||||||
|
|
||||||
OBJECTS=studio.o cspalette.o csprint.o dialogs.o doc.o mainfrm.o project.o shapes.o symbols.o view.o
|
|
||||||
|
|
||||||
studio: $(OBJECTS)
|
|
||||||
$(CPP) -o studio $(OBJECTS) `$(WXCONFIG) --libs` $(WXLIB) -logl
|
|
||||||
|
|
||||||
studio.o: studio.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c studio.cpp
|
|
||||||
|
|
||||||
cspalette.o: cspalette.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c cspalette.cpp
|
|
||||||
|
|
||||||
doc.o: doc.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c doc.cpp
|
|
||||||
|
|
||||||
view.o: view.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c view.cpp
|
|
||||||
|
|
||||||
dialogs.o: dialogs.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c dialogs.cpp
|
|
||||||
|
|
||||||
mainfrm.o: mainfrm.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c mainfrm.cpp
|
|
||||||
|
|
||||||
project.o: project.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c project.cpp
|
|
||||||
|
|
||||||
shapes.o: shapes.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c shapes.cpp
|
|
||||||
|
|
||||||
symbols.o: symbols.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c symbols.cpp
|
|
||||||
|
|
||||||
csprint.o: csprint.cpp
|
|
||||||
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c csprint.cpp
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *.o studio
|
|
||||||
19
contrib/samples/ogl/studio/Makefile.in
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Makefile for OGL Studio.
|
||||||
|
# $Id$
|
||||||
|
|
||||||
|
top_srcdir = @top_srcdir@/..
|
||||||
|
top_builddir = ../../../..
|
||||||
|
program_dir = contrib/samples/ogl/studio
|
||||||
|
|
||||||
|
PROGRAM=studio
|
||||||
|
|
||||||
|
DATAFILES=studio_resources.wxr
|
||||||
|
|
||||||
|
OBJECTS=$(PROGRAM).o doc.o shapes.o symbols.o view.o cspalette.o\
|
||||||
|
mainfrm.o project.o dialogs.o csprint.o
|
||||||
|
|
||||||
|
APPEXTRALIBS=$(top_builddir)/lib/libogl.@WX_TARGET_LIBRARY_TYPE@
|
||||||
|
APPEXTRADEFS=-I$(top_srcdir)/contrib/include -I$(top_srcdir)/$(program_dir)/bitmaps
|
||||||
|
|
||||||
|
include $(top_builddir)/src/makeprog.env
|
||||||
|
|
||||||
391
contrib/samples/ogl/studio/StudioVC.dsp
Normal file
@@ -0,0 +1,391 @@
|
|||||||
|
# Microsoft Developer Studio Project File - Name="StudioVC" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||||
|
|
||||||
|
CFG=StudioVC - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "StudioVC.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "StudioVC.mak" CFG="StudioVC - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "StudioVC - Win32 Release" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "StudioVC - Win32 Debug" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "StudioVC - Win32 Debug DLL" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "StudioVC - Win32 Release DLL" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP AllowPerConfigDependencies 0
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
MTL=midl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StudioVC - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "Release"
|
||||||
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "Release"
|
||||||
|
# PROP Intermediate_Dir "Release"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
|
||||||
|
# SUBTRACT CPP /YX
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx.lib xpm.lib png.lib zlib.lib jpeg.lib tiff.lib ogl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /out:"Release/studio.exe" /libpath:"../../../../lib" /libpath:"../../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "Debug"
|
||||||
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "Debug"
|
||||||
|
# PROP Intermediate_Dir "Debug"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxd.lib xpmd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib ogld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /out:"Debug/studio.exe" /pdbtype:sept /libpath:"../../../../lib" /libpath:"../../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "DebugDLL"
|
||||||
|
# PROP BASE Intermediate_Dir "DebugDLL"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "DebugDLL"
|
||||||
|
# PROP Intermediate_Dir "DebugDLL"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /Yu"wx/wxprec.h" /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_8d.lib ogld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/studio.exe" /pdbtype:sept /libpath:"../../../../lib" /libpath:"../../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "ReleaseDLL"
|
||||||
|
# PROP BASE Intermediate_Dir "ReleaseDLL"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "ReleaseDLL"
|
||||||
|
# PROP Intermediate_Dir "ReleaseDLL"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /FD /c
|
||||||
|
# SUBTRACT CPP /YX
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_8.lib ogl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/studio.exe" /libpath:"../../../../lib" /libpath:"../../../../contrib/lib"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "StudioVC - Win32 Release"
|
||||||
|
# Name "StudioVC - Win32 Debug"
|
||||||
|
# Name "StudioVC - Win32 Debug DLL"
|
||||||
|
# Name "StudioVC - Win32 Release DLL"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\cspalette.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StudioVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\cspalette.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\csprint.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StudioVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\dialogs.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StudioVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\dialogs.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\doc.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StudioVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\doc.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\mainfrm.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StudioVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\mainfrm.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\project.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StudioVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\project.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\shapes.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StudioVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\shapes.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\studio.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StudioVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\studio.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\studio.rc
|
||||||
|
# ADD BASE RSC /l 0x809
|
||||||
|
# ADD RSC /l 0x809 /i "../../../../include" /i "../../../../contrib/include"
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\symbols.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StudioVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\symbols.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\view.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StudioVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\view.h
|
||||||
|
# End Source File
|
||||||
|
# End Target
|
||||||
|
# End Project
|
||||||
29
contrib/samples/ogl/studio/StudioVC.dsw
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||||
|
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Project: "StudioVC"=.\StudioVC.dsp - Package Owner=<4>
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<4>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Global:
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<3>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
@@ -1,39 +1,57 @@
|
|||||||
#
|
#
|
||||||
# File: makefile.unx
|
# File: Makefile
|
||||||
# Author: Julian Smart
|
# Author: Julian Smart
|
||||||
# Created: 1998
|
# Created: 1999
|
||||||
# Updated:
|
# Updated:
|
||||||
# Copyright: (c) 1998 Julian Smart
|
# Copyright: (c) 2000 Julian Smart
|
||||||
#
|
#
|
||||||
# "%W% %G%"
|
# Makefile for OGL demo (GTK version)
|
||||||
|
#
|
||||||
|
# This makefile requires wxWindows/GTK to be
|
||||||
|
# installed (possibly using "make install")
|
||||||
|
# on your system.
|
||||||
#
|
#
|
||||||
# Makefile for OGL Studio (UNIX).
|
|
||||||
|
|
||||||
PROGRAM=studio
|
CPP = gcc -g
|
||||||
|
CC = gcc
|
||||||
|
WXCONFIG=../../../../wx-config
|
||||||
|
WXINCLUDE=-I../../../../include -I../../../include
|
||||||
|
WXLIB=-L../../../../lib -L../../../src/ogl
|
||||||
|
|
||||||
OBJECTS=$(PROGRAM).o doc.o shapes.o symbols.o view.o cspalette.o\
|
OBJECTS=studio.o cspalette.o csprint.o dialogs.o doc.o mainfrm.o project.o shapes.o symbols.o view.o
|
||||||
mainfrm.o project.o dialogs.o csprint.o
|
|
||||||
|
|
||||||
EXTRACPPFLAGS=-I$(WXDIR)/utils/ogl/src -I./bitmaps
|
studio: $(OBJECTS)
|
||||||
EXTRALDLIBS=-logl$(GUISUFFIX)
|
$(CPP) -o studio $(OBJECTS) `$(WXCONFIG) --libs` $(WXLIB) -logl
|
||||||
|
|
||||||
#WXDIR=/home/jacs/wx2
|
studio.o: studio.cpp
|
||||||
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c studio.cpp
|
||||||
|
|
||||||
include $(WXDIR)/src/makeprog.env
|
cspalette.o: cspalette.cpp
|
||||||
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c cspalette.cpp
|
||||||
|
|
||||||
cleanogl:
|
doc.o: doc.cpp
|
||||||
cd $(WXDIR)/utils/ogl/src; make -f makefile.unx cleanmotif
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c doc.cpp
|
||||||
|
|
||||||
ogl:
|
view.o: view.cpp
|
||||||
cd $(WXDIR)/utils/ogl/src; make -f makefile.unx motif
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c view.cpp
|
||||||
|
|
||||||
wx:
|
dialogs.o: dialogs.cpp
|
||||||
cd $(WXDIR)/src/motif; make -f makefile.unx motif
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c dialogs.cpp
|
||||||
|
|
||||||
cleanwx:
|
mainfrm.o: mainfrm.cpp
|
||||||
cd $(WXDIR)/src/motif; make -f makefile.unx cleanmotif
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c mainfrm.cpp
|
||||||
|
|
||||||
cleanall: cleanmotif cleanogl cleanwx
|
project.o: project.cpp
|
||||||
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c project.cpp
|
||||||
|
|
||||||
makeall: wx ogl motif
|
shapes.o: shapes.cpp
|
||||||
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c shapes.cpp
|
||||||
|
|
||||||
|
symbols.o: symbols.cpp
|
||||||
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c symbols.cpp
|
||||||
|
|
||||||
|
csprint.o: csprint.cpp
|
||||||
|
$(CPP) `$(WXCONFIG) --cflags` -I../../src $(WXINCLUDE) -c csprint.cpp
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o studio
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ PROGRAM=stctest
|
|||||||
|
|
||||||
OBJECTS=$(PROGRAM).o
|
OBJECTS=$(PROGRAM).o
|
||||||
|
|
||||||
APPEXTRALIBS=$(top_builddir)/contrib/src/stc/libstc.@WX_TARGET_LIBRARY_TYPE@
|
APPEXTRALIBS=$(top_builddir)/lib/libstc.@WX_TARGET_LIBRARY_TYPE@
|
||||||
APPEXTRADEFS=-I$(top_srcdir)/contrib/include
|
APPEXTRADEFS=-I$(top_srcdir)/contrib/include
|
||||||
|
|
||||||
DATAFILES=stctest.cpp
|
DATAFILES=stctest.cpp
|
||||||
|
|
||||||
include ../../../src/makeprog.env
|
include $(top_builddir)/src/makeprog.env
|
||||||
|
|||||||
175
contrib/samples/stc/StcTestVC.dsp
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
# Microsoft Developer Studio Project File - Name="StcTestVC" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 5.00
|
||||||
|
# (Actually, generated by MakeProject, (c) Julian Smart, 1998)
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||||
|
|
||||||
|
CFG=StcTestVC - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "StcTestVC.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "StcTestVC.mak" CFG="StcTestVC - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "StcTestVC - Win32 Release" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "StcTestVC - Win32 Debug" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "StcTestVC - Win32 Debug DLL" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "StcTestVC - Win32 Release DLL" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
MTL=midl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StcTestVC - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "Release"
|
||||||
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "Release"
|
||||||
|
# PROP Intermediate_Dir "Release"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
|
||||||
|
# SUBTRACT CPP /YX
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx.lib xpm.lib png.lib zlib.lib jpeg.lib tiff.lib stc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib,libci.lib,msvcrtd.lib" /out:"Release/stctest.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StcTestVC - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "Debug"
|
||||||
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "Debug"
|
||||||
|
# PROP Intermediate_Dir "Debug"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../include" /I "../../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxd.lib xpmd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib stcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib,libcid.lib,msvcrt.lib" /out:"Debug/stctest.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StcTestVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "DebugDLL"
|
||||||
|
# PROP BASE Intermediate_Dir "DebugDLL"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "DebugDLL"
|
||||||
|
# PROP Intermediate_Dir "DebugDLL"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../include" /I "../../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /Yu"wx/wxprec.h" /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_8d.lib stcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/stctest.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StcTestVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "ReleaseDLL"
|
||||||
|
# PROP BASE Intermediate_Dir "ReleaseDLL"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "ReleaseDLL"
|
||||||
|
# PROP Intermediate_Dir "ReleaseDLL"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /FD /c
|
||||||
|
# SUBTRACT CPP /YX
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
|
||||||
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_8.lib stc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/stctest.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "StcTestVC - Win32 Release"
|
||||||
|
# Name "StcTestVC - Win32 Debug"
|
||||||
|
# Name "StcTestVC - Win32 Debug DLL"
|
||||||
|
# Name "StcTestVC - Win32 Release DLL"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\stctest.cpp
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "StcTestVC - Win32 Release"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StcTestVC - Win32 Debug"
|
||||||
|
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StcTestVC - Win32 Debug DLL"
|
||||||
|
|
||||||
|
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||||
|
# SUBTRACT CPP /YX /Yc /Yu
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "StcTestVC - Win32 Release DLL"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\stctest.rc
|
||||||
|
# ADD BASE RSC /l 0x809
|
||||||
|
# ADD RSC /l 0x809 /i "../../../include" /i "../../../contrib/include"
|
||||||
|
# End Source File
|
||||||
|
# End Target
|
||||||
|
# End Project
|
||||||
29
contrib/samples/stc/StcTestVC.dsw
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
Microsoft Developer Studio Workspace File, Format Version 5.00
|
||||||
|
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Project: "StcTestVC"=.\StcTestVC.dsp - Package Owner=<4>
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<4>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Global:
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<3>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
@@ -165,7 +165,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
|||||||
ed->EmptyUndoBuffer();
|
ed->EmptyUndoBuffer();
|
||||||
|
|
||||||
ed->SetLexer(wxSTC_LEX_CPP);
|
ed->SetLexer(wxSTC_LEX_CPP);
|
||||||
ed->SetKeywords(0,
|
ed->SetKeyWords(0,
|
||||||
"asm auto bool break case catch char class const "
|
"asm auto bool break case catch char class const "
|
||||||
"const_cast continue default delete do double "
|
"const_cast continue default delete do double "
|
||||||
"dynamic_cast else enum explicit export extern "
|
"dynamic_cast else enum explicit export extern "
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
#
|
# $Id$
|
||||||
# Makefile : Builds wxWindows contrib src for Unix.
|
|
||||||
#
|
|
||||||
|
|
||||||
CONTRIB_SUBDIRS=ogl mmedia stc
|
CONTRIB_SUBDIRS=ogl mmedia stc
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
#
|
# $Id$
|
||||||
|
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@/..
|
||||||
top_builddir = ../../..
|
top_builddir = ../../..
|
||||||
|
libsrc_dir = contrib/src/mmedia
|
||||||
|
|
||||||
TARGET_LIBNAME=libmmedia
|
TARGET_LIBNAME=libmmedia
|
||||||
|
|
||||||
@@ -9,17 +10,20 @@ LIBVERSION_CURRENT=1
|
|||||||
LIBVERSION_REVISION=0
|
LIBVERSION_REVISION=0
|
||||||
LIBVERSION_AGE=0
|
LIBVERSION_AGE=0
|
||||||
|
|
||||||
|
HEADER_PATH=$(top_srcdir)/contrib/include/wx
|
||||||
|
HEADER_SUBDIR=mmedia
|
||||||
|
|
||||||
|
HEADERS=cdbase.h cdunix.h cdwin.h sndaiff.h sndbase.h sndcodec.h \
|
||||||
|
sndcpcm.h sndesd.h sndfile.h sndg72x.h sndmsad.h sndoss.h \
|
||||||
|
sndpcm.h sndulaw.h sndwav.h sndwin.h vidbase.h vidwin.h \
|
||||||
|
vidxanm.h
|
||||||
|
|
||||||
OBJECTS=cdbase.o cdwin.o g711.o g721.o g723_24.o \
|
OBJECTS=cdbase.o cdwin.o g711.o g721.o g723_24.o \
|
||||||
g723_40.o g72x.o sndaiff.o sndbase.o sndcodec.o \
|
g723_40.o g72x.o sndaiff.o sndbase.o sndcodec.o \
|
||||||
sndcpcm.o sndfile.o sndg72x.o sndpcm.o sndulaw.o \
|
sndcpcm.o sndfile.o sndg72x.o sndpcm.o sndulaw.o \
|
||||||
sndwav.o sndwin.o vidbase.o vidwin.o vidxanm.o sndoss.o sndesd.o
|
sndwav.o sndwin.o vidbase.o vidwin.o vidxanm.o sndoss.o sndesd.o
|
||||||
|
|
||||||
# the comment at the end of the next line is needed because otherwise autoconf
|
APPEXTRADEFS=-I$(top_srcdir)/contrib/include
|
||||||
# would remove this line completely - it contains a built-in hack to remove
|
|
||||||
# any VPATH assignment not containing ':'
|
|
||||||
VPATH = :$(top_srcdir)/src/mmedia # ':' for autoconf
|
|
||||||
|
|
||||||
APPEXTRADEFS=-I$(top_srcdir)/include
|
|
||||||
|
|
||||||
include $(top_builddir)/src/makelib.env
|
include $(top_builddir)/src/makelib.env
|
||||||
|
|
||||||
|
|||||||
@@ -312,8 +312,19 @@ FAIL_WITH(s->Write(&signature, 4).LastWrite() != 4, wxSOUND_INVSTRM);
|
|||||||
|
|
||||||
delete frmt;
|
delete frmt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(__ALPHA__) || defined(__IA64__)
|
||||||
|
// FIXME:
|
||||||
|
// Linux Alpha spits passing size_t to a wxDataOutputStream, since it
|
||||||
|
// appears to be an unsigned long type there.
|
||||||
|
// This is a bandaid for 2.2 to get it to build there until we fix it
|
||||||
|
// more sensibly.
|
||||||
|
|
||||||
|
data << (unsigned int)( fmt_data.GetSize() +
|
||||||
|
m_sndformat->GetBytesFromTime(time) );
|
||||||
|
#else
|
||||||
data << (fmt_data.GetSize() + m_sndformat->GetBytesFromTime(time));
|
data << (fmt_data.GetSize() + m_sndformat->GetBytesFromTime(time));
|
||||||
|
#endif
|
||||||
|
|
||||||
// We, finally, copy the header block to the output stream
|
// We, finally, copy the header block to the output stream
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,8 +18,10 @@
|
|||||||
#include <wx/wx.h>
|
#include <wx/wx.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
// Pizza !
|
// Pizza !
|
||||||
#include <wx/gtk/win_gtk.h>
|
#include <wx/gtk/win_gtk.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Intrinsic.h>
|
#include <X11/Intrinsic.h>
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
#
|
# $Id$
|
||||||
|
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@/..
|
||||||
top_builddir = ../../..
|
top_builddir = ../../..
|
||||||
|
libsrc_dir = contrib/src/ogl
|
||||||
|
|
||||||
TARGET_LIBNAME=libogl
|
TARGET_LIBNAME=libogl
|
||||||
|
|
||||||
@@ -9,14 +10,17 @@ LIBVERSION_CURRENT=1
|
|||||||
LIBVERSION_REVISION=0
|
LIBVERSION_REVISION=0
|
||||||
LIBVERSION_AGE=0
|
LIBVERSION_AGE=0
|
||||||
|
|
||||||
OBJECTS=basic.o bmpshape.o composit.o divided.o lines.o misc.o \
|
HEADER_PATH=$(top_srcdir)/contrib/include/wx
|
||||||
basic2.o canvas.o constrnt.o drawn.o mfutils.o ogldiag.o
|
HEADER_SUBDIR=ogl
|
||||||
|
|
||||||
# the comment at the end of the next line is needed because otherwise autoconf
|
HEADERS=basic.h basicp.h bmpshape.h canvas.h composit.h constrnt.h \
|
||||||
# would remove this line completely - it contains a built-in hack to remove
|
divided.h drawn.h drawnp.h lines.h linesp.h mfutils.h misc.h \
|
||||||
# any VPATH assignment not containing ':'
|
ogl.h ogldiag.h
|
||||||
VPATH = :$(top_srcdir)/src/ogl # ':' for autoconf
|
|
||||||
|
|
||||||
APPEXTRADEFS=-I$(top_srcdir)/include
|
OBJECTS=basic.o bmpshape.o composit.o divided.o lines.o misc.o \
|
||||||
|
basic2.o canvas.o constrnt.o drawn.o mfutils.o ogldiag.o
|
||||||
|
|
||||||
|
APPEXTRADEFS=-I$(top_srcdir)/contrib/include
|
||||||
|
|
||||||
include $(top_builddir)/src/makelib.env
|
include $(top_builddir)/src/makelib.env
|
||||||
|
|
||||||
|
|||||||
@@ -132,7 +132,8 @@ DOCSOURCES=$(LOCALDOCDIR)\ogl.tex \
|
|||||||
$(LOCALDOCDIR)\topics.tex $(LOCALDOCDIR)\sample.tex
|
$(LOCALDOCDIR)\topics.tex $(LOCALDOCDIR)\sample.tex
|
||||||
|
|
||||||
html: $(DOCDIR)\html\ogl\ogl.htm
|
html: $(DOCDIR)\html\ogl\ogl.htm
|
||||||
htmlhelp: $(DOCDIR)\html\ogl\ogl.chm
|
htmlhelp: $(DOCDIR)\htmlhelp\ogl.chm
|
||||||
|
htb: $(DOCDIR)\htb\ogl.htb
|
||||||
hlp: $(DOCDIR)\winhelp\ogl.hlp
|
hlp: $(DOCDIR)\winhelp\ogl.hlp
|
||||||
pdfrtf: $(DOCDIR)\pdf\ogl.rtf
|
pdfrtf: $(DOCDIR)\pdf\ogl.rtf
|
||||||
ps: $(DOCDIR)\ps\ogl.ps
|
ps: $(DOCDIR)\ps\ogl.ps
|
||||||
@@ -166,16 +167,27 @@ $(DOCDIR)\html\ogl\ogl.htm: $(DOCSOURCES)
|
|||||||
copy *.gif $(DOCDIR)\html\ogl
|
copy *.gif $(DOCDIR)\html\ogl
|
||||||
-start $(WAITFLAG) tex2rtf $(LOCALDOCDIR)\ogl.tex $(DOCDIR)\html\ogl\ogl.htm -twice -html
|
-start $(WAITFLAG) tex2rtf $(LOCALDOCDIR)\ogl.tex $(DOCDIR)\html\ogl\ogl.htm -twice -html
|
||||||
-erase $(DOCDIR)\html\ogl\*.con
|
-erase $(DOCDIR)\html\ogl\*.con
|
||||||
-erase *.con
|
-erase *.con
|
||||||
-erase $(DOCDIR)\html\ogl\*.ref
|
-erase $(DOCDIR)\html\ogl\*.ref
|
||||||
cd $(THISDIR)
|
cd $(THISDIR)
|
||||||
|
|
||||||
|
$(DOCDIR)\htmlhelp\ogl.chm: $(DOCDIR)\html\ogl\ogl.htm $(DOCDIR)\html\ogl\ogl.hhp
|
||||||
$(DOCDIR)\html\ogl\ogl.chm: $(DOCDIR)\html\ogl\ogl.htm $(DOCDIR)\html\ogl\ogl.hhp
|
|
||||||
cd $(DOCDIR)\html\ogl
|
cd $(DOCDIR)\html\ogl
|
||||||
-hhc ogl.hhp
|
-hhc ogl.hhp
|
||||||
|
move ogl.chm $(DOCDIR)\htmlhelp\ogl.chm
|
||||||
cd $(THISDIR)
|
cd $(THISDIR)
|
||||||
|
|
||||||
|
# An htb file is a zip file containing the .htm, .gif, .hhp, .hhc and .hhk
|
||||||
|
# files, renamed to htb.
|
||||||
|
# This can then be used with e.g. helpview.
|
||||||
|
# Optionally, a cached version of the .hhp file can be generated with hhp2cached.
|
||||||
|
$(DOCDIR)\htb\ogl.htb: $(DOCDIR)\html\ogl\ogl.htm
|
||||||
|
cd $(DOCDIR)\html\ogl
|
||||||
|
-erase /Y ogl.zip ogl.htb
|
||||||
|
zip32 ogl.zip *.htm *.gif *.hhp *.hhc *.hhk
|
||||||
|
-mkdir $(DOCDIR)\htb
|
||||||
|
move ogl.zip $(DOCDIR)\htb\ogl.htb
|
||||||
|
cd $(THISDIR)
|
||||||
|
|
||||||
$(LOCALDOCDIR)\ogl.dvi: $(DOCSOURCES)
|
$(LOCALDOCDIR)\ogl.dvi: $(DOCSOURCES)
|
||||||
cd $(LOCALDOCDIR)
|
cd $(LOCALDOCDIR)
|
||||||
@@ -193,4 +205,3 @@ $(WXDIR)\docs\ps\ogl.ps: $(LOCALDOCDIR)\ogl.dvi
|
|||||||
move ogl.ps $(WXDIR)\docs\ps\ogl.ps
|
move ogl.ps $(WXDIR)\docs\ps\ogl.ps
|
||||||
cd $(THISDIR)
|
cd $(THISDIR)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,11 @@
|
|||||||
# Version: $Id$
|
# Version: $Id$
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@/..
|
||||||
top_builddir = ../../..
|
top_builddir = ../../..
|
||||||
|
|
||||||
this_dir = $(top_srcdir)/src/stc
|
scintilla_dir = $(top_srcdir)/contrib/src/stc/scintilla
|
||||||
scintilla_dir=$(this_dir)/scintilla
|
libsrc_dir = contrib/src/stc@PATH_IFS@$(scintilla_dir)/src
|
||||||
VPATH=$(this_dir)@PATH_IFS@$(scintilla_dir)/src # ':' for autoconf
|
|
||||||
|
|
||||||
TARGET_LIBNAME=libstc
|
TARGET_LIBNAME=libstc
|
||||||
|
|
||||||
@@ -18,23 +17,40 @@ LIBVERSION_CURRENT=1
|
|||||||
LIBVERSION_REVISION=0
|
LIBVERSION_REVISION=0
|
||||||
LIBVERSION_AGE=0
|
LIBVERSION_AGE=0
|
||||||
|
|
||||||
|
HEADER_PATH=$(top_srcdir)/contrib/include/wx
|
||||||
|
HEADER_SUBDIR=stc
|
||||||
|
|
||||||
|
HEADERS=stc.h
|
||||||
|
|
||||||
OBJECTS=PlatWX.o ScintillaWX.o stc.o \
|
OBJECTS=PlatWX.o ScintillaWX.o stc.o \
|
||||||
Accessor.o \
|
DocumentAccessor.o \
|
||||||
AutoComplete.o \
|
LexCPP.o \
|
||||||
|
LexHTML.o \
|
||||||
|
LexLua.o \
|
||||||
|
LexOthers.o \
|
||||||
|
LexPerl.o \
|
||||||
|
LexPython.o \
|
||||||
|
LexSQL.o \
|
||||||
|
LexVB.o \
|
||||||
|
UniConversion.o \
|
||||||
|
WindowAccessor.o \
|
||||||
|
AutoComplete.o \
|
||||||
CallTip.o \
|
CallTip.o \
|
||||||
CellBuffer.o \
|
CellBuffer.o \
|
||||||
ContractionState.o \
|
ContractionState.o \
|
||||||
Document.o \
|
Document.o \
|
||||||
Editor.o \
|
Editor.o \
|
||||||
Indicator.o \
|
Indicator.o \
|
||||||
KeyMap.o \
|
KeyMap.o \
|
||||||
KeyWords.o \
|
KeyWords.o \
|
||||||
LineMarker.o \
|
LineMarker.o \
|
||||||
PropSet.o \
|
PropSet.o \
|
||||||
ScintillaBase.o \
|
ScintillaBase.o \
|
||||||
Style.o \
|
Style.o \
|
||||||
ViewStyle.o
|
ViewStyle.o \
|
||||||
|
PosRegExp.o \
|
||||||
APPEXTRADEFS=-D__WX__ -DSCI_LEXER -I$(scintilla_dir)/src -I$(scintilla_dir)/include -I$(top_srcdir)/include
|
|
||||||
|
|
||||||
|
APPEXTRADEFS=-D__WX__ -DSCI_LEXER -I$(scintilla_dir)/src -I$(scintilla_dir)/include -I$(top_srcdir)/contrib/include
|
||||||
|
|
||||||
include $(top_builddir)/src/makelib.env
|
include $(top_builddir)/src/makelib.env
|
||||||
|
|||||||
@@ -4,17 +4,23 @@
|
|||||||
// Robin Dunn <robin@aldunn.com>
|
// Robin Dunn <robin@aldunn.com>
|
||||||
// The License.txt file describes the conditions under which this software may be distributed.
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "Platform.h"
|
#include "Platform.h"
|
||||||
#include "wx/stc/stc.h"
|
#include "wx/stc/stc.h"
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
Point Point::FromLong(long lpoint) {
|
Point Point::FromLong(long lpoint) {
|
||||||
return Point(lpoint & 0xFFFF, lpoint >> 32);
|
return Point(lpoint & 0xFFFF, lpoint >> 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxRect wxRectFromPRectangle(PRectangle prc) {
|
wxRect wxRectFromPRectangle(PRectangle prc) {
|
||||||
wxRect rc(prc.left, prc.top,
|
wxRect rc(prc.left, prc.top,
|
||||||
prc.right-prc.left+1, prc.bottom-prc.top+1);
|
prc.right-prc.left, prc.bottom-prc.top);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,14 +111,15 @@ Font::Font() {
|
|||||||
Font::~Font() {
|
Font::~Font() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Font::Create(const char *faceName, int size, bool bold, bool italic) {
|
void Font::Create(const char *faceName, int characterSet, int size, bool bold, bool italic) {
|
||||||
Release();
|
Release();
|
||||||
id = new wxFont(size,
|
id = new wxFont(size,
|
||||||
wxDEFAULT,
|
wxDEFAULT,
|
||||||
italic ? wxITALIC : wxNORMAL,
|
italic ? wxITALIC : wxNORMAL,
|
||||||
bold ? wxBOLD : wxNORMAL,
|
bold ? wxBOLD : wxNORMAL,
|
||||||
false,
|
false,
|
||||||
faceName);
|
faceName,
|
||||||
|
wxFONTENCODING_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -181,13 +188,21 @@ void Surface::BrushColor(Colour back) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Surface::SetFont(Font &font_) {
|
void Surface::SetFont(Font &font_) {
|
||||||
hdc->SetFont(*font_.GetID());
|
if (font_.GetID()) {
|
||||||
|
hdc->SetFont(*font_.GetID());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Surface::LogPixelsY() {
|
int Surface::LogPixelsY() {
|
||||||
return hdc->GetPPI().y;
|
return hdc->GetPPI().y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int Surface::DeviceHeightFont(int points) {
|
||||||
|
return points * LogPixelsY() / 72;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Surface::MoveTo(int x_, int y_) {
|
void Surface::MoveTo(int x_, int y_) {
|
||||||
x = x_;
|
x = x_;
|
||||||
y = y_;
|
y = y_;
|
||||||
@@ -232,7 +247,7 @@ void Surface::FillRectangle(PRectangle rc, Surface &surfacePattern) {
|
|||||||
void Surface::RoundedRectangle(PRectangle rc, Colour fore, Colour back) {
|
void Surface::RoundedRectangle(PRectangle rc, Colour fore, Colour back) {
|
||||||
PenColour(fore);
|
PenColour(fore);
|
||||||
BrushColor(back);
|
BrushColor(back);
|
||||||
hdc->DrawRoundedRectangle(wxRectFromPRectangle(rc), 8);
|
hdc->DrawRoundedRectangle(wxRectFromPRectangle(rc), 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Surface::Ellipse(PRectangle rc, Colour fore, Colour back) {
|
void Surface::Ellipse(PRectangle rc, Colour fore, Colour back) {
|
||||||
@@ -242,7 +257,8 @@ void Surface::Ellipse(PRectangle rc, Colour fore, Colour back) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Surface::Copy(PRectangle rc, Point from, Surface &surfaceSource) {
|
void Surface::Copy(PRectangle rc, Point from, Surface &surfaceSource) {
|
||||||
hdc->Blit(rc.left, rc.top, rc.Width(), rc.Height(),
|
wxRect r = wxRectFromPRectangle(rc);
|
||||||
|
hdc->Blit(r.x, r.y, r.width, r.height,
|
||||||
surfaceSource.hdc, from.x, from.y, wxCOPY);
|
surfaceSource.hdc, from.x, from.y, wxCOPY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -344,7 +360,8 @@ void Surface::SetClip(PRectangle rc) {
|
|||||||
hdc->SetClippingRegion(wxRectFromPRectangle(rc));
|
hdc->SetClippingRegion(wxRectFromPRectangle(rc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Surface::FlushCachedState() {
|
||||||
|
}
|
||||||
|
|
||||||
Window::~Window() {
|
Window::~Window() {
|
||||||
}
|
}
|
||||||
@@ -365,7 +382,8 @@ PRectangle Window::GetPosition() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Window::SetPosition(PRectangle rc) {
|
void Window::SetPosition(PRectangle rc) {
|
||||||
id->SetSize(rc.left, rc.top, rc.Width(), rc.Height());
|
wxRect r = wxRectFromPRectangle(rc);
|
||||||
|
id->SetSize(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::SetPositionRelative(PRectangle rc, Window) {
|
void Window::SetPositionRelative(PRectangle rc, Window) {
|
||||||
@@ -374,7 +392,7 @@ void Window::SetPositionRelative(PRectangle rc, Window) {
|
|||||||
|
|
||||||
PRectangle Window::GetClientPosition() {
|
PRectangle Window::GetClientPosition() {
|
||||||
wxSize sz = id->GetClientSize();
|
wxSize sz = id->GetClientSize();
|
||||||
return PRectangle(0, 0, sz.x - 1, sz.y - 1);
|
return PRectangle(0, 0, sz.x, sz.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::Show(bool show) {
|
void Window::Show(bool show) {
|
||||||
@@ -386,7 +404,8 @@ void Window::InvalidateAll() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Window::InvalidateRectangle(PRectangle rc) {
|
void Window::InvalidateRectangle(PRectangle rc) {
|
||||||
id->Refresh(false, &wxRectFromPRectangle(rc));
|
wxRect r = wxRectFromPRectangle(rc);
|
||||||
|
id->Refresh(false, &r);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::SetFont(Font &font) {
|
void Window::SetFont(Font &font) {
|
||||||
@@ -432,6 +451,76 @@ void Window::SetTitle(const char *s) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class wxSTCListBox : public wxListBox {
|
||||||
|
public:
|
||||||
|
wxSTCListBox(wxWindow* parent, wxWindowID id)
|
||||||
|
: wxListBox(parent, id, wxDefaultPosition, wxDefaultSize,
|
||||||
|
0, NULL, wxLB_SINGLE | wxLB_SORT | wxSIMPLE_BORDER)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void OnFocus(wxFocusEvent& event) {
|
||||||
|
GetParent()->SetFocus();
|
||||||
|
event.Skip();
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
void DoSetFirstItem(int n);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(wxSTCListBox, wxListBox)
|
||||||
|
EVT_SET_FOCUS(wxSTCListBox::OnFocus)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
// This can be removed after 2.2.2 I think
|
||||||
|
void wxSTCListBox::DoSetFirstItem( int n )
|
||||||
|
{
|
||||||
|
wxCHECK_RET( m_list, wxT("invalid listbox") );
|
||||||
|
|
||||||
|
if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (m_list))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// terribly efficient
|
||||||
|
const gchar *vadjustment_key = "gtk-vadjustment";
|
||||||
|
guint vadjustment_key_id = g_quark_from_static_string (vadjustment_key);
|
||||||
|
|
||||||
|
GtkAdjustment *adjustment =
|
||||||
|
(GtkAdjustment*) gtk_object_get_data_by_id (GTK_OBJECT (m_list), vadjustment_key_id);
|
||||||
|
wxCHECK_RET( adjustment, wxT("invalid listbox code") );
|
||||||
|
|
||||||
|
GList *target = g_list_nth( m_list->children, n );
|
||||||
|
wxCHECK_RET( target, wxT("invalid listbox index") );
|
||||||
|
|
||||||
|
GtkWidget *item = GTK_WIDGET(target->data);
|
||||||
|
wxCHECK_RET( item, wxT("invalid listbox code") );
|
||||||
|
|
||||||
|
// find the last item before this one which is already realized
|
||||||
|
size_t nItemsBefore;
|
||||||
|
for ( nItemsBefore = 0; item && (item->allocation.y == -1); nItemsBefore++ )
|
||||||
|
{
|
||||||
|
target = target->prev;
|
||||||
|
if ( !target )
|
||||||
|
{
|
||||||
|
// nothing we can do if there are no allocated items yet
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
item = GTK_WIDGET(target->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_adjustment_set_value(adjustment,
|
||||||
|
item->allocation.y +
|
||||||
|
nItemsBefore*item->allocation.height);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
ListBox::ListBox() {
|
ListBox::ListBox() {
|
||||||
}
|
}
|
||||||
@@ -440,8 +529,32 @@ ListBox::~ListBox() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ListBox::Create(Window &parent, int ctrlID) {
|
void ListBox::Create(Window &parent, int ctrlID) {
|
||||||
id = new wxListBox(parent.id, ctrlID, wxDefaultPosition, wxDefaultSize,
|
id = new wxSTCListBox(parent.id, ctrlID);
|
||||||
0, NULL, wxLB_SINGLE | wxLB_SORT);
|
// id = new wxListBox(parent.id, ctrlID, wxDefaultPosition, wxDefaultSize,
|
||||||
|
// 0, NULL, wxLB_SINGLE | wxLB_SORT | wxSIMPLE_BORDER);
|
||||||
|
}
|
||||||
|
|
||||||
|
PRectangle ListBox::GetDesiredRect() {
|
||||||
|
wxSize sz = ((wxListBox*)id)->GetBestSize();
|
||||||
|
PRectangle rc;
|
||||||
|
rc.top = 0;
|
||||||
|
rc.left = 0;
|
||||||
|
if (sz.x > 150) // TODO: A better way to determine these max sizes
|
||||||
|
sz.x = 150;
|
||||||
|
if (sz.y > 100)
|
||||||
|
sz.y = 100;
|
||||||
|
rc.right = sz.x;
|
||||||
|
rc.bottom = sz.y;
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ListBox::SetAverageCharWidth(int width) {
|
||||||
|
aveCharWidth = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ListBox::SetFont(Font &font) {
|
||||||
|
Window::SetFont(font);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ListBox::Clear() {
|
void ListBox::Clear() {
|
||||||
@@ -458,6 +571,13 @@ int ListBox::Length() {
|
|||||||
|
|
||||||
void ListBox::Select(int n) {
|
void ListBox::Select(int n) {
|
||||||
((wxListBox*)id)->SetSelection(n);
|
((wxListBox*)id)->SetSelection(n);
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
if (n > 4)
|
||||||
|
n = n - 4;
|
||||||
|
else
|
||||||
|
n = 1;
|
||||||
|
((wxListBox*)id)->SetFirstItem(n);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int ListBox::GetSelection() {
|
int ListBox::GetSelection() {
|
||||||
@@ -465,7 +585,14 @@ int ListBox::GetSelection() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int ListBox::Find(const char *prefix) {
|
int ListBox::Find(const char *prefix) {
|
||||||
return ((wxListBox*)id)->FindString(prefix);
|
if (prefix) {
|
||||||
|
for (int x=0; x < ((wxListBox*)id)->Number(); x++) {
|
||||||
|
wxString text = ((wxListBox*)id)->GetString(x);
|
||||||
|
if (text.StartsWith(prefix))
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ListBox::GetValue(int n, char *value, int len) {
|
void ListBox::GetValue(int n, char *value, int len) {
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
// Licence: wxWindows license
|
// Licence: wxWindows license
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "ScintillaWX.h"
|
#include "ScintillaWX.h"
|
||||||
#include "wx/stc/stc.h"
|
#include "wx/stc/stc.h"
|
||||||
|
|
||||||
@@ -60,6 +62,29 @@ void wxSTCDropTarget::OnLeave() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class wxSTCCallTip : public wxWindow {
|
||||||
|
public:
|
||||||
|
wxSTCCallTip(wxWindow* parent, int ID, CallTip* ct)
|
||||||
|
: wxWindow(parent, ID)
|
||||||
|
{
|
||||||
|
m_ct = ct;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnPaint(wxPaintEvent& evt) {
|
||||||
|
wxPaintDC dc(this);
|
||||||
|
Surface surfaceWindow;
|
||||||
|
surfaceWindow.Init(&dc);
|
||||||
|
m_ct->PaintCT(&surfaceWindow);
|
||||||
|
surfaceWindow.Release();
|
||||||
|
}
|
||||||
|
|
||||||
|
CallTip* m_ct;
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(wxSTCCallTip, wxWindow)
|
||||||
|
EVT_PAINT(wxSTCCallTip::OnPaint)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
// Constructor/Destructor
|
// Constructor/Destructor
|
||||||
@@ -193,9 +218,8 @@ void ScintillaWX::NotifyParent(SCNotification scn) {
|
|||||||
void ScintillaWX::Copy() {
|
void ScintillaWX::Copy() {
|
||||||
if (currentPos != anchor) {
|
if (currentPos != anchor) {
|
||||||
char* text = CopySelectionRange();
|
char* text = CopySelectionRange();
|
||||||
textDO.SetText(text);
|
|
||||||
wxTheClipboard->Open();
|
wxTheClipboard->Open();
|
||||||
wxTheClipboard->SetData(&textDO);
|
wxTheClipboard->SetData(new wxTextDataObject(text));
|
||||||
wxTheClipboard->Close();
|
wxTheClipboard->Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -236,7 +260,7 @@ bool ScintillaWX::CanPaste() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScintillaWX::CreateCallTipWindow(PRectangle) {
|
void ScintillaWX::CreateCallTipWindow(PRectangle) {
|
||||||
ct.wCallTip = new wxWindow(wDraw.GetID(), -1);
|
ct.wCallTip = new wxSTCCallTip(wDraw.GetID(), -1, &ct);
|
||||||
ct.wDraw = ct.wCallTip;
|
ct.wDraw = ct.wCallTip;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,8 +273,6 @@ void ScintillaWX::AddToPopUp(const char *label, int cmd, bool enabled) {
|
|||||||
|
|
||||||
if (!enabled)
|
if (!enabled)
|
||||||
popup.GetID()->Enable(cmd, enabled);
|
popup.GetID()->Enable(cmd, enabled);
|
||||||
|
|
||||||
// TODO: need to create event handler mappings for the cmd ID
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -259,18 +281,18 @@ void ScintillaWX::ClaimSelection() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LRESULT ScintillaWX::DefWndProc(UINT /*iMessage*/, WPARAM /*wParam*/, LPARAM /*lParam*/) {
|
long ScintillaWX::DefWndProc(unsigned int /*iMessage*/, unsigned long /*wParam*/, long /*lParam*/) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT ScintillaWX::WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) {
|
long ScintillaWX::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
|
||||||
switch (iMessage) {
|
// switch (iMessage) {
|
||||||
case EM_CANPASTE:
|
// case EM_CANPASTE:
|
||||||
return CanPaste();
|
// return CanPaste();
|
||||||
default:
|
// default:
|
||||||
return ScintillaBase::WndProc(iMessage, wParam, lParam);
|
return ScintillaBase::WndProc(iMessage, wParam, lParam);
|
||||||
}
|
// }
|
||||||
return 0;
|
// return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -293,6 +315,11 @@ void ScintillaWX::DoPaint(wxDC* dc, wxRect rect) {
|
|||||||
FullPaint();
|
FullPaint();
|
||||||
}
|
}
|
||||||
paintState = notPainting;
|
paintState = notPainting;
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
// On wxGTK the editor window paints can overwrite the listbox...
|
||||||
|
if (ac.Active())
|
||||||
|
((wxWindow*)ac.lb.GetID())->Refresh(TRUE);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -384,10 +411,36 @@ void ScintillaWX::DoButtonMove(Point pt) {
|
|||||||
|
|
||||||
|
|
||||||
void ScintillaWX::DoAddChar(char ch) {
|
void ScintillaWX::DoAddChar(char ch) {
|
||||||
|
//bool acActiveBeforeCharAdded = ac.Active();
|
||||||
AddChar(ch);
|
AddChar(ch);
|
||||||
|
//if (acActiveBeforeCharAdded)
|
||||||
|
// AutoCompleteChanged(ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScintillaWX::DoKeyDown(int key, bool shift, bool ctrl, bool alt) {
|
int ScintillaWX::DoKeyDown(int key, bool shift, bool ctrl, bool alt) {
|
||||||
|
switch (key) {
|
||||||
|
case WXK_DOWN: key = SCK_DOWN; break;
|
||||||
|
case WXK_UP: key = SCK_UP; break;
|
||||||
|
case WXK_LEFT: key = SCK_LEFT; break;
|
||||||
|
case WXK_RIGHT: key = SCK_RIGHT; break;
|
||||||
|
case WXK_HOME: key = SCK_HOME; break;
|
||||||
|
case WXK_END: key = SCK_END; break;
|
||||||
|
case WXK_PRIOR: key = SCK_PRIOR; break;
|
||||||
|
case WXK_NEXT: key = SCK_NEXT; break;
|
||||||
|
case WXK_DELETE: key = SCK_DELETE; break;
|
||||||
|
case WXK_INSERT: key = SCK_INSERT; break;
|
||||||
|
case WXK_ESCAPE: key = SCK_ESCAPE; break;
|
||||||
|
case WXK_BACK: key = SCK_BACK; break;
|
||||||
|
case WXK_TAB: key = SCK_TAB; break;
|
||||||
|
case WXK_RETURN: key = SCK_RETURN; break;
|
||||||
|
case WXK_ADD: key = SCK_ADD; break;
|
||||||
|
case WXK_SUBTRACT: key = SCK_SUBTRACT; break;
|
||||||
|
case WXK_DIVIDE: key = SCK_DIVIDE; break;
|
||||||
|
case WXK_CONTROL: key = 0; break;
|
||||||
|
case WXK_ALT: key = 0; break;
|
||||||
|
case WXK_SHIFT: key = 0; break;
|
||||||
|
}
|
||||||
|
|
||||||
return KeyDown(key, shift, ctrl, alt);
|
return KeyDown(key, shift, ctrl, alt);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -401,6 +454,9 @@ void ScintillaWX::DoContextMenu(Point pt) {
|
|||||||
ContextMenu(pt);
|
ContextMenu(pt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScintillaWX::DoOnListBox() {
|
||||||
|
AutoCompleteCompleted();
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -434,11 +490,15 @@ void ScintillaWX::DoDragLeave() {
|
|||||||
void ScintillaWX::FullPaint() {
|
void ScintillaWX::FullPaint() {
|
||||||
paintState = painting;
|
paintState = painting;
|
||||||
rcPaint = GetTextRectangle();
|
rcPaint = GetTextRectangle();
|
||||||
|
paintingAllText = true;
|
||||||
wxClientDC dc(wMain.GetID());
|
wxClientDC dc(wMain.GetID());
|
||||||
Surface surfaceWindow;
|
Surface surfaceWindow;
|
||||||
surfaceWindow.Init(&dc);
|
surfaceWindow.Init(&dc);
|
||||||
Paint(&surfaceWindow, rcPaint);
|
Paint(&surfaceWindow, rcPaint);
|
||||||
surfaceWindow.Release();
|
surfaceWindow.Release();
|
||||||
|
|
||||||
|
// wMain.GetID()->Refresh(FALSE);
|
||||||
|
|
||||||
paintState = notPainting;
|
paintState = notPainting;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -97,8 +97,12 @@ public:
|
|||||||
virtual void AddToPopUp(const char *label, int cmd = 0, bool enabled = true);
|
virtual void AddToPopUp(const char *label, int cmd = 0, bool enabled = true);
|
||||||
virtual void ClaimSelection();
|
virtual void ClaimSelection();
|
||||||
|
|
||||||
virtual LRESULT DefWndProc(UINT iMessage, WPARAM wParam, LPARAM lParam);
|
virtual long DefWndProc(unsigned int iMessage,
|
||||||
virtual LRESULT WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam);
|
unsigned long wParam,
|
||||||
|
long lParam);
|
||||||
|
virtual long WndProc(unsigned int iMessage,
|
||||||
|
unsigned long wParam,
|
||||||
|
long lParam);
|
||||||
|
|
||||||
virtual void NotifyChange();
|
virtual void NotifyChange();
|
||||||
virtual void NotifyParent(SCNotification scn);
|
virtual void NotifyParent(SCNotification scn);
|
||||||
@@ -126,6 +130,7 @@ public:
|
|||||||
|
|
||||||
void DoCommand(int ID);
|
void DoCommand(int ID);
|
||||||
void DoContextMenu(Point pt);
|
void DoContextMenu(Point pt);
|
||||||
|
void DoOnListBox();
|
||||||
|
|
||||||
|
|
||||||
// helpers
|
// helpers
|
||||||
@@ -139,7 +144,6 @@ private:
|
|||||||
bool capturedMouse;
|
bool capturedMouse;
|
||||||
wxStyledTextCtrl* stc;
|
wxStyledTextCtrl* stc;
|
||||||
|
|
||||||
wxTextDataObject textDO;
|
|
||||||
wxSTCDropTarget* dropTarget;
|
wxSTCDropTarget* dropTarget;
|
||||||
wxDragResult dragResult;
|
wxDragResult dragResult;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Microsoft Developer Studio Project File - Name="StcVC" - Package Owner=<4>
|
# Microsoft Developer Studio Project File - Name="StcVC" - Package Owner=<4>
|
||||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
# Microsoft Developer Studio Generated Build File, Format Version 5.00
|
||||||
# ** DO NOT EDIT **
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||||
@@ -22,11 +22,9 @@ CFG=StcVC - Win32 Debug
|
|||||||
!MESSAGE
|
!MESSAGE
|
||||||
|
|
||||||
# Begin Project
|
# Begin Project
|
||||||
# PROP AllowPerConfigDependencies 0
|
|
||||||
# PROP Scc_ProjName ""
|
# PROP Scc_ProjName ""
|
||||||
# PROP Scc_LocalPath ""
|
# PROP Scc_LocalPath ""
|
||||||
CPP=cl.exe
|
CPP=cl.exe
|
||||||
RSC=rc.exe
|
|
||||||
|
|
||||||
!IF "$(CFG)" == "StcVC - Win32 Release"
|
!IF "$(CFG)" == "StcVC - Win32 Release"
|
||||||
|
|
||||||
@@ -40,11 +38,12 @@ RSC=rc.exe
|
|||||||
# PROP Output_Dir "Release"
|
# PROP Output_Dir "Release"
|
||||||
# PROP Intermediate_Dir "Release"
|
# PROP Intermediate_Dir "Release"
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
|
RSC=rc.exe
|
||||||
|
# ADD BASE RSC /l 0x809
|
||||||
|
# ADD RSC /l 0x809
|
||||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../include" /I "scintilla/include" /I "scintilla/src" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "__WX__" /D "SCI_LEXER" /FD /c
|
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../include" /I "scintilla/include" /I "scintilla/src" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "__WX__" /D "SCI_LEXER" /FD /c
|
||||||
# SUBTRACT CPP /YX
|
# SUBTRACT CPP /YX
|
||||||
# ADD BASE RSC /l 0x809
|
|
||||||
# ADD RSC /l 0x809
|
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
# ADD BASE BSC32 /nologo
|
# ADD BASE BSC32 /nologo
|
||||||
# ADD BSC32 /nologo
|
# ADD BSC32 /nologo
|
||||||
@@ -64,11 +63,12 @@ LIB32=link.exe -lib
|
|||||||
# PROP Output_Dir "Debug"
|
# PROP Output_Dir "Debug"
|
||||||
# PROP Intermediate_Dir "Debug"
|
# PROP Intermediate_Dir "Debug"
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
|
RSC=rc.exe
|
||||||
|
# ADD BASE RSC /l 0x809
|
||||||
|
# ADD RSC /l 0x809
|
||||||
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "../../../include" /I "../../include" /I "scintilla/include" /I "scintilla/src" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "__WX__" /D "SCI_LEXER" /FD /c
|
# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "../../../include" /I "../../include" /I "scintilla/include" /I "scintilla/src" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "__WX__" /D "SCI_LEXER" /FD /c
|
||||||
# SUBTRACT CPP /YX
|
# SUBTRACT CPP /YX
|
||||||
# ADD BASE RSC /l 0x809
|
|
||||||
# ADD RSC /l 0x809
|
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
# ADD BASE BSC32 /nologo
|
# ADD BASE BSC32 /nologo
|
||||||
# ADD BSC32 /nologo
|
# ADD BSC32 /nologo
|
||||||
@@ -179,6 +179,34 @@ SOURCE=.\scintilla\src\KeyWords.cxx
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\scintilla\src\LexCPP.cxx
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\scintilla\src\LexHTML.cxx
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\scintilla\src\LexOthers.cxx
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\scintilla\src\LexPerl.cxx
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\scintilla\src\LexPython.cxx
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\scintilla\src\LexSQL.cxx
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\scintilla\src\LexVB.cxx
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\scintilla\src\LineMarker.cxx
|
SOURCE=.\scintilla\src\LineMarker.cxx
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|||||||
684
contrib/src/stc/gen_iface.py
Normal file
@@ -0,0 +1,684 @@
|
|||||||
|
#!/bin/env python
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Name: gen_iface.py
|
||||||
|
# Purpose: Generate stc.h and stc.cpp from the info in Scintilla.iface
|
||||||
|
#
|
||||||
|
# Author: Robin Dunn
|
||||||
|
#
|
||||||
|
# Created: 5-Sept-2000
|
||||||
|
# RCS-ID: $Id$
|
||||||
|
# Copyright: (c) 2000 by Total Control Software
|
||||||
|
# Licence: wxWindows license
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
import sys, string, re
|
||||||
|
from fileinput import FileInput
|
||||||
|
|
||||||
|
|
||||||
|
IFACE = './scintilla/include/Scintilla.iface'
|
||||||
|
H_TEMPLATE = './stc.h.in'
|
||||||
|
CPP_TEMPLATE = './stc.cpp.in'
|
||||||
|
H_DEST = '../../include/wx/stc/stc.h' # './stc_test.h' #
|
||||||
|
CPP_DEST = './stc.cpp' #'./stc_test.cpp'
|
||||||
|
|
||||||
|
|
||||||
|
# Value prefixes to convert
|
||||||
|
valPrefixes = [('SCI_', ''),
|
||||||
|
('SC_', ''),
|
||||||
|
('SCN_', None), # just toss these...
|
||||||
|
('SCEN_', None),
|
||||||
|
('SCE_', ''),
|
||||||
|
('SCLEX_', 'LEX_'),
|
||||||
|
('SCK_', 'KEY_'),
|
||||||
|
('SCFIND_', 'FIND_'),
|
||||||
|
('SCWS_', 'WS_'),
|
||||||
|
]
|
||||||
|
|
||||||
|
# Message funcion values that should have a CMD_ constant as well
|
||||||
|
cmdValues = [ (2300, 2350), 2011, 2013, (2176, 2180) ]
|
||||||
|
|
||||||
|
|
||||||
|
# Map some generic typenames to wx types, using return value syntax
|
||||||
|
retTypeMap = {
|
||||||
|
'position': 'int',
|
||||||
|
'string': 'wxString',
|
||||||
|
'colour': 'wxColour',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Map some generic typenames to wx types, using parameter syntax
|
||||||
|
paramTypeMap = {
|
||||||
|
'position': 'int',
|
||||||
|
'string': 'const wxString&',
|
||||||
|
'colour': 'const wxColour&',
|
||||||
|
'keymod': 'int',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Map of method info that needs tweaked. Either the name needs changed, or
|
||||||
|
# the method definition/implementation. Tuple items are:
|
||||||
|
#
|
||||||
|
# 1. New method name. None to skip the method, 0 to leave the
|
||||||
|
# default name.
|
||||||
|
# 2. Method definition for the .h file, 0 to leave alone
|
||||||
|
# 3. Method implementation for the .cpp file, 0 to leave alone.
|
||||||
|
# 4. tuple of Doc string lines, or 0 to leave alone.
|
||||||
|
#
|
||||||
|
methodOverrideMap = {
|
||||||
|
'AddText' : (0,
|
||||||
|
'void %s(const wxString& text);',
|
||||||
|
|
||||||
|
'''void %s(const wxString& text) {
|
||||||
|
SendMsg(%s, text.Len(), (long)text.c_str());''',
|
||||||
|
0),
|
||||||
|
|
||||||
|
'AddStyledText' : (0,
|
||||||
|
'void %s(const wxString& text);',
|
||||||
|
|
||||||
|
'''void %s(const wxString& text) {
|
||||||
|
SendMsg(%s, text.Len(), (long)text.c_str());''',
|
||||||
|
0),
|
||||||
|
|
||||||
|
'GetViewWS' : ( 'GetViewWhiteSpace', 0, 0, 0),
|
||||||
|
'SetViewWS' : ( 'SetViewWhiteSpace', 0, 0, 0),
|
||||||
|
|
||||||
|
'GetStyledText' : (0,
|
||||||
|
'wxString %s(int startPos, int endPos);',
|
||||||
|
|
||||||
|
'''wxString %s(int startPos, int endPos) {
|
||||||
|
wxString text;
|
||||||
|
int len = endPos - startPos;
|
||||||
|
TextRange tr;
|
||||||
|
tr.lpstrText = text.GetWriteBuf(len*2+1);
|
||||||
|
tr.chrg.cpMin = startPos;
|
||||||
|
tr.chrg.cpMax = endPos;
|
||||||
|
SendMsg(%s, 0, (long)&tr);
|
||||||
|
text.UngetWriteBuf(len*2);
|
||||||
|
return text;''',
|
||||||
|
|
||||||
|
('Retrieve a buffer of cells.',)),
|
||||||
|
|
||||||
|
|
||||||
|
'PositionFromPoint' : (0,
|
||||||
|
'int %s(wxPoint pt);',
|
||||||
|
|
||||||
|
'''int %s(wxPoint pt) {
|
||||||
|
return SendMsg(%s, pt.x, pt.y);''',
|
||||||
|
|
||||||
|
0),
|
||||||
|
|
||||||
|
'GetCurLine' : (0,
|
||||||
|
'wxString %s(int* OUTPUT=NULL);',
|
||||||
|
|
||||||
|
'''wxString %s(int* linePos) {
|
||||||
|
wxString text;
|
||||||
|
int len = LineLength(GetCurrentLine());
|
||||||
|
char* buf = text.GetWriteBuf(len+1);
|
||||||
|
|
||||||
|
int pos = SendMsg(%s, len, (long)buf);
|
||||||
|
text.UngetWriteBuf();
|
||||||
|
if (linePos) *linePos = pos;
|
||||||
|
|
||||||
|
return text;''',
|
||||||
|
|
||||||
|
0),
|
||||||
|
|
||||||
|
'SetUsePalette' : (None, 0,0,0),
|
||||||
|
|
||||||
|
'MarkerSetFore' : ('MarkerSetForeground', 0, 0, 0),
|
||||||
|
'MarkerSetBack' : ('MarkerSetBackground', 0, 0, 0),
|
||||||
|
|
||||||
|
'MarkerDefine' : (0,
|
||||||
|
'''void %s(int markerNumber, int markerSymbol,
|
||||||
|
const wxColour& foreground = wxNullColour,
|
||||||
|
const wxColour& background = wxNullColour);''',
|
||||||
|
|
||||||
|
'''void %s(int markerNumber, int markerSymbol,
|
||||||
|
const wxColour& foreground,
|
||||||
|
const wxColour& background) {
|
||||||
|
|
||||||
|
SendMsg(%s, markerNumber, markerSymbol);
|
||||||
|
if (foreground.Ok())
|
||||||
|
MarkerSetForeground(markerNumber, foreground);
|
||||||
|
if (background.Ok())
|
||||||
|
MarkerSetBackground(markerNumber, background);''',
|
||||||
|
|
||||||
|
('Set the symbol used for a particular marker number,',
|
||||||
|
'and optionally the for and background colours.')),
|
||||||
|
|
||||||
|
'SetMarginTypeN' : ('SetMarginType', 0, 0, 0),
|
||||||
|
'GetMarginTypeN' : ('GetMarginType', 0, 0, 0),
|
||||||
|
'SetMarginWidthN' : ('SetMarginWidth', 0, 0, 0),
|
||||||
|
'GetMarginWidthN' : ('GetMarginWidth', 0, 0, 0),
|
||||||
|
'SetMarginMaskN' : ('SetMarginMask', 0, 0, 0),
|
||||||
|
'GetMarginMaskN' : ('GetMarginMask', 0, 0, 0),
|
||||||
|
'SetMarginSensitiveN' : ('SetMarginSensitive', 0, 0, 0),
|
||||||
|
'GetMarginSensitiveN' : ('GetMarginSensitive', 0, 0, 0),
|
||||||
|
|
||||||
|
'StyleSetFore' : ('StyleSetForeground', 0, 0, 0),
|
||||||
|
'StyleSetBack' : ('StyleSetBackground', 0, 0, 0),
|
||||||
|
'SetSelFore' : ('SetSelForeground', 0, 0, 0),
|
||||||
|
'SetSelBack' : ('SetSelBackground', 0, 0, 0),
|
||||||
|
'SetCaretFore' : ('SetCaretForeground', 0, 0, 0),
|
||||||
|
'StyleSetFont' : ('StyleSetFaceName', 0, 0, 0),
|
||||||
|
|
||||||
|
# need to fix this to map between wx and scintilla encoding flags, leave it out for now...
|
||||||
|
'StyleSetCharacterSet' : (None, 0, 0, 0),
|
||||||
|
|
||||||
|
'AssignCmdKey' : ('CmdKeyAssign',
|
||||||
|
'void %s(int key, int modifiers, int cmd);',
|
||||||
|
|
||||||
|
'''void %s(int key, int modifiers, int cmd) {
|
||||||
|
SendMsg(%s, MAKELONG(key, modifiers), cmd);''',
|
||||||
|
|
||||||
|
0),
|
||||||
|
|
||||||
|
'ClearCmdKey' : ('CmdKeyClear',
|
||||||
|
'void %s(int key, int modifiers);',
|
||||||
|
|
||||||
|
'''void %s(int key, int modifiers) {
|
||||||
|
SendMsg(%s, MAKELONG(key, modifiers));''',
|
||||||
|
|
||||||
|
0),
|
||||||
|
|
||||||
|
'ClearAllCmdKeys' : ('CmdKeyClearAll', 0, 0, 0),
|
||||||
|
|
||||||
|
|
||||||
|
'SetStylingEx' : ('SetStyleBytes',
|
||||||
|
'void %s(int length, char* styleBytes);',
|
||||||
|
|
||||||
|
'''void %s(int length, char* styleBytes) {
|
||||||
|
SendMsg(%s, length, (long)styleBytes);''',
|
||||||
|
|
||||||
|
0),
|
||||||
|
|
||||||
|
|
||||||
|
'IndicSetStyle' : ('IndicatorSetStyle', 0, 0, 0),
|
||||||
|
'IndicGetStyle' : ('IndicatorGetStyle', 0, 0, 0),
|
||||||
|
'IndicSetFore' : ('IndicatorSetForeground', 0, 0, 0),
|
||||||
|
'IndicGetFore' : ('IndicatorGetForeground', 0, 0, 0),
|
||||||
|
|
||||||
|
'AutoCShow' : ('AutoCompShow', 0, 0, 0),
|
||||||
|
'AutoCCancel' : ('AutoCompCancel', 0, 0, 0),
|
||||||
|
'AutoCActive' : ('AutoCompActive', 0, 0, 0),
|
||||||
|
'AutoCPosStart' : ('AutoCompPosStart', 0, 0, 0),
|
||||||
|
'AutoCComplete' : ('AutoCompComplete', 0, 0, 0),
|
||||||
|
'AutoCStops' : ('AutoCompStops', 0, 0, 0),
|
||||||
|
'AutoCSetSeparator' : ('AutoCompSetSeparator', 0, 0, 0),
|
||||||
|
'AutoCGetSeparator' : ('AutoCompGetSeparator', 0, 0, 0),
|
||||||
|
'AutoCSelect' : ('AutoCompSelect', 0, 0, 0),
|
||||||
|
'AutoCSetCancelAtStart' : ('AutoCompSetCancelAtStart', 0, 0, 0),
|
||||||
|
'AutoCGetCancelAtStart' : ('AutoCompGetCancelAtStart', 0, 0, 0),
|
||||||
|
'AutoCSetFillUps' : ('AutoCompSetFillUps', 0, 0, 0),
|
||||||
|
'AutoCSetChooseSingle' : ('AutoCompSetChooseSingle', 0, 0, 0),
|
||||||
|
'AutoCGetChooseSingle' : ('AutoCompGetChooseSingle', 0, 0, 0),
|
||||||
|
'AutoCSetIgnoreCase' : ('AutoCompSetIgnoreCase', 0, 0, 0),
|
||||||
|
'AutoCGetIgnoreCase' : ('AutoCompGetIgnoreCase', 0, 0, 0),
|
||||||
|
|
||||||
|
'SetHScrollBar' : ('SetUseHorizontalScrollBar', 0, 0, 0),
|
||||||
|
'GetHScrollBar' : ('GetUseHorizontalScrollBar', 0, 0, 0),
|
||||||
|
|
||||||
|
'GetCaretFore' : ('GetCaretForeground', 0, 0, 0),
|
||||||
|
|
||||||
|
'GetUsePalette' : (None, 0, 0, 0),
|
||||||
|
|
||||||
|
'FindText' : (0,
|
||||||
|
'''int %s(int minPos, int maxPos,
|
||||||
|
const wxString& text,
|
||||||
|
bool caseSensitive, bool wholeWord);''',
|
||||||
|
'''int %s(int minPos, int maxPos,
|
||||||
|
const wxString& text,
|
||||||
|
bool caseSensitive, bool wholeWord) {
|
||||||
|
TextToFind ft;
|
||||||
|
int flags = 0;
|
||||||
|
|
||||||
|
flags |= caseSensitive ? SCFIND_MATCHCASE : 0;
|
||||||
|
flags |= wholeWord ? SCFIND_WHOLEWORD : 0;
|
||||||
|
ft.chrg.cpMin = minPos;
|
||||||
|
ft.chrg.cpMax = maxPos;
|
||||||
|
ft.lpstrText = (char*)text.c_str();
|
||||||
|
|
||||||
|
return SendMsg(%s, flags, (long)&ft);''',
|
||||||
|
0),
|
||||||
|
|
||||||
|
'FormatRange' : (0,
|
||||||
|
'''int %s(bool doDraw,
|
||||||
|
int startPos,
|
||||||
|
int endPos,
|
||||||
|
wxDC* draw,
|
||||||
|
wxDC* target, // Why does it use two? Can they be the same?
|
||||||
|
wxRect renderRect,
|
||||||
|
wxRect pageRect);''',
|
||||||
|
''' int %s(bool doDraw,
|
||||||
|
int startPos,
|
||||||
|
int endPos,
|
||||||
|
wxDC* draw,
|
||||||
|
wxDC* target, // Why does it use two? Can they be the same?
|
||||||
|
wxRect renderRect,
|
||||||
|
wxRect pageRect) {
|
||||||
|
RangeToFormat fr;
|
||||||
|
|
||||||
|
fr.hdc = draw;
|
||||||
|
fr.hdcTarget = target;
|
||||||
|
fr.rc.top = renderRect.GetTop();
|
||||||
|
fr.rc.left = renderRect.GetLeft();
|
||||||
|
fr.rc.right = renderRect.GetRight();
|
||||||
|
fr.rc.bottom = renderRect.GetBottom();
|
||||||
|
fr.rcPage.top = pageRect.GetTop();
|
||||||
|
fr.rcPage.left = pageRect.GetLeft();
|
||||||
|
fr.rcPage.right = pageRect.GetRight();
|
||||||
|
fr.rcPage.bottom = pageRect.GetBottom();
|
||||||
|
fr.chrg.cpMin = startPos;
|
||||||
|
fr.chrg.cpMax = endPos;
|
||||||
|
|
||||||
|
return SendMsg(%s, doDraw, (long)&fr);''',
|
||||||
|
0),
|
||||||
|
|
||||||
|
|
||||||
|
'GetLine' : (0,
|
||||||
|
'wxString %s(int line);',
|
||||||
|
|
||||||
|
'''wxString %s(int line) {
|
||||||
|
wxString text;
|
||||||
|
int len = LineLength(line);
|
||||||
|
char* buf = text.GetWriteBuf(len+1);
|
||||||
|
|
||||||
|
int pos = SendMsg(%s, line, (long)buf);
|
||||||
|
text.UngetWriteBuf();
|
||||||
|
|
||||||
|
return text;''',
|
||||||
|
|
||||||
|
('Retrieve the contents of a line.',)),
|
||||||
|
|
||||||
|
'SetSel' : ('SetSelection', 0, 0, 0),
|
||||||
|
'GetSelText' : ('GetSelectedText',
|
||||||
|
'wxString %s();',
|
||||||
|
|
||||||
|
'''wxString %s() {
|
||||||
|
wxString text;
|
||||||
|
int start;
|
||||||
|
int end;
|
||||||
|
|
||||||
|
GetSelection(&start, &end);
|
||||||
|
int len = end - start;
|
||||||
|
char* buff = text.GetWriteBuf(len+1);
|
||||||
|
|
||||||
|
SendMsg(%s, 0, (long)buff);
|
||||||
|
text.UngetWriteBuf();
|
||||||
|
return text;''',
|
||||||
|
|
||||||
|
('Retrieve the selected text.',)),
|
||||||
|
|
||||||
|
'GetTextRange' : (0,
|
||||||
|
'wxString %s(int startPos, int endPos);',
|
||||||
|
|
||||||
|
'''wxString %s(int startPos, int endPos) {
|
||||||
|
wxString text;
|
||||||
|
int len = endPos - startPos;
|
||||||
|
char* buff = text.GetWriteBuf(len+1);
|
||||||
|
TextRange tr;
|
||||||
|
tr.lpstrText = buff;
|
||||||
|
tr.chrg.cpMin = startPos;
|
||||||
|
tr.chrg.cpMax = endPos;
|
||||||
|
|
||||||
|
SendMsg(%s, 0, (long)&tr);
|
||||||
|
text.UngetWriteBuf();
|
||||||
|
return text;''',
|
||||||
|
|
||||||
|
('Retrieve a range of text.',)),
|
||||||
|
|
||||||
|
'PointXFromPosition' : (None, 0, 0, 0),
|
||||||
|
'PointYFromPosition' : (None, 0, 0, 0),
|
||||||
|
|
||||||
|
'ScrollCaret' : ('EnsureCaretVisible', 0, 0, 0),
|
||||||
|
'ReplaceSel' : ('ReplaceSelection', 0, 0, 0),
|
||||||
|
'Null' : (None, 0, 0, 0),
|
||||||
|
|
||||||
|
'GetText' : (0,
|
||||||
|
'wxString %s();',
|
||||||
|
|
||||||
|
'''wxString %s() {
|
||||||
|
wxString text;
|
||||||
|
int len = GetTextLength()+1;
|
||||||
|
char* buff = text.GetWriteBuf(len+1);
|
||||||
|
|
||||||
|
SendMsg(%s, len, (long)buff);
|
||||||
|
buff[len] = 0;
|
||||||
|
text.UngetWriteBuf();
|
||||||
|
return text;''',
|
||||||
|
|
||||||
|
('Retrieve all the text in the document.', )),
|
||||||
|
|
||||||
|
'GetDirectFunction' : (None, 0, 0, 0),
|
||||||
|
'GetDirectPointer' : (None, 0, 0, 0),
|
||||||
|
|
||||||
|
'CallTipPosStart' : ('CallTipPosAtStart', 0, 0, 0),
|
||||||
|
'CallTipSetHlt' : ('CallTipSetHighlight', 0, 0, 0),
|
||||||
|
'CallTipSetBack' : ('CallTipSetBackground', 0, 0, 0),
|
||||||
|
|
||||||
|
|
||||||
|
# Remove all methods that are key commands since they can be
|
||||||
|
# executed with CmdKeyExecute
|
||||||
|
'LineDown' : (None, 0, 0, 0),
|
||||||
|
'LineDownExtend' : (None, 0, 0, 0),
|
||||||
|
'LineUp' : (None, 0, 0, 0),
|
||||||
|
'LineUpExtend' : (None, 0, 0, 0),
|
||||||
|
'CharLeft' : (None, 0, 0, 0),
|
||||||
|
'CharLeftExtend' : (None, 0, 0, 0),
|
||||||
|
'CharRight' : (None, 0, 0, 0),
|
||||||
|
'CharRightExtend' : (None, 0, 0, 0),
|
||||||
|
'WordLeft' : (None, 0, 0, 0),
|
||||||
|
'WordLeftExtend' : (None, 0, 0, 0),
|
||||||
|
'WordRight' : (None, 0, 0, 0),
|
||||||
|
'WordRightExtend' : (None, 0, 0, 0),
|
||||||
|
'Home' : (None, 0, 0, 0),
|
||||||
|
'HomeExtend' : (None, 0, 0, 0),
|
||||||
|
'LineEnd' : (None, 0, 0, 0),
|
||||||
|
'LineEndExtend' : (None, 0, 0, 0),
|
||||||
|
'DocumentStart' : (None, 0, 0, 0),
|
||||||
|
'DocumentStartExtend' : (None, 0, 0, 0),
|
||||||
|
'DocumentEnd' : (None, 0, 0, 0),
|
||||||
|
'DocumentEndExtend' : (None, 0, 0, 0),
|
||||||
|
'PageUp' : (None, 0, 0, 0),
|
||||||
|
'PageUpExtend' : (None, 0, 0, 0),
|
||||||
|
'PageDown' : (None, 0, 0, 0),
|
||||||
|
'PageDownExtend' : (None, 0, 0, 0),
|
||||||
|
'EditToggleOvertype' : (None, 0, 0, 0),
|
||||||
|
'Cancel' : (None, 0, 0, 0),
|
||||||
|
'DeleteBack' : (None, 0, 0, 0),
|
||||||
|
'Tab' : (None, 0, 0, 0),
|
||||||
|
'BackTab' : (None, 0, 0, 0),
|
||||||
|
'NewLine' : (None, 0, 0, 0),
|
||||||
|
'FormFeed' : (None, 0, 0, 0),
|
||||||
|
'VCHome' : (None, 0, 0, 0),
|
||||||
|
'VCHomeExtend' : (None, 0, 0, 0),
|
||||||
|
'ZoomIn' : (None, 0, 0, 0),
|
||||||
|
'ZoomOut' : (None, 0, 0, 0),
|
||||||
|
'DelWordLeft' : (None, 0, 0, 0),
|
||||||
|
'DelWordRight' : (None, 0, 0, 0),
|
||||||
|
'LineCut' : (None, 0, 0, 0),
|
||||||
|
'LineDelete' : (None, 0, 0, 0),
|
||||||
|
'LineTranspose' : (None, 0, 0, 0),
|
||||||
|
'LowerCase' : (None, 0, 0, 0),
|
||||||
|
'UpperCase' : (None, 0, 0, 0),
|
||||||
|
'LineScrollDown' : (None, 0, 0, 0),
|
||||||
|
'LineScrollUp' : (None, 0, 0, 0),
|
||||||
|
|
||||||
|
|
||||||
|
'GetDocPointer' : (0,
|
||||||
|
'void* %s();',
|
||||||
|
'''void* %s() {
|
||||||
|
return (void*)SendMsg(%s);''',
|
||||||
|
0),
|
||||||
|
|
||||||
|
'SetDocPointer' : (0,
|
||||||
|
'void %s(void* docPointer);',
|
||||||
|
'''void %s(void* docPointer) {
|
||||||
|
SendMsg(%s, (long)docPointer);''',
|
||||||
|
0),
|
||||||
|
|
||||||
|
'CreateDocument' : (0,
|
||||||
|
'void* %s();',
|
||||||
|
'''void* %s() {
|
||||||
|
return (void*)SendMsg(%s);''',
|
||||||
|
0),
|
||||||
|
|
||||||
|
'AddRefDocument' : (0,
|
||||||
|
'void %s(void* docPointer);',
|
||||||
|
'''void %s(void* docPointer) {
|
||||||
|
SendMsg(%s, (long)docPointer);''',
|
||||||
|
0),
|
||||||
|
|
||||||
|
'ReleaseDocument' : (0,
|
||||||
|
'void %s(void* docPointer);',
|
||||||
|
'''void %s(void* docPointer) {
|
||||||
|
SendMsg(%s, (long)docPointer);''',
|
||||||
|
0),
|
||||||
|
|
||||||
|
'GrabFocus' : (None, 0, 0, 0),
|
||||||
|
|
||||||
|
'' : ('', 0, 0, 0),
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest):
|
||||||
|
curDocStrings = []
|
||||||
|
values = []
|
||||||
|
methods = []
|
||||||
|
|
||||||
|
# parse iface file
|
||||||
|
fi = FileInput(iface)
|
||||||
|
for line in fi:
|
||||||
|
line = line[:-1]
|
||||||
|
if line[:2] == '##' or line == '':
|
||||||
|
#curDocStrings = []
|
||||||
|
continue
|
||||||
|
|
||||||
|
op = line[:4]
|
||||||
|
if line[:2] == '# ': # a doc string
|
||||||
|
curDocStrings.append(line[2:])
|
||||||
|
|
||||||
|
elif op == 'val ':
|
||||||
|
parseVal(line[4:], values, curDocStrings)
|
||||||
|
curDocStrings = []
|
||||||
|
|
||||||
|
elif op == 'fun ' or op == 'set ' or op == 'get ':
|
||||||
|
parseFun(line[4:], methods, curDocStrings, values)
|
||||||
|
curDocStrings = []
|
||||||
|
|
||||||
|
elif op == 'cat ':
|
||||||
|
if string.strip(line[4:]) == 'Deprecated':
|
||||||
|
break # skip the rest of the file
|
||||||
|
|
||||||
|
elif op == 'evt ':
|
||||||
|
pass
|
||||||
|
|
||||||
|
else:
|
||||||
|
print '***** Unknown line type: ', line
|
||||||
|
|
||||||
|
|
||||||
|
# process templates
|
||||||
|
data = {}
|
||||||
|
data['VALUES'] = processVals(values)
|
||||||
|
defs, imps = processMethods(methods)
|
||||||
|
data['METHOD_DEFS'] = defs
|
||||||
|
data['METHOD_IMPS'] = imps
|
||||||
|
|
||||||
|
# get template text
|
||||||
|
h_text = open(h_tmplt).read()
|
||||||
|
cpp_text = open(cpp_tmplt).read()
|
||||||
|
|
||||||
|
# do the substitutions
|
||||||
|
h_text = h_text % data
|
||||||
|
cpp_text = cpp_text % data
|
||||||
|
|
||||||
|
# write out destination files
|
||||||
|
open(h_dest, 'w').write(h_text)
|
||||||
|
open(cpp_dest, 'w').write(cpp_text)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def processVals(values):
|
||||||
|
text = []
|
||||||
|
for name, value, docs in values:
|
||||||
|
if docs:
|
||||||
|
text.append('')
|
||||||
|
for x in docs:
|
||||||
|
text.append('// ' + x)
|
||||||
|
text.append('#define %s %s' % (name, value))
|
||||||
|
return string.join(text, '\n')
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def processMethods(methods):
|
||||||
|
defs = []
|
||||||
|
imps = []
|
||||||
|
|
||||||
|
for retType, name, number, param1, param2, docs in methods:
|
||||||
|
retType = retTypeMap.get(retType, retType)
|
||||||
|
params = makeParamString(param1, param2)
|
||||||
|
|
||||||
|
name, theDef, theImp, docs = checkMethodOverride(name, number, docs)
|
||||||
|
|
||||||
|
if name is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Build the method definition for the .h file
|
||||||
|
if docs:
|
||||||
|
defs.append('')
|
||||||
|
for x in docs:
|
||||||
|
defs.append(' // ' + x)
|
||||||
|
if not theDef:
|
||||||
|
theDef = ' %s %s(%s);' % (retType, name, params)
|
||||||
|
defs.append(theDef)
|
||||||
|
|
||||||
|
# Build the method implementation string
|
||||||
|
if docs:
|
||||||
|
imps.append('')
|
||||||
|
for x in docs:
|
||||||
|
imps.append('// ' + x)
|
||||||
|
if not theImp:
|
||||||
|
theImp = '%s wxStyledTextCtrl::%s(%s) {\n ' % (retType, name, params)
|
||||||
|
|
||||||
|
if retType == 'wxColour':
|
||||||
|
theImp = theImp + 'long c = '
|
||||||
|
elif retType != 'void':
|
||||||
|
theImp = theImp + 'return '
|
||||||
|
theImp = theImp + 'SendMsg(%s, %s, %s)' % (number,
|
||||||
|
makeArgString(param1),
|
||||||
|
makeArgString(param2))
|
||||||
|
if retType == 'bool':
|
||||||
|
theImp = theImp + ' != 0'
|
||||||
|
if retType == 'wxColour':
|
||||||
|
theImp = theImp + ';\n return wxColourFromLong(c)'
|
||||||
|
|
||||||
|
theImp = theImp + ';\n}'
|
||||||
|
imps.append(theImp)
|
||||||
|
|
||||||
|
|
||||||
|
return string.join(defs, '\n'), string.join(imps, '\n')
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def checkMethodOverride(name, number, docs):
|
||||||
|
theDef = theImp = None
|
||||||
|
if methodOverrideMap.has_key(name):
|
||||||
|
item = methodOverrideMap[name]
|
||||||
|
|
||||||
|
if item[0] != 0:
|
||||||
|
name = item[0]
|
||||||
|
if item[1] != 0:
|
||||||
|
theDef = ' ' + (item[1] % name)
|
||||||
|
if item[2] != 0:
|
||||||
|
theImp = item[2] % ('wxStyledTextCtrl::'+name, number) + '\n}'
|
||||||
|
if item[3] != 0:
|
||||||
|
docs = item[3]
|
||||||
|
|
||||||
|
return name, theDef, theImp, docs
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def makeArgString(param):
|
||||||
|
if not param:
|
||||||
|
return '0'
|
||||||
|
|
||||||
|
typ, name = param
|
||||||
|
|
||||||
|
if typ == 'string':
|
||||||
|
return '(long)%s.c_str()' % name
|
||||||
|
if typ == 'colour':
|
||||||
|
return 'wxColourAsLong(%s)' % name
|
||||||
|
|
||||||
|
return name
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def makeParamString(param1, param2):
|
||||||
|
def doOne(param):
|
||||||
|
if param:
|
||||||
|
aType = paramTypeMap.get(param[0], param[0])
|
||||||
|
return aType + ' ' + param[1]
|
||||||
|
else:
|
||||||
|
return ''
|
||||||
|
|
||||||
|
st = doOne(param1)
|
||||||
|
if st and param2:
|
||||||
|
st = st + ', '
|
||||||
|
st = st + doOne(param2)
|
||||||
|
return st
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def parseVal(line, values, docs):
|
||||||
|
name, val = string.split(line, '=')
|
||||||
|
|
||||||
|
# remove prefixes such as SCI, etc.
|
||||||
|
for old, new in valPrefixes:
|
||||||
|
lo = len(old)
|
||||||
|
if name[:lo] == old:
|
||||||
|
if new is None:
|
||||||
|
return
|
||||||
|
name = new + name[lo:]
|
||||||
|
|
||||||
|
# add it to the list
|
||||||
|
values.append( ('wxSTC_' + name, val, docs) )
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
funregex = re.compile(r'\s*([a-zA-Z0-9_]+)' # <ws>return type
|
||||||
|
'\s+([a-zA-Z0-9_]+)=' # <ws>name=
|
||||||
|
'([0-9]+)' # number
|
||||||
|
'\(([ a-zA-Z0-9_]*),' # (param,
|
||||||
|
'([ a-zA-Z0-9_]*)\)') # param)
|
||||||
|
|
||||||
|
def parseFun(line, methods, docs, values):
|
||||||
|
def parseParam(param):
|
||||||
|
param = string.strip(param)
|
||||||
|
if param == '':
|
||||||
|
param = None
|
||||||
|
else:
|
||||||
|
param = tuple(string.split(param))
|
||||||
|
return param
|
||||||
|
|
||||||
|
mo = funregex.match(line)
|
||||||
|
if mo is None:
|
||||||
|
print "***** Line doesn't match! : " + line
|
||||||
|
|
||||||
|
retType, name, number, param1, param2 = mo.groups()
|
||||||
|
|
||||||
|
param1 = parseParam(param1)
|
||||||
|
param2 = parseParam(param2)
|
||||||
|
|
||||||
|
# Special case. For the key command functionss we want a value defined too
|
||||||
|
num = string.atoi(number)
|
||||||
|
for v in cmdValues:
|
||||||
|
if (type(v) == type(()) and v[0] <= num < v[1]) or v == num:
|
||||||
|
parseVal('CMD_%s=%s' % (string.upper(name), number), values, ())
|
||||||
|
|
||||||
|
#if retType == 'void' and not param1 and not param2:
|
||||||
|
|
||||||
|
methods.append( (retType, name, number, param1, param2, tuple(docs)) )
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
def main(args):
|
||||||
|
# TODO: parse command line args to replace default input/output files???
|
||||||
|
|
||||||
|
# Now just do it
|
||||||
|
processIface(IFACE, H_TEMPLATE, CPP_TEMPLATE, H_DEST, CPP_DEST)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main(sys.argv)
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
# File: makefile.b32
|
# File: makefile.b32
|
||||||
# Author: Julian Smart
|
# Author: Julian Smart
|
||||||
# Created: 1999
|
# Created: 1999
|
||||||
# Updated:
|
# Updated:
|
||||||
# Copyright:
|
# Copyright:
|
||||||
#
|
#
|
||||||
# Makefile : Builds wxMMedia library for 32-bit BC++
|
# Makefile : Builds wxMMedia library for 32-bit BC++
|
||||||
@@ -21,25 +21,38 @@ STCEXTRACPPFLAGS=-D__WX__ -DSCI_LEXER -I$(SCINTILLA)/include -I$(S)
|
|||||||
LIBTARGET=$(WXDIR)\contrib\lib\stc.lib
|
LIBTARGET=$(WXDIR)\contrib\lib\stc.lib
|
||||||
|
|
||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
Accessor.obj \
|
Accessor.obj \
|
||||||
AutoComplete.obj \
|
AutoComplete.obj \
|
||||||
CallTip.obj \
|
CallTip.obj \
|
||||||
CellBuffer.obj \
|
CellBuffer.obj \
|
||||||
ContractionState.obj\
|
ContractionState.obj \
|
||||||
Document.obj \
|
Document.obj \
|
||||||
|
DocumentAccessor.obj \
|
||||||
Editor.obj \
|
Editor.obj \
|
||||||
Indicator.obj \
|
Indicator.obj \
|
||||||
KeyMap.obj \
|
KeyMap.obj \
|
||||||
KeyWords.obj \
|
KeyWords.obj \
|
||||||
LineMarker.obj \
|
LexCPP.obj \
|
||||||
PropSet.obj \
|
LexHTML.obj \
|
||||||
|
LexLua.obj \
|
||||||
|
LexOthers.obj \
|
||||||
|
LexPerl.obj \
|
||||||
|
LexPython.obj \
|
||||||
|
LexSQL.obj \
|
||||||
|
LexVB.obj \
|
||||||
|
LineMarker.obj \
|
||||||
|
PropSet.obj \
|
||||||
|
PosRegExp.obj \
|
||||||
ScintillaBase.obj \
|
ScintillaBase.obj \
|
||||||
Style.obj \
|
Style.obj \
|
||||||
ViewStyle.obj \
|
UniConversion.obj \
|
||||||
|
ViewStyle.obj \
|
||||||
|
WindowAccessor.obj \
|
||||||
\
|
\
|
||||||
PlatWX.obj \
|
PlatWX.obj \
|
||||||
ScintillaWX.obj \
|
ScintillaWX.obj \
|
||||||
stc.obj \
|
stc.obj \
|
||||||
|
|
||||||
|
|
||||||
!include $(WXDIR)\src\makelib.b32
|
!include $(WXDIR)\src\makelib.b32
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,18 @@ OBJECTS = \
|
|||||||
$(S)/ScintillaBase.$(OBJSUFF) \
|
$(S)/ScintillaBase.$(OBJSUFF) \
|
||||||
$(S)/Style.$(OBJSUFF) \
|
$(S)/Style.$(OBJSUFF) \
|
||||||
$(S)/ViewStyle.$(OBJSUFF) \
|
$(S)/ViewStyle.$(OBJSUFF) \
|
||||||
|
$(S)/LexCPP.$(OBJSUFF) \
|
||||||
|
$(S)/LexHTML.$(OBJSUFF) \
|
||||||
|
$(S)/LexLua.$(OBJSUFF) \
|
||||||
|
$(S)/LexOthers.$(OBJSUFF) \
|
||||||
|
$(S)/LexPerl.$(OBJSUFF) \
|
||||||
|
$(S)/LexPython.$(OBJSUFF) \
|
||||||
|
$(S)/LexSQL.$(OBJSUFF) \
|
||||||
|
$(S)/LexVB.$(OBJSUFF) \
|
||||||
|
$(S)/DocumentAccessor.$(OBJSUFF)\
|
||||||
|
$(S)/UniConversion.$(OBJSUFF) \
|
||||||
|
$(S)/WindowAccessor.$(OBJSUFF) \
|
||||||
|
$(S)/PosRegExp.$(OBJSUFF) \
|
||||||
PlatWX.$(OBJSUFF) \
|
PlatWX.$(OBJSUFF) \
|
||||||
ScintillaWX.$(OBJSUFF) \
|
ScintillaWX.$(OBJSUFF) \
|
||||||
stc.$(OBJSUFF)
|
stc.$(OBJSUFF)
|
||||||
|
|||||||
@@ -15,21 +15,32 @@ NOPCH=1
|
|||||||
!include $(WXDIR)\src\makevc.env
|
!include $(WXDIR)\src\makevc.env
|
||||||
|
|
||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
$(D)\Accessor.obj \
|
|
||||||
$(D)\AutoComplete.obj \
|
$(D)\AutoComplete.obj \
|
||||||
$(D)\CallTip.obj \
|
$(D)\CallTip.obj \
|
||||||
$(D)\CellBuffer.obj \
|
$(D)\CellBuffer.obj \
|
||||||
$(D)\ContractionState.obj\
|
$(D)\ContractionState.obj\
|
||||||
$(D)\Document.obj \
|
$(D)\Document.obj \
|
||||||
|
$(D)\DocumentAccessor.obj\
|
||||||
$(D)\Editor.obj \
|
$(D)\Editor.obj \
|
||||||
$(D)\Indicator.obj \
|
$(D)\Indicator.obj \
|
||||||
$(D)\KeyMap.obj \
|
$(D)\KeyMap.obj \
|
||||||
$(D)\KeyWords.obj \
|
$(D)\KeyWords.obj \
|
||||||
|
$(D)\LexCPP.obj \
|
||||||
|
$(D)\LexHTML.obj \
|
||||||
|
$(D)\LexLua.obj \
|
||||||
|
$(D)\LexOthers.obj \
|
||||||
|
$(D)\LexPerl.obj \
|
||||||
|
$(D)\LexPython.obj \
|
||||||
|
$(D)\LexSQL.obj \
|
||||||
|
$(D)\LexVB.obj \
|
||||||
$(D)\LineMarker.obj \
|
$(D)\LineMarker.obj \
|
||||||
|
$(D)\PosRegExp.obj \
|
||||||
$(D)\PropSet.obj \
|
$(D)\PropSet.obj \
|
||||||
$(D)\ScintillaBase.obj \
|
$(D)\ScintillaBase.obj \
|
||||||
$(D)\Style.obj \
|
$(D)\Style.obj \
|
||||||
|
$(D)\UniConversion.obj \
|
||||||
$(D)\ViewStyle.obj \
|
$(D)\ViewStyle.obj \
|
||||||
|
$(D)\WindowAccessor.obj \
|
||||||
\
|
\
|
||||||
$(D)\PlatWX.obj \
|
$(D)\PlatWX.obj \
|
||||||
$(D)\ScintillaWX.obj \
|
$(D)\ScintillaWX.obj \
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ scintilla/include directories from the Scintilla/SCiTE source
|
|||||||
distribution. All other code needed to implement Scintilla on top of
|
distribution. All other code needed to implement Scintilla on top of
|
||||||
wxWindows is located in the directory above this one.
|
wxWindows is located in the directory above this one.
|
||||||
|
|
||||||
The current version of the Scintilla code is somewhere between 1.22
|
The current version of the Scintilla code is 1.32
|
||||||
and 1.23, (from their CVS.)
|
|
||||||
|
|||||||
@@ -3,26 +3,30 @@
|
|||||||
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
// The License.txt file describes the conditions under which this software may be distributed.
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
enum { wsSpace = 1, wsTab = 2, wsSpaceTab = 4, wsInconsistent=8};
|
||||||
|
|
||||||
|
class Accessor;
|
||||||
|
|
||||||
|
typedef bool (*PFNIsCommentLeader)(Accessor &styler, int pos, int len);
|
||||||
|
|
||||||
|
// Interface to data in a Scintilla
|
||||||
class Accessor {
|
class Accessor {
|
||||||
protected:
|
protected:
|
||||||
// bufferSize is a trade off between time taken to copy the characters and SendMessage overhead
|
enum {extremePosition=0x7FFFFFFF};
|
||||||
|
// bufferSize is a trade off between time taken to copy the characters and retrieval overhead
|
||||||
// slopSize positions the buffer before the desired position in case there is some backtracking
|
// slopSize positions the buffer before the desired position in case there is some backtracking
|
||||||
enum {bufferSize=4000, slopSize=bufferSize/8};
|
enum {bufferSize=4000, slopSize=bufferSize/8};
|
||||||
char buf[bufferSize+1];
|
char buf[bufferSize+1];
|
||||||
WindowID id;
|
|
||||||
PropSet &props;
|
|
||||||
int startPos;
|
int startPos;
|
||||||
int endPos;
|
int endPos;
|
||||||
int lenDoc;
|
int codePage;
|
||||||
int offset; // Optional but including an offset makes GCC generate better code
|
|
||||||
void Fill(int position);
|
virtual bool InternalIsLeadByte(char ch)=0;
|
||||||
|
virtual void Fill(int position)=0;
|
||||||
public:
|
public:
|
||||||
Accessor(WindowID id_, PropSet &props_, int offset_=0) :
|
Accessor() : startPos(extremePosition), endPos(0), codePage(0) {}
|
||||||
id(id_), props(props_), startPos(0x7FFFFFFF), endPos(0),
|
virtual ~Accessor() {}
|
||||||
lenDoc(-1), offset(offset_) {
|
|
||||||
}
|
|
||||||
char operator[](int position) {
|
char operator[](int position) {
|
||||||
position += offset;
|
|
||||||
if (position < startPos || position >= endPos) {
|
if (position < startPos || position >= endPos) {
|
||||||
Fill(position);
|
Fill(position);
|
||||||
}
|
}
|
||||||
@@ -30,7 +34,6 @@ public:
|
|||||||
}
|
}
|
||||||
char SafeGetCharAt(int position, char chDefault=' ') {
|
char SafeGetCharAt(int position, char chDefault=' ') {
|
||||||
// Safe version of operator[], returning a defined value for invalid position
|
// Safe version of operator[], returning a defined value for invalid position
|
||||||
position += offset;
|
|
||||||
if (position < startPos || position >= endPos) {
|
if (position < startPos || position >= endPos) {
|
||||||
Fill(position);
|
Fill(position);
|
||||||
if (position < startPos || position >= endPos) {
|
if (position < startPos || position >= endPos) {
|
||||||
@@ -40,37 +43,28 @@ public:
|
|||||||
}
|
}
|
||||||
return buf[position - startPos];
|
return buf[position - startPos];
|
||||||
}
|
}
|
||||||
char StyleAt(int position);
|
bool IsLeadByte(char ch) {
|
||||||
int GetLine(int position);
|
return codePage && InternalIsLeadByte(ch);
|
||||||
int LineStart(int line);
|
|
||||||
int LevelAt(int line);
|
|
||||||
int Length();
|
|
||||||
void Flush() {
|
|
||||||
startPos = 0x7FFFFFFF;
|
|
||||||
lenDoc = -1;
|
|
||||||
}
|
}
|
||||||
int GetLineState(int line);
|
void SetCodePage(int codePage_) { codePage = codePage_; }
|
||||||
int SetLineState(int line, int state);
|
|
||||||
PropSet &GetPropSet() { return props; }
|
virtual char StyleAt(int position)=0;
|
||||||
};
|
virtual int GetLine(int position)=0;
|
||||||
|
virtual int LineStart(int line)=0;
|
||||||
class StylingContext : public Accessor {
|
virtual int LevelAt(int line)=0;
|
||||||
char styleBuf[bufferSize];
|
virtual int Length()=0;
|
||||||
int validLen;
|
virtual void Flush()=0;
|
||||||
char chFlags;
|
virtual int GetLineState(int line)=0;
|
||||||
char chWhile;
|
virtual int SetLineState(int line, int state)=0;
|
||||||
unsigned int startSeg;
|
virtual int GetPropertyInt(const char *key, int defaultValue=0)=0;
|
||||||
public:
|
|
||||||
StylingContext(WindowID id_, PropSet &props_, int offset_=0) :
|
// Style setting
|
||||||
Accessor(id_,props_,offset_), validLen(0), chFlags(0) {}
|
virtual void StartAt(unsigned int start, char chMask=31)=0;
|
||||||
void StartAt(unsigned int start, char chMask=31);
|
virtual void SetFlags(char chFlags_, char chWhile_)=0;
|
||||||
void SetFlags(char chFlags_, char chWhile_) {chFlags = chFlags_; chWhile = chWhile_; };
|
virtual unsigned int GetStartSegment()=0;
|
||||||
void ColourSegment(unsigned int start, unsigned int end, int chAttr);
|
virtual void StartSegment(unsigned int pos)=0;
|
||||||
unsigned int GetStartSegment() { return startSeg; }
|
virtual void ColourTo(unsigned int pos, int chAttr)=0;
|
||||||
void StartSegment(unsigned int pos);
|
virtual void SetLevel(int line, int level)=0;
|
||||||
void ColourTo(unsigned int pos, int chAttr);
|
virtual int IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0)=0;
|
||||||
int GetLine(int position);
|
|
||||||
void SetLevel(int line, int level);
|
|
||||||
void Flush();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,39 @@
|
|||||||
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
// The License.txt file describes the conditions under which this software may be distributed.
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
void ColouriseDoc(int codePage, int startPos, int lengthDoc, int initStyle,
|
typedef void (*LexerFunction)(unsigned int startPos, int lengthDoc, int initStyle,
|
||||||
int language, WordList *keywordlists[], StylingContext &styler);
|
WordList *keywordlists[], Accessor &styler);
|
||||||
|
|
||||||
|
class LexerModule {
|
||||||
|
static LexerModule *base;
|
||||||
|
LexerModule *next;
|
||||||
|
int language;
|
||||||
|
LexerFunction fn;
|
||||||
|
public:
|
||||||
|
LexerModule(int language_, LexerFunction fn_);
|
||||||
|
static void Colourise(unsigned int startPos, int lengthDoc, int initStyle,
|
||||||
|
int language, WordList *keywordlists[], Accessor &styler);
|
||||||
|
};
|
||||||
|
|
||||||
|
inline bool iswordchar(char ch) {
|
||||||
|
return isalnum(ch) || ch == '.' || ch == '_';
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool iswordstart(char ch) {
|
||||||
|
return isalnum(ch) || ch == '_';
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool isoperator(char ch) {
|
||||||
|
if (isalnum(ch))
|
||||||
|
return false;
|
||||||
|
// '.' left out as it is used to make up numbers
|
||||||
|
if (ch == '%' || ch == '^' || ch == '&' || ch == '*' ||
|
||||||
|
ch == '(' || ch == ')' || ch == '-' || ch == '+' ||
|
||||||
|
ch == '=' || ch == '|' || ch == '{' || ch == '}' ||
|
||||||
|
ch == '[' || ch == ']' || ch == ':' || ch == ';' ||
|
||||||
|
ch == '<' || ch == '>' || ch == ',' || ch == '/' ||
|
||||||
|
ch == '?' || ch == '!' || ch == '.' || ch == '~')
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,7 @@
|
|||||||
#pragma warning(disable: 4800 4244 4309)
|
#pragma warning(disable: 4800 4244 4309)
|
||||||
#endif
|
#endif
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <commctrl.h>
|
||||||
#include <richedit.h>
|
#include <richedit.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -79,12 +80,6 @@ typedef wxWindow* WindowID;
|
|||||||
typedef wxMenu* MenuID;
|
typedef wxMenu* MenuID;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if PLAT_GTK || PLAT_WX
|
|
||||||
#define SHIFT_PRESSED 1
|
|
||||||
#define LEFT_CTRL_PRESSED 2
|
|
||||||
#define LEFT_ALT_PRESSED 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Point is exactly the same as the Win32 POINT and GTK+ GdkPoint so can be used interchangeably
|
// Point is exactly the same as the Win32 POINT and GTK+ GdkPoint so can be used interchangeably
|
||||||
|
|
||||||
class Point {
|
class Point {
|
||||||
@@ -198,6 +193,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
class Font {
|
class Font {
|
||||||
|
protected:
|
||||||
FontID id;
|
FontID id;
|
||||||
#if PLAT_WX
|
#if PLAT_WX
|
||||||
int ascent;
|
int ascent;
|
||||||
@@ -207,18 +203,21 @@ class Font {
|
|||||||
Font &operator=(const Font &) { id=0; return *this; }
|
Font &operator=(const Font &) { id=0; return *this; }
|
||||||
public:
|
public:
|
||||||
Font();
|
Font();
|
||||||
~Font();
|
virtual ~Font();
|
||||||
|
|
||||||
void Create(const char *faceName, int size, bool bold=false, bool italic=false);
|
virtual void Create(const char *faceName, int characterSet, int size, bool bold, bool italic);
|
||||||
void Release();
|
virtual void Release();
|
||||||
|
|
||||||
FontID GetID() { return id; }
|
FontID GetID() { return id; }
|
||||||
|
// Alias another font - caller guarantees not to Release
|
||||||
|
void SetID(FontID id_) { id = id_; }
|
||||||
friend class Surface;
|
friend class Surface;
|
||||||
};
|
};
|
||||||
|
|
||||||
// A surface abstracts a place to draw
|
// A surface abstracts a place to draw
|
||||||
class Surface {
|
class Surface {
|
||||||
private:
|
private:
|
||||||
|
bool unicodeMode;
|
||||||
#if PLAT_GTK
|
#if PLAT_GTK
|
||||||
GdkDrawable *drawable;
|
GdkDrawable *drawable;
|
||||||
GdkGC *gc;
|
GdkGC *gc;
|
||||||
@@ -266,6 +265,7 @@ public:
|
|||||||
bool Initialised();
|
bool Initialised();
|
||||||
void PenColour(Colour fore);
|
void PenColour(Colour fore);
|
||||||
int LogPixelsY();
|
int LogPixelsY();
|
||||||
|
int DeviceHeightFont(int points);
|
||||||
void MoveTo(int x_, int y_);
|
void MoveTo(int x_, int y_);
|
||||||
void LineTo(int x_, int y_);
|
void LineTo(int x_, int y_);
|
||||||
void Polygon(Point *pts, int npts, Colour fore, Colour back);
|
void Polygon(Point *pts, int npts, Colour fore, Colour back);
|
||||||
@@ -290,6 +290,11 @@ public:
|
|||||||
|
|
||||||
int SetPalette(Palette *pal, bool inBackGround);
|
int SetPalette(Palette *pal, bool inBackGround);
|
||||||
void SetClip(PRectangle rc);
|
void SetClip(PRectangle rc);
|
||||||
|
void FlushCachedState();
|
||||||
|
|
||||||
|
void SetUnicodeMode(bool unicodeMode_) {
|
||||||
|
unicodeMode=unicodeMode_;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Class to hide the details of window manipulation
|
// Class to hide the details of window manipulation
|
||||||
@@ -300,6 +305,7 @@ protected:
|
|||||||
WindowID id;
|
WindowID id;
|
||||||
public:
|
public:
|
||||||
Window() : id(0) {}
|
Window() : id(0) {}
|
||||||
|
Window(const Window &source) : id(source.id) {}
|
||||||
virtual ~Window();
|
virtual ~Window();
|
||||||
Window &operator=(WindowID id_) {
|
Window &operator=(WindowID id_) {
|
||||||
id = id_;
|
id = id_;
|
||||||
@@ -316,7 +322,7 @@ public:
|
|||||||
void Show(bool show=true);
|
void Show(bool show=true);
|
||||||
void InvalidateAll();
|
void InvalidateAll();
|
||||||
void InvalidateRectangle(PRectangle rc);
|
void InvalidateRectangle(PRectangle rc);
|
||||||
void SetFont(Font &font);
|
virtual void SetFont(Font &font);
|
||||||
enum Cursor { cursorText, cursorArrow, cursorUp, cursorWait, cursorHoriz, cursorVert, cursorReverseArrow };
|
enum Cursor { cursorText, cursorArrow, cursorUp, cursorWait, cursorHoriz, cursorVert, cursorReverseArrow };
|
||||||
void SetCursor(Cursor curs);
|
void SetCursor(Cursor curs);
|
||||||
void SetTitle(const char *s);
|
void SetTitle(const char *s);
|
||||||
@@ -333,14 +339,17 @@ class ListBox : public Window {
|
|||||||
WindowID scroller;
|
WindowID scroller;
|
||||||
int current;
|
int current;
|
||||||
#endif
|
#endif
|
||||||
|
int desiredVisibleRows;
|
||||||
|
unsigned int maxItemCharacters;
|
||||||
|
unsigned int aveCharWidth;
|
||||||
public:
|
public:
|
||||||
ListBox();
|
ListBox();
|
||||||
virtual ~ListBox();
|
virtual ~ListBox();
|
||||||
ListBox &operator=(WindowID id_) {
|
|
||||||
id = id_;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
void Create(Window &parent, int ctrlID);
|
void Create(Window &parent, int ctrlID);
|
||||||
|
virtual void SetFont(Font &font);
|
||||||
|
void SetAverageCharWidth(int width);
|
||||||
|
void SetVisibleRows(int rows);
|
||||||
|
PRectangle GetDesiredRect();
|
||||||
void Clear();
|
void Clear();
|
||||||
void Append(char *s);
|
void Append(char *s);
|
||||||
int Length();
|
int Length();
|
||||||
@@ -385,6 +394,16 @@ public:
|
|||||||
// These are utility functions not really tied to a platform
|
// These are utility functions not really tied to a platform
|
||||||
static int Minimum(int a, int b);
|
static int Minimum(int a, int b);
|
||||||
static int Maximum(int a, int b);
|
static int Maximum(int a, int b);
|
||||||
|
// Next three assume 16 bit shorts and 32 bit longs
|
||||||
|
static long LongFromTwoShorts(short a,short b) {
|
||||||
|
return (a) | ((b) << 16);
|
||||||
|
}
|
||||||
|
static short HighShortFromLong(long x) {
|
||||||
|
return static_cast<short>(x >> 16);
|
||||||
|
}
|
||||||
|
static short LowShortFromLong(long x) {
|
||||||
|
return static_cast<short>(x & 0xffff);
|
||||||
|
}
|
||||||
static void DebugPrintf(const char *format, ...);
|
static void DebugPrintf(const char *format, ...);
|
||||||
static int Clamp(int val, int minVal, int maxVal);
|
static int Clamp(int val, int minVal, int maxVal);
|
||||||
};
|
};
|
||||||
|
|||||||
138
contrib/src/stc/scintilla/include/PosRegExp.h
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
#ifndef POSREGEXP_H
|
||||||
|
#define POSREGEXP_H
|
||||||
|
|
||||||
|
#define MatchesNum 0x10
|
||||||
|
|
||||||
|
enum EOps
|
||||||
|
{
|
||||||
|
ReBlockOps = 0x1000,
|
||||||
|
ReMul, // *
|
||||||
|
RePlus, // +
|
||||||
|
ReQuest, // ?
|
||||||
|
ReNGMul, // *?
|
||||||
|
ReNGPlus, // +?
|
||||||
|
ReNGQuest, // ??
|
||||||
|
ReRangeN, // {n,}
|
||||||
|
ReRangeNM, // {n,m}
|
||||||
|
ReNGRangeN, // {n,}?
|
||||||
|
ReNGRangeNM, // {n,m}?
|
||||||
|
ReOr, // |
|
||||||
|
ReBehind = 0x1100, // ?#n
|
||||||
|
ReNBehind = 0x1200, // ?~n
|
||||||
|
ReAhead = 0x1300, // ?=
|
||||||
|
ReNAhead = 0x1400, // ?!
|
||||||
|
|
||||||
|
ReSymbolOps = 0x2000,
|
||||||
|
ReEmpty,
|
||||||
|
ReSymb, // a b \W \s ...
|
||||||
|
ReEnum, // []
|
||||||
|
ReNEnum, // [^]
|
||||||
|
ReBrackets, // (...)
|
||||||
|
ReBkTrace = 0x2100, // \yN
|
||||||
|
ReBkBrack = 0x2200 // \N
|
||||||
|
};
|
||||||
|
|
||||||
|
enum ESymbols
|
||||||
|
{
|
||||||
|
ReAnyChr = 0x4000, // .
|
||||||
|
ReSoL, // ^
|
||||||
|
ReEoL, // $
|
||||||
|
ReDigit, // \d
|
||||||
|
ReNDigit, // \D
|
||||||
|
ReWordSymb, // \w
|
||||||
|
ReNWordSymb, // \W
|
||||||
|
ReWSpace, // \s
|
||||||
|
ReNWSpace, // \S
|
||||||
|
ReUCase, // \u
|
||||||
|
ReNUCase , // \l
|
||||||
|
ReWBound, // \b
|
||||||
|
ReNWBound, // \B
|
||||||
|
RePreNW, // \c
|
||||||
|
ReStart, // \m
|
||||||
|
ReEnd, // \M
|
||||||
|
|
||||||
|
ReChr = 0x0 // Char in Lower Byte
|
||||||
|
};
|
||||||
|
enum ETempSymb
|
||||||
|
{
|
||||||
|
ReTemp = 0x7000,
|
||||||
|
ReLBrack, ReRBrack,
|
||||||
|
ReEnumS, ReEnumE, ReNEnumS,
|
||||||
|
ReRangeS, ReRangeE, ReNGRangeE, ReFrToEnum
|
||||||
|
};
|
||||||
|
|
||||||
|
#define BackSlash '\\'
|
||||||
|
|
||||||
|
typedef union SCharData
|
||||||
|
{
|
||||||
|
int IArr[8];
|
||||||
|
char CArr[32];
|
||||||
|
void SetBit(unsigned char Bit);
|
||||||
|
void ClearBit(unsigned char Bit);
|
||||||
|
bool GetBit(unsigned char Bit);
|
||||||
|
} *PCharData;
|
||||||
|
|
||||||
|
typedef struct SRegInfo
|
||||||
|
{
|
||||||
|
SRegInfo();
|
||||||
|
~SRegInfo();
|
||||||
|
|
||||||
|
EOps Op;
|
||||||
|
union{
|
||||||
|
SRegInfo *Param;
|
||||||
|
int Symb;
|
||||||
|
PCharData ChrClass;
|
||||||
|
}un;
|
||||||
|
int s,e;
|
||||||
|
SRegInfo *Parent;
|
||||||
|
SRegInfo *Next;
|
||||||
|
} *PRegInfo;
|
||||||
|
|
||||||
|
typedef struct SMatches
|
||||||
|
{
|
||||||
|
int s[MatchesNum];
|
||||||
|
int e[MatchesNum];
|
||||||
|
int CurMatch;
|
||||||
|
} *PMatches;
|
||||||
|
|
||||||
|
typedef class PosRegExp
|
||||||
|
{
|
||||||
|
PRegInfo Info;
|
||||||
|
PMatches BkTrace;
|
||||||
|
bool NoCase,Extend,NoMoves;
|
||||||
|
bool Error;
|
||||||
|
int *Exprn;
|
||||||
|
int posParse;
|
||||||
|
int posEnd,posStart;
|
||||||
|
int posBkStr;
|
||||||
|
int FirstChar;
|
||||||
|
|
||||||
|
bool SetExprLow(const char *Expr);
|
||||||
|
bool SetStructs(PRegInfo &Info,int st,int end);
|
||||||
|
void Optimize();
|
||||||
|
bool CheckSymb(int Symb,bool Inc);
|
||||||
|
bool LowParse(PRegInfo Re);
|
||||||
|
bool LowParseRe(PRegInfo &Next);
|
||||||
|
bool LowCheckNext(PRegInfo Re);
|
||||||
|
bool ParseRe(int posStr);
|
||||||
|
bool QuickCheck();
|
||||||
|
public:
|
||||||
|
PMatches Matches;
|
||||||
|
int Ok, CurMatch;
|
||||||
|
|
||||||
|
void *param;
|
||||||
|
char (*CharAt)(int pos, void *param);
|
||||||
|
|
||||||
|
PosRegExp();
|
||||||
|
~PosRegExp();
|
||||||
|
|
||||||
|
bool isok();
|
||||||
|
bool SetNoMoves(bool Moves);
|
||||||
|
bool SetBkTrace(int posStr,PMatches Trace);
|
||||||
|
bool SetExpr(const char *Expr);
|
||||||
|
bool Parse(int posStr, int posStop, PMatches Mtch);
|
||||||
|
bool Parse(int posStr,int posSol, int posEol, PMatches Mtch, int Moves = -1);
|
||||||
|
bool Evaluate(char *Expr, int posStr, PMatches Mtch, char **Res);
|
||||||
|
} *PPosRegExp;
|
||||||
|
|
||||||
|
#endif /* POSREGEXP_H */
|
||||||
@@ -8,44 +8,92 @@
|
|||||||
|
|
||||||
bool EqualCaseInsensitive(const char *a, const char *b);
|
bool EqualCaseInsensitive(const char *a, const char *b);
|
||||||
|
|
||||||
|
#if PLAT_WIN
|
||||||
|
#define strcasecmp stricmp
|
||||||
|
#define strncasecmp strnicmp
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
#define strcasecmp stricmp
|
||||||
|
#define strncasecmp strnicmp
|
||||||
|
#endif
|
||||||
|
|
||||||
// Define another string class.
|
// Define another string class.
|
||||||
// While it would be 'better' to use std::string, that doubles the executable size.
|
// While it would be 'better' to use std::string, that doubles the executable size.
|
||||||
|
|
||||||
inline char *StringDup(const char *s) {
|
inline char *StringDup(const char *s, int len=-1) {
|
||||||
if (!s)
|
if (!s)
|
||||||
return 0;
|
return 0;
|
||||||
char *sNew = new char[strlen(s) + 1];
|
if (len == -1)
|
||||||
if (sNew)
|
len = strlen(s);
|
||||||
strcpy(sNew, s);
|
char *sNew = new char[len + 1];
|
||||||
|
if (sNew) {
|
||||||
|
strncpy(sNew, s, len);
|
||||||
|
sNew[len] = '\0';
|
||||||
|
}
|
||||||
return sNew;
|
return sNew;
|
||||||
}
|
}
|
||||||
|
|
||||||
class SString {
|
class SString {
|
||||||
char *s;
|
char *s;
|
||||||
|
int ssize;
|
||||||
public:
|
public:
|
||||||
|
typedef const char* const_iterator;
|
||||||
|
typedef int size_type;
|
||||||
|
static size_type npos;
|
||||||
|
const char* begin(void) const {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
const char* end(void) const {
|
||||||
|
return &s[ssize];
|
||||||
|
}
|
||||||
|
size_type size(void) const {
|
||||||
|
if (s)
|
||||||
|
return ssize;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
SString &assign(const char* sother, int size_ = -1) {
|
||||||
|
char *t = s;
|
||||||
|
s = StringDup(sother,size_);
|
||||||
|
ssize = (s) ? strlen(s) : 0;
|
||||||
|
delete []t;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
SString &assign(const SString& sother, int size_ = -1) {
|
||||||
|
return assign(sother.s,size_);
|
||||||
|
}
|
||||||
|
SString &assign(const_iterator ibeg, const_iterator iend) {
|
||||||
|
return assign(ibeg,iend - ibeg);
|
||||||
|
}
|
||||||
SString() {
|
SString() {
|
||||||
s = 0;
|
s = 0;
|
||||||
|
ssize = 0;
|
||||||
}
|
}
|
||||||
SString(const SString &source) {
|
SString(const SString &source) {
|
||||||
s = StringDup(source.s);
|
s = StringDup(source.s);
|
||||||
|
ssize = (s) ? strlen(s) : 0;
|
||||||
}
|
}
|
||||||
SString(const char *s_) {
|
SString(const char *s_) {
|
||||||
s = StringDup(s_);
|
s = StringDup(s_);
|
||||||
|
ssize = (s) ? strlen(s) : 0;
|
||||||
}
|
}
|
||||||
SString(int i) {
|
SString(int i) {
|
||||||
char number[100];
|
char number[100];
|
||||||
sprintf(number, "%0d", i);
|
sprintf(number, "%0d", i);
|
||||||
//itoa(i, number, 10);
|
|
||||||
s = StringDup(number);
|
s = StringDup(number);
|
||||||
|
ssize = (s) ? strlen(s) : 0;
|
||||||
}
|
}
|
||||||
~SString() {
|
~SString() {
|
||||||
delete []s;
|
delete []s;
|
||||||
s = 0;
|
s = 0;
|
||||||
|
ssize = 0;
|
||||||
}
|
}
|
||||||
SString &operator=(const SString &source) {
|
SString &operator=(const SString &source) {
|
||||||
if (this != &source) {
|
if (this != &source) {
|
||||||
delete []s;
|
delete []s;
|
||||||
s = StringDup(source.s);
|
s = StringDup(source.s);
|
||||||
|
ssize = (s) ? strlen(s) : 0;
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
@@ -56,6 +104,9 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
return strcmp(s, other.s) == 0;
|
return strcmp(s, other.s) == 0;
|
||||||
}
|
}
|
||||||
|
bool operator!=(const SString &other) const {
|
||||||
|
return !operator==(other);
|
||||||
|
}
|
||||||
bool operator==(const char *sother) const {
|
bool operator==(const char *sother) const {
|
||||||
if ((s == 0) && (sother == 0))
|
if ((s == 0) && (sother == 0))
|
||||||
return true;
|
return true;
|
||||||
@@ -63,6 +114,9 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
return strcmp(s, sother) == 0;
|
return strcmp(s, sother) == 0;
|
||||||
}
|
}
|
||||||
|
bool operator!=(const char *sother) const {
|
||||||
|
return !operator==(sother);
|
||||||
|
}
|
||||||
const char *c_str() const {
|
const char *c_str() const {
|
||||||
if (s)
|
if (s)
|
||||||
return s;
|
return s;
|
||||||
@@ -75,106 +129,116 @@ public:
|
|||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
char operator[](int i) {
|
char operator[](int i) const {
|
||||||
if (s)
|
if (s)
|
||||||
return s[i];
|
return s[i];
|
||||||
else
|
else
|
||||||
return '\0';
|
return '\0';
|
||||||
}
|
}
|
||||||
SString &operator +=(const char *sother) {
|
SString &operator +=(const char *sother) {
|
||||||
|
return append(sother,-1);
|
||||||
|
}
|
||||||
|
SString &operator +=(const SString &sother) {
|
||||||
|
return append(sother.s,sother.ssize);
|
||||||
|
}
|
||||||
|
SString &operator +=(char ch) {
|
||||||
|
return append(&ch,1);
|
||||||
|
}
|
||||||
|
SString &append(const char* sother, int lenOther) {
|
||||||
int len = length();
|
int len = length();
|
||||||
int lenOther = strlen(sother);
|
if(lenOther < 0)
|
||||||
|
lenOther = strlen(sother);
|
||||||
char *sNew = new char[len + lenOther + 1];
|
char *sNew = new char[len + lenOther + 1];
|
||||||
if (sNew) {
|
if (sNew) {
|
||||||
if (s)
|
if (s)
|
||||||
memcpy(sNew, s, len);
|
memcpy(sNew, s, len);
|
||||||
memcpy(sNew + len, sother, lenOther);
|
strncpy(&sNew[len], sother, lenOther);
|
||||||
sNew[len + lenOther] = '\0';
|
sNew[len + lenOther] = '\0';
|
||||||
delete []s;
|
delete []s;
|
||||||
s = sNew;
|
s = sNew;
|
||||||
|
ssize = (s) ? strlen(s) : 0;
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
int value() {
|
int value() const {
|
||||||
if (s)
|
if (s)
|
||||||
return atoi(s);
|
return atoi(s);
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
void substitute(char find, char replace) {
|
||||||
|
char *t = s;
|
||||||
|
while (t) {
|
||||||
|
t = strchr(t, find);
|
||||||
|
if (t)
|
||||||
|
*t = replace;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// I don't think this really belongs here -- Neil
|
||||||
|
void correctPath() {
|
||||||
|
#ifdef unix
|
||||||
|
substitute('\\', '/');
|
||||||
|
#else
|
||||||
|
substitute('/', '\\');
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Property {
|
||||||
|
unsigned int hash;
|
||||||
|
char *key;
|
||||||
|
char *val;
|
||||||
|
Property *next;
|
||||||
|
Property() : hash(0), key(0), val(0), next(0) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class PropSet {
|
class PropSet {
|
||||||
private:
|
private:
|
||||||
char **vals;
|
enum { hashRoots=31 };
|
||||||
int size;
|
Property *props[hashRoots];
|
||||||
int used;
|
|
||||||
public:
|
public:
|
||||||
PropSet *superPS;
|
PropSet *superPS;
|
||||||
PropSet();
|
PropSet();
|
||||||
~PropSet();
|
~PropSet();
|
||||||
void EnsureCanAddEntry();
|
|
||||||
void Set(const char *key, const char *val);
|
void Set(const char *key, const char *val);
|
||||||
void Set(char *keyval);
|
void Set(char *keyval);
|
||||||
SString Get(const char *key);
|
SString Get(const char *key);
|
||||||
|
SString GetExpanded(const char *key);
|
||||||
|
SString Expand(const char *withvars);
|
||||||
int GetInt(const char *key, int defaultValue=0);
|
int GetInt(const char *key, int defaultValue=0);
|
||||||
SString GetWild(const char *keybase, const char *filename);
|
SString GetWild(const char *keybase, const char *filename);
|
||||||
SString GetNewExpand(const char *keybase, const char *filename);
|
SString GetNewExpand(const char *keybase, const char *filename);
|
||||||
void Clear();
|
void Clear();
|
||||||
void ReadFromMemory(const char *data, int len);
|
void ReadFromMemory(const char *data, int len, const char *directoryForImports=0);
|
||||||
void Read(const char *filename);
|
void Read(const char *filename, const char *directoryForImports);
|
||||||
};
|
|
||||||
|
|
||||||
// This is a fixed length list of strings suitable for display in combo boxes
|
|
||||||
// as a memory of user entries
|
|
||||||
template<int sz>
|
|
||||||
class EntryMemory {
|
|
||||||
SString entries[sz];
|
|
||||||
public:
|
|
||||||
void Insert(SString s) {
|
|
||||||
for (int i=0;i<sz;i++) {
|
|
||||||
if (entries[i] == s) {
|
|
||||||
for (int j=i;j>0;j--) {
|
|
||||||
entries[j] = entries[j-1];
|
|
||||||
}
|
|
||||||
entries[0] = s;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int k=sz-1;k>0;k--) {
|
|
||||||
entries[k] = entries[k-1];
|
|
||||||
}
|
|
||||||
entries[0] = s;
|
|
||||||
}
|
|
||||||
int Length() const {
|
|
||||||
int len = 0;
|
|
||||||
for (int i=0;i<sz;i++)
|
|
||||||
if (entries[i].length())
|
|
||||||
len++;
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
SString At(int n) const {
|
|
||||||
return entries[n];
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class WordList {
|
class WordList {
|
||||||
public:
|
public:
|
||||||
// Each word contains at least one character - a empty word acts as sentinal at the end.
|
// Each word contains at least one character - a empty word acts as sentinal at the end.
|
||||||
char **words;
|
char **words;
|
||||||
|
char **wordsNoCase;
|
||||||
char *list;
|
char *list;
|
||||||
int len;
|
int len;
|
||||||
bool onlyLineEnds; // Delimited by any white space or only line ends
|
bool onlyLineEnds; // Delimited by any white space or only line ends
|
||||||
|
bool sorted;
|
||||||
int starts[256];
|
int starts[256];
|
||||||
WordList(bool onlyLineEnds_ = false) :
|
WordList(bool onlyLineEnds_ = false) :
|
||||||
words(0), list(0), len(0), onlyLineEnds(onlyLineEnds_) {}
|
words(0), wordsNoCase(0), list(0), len(0), onlyLineEnds(onlyLineEnds_), sorted(false) {}
|
||||||
~WordList() { Clear(); }
|
~WordList() { Clear(); }
|
||||||
operator bool() { return list; }
|
operator bool() { return words ? true : false; }
|
||||||
const char *operator[](int ind) { return words[ind]; }
|
const char *operator[](int ind) { return words[ind]; }
|
||||||
void Clear();
|
void Clear();
|
||||||
void Set(const char *s);
|
void Set(const char *s);
|
||||||
char *Allocate(int size);
|
char *Allocate(int size);
|
||||||
void SetFromAllocated();
|
void SetFromAllocated();
|
||||||
bool InList(const char *s);
|
bool InList(const char *s);
|
||||||
|
const char *GetNearestWord(const char *wordStart, int searchLen = -1, bool ignoreCase = false);
|
||||||
|
char *GetNearestWords(const char *wordStart, int searchLen = -1, bool ignoreCase = false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline bool nonFuncChar(char ch) {
|
||||||
|
return strchr("\t\n\r !\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~", ch) != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -3,11 +3,15 @@
|
|||||||
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
// The License.txt file describes the conditions under which this software may be distributed.
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
// Most of this file is automatically generated from the Scintilla.iface interface definition
|
||||||
|
// file which contains any comments about the definitions. HFacer.py does the generation.
|
||||||
|
|
||||||
#ifndef SCILEXER_H
|
#ifndef SCILEXER_H
|
||||||
#define SCILEXER_H
|
#define SCILEXER_H
|
||||||
|
|
||||||
// SciLexer features - not in standard Scintilla
|
// SciLexer features - not in standard Scintilla
|
||||||
|
|
||||||
|
//++Autogenerated -- start of section automatically generated from Scintilla.iface
|
||||||
#define SCLEX_CONTAINER 0
|
#define SCLEX_CONTAINER 0
|
||||||
#define SCLEX_NULL 1
|
#define SCLEX_NULL 1
|
||||||
#define SCLEX_PYTHON 2
|
#define SCLEX_PYTHON 2
|
||||||
@@ -21,8 +25,10 @@
|
|||||||
#define SCLEX_ERRORLIST 10
|
#define SCLEX_ERRORLIST 10
|
||||||
#define SCLEX_MAKEFILE 11
|
#define SCLEX_MAKEFILE 11
|
||||||
#define SCLEX_BATCH 12
|
#define SCLEX_BATCH 12
|
||||||
|
#define SCLEX_XCODE 13
|
||||||
// Lexical states for SCLEX_PYTHON
|
#define SCLEX_LATEX 14
|
||||||
|
#define SCLEX_LUA 15
|
||||||
|
#define SCLEX_DIFF 16
|
||||||
#define SCE_P_DEFAULT 0
|
#define SCE_P_DEFAULT 0
|
||||||
#define SCE_P_COMMENTLINE 1
|
#define SCE_P_COMMENTLINE 1
|
||||||
#define SCE_P_NUMBER 2
|
#define SCE_P_NUMBER 2
|
||||||
@@ -35,8 +41,8 @@
|
|||||||
#define SCE_P_DEFNAME 9
|
#define SCE_P_DEFNAME 9
|
||||||
#define SCE_P_OPERATOR 10
|
#define SCE_P_OPERATOR 10
|
||||||
#define SCE_P_IDENTIFIER 11
|
#define SCE_P_IDENTIFIER 11
|
||||||
|
#define SCE_P_COMMENTBLOCK 12
|
||||||
// Lexical states for SCLEX_CPP, SCLEX_VB
|
#define SCE_P_STRINGEOL 13
|
||||||
#define SCE_C_DEFAULT 0
|
#define SCE_C_DEFAULT 0
|
||||||
#define SCE_C_COMMENT 1
|
#define SCE_C_COMMENT 1
|
||||||
#define SCE_C_COMMENTLINE 2
|
#define SCE_C_COMMENTLINE 2
|
||||||
@@ -45,13 +51,12 @@
|
|||||||
#define SCE_C_WORD 5
|
#define SCE_C_WORD 5
|
||||||
#define SCE_C_STRING 6
|
#define SCE_C_STRING 6
|
||||||
#define SCE_C_CHARACTER 7
|
#define SCE_C_CHARACTER 7
|
||||||
#define SCE_C_PUNTUATION 8
|
#define SCE_C_UUID 8
|
||||||
#define SCE_C_PREPROCESSOR 9
|
#define SCE_C_PREPROCESSOR 9
|
||||||
#define SCE_C_OPERATOR 10
|
#define SCE_C_OPERATOR 10
|
||||||
#define SCE_C_IDENTIFIER 11
|
#define SCE_C_IDENTIFIER 11
|
||||||
#define SCE_C_STRINGEOL 12
|
#define SCE_C_STRINGEOL 12
|
||||||
|
#define SCE_C_VERBATIM 13
|
||||||
// Lexical states for SCLEX_HTML, SCLEX_xML
|
|
||||||
#define SCE_H_DEFAULT 0
|
#define SCE_H_DEFAULT 0
|
||||||
#define SCE_H_TAG 1
|
#define SCE_H_TAG 1
|
||||||
#define SCE_H_TAGUNKNOWN 2
|
#define SCE_H_TAGUNKNOWN 2
|
||||||
@@ -63,51 +68,90 @@
|
|||||||
#define SCE_H_OTHER 8
|
#define SCE_H_OTHER 8
|
||||||
#define SCE_H_COMMENT 9
|
#define SCE_H_COMMENT 9
|
||||||
#define SCE_H_ENTITY 10
|
#define SCE_H_ENTITY 10
|
||||||
// Embedded Javascript
|
#define SCE_H_TAGEND 11
|
||||||
#define SCE_HJ_START 11
|
#define SCE_H_XMLSTART 12
|
||||||
#define SCE_HJ_DEFAULT 12
|
#define SCE_H_XMLEND 13
|
||||||
#define SCE_HJ_COMMENT 13
|
#define SCE_H_SCRIPT 14
|
||||||
#define SCE_HJ_COMMENTLINE 14
|
#define SCE_H_ASP 15
|
||||||
#define SCE_HJ_COMMENTDOC 15
|
#define SCE_H_ASPAT 16
|
||||||
#define SCE_HJ_NUMBER 16
|
#define SCE_H_CDATA 17
|
||||||
#define SCE_HJ_WORD 17
|
#define SCE_H_QUESTION 18
|
||||||
#define SCE_HJ_KEYWORD 18
|
#define SCE_H_VALUE 19
|
||||||
#define SCE_HJ_DOUBLESTRING 19
|
#define SCE_HJ_START 40
|
||||||
#define SCE_HJ_SINGLESTRING 20
|
#define SCE_HJ_DEFAULT 41
|
||||||
#define SCE_HJ_SYMBOLS 21
|
#define SCE_HJ_COMMENT 42
|
||||||
#define SCE_HJ_STRINGEOL 28
|
#define SCE_HJ_COMMENTLINE 43
|
||||||
// XML and ASP
|
#define SCE_HJ_COMMENTDOC 44
|
||||||
#define SCE_H_TAGEND 22
|
#define SCE_HJ_NUMBER 45
|
||||||
#define SCE_H_XMLSTART 23
|
#define SCE_HJ_WORD 46
|
||||||
#define SCE_H_XMLEND 24
|
#define SCE_HJ_KEYWORD 47
|
||||||
#define SCE_H_SCRIPT 25
|
#define SCE_HJ_DOUBLESTRING 48
|
||||||
#define SCE_H_ASP 26
|
#define SCE_HJ_SINGLESTRING 49
|
||||||
#define SCE_H_ASPAT 27
|
#define SCE_HJ_SYMBOLS 50
|
||||||
// Embedded VBScript
|
#define SCE_HJ_STRINGEOL 51
|
||||||
#define SCE_HB_START 40
|
#define SCE_HJA_START 55
|
||||||
#define SCE_HB_DEFAULT 41
|
#define SCE_HJA_DEFAULT 56
|
||||||
#define SCE_HB_COMMENTLINE 42
|
#define SCE_HJA_COMMENT 57
|
||||||
#define SCE_HB_NUMBER 43
|
#define SCE_HJA_COMMENTLINE 58
|
||||||
#define SCE_HB_WORD 44
|
#define SCE_HJA_COMMENTDOC 59
|
||||||
#define SCE_HB_STRING 45
|
#define SCE_HJA_NUMBER 60
|
||||||
#define SCE_HB_IDENTIFIER 46
|
#define SCE_HJA_WORD 61
|
||||||
#define SCE_HB_STRINGEOL 47
|
#define SCE_HJA_KEYWORD 62
|
||||||
// Embedded Python
|
#define SCE_HJA_DOUBLESTRING 63
|
||||||
#define SCE_HP_START 50
|
#define SCE_HJA_SINGLESTRING 64
|
||||||
#define SCE_HP_DEFAULT 51
|
#define SCE_HJA_SYMBOLS 65
|
||||||
#define SCE_HP_COMMENTLINE 52
|
#define SCE_HJA_STRINGEOL 66
|
||||||
#define SCE_HP_NUMBER 53
|
#define SCE_HB_START 70
|
||||||
#define SCE_HP_STRING 54
|
#define SCE_HB_DEFAULT 71
|
||||||
#define SCE_HP_CHARACTER 55
|
#define SCE_HB_COMMENTLINE 72
|
||||||
#define SCE_HP_WORD 56
|
#define SCE_HB_NUMBER 73
|
||||||
#define SCE_HP_TRIPLE 57
|
#define SCE_HB_WORD 74
|
||||||
#define SCE_HP_TRIPLEDOUBLE 58
|
#define SCE_HB_STRING 75
|
||||||
#define SCE_HP_CLASSNAME 59
|
#define SCE_HB_IDENTIFIER 76
|
||||||
#define SCE_HP_DEFNAME 60
|
#define SCE_HB_STRINGEOL 77
|
||||||
#define SCE_HP_OPERATOR 61
|
#define SCE_HBA_START 80
|
||||||
#define SCE_HP_IDENTIFIER 62
|
#define SCE_HBA_DEFAULT 81
|
||||||
|
#define SCE_HBA_COMMENTLINE 82
|
||||||
// Lexical states for SCLEX_PERL
|
#define SCE_HBA_NUMBER 83
|
||||||
|
#define SCE_HBA_WORD 84
|
||||||
|
#define SCE_HBA_STRING 85
|
||||||
|
#define SCE_HBA_IDENTIFIER 86
|
||||||
|
#define SCE_HBA_STRINGEOL 87
|
||||||
|
#define SCE_HP_START 90
|
||||||
|
#define SCE_HP_DEFAULT 91
|
||||||
|
#define SCE_HP_COMMENTLINE 92
|
||||||
|
#define SCE_HP_NUMBER 93
|
||||||
|
#define SCE_HP_STRING 94
|
||||||
|
#define SCE_HP_CHARACTER 95
|
||||||
|
#define SCE_HP_WORD 96
|
||||||
|
#define SCE_HP_TRIPLE 97
|
||||||
|
#define SCE_HP_TRIPLEDOUBLE 98
|
||||||
|
#define SCE_HP_CLASSNAME 99
|
||||||
|
#define SCE_HP_DEFNAME 100
|
||||||
|
#define SCE_HP_OPERATOR 101
|
||||||
|
#define SCE_HP_IDENTIFIER 102
|
||||||
|
#define SCE_HPA_START 105
|
||||||
|
#define SCE_HPA_DEFAULT 106
|
||||||
|
#define SCE_HPA_COMMENTLINE 107
|
||||||
|
#define SCE_HPA_NUMBER 108
|
||||||
|
#define SCE_HPA_STRING 109
|
||||||
|
#define SCE_HPA_CHARACTER 110
|
||||||
|
#define SCE_HPA_WORD 111
|
||||||
|
#define SCE_HPA_TRIPLE 112
|
||||||
|
#define SCE_HPA_TRIPLEDOUBLE 113
|
||||||
|
#define SCE_HPA_CLASSNAME 114
|
||||||
|
#define SCE_HPA_DEFNAME 115
|
||||||
|
#define SCE_HPA_OPERATOR 116
|
||||||
|
#define SCE_HPA_IDENTIFIER 117
|
||||||
|
#define SCE_HPHP_DEFAULT 118
|
||||||
|
#define SCE_HPHP_HSTRING 119
|
||||||
|
#define SCE_HPHP_SIMPLESTRING 120
|
||||||
|
#define SCE_HPHP_WORD 121
|
||||||
|
#define SCE_HPHP_NUMBER 122
|
||||||
|
#define SCE_HPHP_VARIABLE 123
|
||||||
|
#define SCE_HPHP_COMMENT 124
|
||||||
|
#define SCE_HPHP_COMMENTLINE 125
|
||||||
|
#define SCE_HPHP_STRINGEOL 126
|
||||||
#define SCE_PL_DEFAULT 0
|
#define SCE_PL_DEFAULT 0
|
||||||
#define SCE_PL_HERE 1
|
#define SCE_PL_HERE 1
|
||||||
#define SCE_PL_COMMENTLINE 2
|
#define SCE_PL_COMMENTLINE 2
|
||||||
@@ -130,5 +174,31 @@
|
|||||||
#define SCE_PL_LONGQUOTE 19
|
#define SCE_PL_LONGQUOTE 19
|
||||||
#define SCE_PL_BACKTICKS 20
|
#define SCE_PL_BACKTICKS 20
|
||||||
#define SCE_PL_DATASECTION 21
|
#define SCE_PL_DATASECTION 21
|
||||||
|
#define SCE_L_DEFAULT 0
|
||||||
|
#define SCE_L_COMMAND 1
|
||||||
|
#define SCE_L_TAG 2
|
||||||
|
#define SCE_L_MATH 3
|
||||||
|
#define SCE_L_COMMENT 4
|
||||||
|
#define SCE_LUA_DEFAULT 0
|
||||||
|
#define SCE_LUA_COMMENT 1
|
||||||
|
#define SCE_LUA_COMMENTLINE 2
|
||||||
|
#define SCE_LUA_COMMENTDOC 3
|
||||||
|
#define SCE_LUA_NUMBER 4
|
||||||
|
#define SCE_LUA_WORD 5
|
||||||
|
#define SCE_LUA_STRING 6
|
||||||
|
#define SCE_LUA_CHARACTER 7
|
||||||
|
#define SCE_LUA_LITERALSTRING 8
|
||||||
|
#define SCE_LUA_PREPROCESSOR 9
|
||||||
|
#define SCE_LUA_OPERATOR 10
|
||||||
|
#define SCE_LUA_IDENTIFIER 11
|
||||||
|
#define SCE_LUA_STRINGEOL 12
|
||||||
|
#define SCE_ERR_DEFAULT 0
|
||||||
|
#define SCE_ERR_PYTHON 1
|
||||||
|
#define SCE_ERR_GCC 2
|
||||||
|
#define SCE_ERR_MS 3
|
||||||
|
#define SCE_ERR_CMD 4
|
||||||
|
#define SCE_ERR_BORLAND 5
|
||||||
|
#define SCE_ERR_PERL 6
|
||||||
|
//--Autogenerated -- end of section automatically generated from Scintilla.iface
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -3,117 +3,74 @@
|
|||||||
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
// The License.txt file describes the conditions under which this software may be distributed.
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
// Most of this file is automatically generated from the Scintilla.iface interface definition
|
||||||
|
// file which contains any comments about the definitions. HFacer.py does the generation.
|
||||||
|
|
||||||
#ifndef SCINTILLA_H
|
#ifndef SCINTILLA_H
|
||||||
#define SCINTILLA_H
|
#define SCINTILLA_H
|
||||||
|
|
||||||
// Compile-time configuration options
|
// Compile-time configuration options
|
||||||
#define MACRO_SUPPORT 1 // Comment out to remove macro hooks
|
#define MACRO_SUPPORT 1 // Comment out to remove macro hooks
|
||||||
|
|
||||||
#if PLAT_GTK
|
#if PLAT_WIN
|
||||||
#include <gdk/gdk.h>
|
#ifdef STATIC_BUILD
|
||||||
#include <gtk/gtkvbox.h>
|
void Scintilla_RegisterClasses(HINSTANCE hInstance);
|
||||||
|
#endif
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SCINTILLA(obj) GTK_CHECK_CAST (obj, scintilla_get_type (), ScintillaObject)
|
typedef long (*SciFnDirect)(long ptr, unsigned int iMessage, unsigned long wParam, long lParam);
|
||||||
#define SCINTILLA_CLASS(klass) GTK_CHECK_CLASS_CAS T (klass, scintilla_get_type (), ScintillaClass)
|
|
||||||
#define IS_SCINTILLA(obj) GTK_CHECK_TYPE (obj, scintilla_get_type ())
|
|
||||||
|
|
||||||
typedef struct _ScintillaObject ScintillaObject;
|
//++Autogenerated -- start of section automatically generated from Scintilla.iface
|
||||||
typedef struct _ScintillaClass ScintillaClass;
|
#define INVALID_POSITION -1
|
||||||
|
|
||||||
struct _ScintillaObject
|
|
||||||
{
|
|
||||||
GtkFixed vbox;
|
|
||||||
void *pscin;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _ScintillaClass
|
|
||||||
{
|
|
||||||
GtkFixedClass parent_class;
|
|
||||||
|
|
||||||
void (* command) (ScintillaObject *ttt);
|
|
||||||
void (* notify) (ScintillaObject *ttt);
|
|
||||||
};
|
|
||||||
|
|
||||||
guint scintilla_get_type (void);
|
|
||||||
GtkWidget* scintilla_new (void);
|
|
||||||
void scintilla_set_id (ScintillaObject *sci,int id);
|
|
||||||
long scintilla_send_message (ScintillaObject *sci,int iMessage,int wParam,int lParam);
|
|
||||||
|
|
||||||
#include "WinDefs.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if PLAT_WX
|
|
||||||
#include "WinDefs.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Both GTK and Windows
|
|
||||||
|
|
||||||
#define INVALID_POSITION -1
|
|
||||||
|
|
||||||
// Define start of Scintilla messages to be greater than all edit (EM_*) messages
|
|
||||||
// as many EM_ messages can be used.
|
|
||||||
#define SCI_START 2000
|
#define SCI_START 2000
|
||||||
#define SCI_OPTIONAL_START 3000
|
#define SCI_OPTIONAL_START 3000
|
||||||
#define SCI_LEXER_START 4000
|
#define SCI_LEXER_START 4000
|
||||||
|
#define SCI_ADDTEXT 2001
|
||||||
#define SCI_ADDTEXT SCI_START + 1
|
#define SCI_ADDSTYLEDTEXT 2002
|
||||||
#define SCI_ADDSTYLEDTEXT SCI_START + 2
|
#define SCI_INSERTTEXT 2003
|
||||||
#define SCI_INSERTTEXT SCI_START + 3
|
#define SCI_CLEARALL 2004
|
||||||
#define SCI_CLEARALL SCI_START + 4
|
#define SCI_CLEARDOCUMENTSTYLE 2005
|
||||||
#define SCI_GETLENGTH SCI_START + 6
|
#define SCI_GETLENGTH 2006
|
||||||
#define SCI_GETCHARAT SCI_START + 7
|
#define SCI_GETCHARAT 2007
|
||||||
#define SCI_GETCURRENTPOS SCI_START + 8
|
#define SCI_GETCURRENTPOS 2008
|
||||||
#define SCI_GETANCHOR SCI_START + 9
|
#define SCI_GETANCHOR 2009
|
||||||
#define SCI_GETSTYLEAT SCI_START + 10
|
#define SCI_GETSTYLEAT 2010
|
||||||
|
#define SCI_REDO 2011
|
||||||
#define SCI_REDO SCI_START + 11
|
#define SCI_SETUNDOCOLLECTION 2012
|
||||||
#define SCI_SETUNDOCOLLECTION SCI_START + 12
|
#define SCI_SELECTALL 2013
|
||||||
#define SCI_SELECTALL SCI_START + 13
|
#define SCI_SETSAVEPOINT 2014
|
||||||
#define SCI_SETSAVEPOINT SCI_START + 14
|
#define SCI_GETSTYLEDTEXT 2015
|
||||||
#define SCI_GETSTYLEDTEXT SCI_START + 15
|
#define SCI_CANREDO 2016
|
||||||
#define SCI_CANREDO SCI_START + 16
|
#define SCI_MARKERLINEFROMHANDLE 2017
|
||||||
#define SCI_MARKERLINEFROMHANDLE SCI_START + 17
|
#define SCI_MARKERDELETEHANDLE 2018
|
||||||
#define SCI_MARKERDELETEHANDLE SCI_START + 18
|
#define SCI_GETUNDOCOLLECTION 2019
|
||||||
|
#define SCWS_INVISIBLE 0
|
||||||
#define SC_UNDOCOLLECT_NONE 0
|
#define SCWS_VISIBLEALWAYS 1
|
||||||
#define SC_UNDOCOLLECT_AUTOSTART 1
|
#define SCWS_VISIBLEAFTERINDENT 2
|
||||||
|
#define SCI_GETVIEWWS 2020
|
||||||
#define SCI_GETVIEWWS SCI_START + 20
|
#define SCI_SETVIEWWS 2021
|
||||||
#define SCI_SETVIEWWS SCI_START + 21
|
#define SCI_POSITIONFROMPOINT 2022
|
||||||
#define SCI_CHANGEPOSITION SCI_START + 22
|
#define SCI_GOTOLINE 2024
|
||||||
#define SCI_GOTOLINE SCI_START + 24
|
#define SCI_GOTOPOS 2025
|
||||||
#define SCI_GOTOPOS SCI_START + 25
|
#define SCI_SETANCHOR 2026
|
||||||
#define SCI_SETANCHOR SCI_START + 26
|
#define SCI_GETCURLINE 2027
|
||||||
#define SCI_GETCURLINE SCI_START + 27
|
#define SCI_GETENDSTYLED 2028
|
||||||
#define SCI_GETENDSTYLED SCI_START + 28
|
#define SCI_CONVERTEOLS 2029
|
||||||
#define SCI_CONVERTEOLS SCI_START + 29
|
|
||||||
|
|
||||||
#define SCI_GETEOLMODE SCI_START + 30
|
|
||||||
#define SCI_SETEOLMODE SCI_START + 31
|
|
||||||
|
|
||||||
#define SC_EOL_CRLF 0
|
#define SC_EOL_CRLF 0
|
||||||
#define SC_EOL_CR 1
|
#define SC_EOL_CR 1
|
||||||
#define SC_EOL_LF 2
|
#define SC_EOL_LF 2
|
||||||
|
#define SCI_GETEOLMODE 2030
|
||||||
#define SCI_STARTSTYLING SCI_START + 32
|
#define SCI_SETEOLMODE 2031
|
||||||
#define SCI_SETSTYLING SCI_START + 33
|
#define SCI_STARTSTYLING 2032
|
||||||
|
#define SCI_SETSTYLING 2033
|
||||||
#define SCI_SETBUFFEREDDRAW SCI_START + 35
|
#define SCI_GETBUFFEREDDRAW 2034
|
||||||
#define SCI_SETTABWIDTH SCI_START + 36
|
#define SCI_SETBUFFEREDDRAW 2035
|
||||||
#define SCI_SETCODEPAGE SCI_START + 37
|
#define SCI_SETTABWIDTH 2036
|
||||||
#define SCI_SETUSEPALETTE SCI_START + 39
|
#define SCI_GETTABWIDTH 2121
|
||||||
|
#define SC_CP_UTF8 65001
|
||||||
|
#define SCI_SETCODEPAGE 2037
|
||||||
|
#define SCI_SETUSEPALETTE 2039
|
||||||
#define MARKER_MAX 31
|
#define MARKER_MAX 31
|
||||||
|
|
||||||
#define SC_MARK_CIRCLE 0
|
#define SC_MARK_CIRCLE 0
|
||||||
#define SC_MARK_ROUNDRECT 1
|
#define SC_MARK_ROUNDRECT 1
|
||||||
#define SC_MARK_ARROW 2
|
#define SC_MARK_ARROW 2
|
||||||
@@ -123,217 +80,296 @@ extern "C" {
|
|||||||
#define SC_MARK_ARROWDOWN 6
|
#define SC_MARK_ARROWDOWN 6
|
||||||
#define SC_MARK_MINUS 7
|
#define SC_MARK_MINUS 7
|
||||||
#define SC_MARK_PLUS 8
|
#define SC_MARK_PLUS 8
|
||||||
|
|
||||||
#define SCI_MARKERDEFINE SCI_START + 40
|
|
||||||
#define SCI_MARKERSETFORE SCI_START + 41
|
|
||||||
#define SCI_MARKERSETBACK SCI_START + 42
|
|
||||||
#define SCI_MARKERADD SCI_START + 43
|
|
||||||
#define SCI_MARKERDELETE SCI_START + 44
|
|
||||||
#define SCI_MARKERDELETEALL SCI_START + 45
|
|
||||||
#define SCI_MARKERGET SCI_START + 46
|
|
||||||
#define SCI_MARKERNEXT SCI_START + 47
|
|
||||||
#define SCI_MARKERPREVIOUS SCI_START + 48
|
|
||||||
|
|
||||||
#define SC_MARKNUM_FOLDER 30
|
#define SC_MARKNUM_FOLDER 30
|
||||||
#define SC_MARKNUM_FOLDEROPEN 31
|
#define SC_MARKNUM_FOLDEROPEN 31
|
||||||
|
#define SCI_MARKERDEFINE 2040
|
||||||
#define SC_MASK_FOLDERS ((1<<SC_MARKNUM_FOLDER) | (1<<SC_MARKNUM_FOLDEROPEN))
|
#define SCI_MARKERSETFORE 2041
|
||||||
|
#define SCI_MARKERSETBACK 2042
|
||||||
|
#define SCI_MARKERADD 2043
|
||||||
|
#define SCI_MARKERDELETE 2044
|
||||||
|
#define SCI_MARKERDELETEALL 2045
|
||||||
|
#define SCI_MARKERGET 2046
|
||||||
|
#define SCI_MARKERNEXT 2047
|
||||||
|
#define SCI_MARKERPREVIOUS 2048
|
||||||
#define SC_MARGIN_SYMBOL 0
|
#define SC_MARGIN_SYMBOL 0
|
||||||
#define SC_MARGIN_NUMBER 1
|
#define SC_MARGIN_NUMBER 1
|
||||||
|
#define SCI_SETMARGINTYPEN 2240
|
||||||
#define SCI_SETMARGINTYPEN SCI_START + 240
|
#define SCI_GETMARGINTYPEN 2241
|
||||||
#define SCI_GETMARGINTYPEN SCI_START + 241
|
#define SCI_SETMARGINWIDTHN 2242
|
||||||
#define SCI_SETMARGINWIDTHN SCI_START + 242
|
#define SCI_GETMARGINWIDTHN 2243
|
||||||
#define SCI_GETMARGINWIDTHN SCI_START + 243
|
#define SCI_SETMARGINMASKN 2244
|
||||||
#define SCI_SETMARGINMASKN SCI_START + 244
|
#define SCI_GETMARGINMASKN 2245
|
||||||
#define SCI_GETMARGINMASKN SCI_START + 245
|
#define SCI_SETMARGINSENSITIVEN 2246
|
||||||
#define SCI_SETMARGINSENSITIVEN SCI_START + 246
|
#define SCI_GETMARGINSENSITIVEN 2247
|
||||||
#define SCI_GETMARGINSENSITIVEN SCI_START + 247
|
|
||||||
|
|
||||||
#define STYLE_DEFAULT 32
|
#define STYLE_DEFAULT 32
|
||||||
#define STYLE_LINENUMBER 33
|
#define STYLE_LINENUMBER 33
|
||||||
#define STYLE_BRACELIGHT 34
|
#define STYLE_BRACELIGHT 34
|
||||||
#define STYLE_BRACEBAD 35
|
#define STYLE_BRACEBAD 35
|
||||||
#define STYLE_CONTROLCHAR 36
|
#define STYLE_CONTROLCHAR 36
|
||||||
#define STYLE_MAX 63
|
#define STYLE_INDENTGUIDE 37
|
||||||
|
#define STYLE_MAX 127
|
||||||
#define SCI_STYLECLEARALL SCI_START + 50
|
#define SC_CHARSET_ANSI 0
|
||||||
#define SCI_STYLESETFORE SCI_START + 51
|
#define SC_CHARSET_DEFAULT 1
|
||||||
#define SCI_STYLESETBACK SCI_START + 52
|
#define SC_CHARSET_BALTIC 186
|
||||||
#define SCI_STYLESETBOLD SCI_START + 53
|
#define SC_CHARSET_CHINESEBIG5 136
|
||||||
#define SCI_STYLESETITALIC SCI_START + 54
|
#define SC_CHARSET_EASTEUROPE 238
|
||||||
#define SCI_STYLESETSIZE SCI_START + 55
|
#define SC_CHARSET_GB2312 134
|
||||||
#define SCI_STYLESETFONT SCI_START + 56
|
#define SC_CHARSET_GREEK 161
|
||||||
#define SCI_STYLESETEOLFILLED SCI_START + 57
|
#define SC_CHARSET_HANGUL 129
|
||||||
#define SCI_STYLERESETDEFAULT SCI_START + 58
|
#define SC_CHARSET_MAC 77
|
||||||
|
#define SC_CHARSET_OEM 255
|
||||||
#define SCI_SETSELFORE SCI_START + 67
|
#define SC_CHARSET_RUSSIAN 204
|
||||||
#define SCI_SETSELBACK SCI_START + 68
|
#define SC_CHARSET_SHIFTJIS 128
|
||||||
#define SCI_SETCARETFORE SCI_START + 69
|
#define SC_CHARSET_SYMBOL 2
|
||||||
|
#define SC_CHARSET_TURKISH 162
|
||||||
#define SCI_ASSIGNCMDKEY SCI_START + 70
|
#define SC_CHARSET_JOHAB 130
|
||||||
#define SCI_CLEARCMDKEY SCI_START + 71
|
#define SC_CHARSET_HEBREW 177
|
||||||
#define SCI_CLEARALLCMDKEYS SCI_START + 72
|
#define SC_CHARSET_ARABIC 178
|
||||||
|
#define SC_CHARSET_VIETNAMESE 163
|
||||||
#define SCI_SETSTYLINGEX SCI_START + 73
|
#define SC_CHARSET_THAI 222
|
||||||
|
#define SCI_STYLECLEARALL 2050
|
||||||
#define SCI_GETCARETPERIOD SCI_START + 75
|
#define SCI_STYLESETFORE 2051
|
||||||
#define SCI_SETCARETPERIOD SCI_START + 76
|
#define SCI_STYLESETBACK 2052
|
||||||
#define SCI_SETWORDCHARS SCI_START + 77
|
#define SCI_STYLESETBOLD 2053
|
||||||
|
#define SCI_STYLESETITALIC 2054
|
||||||
#define SCI_BEGINUNDOACTION SCI_START + 78
|
#define SCI_STYLESETSIZE 2055
|
||||||
#define SCI_ENDUNDOACTION SCI_START + 79
|
#define SCI_STYLESETFONT 2056
|
||||||
|
#define SCI_STYLESETEOLFILLED 2057
|
||||||
|
#define SCI_STYLERESETDEFAULT 2058
|
||||||
|
#define SCI_STYLESETUNDERLINE 2059
|
||||||
|
#define SCI_STYLESETCHARACTERSET 2066
|
||||||
|
#define SCI_SETSELFORE 2067
|
||||||
|
#define SCI_SETSELBACK 2068
|
||||||
|
#define SCI_SETCARETFORE 2069
|
||||||
|
#define SCI_ASSIGNCMDKEY 2070
|
||||||
|
#define SCI_CLEARCMDKEY 2071
|
||||||
|
#define SCI_CLEARALLCMDKEYS 2072
|
||||||
|
#define SCI_SETSTYLINGEX 2073
|
||||||
|
#define SCI_STYLESETVISIBLE 2074
|
||||||
|
#define SCI_GETCARETPERIOD 2075
|
||||||
|
#define SCI_SETCARETPERIOD 2076
|
||||||
|
#define SCI_SETWORDCHARS 2077
|
||||||
|
#define SCI_BEGINUNDOACTION 2078
|
||||||
|
#define SCI_ENDUNDOACTION 2079
|
||||||
#define INDIC_MAX 7
|
#define INDIC_MAX 7
|
||||||
|
|
||||||
#define INDIC_PLAIN 0
|
#define INDIC_PLAIN 0
|
||||||
#define INDIC_SQUIGGLE 1
|
#define INDIC_SQUIGGLE 1
|
||||||
#define INDIC_TT 2
|
#define INDIC_TT 2
|
||||||
|
#define INDIC_DIAGONAL 3
|
||||||
|
#define INDIC_STRIKE 4
|
||||||
#define INDIC0_MASK 32
|
#define INDIC0_MASK 32
|
||||||
#define INDIC1_MASK 64
|
#define INDIC1_MASK 64
|
||||||
#define INDIC2_MASK 128
|
#define INDIC2_MASK 128
|
||||||
#define INDICS_MASK (INDIC0_MASK | INDIC1_MASK | INDIC2_MASK)
|
#define INDICS_MASK INDIC0_MASK | INDIC1_MASK | INDIC2_MASK
|
||||||
|
#define SCI_INDICSETSTYLE 2080
|
||||||
#define SCI_INDICSETSTYLE SCI_START + 80
|
#define SCI_INDICGETSTYLE 2081
|
||||||
#define SCI_INDICGETSTYLE SCI_START + 81
|
#define SCI_INDICSETFORE 2082
|
||||||
#define SCI_INDICSETFORE SCI_START + 82
|
#define SCI_INDICGETFORE 2083
|
||||||
#define SCI_INDICGETFORE SCI_START + 83
|
#define SCI_SETSTYLEBITS 2090
|
||||||
|
#define SCI_GETSTYLEBITS 2091
|
||||||
#define SCI_SETSTYLEBITS SCI_START + 90
|
#define SCI_SETLINESTATE 2092
|
||||||
#define SCI_GETSTYLEBITS SCI_START + 91
|
#define SCI_GETLINESTATE 2093
|
||||||
#define SCI_SETLINESTATE SCI_START + 92
|
#define SCI_GETMAXLINESTATE 2094
|
||||||
#define SCI_GETLINESTATE SCI_START + 93
|
#define SCI_AUTOCSHOW 2100
|
||||||
#define SCI_GETMAXLINESTATE SCI_START + 94
|
#define SCI_AUTOCCANCEL 2101
|
||||||
|
#define SCI_AUTOCACTIVE 2102
|
||||||
#define SCI_AUTOCSHOW SCI_START + 100
|
#define SCI_AUTOCPOSSTART 2103
|
||||||
#define SCI_AUTOCCANCEL SCI_START + 101
|
#define SCI_AUTOCCOMPLETE 2104
|
||||||
#define SCI_AUTOCACTIVE SCI_START + 102
|
#define SCI_AUTOCSTOPS 2105
|
||||||
#define SCI_AUTOCPOSSTART SCI_START + 103
|
#define SCI_AUTOCSETSEPARATOR 2106
|
||||||
#define SCI_AUTOCCOMPLETE SCI_START + 104
|
#define SCI_AUTOCGETSEPARATOR 2107
|
||||||
#define SCI_AUTOCSTOPS SCI_START + 105
|
#define SCI_AUTOCSELECT 2108
|
||||||
|
#define SCI_AUTOCSETCANCELATSTART 2110
|
||||||
#define SCI_CALLTIPSHOW SCI_START + 200
|
#define SCI_AUTOCGETCANCELATSTART 2111
|
||||||
#define SCI_CALLTIPCANCEL SCI_START + 201
|
#define SCI_AUTOCSETFILLUPS 2112
|
||||||
#define SCI_CALLTIPACTIVE SCI_START + 202
|
#define SCI_AUTOCSETCHOOSESINGLE 2113
|
||||||
#define SCI_CALLTIPPOSSTART SCI_START + 203
|
#define SCI_AUTOCGETCHOOSESINGLE 2114
|
||||||
#define SCI_CALLTIPSETHLT SCI_START + 204
|
#define SCI_AUTOCSETIGNORECASE 2115
|
||||||
#define SCI_CALLTIPSETBACK SCI_START + 205
|
#define SCI_AUTOCGETIGNORECASE 2116
|
||||||
|
#define SCI_SETINDENT 2122
|
||||||
|
#define SCI_GETINDENT 2123
|
||||||
|
#define SCI_SETUSETABS 2124
|
||||||
|
#define SCI_GETUSETABS 2125
|
||||||
|
#define SCI_SETLINEINDENTATION 2126
|
||||||
|
#define SCI_GETLINEINDENTATION 2127
|
||||||
|
#define SCI_GETLINEINDENTPOSITION 2128
|
||||||
|
#define SCI_GETCOLUMN 2129
|
||||||
|
#define SCI_SETHSCROLLBAR 2130
|
||||||
|
#define SCI_GETHSCROLLBAR 2131
|
||||||
|
#define SCI_SETINDENTATIONGUIDES 2132
|
||||||
|
#define SCI_GETINDENTATIONGUIDES 2133
|
||||||
|
#define SCI_SETHIGHLIGHTGUIDE 2134
|
||||||
|
#define SCI_GETHIGHLIGHTGUIDE 2135
|
||||||
|
#define SCI_GETLINEENDPOSITION 2136
|
||||||
|
#define SCI_GETCODEPAGE 2137
|
||||||
|
#define SCI_GETCARETFORE 2138
|
||||||
|
#define SCI_GETUSEPALETTE 2139
|
||||||
|
#define SCI_GETREADONLY 2140
|
||||||
|
#define SCI_SETCURRENTPOS 2141
|
||||||
|
#define SCI_SETSELECTIONSTART 2142
|
||||||
|
#define SCI_GETSELECTIONSTART 2143
|
||||||
|
#define SCI_SETSELECTIONEND 2144
|
||||||
|
#define SCI_GETSELECTIONEND 2145
|
||||||
|
#define SCI_SETPRINTMAGNIFICATION 2146
|
||||||
|
#define SCI_GETPRINTMAGNIFICATION 2147
|
||||||
|
#define SC_PRINT_NORMAL 0
|
||||||
|
#define SC_PRINT_INVERTLIGHT 1
|
||||||
|
#define SC_PRINT_BLACKONWHITE 2
|
||||||
|
#define SCI_SETPRINTCOLOURMODE 2148
|
||||||
|
#define SCI_GETPRINTCOLOURMODE 2149
|
||||||
|
#define SCFIND_DOWN 1
|
||||||
|
#define SCFIND_WHOLEWORD 2
|
||||||
|
#define SCFIND_MATCHCASE 4
|
||||||
|
#define SCFIND_WORDSTART 0x00100000
|
||||||
|
#define SCFIND_REGEXP 0x00200000
|
||||||
|
#define SCI_FINDTEXT 2150
|
||||||
|
#define SCI_FORMATRANGE 2151
|
||||||
|
#define SCI_GETFIRSTVISIBLELINE 2152
|
||||||
|
#define SCI_GETLINE 2153
|
||||||
|
#define SCI_GETLINECOUNT 2154
|
||||||
|
#define SCI_SETMARGINLEFT 2155
|
||||||
|
#define SCI_GETMARGINLEFT 2156
|
||||||
|
#define SCI_SETMARGINRIGHT 2157
|
||||||
|
#define SCI_GETMARGINRIGHT 2158
|
||||||
|
#define SCI_GETMODIFY 2159
|
||||||
|
#define SCI_SETSEL 2160
|
||||||
|
#define SCI_GETSELTEXT 2161
|
||||||
|
#define SCI_GETTEXTRANGE 2162
|
||||||
|
#define SCI_HIDESELECTION 2163
|
||||||
|
#define SCI_POINTXFROMPOSITION 2164
|
||||||
|
#define SCI_POINTYFROMPOSITION 2165
|
||||||
|
#define SCI_LINEFROMPOSITION 2166
|
||||||
|
#define SCI_POSITIONFROMLINE 2167
|
||||||
|
#define SCI_LINESCROLL 2168
|
||||||
|
#define SCI_SCROLLCARET 2169
|
||||||
|
#define SCI_REPLACESEL 2170
|
||||||
|
#define SCI_SETREADONLY 2171
|
||||||
|
#define SCI_NULL 2172
|
||||||
|
#define SCI_CANPASTE 2173
|
||||||
|
#define SCI_CANUNDO 2174
|
||||||
|
#define SCI_EMPTYUNDOBUFFER 2175
|
||||||
|
#define SCI_UNDO 2176
|
||||||
|
#define SCI_CUT 2177
|
||||||
|
#define SCI_COPY 2178
|
||||||
|
#define SCI_PASTE 2179
|
||||||
|
#define SCI_CLEAR 2180
|
||||||
|
#define SCI_SETTEXT 2181
|
||||||
|
#define SCI_GETTEXT 2182
|
||||||
|
#define SCI_GETTEXTLENGTH 2183
|
||||||
|
#define SCI_GETDIRECTFUNCTION 2184
|
||||||
|
#define SCI_GETDIRECTPOINTER 2185
|
||||||
|
#define SCI_SETOVERTYPE 2186
|
||||||
|
#define SCI_GETOVERTYPE 2187
|
||||||
|
#define SCI_CALLTIPSHOW 2200
|
||||||
|
#define SCI_CALLTIPCANCEL 2201
|
||||||
|
#define SCI_CALLTIPACTIVE 2202
|
||||||
|
#define SCI_CALLTIPPOSSTART 2203
|
||||||
|
#define SCI_CALLTIPSETHLT 2204
|
||||||
|
#define SCI_CALLTIPSETBACK 2205
|
||||||
|
#define SCI_VISIBLEFROMDOCLINE 2220
|
||||||
|
#define SCI_DOCLINEFROMVISIBLE 2221
|
||||||
#define SC_FOLDLEVELBASE 0x400
|
#define SC_FOLDLEVELBASE 0x400
|
||||||
#define SC_FOLDLEVELWHITEFLAG 0x1000
|
#define SC_FOLDLEVELWHITEFLAG 0x1000
|
||||||
#define SC_FOLDLEVELHEADERFLAG 0x2000
|
#define SC_FOLDLEVELHEADERFLAG 0x2000
|
||||||
#define SC_FOLDLEVELNUMBERMASK 0x0FFF
|
#define SC_FOLDLEVELNUMBERMASK 0x0FFF
|
||||||
|
#define SCI_SETFOLDLEVEL 2222
|
||||||
#define SCI_VISIBLEFROMDOCLINE SCI_START + 220
|
#define SCI_GETFOLDLEVEL 2223
|
||||||
#define SCI_DOCLINEFROMVISIBLE SCI_START + 221
|
#define SCI_GETLASTCHILD 2224
|
||||||
#define SCI_SETFOLDLEVEL SCI_START + 222
|
#define SCI_GETFOLDPARENT 2225
|
||||||
#define SCI_GETFOLDLEVEL SCI_START + 223
|
#define SCI_SHOWLINES 2226
|
||||||
#define SCI_GETLASTCHILD SCI_START + 224
|
#define SCI_HIDELINES 2227
|
||||||
#define SCI_GETFOLDPARENT SCI_START + 225
|
#define SCI_GETLINEVISIBLE 2228
|
||||||
#define SCI_SHOWLINES SCI_START + 226
|
#define SCI_SETFOLDEXPANDED 2229
|
||||||
#define SCI_HIDELINES SCI_START + 227
|
#define SCI_GETFOLDEXPANDED 2230
|
||||||
#define SCI_GETLINEVISIBLE SCI_START + 228
|
#define SCI_TOGGLEFOLD 2231
|
||||||
#define SCI_SETFOLDEXPANDED SCI_START + 229
|
#define SCI_ENSUREVISIBLE 2232
|
||||||
#define SCI_GETFOLDEXPANDED SCI_START + 230
|
#define SCI_SETFOLDFLAGS 2233
|
||||||
#define SCI_TOGGLEFOLD SCI_START + 231
|
#define SCI_LINEDOWN 2300
|
||||||
#define SCI_ENSUREVISIBLE SCI_START + 232
|
#define SCI_LINEDOWNEXTEND 2301
|
||||||
#define SCI_SETFOLDFLAGS SCI_START + 233
|
#define SCI_LINEUP 2302
|
||||||
|
#define SCI_LINEUPEXTEND 2303
|
||||||
// Key messages
|
#define SCI_CHARLEFT 2304
|
||||||
#define SCI_LINEDOWN SCI_START + 300
|
#define SCI_CHARLEFTEXTEND 2305
|
||||||
#define SCI_LINEDOWNEXTEND SCI_START + 301
|
#define SCI_CHARRIGHT 2306
|
||||||
#define SCI_LINEUP SCI_START + 302
|
#define SCI_CHARRIGHTEXTEND 2307
|
||||||
#define SCI_LINEUPEXTEND SCI_START + 303
|
#define SCI_WORDLEFT 2308
|
||||||
#define SCI_CHARLEFT SCI_START + 304
|
#define SCI_WORDLEFTEXTEND 2309
|
||||||
#define SCI_CHARLEFTEXTEND SCI_START + 305
|
#define SCI_WORDRIGHT 2310
|
||||||
#define SCI_CHARRIGHT SCI_START + 306
|
#define SCI_WORDRIGHTEXTEND 2311
|
||||||
#define SCI_CHARRIGHTEXTEND SCI_START + 307
|
#define SCI_HOME 2312
|
||||||
#define SCI_WORDLEFT SCI_START + 308
|
#define SCI_HOMEEXTEND 2313
|
||||||
#define SCI_WORDLEFTEXTEND SCI_START + 309
|
#define SCI_LINEEND 2314
|
||||||
#define SCI_WORDRIGHT SCI_START + 310
|
#define SCI_LINEENDEXTEND 2315
|
||||||
#define SCI_WORDRIGHTEXTEND SCI_START + 311
|
#define SCI_DOCUMENTSTART 2316
|
||||||
#define SCI_HOME SCI_START + 312
|
#define SCI_DOCUMENTSTARTEXTEND 2317
|
||||||
#define SCI_HOMEEXTEND SCI_START + 313
|
#define SCI_DOCUMENTEND 2318
|
||||||
#define SCI_LINEEND SCI_START + 314
|
#define SCI_DOCUMENTENDEXTEND 2319
|
||||||
#define SCI_LINEENDEXTEND SCI_START + 315
|
#define SCI_PAGEUP 2320
|
||||||
#define SCI_DOCUMENTSTART SCI_START + 316
|
#define SCI_PAGEUPEXTEND 2321
|
||||||
#define SCI_DOCUMENTSTARTEXTEND SCI_START + 317
|
#define SCI_PAGEDOWN 2322
|
||||||
#define SCI_DOCUMENTEND SCI_START + 318
|
#define SCI_PAGEDOWNEXTEND 2323
|
||||||
#define SCI_DOCUMENTENDEXTEND SCI_START + 319
|
#define SCI_EDITTOGGLEOVERTYPE 2324
|
||||||
#define SCI_PAGEUP SCI_START + 320
|
#define SCI_CANCEL 2325
|
||||||
#define SCI_PAGEUPEXTEND SCI_START + 321
|
#define SCI_DELETEBACK 2326
|
||||||
#define SCI_PAGEDOWN SCI_START + 322
|
#define SCI_TAB 2327
|
||||||
#define SCI_PAGEDOWNEXTEND SCI_START + 323
|
#define SCI_BACKTAB 2328
|
||||||
#define SCI_EDITTOGGLEOVERTYPE SCI_START + 324
|
#define SCI_NEWLINE 2329
|
||||||
#define SCI_CANCEL SCI_START + 325
|
#define SCI_FORMFEED 2330
|
||||||
#define SCI_DELETEBACK SCI_START + 326
|
#define SCI_VCHOME 2331
|
||||||
#define SCI_TAB SCI_START + 327
|
#define SCI_VCHOMEEXTEND 2332
|
||||||
#define SCI_BACKTAB SCI_START + 328
|
#define SCI_ZOOMIN 2333
|
||||||
#define SCI_NEWLINE SCI_START + 329
|
#define SCI_ZOOMOUT 2334
|
||||||
#define SCI_FORMFEED SCI_START + 330
|
#define SCI_DELWORDLEFT 2335
|
||||||
#define SCI_VCHOME SCI_START + 331
|
#define SCI_DELWORDRIGHT 2336
|
||||||
#define SCI_VCHOMEEXTEND SCI_START + 332
|
#define SCI_LINECUT 2337
|
||||||
#define SCI_ZOOMIN SCI_START + 333
|
#define SCI_LINEDELETE 2338
|
||||||
#define SCI_ZOOMOUT SCI_START + 334
|
#define SCI_LINETRANSPOSE 2339
|
||||||
#define SCI_DELWORDLEFT SCI_START + 335
|
#define SCI_LOWERCASE 2340
|
||||||
#define SCI_DELWORDRIGHT SCI_START + 336
|
#define SCI_UPPERCASE 2341
|
||||||
|
#define SCI_LINESCROLLDOWN 2342
|
||||||
#define SCI_LINELENGTH SCI_START + 350
|
#define SCI_LINESCROLLUP 2343
|
||||||
#define SCI_BRACEHIGHLIGHT SCI_START + 351
|
#define SCI_LINELENGTH 2350
|
||||||
#define SCI_BRACEBADLIGHT SCI_START + 352
|
#define SCI_BRACEHIGHLIGHT 2351
|
||||||
#define SCI_BRACEMATCH SCI_START + 353
|
#define SCI_BRACEBADLIGHT 2352
|
||||||
#define SCI_GETVIEWEOL SCI_START + 355
|
#define SCI_BRACEMATCH 2353
|
||||||
#define SCI_SETVIEWEOL SCI_START + 356
|
#define SCI_GETVIEWEOL 2355
|
||||||
#define SCI_GETDOCPOINTER SCI_START + 357
|
#define SCI_SETVIEWEOL 2356
|
||||||
#define SCI_SETDOCPOINTER SCI_START + 358
|
#define SCI_GETDOCPOINTER 2357
|
||||||
#define SCI_SETMODEVENTMASK SCI_START + 359
|
#define SCI_SETDOCPOINTER 2358
|
||||||
|
#define SCI_SETMODEVENTMASK 2359
|
||||||
#define EDGE_NONE 0
|
#define EDGE_NONE 0
|
||||||
#define EDGE_LINE 1
|
#define EDGE_LINE 1
|
||||||
#define EDGE_BACKGROUND 2
|
#define EDGE_BACKGROUND 2
|
||||||
|
#define SCI_GETEDGECOLUMN 2360
|
||||||
#define SCI_GETEDGECOLUMN SCI_START + 360
|
#define SCI_SETEDGECOLUMN 2361
|
||||||
#define SCI_SETEDGECOLUMN SCI_START + 361
|
#define SCI_GETEDGEMODE 2362
|
||||||
#define SCI_GETEDGEMODE SCI_START + 362
|
#define SCI_SETEDGEMODE 2363
|
||||||
#define SCI_SETEDGEMODE SCI_START + 363
|
#define SCI_GETEDGECOLOUR 2364
|
||||||
#define SCI_GETEDGECOLOUR SCI_START + 364
|
#define SCI_SETEDGECOLOUR 2365
|
||||||
#define SCI_SETEDGECOLOUR SCI_START + 365
|
#define SCI_SEARCHANCHOR 2366
|
||||||
|
#define SCI_SEARCHNEXT 2367
|
||||||
#define SCI_SEARCHANCHOR SCI_START + 366
|
#define SCI_SEARCHPREV 2368
|
||||||
#define SCI_SEARCHNEXT SCI_START + 367
|
#define CARET_SLOP 0x01
|
||||||
#define SCI_SEARCHPREV SCI_START + 368
|
#define CARET_CENTER 0x02
|
||||||
|
#define CARET_STRICT 0x04
|
||||||
#define CARET_SLOP 0x01 // Show caret within N lines of edge when it's scrolled to view
|
#define SCI_SETCARETPOLICY 2369
|
||||||
#define CARET_CENTER 0x02 // Center caret on screen when it's scrolled to view
|
#define SCI_LINESONSCREEN 2370
|
||||||
#define CARET_STRICT 0x04 // OR this with CARET_CENTER to reposition even when visible, or
|
#define SCI_USEPOPUP 2371
|
||||||
// OR this with CARET_SLOP to reposition whenever outside slop border
|
#define SCI_SELECTIONISRECTANGLE 2372
|
||||||
|
#define SCI_SETZOOM 2373
|
||||||
#define SCI_SETCARETPOLICY SCI_START + 369
|
#define SCI_GETZOOM 2374
|
||||||
|
#define SCI_CREATEDOCUMENT 2375
|
||||||
// GTK+ Specific
|
#define SCI_ADDREFDOCUMENT 2376
|
||||||
#define SCI_GRABFOCUS SCI_START + 400
|
#define SCI_RELEASEDOCUMENT 2377
|
||||||
|
#define SCI_GETMODEVENTMASK 2378
|
||||||
// Optional module for macro recording
|
#define SCI_GRABFOCUS 2400
|
||||||
#ifdef MACRO_SUPPORT
|
#define SCI_STARTRECORD 3001
|
||||||
typedef void (tMacroRecorder)(UINT iMessage, WPARAM wParam, LPARAM lParam,
|
#define SCI_STOPRECORD 3002
|
||||||
void *userData);
|
#define SCI_SETLEXER 4001
|
||||||
#define SCI_STARTRECORD SCI_OPTIONAL_START + 1
|
#define SCI_GETLEXER 4002
|
||||||
#define SCI_STOPRECORD SCI_OPTIONAL_START + 2
|
#define SCI_COLOURISE 4003
|
||||||
#endif
|
#define SCI_SETPROPERTY 4004
|
||||||
|
#define SCI_SETKEYWORDS 4005
|
||||||
#define SCI_SETLEXER SCI_LEXER_START + 1
|
|
||||||
#define SCI_GETLEXER SCI_LEXER_START + 2
|
|
||||||
#define SCI_COLOURISE SCI_LEXER_START + 3
|
|
||||||
#define SCI_SETPROPERTY SCI_LEXER_START + 4
|
|
||||||
#define SCI_SETKEYWORDS SCI_LEXER_START + 5
|
|
||||||
|
|
||||||
// Notifications
|
|
||||||
|
|
||||||
// Type of modification and the action which caused the modification
|
|
||||||
// These are defined as a bit mask to make it easy to specify which notifications are wanted.
|
|
||||||
// One bit is set from each of SC_MOD_* and SC_PERFORMED_*.
|
|
||||||
#define SC_MOD_INSERTTEXT 0x1
|
#define SC_MOD_INSERTTEXT 0x1
|
||||||
#define SC_MOD_DELETETEXT 0x2
|
#define SC_MOD_DELETETEXT 0x2
|
||||||
#define SC_MOD_CHANGESTYLE 0x4
|
#define SC_MOD_CHANGESTYLE 0x4
|
||||||
@@ -342,11 +378,101 @@ typedef void (tMacroRecorder)(UINT iMessage, WPARAM wParam, LPARAM lParam,
|
|||||||
#define SC_PERFORMED_UNDO 0x20
|
#define SC_PERFORMED_UNDO 0x20
|
||||||
#define SC_PERFORMED_REDO 0x40
|
#define SC_PERFORMED_REDO 0x40
|
||||||
#define SC_LASTSTEPINUNDOREDO 0x100
|
#define SC_LASTSTEPINUNDOREDO 0x100
|
||||||
|
#define SC_MOD_CHANGEMARKER 0x200
|
||||||
|
#define SC_MOD_BEFOREINSERT 0x400
|
||||||
|
#define SC_MOD_BEFOREDELETE 0x800
|
||||||
|
#define SC_MODEVENTMASKALL 0xF77
|
||||||
|
#define SCEN_CHANGE 768
|
||||||
|
#define SCEN_SETFOCUS 512
|
||||||
|
#define SCEN_KILLFOCUS 256
|
||||||
|
#define SCK_DOWN 300
|
||||||
|
#define SCK_UP 301
|
||||||
|
#define SCK_LEFT 302
|
||||||
|
#define SCK_RIGHT 303
|
||||||
|
#define SCK_HOME 304
|
||||||
|
#define SCK_END 305
|
||||||
|
#define SCK_PRIOR 306
|
||||||
|
#define SCK_NEXT 307
|
||||||
|
#define SCK_DELETE 308
|
||||||
|
#define SCK_INSERT 309
|
||||||
|
#define SCK_ESCAPE 7
|
||||||
|
#define SCK_BACK 8
|
||||||
|
#define SCK_TAB 9
|
||||||
|
#define SCK_RETURN 13
|
||||||
|
#define SCK_ADD 310
|
||||||
|
#define SCK_SUBTRACT 311
|
||||||
|
#define SCK_DIVIDE 312
|
||||||
|
#define SCMOD_SHIFT 1
|
||||||
|
#define SCMOD_CTRL 2
|
||||||
|
#define SCMOD_ALT 4
|
||||||
|
#define SCN_STYLENEEDED 2000
|
||||||
|
#define SCN_CHARADDED 2001
|
||||||
|
#define SCN_SAVEPOINTREACHED 2002
|
||||||
|
#define SCN_SAVEPOINTLEFT 2003
|
||||||
|
#define SCN_MODIFYATTEMPTRO 2004
|
||||||
|
#define SCN_KEY 2005
|
||||||
|
#define SCN_DOUBLECLICK 2006
|
||||||
|
#define SCN_UPDATEUI 2007
|
||||||
|
#define SCN_CHECKBRACE 2007
|
||||||
|
#define SCN_MODIFIED 2008
|
||||||
|
#define SCN_MACRORECORD 2009
|
||||||
|
#define SCN_MARGINCLICK 2010
|
||||||
|
#define SCN_NEEDSHOWN 2011
|
||||||
|
#define SCN_POSCHANGED 2012
|
||||||
|
//--Autogenerated -- end of section automatically generated from Scintilla.iface
|
||||||
|
|
||||||
#define SC_MODEVENTMASKALL 0x377
|
// Optional module for macro recording
|
||||||
|
#ifdef MACRO_SUPPORT
|
||||||
|
typedef void (tMacroRecorder)(unsigned int iMessage, unsigned long wParam,
|
||||||
|
long lParam, void *userData);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// These structures are defined to be exactly the same shape as the Win32
|
||||||
|
// CHARRANGE, TEXTRANGE, FINDTEXTEX, FORMATRANGE, and NMHDR structs.
|
||||||
|
// So older code that treats Scintilla as a RichEdit will work.
|
||||||
|
|
||||||
|
struct CharacterRange {
|
||||||
|
long cpMin;
|
||||||
|
long cpMax;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TextRange {
|
||||||
|
CharacterRange chrg;
|
||||||
|
char *lpstrText;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TextToFind {
|
||||||
|
CharacterRange chrg;
|
||||||
|
char *lpstrText;
|
||||||
|
CharacterRange chrgText;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef PLATFORM_H
|
||||||
|
|
||||||
|
// This structure is used in printing and requires some of the graphics types
|
||||||
|
// from Platform.h. Not needed by most client code.
|
||||||
|
|
||||||
|
struct RangeToFormat {
|
||||||
|
SurfaceID hdc;
|
||||||
|
SurfaceID hdcTarget;
|
||||||
|
PRectangle rc;
|
||||||
|
PRectangle rcPage;
|
||||||
|
CharacterRange chrg;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct NotifyHeader {
|
||||||
|
// hwndFrom is really an environment specifc window handle or pointer
|
||||||
|
// but most clients of Scintilla.h do not have this type visible.
|
||||||
|
//WindowID hwndFrom;
|
||||||
|
void *hwndFrom;
|
||||||
|
unsigned int idFrom;
|
||||||
|
unsigned int code;
|
||||||
|
};
|
||||||
|
|
||||||
struct SCNotification {
|
struct SCNotification {
|
||||||
NMHDR nmhdr;
|
NotifyHeader nmhdr;
|
||||||
int position; // SCN_STYLENEEDED, SCN_MODIFIED
|
int position; // SCN_STYLENEEDED, SCN_MODIFIED
|
||||||
int ch; // SCN_CHARADDED, SCN_KEY
|
int ch; // SCN_CHARADDED, SCN_KEY
|
||||||
int modifiers; // SCN_KEY
|
int modifiers; // SCN_KEY
|
||||||
@@ -365,28 +491,7 @@ struct SCNotification {
|
|||||||
int margin; // SCN_MARGINCLICK
|
int margin; // SCN_MARGINCLICK
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SCN_STYLENEEDED 2000
|
#define SC_MASK_FOLDERS ((1<<SC_MARKNUM_FOLDER) | (1<<SC_MARKNUM_FOLDEROPEN))
|
||||||
#define SCN_CHARADDED 2001
|
|
||||||
#define SCN_SAVEPOINTREACHED 2002
|
|
||||||
#define SCN_SAVEPOINTLEFT 2003
|
|
||||||
#define SCN_MODIFYATTEMPTRO 2004
|
|
||||||
// GTK+ Specific to work around focus and accelerator problems:
|
|
||||||
#define SCN_KEY 2005
|
|
||||||
#define SCN_DOUBLECLICK 2006
|
|
||||||
#define SCN_UPDATEUI 2007
|
|
||||||
// The old name for SCN_UPDATEUI:
|
|
||||||
#define SCN_CHECKBRACE 2007
|
|
||||||
#define SCN_MODIFIED 2008
|
|
||||||
// Optional module for macro recording
|
|
||||||
#ifdef MACRO_SUPPORT
|
|
||||||
#define SCN_MACRORECORD 2009
|
|
||||||
#endif
|
|
||||||
#define SCN_MARGINCLICK 2010
|
|
||||||
#define SCN_NEEDSHOWN 2011
|
|
||||||
|
|
||||||
#ifdef STATIC_BUILD
|
|
||||||
void Scintilla_RegisterClasses(HINSTANCE hInstance);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Deprecation section listing all API features that are deprecated and will
|
// Deprecation section listing all API features that are deprecated and will
|
||||||
// will be removed completely in a future version.
|
// will be removed completely in a future version.
|
||||||
@@ -394,21 +499,9 @@ void Scintilla_RegisterClasses(HINSTANCE hInstance);
|
|||||||
|
|
||||||
#ifdef INCLUDE_DEPRECATED_FEATURES
|
#ifdef INCLUDE_DEPRECATED_FEATURES
|
||||||
|
|
||||||
// Default style settings. These are deprecated and will be removed in a future version.
|
// Deprecated in 1.27
|
||||||
#define SCI_SETFORE SCI_START + 60
|
#define SC_UNDOCOLLECT_NONE 0
|
||||||
#define SCI_SETBACK SCI_START + 61
|
#define SC_UNDOCOLLECT_AUTOSTART 1
|
||||||
#define SCI_SETBOLD SCI_START + 62
|
|
||||||
#define SCI_SETITALIC SCI_START + 63
|
|
||||||
#define SCI_SETSIZE SCI_START + 64
|
|
||||||
#define SCI_SETFONT SCI_START + 65
|
|
||||||
|
|
||||||
#define SCI_APPENDUNDOSTARTACTION SCI_START + 74
|
|
||||||
|
|
||||||
#define SC_UNDOCOLLECT_MANUALSTART 2
|
|
||||||
|
|
||||||
// Deprecated in release 1.22
|
|
||||||
#define SCI_SETMARGINWIDTH SCI_START + 34
|
|
||||||
#define SCI_SETLINENUMBERWIDTH SCI_START + 38
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
1452
contrib/src/stc/scintilla/include/Scintilla.iface
Normal file
46
contrib/src/stc/scintilla/include/ScintillaWidget.h
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
// Scintilla source code edit control
|
||||||
|
// ScintillaWidget.h - definition of Scintilla widget for GTK+
|
||||||
|
// Only needed by GTK+ code but is harmless on other platforms.
|
||||||
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
#ifndef SCINTILLAWIDGET_H
|
||||||
|
#define SCINTILLAWIDGET_H
|
||||||
|
|
||||||
|
#if PLAT_GTK
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define SCINTILLA(obj) GTK_CHECK_CAST (obj, scintilla_get_type (), ScintillaObject)
|
||||||
|
#define SCINTILLA_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, scintilla_get_type (), ScintillaClass)
|
||||||
|
#define IS_SCINTILLA(obj) GTK_CHECK_TYPE (obj, scintilla_get_type ())
|
||||||
|
|
||||||
|
typedef struct _ScintillaObject ScintillaObject;
|
||||||
|
typedef struct _ScintillaClass ScintillaClass;
|
||||||
|
|
||||||
|
struct _ScintillaObject {
|
||||||
|
GtkFixed vbox;
|
||||||
|
void *pscin;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _ScintillaClass {
|
||||||
|
GtkFixedClass parent_class;
|
||||||
|
|
||||||
|
void (* command) (ScintillaObject *ttt);
|
||||||
|
void (* notify) (ScintillaObject *ttt);
|
||||||
|
};
|
||||||
|
|
||||||
|
guint scintilla_get_type (void);
|
||||||
|
GtkWidget* scintilla_new (void);
|
||||||
|
void scintilla_set_id (ScintillaObject *sci,int id);
|
||||||
|
long scintilla_send_message (ScintillaObject *sci,int iMessage,int wParam,int lParam);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -16,93 +16,47 @@
|
|||||||
#define LPSTR char *
|
#define LPSTR char *
|
||||||
#define LONG long
|
#define LONG long
|
||||||
|
|
||||||
|
//#if 0
|
||||||
/* RTF control */
|
/* RTF control */
|
||||||
#define EM_CANPASTE (1074)
|
#define EM_CANPASTE (1074)
|
||||||
#define EM_CANUNDO (198)
|
#define EM_CANUNDO (198)
|
||||||
#define EM_CHARFROMPOS (215)
|
#define EM_CHARFROMPOS (215)
|
||||||
#define EM_DISPLAYBAND (1075)
|
|
||||||
#define EM_EMPTYUNDOBUFFER (205)
|
#define EM_EMPTYUNDOBUFFER (205)
|
||||||
#define EM_EXGETSEL (1076)
|
#define EM_EXGETSEL (1076)
|
||||||
#define EM_EXLIMITTEXT (1077)
|
|
||||||
#define EM_EXLINEFROMCHAR (1078)
|
#define EM_EXLINEFROMCHAR (1078)
|
||||||
#define EM_EXSETSEL (1079)
|
#define EM_EXSETSEL (1079)
|
||||||
#define EM_FINDTEXT (1080)
|
#define EM_FINDTEXT (1080)
|
||||||
#define EM_FINDTEXTEX (1103)
|
#define EM_FINDTEXTEX (1103)
|
||||||
#define EM_FINDWORDBREAK (1100)
|
|
||||||
#define EM_FMTLINES (200)
|
|
||||||
#define EM_FORMATRANGE (1081)
|
#define EM_FORMATRANGE (1081)
|
||||||
#define EM_GETCHARFORMAT (1082)
|
|
||||||
#define EM_GETEVENTMASK (1083)
|
|
||||||
#define EM_GETFIRSTVISIBLELINE (206)
|
#define EM_GETFIRSTVISIBLELINE (206)
|
||||||
#define EM_GETHANDLE (189)
|
|
||||||
#define EM_GETLIMITTEXT (213)
|
|
||||||
#define EM_GETLINE (196)
|
#define EM_GETLINE (196)
|
||||||
#define EM_GETLINECOUNT (186)
|
#define EM_GETLINECOUNT (186)
|
||||||
#define EM_GETMARGINS (212)
|
#define EM_GETMARGINS (212)
|
||||||
#define EM_GETMODIFY (184)
|
#define EM_GETMODIFY (184)
|
||||||
#define EM_GETIMECOLOR (1129)
|
|
||||||
#define EM_GETIMEOPTIONS (1131)
|
|
||||||
#define EM_GETOPTIONS (1102)
|
|
||||||
#define EM_GETOLEINTERFACE (1084)
|
|
||||||
#define EM_GETPARAFORMAT (1085)
|
|
||||||
#define EM_GETPASSWORDCHAR (210)
|
|
||||||
#define EM_GETPUNCTUATION (1125)
|
|
||||||
#define EM_GETRECT (178)
|
#define EM_GETRECT (178)
|
||||||
#define EM_GETSEL (176)
|
#define EM_GETSEL (176)
|
||||||
#define EM_GETSELTEXT (1086)
|
#define EM_GETSELTEXT (1086)
|
||||||
#define EM_GETTEXTRANGE (1099)
|
#define EM_GETTEXTRANGE (1099)
|
||||||
#define EM_GETTHUMB (190)
|
|
||||||
#define EM_GETWORDBREAKPROC (209)
|
|
||||||
#define EM_GETWORDBREAKPROCEX (1104)
|
|
||||||
#define EM_GETWORDWRAPMODE (1127)
|
|
||||||
#define EM_HIDESELECTION (1087)
|
#define EM_HIDESELECTION (1087)
|
||||||
#define EM_LIMITTEXT (197)
|
|
||||||
#define EM_LINEFROMCHAR (201)
|
#define EM_LINEFROMCHAR (201)
|
||||||
#define EM_LINEINDEX (187)
|
#define EM_LINEINDEX (187)
|
||||||
#define EM_LINELENGTH (193)
|
#define EM_LINELENGTH (193)
|
||||||
#define EM_LINESCROLL (182)
|
#define EM_LINESCROLL (182)
|
||||||
#define EM_PASTESPECIAL (1088)
|
|
||||||
#define EM_POSFROMCHAR (214)
|
#define EM_POSFROMCHAR (214)
|
||||||
#define EM_REPLACESEL (194)
|
#define EM_REPLACESEL (194)
|
||||||
#define EM_REQUESTRESIZE (1089)
|
|
||||||
#define EM_SCROLL (181)
|
|
||||||
#define EM_SCROLLCARET (183)
|
#define EM_SCROLLCARET (183)
|
||||||
#define EM_SELECTIONTYPE (1090)
|
#define EM_SELECTIONTYPE (1090)
|
||||||
#define EM_SETBKGNDCOLOR (1091)
|
|
||||||
#define EM_SETCHARFORMAT (1092)
|
|
||||||
#define EM_SETEVENTMASK (1093)
|
|
||||||
#define EM_SETHANDLE (188)
|
|
||||||
#define EM_SETIMECOLOR (1128)
|
|
||||||
#define EM_SETIMEOPTIONS (1130)
|
|
||||||
#define EM_SETLIMITTEXT (197)
|
|
||||||
#define EM_SETMARGINS (211)
|
#define EM_SETMARGINS (211)
|
||||||
#define EM_SETMODIFY (185)
|
|
||||||
#define EM_SETOLECALLBACK (1094)
|
|
||||||
#define EM_SETOPTIONS (1101)
|
|
||||||
#define EM_SETPARAFORMAT (1095)
|
|
||||||
#define EM_SETPASSWORDCHAR (204)
|
|
||||||
#define EM_SETPUNCTUATION (1124)
|
|
||||||
#define EM_SETREADONLY (207)
|
#define EM_SETREADONLY (207)
|
||||||
#define EM_SETRECT (179)
|
|
||||||
#define EM_SETRECTNP (180)
|
|
||||||
#define EM_SETSEL (177)
|
#define EM_SETSEL (177)
|
||||||
#define EM_SETTABSTOPS (203)
|
|
||||||
#define EM_SETTARGETDEVICE (1096)
|
|
||||||
#define EM_SETWORDBREAKPROC (208)
|
|
||||||
#define EM_SETWORDBREAKPROCEX (1105)
|
|
||||||
#define EM_SETWORDWRAPMODE (1126)
|
|
||||||
#define EM_STREAMIN (1097)
|
|
||||||
#define EM_STREAMOUT (1098)
|
|
||||||
#define EM_UNDO (199)
|
#define EM_UNDO (199)
|
||||||
|
|
||||||
#define WM_NULL (0)
|
#define WM_NULL (0)
|
||||||
#define WM_CLEAR (771)
|
#define WM_CLEAR (771)
|
||||||
#define WM_COMMAND (273)
|
|
||||||
#define WM_COPY (769)
|
#define WM_COPY (769)
|
||||||
#define WM_CUT (768)
|
#define WM_CUT (768)
|
||||||
#define WM_GETTEXT (13)
|
#define WM_GETTEXT (13)
|
||||||
#define WM_GETTEXTLENGTH (14)
|
#define WM_GETTEXTLENGTH (14)
|
||||||
#define WM_NOTIFY (78)
|
|
||||||
#define WM_PASTE (770)
|
#define WM_PASTE (770)
|
||||||
#define WM_SETTEXT (12)
|
#define WM_SETTEXT (12)
|
||||||
#define WM_UNDO (772)
|
#define WM_UNDO (772)
|
||||||
@@ -115,6 +69,9 @@
|
|||||||
#define EC_RIGHTMARGIN 2
|
#define EC_RIGHTMARGIN 2
|
||||||
#define EC_USEFONTINFO 0xffff
|
#define EC_USEFONTINFO 0xffff
|
||||||
|
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
#if PLAT_GTK
|
#if PLAT_GTK
|
||||||
#define VK_DOWN GDK_Down
|
#define VK_DOWN GDK_Down
|
||||||
#define VK_UP GDK_Up
|
#define VK_UP GDK_Up
|
||||||
@@ -132,6 +89,7 @@
|
|||||||
#define VK_RETURN GDK_Return
|
#define VK_RETURN GDK_Return
|
||||||
#define VK_ADD GDK_KP_Add
|
#define VK_ADD GDK_KP_Add
|
||||||
#define VK_SUBTRACT GDK_KP_Subtract
|
#define VK_SUBTRACT GDK_KP_Subtract
|
||||||
|
#define VK_DIVIDE GDK_KP_Divide
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if PLAT_WX
|
#if PLAT_WX
|
||||||
@@ -151,12 +109,18 @@
|
|||||||
#define VK_RETURN WXK_RETURN
|
#define VK_RETURN WXK_RETURN
|
||||||
#define VK_ADD WXK_ADD
|
#define VK_ADD WXK_ADD
|
||||||
#define VK_SUBTRACT WXK_SUBTRACT
|
#define VK_SUBTRACT WXK_SUBTRACT
|
||||||
|
//TODO:
|
||||||
|
#define VK_DIVIDE WXK_DIVIDE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define SHIFT_PRESSED 1
|
||||||
|
#define LEFT_CTRL_PRESSED 2
|
||||||
|
#define LEFT_ALT_PRESSED 4
|
||||||
|
|
||||||
// Are these needed any more
|
// Are these needed any more
|
||||||
#define LPSTR char *
|
#define LPSTR char *
|
||||||
#define LONG long
|
#define LONG long
|
||||||
#define LPDWORD (long *)
|
#define LPDWORD (long *)
|
||||||
#endif
|
|
||||||
|
|
||||||
/* SELCHANGE structure */
|
/* SELCHANGE structure */
|
||||||
#define SEL_EMPTY (0)
|
#define SEL_EMPTY (0)
|
||||||
@@ -165,15 +129,6 @@
|
|||||||
#define SEL_MULTICHAR (4)
|
#define SEL_MULTICHAR (4)
|
||||||
#define SEL_MULTIOBJECT (8)
|
#define SEL_MULTIOBJECT (8)
|
||||||
|
|
||||||
/* FINDREPLACE structure */
|
|
||||||
#define FR_MATCHCASE (0x4)
|
|
||||||
#define FR_WHOLEWORD (0x2)
|
|
||||||
#define FR_DOWN (0x1)
|
|
||||||
|
|
||||||
#define SHIFT_PRESSED 1
|
|
||||||
#define LEFT_CTRL_PRESSED 2
|
|
||||||
#define LEFT_ALT_PRESSED 4
|
|
||||||
|
|
||||||
struct RECT {
|
struct RECT {
|
||||||
LONG left;
|
LONG left;
|
||||||
LONG top;
|
LONG top;
|
||||||
@@ -181,6 +136,15 @@ struct RECT {
|
|||||||
LONG bottom;
|
LONG bottom;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* FINDREPLACE structure */
|
||||||
|
|
||||||
|
#define FR_MATCHCASE (0x4)
|
||||||
|
#define FR_WHOLEWORD (0x2)
|
||||||
|
#define FR_DOWN (0x1)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
struct CHARRANGE {
|
struct CHARRANGE {
|
||||||
LONG cpMin;
|
LONG cpMin;
|
||||||
LONG cpMax;
|
LONG cpMax;
|
||||||
@@ -210,9 +174,10 @@ struct FORMATRANGE {
|
|||||||
RECT rcPage;
|
RECT rcPage;
|
||||||
CHARRANGE chrg;
|
CHARRANGE chrg;
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MAKELONG(a, b) ((a) | ((b) << 16))
|
//#define MAKELONG(a, b) ((a) | ((b) << 16))
|
||||||
#define LOWORD(x) (x & 0xffff)
|
//#define LOWORD(x) (x & 0xffff)
|
||||||
#define HIWORD(x) (x >> 16)
|
//#define HIWORD(x) (x >> 16)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
47
contrib/src/stc/scintilla/include/WindowAccessor.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
// WindowAccessor.h - implementation of BufferAccess and StylingAccess on a Scintilla rapid easy access to contents of a Scintilla
|
||||||
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
class WindowAccessor : public Accessor {
|
||||||
|
// Private so WindowAccessor objects can not be copied
|
||||||
|
WindowAccessor(const WindowAccessor &source) : Accessor(), props(source.props) {}
|
||||||
|
WindowAccessor &operator=(const WindowAccessor &) { return *this; }
|
||||||
|
protected:
|
||||||
|
WindowID id;
|
||||||
|
PropSet &props;
|
||||||
|
int lenDoc;
|
||||||
|
|
||||||
|
char styleBuf[bufferSize];
|
||||||
|
int validLen;
|
||||||
|
char chFlags;
|
||||||
|
char chWhile;
|
||||||
|
unsigned int startSeg;
|
||||||
|
|
||||||
|
bool InternalIsLeadByte(char ch);
|
||||||
|
void Fill(int position);
|
||||||
|
public:
|
||||||
|
WindowAccessor(WindowID id_, PropSet &props_) :
|
||||||
|
Accessor(), id(id_), props(props_),
|
||||||
|
lenDoc(-1), validLen(0), chFlags(0), chWhile(0) {
|
||||||
|
}
|
||||||
|
~WindowAccessor();
|
||||||
|
char StyleAt(int position);
|
||||||
|
int GetLine(int position);
|
||||||
|
int LineStart(int line);
|
||||||
|
int LevelAt(int line);
|
||||||
|
int Length();
|
||||||
|
void Flush();
|
||||||
|
int GetLineState(int line);
|
||||||
|
int SetLineState(int line, int state);
|
||||||
|
int GetPropertyInt(const char *key, int defaultValue=0) {
|
||||||
|
return props.GetInt(key, defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
void StartAt(unsigned int start, char chMask=31);
|
||||||
|
void SetFlags(char chFlags_, char chWhile_) {chFlags = chFlags_; chWhile = chWhile_; };
|
||||||
|
unsigned int GetStartSegment() { return startSeg; }
|
||||||
|
void StartSegment(unsigned int pos);
|
||||||
|
void ColourTo(unsigned int pos, int chAttr);
|
||||||
|
void SetLevel(int line, int level);
|
||||||
|
int IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0);
|
||||||
|
};
|
||||||
@@ -1,112 +0,0 @@
|
|||||||
// SciTE - Scintilla based Text Editor
|
|
||||||
// Accessor.cxx - rapid easy access to contents of a Scintilla
|
|
||||||
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
|
||||||
// The License.txt file describes the conditions under which this software may be distributed.
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#include "Platform.h"
|
|
||||||
|
|
||||||
#include "PropSet.h"
|
|
||||||
#include "Accessor.h"
|
|
||||||
#include "Scintilla.h"
|
|
||||||
|
|
||||||
void Accessor::Fill(int position) {
|
|
||||||
if (lenDoc == -1)
|
|
||||||
lenDoc = Platform::SendScintilla(id, WM_GETTEXTLENGTH, 0, 0);
|
|
||||||
startPos = position - slopSize;
|
|
||||||
if (startPos + bufferSize > lenDoc)
|
|
||||||
startPos = lenDoc - bufferSize;
|
|
||||||
if (startPos < 0)
|
|
||||||
startPos = 0;
|
|
||||||
endPos = startPos + bufferSize;
|
|
||||||
if (endPos > lenDoc)
|
|
||||||
endPos = lenDoc;
|
|
||||||
|
|
||||||
TEXTRANGE tr = {{startPos, endPos}, buf};
|
|
||||||
Platform::SendScintilla(id, EM_GETTEXTRANGE, 0, reinterpret_cast<LPARAM>(&tr));
|
|
||||||
}
|
|
||||||
|
|
||||||
char Accessor::StyleAt(int position) {
|
|
||||||
return static_cast<char>(Platform::SendScintilla(
|
|
||||||
id, SCI_GETSTYLEAT, position, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
int Accessor::GetLine(int position) {
|
|
||||||
return Platform::SendScintilla(id, EM_LINEFROMCHAR, position, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int Accessor::LineStart(int line) {
|
|
||||||
return Platform::SendScintilla(id, EM_LINEINDEX, line, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int Accessor::LevelAt(int line) {
|
|
||||||
return Platform::SendScintilla(id, SCI_GETFOLDLEVEL, line, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int Accessor::Length() {
|
|
||||||
if (lenDoc == -1)
|
|
||||||
lenDoc = Platform::SendScintilla(id, WM_GETTEXTLENGTH, 0, 0);
|
|
||||||
return lenDoc;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Accessor::GetLineState(int line) {
|
|
||||||
return Platform::SendScintilla(id, SCI_GETLINESTATE, line);
|
|
||||||
}
|
|
||||||
|
|
||||||
int Accessor::SetLineState(int line, int state) {
|
|
||||||
return Platform::SendScintilla(id, SCI_SETLINESTATE, line, state);
|
|
||||||
}
|
|
||||||
|
|
||||||
void StylingContext::StartAt(unsigned int start, char chMask) {
|
|
||||||
Platform::SendScintilla(id, SCI_STARTSTYLING, start, chMask);
|
|
||||||
}
|
|
||||||
|
|
||||||
void StylingContext::ColourSegment(unsigned int start, unsigned int end, int chAttr) {
|
|
||||||
// Only perform styling if non empty range
|
|
||||||
if (end != start - 1) {
|
|
||||||
if (end < start) {
|
|
||||||
Platform::DebugPrintf("Bad colour positions %d - %d\n", start, end);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (validLen + (end - start + 1) >= bufferSize)
|
|
||||||
Flush();
|
|
||||||
if (validLen + (end - start + 1) >= bufferSize) {
|
|
||||||
// Too big for buffer so send directly
|
|
||||||
Platform::SendScintilla(id, SCI_SETSTYLING, end - start + 1, chAttr);
|
|
||||||
} else {
|
|
||||||
if (chAttr != chWhile)
|
|
||||||
chFlags = 0;
|
|
||||||
chAttr |= chFlags;
|
|
||||||
for (unsigned int i = start; i <= end; i++) {
|
|
||||||
styleBuf[validLen++] = chAttr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void StylingContext::StartSegment(unsigned int pos) {
|
|
||||||
startSeg = pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
void StylingContext::ColourTo(unsigned int pos, int chAttr) {
|
|
||||||
ColourSegment(startSeg, pos, chAttr);
|
|
||||||
startSeg = pos+1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int StylingContext::GetLine(int position) {
|
|
||||||
return Platform::SendScintilla(id, EM_LINEFROMCHAR, position, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void StylingContext::SetLevel(int line, int level) {
|
|
||||||
Platform::SendScintilla(id, SCI_SETFOLDLEVEL, line, level);
|
|
||||||
}
|
|
||||||
|
|
||||||
void StylingContext::Flush() {
|
|
||||||
if (validLen > 0) {
|
|
||||||
Platform::SendScintilla(id, SCI_SETSTYLINGEX, validLen,
|
|
||||||
reinterpret_cast<LPARAM>(styleBuf));
|
|
||||||
validLen = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -10,11 +10,16 @@
|
|||||||
|
|
||||||
#include "AutoComplete.h"
|
#include "AutoComplete.h"
|
||||||
|
|
||||||
AutoComplete::AutoComplete() {
|
AutoComplete::AutoComplete() :
|
||||||
lb = 0;
|
active(false),
|
||||||
active = false;
|
separator(' '),
|
||||||
posStart = 0;
|
ignoreCase(false),
|
||||||
strcpy(stopChars, "");
|
chooseSingle(false),
|
||||||
|
posStart(0),
|
||||||
|
startLen(0),
|
||||||
|
cancelAtStartPos(true) {
|
||||||
|
stopChars[0] = '\0';
|
||||||
|
fillUpChars[0] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
AutoComplete::~AutoComplete() {
|
AutoComplete::~AutoComplete() {
|
||||||
@@ -44,8 +49,24 @@ bool AutoComplete::IsStopChar(char ch) {
|
|||||||
return ch && strchr(stopChars, ch);
|
return ch && strchr(stopChars, ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
int AutoComplete::SetList(const char *list) {
|
void AutoComplete::SetFillUpChars(const char *fillUpChars_) {
|
||||||
int maxStrLen = 12;
|
strncpy(fillUpChars, fillUpChars_, sizeof(fillUpChars));
|
||||||
|
fillUpChars[sizeof(fillUpChars) - 1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AutoComplete::IsFillUpChar(char ch) {
|
||||||
|
return ch && strchr(fillUpChars, ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutoComplete::SetSeparator(char separator_) {
|
||||||
|
separator = separator_;
|
||||||
|
}
|
||||||
|
|
||||||
|
char AutoComplete::GetSeparator() {
|
||||||
|
return separator;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutoComplete::SetList(const char *list) {
|
||||||
lb.Clear();
|
lb.Clear();
|
||||||
char *words = new char[strlen(list) + 1];
|
char *words = new char[strlen(list) + 1];
|
||||||
if (words) {
|
if (words) {
|
||||||
@@ -53,21 +74,18 @@ int AutoComplete::SetList(const char *list) {
|
|||||||
char *startword = words;
|
char *startword = words;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (; words && words[i]; i++) {
|
for (; words && words[i]; i++) {
|
||||||
if (words[i] == ' ') {
|
if (words[i] == separator) {
|
||||||
words[i] = '\0';
|
words[i] = '\0';
|
||||||
lb.Append(startword);
|
lb.Append(startword);
|
||||||
maxStrLen = Platform::Maximum(maxStrLen, strlen(startword));
|
|
||||||
startword = words + i + 1;
|
startword = words + i + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (startword) {
|
if (startword) {
|
||||||
lb.Append(startword);
|
lb.Append(startword);
|
||||||
maxStrLen = Platform::Maximum(maxStrLen, strlen(startword));
|
|
||||||
}
|
}
|
||||||
delete []words;
|
delete []words;
|
||||||
}
|
}
|
||||||
lb.Sort();
|
lb.Sort();
|
||||||
return maxStrLen;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AutoComplete::Show() {
|
void AutoComplete::Show() {
|
||||||
@@ -78,7 +96,6 @@ void AutoComplete::Show() {
|
|||||||
void AutoComplete::Cancel() {
|
void AutoComplete::Cancel() {
|
||||||
if (lb.Created()) {
|
if (lb.Created()) {
|
||||||
lb.Destroy();
|
lb.Destroy();
|
||||||
lb = 0;
|
|
||||||
active = false;
|
active = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,16 @@
|
|||||||
class AutoComplete {
|
class AutoComplete {
|
||||||
bool active;
|
bool active;
|
||||||
char stopChars[256];
|
char stopChars[256];
|
||||||
|
char fillUpChars[256];
|
||||||
|
char separator;
|
||||||
public:
|
public:
|
||||||
|
bool ignoreCase;
|
||||||
|
bool chooseSingle;
|
||||||
ListBox lb;
|
ListBox lb;
|
||||||
int posStart;
|
int posStart;
|
||||||
int startLen;
|
int startLen;
|
||||||
|
// Should autocompletion be canceled if editor's currentPos <= startPos?
|
||||||
|
bool cancelAtStartPos;
|
||||||
|
|
||||||
AutoComplete();
|
AutoComplete();
|
||||||
~AutoComplete();
|
~AutoComplete();
|
||||||
@@ -27,8 +33,16 @@ public:
|
|||||||
void SetStopChars(const char *stopChars_);
|
void SetStopChars(const char *stopChars_);
|
||||||
bool IsStopChar(char ch);
|
bool IsStopChar(char ch);
|
||||||
|
|
||||||
// The list string contains a sequence of words separated by spaces
|
// The fillup chars are characters which, when typed, fill up the selected word
|
||||||
int SetList(const char *list);
|
void SetFillUpChars(const char *fillUpChars_);
|
||||||
|
bool IsFillUpChar(char ch);
|
||||||
|
|
||||||
|
// The separator character is used when interpreting the list in SetList
|
||||||
|
void SetSeparator(char separator_);
|
||||||
|
char GetSeparator();
|
||||||
|
|
||||||
|
// The list string contains a sequence of words separated by the separator character
|
||||||
|
void SetList(const char *list);
|
||||||
|
|
||||||
void Show();
|
void Show();
|
||||||
void Cancel();
|
void Cancel();
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include "Platform.h"
|
#include "Platform.h"
|
||||||
|
|
||||||
|
#include "Scintilla.h"
|
||||||
#include "CallTip.h"
|
#include "CallTip.h"
|
||||||
|
|
||||||
CallTip::CallTip() {
|
CallTip::CallTip() {
|
||||||
@@ -117,7 +118,7 @@ PRectangle CallTip::CallTipStart(int pos, Point pt, const char *defn,
|
|||||||
Surface surfaceMeasure;
|
Surface surfaceMeasure;
|
||||||
surfaceMeasure.Init();
|
surfaceMeasure.Init();
|
||||||
int deviceHeight = (size * surfaceMeasure.LogPixelsY()) / 72;
|
int deviceHeight = (size * surfaceMeasure.LogPixelsY()) / 72;
|
||||||
font.Create(faceName, deviceHeight);
|
font.Create(faceName, SC_CHARSET_DEFAULT, deviceHeight, false, false);
|
||||||
if (val)
|
if (val)
|
||||||
delete []val;
|
delete []val;
|
||||||
val = new char[strlen(defn) + 1];
|
val = new char[strlen(defn) + 1];
|
||||||
|
|||||||
@@ -6,13 +6,14 @@
|
|||||||
#ifndef CALLTIP_H
|
#ifndef CALLTIP_H
|
||||||
#define CALLTIP_H
|
#define CALLTIP_H
|
||||||
|
|
||||||
const char callClassName[] = "CallTip";
|
|
||||||
|
|
||||||
class CallTip {
|
class CallTip {
|
||||||
int startHighlight;
|
int startHighlight;
|
||||||
int endHighlight;
|
int endHighlight;
|
||||||
char *val;
|
char *val;
|
||||||
Font font;
|
Font font;
|
||||||
|
// Private so CallTip objects can not be copied
|
||||||
|
CallTip(const CallTip &) {}
|
||||||
|
CallTip &operator=(const CallTip &) { return *this; }
|
||||||
public:
|
public:
|
||||||
Window wCallTip;
|
Window wCallTip;
|
||||||
Window wDraw;
|
Window wDraw;
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ void MarkerHandleSet::RemoveHandle(int handle) {
|
|||||||
if (mhn->handle == handle) {
|
if (mhn->handle == handle) {
|
||||||
*pmhn = mhn->next;
|
*pmhn = mhn->next;
|
||||||
delete mhn;
|
delete mhn;
|
||||||
return;
|
return ;
|
||||||
}
|
}
|
||||||
pmhn = &((*pmhn)->next);
|
pmhn = &((*pmhn)->next);
|
||||||
}
|
}
|
||||||
@@ -101,7 +101,7 @@ void MarkerHandleSet::RemoveNumber(int markerNum) {
|
|||||||
if (mhn->number == markerNum) {
|
if (mhn->number == markerNum) {
|
||||||
*pmhn = mhn->next;
|
*pmhn = mhn->next;
|
||||||
delete mhn;
|
delete mhn;
|
||||||
return;
|
return ;
|
||||||
}
|
}
|
||||||
pmhn = &((*pmhn)->next);
|
pmhn = &((*pmhn)->next);
|
||||||
}
|
}
|
||||||
@@ -119,7 +119,11 @@ void MarkerHandleSet::CombineWith(MarkerHandleSet *other) {
|
|||||||
LineVector::LineVector() {
|
LineVector::LineVector() {
|
||||||
linesData = 0;
|
linesData = 0;
|
||||||
lines = 0;
|
lines = 0;
|
||||||
|
size = 0;
|
||||||
levels = 0;
|
levels = 0;
|
||||||
|
sizeLevels = 0;
|
||||||
|
handleCurrent = 1;
|
||||||
|
|
||||||
Init();
|
Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,6 +165,7 @@ void LineVector::Expand(int sizeNew) {
|
|||||||
Platform::DebugPrintf("No memory available\n");
|
Platform::DebugPrintf("No memory available\n");
|
||||||
// TODO: Blow up
|
// TODO: Blow up
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LineVector::ExpandLevels(int sizeNew) {
|
void LineVector::ExpandLevels(int sizeNew) {
|
||||||
@@ -180,6 +185,13 @@ void LineVector::ExpandLevels(int sizeNew) {
|
|||||||
Platform::DebugPrintf("No memory available\n");
|
Platform::DebugPrintf("No memory available\n");
|
||||||
// TODO: Blow up
|
// TODO: Blow up
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LineVector::ClearLevels() {
|
||||||
|
delete []levels;
|
||||||
|
levels = 0;
|
||||||
|
sizeLevels = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LineVector::InsertValue(int pos, int value) {
|
void LineVector::InsertValue(int pos, int value) {
|
||||||
@@ -191,11 +203,23 @@ void LineVector::InsertValue(int pos, int value) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
lines++;
|
lines++;
|
||||||
for (int i = lines + 1; i > pos; i--) {
|
for (int i = lines; i > pos; i--) {
|
||||||
linesData[i] = linesData[i - 1];
|
linesData[i] = linesData[i - 1];
|
||||||
}
|
}
|
||||||
linesData[pos].startPosition = value;
|
linesData[pos].startPosition = value;
|
||||||
linesData[pos].handleSet = 0;
|
linesData[pos].handleSet = 0;
|
||||||
|
if (levels) {
|
||||||
|
for (int j = lines; j > pos; j--) {
|
||||||
|
levels[j] = levels[j - 1];
|
||||||
|
}
|
||||||
|
if (pos == 0) {
|
||||||
|
levels[pos] = SC_FOLDLEVELBASE;
|
||||||
|
} else if (pos == (lines - 1)) { // Last line will not be a folder
|
||||||
|
levels[pos] = SC_FOLDLEVELBASE;
|
||||||
|
} else {
|
||||||
|
levels[pos] = levels[pos - 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LineVector::SetValue(int pos, int value) {
|
void LineVector::SetValue(int pos, int value) {
|
||||||
@@ -221,6 +245,15 @@ void LineVector::Remove(int pos) {
|
|||||||
for (int i = pos; i < lines; i++) {
|
for (int i = pos; i < lines; i++) {
|
||||||
linesData[i] = linesData[i + 1];
|
linesData[i] = linesData[i + 1];
|
||||||
}
|
}
|
||||||
|
if (levels) {
|
||||||
|
// Level information merges back onto previous line
|
||||||
|
int posAbove = pos - 1;
|
||||||
|
if (posAbove < 0)
|
||||||
|
posAbove = 0;
|
||||||
|
for (int j = posAbove; j < lines; j++) {
|
||||||
|
levels[j] = levels[j + 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
lines--;
|
lines--;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,9 +266,8 @@ int LineVector::LineFromPosition(int pos) {
|
|||||||
return lines - 1;
|
return lines - 1;
|
||||||
int lower = 0;
|
int lower = 0;
|
||||||
int upper = lines;
|
int upper = lines;
|
||||||
int middle = 0;
|
|
||||||
do {
|
do {
|
||||||
middle = (upper + lower + 1) / 2; // Round high
|
int middle = (upper + lower + 1) / 2; // Round high
|
||||||
if (pos < linesData[middle].startPosition) {
|
if (pos < linesData[middle].startPosition) {
|
||||||
upper = middle - 1;
|
upper = middle - 1;
|
||||||
} else {
|
} else {
|
||||||
@@ -260,11 +292,12 @@ int LineVector::AddMark(int line, int markerNum) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void LineVector::MergeMarkers(int pos) {
|
void LineVector::MergeMarkers(int pos) {
|
||||||
if (linesData[pos].handleSet || linesData[pos + 1].handleSet) {
|
if (linesData[pos + 1].handleSet != NULL) {
|
||||||
if (linesData[pos].handleSet && linesData[pos + 1].handleSet) {
|
if (linesData[pos].handleSet == NULL )
|
||||||
linesData[pos].handleSet->CombineWith(linesData[pos].handleSet);
|
linesData[pos].handleSet = new MarkerHandleSet;
|
||||||
linesData[pos].handleSet = 0;
|
linesData[pos].handleSet->CombineWith(linesData[pos + 1].handleSet);
|
||||||
}
|
delete linesData[pos + 1].handleSet;
|
||||||
|
linesData[pos + 1].handleSet = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,12 +349,13 @@ Action::~Action() {
|
|||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Action::Create(actionType at_, int position_, char *data_, int lenData_) {
|
void Action::Create(actionType at_, int position_, char *data_, int lenData_, bool mayCoalesce_) {
|
||||||
delete []data;
|
delete []data;
|
||||||
position = position_;
|
position = position_;
|
||||||
at = at_;
|
at = at_;
|
||||||
data = data_;
|
data = data_;
|
||||||
lenData = lenData_;
|
lenData = lenData_;
|
||||||
|
mayCoalesce = mayCoalesce_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Action::Destroy() {
|
void Action::Destroy() {
|
||||||
@@ -336,12 +370,207 @@ void Action::Grab(Action *source) {
|
|||||||
at = source->at;
|
at = source->at;
|
||||||
data = source->data;
|
data = source->data;
|
||||||
lenData = source->lenData;
|
lenData = source->lenData;
|
||||||
|
mayCoalesce = source->mayCoalesce;
|
||||||
|
|
||||||
// Ownership of source data transferred to this
|
// Ownership of source data transferred to this
|
||||||
source->position = 0;
|
source->position = 0;
|
||||||
source->at = startAction;
|
source->at = startAction;
|
||||||
source->data = 0;
|
source->data = 0;
|
||||||
source->lenData = 0;
|
source->lenData = 0;
|
||||||
|
source->mayCoalesce = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The undo history stores a sequence of user operations that represent the user's view of the
|
||||||
|
// commands executed on the text.
|
||||||
|
// Each user operation contains a sequence of text insertion and text deletion actions.
|
||||||
|
// All the user operations are stored in a list of individual actions with 'start' actions used
|
||||||
|
// as delimiters between user operations.
|
||||||
|
// Initially there is one start action in the history.
|
||||||
|
// As each action is performed, it is recorded in the history. The action may either become
|
||||||
|
// part of the current user operation or may start a new user operation. If it is to be part of the
|
||||||
|
// current operation, then it overwrites the current last action. If it is to be part of a new
|
||||||
|
// operation, it is appended after the current last action.
|
||||||
|
// After writing the new action, a new start action is appended at the end of the history.
|
||||||
|
// The decision of whether to start a new user operation is based upon two factors. If a
|
||||||
|
// compound operation has been explicitly started by calling BeginUndoAction and no matching
|
||||||
|
// EndUndoAction (these calls nest) has been called, then the action is coalesced into the current
|
||||||
|
// operation. If there is no outstanding BeginUndoAction call then a new operation is started
|
||||||
|
// unless it looks as if the new action is caused by the user typing or deleting a stream of text.
|
||||||
|
// Sequences that look like typing or deletion are coalesced into a single user operation.
|
||||||
|
|
||||||
|
UndoHistory::UndoHistory() {
|
||||||
|
|
||||||
|
lenActions = 100;
|
||||||
|
actions = new Action[lenActions];
|
||||||
|
maxAction = 0;
|
||||||
|
currentAction = 0;
|
||||||
|
undoSequenceDepth = 0;
|
||||||
|
savePoint = 0;
|
||||||
|
|
||||||
|
actions[currentAction].Create(startAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
UndoHistory::~UndoHistory() {
|
||||||
|
delete []actions;
|
||||||
|
actions = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UndoHistory::EnsureUndoRoom() {
|
||||||
|
//Platform::DebugPrintf("%% %d action %d %d %d\n", at, position, length, currentAction);
|
||||||
|
if (currentAction >= 2) {
|
||||||
|
// Have to test that there is room for 2 more actions in the array
|
||||||
|
// as two actions may be created by this function
|
||||||
|
if (currentAction >= (lenActions - 2)) {
|
||||||
|
// Run out of undo nodes so extend the array
|
||||||
|
int lenActionsNew = lenActions * 2;
|
||||||
|
Action *actionsNew = new Action[lenActionsNew];
|
||||||
|
if (!actionsNew)
|
||||||
|
return ;
|
||||||
|
for (int act = 0; act <= currentAction; act++)
|
||||||
|
actionsNew[act].Grab(&actions[act]);
|
||||||
|
delete []actions;
|
||||||
|
lenActions = lenActionsNew;
|
||||||
|
actions = actionsNew;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UndoHistory::AppendAction(actionType at, int position, char *data, int lengthData) {
|
||||||
|
EnsureUndoRoom();
|
||||||
|
//Platform::DebugPrintf("%% %d action %d %d %d\n", at, position, lengthData, currentAction);
|
||||||
|
//Platform::DebugPrintf("^ %d action %d %d\n", actions[currentAction - 1].at,
|
||||||
|
// actions[currentAction - 1].position, actions[currentAction - 1].lenData);
|
||||||
|
if (currentAction >= 1) {
|
||||||
|
if (0 == undoSequenceDepth) {
|
||||||
|
// Top level actions may not always be coalesced
|
||||||
|
Action &actPrevious = actions[currentAction - 1];
|
||||||
|
// See if current action can be coalesced into previous action
|
||||||
|
// Will work if both are inserts or deletes and position is same
|
||||||
|
if (at != actPrevious.at) {
|
||||||
|
currentAction++;
|
||||||
|
} else if (currentAction == savePoint) {
|
||||||
|
currentAction++;
|
||||||
|
} else if ((at == removeAction) &&
|
||||||
|
((position + lengthData * 2) != actPrevious.position)) {
|
||||||
|
// Removals must be at same position to coalesce
|
||||||
|
currentAction++;
|
||||||
|
} else if ((at == insertAction) &&
|
||||||
|
(position != (actPrevious.position + actPrevious.lenData*2))) {
|
||||||
|
// Insertions must be immediately after to coalesce
|
||||||
|
currentAction++;
|
||||||
|
} else {
|
||||||
|
//Platform::DebugPrintf("action coalesced\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Actions not at top level are always coalesced unless this is after return to top level
|
||||||
|
if (!actions[currentAction].mayCoalesce)
|
||||||
|
currentAction++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
currentAction++;
|
||||||
|
}
|
||||||
|
actions[currentAction].Create(at, position, data, lengthData);
|
||||||
|
currentAction++;
|
||||||
|
actions[currentAction].Create(startAction);
|
||||||
|
maxAction = currentAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UndoHistory::BeginUndoAction() {
|
||||||
|
EnsureUndoRoom();
|
||||||
|
if (undoSequenceDepth == 0) {
|
||||||
|
if (actions[currentAction].at != startAction) {
|
||||||
|
currentAction++;
|
||||||
|
actions[currentAction].Create(startAction);
|
||||||
|
maxAction = currentAction;
|
||||||
|
}
|
||||||
|
actions[currentAction].mayCoalesce = false;
|
||||||
|
}
|
||||||
|
undoSequenceDepth++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UndoHistory::EndUndoAction() {
|
||||||
|
EnsureUndoRoom();
|
||||||
|
undoSequenceDepth--;
|
||||||
|
if (0 == undoSequenceDepth) {
|
||||||
|
if (actions[currentAction].at != startAction) {
|
||||||
|
currentAction++;
|
||||||
|
actions[currentAction].Create(startAction);
|
||||||
|
maxAction = currentAction;
|
||||||
|
}
|
||||||
|
actions[currentAction].mayCoalesce = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UndoHistory::DropUndoSequence() {
|
||||||
|
undoSequenceDepth = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UndoHistory::DeleteUndoHistory() {
|
||||||
|
for (int i = 1; i < maxAction; i++)
|
||||||
|
actions[i].Destroy();
|
||||||
|
maxAction = 0;
|
||||||
|
currentAction = 0;
|
||||||
|
actions[currentAction].Create(startAction);
|
||||||
|
savePoint = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UndoHistory::SetSavePoint() {
|
||||||
|
savePoint = currentAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UndoHistory::IsSavePoint() const {
|
||||||
|
return savePoint == currentAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UndoHistory::CanUndo() const {
|
||||||
|
return (currentAction > 0) && (maxAction > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int UndoHistory::StartUndo() {
|
||||||
|
// Drop any trailing startAction
|
||||||
|
if (actions[currentAction].at == startAction && currentAction > 0)
|
||||||
|
currentAction--;
|
||||||
|
|
||||||
|
// Count the steps in this action
|
||||||
|
int act = currentAction;
|
||||||
|
while (actions[act].at != startAction && act > 0) {
|
||||||
|
act--;
|
||||||
|
}
|
||||||
|
return currentAction - act;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Action &UndoHistory::GetUndoStep() const {
|
||||||
|
return actions[currentAction];
|
||||||
|
}
|
||||||
|
|
||||||
|
void UndoHistory::CompletedUndoStep() {
|
||||||
|
currentAction--;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UndoHistory::CanRedo() const {
|
||||||
|
return maxAction > currentAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
int UndoHistory::StartRedo() {
|
||||||
|
// Drop any leading startAction
|
||||||
|
if (actions[currentAction].at == startAction && currentAction < maxAction)
|
||||||
|
currentAction++;
|
||||||
|
|
||||||
|
// Count the steps in this action
|
||||||
|
int act = currentAction;
|
||||||
|
while (actions[act].at != startAction && act < maxAction) {
|
||||||
|
act++;
|
||||||
|
}
|
||||||
|
return act - currentAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Action &UndoHistory::GetRedoStep() const {
|
||||||
|
return actions[currentAction];
|
||||||
|
}
|
||||||
|
|
||||||
|
void UndoHistory::CompletedRedoStep() {
|
||||||
|
currentAction++;
|
||||||
}
|
}
|
||||||
|
|
||||||
CellBuffer::CellBuffer(int initialLength) {
|
CellBuffer::CellBuffer(int initialLength) {
|
||||||
@@ -352,28 +581,17 @@ CellBuffer::CellBuffer(int initialLength) {
|
|||||||
gaplen = initialLength;
|
gaplen = initialLength;
|
||||||
part2body = body + gaplen;
|
part2body = body + gaplen;
|
||||||
readOnly = false;
|
readOnly = false;
|
||||||
|
collectingUndo = true;
|
||||||
lenActions = 100;
|
|
||||||
actions = new Action[lenActions];
|
|
||||||
maxAction = 0;
|
|
||||||
currentAction = 0;
|
|
||||||
collectingUndo = undoCollectAutoStart;
|
|
||||||
undoSequenceDepth = 0;
|
|
||||||
savePoint = 0;
|
|
||||||
|
|
||||||
actions[currentAction].Create(startAction);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CellBuffer::~CellBuffer() {
|
CellBuffer::~CellBuffer() {
|
||||||
delete []body;
|
delete []body;
|
||||||
body = 0;
|
body = 0;
|
||||||
delete []actions;
|
|
||||||
actions = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CellBuffer::GapTo(int position) {
|
void CellBuffer::GapTo(int position) {
|
||||||
if (position == part1len)
|
if (position == part1len)
|
||||||
return;
|
return ;
|
||||||
if (position < part1len) {
|
if (position < part1len) {
|
||||||
int diff = part1len - position;
|
int diff = part1len - position;
|
||||||
//Platform::DebugPrintf("Move gap backwards to %d diff = %d part1len=%d length=%d \n", position,diff, part1len, length);
|
//Platform::DebugPrintf("Move gap backwards to %d diff = %d part1len=%d length=%d \n", position,diff, part1len, length);
|
||||||
@@ -405,6 +623,7 @@ void CellBuffer::RoomFor(int insertionLength) {
|
|||||||
size = newSize;
|
size = newSize;
|
||||||
//Platform::DebugPrintf("end need room %d %d - size=%d length=%d\n", gaplen, insertionLength,size,length);
|
//Platform::DebugPrintf("end need room %d %d - size=%d length=%d\n", gaplen, insertionLength,size,length);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// To make it easier to write code that uses ByteAt, a position outside the range of the buffer
|
// To make it easier to write code that uses ByteAt, a position outside the range of the buffer
|
||||||
@@ -429,16 +648,16 @@ void CellBuffer::SetByteAt(int position, char ch) {
|
|||||||
|
|
||||||
if (position < 0) {
|
if (position < 0) {
|
||||||
//Platform::DebugPrintf("Bad position %d\n",position);
|
//Platform::DebugPrintf("Bad position %d\n",position);
|
||||||
return;
|
return ;
|
||||||
}
|
}
|
||||||
if (position >= length + 11) {
|
if (position >= length + 11) {
|
||||||
Platform::DebugPrintf("Very Bad position %d of %d\n", position, length);
|
Platform::DebugPrintf("Very Bad position %d of %d\n", position, length);
|
||||||
//exit(2);
|
//exit(2);
|
||||||
return;
|
return ;
|
||||||
}
|
}
|
||||||
if (position >= length) {
|
if (position >= length) {
|
||||||
//Platform::DebugPrintf("Bad position %d of %d\n",position,length);
|
//Platform::DebugPrintf("Bad position %d of %d\n",position,length);
|
||||||
return;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (position < part1len) {
|
if (position < part1len) {
|
||||||
@@ -454,20 +673,20 @@ char CellBuffer::CharAt(int position) {
|
|||||||
|
|
||||||
void CellBuffer::GetCharRange(char *buffer, int position, int lengthRetrieve) {
|
void CellBuffer::GetCharRange(char *buffer, int position, int lengthRetrieve) {
|
||||||
if (lengthRetrieve < 0)
|
if (lengthRetrieve < 0)
|
||||||
return;
|
return ;
|
||||||
if (position < 0)
|
if (position < 0)
|
||||||
return;
|
return ;
|
||||||
int bytePos = position * 2;
|
int bytePos = position * 2;
|
||||||
if ((bytePos + lengthRetrieve * 2) > length) {
|
if ((bytePos + lengthRetrieve * 2) > length) {
|
||||||
Platform::DebugPrintf("Bad GetCharRange %d for %d of %d\n",bytePos,
|
Platform::DebugPrintf("Bad GetCharRange %d for %d of %d\n", bytePos,
|
||||||
lengthRetrieve, length);
|
lengthRetrieve, length);
|
||||||
return;
|
return ;
|
||||||
}
|
}
|
||||||
GapTo(0); // Move the buffer so its easy to subscript into it
|
GapTo(0); // Move the buffer so its easy to subscript into it
|
||||||
char *pb = part2body + bytePos;
|
char *pb = part2body + bytePos;
|
||||||
while (lengthRetrieve--) {
|
while (lengthRetrieve--) {
|
||||||
*buffer++ = *pb;
|
*buffer++ = *pb;
|
||||||
pb +=2;
|
pb += 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -486,7 +705,7 @@ const char *CellBuffer::InsertString(int position, char *s, int insertLength) {
|
|||||||
for (int i = 0; i < insertLength / 2; i++) {
|
for (int i = 0; i < insertLength / 2; i++) {
|
||||||
data[i] = s[i * 2];
|
data[i] = s[i * 2];
|
||||||
}
|
}
|
||||||
AppendAction(insertAction, position, data, insertLength / 2);
|
uh.AppendAction(insertAction, position, data, insertLength / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
BasicInsertString(position, s, insertLength);
|
BasicInsertString(position, s, insertLength);
|
||||||
@@ -502,9 +721,9 @@ void CellBuffer::InsertCharStyle(int position, char ch, char style) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool CellBuffer::SetStyleAt(int position, char style, char mask) {
|
bool CellBuffer::SetStyleAt(int position, char style, char mask) {
|
||||||
char curVal = ByteAt(position*2 + 1);
|
char curVal = ByteAt(position * 2 + 1);
|
||||||
if ((curVal & mask) != style) {
|
if ((curVal & mask) != style) {
|
||||||
SetByteAt(position*2 + 1, (curVal & ~mask) | style);
|
SetByteAt(position*2 + 1, static_cast<char>((curVal & ~mask) | style));
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
@@ -517,7 +736,7 @@ bool CellBuffer::SetStyleFor(int position, int lengthStyle, char style, char mas
|
|||||||
while (lengthStyle--) {
|
while (lengthStyle--) {
|
||||||
char curVal = ByteAt(bytePos);
|
char curVal = ByteAt(bytePos);
|
||||||
if ((curVal & mask) != style) {
|
if ((curVal & mask) != style) {
|
||||||
SetByteAt(bytePos, (curVal & ~mask) | style);
|
SetByteAt(bytePos, static_cast<char>((curVal & ~mask) | style));
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
bytePos += 2;
|
bytePos += 2;
|
||||||
@@ -525,48 +744,6 @@ bool CellBuffer::SetStyleFor(int position, int lengthStyle, char style, char mas
|
|||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CellBuffer::EnsureUndoRoom() {
|
|
||||||
//Platform::DebugPrintf("%% %d action %d %d %d\n", at, position, length, currentAction);
|
|
||||||
if (currentAction >= 2) {
|
|
||||||
// Have to test that there is room for 2 more actions in the array
|
|
||||||
// as two actions may be created by this function
|
|
||||||
if (currentAction >= (lenActions - 2)) {
|
|
||||||
// Run out of undo nodes so extend the array
|
|
||||||
int lenActionsNew = lenActions * 2;
|
|
||||||
Action *actionsNew = new Action[lenActionsNew];
|
|
||||||
if (!actionsNew)
|
|
||||||
return;
|
|
||||||
for (int act = 0; act <= currentAction; act++)
|
|
||||||
actionsNew[act].Grab(&actions[act]);
|
|
||||||
delete []actions;
|
|
||||||
lenActions = lenActionsNew;
|
|
||||||
actions = actionsNew;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CellBuffer::AppendAction(actionType at, int position, char *data, int lengthData) {
|
|
||||||
EnsureUndoRoom();
|
|
||||||
//Platform::DebugPrintf("%% %d action %d %d %d\n", at, position, lengthData, currentAction);
|
|
||||||
if (currentAction >= 2) {
|
|
||||||
// See if current action can be coalesced into previous action
|
|
||||||
// Will work if both are inserts or deletes and position is same or two different
|
|
||||||
if ((at != actions[currentAction - 1].at) || (abs(position - actions[currentAction - 1].position) > 2)) {
|
|
||||||
currentAction++;
|
|
||||||
} else if (currentAction == savePoint) {
|
|
||||||
currentAction++;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
currentAction++;
|
|
||||||
}
|
|
||||||
actions[currentAction].Create(at, position, data, lengthData);
|
|
||||||
if ((collectingUndo == undoCollectAutoStart) && (0 == undoSequenceDepth)) {
|
|
||||||
currentAction++;
|
|
||||||
actions[currentAction].Create(startAction);
|
|
||||||
}
|
|
||||||
maxAction = currentAction;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *CellBuffer::DeleteChars(int position, int deleteLength) {
|
const char *CellBuffer::DeleteChars(int position, int deleteLength) {
|
||||||
// InsertString and DeleteChars are the bottleneck though which all changes occur
|
// InsertString and DeleteChars are the bottleneck though which all changes occur
|
||||||
char *data = 0;
|
char *data = 0;
|
||||||
@@ -577,7 +754,7 @@ const char *CellBuffer::DeleteChars(int position, int deleteLength) {
|
|||||||
for (int i = 0; i < deleteLength / 2; i++) {
|
for (int i = 0; i < deleteLength / 2; i++) {
|
||||||
data[i] = ByteAt(position + i * 2);
|
data[i] = ByteAt(position + i * 2);
|
||||||
}
|
}
|
||||||
AppendAction(removeAction, position, data, deleteLength / 2);
|
uh.AppendAction(removeAction, position, data, deleteLength / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
BasicDeleteChars(position, deleteLength);
|
BasicDeleteChars(position, deleteLength);
|
||||||
@@ -616,11 +793,11 @@ void CellBuffer::SetReadOnly(bool set) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CellBuffer::SetSavePoint() {
|
void CellBuffer::SetSavePoint() {
|
||||||
savePoint = currentAction;
|
uh.SetSavePoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CellBuffer::IsSavePoint() {
|
bool CellBuffer::IsSavePoint() {
|
||||||
return savePoint == currentAction;
|
return uh.IsSavePoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
int CellBuffer::AddMark(int line, int markerNum) {
|
int CellBuffer::AddMark(int line, int markerNum) {
|
||||||
@@ -661,7 +838,7 @@ int CellBuffer::LineFromHandle(int markerHandle) {
|
|||||||
void CellBuffer::BasicInsertString(int position, char *s, int insertLength) {
|
void CellBuffer::BasicInsertString(int position, char *s, int insertLength) {
|
||||||
//Platform::DebugPrintf("Inserting at %d for %d\n", position, insertLength);
|
//Platform::DebugPrintf("Inserting at %d for %d\n", position, insertLength);
|
||||||
if (insertLength == 0)
|
if (insertLength == 0)
|
||||||
return;
|
return ;
|
||||||
RoomFor(insertLength);
|
RoomFor(insertLength);
|
||||||
GapTo(position);
|
GapTo(position);
|
||||||
|
|
||||||
@@ -721,7 +898,7 @@ void CellBuffer::BasicInsertString(int position, char *s, int insertLength) {
|
|||||||
void CellBuffer::BasicDeleteChars(int position, int deleteLength) {
|
void CellBuffer::BasicDeleteChars(int position, int deleteLength) {
|
||||||
//Platform::DebugPrintf("Deleting at %d for %d\n", position, deleteLength);
|
//Platform::DebugPrintf("Deleting at %d for %d\n", position, deleteLength);
|
||||||
if (deleteLength == 0)
|
if (deleteLength == 0)
|
||||||
return;
|
return ;
|
||||||
|
|
||||||
if ((position == 0) && (deleteLength == length)) {
|
if ((position == 0) && (deleteLength == length)) {
|
||||||
// If whole buffer is being deleted, faster to reinitialise lines data
|
// If whole buffer is being deleted, faster to reinitialise lines data
|
||||||
@@ -753,6 +930,7 @@ void CellBuffer::BasicDeleteChars(int position, int deleteLength) {
|
|||||||
ignoreNL = true; // First \n is not real deletion
|
ignoreNL = true; // First \n is not real deletion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char ch = chNext;
|
char ch = chNext;
|
||||||
for (int i = 0; i < deleteLength; i += 2) {
|
for (int i = 0; i < deleteLength; i += 2) {
|
||||||
chNext = ' ';
|
chNext = ' ';
|
||||||
@@ -770,6 +948,7 @@ void CellBuffer::BasicDeleteChars(int position, int deleteLength) {
|
|||||||
ignoreNL = false; // Further \n are not real deletions
|
ignoreNL = false; // Further \n are not real deletions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ch = chNext;
|
ch = chNext;
|
||||||
}
|
}
|
||||||
// May have to fix up end if last deletion causes cr to be next to lf
|
// May have to fix up end if last deletion causes cr to be next to lf
|
||||||
@@ -790,9 +969,9 @@ void CellBuffer::BasicDeleteChars(int position, int deleteLength) {
|
|||||||
part2body = body + gaplen;
|
part2body = body + gaplen;
|
||||||
}
|
}
|
||||||
|
|
||||||
undoCollectionType CellBuffer::SetUndoCollection(undoCollectionType collectUndo) {
|
bool CellBuffer::SetUndoCollection(bool collectUndo) {
|
||||||
collectingUndo = collectUndo;
|
collectingUndo = collectUndo;
|
||||||
undoSequenceDepth = 0;
|
uh.DropUndoSequence();
|
||||||
return collectingUndo;
|
return collectingUndo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -800,116 +979,72 @@ bool CellBuffer::IsCollectingUndo() {
|
|||||||
return collectingUndo;
|
return collectingUndo;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CellBuffer::AppendUndoStartAction() {
|
|
||||||
EnsureUndoRoom();
|
|
||||||
// Finish any currently active undo sequence
|
|
||||||
undoSequenceDepth = 0;
|
|
||||||
if (actions[currentAction].at != startAction) {
|
|
||||||
undoSequenceDepth++;
|
|
||||||
currentAction++;
|
|
||||||
actions[currentAction].Create(startAction);
|
|
||||||
maxAction = currentAction;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CellBuffer::BeginUndoAction() {
|
void CellBuffer::BeginUndoAction() {
|
||||||
EnsureUndoRoom();
|
uh.BeginUndoAction();
|
||||||
if (undoSequenceDepth == 0) {
|
|
||||||
if (actions[currentAction].at != startAction) {
|
|
||||||
currentAction++;
|
|
||||||
actions[currentAction].Create(startAction);
|
|
||||||
maxAction = currentAction;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
undoSequenceDepth++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CellBuffer::EndUndoAction() {
|
void CellBuffer::EndUndoAction() {
|
||||||
EnsureUndoRoom();
|
uh.EndUndoAction();
|
||||||
undoSequenceDepth--;
|
|
||||||
if (0 == undoSequenceDepth) {
|
|
||||||
if (actions[currentAction].at != startAction) {
|
|
||||||
currentAction++;
|
|
||||||
actions[currentAction].Create(startAction);
|
|
||||||
maxAction = currentAction;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CellBuffer::DeleteUndoHistory() {
|
void CellBuffer::DeleteUndoHistory() {
|
||||||
for (int i = 1; i < maxAction; i++)
|
uh.DeleteUndoHistory();
|
||||||
actions[i].Destroy();
|
|
||||||
maxAction = 0;
|
|
||||||
currentAction = 0;
|
|
||||||
savePoint = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CellBuffer::CanUndo() {
|
bool CellBuffer::CanUndo() {
|
||||||
return (!readOnly) && ((currentAction > 0) && (maxAction > 0));
|
return (!readOnly) && (uh.CanUndo());
|
||||||
}
|
}
|
||||||
|
|
||||||
int CellBuffer::StartUndo() {
|
int CellBuffer::StartUndo() {
|
||||||
// Drop any trailing startAction
|
return uh.StartUndo();
|
||||||
if (actions[currentAction].at == startAction && currentAction > 0)
|
|
||||||
currentAction--;
|
|
||||||
|
|
||||||
// Count the steps in this action
|
|
||||||
int act = currentAction;
|
|
||||||
while (actions[act].at != startAction && act > 0) {
|
|
||||||
act--;
|
|
||||||
}
|
|
||||||
return currentAction - act;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const Action &CellBuffer::UndoStep() {
|
const Action &CellBuffer::GetUndoStep() const {
|
||||||
const Action &actionStep = actions[currentAction];
|
return uh.GetUndoStep();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CellBuffer::PerformUndoStep() {
|
||||||
|
const Action &actionStep = uh.GetUndoStep();
|
||||||
if (actionStep.at == insertAction) {
|
if (actionStep.at == insertAction) {
|
||||||
BasicDeleteChars(actionStep.position, actionStep.lenData*2);
|
BasicDeleteChars(actionStep.position, actionStep.lenData*2);
|
||||||
} else if (actionStep.at == removeAction) {
|
} else if (actionStep.at == removeAction) {
|
||||||
char *styledData = new char[actionStep.lenData * 2];
|
char *styledData = new char[actionStep.lenData * 2];
|
||||||
for (int i = 0; i < actionStep.lenData; i++) {
|
for (int i = 0; i < actionStep.lenData; i++) {
|
||||||
styledData[i*2] = actionStep.data[i];
|
styledData[i*2] = actionStep.data[i];
|
||||||
styledData[i*2+1] = 0;
|
styledData[i*2 + 1] = 0;
|
||||||
}
|
}
|
||||||
BasicInsertString(actionStep.position, styledData, actionStep.lenData*2);
|
BasicInsertString(actionStep.position, styledData, actionStep.lenData*2);
|
||||||
delete []styledData;
|
delete []styledData;
|
||||||
}
|
}
|
||||||
currentAction--;
|
uh.CompletedUndoStep();
|
||||||
return actionStep;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CellBuffer::CanRedo() {
|
bool CellBuffer::CanRedo() {
|
||||||
return (!readOnly) && (maxAction > currentAction);
|
return (!readOnly) && (uh.CanRedo());
|
||||||
}
|
}
|
||||||
|
|
||||||
int CellBuffer::StartRedo() {
|
int CellBuffer::StartRedo() {
|
||||||
// Drop any leading startAction
|
return uh.StartRedo();
|
||||||
if (actions[currentAction].at == startAction && currentAction < maxAction)
|
|
||||||
currentAction++;
|
|
||||||
|
|
||||||
// Count the steps in this action
|
|
||||||
int act = currentAction;
|
|
||||||
while (actions[act].at != startAction && act < maxAction) {
|
|
||||||
act++;
|
|
||||||
}
|
|
||||||
return act - currentAction;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const Action &CellBuffer::RedoStep() {
|
const Action &CellBuffer::GetRedoStep() const {
|
||||||
const Action &actionStep = actions[currentAction];
|
return uh.GetRedoStep();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CellBuffer::PerformRedoStep() {
|
||||||
|
const Action &actionStep = uh.GetRedoStep();
|
||||||
if (actionStep.at == insertAction) {
|
if (actionStep.at == insertAction) {
|
||||||
char *styledData = new char[actionStep.lenData * 2];
|
char *styledData = new char[actionStep.lenData * 2];
|
||||||
for (int i = 0; i < actionStep.lenData; i++) {
|
for (int i = 0; i < actionStep.lenData; i++) {
|
||||||
styledData[i*2] = actionStep.data[i];
|
styledData[i*2] = actionStep.data[i];
|
||||||
styledData[i*2+1] = 0;
|
styledData[i*2 + 1] = 0;
|
||||||
}
|
}
|
||||||
BasicInsertString(actionStep.position, styledData, actionStep.lenData*2);
|
BasicInsertString(actionStep.position, styledData, actionStep.lenData*2);
|
||||||
delete []styledData;
|
delete []styledData;
|
||||||
} else if (actionStep.at == removeAction) {
|
} else if (actionStep.at == removeAction) {
|
||||||
BasicDeleteChars(actionStep.position, actionStep.lenData*2);
|
BasicDeleteChars(actionStep.position, actionStep.lenData*2);
|
||||||
}
|
}
|
||||||
currentAction++;
|
uh.CompletedRedoStep();
|
||||||
return actionStep;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int CellBuffer::SetLineState(int line, int state) {
|
int CellBuffer::SetLineState(int line, int state) {
|
||||||
@@ -925,7 +1060,7 @@ int CellBuffer::GetLineState(int line) {
|
|||||||
int CellBuffer::GetMaxLineState() {
|
int CellBuffer::GetMaxLineState() {
|
||||||
return lineStates.Length();
|
return lineStates.Length();
|
||||||
}
|
}
|
||||||
|
|
||||||
int CellBuffer::SetLevel(int line, int level) {
|
int CellBuffer::SetLevel(int line, int level) {
|
||||||
int prev = 0;
|
int prev = 0;
|
||||||
if ((line >= 0) && (line < lv.lines)) {
|
if ((line >= 0) && (line < lv.lines)) {
|
||||||
@@ -948,3 +1083,6 @@ int CellBuffer::GetLevel(int line) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CellBuffer::ClearLevels() {
|
||||||
|
lv.ClearLevels();
|
||||||
|
}
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ public:
|
|||||||
|
|
||||||
void Expand(int sizeNew);
|
void Expand(int sizeNew);
|
||||||
void ExpandLevels(int sizeNew=-1);
|
void ExpandLevels(int sizeNew=-1);
|
||||||
|
void ClearLevels();
|
||||||
void InsertValue(int pos, int value);
|
void InsertValue(int pos, int value);
|
||||||
void SetValue(int pos, int value);
|
void SetValue(int pos, int value);
|
||||||
void Remove(int pos);
|
void Remove(int pos);
|
||||||
@@ -79,15 +80,52 @@ public:
|
|||||||
int position;
|
int position;
|
||||||
char *data;
|
char *data;
|
||||||
int lenData;
|
int lenData;
|
||||||
|
bool mayCoalesce;
|
||||||
|
|
||||||
Action();
|
Action();
|
||||||
~Action();
|
~Action();
|
||||||
void Create(actionType at_, int position_=0, char *data_=0, int lenData_=0);
|
void Create(actionType at_, int position_=0, char *data_=0, int lenData_=0, bool mayCoalesce_=true);
|
||||||
void Destroy();
|
void Destroy();
|
||||||
void Grab(Action *source);
|
void Grab(Action *source);
|
||||||
};
|
};
|
||||||
|
|
||||||
enum undoCollectionType { undoCollectNone, undoCollectAutoStart, undoCollectManualStart };
|
class UndoHistory {
|
||||||
|
Action *actions;
|
||||||
|
int lenActions;
|
||||||
|
int maxAction;
|
||||||
|
int currentAction;
|
||||||
|
int undoSequenceDepth;
|
||||||
|
int savePoint;
|
||||||
|
|
||||||
|
void EnsureUndoRoom();
|
||||||
|
|
||||||
|
public:
|
||||||
|
UndoHistory();
|
||||||
|
~UndoHistory();
|
||||||
|
|
||||||
|
void AppendAction(actionType at, int position, char *data, int length);
|
||||||
|
|
||||||
|
void BeginUndoAction();
|
||||||
|
void EndUndoAction();
|
||||||
|
void DropUndoSequence();
|
||||||
|
void DeleteUndoHistory();
|
||||||
|
|
||||||
|
// The save point is a marker in the undo stack where the container has stated that
|
||||||
|
// the buffer was saved. Undo and redo can move over the save point.
|
||||||
|
void SetSavePoint();
|
||||||
|
bool IsSavePoint() const;
|
||||||
|
|
||||||
|
// To perform an undo, StartUndo is called to retrieve the number of steps, then UndoStep is
|
||||||
|
// called that many times. Similarly for redo.
|
||||||
|
bool CanUndo() const;
|
||||||
|
int StartUndo();
|
||||||
|
const Action &GetUndoStep() const;
|
||||||
|
void CompletedUndoStep();
|
||||||
|
bool CanRedo() const;
|
||||||
|
int StartRedo();
|
||||||
|
const Action &GetRedoStep() const;
|
||||||
|
void CompletedRedoStep();
|
||||||
|
};
|
||||||
|
|
||||||
// Holder for an expandable array of characters that supports undo and line markers
|
// Holder for an expandable array of characters that supports undo and line markers
|
||||||
// Based on article "Data Structures in a Bit-Mapped Text Editor"
|
// Based on article "Data Structures in a Bit-Mapped Text Editor"
|
||||||
@@ -102,24 +140,16 @@ private:
|
|||||||
char *part2body;
|
char *part2body;
|
||||||
bool readOnly;
|
bool readOnly;
|
||||||
|
|
||||||
Action *actions;
|
bool collectingUndo;
|
||||||
int lenActions;
|
UndoHistory uh;
|
||||||
int maxAction;
|
|
||||||
int currentAction;
|
|
||||||
undoCollectionType collectingUndo;
|
|
||||||
int undoSequenceDepth;
|
|
||||||
int savePoint;
|
|
||||||
|
|
||||||
LineVector lv;
|
LineVector lv;
|
||||||
|
|
||||||
SVector<int, 4000> lineStates;
|
SVector lineStates;
|
||||||
|
|
||||||
void GapTo(int position);
|
void GapTo(int position);
|
||||||
void RoomFor(int insertionLength);
|
void RoomFor(int insertionLength);
|
||||||
|
|
||||||
void EnsureUndoRoom();
|
|
||||||
void AppendAction(actionType at, int position, char *data, int length);
|
|
||||||
|
|
||||||
inline char ByteAt(int position);
|
inline char ByteAt(int position);
|
||||||
void SetByteAt(int position, char ch);
|
void SetByteAt(int position, char ch);
|
||||||
|
|
||||||
@@ -143,7 +173,7 @@ public:
|
|||||||
|
|
||||||
// Setting styles for positions outside the range of the buffer is safe and has no effect.
|
// Setting styles for positions outside the range of the buffer is safe and has no effect.
|
||||||
// True is returned if the style of a character changed.
|
// True is returned if the style of a character changed.
|
||||||
bool SetStyleAt(int position, char style, char mask=(char)0xff);
|
bool SetStyleAt(int position, char style, char mask='\377');
|
||||||
bool SetStyleFor(int position, int length, char style, char mask);
|
bool SetStyleFor(int position, int length, char style, char mask);
|
||||||
|
|
||||||
const char *DeleteChars(int position, int deleteLength);
|
const char *DeleteChars(int position, int deleteLength);
|
||||||
@@ -168,21 +198,22 @@ public:
|
|||||||
void BasicInsertString(int position, char *s, int insertLength);
|
void BasicInsertString(int position, char *s, int insertLength);
|
||||||
void BasicDeleteChars(int position, int deleteLength);
|
void BasicDeleteChars(int position, int deleteLength);
|
||||||
|
|
||||||
undoCollectionType SetUndoCollection(undoCollectionType collectUndo);
|
bool SetUndoCollection(bool collectUndo);
|
||||||
bool IsCollectingUndo();
|
bool IsCollectingUndo();
|
||||||
void AppendUndoStartAction();
|
|
||||||
void BeginUndoAction();
|
void BeginUndoAction();
|
||||||
void EndUndoAction();
|
void EndUndoAction();
|
||||||
void DeleteUndoHistory();
|
void DeleteUndoHistory();
|
||||||
|
|
||||||
// To perform an undo, StartUndo is called to retreive the number of steps, then UndoStep is
|
// To perform an undo, StartUndo is called to retrieve the number of steps, then UndoStep is
|
||||||
// called that many times. Similarly for redo.
|
// called that many times. Similarly for redo.
|
||||||
bool CanUndo();
|
bool CanUndo();
|
||||||
int StartUndo();
|
int StartUndo();
|
||||||
const Action &UndoStep();
|
const Action &GetUndoStep() const;
|
||||||
|
void PerformUndoStep();
|
||||||
bool CanRedo();
|
bool CanRedo();
|
||||||
int StartRedo();
|
int StartRedo();
|
||||||
const Action &RedoStep();
|
const Action &GetRedoStep() const;
|
||||||
|
void PerformRedoStep();
|
||||||
|
|
||||||
int SetLineState(int line, int state);
|
int SetLineState(int line, int state);
|
||||||
int GetLineState(int line);
|
int GetLineState(int line);
|
||||||
@@ -190,6 +221,7 @@ public:
|
|||||||
|
|
||||||
int SetLevel(int line, int level);
|
int SetLevel(int line, int level);
|
||||||
int GetLevel(int line);
|
int GetLevel(int line);
|
||||||
|
void ClearLevels();
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CELL_SIZE 2
|
#define CELL_SIZE 2
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ void ContractionState::MakeValid() const {
|
|||||||
if (!valid) {
|
if (!valid) {
|
||||||
// Could be cleverer by keeping the index of the last still valid entry
|
// Could be cleverer by keeping the index of the last still valid entry
|
||||||
// rather than invalidating all.
|
// rather than invalidating all.
|
||||||
int linePrev = -1;
|
|
||||||
int lineDisplay = 0;
|
int lineDisplay = 0;
|
||||||
for (int line=0; line<linesInDoc; line++) {
|
for (int line=0; line<linesInDoc; line++) {
|
||||||
lines[line].displayLine = lineDisplay;
|
lines[line].displayLine = lineDisplay;
|
||||||
@@ -108,12 +107,12 @@ void ContractionState::InsertLines(int lineDoc, int lineCount) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//Platform::DebugPrintf("InsertLine[%d] = %d\n", lineDoc);
|
//Platform::DebugPrintf("InsertLine[%d] = %d\n", lineDoc);
|
||||||
if ((linesInDoc + 2) >= size) {
|
if ((linesInDoc + lineCount + 2) >= size) {
|
||||||
Grow(size + growSize);
|
Grow(linesInDoc + lineCount + growSize);
|
||||||
}
|
}
|
||||||
linesInDoc += lineCount;
|
linesInDoc += lineCount;
|
||||||
linesInDisplay += lineCount;
|
linesInDisplay += lineCount;
|
||||||
for (int i = linesInDoc + 1; i >= lineDoc + lineCount; i--) {
|
for (int i = linesInDoc; i >= lineDoc + lineCount; i--) {
|
||||||
lines[i].visible = lines[i - lineCount].visible;
|
lines[i].visible = lines[i - lineCount].visible;
|
||||||
lines[i].expanded = lines[i - lineCount].expanded;
|
lines[i].expanded = lines[i - lineCount].expanded;
|
||||||
}
|
}
|
||||||
@@ -130,16 +129,18 @@ void ContractionState::DeleteLines(int lineDoc, int lineCount) {
|
|||||||
linesInDisplay -= lineCount;
|
linesInDisplay -= lineCount;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int delta = 0;
|
int deltaDisplayed = 0;
|
||||||
for (int d=0;d<lineCount;d++)
|
for (int d=0;d<lineCount;d++) {
|
||||||
if (lines[lineDoc+d].visible)
|
if (lines[lineDoc+d].visible)
|
||||||
delta--;
|
deltaDisplayed--;
|
||||||
|
}
|
||||||
for (int i = lineDoc; i < linesInDoc-lineCount; i++) {
|
for (int i = lineDoc; i < linesInDoc-lineCount; i++) {
|
||||||
lines[i].visible = lines[i + lineCount].visible;
|
if (i != 0) // Line zero is always visible
|
||||||
|
lines[i].visible = lines[i + lineCount].visible;
|
||||||
lines[i].expanded = lines[i + lineCount].expanded;
|
lines[i].expanded = lines[i + lineCount].expanded;
|
||||||
}
|
}
|
||||||
linesInDoc -= lineCount;
|
linesInDoc -= lineCount;
|
||||||
linesInDisplay += delta;
|
linesInDisplay += deltaDisplayed;
|
||||||
valid = false;
|
valid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,8 +155,12 @@ bool ContractionState::GetVisible(int lineDoc) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ContractionState::SetVisible(int lineDocStart, int lineDocEnd, bool visible) {
|
bool ContractionState::SetVisible(int lineDocStart, int lineDocEnd, bool visible) {
|
||||||
|
if (lineDocStart == 0)
|
||||||
|
lineDocStart++;
|
||||||
|
if (lineDocStart > lineDocEnd)
|
||||||
|
return false;
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
Grow(lineDocEnd + growSize);
|
Grow(linesInDoc + growSize);
|
||||||
}
|
}
|
||||||
// TODO: modify docLine members to mirror displayLine
|
// TODO: modify docLine members to mirror displayLine
|
||||||
int delta = 0;
|
int delta = 0;
|
||||||
@@ -166,12 +171,6 @@ bool ContractionState::SetVisible(int lineDocStart, int lineDocEnd, bool visible
|
|||||||
delta += visible ? 1 : -1;
|
delta += visible ? 1 : -1;
|
||||||
lines[line].visible = visible;
|
lines[line].visible = visible;
|
||||||
}
|
}
|
||||||
lines[line].displayLine += delta;
|
|
||||||
}
|
|
||||||
if (delta != 0) {
|
|
||||||
for (int line=lineDocEnd+1; line <= linesInDoc; line++) {
|
|
||||||
lines[line].displayLine += delta;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
linesInDisplay += delta;
|
linesInDisplay += delta;
|
||||||
@@ -191,7 +190,7 @@ bool ContractionState::GetExpanded(int lineDoc) const {
|
|||||||
|
|
||||||
bool ContractionState::SetExpanded(int lineDoc, bool expanded) {
|
bool ContractionState::SetExpanded(int lineDoc, bool expanded) {
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
Grow(lineDoc + growSize);
|
Grow(linesInDoc + growSize);
|
||||||
}
|
}
|
||||||
if ((lineDoc >= 0) && (lineDoc < linesInDoc)) {
|
if ((lineDoc >= 0) && (lineDoc < linesInDoc)) {
|
||||||
if (lines[lineDoc].expanded != expanded) {
|
if (lines[lineDoc].expanded != expanded) {
|
||||||
@@ -201,3 +200,9 @@ bool ContractionState::SetExpanded(int lineDoc, bool expanded) {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ContractionState::ShowAll() {
|
||||||
|
delete []lines;
|
||||||
|
lines = 0;
|
||||||
|
size = 0;
|
||||||
|
}
|
||||||
|
|||||||
@@ -42,9 +42,11 @@ public:
|
|||||||
|
|
||||||
bool GetVisible(int lineDoc) const;
|
bool GetVisible(int lineDoc) const;
|
||||||
bool SetVisible(int lineDocStart, int lineDocEnd, bool visible);
|
bool SetVisible(int lineDocStart, int lineDocEnd, bool visible);
|
||||||
|
|
||||||
bool GetExpanded(int lineDoc) const;
|
bool GetExpanded(int lineDoc) const;
|
||||||
bool SetExpanded(int lineDoc, bool expanded);
|
bool SetExpanded(int lineDoc, bool expanded);
|
||||||
|
|
||||||
|
void ShowAll();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -32,7 +32,10 @@ Document::Document() {
|
|||||||
}
|
}
|
||||||
endStyled = 0;
|
endStyled = 0;
|
||||||
enteredCount = 0;
|
enteredCount = 0;
|
||||||
|
enteredReadOnlyCount = 0;
|
||||||
tabInChars = 8;
|
tabInChars = 8;
|
||||||
|
indentInChars = 0;
|
||||||
|
useTabs = true;
|
||||||
watchers = 0;
|
watchers = 0;
|
||||||
lenWatchers = 0;
|
lenWatchers = 0;
|
||||||
}
|
}
|
||||||
@@ -51,7 +54,7 @@ int Document::AddRef() {
|
|||||||
return refCount++;
|
return refCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decrease reference count and return its provius value.
|
// Decrease reference count and return its previous value.
|
||||||
// Delete the document if reference count reaches zero.
|
// Delete the document if reference count reaches zero.
|
||||||
int Document::Release() {
|
int Document::Release() {
|
||||||
int curRefCount = --refCount;
|
int curRefCount = --refCount;
|
||||||
@@ -65,26 +68,54 @@ void Document::SetSavePoint() {
|
|||||||
NotifySavePoint(true);
|
NotifySavePoint(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Document::AddMark(int line, int markerNum) {
|
||||||
|
int prev = cb.AddMark(line, markerNum);
|
||||||
|
DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0);
|
||||||
|
NotifyModified(mh);
|
||||||
|
return prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Document::DeleteMark(int line, int markerNum) {
|
||||||
|
cb.DeleteMark(line, markerNum);
|
||||||
|
DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0);
|
||||||
|
NotifyModified(mh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Document::DeleteMarkFromHandle(int markerHandle) {
|
||||||
|
cb.DeleteMarkFromHandle(markerHandle);
|
||||||
|
DocModification mh(SC_MOD_CHANGEMARKER, 0, 0, 0, 0);
|
||||||
|
NotifyModified(mh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Document::DeleteAllMarks(int markerNum) {
|
||||||
|
cb.DeleteAllMarks(markerNum);
|
||||||
|
DocModification mh(SC_MOD_CHANGEMARKER, 0, 0, 0, 0);
|
||||||
|
NotifyModified(mh);
|
||||||
|
}
|
||||||
|
|
||||||
int Document::LineStart(int line) {
|
int Document::LineStart(int line) {
|
||||||
return cb.LineStart(line);
|
return cb.LineStart(line);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Document::LineEnd(int line) {
|
||||||
|
if (line == LinesTotal() - 1) {
|
||||||
|
return LineStart(line + 1);
|
||||||
|
} else {
|
||||||
|
int position = LineStart(line + 1) - 1;
|
||||||
|
// When line terminator is CR+LF, may need to go back one more
|
||||||
|
if ((position > LineStart(line)) && (cb.CharAt(position - 1) == '\r')) {
|
||||||
|
position--;
|
||||||
|
}
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int Document::LineFromPosition(int pos) {
|
int Document::LineFromPosition(int pos) {
|
||||||
return cb.LineFromPosition(pos);
|
return cb.LineFromPosition(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Document::LineEndPosition(int position) {
|
int Document::LineEndPosition(int position) {
|
||||||
int line = LineFromPosition(position);
|
return LineEnd(LineFromPosition(position));
|
||||||
if (line == LinesTotal() - 1) {
|
|
||||||
position = LineStart(line + 1);
|
|
||||||
} else {
|
|
||||||
position = LineStart(line + 1) - 1;
|
|
||||||
// When line terminator is CR+LF, may need to go back one more
|
|
||||||
if ((position > LineStart(line)) && (cb.CharAt(position - 1) == '\r')) {
|
|
||||||
position--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return position;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Document::VCHomePosition(int position) {
|
int Document::VCHomePosition(int position) {
|
||||||
@@ -124,7 +155,10 @@ int Document::GetLastChild(int lineParent, int level) {
|
|||||||
level = GetLevel(lineParent) & SC_FOLDLEVELNUMBERMASK;
|
level = GetLevel(lineParent) & SC_FOLDLEVELNUMBERMASK;
|
||||||
int maxLine = LinesTotal();
|
int maxLine = LinesTotal();
|
||||||
int lineMaxSubord = lineParent;
|
int lineMaxSubord = lineParent;
|
||||||
while ((lineMaxSubord < maxLine-1) && IsSubordinate(level, GetLevel(lineMaxSubord+1))) {
|
while (lineMaxSubord < maxLine-1) {
|
||||||
|
EnsureStyledTo(LineStart(lineMaxSubord+2));
|
||||||
|
if (!IsSubordinate(level, GetLevel(lineMaxSubord+1)))
|
||||||
|
break;
|
||||||
lineMaxSubord++;
|
lineMaxSubord++;
|
||||||
}
|
}
|
||||||
if (lineMaxSubord > lineParent) {
|
if (lineMaxSubord > lineParent) {
|
||||||
@@ -167,27 +201,58 @@ bool Document::IsCrLf(int pos) {
|
|||||||
return (cb.CharAt(pos) == '\r') && (cb.CharAt(pos + 1) == '\n');
|
return (cb.CharAt(pos) == '\r') && (cb.CharAt(pos + 1) == '\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Document::IsDBCS(int pos) {
|
|
||||||
#if PLAT_WIN
|
#if PLAT_WIN
|
||||||
|
bool Document::IsDBCS(int pos) {
|
||||||
if (dbcsCodePage) {
|
if (dbcsCodePage) {
|
||||||
// Anchor DBCS calculations at start of line because start of line can
|
if (SC_CP_UTF8 == dbcsCodePage) {
|
||||||
// not be a DBCS trail byte.
|
unsigned char ch = static_cast<unsigned char>(cb.CharAt(pos));
|
||||||
int startLine = pos;
|
return ch >= 0x80;
|
||||||
while (startLine > 0 && cb.CharAt(startLine) != '\r' && cb.CharAt(startLine) != '\n')
|
} else {
|
||||||
startLine--;
|
// Anchor DBCS calculations at start of line because start of line can
|
||||||
while (startLine <= pos) {
|
// not be a DBCS trail byte.
|
||||||
if (IsDBCSLeadByteEx(dbcsCodePage, cb.CharAt(startLine))) {
|
int startLine = pos;
|
||||||
|
while (startLine > 0 && cb.CharAt(startLine) != '\r' && cb.CharAt(startLine) != '\n')
|
||||||
|
startLine--;
|
||||||
|
while (startLine <= pos) {
|
||||||
|
if (IsDBCSLeadByteEx(dbcsCodePage, cb.CharAt(startLine))) {
|
||||||
|
startLine++;
|
||||||
|
if (startLine >= pos)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
startLine++;
|
startLine++;
|
||||||
if (startLine >= pos)
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
startLine++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
|
// PLAT_GTK or PLAT_WX
|
||||||
|
// TODO: support DBCS under GTK+ and WX
|
||||||
|
bool Document::IsDBCS(int) {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int Document::LenChar(int pos) {
|
||||||
|
if (IsCrLf(pos)) {
|
||||||
|
return 2;
|
||||||
|
} else if (SC_CP_UTF8 == dbcsCodePage) {
|
||||||
|
unsigned char ch = static_cast<unsigned char>(cb.CharAt(pos));
|
||||||
|
if (ch < 0x80)
|
||||||
|
return 1;
|
||||||
|
int len = 2;
|
||||||
|
if (ch >= (0x80+0x40+0x20))
|
||||||
|
len = 3;
|
||||||
|
int lengthDoc = Length();
|
||||||
|
if ((pos + len) > lengthDoc)
|
||||||
|
return lengthDoc-pos;
|
||||||
|
else
|
||||||
|
return len;
|
||||||
|
} else if (IsDBCS(pos)) {
|
||||||
|
return 2;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Normalise a position so that it is not halfway through a two byte character.
|
// Normalise a position so that it is not halfway through a two byte character.
|
||||||
@@ -221,29 +286,41 @@ int Document::MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd) {
|
|||||||
|
|
||||||
#if PLAT_WIN
|
#if PLAT_WIN
|
||||||
if (dbcsCodePage) {
|
if (dbcsCodePage) {
|
||||||
// Anchor DBCS calculations at start of line because start of line can
|
if (SC_CP_UTF8 == dbcsCodePage) {
|
||||||
// not be a DBCS trail byte.
|
unsigned char ch = static_cast<unsigned char>(cb.CharAt(pos));
|
||||||
int startLine = pos;
|
while ((pos > 0) && (pos < Length()) && (ch >= 0x80) && (ch < (0x80 + 0x40))) {
|
||||||
while (startLine > 0 && cb.CharAt(startLine) != '\r' && cb.CharAt(startLine) != '\n')
|
// ch is a trail byte
|
||||||
startLine--;
|
if (moveDir > 0)
|
||||||
bool atLeadByte = false;
|
pos++;
|
||||||
while (startLine < pos) {
|
else
|
||||||
if (atLeadByte)
|
pos--;
|
||||||
atLeadByte = false;
|
ch = static_cast<unsigned char>(cb.CharAt(pos));
|
||||||
else if (IsDBCSLeadByteEx(dbcsCodePage, cb.CharAt(startLine)))
|
}
|
||||||
atLeadByte = true;
|
} else {
|
||||||
else
|
// Anchor DBCS calculations at start of line because start of line can
|
||||||
atLeadByte = false;
|
// not be a DBCS trail byte.
|
||||||
startLine++;
|
int startLine = pos;
|
||||||
//Platform::DebugPrintf("DBCS %s\n", atlead ? "D" : "-");
|
while (startLine > 0 && cb.CharAt(startLine) != '\r' && cb.CharAt(startLine) != '\n')
|
||||||
}
|
startLine--;
|
||||||
|
bool atLeadByte = false;
|
||||||
|
while (startLine < pos) {
|
||||||
|
if (atLeadByte)
|
||||||
|
atLeadByte = false;
|
||||||
|
else if (IsDBCSLeadByteEx(dbcsCodePage, cb.CharAt(startLine)))
|
||||||
|
atLeadByte = true;
|
||||||
|
else
|
||||||
|
atLeadByte = false;
|
||||||
|
startLine++;
|
||||||
|
//Platform::DebugPrintf("DBCS %s\n", atlead ? "D" : "-");
|
||||||
|
}
|
||||||
|
|
||||||
if (atLeadByte) {
|
if (atLeadByte) {
|
||||||
// Position is between a lead byte and a trail byte
|
// Position is between a lead byte and a trail byte
|
||||||
if (moveDir > 0)
|
if (moveDir > 0)
|
||||||
return pos + 1;
|
return pos + 1;
|
||||||
else
|
else
|
||||||
return pos - 1;
|
return pos - 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -261,41 +338,62 @@ void Document::ModifiedAt(int pos) {
|
|||||||
|
|
||||||
// Unlike Undo, Redo, and InsertStyledString, the pos argument is a cell number not a char number
|
// Unlike Undo, Redo, and InsertStyledString, the pos argument is a cell number not a char number
|
||||||
void Document::DeleteChars(int pos, int len) {
|
void Document::DeleteChars(int pos, int len) {
|
||||||
|
if ((pos + len) > Length())
|
||||||
|
return;
|
||||||
|
if (cb.IsReadOnly() && enteredReadOnlyCount==0) {
|
||||||
|
enteredReadOnlyCount++;
|
||||||
|
NotifyModifyAttempt();
|
||||||
|
enteredReadOnlyCount--;
|
||||||
|
}
|
||||||
if (enteredCount == 0) {
|
if (enteredCount == 0) {
|
||||||
enteredCount++;
|
enteredCount++;
|
||||||
if (cb.IsReadOnly())
|
|
||||||
NotifyModifyAttempt();
|
|
||||||
if (!cb.IsReadOnly()) {
|
if (!cb.IsReadOnly()) {
|
||||||
|
NotifyModified(
|
||||||
|
DocModification(
|
||||||
|
SC_MOD_BEFOREDELETE | SC_PERFORMED_USER,
|
||||||
|
pos, len,
|
||||||
|
0, 0));
|
||||||
int prevLinesTotal = LinesTotal();
|
int prevLinesTotal = LinesTotal();
|
||||||
bool startSavePoint = cb.IsSavePoint();
|
bool startSavePoint = cb.IsSavePoint();
|
||||||
const char *text = cb.DeleteChars(pos*2, len * 2);
|
const char *text = cb.DeleteChars(pos*2, len * 2);
|
||||||
if (startSavePoint && cb.IsCollectingUndo())
|
if (startSavePoint && cb.IsCollectingUndo())
|
||||||
NotifySavePoint(!startSavePoint);
|
NotifySavePoint(!startSavePoint);
|
||||||
ModifiedAt(pos);
|
ModifiedAt(pos);
|
||||||
int modFlags = SC_MOD_DELETETEXT | SC_PERFORMED_USER;
|
NotifyModified(
|
||||||
DocModification mh(modFlags, pos, len, LinesTotal() - prevLinesTotal, text);
|
DocModification(
|
||||||
NotifyModified(mh);
|
SC_MOD_DELETETEXT | SC_PERFORMED_USER,
|
||||||
|
pos, len,
|
||||||
|
LinesTotal() - prevLinesTotal, text));
|
||||||
}
|
}
|
||||||
enteredCount--;
|
enteredCount--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Document::InsertStyledString(int position, char *s, int insertLength) {
|
void Document::InsertStyledString(int position, char *s, int insertLength) {
|
||||||
|
if (cb.IsReadOnly() && enteredReadOnlyCount==0) {
|
||||||
|
enteredReadOnlyCount++;
|
||||||
|
NotifyModifyAttempt();
|
||||||
|
enteredReadOnlyCount--;
|
||||||
|
}
|
||||||
if (enteredCount == 0) {
|
if (enteredCount == 0) {
|
||||||
enteredCount++;
|
enteredCount++;
|
||||||
if (cb.IsReadOnly())
|
|
||||||
NotifyModifyAttempt();
|
|
||||||
if (!cb.IsReadOnly()) {
|
if (!cb.IsReadOnly()) {
|
||||||
|
NotifyModified(
|
||||||
|
DocModification(
|
||||||
|
SC_MOD_BEFOREINSERT | SC_PERFORMED_USER,
|
||||||
|
position / 2, insertLength / 2,
|
||||||
|
0, 0));
|
||||||
int prevLinesTotal = LinesTotal();
|
int prevLinesTotal = LinesTotal();
|
||||||
bool startSavePoint = cb.IsSavePoint();
|
bool startSavePoint = cb.IsSavePoint();
|
||||||
const char *text = cb.InsertString(position, s, insertLength);
|
const char *text = cb.InsertString(position, s, insertLength);
|
||||||
if (startSavePoint && cb.IsCollectingUndo())
|
if (startSavePoint && cb.IsCollectingUndo())
|
||||||
NotifySavePoint(!startSavePoint);
|
NotifySavePoint(!startSavePoint);
|
||||||
ModifiedAt(position / 2);
|
ModifiedAt(position / 2);
|
||||||
|
NotifyModified(
|
||||||
int modFlags = SC_MOD_INSERTTEXT | SC_PERFORMED_USER;
|
DocModification(
|
||||||
DocModification mh(modFlags, position / 2, insertLength / 2, LinesTotal() - prevLinesTotal, text);
|
SC_MOD_INSERTTEXT | SC_PERFORMED_USER,
|
||||||
NotifyModified(mh);
|
position / 2, insertLength / 2,
|
||||||
|
LinesTotal() - prevLinesTotal, text));
|
||||||
}
|
}
|
||||||
enteredCount--;
|
enteredCount--;
|
||||||
}
|
}
|
||||||
@@ -307,9 +405,18 @@ int Document::Undo() {
|
|||||||
enteredCount++;
|
enteredCount++;
|
||||||
bool startSavePoint = cb.IsSavePoint();
|
bool startSavePoint = cb.IsSavePoint();
|
||||||
int steps = cb.StartUndo();
|
int steps = cb.StartUndo();
|
||||||
|
//Platform::DebugPrintf("Steps=%d\n", steps);
|
||||||
for (int step=0; step<steps; step++) {
|
for (int step=0; step<steps; step++) {
|
||||||
int prevLinesTotal = LinesTotal();
|
int prevLinesTotal = LinesTotal();
|
||||||
const Action &action = cb.UndoStep();
|
const Action &action = cb.GetUndoStep();
|
||||||
|
if (action.at == removeAction) {
|
||||||
|
NotifyModified(DocModification(
|
||||||
|
SC_MOD_BEFOREINSERT | SC_PERFORMED_UNDO, action));
|
||||||
|
} else {
|
||||||
|
NotifyModified(DocModification(
|
||||||
|
SC_MOD_BEFOREDELETE | SC_PERFORMED_UNDO, action));
|
||||||
|
}
|
||||||
|
cb.PerformUndoStep();
|
||||||
int cellPosition = action.position / 2;
|
int cellPosition = action.position / 2;
|
||||||
ModifiedAt(cellPosition);
|
ModifiedAt(cellPosition);
|
||||||
newPos = cellPosition;
|
newPos = cellPosition;
|
||||||
@@ -344,10 +451,17 @@ int Document::Redo() {
|
|||||||
int steps = cb.StartRedo();
|
int steps = cb.StartRedo();
|
||||||
for (int step=0; step<steps; step++) {
|
for (int step=0; step<steps; step++) {
|
||||||
int prevLinesTotal = LinesTotal();
|
int prevLinesTotal = LinesTotal();
|
||||||
const Action &action = cb.RedoStep();
|
const Action &action = cb.GetRedoStep();
|
||||||
int cellPosition = action.position / 2;
|
if (action.at == insertAction) {
|
||||||
ModifiedAt(cellPosition);
|
NotifyModified(DocModification(
|
||||||
newPos = cellPosition;
|
SC_MOD_BEFOREINSERT | SC_PERFORMED_REDO, action));
|
||||||
|
} else {
|
||||||
|
NotifyModified(DocModification(
|
||||||
|
SC_MOD_BEFOREDELETE | SC_PERFORMED_REDO, action));
|
||||||
|
}
|
||||||
|
cb.PerformRedoStep();
|
||||||
|
ModifiedAt(action.position / 2);
|
||||||
|
newPos = action.position / 2;
|
||||||
|
|
||||||
int modFlags = SC_PERFORMED_REDO;
|
int modFlags = SC_PERFORMED_REDO;
|
||||||
if (action.at == insertAction) {
|
if (action.at == insertAction) {
|
||||||
@@ -358,7 +472,8 @@ int Document::Redo() {
|
|||||||
}
|
}
|
||||||
if (step == steps-1)
|
if (step == steps-1)
|
||||||
modFlags |= SC_LASTSTEPINUNDOREDO;
|
modFlags |= SC_LASTSTEPINUNDOREDO;
|
||||||
NotifyModified(DocModification(modFlags, cellPosition, action.lenData,
|
NotifyModified(
|
||||||
|
DocModification(modFlags, action.position / 2, action.lenData,
|
||||||
LinesTotal() - prevLinesTotal, action.data));
|
LinesTotal() - prevLinesTotal, action.data));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -395,14 +510,13 @@ void Document::InsertString(int position, const char *s, int insertLength) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Document::ChangeChar(int pos, char ch) {
|
||||||
|
DeleteChars(pos, 1);
|
||||||
|
InsertChar(pos, ch);
|
||||||
|
}
|
||||||
|
|
||||||
void Document::DelChar(int pos) {
|
void Document::DelChar(int pos) {
|
||||||
if (IsCrLf(pos)) {
|
DeleteChars(pos, LenChar(pos));
|
||||||
DeleteChars(pos, 2);
|
|
||||||
} else if (IsDBCS(pos)) {
|
|
||||||
DeleteChars(pos, 2);
|
|
||||||
} else if (pos < Length()) {
|
|
||||||
DeleteChars(pos, 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Document::DelCharBack(int pos) {
|
int Document::DelCharBack(int pos) {
|
||||||
@@ -411,6 +525,10 @@ int Document::DelCharBack(int pos) {
|
|||||||
} else if (IsCrLf(pos - 2)) {
|
} else if (IsCrLf(pos - 2)) {
|
||||||
DeleteChars(pos - 2, 2);
|
DeleteChars(pos - 2, 2);
|
||||||
return pos - 2;
|
return pos - 2;
|
||||||
|
} else if (SC_CP_UTF8 == dbcsCodePage) {
|
||||||
|
int startChar = MovePositionOutsideChar(pos-1, -1, false);
|
||||||
|
DeleteChars(startChar, pos - startChar);
|
||||||
|
return startChar;
|
||||||
} else if (IsDBCS(pos - 1)) {
|
} else if (IsDBCS(pos - 1)) {
|
||||||
DeleteChars(pos - 2, 2);
|
DeleteChars(pos - 2, 2);
|
||||||
return pos - 2;
|
return pos - 2;
|
||||||
@@ -420,27 +538,101 @@ int Document::DelCharBack(int pos) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool isindentchar(char ch) {
|
||||||
|
return (ch == ' ') || (ch == '\t');
|
||||||
|
}
|
||||||
|
|
||||||
|
static int NextTab(int pos, int tabSize) {
|
||||||
|
return ((pos / tabSize) + 1) * tabSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void CreateIndentation(char *linebuf, int length, int indent, int tabSize, bool insertSpaces) {
|
||||||
|
length--; // ensure space for \0
|
||||||
|
if (!insertSpaces) {
|
||||||
|
while ((indent >= tabSize) && (length > 0)) {
|
||||||
|
*linebuf++ = '\t';
|
||||||
|
indent -= tabSize;
|
||||||
|
length--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while ((indent > 0) && (length > 0)) {
|
||||||
|
*linebuf++ = ' ';
|
||||||
|
indent--;
|
||||||
|
length--;
|
||||||
|
}
|
||||||
|
*linebuf = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
int Document::GetLineIndentation(int line) {
|
||||||
|
int indent = 0;
|
||||||
|
if ((line >= 0) && (line < LinesTotal())) {
|
||||||
|
int lineStart = LineStart(line);
|
||||||
|
int length = Length();
|
||||||
|
for (int i=lineStart;i<length;i++) {
|
||||||
|
char ch = cb.CharAt(i);
|
||||||
|
if (ch == ' ')
|
||||||
|
indent++;
|
||||||
|
else if (ch == '\t')
|
||||||
|
indent = NextTab(indent, tabInChars);
|
||||||
|
else
|
||||||
|
return indent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return indent;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Document::SetLineIndentation(int line, int indent) {
|
||||||
|
int indentOfLine = GetLineIndentation(line);
|
||||||
|
if (indent < 0)
|
||||||
|
indent = 0;
|
||||||
|
if (indent != indentOfLine) {
|
||||||
|
char linebuf[1000];
|
||||||
|
CreateIndentation(linebuf, sizeof(linebuf), indent, tabInChars, !useTabs);
|
||||||
|
int thisLineStart = LineStart(line);
|
||||||
|
int indentPos = GetLineIndentPosition(line);
|
||||||
|
DeleteChars(thisLineStart, indentPos - thisLineStart);
|
||||||
|
InsertString(thisLineStart, linebuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int Document::GetLineIndentPosition(int line) {
|
||||||
|
if (line < 0)
|
||||||
|
return 0;
|
||||||
|
int pos = LineStart(line);
|
||||||
|
int length = Length();
|
||||||
|
while ((pos < length) && isindentchar(cb.CharAt(pos))) {
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Document::GetColumn(int pos) {
|
||||||
|
int column = 0;
|
||||||
|
int line = LineFromPosition(pos);
|
||||||
|
if ((line >= 0) && (line < LinesTotal())) {
|
||||||
|
for (int i=LineStart(line);i<pos;i++) {
|
||||||
|
char ch = cb.CharAt(i);
|
||||||
|
if (ch == '\t')
|
||||||
|
column = NextTab(column, tabInChars);
|
||||||
|
else if (ch == '\r')
|
||||||
|
return column;
|
||||||
|
else if (ch == '\n')
|
||||||
|
return column;
|
||||||
|
else
|
||||||
|
column++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return column;
|
||||||
|
}
|
||||||
|
|
||||||
void Document::Indent(bool forwards, int lineBottom, int lineTop) {
|
void Document::Indent(bool forwards, int lineBottom, int lineTop) {
|
||||||
if (forwards) {
|
// Dedent - suck white space off the front of the line to dedent by equivalent of a tab
|
||||||
// Indent by a tab
|
for (int line = lineBottom; line >= lineTop; line--) {
|
||||||
for (int line = lineBottom; line >= lineTop; line--) {
|
int indentOfLine = GetLineIndentation(line);
|
||||||
InsertChar(LineStart(line), '\t');
|
if (forwards)
|
||||||
}
|
SetLineIndentation(line, indentOfLine + IndentSize());
|
||||||
} else {
|
else
|
||||||
// Dedent - suck white space off the front of the line to dedent by equivalent of a tab
|
SetLineIndentation(line, indentOfLine - IndentSize());
|
||||||
for (int line = lineBottom; line >= lineTop; line--) {
|
|
||||||
int ispc = 0;
|
|
||||||
while (ispc < tabInChars && cb.CharAt(LineStart(line) + ispc) == ' ')
|
|
||||||
ispc++;
|
|
||||||
int posStartLine = LineStart(line);
|
|
||||||
if (ispc == tabInChars) {
|
|
||||||
DeleteChars(posStartLine, ispc);
|
|
||||||
} else if (cb.CharAt(posStartLine + ispc) == '\t') {
|
|
||||||
DeleteChars(posStartLine, ispc + 1);
|
|
||||||
} else { // Hit a non-white
|
|
||||||
DeleteChars(posStartLine, ispc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -485,6 +677,8 @@ void Document::ConvertLineEnds(int eolModeSet) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Document::IsWordChar(unsigned char ch) {
|
bool Document::IsWordChar(unsigned char ch) {
|
||||||
|
if ((SC_CP_UTF8 == dbcsCodePage) && (ch >0x80))
|
||||||
|
return true;
|
||||||
return wordchars[ch];
|
return wordchars[ch];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -523,25 +717,29 @@ int Document::NextWordStart(int pos, int delta) {
|
|||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Document::IsWordAt(int start, int end) {
|
bool Document::IsWordStartAt(int pos) {
|
||||||
int lengthDoc = Length();
|
if (pos > 0) {
|
||||||
if (start > 0) {
|
return !IsWordChar(CharAt(pos - 1));
|
||||||
char ch = CharAt(start - 1);
|
|
||||||
if (IsWordChar(ch))
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (end < lengthDoc - 1) {
|
|
||||||
char ch = CharAt(end);
|
|
||||||
if (IsWordChar(ch))
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Document::IsWordEndAt(int pos) {
|
||||||
|
if (pos < Length() - 1) {
|
||||||
|
return !IsWordChar(CharAt(pos));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Document::IsWordAt(int start, int end) {
|
||||||
|
return IsWordStartAt(start) && IsWordEndAt(end);
|
||||||
|
}
|
||||||
|
|
||||||
// Find text in document, supporting both forward and backward
|
// Find text in document, supporting both forward and backward
|
||||||
// searches (just pass minPos > maxPos to do a backward search)
|
// searches (just pass minPos > maxPos to do a backward search)
|
||||||
// Has not been tested with backwards DBCS searches yet.
|
// Has not been tested with backwards DBCS searches yet.
|
||||||
long Document::FindText(int minPos, int maxPos, const char *s, bool caseSensitive, bool word) {
|
long Document::FindText(int minPos, int maxPos, const char *s,
|
||||||
|
bool caseSensitive, bool word, bool wordStart) {
|
||||||
bool forward = minPos <= maxPos;
|
bool forward = minPos <= maxPos;
|
||||||
int increment = forward ? 1 : -1;
|
int increment = forward ? 1 : -1;
|
||||||
|
|
||||||
@@ -551,16 +749,14 @@ long Document::FindText(int minPos, int maxPos, const char *s, bool caseSensitiv
|
|||||||
|
|
||||||
// Compute actual search ranges needed
|
// Compute actual search ranges needed
|
||||||
int lengthFind = strlen(s);
|
int lengthFind = strlen(s);
|
||||||
int endSearch = 0;
|
int endSearch = endPos;
|
||||||
if (startPos <= endPos) {
|
if (startPos <= endPos) {
|
||||||
endSearch = endPos - lengthFind + 1;
|
endSearch = endPos - lengthFind + 1;
|
||||||
} else {
|
|
||||||
endSearch = endPos;
|
|
||||||
}
|
}
|
||||||
//Platform::DebugPrintf("Find %d %d %s %d\n", startPos, endPos, ft->lpstrText, lengthFind);
|
//Platform::DebugPrintf("Find %d %d %s %d\n", startPos, endPos, ft->lpstrText, lengthFind);
|
||||||
char firstChar = s[0];
|
char firstChar = s[0];
|
||||||
if (!caseSensitive)
|
if (!caseSensitive)
|
||||||
firstChar = toupper(firstChar);
|
firstChar = static_cast<char>(toupper(firstChar));
|
||||||
int pos = startPos;
|
int pos = startPos;
|
||||||
while (forward ? (pos < endSearch) : (pos >= endSearch)) {
|
while (forward ? (pos < endSearch) : (pos >= endSearch)) {
|
||||||
char ch = CharAt(pos);
|
char ch = CharAt(pos);
|
||||||
@@ -573,8 +769,10 @@ long Document::FindText(int minPos, int maxPos, const char *s, bool caseSensitiv
|
|||||||
found = false;
|
found = false;
|
||||||
}
|
}
|
||||||
if (found) {
|
if (found) {
|
||||||
if ((!word) || IsWordAt(pos, pos + lengthFind))
|
if ((!word && !wordStart) ||
|
||||||
return pos;
|
word && IsWordAt(pos, pos + lengthFind) ||
|
||||||
|
wordStart && IsWordStartAt(pos))
|
||||||
|
return pos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -586,8 +784,10 @@ long Document::FindText(int minPos, int maxPos, const char *s, bool caseSensitiv
|
|||||||
found = false;
|
found = false;
|
||||||
}
|
}
|
||||||
if (found) {
|
if (found) {
|
||||||
if ((!word) || IsWordAt(pos, pos + lengthFind))
|
if (!(word && wordStart) ||
|
||||||
return pos;
|
word && IsWordAt(pos, pos + lengthFind) ||
|
||||||
|
wordStart && IsWordStartAt(pos))
|
||||||
|
return pos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -605,6 +805,25 @@ int Document::LinesTotal() {
|
|||||||
return cb.Lines();
|
return cb.Lines();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Document::ChangeCase(Range r, bool makeUpperCase) {
|
||||||
|
for (int pos=r.start; pos<r.end; pos++) {
|
||||||
|
char ch = CharAt(pos);
|
||||||
|
if (dbcsCodePage && IsDBCS(pos)) {
|
||||||
|
pos += LenChar(pos);
|
||||||
|
} else {
|
||||||
|
if (makeUpperCase) {
|
||||||
|
if (islower(ch)) {
|
||||||
|
ChangeChar(pos, static_cast<char>(toupper(ch)));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isupper(ch)) {
|
||||||
|
ChangeChar(pos, static_cast<char>(tolower(ch)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Document::SetWordChars(unsigned char *chars) {
|
void Document::SetWordChars(unsigned char *chars) {
|
||||||
int ch;
|
int ch;
|
||||||
for (ch = 0; ch < 256; ch++) {
|
for (ch = 0; ch < 256; ch++) {
|
||||||
@@ -671,6 +890,13 @@ void Document::SetStyles(int length, char *styles) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Document::EnsureStyledTo(int pos) {
|
||||||
|
// Ask the watchers to style, and stop as soon as one responds.
|
||||||
|
for (int i = 0; pos > GetEndStyled() && i < lenWatchers; i++)
|
||||||
|
watchers[i].watcher->NotifyStyleNeeded(this, watchers[i].userData, pos);
|
||||||
|
return pos <= GetEndStyled();
|
||||||
|
}
|
||||||
|
|
||||||
bool Document::AddWatcher(DocWatcher *watcher, void *userData) {
|
bool Document::AddWatcher(DocWatcher *watcher, void *userData) {
|
||||||
for (int i = 0; i < lenWatchers; i++) {
|
for (int i = 0; i < lenWatchers; i++) {
|
||||||
if ((watchers[i].watcher == watcher) &&
|
if ((watchers[i].watcher == watcher) &&
|
||||||
|
|||||||
@@ -74,9 +74,10 @@ private:
|
|||||||
CellBuffer cb;
|
CellBuffer cb;
|
||||||
bool wordchars[256];
|
bool wordchars[256];
|
||||||
int stylingPos;
|
int stylingPos;
|
||||||
int stylingMask;
|
char stylingMask;
|
||||||
int endStyled;
|
int endStyled;
|
||||||
int enteredCount;
|
int enteredCount;
|
||||||
|
int enteredReadOnlyCount;
|
||||||
|
|
||||||
WatcherWithUserData *watchers;
|
WatcherWithUserData *watchers;
|
||||||
int lenWatchers;
|
int lenWatchers;
|
||||||
@@ -86,8 +87,11 @@ public:
|
|||||||
int stylingBitsMask;
|
int stylingBitsMask;
|
||||||
|
|
||||||
int eolMode;
|
int eolMode;
|
||||||
|
// dbcsCodePage can also be SC_CP_UTF8 to enable UTF-8 mode
|
||||||
int dbcsCodePage;
|
int dbcsCodePage;
|
||||||
int tabInChars;
|
int tabInChars;
|
||||||
|
int indentInChars;
|
||||||
|
bool useTabs;
|
||||||
|
|
||||||
Document();
|
Document();
|
||||||
virtual ~Document();
|
virtual ~Document();
|
||||||
@@ -98,6 +102,7 @@ public:
|
|||||||
int LineFromPosition(int pos);
|
int LineFromPosition(int pos);
|
||||||
int ClampPositionIntoDocument(int pos);
|
int ClampPositionIntoDocument(int pos);
|
||||||
bool IsCrLf(int pos);
|
bool IsCrLf(int pos);
|
||||||
|
int LenChar(int pos);
|
||||||
int MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd=true);
|
int MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd=true);
|
||||||
|
|
||||||
// Gateways to modifying document
|
// Gateways to modifying document
|
||||||
@@ -108,21 +113,28 @@ public:
|
|||||||
bool CanUndo() { return cb.CanUndo(); }
|
bool CanUndo() { return cb.CanUndo(); }
|
||||||
bool CanRedo() { return cb.CanRedo(); }
|
bool CanRedo() { return cb.CanRedo(); }
|
||||||
void DeleteUndoHistory() { cb.DeleteUndoHistory(); }
|
void DeleteUndoHistory() { cb.DeleteUndoHistory(); }
|
||||||
undoCollectionType SetUndoCollection(undoCollectionType collectUndo) {
|
bool SetUndoCollection(bool collectUndo) {
|
||||||
return cb.SetUndoCollection(collectUndo);
|
return cb.SetUndoCollection(collectUndo);
|
||||||
}
|
}
|
||||||
void AppendUndoStartAction() { cb.AppendUndoStartAction(); }
|
bool IsCollectingUndo() { return cb.IsCollectingUndo(); }
|
||||||
void BeginUndoAction() { cb.BeginUndoAction(); }
|
void BeginUndoAction() { cb.BeginUndoAction(); }
|
||||||
void EndUndoAction() { cb.EndUndoAction(); }
|
void EndUndoAction() { cb.EndUndoAction(); }
|
||||||
void SetSavePoint();
|
void SetSavePoint();
|
||||||
bool IsSavePoint() { return cb.IsSavePoint(); }
|
bool IsSavePoint() { return cb.IsSavePoint(); }
|
||||||
|
|
||||||
|
int GetLineIndentation(int line);
|
||||||
|
void SetLineIndentation(int line, int indent);
|
||||||
|
int GetLineIndentPosition(int line);
|
||||||
|
int GetColumn(int position);
|
||||||
void Indent(bool forwards, int lineBottom, int lineTop);
|
void Indent(bool forwards, int lineBottom, int lineTop);
|
||||||
void ConvertLineEnds(int eolModeSet);
|
void ConvertLineEnds(int eolModeSet);
|
||||||
void SetReadOnly(bool set) { cb.SetReadOnly(set); }
|
void SetReadOnly(bool set) { cb.SetReadOnly(set); }
|
||||||
|
bool IsReadOnly() { return cb.IsReadOnly(); }
|
||||||
|
|
||||||
void InsertChar(int pos, char ch);
|
void InsertChar(int pos, char ch);
|
||||||
void InsertString(int position, const char *s);
|
void InsertString(int position, const char *s);
|
||||||
void InsertString(int position, const char *s, int insertLength);
|
void InsertString(int position, const char *s, int insertLength);
|
||||||
|
void ChangeChar(int pos, char ch);
|
||||||
void DelChar(int pos);
|
void DelChar(int pos);
|
||||||
int DelCharBack(int pos);
|
int DelCharBack(int pos);
|
||||||
|
|
||||||
@@ -132,17 +144,19 @@ public:
|
|||||||
}
|
}
|
||||||
char StyleAt(int position) { return cb.StyleAt(position); }
|
char StyleAt(int position) { return cb.StyleAt(position); }
|
||||||
int GetMark(int line) { return cb.GetMark(line); }
|
int GetMark(int line) { return cb.GetMark(line); }
|
||||||
int AddMark(int line, int markerNum) { return cb.AddMark(line, markerNum); }
|
int AddMark(int line, int markerNum);
|
||||||
void DeleteMark(int line, int markerNum) { cb.DeleteMark(line, markerNum); }
|
void DeleteMark(int line, int markerNum);
|
||||||
void DeleteMarkFromHandle(int markerHandle) { cb.DeleteMarkFromHandle(markerHandle); }
|
void DeleteMarkFromHandle(int markerHandle);
|
||||||
void DeleteAllMarks(int markerNum) { cb.DeleteAllMarks(markerNum); }
|
void DeleteAllMarks(int markerNum);
|
||||||
int LineFromHandle(int markerHandle) { return cb.LineFromHandle(markerHandle); }
|
int LineFromHandle(int markerHandle) { return cb.LineFromHandle(markerHandle); }
|
||||||
int LineStart(int line);
|
int LineStart(int line);
|
||||||
|
int LineEnd(int line);
|
||||||
int LineEndPosition(int position);
|
int LineEndPosition(int position);
|
||||||
int VCHomePosition(int position);
|
int VCHomePosition(int position);
|
||||||
|
|
||||||
int SetLevel(int line, int level);
|
int SetLevel(int line, int level);
|
||||||
int GetLevel(int line) { return cb.GetLevel(line); }
|
int GetLevel(int line) { return cb.GetLevel(line); }
|
||||||
|
void ClearLevels() { cb.ClearLevels(); }
|
||||||
int GetLastChild(int lineParent, int level=-1);
|
int GetLastChild(int lineParent, int level=-1);
|
||||||
int GetFoldParent(int line);
|
int GetFoldParent(int line);
|
||||||
|
|
||||||
@@ -150,16 +164,20 @@ public:
|
|||||||
int ExtendWordSelect(int pos, int delta);
|
int ExtendWordSelect(int pos, int delta);
|
||||||
int NextWordStart(int pos, int delta);
|
int NextWordStart(int pos, int delta);
|
||||||
int Length() { return cb.Length(); }
|
int Length() { return cb.Length(); }
|
||||||
long FindText(int minPos, int maxPos, const char *s, bool caseSensitive, bool word);
|
long FindText(int minPos, int maxPos, const char *s,
|
||||||
long FindText(WORD iMessage,WPARAM wParam,LPARAM lParam);
|
bool caseSensitive, bool word, bool wordStart);
|
||||||
|
long FindText(int iMessage, unsigned long wParam, long lParam);
|
||||||
int LinesTotal();
|
int LinesTotal();
|
||||||
|
|
||||||
|
void ChangeCase(Range r, bool makeUpperCase);
|
||||||
|
|
||||||
void SetWordChars(unsigned char *chars);
|
void SetWordChars(unsigned char *chars);
|
||||||
void SetStylingBits(int bits);
|
void SetStylingBits(int bits);
|
||||||
void StartStyling(int position, char mask);
|
void StartStyling(int position, char mask);
|
||||||
void SetStyleFor(int length, char style);
|
void SetStyleFor(int length, char style);
|
||||||
void SetStyles(int length, char *styles);
|
void SetStyles(int length, char *styles);
|
||||||
int GetEndStyled() { return endStyled; }
|
int GetEndStyled() { return endStyled; }
|
||||||
|
bool EnsureStyledTo(int pos);
|
||||||
|
|
||||||
int SetLineState(int line, int state) { return cb.SetLineState(line, state); }
|
int SetLineState(int line, int state) { return cb.SetLineState(line, state); }
|
||||||
int GetLineState(int line) { return cb.GetLineState(line); }
|
int GetLineState(int line) { return cb.GetLineState(line); }
|
||||||
@@ -173,12 +191,16 @@ public:
|
|||||||
private:
|
private:
|
||||||
bool IsDBCS(int pos);
|
bool IsDBCS(int pos);
|
||||||
bool IsWordChar(unsigned char ch);
|
bool IsWordChar(unsigned char ch);
|
||||||
|
bool IsWordStartAt(int pos);
|
||||||
|
bool IsWordEndAt(int pos);
|
||||||
bool IsWordAt(int start, int end);
|
bool IsWordAt(int start, int end);
|
||||||
void ModifiedAt(int pos);
|
void ModifiedAt(int pos);
|
||||||
|
|
||||||
void NotifyModifyAttempt();
|
void NotifyModifyAttempt();
|
||||||
void NotifySavePoint(bool atSavePoint);
|
void NotifySavePoint(bool atSavePoint);
|
||||||
void NotifyModified(DocModification mh);
|
void NotifyModified(DocModification mh);
|
||||||
|
|
||||||
|
int IndentSize() { return indentInChars ? indentInChars : tabInChars; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// To optimise processing of document modifications by DocWatchers, a hint is passed indicating the
|
// To optimise processing of document modifications by DocWatchers, a hint is passed indicating the
|
||||||
@@ -205,6 +227,16 @@ public:
|
|||||||
line(0),
|
line(0),
|
||||||
foldLevelNow(0),
|
foldLevelNow(0),
|
||||||
foldLevelPrev(0) {}
|
foldLevelPrev(0) {}
|
||||||
|
|
||||||
|
DocModification(int modificationType_, const Action &act, int linesAdded_=0) :
|
||||||
|
modificationType(modificationType_),
|
||||||
|
position(act.position / 2),
|
||||||
|
length(act.lenData),
|
||||||
|
linesAdded(linesAdded_),
|
||||||
|
text(act.data),
|
||||||
|
line(0),
|
||||||
|
foldLevelNow(0),
|
||||||
|
foldLevelPrev(0) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// A class that wants to receive notifications from a Document must be derived from DocWatcher
|
// A class that wants to receive notifications from a Document must be derived from DocWatcher
|
||||||
@@ -217,6 +249,7 @@ public:
|
|||||||
virtual void NotifySavePoint(Document *doc, void *userData, bool atSavePoint) = 0;
|
virtual void NotifySavePoint(Document *doc, void *userData, bool atSavePoint) = 0;
|
||||||
virtual void NotifyModified(Document *doc, DocModification mh, void *userData) = 0;
|
virtual void NotifyModified(Document *doc, DocModification mh, void *userData) = 0;
|
||||||
virtual void NotifyDeleted(Document *doc, void *userData) = 0;
|
virtual void NotifyDeleted(Document *doc, void *userData) = 0;
|
||||||
|
virtual void NotifyStyleNeeded(Document *doc, void *userData, int endPos) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
176
contrib/src/stc/scintilla/src/DocumentAccessor.cxx
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
// SciTE - Scintilla based Text Editor
|
||||||
|
// Accessor.cxx - rapid easy access to contents of a Scintilla
|
||||||
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "Platform.h"
|
||||||
|
|
||||||
|
#include "PropSet.h"
|
||||||
|
#include "SVector.h"
|
||||||
|
#include "Accessor.h"
|
||||||
|
#include "DocumentAccessor.h"
|
||||||
|
#include "CellBuffer.h"
|
||||||
|
#include "Scintilla.h"
|
||||||
|
#include "Document.h"
|
||||||
|
|
||||||
|
DocumentAccessor::~DocumentAccessor() {
|
||||||
|
}
|
||||||
|
|
||||||
|
#if PLAT_WIN
|
||||||
|
bool DocumentAccessor::InternalIsLeadByte(char ch) {
|
||||||
|
if (SC_CP_UTF8 == codePage)
|
||||||
|
// For lexing, all characters >= 0x80 are treated the
|
||||||
|
// same so none is considered a lead byte.
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return IsDBCSLeadByteEx(codePage, ch);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
// PLAT_GTK or PLAT_WX
|
||||||
|
// TODO: support DBCS under GTK+ and WX
|
||||||
|
bool DocumentAccessor::InternalIsLeadByte(char) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void DocumentAccessor::Fill(int position) {
|
||||||
|
if (lenDoc == -1)
|
||||||
|
lenDoc = pdoc->Length();
|
||||||
|
startPos = position - slopSize;
|
||||||
|
if (startPos + bufferSize > lenDoc)
|
||||||
|
startPos = lenDoc - bufferSize;
|
||||||
|
if (startPos < 0)
|
||||||
|
startPos = 0;
|
||||||
|
endPos = startPos + bufferSize;
|
||||||
|
if (endPos > lenDoc)
|
||||||
|
endPos = lenDoc;
|
||||||
|
|
||||||
|
pdoc->GetCharRange(buf, startPos, endPos-startPos);
|
||||||
|
buf[endPos-startPos] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
char DocumentAccessor::StyleAt(int position) {
|
||||||
|
return pdoc->StyleAt(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DocumentAccessor::GetLine(int position) {
|
||||||
|
return pdoc->LineFromPosition(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DocumentAccessor::LineStart(int line) {
|
||||||
|
return pdoc->LineStart(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DocumentAccessor::LevelAt(int line) {
|
||||||
|
return pdoc->GetLevel(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DocumentAccessor::Length() {
|
||||||
|
if (lenDoc == -1)
|
||||||
|
lenDoc = pdoc->Length();
|
||||||
|
return lenDoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
int DocumentAccessor::GetLineState(int line) {
|
||||||
|
return pdoc->GetLineState(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DocumentAccessor::SetLineState(int line, int state) {
|
||||||
|
return pdoc->SetLineState(line, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DocumentAccessor::StartAt(unsigned int start, char chMask) {
|
||||||
|
pdoc->StartStyling(start, chMask);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DocumentAccessor::StartSegment(unsigned int pos) {
|
||||||
|
startSeg = pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DocumentAccessor::ColourTo(unsigned int pos, int chAttr) {
|
||||||
|
// Only perform styling if non empty range
|
||||||
|
if (pos != startSeg - 1) {
|
||||||
|
if (pos < startSeg) {
|
||||||
|
Platform::DebugPrintf("Bad colour positions %d - %d\n", startSeg, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (validLen + (pos - startSeg + 1) >= bufferSize)
|
||||||
|
Flush();
|
||||||
|
if (validLen + (pos - startSeg + 1) >= bufferSize) {
|
||||||
|
// Too big for buffer so send directly
|
||||||
|
pdoc->SetStyleFor(pos - startSeg + 1, static_cast<char>(chAttr));
|
||||||
|
} else {
|
||||||
|
if (chAttr != chWhile)
|
||||||
|
chFlags = 0;
|
||||||
|
chAttr |= chFlags;
|
||||||
|
for (unsigned int i = startSeg; i <= pos; i++) {
|
||||||
|
styleBuf[validLen++] = static_cast<char>(chAttr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
startSeg = pos+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DocumentAccessor::SetLevel(int line, int level) {
|
||||||
|
pdoc->SetLevel(line, level);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DocumentAccessor::Flush() {
|
||||||
|
startPos = extremePosition;
|
||||||
|
lenDoc = -1;
|
||||||
|
if (validLen > 0) {
|
||||||
|
pdoc->SetStyles(validLen, styleBuf);
|
||||||
|
validLen = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int DocumentAccessor::IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader) {
|
||||||
|
int end = Length();
|
||||||
|
int spaceFlags = 0;
|
||||||
|
|
||||||
|
// Determines the indentation level of the current line and also checks for consistent
|
||||||
|
// indentation compared to the previous line.
|
||||||
|
// Indentation is judged consistent when the indentation whitespace of each line lines
|
||||||
|
// the same or the indentation of one line is a prefix of the other.
|
||||||
|
|
||||||
|
int pos = LineStart(line);
|
||||||
|
char ch = (*this)[pos];
|
||||||
|
int indent = 0;
|
||||||
|
bool inPrevPrefix = line > 0;
|
||||||
|
int posPrev = inPrevPrefix ? LineStart(line-1) : 0;
|
||||||
|
while ((ch == ' ' || ch == '\t') && (pos < end)) {
|
||||||
|
if (inPrevPrefix) {
|
||||||
|
char chPrev = (*this)[posPrev++];
|
||||||
|
if (chPrev == ' ' || chPrev == '\t') {
|
||||||
|
if (chPrev != ch)
|
||||||
|
spaceFlags |= wsInconsistent;
|
||||||
|
} else {
|
||||||
|
inPrevPrefix = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ch == ' ') {
|
||||||
|
spaceFlags |= wsSpace;
|
||||||
|
indent++;
|
||||||
|
} else { // Tab
|
||||||
|
spaceFlags |= wsTab;
|
||||||
|
if (spaceFlags & wsSpace)
|
||||||
|
spaceFlags |= wsSpaceTab;
|
||||||
|
indent = (indent / 8 + 1) * 8;
|
||||||
|
}
|
||||||
|
ch = (*this)[++pos];
|
||||||
|
}
|
||||||
|
|
||||||
|
*flags = spaceFlags;
|
||||||
|
indent += SC_FOLDLEVELBASE;
|
||||||
|
// if completely empty line or the start of a comment...
|
||||||
|
if (isspace(ch) || (pfnIsCommentLeader && (*pfnIsCommentLeader)(*this, pos, end-pos)) )
|
||||||
|
return indent | SC_FOLDLEVELWHITEFLAG;
|
||||||
|
else
|
||||||
|
return indent;
|
||||||
|
}
|
||||||
|
|
||||||
49
contrib/src/stc/scintilla/src/DocumentAccessor.h
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
// DocumentAccessor.h - implementation of BufferAccess and StylingAccess on a Scintilla rapid easy access to contents of a Scintilla
|
||||||
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
class Document;
|
||||||
|
|
||||||
|
class DocumentAccessor : public Accessor {
|
||||||
|
// Private so DocumentAccessor objects can not be copied
|
||||||
|
DocumentAccessor(const DocumentAccessor &source) : Accessor(), props(source.props) {}
|
||||||
|
DocumentAccessor &operator=(const DocumentAccessor &) { return *this; }
|
||||||
|
protected:
|
||||||
|
Document *pdoc;
|
||||||
|
PropSet &props;
|
||||||
|
int lenDoc;
|
||||||
|
|
||||||
|
char styleBuf[bufferSize];
|
||||||
|
int validLen;
|
||||||
|
char chFlags;
|
||||||
|
char chWhile;
|
||||||
|
unsigned int startSeg;
|
||||||
|
|
||||||
|
bool InternalIsLeadByte(char ch);
|
||||||
|
void Fill(int position);
|
||||||
|
public:
|
||||||
|
DocumentAccessor(Document *pdoc_, PropSet &props_) :
|
||||||
|
Accessor(), pdoc(pdoc_), props(props_),
|
||||||
|
lenDoc(-1), validLen(0), chFlags(0), chWhile(0) {
|
||||||
|
}
|
||||||
|
~DocumentAccessor();
|
||||||
|
char StyleAt(int position);
|
||||||
|
int GetLine(int position);
|
||||||
|
int LineStart(int line);
|
||||||
|
int LevelAt(int line);
|
||||||
|
int Length();
|
||||||
|
void Flush();
|
||||||
|
int GetLineState(int line);
|
||||||
|
int SetLineState(int line, int state);
|
||||||
|
int GetPropertyInt(const char *key, int defaultValue=0) {
|
||||||
|
return props.GetInt(key, defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
void StartAt(unsigned int start, char chMask=31);
|
||||||
|
void SetFlags(char chFlags_, char chWhile_) {chFlags = chFlags_; chWhile = chWhile_; };
|
||||||
|
unsigned int GetStartSegment() { return startSeg; }
|
||||||
|
void StartSegment(unsigned int pos);
|
||||||
|
void ColourTo(unsigned int pos, int chAttr);
|
||||||
|
void SetLevel(int line, int level);
|
||||||
|
int IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0);
|
||||||
|
};
|
||||||
@@ -31,13 +31,21 @@ public:
|
|||||||
// Drawing is only performed for maxLineLength characters on each line.
|
// Drawing is only performed for maxLineLength characters on each line.
|
||||||
enum {maxLineLength = 4000};
|
enum {maxLineLength = 4000};
|
||||||
int numCharsInLine;
|
int numCharsInLine;
|
||||||
char chars[maxLineLength];
|
int xHighlightGuide;
|
||||||
char styles[maxLineLength];
|
bool highlightColumn;
|
||||||
char indicators[maxLineLength];
|
int selStart;
|
||||||
int positions[maxLineLength];
|
int selEnd;
|
||||||
|
int edgeColumn;
|
||||||
|
char chars[maxLineLength+1];
|
||||||
|
char styles[maxLineLength+1];
|
||||||
|
char indicators[maxLineLength+1];
|
||||||
|
int positions[maxLineLength+1];
|
||||||
};
|
};
|
||||||
|
|
||||||
class Editor : public DocWatcher {
|
class Editor : public DocWatcher {
|
||||||
|
// Private so Editor objects can not be copied
|
||||||
|
Editor(const Editor &) : DocWatcher() {}
|
||||||
|
Editor &operator=(const Editor &) { return *this; }
|
||||||
protected: // ScintillaBase subclass needs access to much of Editor
|
protected: // ScintillaBase subclass needs access to much of Editor
|
||||||
|
|
||||||
// On GTK+, Scintilla is a container widget holding two scroll bars and a drawing area
|
// On GTK+, Scintilla is a container widget holding two scroll bars and a drawing area
|
||||||
@@ -51,6 +59,8 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
bool stylesValid;
|
bool stylesValid;
|
||||||
ViewStyle vs;
|
ViewStyle vs;
|
||||||
Palette palette;
|
Palette palette;
|
||||||
|
int printMagnification;
|
||||||
|
int printColourMode;
|
||||||
|
|
||||||
bool hideSelection;
|
bool hideSelection;
|
||||||
bool inOverstrike;
|
bool inOverstrike;
|
||||||
@@ -61,13 +71,16 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
|
|
||||||
int xOffset; // Horizontal scrolled amount in pixels
|
int xOffset; // Horizontal scrolled amount in pixels
|
||||||
int xCaretMargin; // Ensure this many pixels visible on both sides of caret
|
int xCaretMargin; // Ensure this many pixels visible on both sides of caret
|
||||||
|
bool horizontalScrollBarVisible;
|
||||||
|
|
||||||
Surface pixmapLine;
|
Surface pixmapLine;
|
||||||
Surface pixmapSelMargin;
|
Surface pixmapSelMargin;
|
||||||
Surface pixmapSelPattern;
|
Surface pixmapSelPattern;
|
||||||
|
Surface pixmapIndentGuide;
|
||||||
|
Surface pixmapIndentGuideHighlight;
|
||||||
// Intellimouse support - currently only implemented for Windows
|
// Intellimouse support - currently only implemented for Windows
|
||||||
unsigned int ucWheelScrollLines;
|
unsigned int ucWheelScrollLines;
|
||||||
short cWheelDelta; //wheel delta from roll
|
int cWheelDelta; //wheel delta from roll
|
||||||
|
|
||||||
KeyMap kmap;
|
KeyMap kmap;
|
||||||
|
|
||||||
@@ -94,8 +107,8 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
bool needUpdateUI;
|
bool needUpdateUI;
|
||||||
Position braces[2];
|
Position braces[2];
|
||||||
int bracesMatchStyle;
|
int bracesMatchStyle;
|
||||||
|
int highlightGuideColumn;
|
||||||
|
|
||||||
int edgeState;
|
|
||||||
int theEdge;
|
int theEdge;
|
||||||
|
|
||||||
enum { notPainting, painting, paintAbandoned } paintState;
|
enum { notPainting, painting, paintAbandoned } paintState;
|
||||||
@@ -110,12 +123,15 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
enum { selStream, selRectangle, selRectangleFixed } selType;
|
enum { selStream, selRectangle, selRectangleFixed } selType;
|
||||||
int xStartSelect;
|
int xStartSelect;
|
||||||
int xEndSelect;
|
int xEndSelect;
|
||||||
|
bool primarySelection;
|
||||||
|
|
||||||
int caretPolicy;
|
int caretPolicy;
|
||||||
int caretSlop;
|
int caretSlop;
|
||||||
|
|
||||||
int searchAnchor;
|
int searchAnchor;
|
||||||
|
|
||||||
|
int displayPopupMenu;
|
||||||
|
|
||||||
#ifdef MACRO_SUPPORT
|
#ifdef MACRO_SUPPORT
|
||||||
int recordingMacro;
|
int recordingMacro;
|
||||||
#endif
|
#endif
|
||||||
@@ -162,6 +178,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
void SetSelection(int currentPos_, int anchor_);
|
void SetSelection(int currentPos_, int anchor_);
|
||||||
void SetSelection(int currentPos_);
|
void SetSelection(int currentPos_);
|
||||||
void SetEmptySelection(int currentPos_);
|
void SetEmptySelection(int currentPos_);
|
||||||
|
int MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd=true);
|
||||||
int MovePositionTo(int newPos, bool extend = false);
|
int MovePositionTo(int newPos, bool extend = false);
|
||||||
int MovePositionSoVisible(int pos, int moveDir);
|
int MovePositionSoVisible(int pos, int moveDir);
|
||||||
void SetLastXChosen();
|
void SetLastXChosen();
|
||||||
@@ -169,6 +186,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
void ScrollTo(int line);
|
void ScrollTo(int line);
|
||||||
virtual void ScrollText(int linesToMove);
|
virtual void ScrollText(int linesToMove);
|
||||||
void HorizontalScrollTo(int xPos);
|
void HorizontalScrollTo(int xPos);
|
||||||
|
void MoveCaretInsideView();
|
||||||
void EnsureCaretVisible(bool useMargin=true);
|
void EnsureCaretVisible(bool useMargin=true);
|
||||||
void ShowCaretAtCurrentPosition();
|
void ShowCaretAtCurrentPosition();
|
||||||
void DropCaret();
|
void DropCaret();
|
||||||
@@ -176,20 +194,23 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
|
|
||||||
void PaintSelMargin(Surface *surface, PRectangle &rc);
|
void PaintSelMargin(Surface *surface, PRectangle &rc);
|
||||||
void LayoutLine(int line, Surface *surface, ViewStyle &vstyle, LineLayout &ll);
|
void LayoutLine(int line, Surface *surface, ViewStyle &vstyle, LineLayout &ll);
|
||||||
void DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int xStart,
|
void DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVisible, int xStart,
|
||||||
PRectangle rcLine, LineLayout &ll);
|
PRectangle rcLine, LineLayout &ll);
|
||||||
void Paint(Surface *surfaceWindow, PRectangle rcArea);
|
void Paint(Surface *surfaceWindow, PRectangle rcArea);
|
||||||
long FormatRange(bool draw, FORMATRANGE *pfr);
|
long FormatRange(bool draw, RangeToFormat *pfr);
|
||||||
|
|
||||||
virtual void SetVerticalScrollPos() = 0;
|
virtual void SetVerticalScrollPos() = 0;
|
||||||
virtual void SetHorizontalScrollPos() = 0;
|
virtual void SetHorizontalScrollPos() = 0;
|
||||||
virtual bool ModifyScrollBars(int nMax, int nPage) = 0;
|
virtual bool ModifyScrollBars(int nMax, int nPage) = 0;
|
||||||
|
virtual void ReconfigureScrollBars();
|
||||||
void SetScrollBarsTo(PRectangle rsClient);
|
void SetScrollBarsTo(PRectangle rsClient);
|
||||||
void SetScrollBars();
|
void SetScrollBars();
|
||||||
|
|
||||||
virtual void AddChar(char ch);
|
void AddChar(char ch);
|
||||||
|
virtual void AddCharUTF(char *s, unsigned int len);
|
||||||
void ClearSelection();
|
void ClearSelection();
|
||||||
void ClearAll();
|
void ClearAll();
|
||||||
|
void ClearDocumentStyle();
|
||||||
void Cut();
|
void Cut();
|
||||||
void PasteRectangular(int pos, const char *ptr, int len);
|
void PasteRectangular(int pos, const char *ptr, int len);
|
||||||
virtual void Copy() = 0;
|
virtual void Copy() = 0;
|
||||||
@@ -205,8 +226,9 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
virtual void NotifyChange() = 0;
|
virtual void NotifyChange() = 0;
|
||||||
virtual void NotifyFocus(bool focus);
|
virtual void NotifyFocus(bool focus);
|
||||||
virtual void NotifyParent(SCNotification scn) = 0;
|
virtual void NotifyParent(SCNotification scn) = 0;
|
||||||
virtual void NotifyStyleNeeded(int endStyleNeeded);
|
virtual void NotifyStyleToNeeded(int endStyleNeeded);
|
||||||
void NotifyChar(char ch);
|
void NotifyChar(char ch);
|
||||||
|
void NotifyMove(int position);
|
||||||
void NotifySavePoint(bool isSavePoint);
|
void NotifySavePoint(bool isSavePoint);
|
||||||
void NotifyModifyAttempt();
|
void NotifyModifyAttempt();
|
||||||
virtual void NotifyDoubleClick(Point pt, bool shift);
|
virtual void NotifyDoubleClick(Point pt, bool shift);
|
||||||
@@ -218,24 +240,29 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
void NotifySavePoint(Document *document, void *userData, bool atSavePoint);
|
void NotifySavePoint(Document *document, void *userData, bool atSavePoint);
|
||||||
void NotifyModified(Document *document, DocModification mh, void *userData);
|
void NotifyModified(Document *document, DocModification mh, void *userData);
|
||||||
void NotifyDeleted(Document *document, void *userData);
|
void NotifyDeleted(Document *document, void *userData);
|
||||||
|
void NotifyStyleNeeded(Document *doc, void *userData, int endPos);
|
||||||
|
|
||||||
|
|
||||||
#ifdef MACRO_SUPPORT
|
#ifdef MACRO_SUPPORT
|
||||||
void NotifyMacroRecord(UINT iMessage, WPARAM wParam, LPARAM lParam);
|
void NotifyMacroRecord(unsigned int iMessage, unsigned long wParam, long lParam);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void PageMove(int direction, bool extend=false);
|
void PageMove(int direction, bool extend=false);
|
||||||
virtual int KeyCommand(UINT iMessage);
|
void ChangeCaseOfSelection(bool makeUpperCase);
|
||||||
|
void LineTranspose();
|
||||||
|
virtual void CancelModes();
|
||||||
|
virtual int KeyCommand(unsigned int iMessage);
|
||||||
virtual int KeyDefault(int /* key */, int /*modifiers*/);
|
virtual int KeyDefault(int /* key */, int /*modifiers*/);
|
||||||
int KeyDown(int key, bool shift, bool ctrl, bool alt);
|
int KeyDown(int key, bool shift, bool ctrl, bool alt);
|
||||||
|
|
||||||
bool GetWhitespaceVisible();
|
int GetWhitespaceVisible();
|
||||||
void SetWhitespaceVisible(bool view);
|
void SetWhitespaceVisible(int view);
|
||||||
|
|
||||||
void Indent(bool forwards);
|
void Indent(bool forwards);
|
||||||
|
|
||||||
long FindText(UINT iMessage,WPARAM wParam,LPARAM lParam);
|
long FindText(unsigned int iMessage, unsigned long wParam, long lParam);
|
||||||
void SearchAnchor();
|
void SearchAnchor();
|
||||||
long SearchText(UINT iMessage,WPARAM wParam,LPARAM lParam);
|
long SearchText(unsigned int iMessage, unsigned long wParam, long lParam);
|
||||||
void GoToLine(int lineNo);
|
void GoToLine(int lineNo);
|
||||||
|
|
||||||
char *CopyRange(int start, int end);
|
char *CopyRange(int start, int end);
|
||||||
@@ -269,11 +296,11 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
void ToggleContraction(int line);
|
void ToggleContraction(int line);
|
||||||
void EnsureLineVisible(int line);
|
void EnsureLineVisible(int line);
|
||||||
|
|
||||||
virtual LRESULT DefWndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) = 0;
|
virtual long DefWndProc(unsigned int iMessage, unsigned long wParam, long lParam) = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Public so scintilla_send_message can use it
|
// Public so scintilla_send_message can use it
|
||||||
virtual LRESULT WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam);
|
virtual long WndProc(unsigned int iMessage, unsigned long wParam, long lParam);
|
||||||
// Public so scintilla_set_id can use it
|
// Public so scintilla_set_id can use it
|
||||||
int ctrlID;
|
int ctrlID;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -37,6 +37,22 @@ void Indicator::Draw(Surface *surface, PRectangle &rc) {
|
|||||||
surface->MoveTo(x-3, ymid);
|
surface->MoveTo(x-3, ymid);
|
||||||
surface->LineTo(x-3, ymid+2);
|
surface->LineTo(x-3, ymid+2);
|
||||||
}
|
}
|
||||||
|
} else if (style == INDIC_DIAGONAL) {
|
||||||
|
int x = rc.left;
|
||||||
|
while (x < rc.right) {
|
||||||
|
surface->MoveTo(x, rc.top+2);
|
||||||
|
int endX = x+3;
|
||||||
|
int endY = rc.top - 1;
|
||||||
|
if (endX > rc.right) {
|
||||||
|
endY += endX - rc.right;
|
||||||
|
endX = rc.right;
|
||||||
|
}
|
||||||
|
surface->LineTo(endX, endY);
|
||||||
|
x += 4;
|
||||||
|
}
|
||||||
|
} else if (style == INDIC_STRIKE) {
|
||||||
|
surface->MoveTo(rc.left, rc.top - 4);
|
||||||
|
surface->LineTo(rc.right, rc.top - 4);
|
||||||
} else { // Either INDIC_PLAIN or unknown
|
} else { // Either INDIC_PLAIN or unknown
|
||||||
surface->MoveTo(rc.left, ymid);
|
surface->MoveTo(rc.left, ymid);
|
||||||
surface->LineTo(rc.right, ymid);
|
surface->LineTo(rc.right, ymid);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ void KeyMap::Clear() {
|
|||||||
alloc = 0;
|
alloc = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeyMap::AssignCmdKey(int key, int modifiers, UINT msg) {
|
void KeyMap::AssignCmdKey(int key, int modifiers, unsigned int msg) {
|
||||||
if ((len+1) >= alloc) {
|
if ((len+1) >= alloc) {
|
||||||
KeyToCommand *ktcNew = new KeyToCommand[alloc + 5];
|
KeyToCommand *ktcNew = new KeyToCommand[alloc + 5];
|
||||||
if (!ktcNew)
|
if (!ktcNew)
|
||||||
@@ -51,7 +51,7 @@ void KeyMap::AssignCmdKey(int key, int modifiers, UINT msg) {
|
|||||||
len++;
|
len++;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT KeyMap::Find(int key, int modifiers) {
|
unsigned int KeyMap::Find(int key, int modifiers) {
|
||||||
for (int i=0; i < len; i++) {
|
for (int i=0; i < len; i++) {
|
||||||
if ((key == kmap[i].key) && (modifiers == kmap[i].modifiers)) {
|
if ((key == kmap[i].key) && (modifiers == kmap[i].modifiers)) {
|
||||||
return kmap[i].msg;
|
return kmap[i].msg;
|
||||||
@@ -61,51 +61,61 @@ UINT KeyMap::Find(int key, int modifiers) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
KeyToCommand KeyMap::MapDefault[] = {
|
KeyToCommand KeyMap::MapDefault[] = {
|
||||||
VK_DOWN, SCI_NORM, SCI_LINEDOWN,
|
{SCK_DOWN, SCI_NORM, SCI_LINEDOWN},
|
||||||
VK_DOWN, SCI_SHIFT, SCI_LINEDOWNEXTEND,
|
{SCK_DOWN, SCI_SHIFT, SCI_LINEDOWNEXTEND},
|
||||||
VK_UP, SCI_NORM, SCI_LINEUP,
|
{SCK_DOWN, SCI_CTRL, SCI_LINESCROLLDOWN},
|
||||||
VK_UP, SCI_SHIFT, SCI_LINEUPEXTEND,
|
{SCK_UP, SCI_NORM, SCI_LINEUP},
|
||||||
VK_LEFT, SCI_NORM, SCI_CHARLEFT,
|
{SCK_UP, SCI_SHIFT, SCI_LINEUPEXTEND},
|
||||||
VK_LEFT, SCI_SHIFT, SCI_CHARLEFTEXTEND,
|
{SCK_UP, SCI_CTRL, SCI_LINESCROLLUP},
|
||||||
VK_LEFT, SCI_CTRL, SCI_WORDLEFT,
|
{SCK_LEFT, SCI_NORM, SCI_CHARLEFT},
|
||||||
VK_LEFT, SCI_CSHIFT, SCI_WORDLEFTEXTEND,
|
{SCK_LEFT, SCI_SHIFT, SCI_CHARLEFTEXTEND},
|
||||||
VK_RIGHT, SCI_NORM, SCI_CHARRIGHT,
|
{SCK_LEFT, SCI_CTRL, SCI_WORDLEFT},
|
||||||
VK_RIGHT, SCI_SHIFT, SCI_CHARRIGHTEXTEND,
|
{SCK_LEFT, SCI_CSHIFT, SCI_WORDLEFTEXTEND},
|
||||||
VK_RIGHT, SCI_CTRL, SCI_WORDRIGHT,
|
{SCK_RIGHT, SCI_NORM, SCI_CHARRIGHT},
|
||||||
VK_RIGHT, SCI_CSHIFT, SCI_WORDRIGHTEXTEND,
|
{SCK_RIGHT, SCI_SHIFT, SCI_CHARRIGHTEXTEND},
|
||||||
VK_HOME, SCI_NORM, SCI_VCHOME,
|
{SCK_RIGHT, SCI_CTRL, SCI_WORDRIGHT},
|
||||||
VK_HOME, SCI_SHIFT, SCI_VCHOMEEXTEND,
|
{SCK_RIGHT, SCI_CSHIFT, SCI_WORDRIGHTEXTEND},
|
||||||
VK_HOME, SCI_CTRL, SCI_DOCUMENTSTART,
|
{SCK_HOME, SCI_NORM, SCI_VCHOME},
|
||||||
VK_HOME, SCI_CSHIFT, SCI_DOCUMENTSTARTEXTEND,
|
{SCK_HOME, SCI_SHIFT, SCI_VCHOMEEXTEND},
|
||||||
VK_END, SCI_NORM, SCI_LINEEND,
|
{SCK_HOME, SCI_CTRL, SCI_DOCUMENTSTART},
|
||||||
VK_END, SCI_SHIFT, SCI_LINEENDEXTEND,
|
{SCK_HOME, SCI_CSHIFT, SCI_DOCUMENTSTARTEXTEND},
|
||||||
VK_END, SCI_CTRL, SCI_DOCUMENTEND,
|
{SCK_END, SCI_NORM, SCI_LINEEND},
|
||||||
VK_END, SCI_CSHIFT, SCI_DOCUMENTENDEXTEND,
|
{SCK_END, SCI_SHIFT, SCI_LINEENDEXTEND},
|
||||||
VK_PRIOR, SCI_NORM, SCI_PAGEUP,
|
{SCK_END, SCI_CTRL, SCI_DOCUMENTEND},
|
||||||
VK_PRIOR, SCI_SHIFT, SCI_PAGEUPEXTEND,
|
{SCK_END, SCI_CSHIFT, SCI_DOCUMENTENDEXTEND},
|
||||||
VK_NEXT, SCI_NORM, SCI_PAGEDOWN,
|
{SCK_PRIOR, SCI_NORM, SCI_PAGEUP},
|
||||||
VK_NEXT, SCI_SHIFT, SCI_PAGEDOWNEXTEND,
|
{SCK_PRIOR, SCI_SHIFT, SCI_PAGEUPEXTEND},
|
||||||
VK_DELETE, SCI_NORM, WM_CLEAR,
|
{SCK_NEXT, SCI_NORM, SCI_PAGEDOWN},
|
||||||
VK_DELETE, SCI_SHIFT, WM_CUT,
|
{SCK_NEXT, SCI_SHIFT, SCI_PAGEDOWNEXTEND},
|
||||||
VK_DELETE, SCI_CTRL, SCI_DELWORDRIGHT,
|
{SCK_DELETE, SCI_NORM, SCI_CLEAR},
|
||||||
VK_INSERT, SCI_NORM, SCI_EDITTOGGLEOVERTYPE,
|
{SCK_DELETE, SCI_SHIFT, SCI_CUT},
|
||||||
VK_INSERT, SCI_SHIFT, WM_PASTE,
|
{SCK_DELETE, SCI_CTRL, SCI_DELWORDRIGHT},
|
||||||
VK_INSERT, SCI_CTRL, WM_COPY,
|
{SCK_INSERT, SCI_NORM, SCI_EDITTOGGLEOVERTYPE},
|
||||||
VK_ESCAPE, SCI_NORM, SCI_CANCEL,
|
{SCK_INSERT, SCI_SHIFT, SCI_PASTE},
|
||||||
VK_BACK, SCI_NORM, SCI_DELETEBACK,
|
{SCK_INSERT, SCI_CTRL, SCI_COPY},
|
||||||
VK_BACK, SCI_CTRL, SCI_DELWORDLEFT,
|
{SCK_ESCAPE, SCI_NORM, SCI_CANCEL},
|
||||||
'Z', SCI_CTRL, WM_UNDO,
|
{SCK_BACK, SCI_NORM, SCI_DELETEBACK},
|
||||||
'Y', SCI_CTRL, SCI_REDO,
|
{SCK_BACK, SCI_SHIFT, SCI_DELETEBACK},
|
||||||
'X', SCI_CTRL, WM_CUT,
|
{SCK_BACK, SCI_CTRL, SCI_DELWORDLEFT},
|
||||||
'C', SCI_CTRL, WM_COPY,
|
{SCK_BACK, SCI_ALT, SCI_UNDO},
|
||||||
'V', SCI_CTRL, WM_PASTE,
|
{'Z', SCI_CTRL, SCI_UNDO},
|
||||||
'A', SCI_CTRL, SCI_SELECTALL,
|
{'Y', SCI_CTRL, SCI_REDO},
|
||||||
VK_TAB, SCI_NORM, SCI_TAB,
|
{'X', SCI_CTRL, SCI_CUT},
|
||||||
VK_TAB, SCI_SHIFT, SCI_BACKTAB,
|
{'C', SCI_CTRL, SCI_COPY},
|
||||||
VK_RETURN, SCI_NORM, SCI_NEWLINE,
|
{'V', SCI_CTRL, SCI_PASTE},
|
||||||
'L', SCI_CTRL, SCI_FORMFEED,
|
{'A', SCI_CTRL, SCI_SELECTALL},
|
||||||
VK_ADD, SCI_CTRL, SCI_ZOOMIN,
|
{SCK_TAB, SCI_NORM, SCI_TAB},
|
||||||
VK_SUBTRACT, SCI_CTRL, SCI_ZOOMOUT,
|
{SCK_TAB, SCI_SHIFT, SCI_BACKTAB},
|
||||||
0,0,0,
|
{SCK_RETURN, SCI_NORM, SCI_NEWLINE},
|
||||||
|
{SCK_ADD, SCI_CTRL, SCI_ZOOMIN},
|
||||||
|
{SCK_SUBTRACT, SCI_CTRL, SCI_ZOOMOUT},
|
||||||
|
{SCK_DIVIDE, SCI_CTRL, SCI_SETZOOM},
|
||||||
|
//'L', SCI_CTRL, SCI_FORMFEED,
|
||||||
|
{'L', SCI_CTRL, SCI_LINECUT},
|
||||||
|
{'L', SCI_CSHIFT, SCI_LINEDELETE},
|
||||||
|
{'T', SCI_CTRL, SCI_LINETRANSPOSE},
|
||||||
|
{'U', SCI_CTRL, SCI_LOWERCASE},
|
||||||
|
{'U', SCI_CSHIFT, SCI_UPPERCASE},
|
||||||
|
{0,0,0},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,16 +7,17 @@
|
|||||||
#define KEYTOCOMMAND_H
|
#define KEYTOCOMMAND_H
|
||||||
|
|
||||||
#define SCI_NORM 0
|
#define SCI_NORM 0
|
||||||
#define SCI_SHIFT SHIFT_PRESSED
|
#define SCI_SHIFT SCMOD_SHIFT
|
||||||
#define SCI_CTRL LEFT_CTRL_PRESSED
|
#define SCI_CTRL SCMOD_CTRL
|
||||||
#define SCI_ALT LEFT_ALT_PRESSED
|
#define SCI_ALT SCMOD_ALT
|
||||||
#define SCI_CSHIFT (SCI_CTRL | SCI_SHIFT)
|
#define SCI_CSHIFT (SCI_CTRL | SCI_SHIFT)
|
||||||
|
#define SCI_ASHIFT (SCI_ALT | SCI_SHIFT)
|
||||||
|
|
||||||
class KeyToCommand {
|
class KeyToCommand {
|
||||||
public:
|
public:
|
||||||
int key;
|
int key;
|
||||||
int modifiers;
|
int modifiers;
|
||||||
UINT msg;
|
unsigned int msg;
|
||||||
};
|
};
|
||||||
|
|
||||||
class KeyMap {
|
class KeyMap {
|
||||||
@@ -28,8 +29,8 @@ public:
|
|||||||
KeyMap();
|
KeyMap();
|
||||||
~KeyMap();
|
~KeyMap();
|
||||||
void Clear();
|
void Clear();
|
||||||
void AssignCmdKey(int key, int modifiers, UINT msg);
|
void AssignCmdKey(int key, int modifiers, unsigned int msg);
|
||||||
UINT Find(int key, int modifiers); // 0 returned on failure
|
unsigned int Find(int key, int modifiers); // 0 returned on failure
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
262
contrib/src/stc/scintilla/src/LexCPP.cxx
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
// SciTE - Scintilla based Text Editor
|
||||||
|
// LexCPP.cxx - lexer for C++, C, Java, and Javascript
|
||||||
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "Platform.h"
|
||||||
|
|
||||||
|
#include "PropSet.h"
|
||||||
|
#include "Accessor.h"
|
||||||
|
#include "KeyWords.h"
|
||||||
|
#include "Scintilla.h"
|
||||||
|
#include "SciLexer.h"
|
||||||
|
|
||||||
|
static bool classifyWordCpp(unsigned int start, unsigned int end, WordList &keywords, Accessor &styler) {
|
||||||
|
char s[100];
|
||||||
|
for (unsigned int i = 0; i < end - start + 1 && i < 30; i++) {
|
||||||
|
s[i] = styler[start + i];
|
||||||
|
s[i + 1] = '\0';
|
||||||
|
}
|
||||||
|
bool wordIsUUID = false;
|
||||||
|
char chAttr = SCE_C_IDENTIFIER;
|
||||||
|
if (isdigit(s[0]) || (s[0] == '.'))
|
||||||
|
chAttr = SCE_C_NUMBER;
|
||||||
|
else {
|
||||||
|
if (keywords.InList(s)) {
|
||||||
|
chAttr = SCE_C_WORD;
|
||||||
|
wordIsUUID = strcmp(s, "uuid") == 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
styler.ColourTo(end, chAttr);
|
||||||
|
return wordIsUUID;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, WordList *keywordlists[],
|
||||||
|
Accessor &styler) {
|
||||||
|
|
||||||
|
WordList &keywords = *keywordlists[0];
|
||||||
|
|
||||||
|
styler.StartAt(startPos);
|
||||||
|
|
||||||
|
bool fold = styler.GetPropertyInt("fold");
|
||||||
|
bool stylingWithinPreprocessor = styler.GetPropertyInt("styling.within.preprocessor");
|
||||||
|
int lineCurrent = styler.GetLine(startPos);
|
||||||
|
int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;
|
||||||
|
int levelCurrent = levelPrev;
|
||||||
|
|
||||||
|
int state = initStyle;
|
||||||
|
if (state == SCE_C_STRINGEOL) // Does not leak onto next line
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
char chPrev = ' ';
|
||||||
|
char chNext = styler[startPos];
|
||||||
|
unsigned int lengthDoc = startPos + length;
|
||||||
|
int visibleChars = 0;
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
bool lastWordWasUUID = false;
|
||||||
|
for (unsigned int i = startPos; i < lengthDoc; i++) {
|
||||||
|
char ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
|
||||||
|
if ((ch == '\r' && chNext != '\n') || (ch == '\n')) {
|
||||||
|
// Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix)
|
||||||
|
// Avoid triggering two times on Dos/Win
|
||||||
|
// End of line
|
||||||
|
if (state == SCE_C_STRINGEOL) {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
if (fold) {
|
||||||
|
int lev = levelPrev;
|
||||||
|
if (visibleChars == 0)
|
||||||
|
lev |= SC_FOLDLEVELWHITEFLAG;
|
||||||
|
if ((levelCurrent > levelPrev) && (visibleChars > 0))
|
||||||
|
lev |= SC_FOLDLEVELHEADERFLAG;
|
||||||
|
styler.SetLevel(lineCurrent, lev);
|
||||||
|
lineCurrent++;
|
||||||
|
levelPrev = levelCurrent;
|
||||||
|
}
|
||||||
|
visibleChars = 0;
|
||||||
|
}
|
||||||
|
if (!isspace(ch))
|
||||||
|
visibleChars++;
|
||||||
|
|
||||||
|
if (styler.IsLeadByte(ch)) {
|
||||||
|
chNext = styler.SafeGetCharAt(i + 2);
|
||||||
|
chPrev = ' ';
|
||||||
|
i += 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == SCE_C_DEFAULT) {
|
||||||
|
if (ch == '@' && chNext == '\"') {
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_C_VERBATIM;
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
} else if (iswordstart(ch) || (ch == '@')) {
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
if (lastWordWasUUID) {
|
||||||
|
state = SCE_C_UUID;
|
||||||
|
lastWordWasUUID = false;
|
||||||
|
} else {
|
||||||
|
state = SCE_C_IDENTIFIER;
|
||||||
|
}
|
||||||
|
} else if (ch == '/' && chNext == '*') {
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
if (styler.SafeGetCharAt(i + 2) == '*')
|
||||||
|
state = SCE_C_COMMENTDOC;
|
||||||
|
else
|
||||||
|
state = SCE_C_COMMENT;
|
||||||
|
} else if (ch == '/' && chNext == '/') {
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_C_COMMENTLINE;
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_C_STRING;
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_C_CHARACTER;
|
||||||
|
} else if (ch == '#' && visibleChars == 1) {
|
||||||
|
// Preprocessor commands are alone on their line
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_C_PREPROCESSOR;
|
||||||
|
// Skip whitespace between # and preprocessor word
|
||||||
|
do {
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
} while (isspace(ch) && (i < lengthDoc));
|
||||||
|
} else if (isoperator(ch)) {
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
styler.ColourTo(i, SCE_C_OPERATOR);
|
||||||
|
if ((ch == '{') || (ch == '}')) {
|
||||||
|
levelCurrent += (ch == '{') ? 1 : -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_IDENTIFIER) {
|
||||||
|
if (!iswordchar(ch)) {
|
||||||
|
lastWordWasUUID = classifyWordCpp(styler.GetStartSegment(), i - 1, keywords, styler);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
if (ch == '/' && chNext == '*') {
|
||||||
|
if (styler.SafeGetCharAt(i + 2) == '*')
|
||||||
|
state = SCE_C_COMMENTDOC;
|
||||||
|
else
|
||||||
|
state = SCE_C_COMMENT;
|
||||||
|
} else if (ch == '/' && chNext == '/') {
|
||||||
|
state = SCE_C_COMMENTLINE;
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
state = SCE_C_STRING;
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
state = SCE_C_CHARACTER;
|
||||||
|
} else if (isoperator(ch)) {
|
||||||
|
styler.ColourTo(i, SCE_C_OPERATOR);
|
||||||
|
if ((ch == '{') || (ch == '}')) {
|
||||||
|
levelCurrent += (ch == '{') ? 1 : -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (state == SCE_C_PREPROCESSOR) {
|
||||||
|
if (stylingWithinPreprocessor) {
|
||||||
|
if (isspace(ch)) {
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ((ch == '\r' || ch == '\n') && !(chPrev == '\\' || chPrev == '\r')) {
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_COMMENT) {
|
||||||
|
if (ch == '/' && chPrev == '*') {
|
||||||
|
if (((i > styler.GetStartSegment() + 2) || (
|
||||||
|
(initStyle == SCE_C_COMMENT) &&
|
||||||
|
(styler.GetStartSegment() == static_cast<unsigned int>(startPos))))) {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_COMMENTDOC) {
|
||||||
|
if (ch == '/' && chPrev == '*') {
|
||||||
|
if (((i > styler.GetStartSegment() + 2) || (
|
||||||
|
(initStyle == SCE_C_COMMENTDOC) &&
|
||||||
|
(styler.GetStartSegment() == static_cast<unsigned int>(startPos))))) {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_COMMENTLINE) {
|
||||||
|
if (ch == '\r' || ch == '\n') {
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_STRING) {
|
||||||
|
if (ch == '\\') {
|
||||||
|
if (chNext == '\"' || chNext == '\'' || chNext == '\\') {
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
} else if (chNext == '\r' || chNext == '\n') {
|
||||||
|
styler.ColourTo(i-1, SCE_C_STRINGEOL);
|
||||||
|
state = SCE_C_STRINGEOL;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_CHARACTER) {
|
||||||
|
if ((ch == '\r' || ch == '\n') && (chPrev != '\\')) {
|
||||||
|
styler.ColourTo(i-1, SCE_C_STRINGEOL);
|
||||||
|
state = SCE_C_STRINGEOL;
|
||||||
|
} else if (ch == '\\') {
|
||||||
|
if (chNext == '\"' || chNext == '\'' || chNext == '\\') {
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_VERBATIM) {
|
||||||
|
if (ch == '\"') {
|
||||||
|
if (chNext == '\"') {
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_UUID) {
|
||||||
|
if (ch == '\r' || ch == '\n' || ch == ')') {
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
if (ch == ')')
|
||||||
|
styler.ColourTo(i, SCE_C_OPERATOR);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chPrev = ch;
|
||||||
|
}
|
||||||
|
styler.ColourTo(lengthDoc - 1, state);
|
||||||
|
|
||||||
|
// Fill in the real level of the next line, keeping the current flags as they will be filled in later
|
||||||
|
if (fold) {
|
||||||
|
int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;
|
||||||
|
//styler.SetLevel(lineCurrent, levelCurrent | flagsNext);
|
||||||
|
styler.SetLevel(lineCurrent, levelPrev | flagsNext);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LexerModule lmCPP(SCLEX_CPP, ColouriseCppDoc);
|
||||||
1151
contrib/src/stc/scintilla/src/LexHTML.cxx
Normal file
298
contrib/src/stc/scintilla/src/LexLua.cxx
Normal file
@@ -0,0 +1,298 @@
|
|||||||
|
// LexLua.cxx - lexer for Lua language
|
||||||
|
// Written by Paul Winwood
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
#include "Platform.h"
|
||||||
|
|
||||||
|
#include "PropSet.h"
|
||||||
|
#include "Accessor.h"
|
||||||
|
#include "KeyWords.h"
|
||||||
|
#include "Scintilla.h"
|
||||||
|
#include "SciLexer.h"
|
||||||
|
|
||||||
|
static void classifyWordLua(unsigned int start, unsigned int end, WordList &keywords, Accessor &styler)
|
||||||
|
{
|
||||||
|
char s[100];
|
||||||
|
bool wordIsNumber = isdigit(styler[start]) || (styler[start] == '.');
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < end - start + 1 && i < 30; i++)
|
||||||
|
{
|
||||||
|
s[i] = styler[start + i];
|
||||||
|
s[i + 1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
char chAttr = SCE_LUA_IDENTIFIER;
|
||||||
|
|
||||||
|
if (wordIsNumber)
|
||||||
|
chAttr = SCE_LUA_NUMBER;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (keywords.InList(s))
|
||||||
|
{
|
||||||
|
chAttr = SCE_LUA_WORD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
styler.ColourTo(end, chAttr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseLuaDoc(unsigned int startPos,
|
||||||
|
int length,
|
||||||
|
int initStyle,
|
||||||
|
WordList *keywordlists[],
|
||||||
|
Accessor &styler)
|
||||||
|
{
|
||||||
|
|
||||||
|
WordList &keywords = *keywordlists[0];
|
||||||
|
|
||||||
|
styler.StartAt(startPos);
|
||||||
|
styler.GetLine(startPos);
|
||||||
|
|
||||||
|
int state = initStyle;
|
||||||
|
char chPrev = ' ';
|
||||||
|
char chNext = styler[startPos];
|
||||||
|
unsigned int lengthDoc = startPos + length;
|
||||||
|
bool firstChar = true;
|
||||||
|
int literalString = 0;
|
||||||
|
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
for (unsigned int i = startPos; i <= lengthDoc; i++)
|
||||||
|
{
|
||||||
|
char ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
|
||||||
|
if (styler.IsLeadByte(ch))
|
||||||
|
{
|
||||||
|
chNext = styler.SafeGetCharAt(i + 2);
|
||||||
|
chPrev = ' ';
|
||||||
|
i += 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == SCE_LUA_STRINGEOL)
|
||||||
|
{
|
||||||
|
if (ch != '\r' && ch != '\n')
|
||||||
|
{
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_LUA_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == SCE_LUA_LITERALSTRING && ch == '[' && chNext == '[')
|
||||||
|
{
|
||||||
|
literalString++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (state == SCE_LUA_DEFAULT)
|
||||||
|
{
|
||||||
|
if (ch == '-' && chNext == '-')
|
||||||
|
{
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_LUA_COMMENTLINE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '[' && chNext == '[')
|
||||||
|
{
|
||||||
|
state = SCE_LUA_LITERALSTRING;
|
||||||
|
literalString = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (iswordstart(ch))
|
||||||
|
{
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_LUA_WORD;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '\"')
|
||||||
|
{
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_LUA_STRING;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '\'')
|
||||||
|
{
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_LUA_CHARACTER;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '$' && firstChar)
|
||||||
|
{
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_LUA_PREPROCESSOR;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (isoperator(ch))
|
||||||
|
{
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
styler.ColourTo(i, SCE_LUA_OPERATOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (state == SCE_LUA_WORD)
|
||||||
|
{
|
||||||
|
if (!iswordchar(ch))
|
||||||
|
{
|
||||||
|
classifyWordLua(styler.GetStartSegment(), i - 1, keywords, styler);
|
||||||
|
state = SCE_LUA_DEFAULT;
|
||||||
|
if (ch == '[' && chNext == '[')
|
||||||
|
{
|
||||||
|
literalString = 1;
|
||||||
|
state = SCE_LUA_LITERALSTRING;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '-' && chNext == '-')
|
||||||
|
{
|
||||||
|
state = SCE_LUA_COMMENTLINE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '\"')
|
||||||
|
{
|
||||||
|
state = SCE_LUA_STRING;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '\'')
|
||||||
|
{
|
||||||
|
state = SCE_LUA_CHARACTER;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '$' && firstChar)
|
||||||
|
{
|
||||||
|
state = SCE_LUA_PREPROCESSOR;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (isoperator(ch))
|
||||||
|
{
|
||||||
|
styler.ColourTo(i, SCE_LUA_OPERATOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (state == SCE_LUA_LITERALSTRING)
|
||||||
|
{
|
||||||
|
if (ch == ']' && (chPrev == ']') && (--literalString == 0))
|
||||||
|
{
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_LUA_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (state == SCE_LUA_PREPROCESSOR)
|
||||||
|
{
|
||||||
|
if ((ch == '\r' || ch == '\n') && (chPrev != '\\'))
|
||||||
|
{
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_LUA_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (state == SCE_LUA_COMMENTLINE)
|
||||||
|
{
|
||||||
|
if (ch == '\r' || ch == '\n')
|
||||||
|
{
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_LUA_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (state == SCE_LUA_STRING)
|
||||||
|
{
|
||||||
|
if ((ch == '\r' || ch == '\n') && (chPrev != '\\'))
|
||||||
|
{
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_LUA_STRINGEOL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '\\')
|
||||||
|
{
|
||||||
|
if (chNext == '\"' || chNext == '\\')
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '\"')
|
||||||
|
{
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_LUA_DEFAULT;
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (state == SCE_LUA_CHARACTER)
|
||||||
|
{
|
||||||
|
if ((ch == '\r' || ch == '\n') && (chPrev != '\\'))
|
||||||
|
{
|
||||||
|
styler.ColourTo(i-1, state);
|
||||||
|
state = SCE_LUA_STRINGEOL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '\\')
|
||||||
|
{
|
||||||
|
if (chNext == '\'' || chNext == '\\')
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '\'')
|
||||||
|
{
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_LUA_DEFAULT;
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == SCE_LUA_DEFAULT)
|
||||||
|
{
|
||||||
|
if (ch == '-' && chNext == '-')
|
||||||
|
{
|
||||||
|
state = SCE_LUA_COMMENTLINE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '\"')
|
||||||
|
{
|
||||||
|
state = SCE_LUA_STRING;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '\'')
|
||||||
|
{
|
||||||
|
state = SCE_LUA_CHARACTER;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (ch == '$' && firstChar)
|
||||||
|
{
|
||||||
|
state = SCE_LUA_PREPROCESSOR;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (iswordstart(ch))
|
||||||
|
{
|
||||||
|
state = SCE_LUA_WORD;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (isoperator(ch))
|
||||||
|
{
|
||||||
|
styler.ColourTo(i, SCE_LUA_OPERATOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chPrev = ch;
|
||||||
|
firstChar = (ch == '\r' || ch == '\n');
|
||||||
|
}
|
||||||
|
styler.ColourTo(lengthDoc - 1, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
LexerModule lmLua(SCLEX_LUA, ColouriseLuaDoc);
|
||||||
351
contrib/src/stc/scintilla/src/LexOthers.cxx
Normal file
@@ -0,0 +1,351 @@
|
|||||||
|
// SciTE - Scintilla based Text Editor
|
||||||
|
// LexOthers.cxx - lexers for properties files, batch files, make files and error lists
|
||||||
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "Platform.h"
|
||||||
|
|
||||||
|
#include "PropSet.h"
|
||||||
|
#include "Accessor.h"
|
||||||
|
#include "KeyWords.h"
|
||||||
|
#include "Scintilla.h"
|
||||||
|
#include "SciLexer.h"
|
||||||
|
|
||||||
|
static void ColouriseBatchLine(char *lineBuffer, int endLine, Accessor &styler) {
|
||||||
|
if (0 == strncmp(lineBuffer, "REM", 3)) {
|
||||||
|
styler.ColourTo(endLine, 1);
|
||||||
|
} else if (0 == strncmp(lineBuffer, "rem", 3)) {
|
||||||
|
styler.ColourTo(endLine, 1);
|
||||||
|
} else if (0 == strncmp(lineBuffer, "SET", 3)) {
|
||||||
|
styler.ColourTo(endLine, 2);
|
||||||
|
} else if (0 == strncmp(lineBuffer, "set", 3)) {
|
||||||
|
styler.ColourTo(endLine, 2);
|
||||||
|
} else if (lineBuffer[0] == ':') {
|
||||||
|
styler.ColourTo(endLine, 3);
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(endLine, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseBatchDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler) {
|
||||||
|
char lineBuffer[1024];
|
||||||
|
styler.StartAt(startPos);
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
unsigned int linePos = 0;
|
||||||
|
for (unsigned int i = startPos; i < startPos + length; i++) {
|
||||||
|
lineBuffer[linePos++] = styler[i];
|
||||||
|
if (styler[i] == '\r' || styler[i] == '\n' || (linePos >= sizeof(lineBuffer) - 1)) {
|
||||||
|
ColouriseBatchLine(lineBuffer, i, styler);
|
||||||
|
linePos = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (linePos > 0)
|
||||||
|
ColouriseBatchLine(lineBuffer, startPos + length, styler);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseDiffLine(char *lineBuffer, int endLine, Accessor &styler) {
|
||||||
|
// It is needed to remember the current state to recognize starting
|
||||||
|
// comment lines before the first "diff " or "--- ". If a real
|
||||||
|
// difference starts then each line starting with ' ' is a whitespace
|
||||||
|
// otherwise it is considered a comment (Only in..., Binary file...)
|
||||||
|
if (0 == strncmp(lineBuffer, "diff ", 3)) {
|
||||||
|
styler.ColourTo(endLine, 2);
|
||||||
|
} else if (0 == strncmp(lineBuffer, "--- ", 3)) {
|
||||||
|
styler.ColourTo(endLine, 3);
|
||||||
|
} else if (0 == strncmp(lineBuffer, "+++ ", 3)) {
|
||||||
|
styler.ColourTo(endLine, 3);
|
||||||
|
} else if (lineBuffer[0] == '@') {
|
||||||
|
styler.ColourTo(endLine, 4);
|
||||||
|
} else if (lineBuffer[0] == '-') {
|
||||||
|
styler.ColourTo(endLine, 5);
|
||||||
|
} else if (lineBuffer[0] == '+') {
|
||||||
|
styler.ColourTo(endLine, 6);
|
||||||
|
} else if (lineBuffer[0] != ' ') {
|
||||||
|
styler.ColourTo(endLine, 1);
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(endLine, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseDiffDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler) {
|
||||||
|
char lineBuffer[1024];
|
||||||
|
styler.StartAt(startPos);
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
unsigned int linePos = 0;
|
||||||
|
for (unsigned int i = startPos; i < startPos + length; i++) {
|
||||||
|
lineBuffer[linePos++] = styler[i];
|
||||||
|
if (styler[i] == '\r' || styler[i] == '\n' || (linePos >= sizeof(lineBuffer) - 1)) {
|
||||||
|
ColouriseDiffLine(lineBuffer, i, styler);
|
||||||
|
linePos = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (linePos > 0)
|
||||||
|
ColouriseDiffLine(lineBuffer, startPos + length, styler);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColourisePropsLine(char *lineBuffer, int lengthLine, int startLine, int endPos, Accessor &styler) {
|
||||||
|
int i = 0;
|
||||||
|
while (isspace(lineBuffer[i]) && (i < lengthLine)) // Skip initial spaces
|
||||||
|
i++;
|
||||||
|
if (lineBuffer[i] == '#' || lineBuffer[i] == '!' || lineBuffer[i] == ';') {
|
||||||
|
styler.ColourTo(endPos, 1);
|
||||||
|
} else if (lineBuffer[i] == '[') {
|
||||||
|
styler.ColourTo(endPos, 2);
|
||||||
|
} else if (lineBuffer[i] == '@') {
|
||||||
|
styler.ColourTo(startLine+i, 4);
|
||||||
|
if (lineBuffer[++i] == '=')
|
||||||
|
styler.ColourTo(startLine+i, 3);
|
||||||
|
styler.ColourTo(endPos, 0);
|
||||||
|
} else {
|
||||||
|
while (lineBuffer[i] != '=' && (i < lengthLine)) // Search the '=' character
|
||||||
|
i++;
|
||||||
|
if (lineBuffer[i] == '=') {
|
||||||
|
styler.ColourTo(startLine+i-1, 0);
|
||||||
|
styler.ColourTo(startLine+i, 3);
|
||||||
|
styler.ColourTo(endPos, 0);
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(endPos, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColourisePropsDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler) {
|
||||||
|
char lineBuffer[1024];
|
||||||
|
styler.StartAt(startPos);
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
unsigned int linePos = 0;
|
||||||
|
int startLine = startPos;
|
||||||
|
for (unsigned int i = startPos; i <= startPos + length; i++) {
|
||||||
|
lineBuffer[linePos++] = styler[i];
|
||||||
|
if ((styler[i] == '\r' && styler.SafeGetCharAt(i+1) != '\n') ||
|
||||||
|
styler[i] == '\n' ||
|
||||||
|
(linePos >= sizeof(lineBuffer) - 1)) {
|
||||||
|
lineBuffer[linePos] = '\0';
|
||||||
|
ColourisePropsLine(lineBuffer, linePos, startLine, i, styler);
|
||||||
|
linePos = 0;
|
||||||
|
startLine = i+1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (linePos > 0)
|
||||||
|
ColourisePropsLine(lineBuffer, linePos, startLine, startPos + length, styler);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseMakeLine(char *lineBuffer, int lengthLine, int endPos, Accessor &styler) {
|
||||||
|
int i = 0;
|
||||||
|
while (isspace(lineBuffer[i]) && (i < lengthLine))
|
||||||
|
i++;
|
||||||
|
if (lineBuffer[i] == '#' || lineBuffer[i] == '!') {
|
||||||
|
styler.ColourTo(endPos, 1);
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(endPos, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseMakeDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler) {
|
||||||
|
char lineBuffer[1024];
|
||||||
|
styler.StartAt(startPos);
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
unsigned int linePos = 0;
|
||||||
|
for (unsigned int i = startPos; i <= startPos + length; i++) {
|
||||||
|
lineBuffer[linePos++] = styler[i];
|
||||||
|
if (styler[i] == '\r' || styler[i] == '\n' || (linePos >= sizeof(lineBuffer) - 1)) {
|
||||||
|
ColouriseMakeLine(lineBuffer, linePos, i, styler);
|
||||||
|
linePos = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (linePos > 0)
|
||||||
|
ColouriseMakeLine(lineBuffer, linePos, startPos + length, styler);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseErrorListLine(char *lineBuffer, int lengthLine, int endPos, Accessor &styler) {
|
||||||
|
if (lineBuffer[0] == '>') {
|
||||||
|
// Command or return status
|
||||||
|
styler.ColourTo(endPos, SCE_ERR_CMD);
|
||||||
|
} else if (strstr(lineBuffer, "File \"") && strstr(lineBuffer, ", line ")) {
|
||||||
|
styler.ColourTo(endPos, SCE_ERR_PYTHON);
|
||||||
|
} else if (0 == strncmp(lineBuffer, "Error ", strlen("Error "))) {
|
||||||
|
// Borland error message
|
||||||
|
styler.ColourTo(endPos, SCE_ERR_BORLAND);
|
||||||
|
} else if (0 == strncmp(lineBuffer, "Warning ", strlen("Warning "))) {
|
||||||
|
// Borland warning message
|
||||||
|
styler.ColourTo(endPos, SCE_ERR_BORLAND);
|
||||||
|
} else if (strstr(lineBuffer, " at " ) &&
|
||||||
|
strstr(lineBuffer, " at " ) < lineBuffer+lengthLine &&
|
||||||
|
strstr(lineBuffer, " line ") &&
|
||||||
|
strstr(lineBuffer, " line ") < lineBuffer+lengthLine) {
|
||||||
|
// perl error message
|
||||||
|
styler.ColourTo(endPos, SCE_ERR_PERL);
|
||||||
|
} else {
|
||||||
|
// Look for <filename>:<line>:message
|
||||||
|
// Look for <filename>(line)message
|
||||||
|
// Look for <filename>(line,pos)message
|
||||||
|
int state = 0;
|
||||||
|
for (int i = 0; i < lengthLine; i++) {
|
||||||
|
if (state == 0 && lineBuffer[i] == ':' && isdigit(lineBuffer[i + 1])) {
|
||||||
|
state = 1;
|
||||||
|
} else if (state == 0 && lineBuffer[i] == '(') {
|
||||||
|
state = 10;
|
||||||
|
} else if (state == 1 && isdigit(lineBuffer[i])) {
|
||||||
|
state = 2;
|
||||||
|
} else if (state == 2 && lineBuffer[i] == ':') {
|
||||||
|
state = 3;
|
||||||
|
break;
|
||||||
|
} else if (state == 2 && !isdigit(lineBuffer[i])) {
|
||||||
|
state = 99;
|
||||||
|
} else if (state == 10 && isdigit(lineBuffer[i])) {
|
||||||
|
state = 11;
|
||||||
|
} else if (state == 11 && lineBuffer[i] == ',') {
|
||||||
|
state = 14;
|
||||||
|
} else if (state == 11 && lineBuffer[i] == ')') {
|
||||||
|
state = 12;
|
||||||
|
} else if (state == 12 && lineBuffer[i] == ':') {
|
||||||
|
state = 13;
|
||||||
|
} else if (state == 14 && lineBuffer[i] == ')') {
|
||||||
|
state = 15;
|
||||||
|
break;
|
||||||
|
} else if (((state == 11) || (state == 14)) && !((lineBuffer[i] == ' ') || isdigit(lineBuffer[i]))) {
|
||||||
|
state = 99;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (state == 3) {
|
||||||
|
styler.ColourTo(endPos, SCE_ERR_GCC);
|
||||||
|
} else if ((state == 13) || (state == 14) || (state == 15)) {
|
||||||
|
styler.ColourTo(endPos, SCE_ERR_MS);
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(endPos, SCE_ERR_DEFAULT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseErrorListDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler) {
|
||||||
|
char lineBuffer[1024];
|
||||||
|
styler.StartAt(startPos);
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
unsigned int linePos = 0;
|
||||||
|
for (unsigned int i = startPos; i <= startPos + length; i++) {
|
||||||
|
lineBuffer[linePos++] = styler[i];
|
||||||
|
if (styler[i] == '\r' || styler[i] == '\n' || (linePos >= sizeof(lineBuffer) - 1)) {
|
||||||
|
ColouriseErrorListLine(lineBuffer, linePos, i, styler);
|
||||||
|
linePos = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (linePos > 0)
|
||||||
|
ColouriseErrorListLine(lineBuffer, linePos, startPos + length, styler);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int isSpecial(char s) {
|
||||||
|
|
||||||
|
return (s == '\\') || (s == ',') || (s == ';') || (s == '\'') || (s == ' ') ||
|
||||||
|
(s == '\"') || (s == '`') || (s == '^') || (s == '~');
|
||||||
|
}
|
||||||
|
|
||||||
|
static int isTag(int start, Accessor &styler) {
|
||||||
|
|
||||||
|
char s[6];
|
||||||
|
unsigned int i = 0, e=1;
|
||||||
|
while (i < 5 && e) {
|
||||||
|
s[i] = styler[start + i];
|
||||||
|
i++;
|
||||||
|
e = styler[start + i] != '{';
|
||||||
|
}
|
||||||
|
s[i] = '\0';
|
||||||
|
return (strcmp(s, "begin") == 0) || (strcmp(s, "end") == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseLatexDoc(unsigned int startPos, int length, int initStyle,
|
||||||
|
WordList *[], Accessor &styler) {
|
||||||
|
|
||||||
|
styler.StartAt(startPos);
|
||||||
|
|
||||||
|
int state = initStyle;
|
||||||
|
char chNext = styler[startPos];
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
int lengthDoc = startPos + length;
|
||||||
|
|
||||||
|
for (int i = startPos; i < lengthDoc; i++) {
|
||||||
|
char ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
|
||||||
|
if (styler.IsLeadByte(ch)) {
|
||||||
|
chNext = styler.SafeGetCharAt(i + 2);
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
switch(state) {
|
||||||
|
case SCE_L_DEFAULT :
|
||||||
|
switch(ch) {
|
||||||
|
case '\\' :
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
if (isSpecial(styler[i + 1])) {
|
||||||
|
styler.ColourTo(i + 1, SCE_L_COMMAND);
|
||||||
|
i++;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (isTag(i+1, styler))
|
||||||
|
state = SCE_L_TAG;
|
||||||
|
else
|
||||||
|
state = SCE_L_COMMAND;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '$' :
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_L_MATH;
|
||||||
|
if (chNext == '$') {
|
||||||
|
i++;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '%' :
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_L_COMMENT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SCE_L_COMMAND :
|
||||||
|
if (chNext == '[' || chNext == '{' || chNext == '}' ||
|
||||||
|
chNext == ' ' || chNext == '\r' || chNext == '\n') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_L_DEFAULT;
|
||||||
|
i++;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SCE_L_TAG :
|
||||||
|
if (ch == '}') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_L_DEFAULT;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SCE_L_MATH :
|
||||||
|
if (ch == '$') {
|
||||||
|
if (chNext == '$') {
|
||||||
|
i++;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_L_DEFAULT;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SCE_L_COMMENT :
|
||||||
|
if (ch == '\r' || ch == '\n') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_L_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
styler.ColourTo(lengthDoc, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
LexerModule lmBatch(SCLEX_BATCH, ColouriseBatchDoc);
|
||||||
|
LexerModule lmDiff(SCLEX_DIFF, ColouriseDiffDoc);
|
||||||
|
LexerModule lmProps(SCLEX_PROPERTIES, ColourisePropsDoc);
|
||||||
|
LexerModule lmMake(SCLEX_MAKEFILE, ColouriseMakeDoc);
|
||||||
|
LexerModule lmErrorList(SCLEX_ERRORLIST, ColouriseErrorListDoc);
|
||||||
|
LexerModule lmLatex(SCLEX_LATEX, ColouriseLatexDoc);
|
||||||
508
contrib/src/stc/scintilla/src/LexPerl.cxx
Normal file
@@ -0,0 +1,508 @@
|
|||||||
|
// SciTE - Scintilla based Text Editor
|
||||||
|
// LexPerl.cxx - lexer for subset of Perl
|
||||||
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "Platform.h"
|
||||||
|
|
||||||
|
#include "PropSet.h"
|
||||||
|
#include "Accessor.h"
|
||||||
|
#include "KeyWords.h"
|
||||||
|
#include "Scintilla.h"
|
||||||
|
#include "SciLexer.h"
|
||||||
|
|
||||||
|
inline bool isPerlOperator(char ch) {
|
||||||
|
if (isalnum(ch))
|
||||||
|
return false;
|
||||||
|
// '.' left out as it is used to make up numbers
|
||||||
|
if (ch == '%' || ch == '^' || ch == '&' || ch == '*' || ch == '\\' ||
|
||||||
|
ch == '(' || ch == ')' || ch == '-' || ch == '+' ||
|
||||||
|
ch == '=' || ch == '|' || ch == '{' || ch == '}' ||
|
||||||
|
ch == '[' || ch == ']' || ch == ':' || ch == ';' ||
|
||||||
|
ch == '<' || ch == '>' || ch == ',' || ch == '/' ||
|
||||||
|
ch == '?' || ch == '!' || ch == '.' || ch == '~')
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int classifyWordPerl(unsigned int start, unsigned int end, WordList &keywords, Accessor &styler) {
|
||||||
|
char s[100];
|
||||||
|
bool wordIsNumber = isdigit(styler[start]) || (styler[start] == '.');
|
||||||
|
for (unsigned int i = 0; i < end - start + 1 && i < 30; i++) {
|
||||||
|
s[i] = styler[start + i];
|
||||||
|
s[i + 1] = '\0';
|
||||||
|
}
|
||||||
|
char chAttr = SCE_PL_IDENTIFIER;
|
||||||
|
if (wordIsNumber)
|
||||||
|
chAttr = SCE_PL_NUMBER;
|
||||||
|
else {
|
||||||
|
if (keywords.InList(s))
|
||||||
|
chAttr = SCE_PL_WORD;
|
||||||
|
}
|
||||||
|
styler.ColourTo(end, chAttr);
|
||||||
|
return chAttr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool isEndVar(char ch) {
|
||||||
|
return !isalnum(ch) && ch != '#' && ch != '$' &&
|
||||||
|
ch != '_' && ch != '\'';
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool isMatch(Accessor &styler, int lengthDoc, int pos, const char *val) {
|
||||||
|
if ((pos + static_cast<int>(strlen(val))) >= lengthDoc) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
while (*val) {
|
||||||
|
if (*val != styler[pos++]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
val++;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char opposite(char ch) {
|
||||||
|
if (ch == '(')
|
||||||
|
return ')';
|
||||||
|
if (ch == '[')
|
||||||
|
return ']';
|
||||||
|
if (ch == '{')
|
||||||
|
return '}';
|
||||||
|
if (ch == '<')
|
||||||
|
return '>';
|
||||||
|
return ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColourisePerlDoc(unsigned int startPos, int length, int initStyle,
|
||||||
|
WordList *keywordlists[], Accessor &styler) {
|
||||||
|
|
||||||
|
// Lexer for perl often has to backtrack to start of current style to determine
|
||||||
|
// which characters are being used as quotes, how deeply nested is the
|
||||||
|
// start position and what the termination string is for here documents
|
||||||
|
|
||||||
|
WordList &keywords = *keywordlists[0];
|
||||||
|
|
||||||
|
char sooked[100];
|
||||||
|
int quotes = 0;
|
||||||
|
char quoteDown = 'd';
|
||||||
|
char quoteUp = 'd';
|
||||||
|
int quoteRep = 1;
|
||||||
|
int sookedpos = 0;
|
||||||
|
bool preferRE = true;
|
||||||
|
sooked[sookedpos] = '\0';
|
||||||
|
int state = initStyle;
|
||||||
|
int lengthDoc = startPos + length;
|
||||||
|
// If in a long distance lexical state, seek to the beginning to find quote characters
|
||||||
|
if (state == SCE_PL_HERE || state == SCE_PL_REGEX ||
|
||||||
|
state == SCE_PL_REGSUBST || state == SCE_PL_LONGQUOTE) {
|
||||||
|
while ((startPos > 1) && (styler.StyleAt(startPos - 1) == state)) {
|
||||||
|
startPos--;
|
||||||
|
}
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
}
|
||||||
|
styler.StartAt(startPos);
|
||||||
|
char chPrev = styler.SafeGetCharAt(startPos - 1);
|
||||||
|
char chNext = styler[startPos];
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
for (int i = startPos; i < lengthDoc; i++) {
|
||||||
|
char ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
char chNext2 = styler.SafeGetCharAt(i + 2);
|
||||||
|
|
||||||
|
if (styler.IsLeadByte(ch)) {
|
||||||
|
chNext = styler.SafeGetCharAt(i + 2);
|
||||||
|
chPrev = ' ';
|
||||||
|
i += 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == SCE_PL_DEFAULT) {
|
||||||
|
if (iswordstart(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
if (ch == 's' && !isalnum(chNext)) {
|
||||||
|
state = SCE_PL_REGSUBST;
|
||||||
|
quotes = 0;
|
||||||
|
quoteUp = '\0';
|
||||||
|
quoteDown = '\0';
|
||||||
|
quoteRep = 2;
|
||||||
|
} else if (ch == 'm' && !isalnum(chNext)) {
|
||||||
|
state = SCE_PL_REGEX;
|
||||||
|
quotes = 0;
|
||||||
|
quoteUp = '\0';
|
||||||
|
quoteDown = '\0';
|
||||||
|
quoteRep = 1;
|
||||||
|
} else if (ch == 't' && chNext == 'r' && !isalnum(chNext2)) {
|
||||||
|
state = SCE_PL_REGSUBST;
|
||||||
|
quotes = 0;
|
||||||
|
quoteUp = '\0';
|
||||||
|
quoteDown = '\0';
|
||||||
|
quoteRep = 2;
|
||||||
|
i++;
|
||||||
|
chNext = chNext2;
|
||||||
|
} else if (ch == 'q' && (chNext == 'q' || chNext == 'r' || chNext == 'w' || chNext == 'x') && !isalnum(chNext2)) {
|
||||||
|
state = SCE_PL_LONGQUOTE;
|
||||||
|
i++;
|
||||||
|
chNext = chNext2;
|
||||||
|
quotes = 0;
|
||||||
|
quoteUp = '\0';
|
||||||
|
quoteDown = '\0';
|
||||||
|
quoteRep = 1;
|
||||||
|
} else {
|
||||||
|
state = SCE_PL_WORD;
|
||||||
|
preferRE = false;
|
||||||
|
}
|
||||||
|
} else if (ch == '#') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_COMMENTLINE;
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_STRING;
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
if (chPrev == '&') {
|
||||||
|
// Archaic call
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_CHARACTER;
|
||||||
|
}
|
||||||
|
} else if (ch == '`') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_BACKTICKS;
|
||||||
|
} else if (ch == '$') {
|
||||||
|
preferRE = false;
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
if (isalnum(chNext) || chNext == '#' || chNext == '$' || chNext == '_') {
|
||||||
|
state = SCE_PL_SCALAR;
|
||||||
|
} else if (chNext != '{' && chNext != '[') {
|
||||||
|
styler.ColourTo(i, SCE_PL_SCALAR);
|
||||||
|
i++;
|
||||||
|
ch = ' ';
|
||||||
|
chNext = ' ';
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(i, SCE_PL_SCALAR);
|
||||||
|
}
|
||||||
|
} else if (ch == '@') {
|
||||||
|
preferRE = false;
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
if (isalpha(chNext) || chNext == '#' || chNext == '$' || chNext == '_') {
|
||||||
|
state = SCE_PL_ARRAY;
|
||||||
|
} else if (chNext != '{' && chNext != '[') {
|
||||||
|
styler.ColourTo(i, SCE_PL_ARRAY);
|
||||||
|
i++;
|
||||||
|
ch = ' ';
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(i, SCE_PL_ARRAY);
|
||||||
|
}
|
||||||
|
} else if (ch == '%') {
|
||||||
|
preferRE = false;
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
if (isalpha(chNext) || chNext == '#' || chNext == '$' || chNext == '_') {
|
||||||
|
state = SCE_PL_HASH;
|
||||||
|
} else if (chNext != '{' && chNext != '[') {
|
||||||
|
styler.ColourTo(i, SCE_PL_HASH);
|
||||||
|
i++;
|
||||||
|
ch = ' ';
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(i, SCE_PL_HASH);
|
||||||
|
}
|
||||||
|
} else if (ch == '*') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_SYMBOLTABLE;
|
||||||
|
} else if (ch == '/' && preferRE) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_REGEX;
|
||||||
|
quoteUp = '/';
|
||||||
|
quoteDown = '/';
|
||||||
|
quotes = 1;
|
||||||
|
quoteRep = 1;
|
||||||
|
} else if (ch == '<' && chNext == '<') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_HERE;
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = chNext2;
|
||||||
|
quotes = 0;
|
||||||
|
sookedpos = 0;
|
||||||
|
sooked[sookedpos] = '\0';
|
||||||
|
} else if (ch == '=' && (chPrev == '\r' || chPrev == '\n') && isalpha(chNext)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_POD;
|
||||||
|
quotes = 0;
|
||||||
|
sookedpos = 0;
|
||||||
|
sooked[sookedpos] = '\0';
|
||||||
|
} else if (isPerlOperator(ch)) {
|
||||||
|
if (ch == ')' || ch == ']')
|
||||||
|
preferRE = false;
|
||||||
|
else
|
||||||
|
preferRE = true;
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
styler.ColourTo(i, SCE_PL_OPERATOR);
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_WORD) {
|
||||||
|
if (!iswordchar(ch) && ch != '\'') { // Archaic Perl has quotes inside names
|
||||||
|
if (isMatch(styler, lengthDoc, styler.GetStartSegment(), "__DATA__")) {
|
||||||
|
styler.ColourTo(i, SCE_PL_DATASECTION);
|
||||||
|
state = SCE_PL_DATASECTION;
|
||||||
|
} else if (isMatch(styler, lengthDoc, styler.GetStartSegment(), "__END__")) {
|
||||||
|
styler.ColourTo(i, SCE_PL_DATASECTION);
|
||||||
|
state = SCE_PL_DATASECTION;
|
||||||
|
} else {
|
||||||
|
if (classifyWordPerl(styler.GetStartSegment(), i - 1, keywords, styler) == SCE_PL_WORD)
|
||||||
|
preferRE = true;
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
if (ch == '#') {
|
||||||
|
state = SCE_PL_COMMENTLINE;
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
state = SCE_PL_STRING;
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
state = SCE_PL_CHARACTER;
|
||||||
|
} else if (ch == '<' && chNext == '<') {
|
||||||
|
state = SCE_PL_HERE;
|
||||||
|
quotes = 0;
|
||||||
|
sookedpos = 0;
|
||||||
|
sooked[sookedpos] = '\0';
|
||||||
|
} else if (isPerlOperator(ch)) {
|
||||||
|
if (ch == ')' || ch == ']')
|
||||||
|
preferRE = false;
|
||||||
|
else
|
||||||
|
preferRE = true;
|
||||||
|
styler.ColourTo(i, SCE_PL_OPERATOR);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (state == SCE_PL_COMMENTLINE) {
|
||||||
|
if (ch == '\r' || ch == '\n') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_HERE) {
|
||||||
|
if ((isalnum(ch) || ch == '_') && quotes < 2) {
|
||||||
|
sooked[sookedpos++] = ch;
|
||||||
|
sooked[sookedpos] = '\0';
|
||||||
|
if (quotes == 0)
|
||||||
|
quotes = 1;
|
||||||
|
} else {
|
||||||
|
quotes++;
|
||||||
|
}
|
||||||
|
if ((quotes > 1) &&
|
||||||
|
(chPrev == '\n' || chPrev == '\r') &&
|
||||||
|
isMatch(styler, lengthDoc, i, sooked)) {
|
||||||
|
i += sookedpos;
|
||||||
|
chNext = styler.SafeGetCharAt(i);
|
||||||
|
if (chNext == '\n' || chNext == '\r') {
|
||||||
|
styler.ColourTo(i - 1, SCE_PL_HERE);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
}
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_STRING) {
|
||||||
|
if (ch == '\\') {
|
||||||
|
if (chNext == '\"' || chNext == '\'' || chNext == '\\') {
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_CHARACTER) {
|
||||||
|
if (ch == '\\') {
|
||||||
|
if (chNext == '\"' || chNext == '\'' || chNext == '\\') {
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_BACKTICKS) {
|
||||||
|
if (ch == '`') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_POD) {
|
||||||
|
if (ch == '=' && (chPrev == '\r' || chPrev == '\n')) {
|
||||||
|
if (isMatch(styler, lengthDoc, i, "=cut")) {
|
||||||
|
styler.ColourTo(i - 1 + 4, state);
|
||||||
|
i += 4;
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
ch = styler.SafeGetCharAt(i);
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_SCALAR) {
|
||||||
|
if (isEndVar(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_ARRAY) {
|
||||||
|
if (isEndVar(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_HASH) {
|
||||||
|
if (isEndVar(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_SYMBOLTABLE) {
|
||||||
|
if (isEndVar(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_REF) {
|
||||||
|
if (isEndVar(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_REGEX) {
|
||||||
|
if (!quoteUp && !isspace(ch)) {
|
||||||
|
quoteUp = ch;
|
||||||
|
quoteDown = opposite(ch);
|
||||||
|
quotes++;
|
||||||
|
} else {
|
||||||
|
if (ch == quoteDown && chPrev != '\\') {
|
||||||
|
quotes--;
|
||||||
|
if (quotes == 0) {
|
||||||
|
quoteRep--;
|
||||||
|
if (quoteUp == quoteDown) {
|
||||||
|
quotes++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isalpha(chNext)) {
|
||||||
|
if (quoteRep <= 0) {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
ch = ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (ch == quoteUp && chPrev != '\\') {
|
||||||
|
quotes++;
|
||||||
|
} else if (!isalpha(chNext)) {
|
||||||
|
if (quoteRep <= 0) {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
ch = ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_REGSUBST) {
|
||||||
|
if (!quoteUp && !isspace(ch)) {
|
||||||
|
quoteUp = ch;
|
||||||
|
quoteDown = opposite(ch);
|
||||||
|
quotes++;
|
||||||
|
} else {
|
||||||
|
if (quotes == 0 && quoteRep == 1) {
|
||||||
|
/* We matched something like s(...) or tr{...}
|
||||||
|
* and are looking for the next matcher characters,
|
||||||
|
* which could be either bracketed ({...}) or non-bracketed
|
||||||
|
* (/.../).
|
||||||
|
*
|
||||||
|
* Number-signs are problematic. If they occur after
|
||||||
|
* the close of the first part, treat them like
|
||||||
|
* a quoteUp char, even if they actually start comments.
|
||||||
|
*
|
||||||
|
* If we find an alnum, we end the regsubst, and punt.
|
||||||
|
*
|
||||||
|
* Eric Promislow ericp@activestate.com Aug 9,2000
|
||||||
|
*/
|
||||||
|
if (isspace(ch)) {
|
||||||
|
// Keep going
|
||||||
|
} else if (isalnum(ch)) {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
ch = ' ';
|
||||||
|
} else {
|
||||||
|
quoteUp = ch;
|
||||||
|
quoteDown = opposite(ch);
|
||||||
|
quotes++;
|
||||||
|
}
|
||||||
|
} else if (ch == quoteDown && chPrev != '\\') {
|
||||||
|
quotes--;
|
||||||
|
if (quotes == 0) {
|
||||||
|
quoteRep--;
|
||||||
|
}
|
||||||
|
if (!isalpha(chNext)) {
|
||||||
|
if (quoteRep <= 0) {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
ch = ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (quoteUp == quoteDown) {
|
||||||
|
quotes++;
|
||||||
|
}
|
||||||
|
} else if (ch == quoteUp && chPrev != '\\') {
|
||||||
|
quotes++;
|
||||||
|
} else if (!isalpha(chNext)) {
|
||||||
|
if (quoteRep <= 0) {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
ch = ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (state == SCE_PL_LONGQUOTE) {
|
||||||
|
if (!quoteDown && !isspace(ch)) {
|
||||||
|
quoteUp = ch;
|
||||||
|
quoteDown = opposite(quoteUp);
|
||||||
|
quotes++;
|
||||||
|
} else if (ch == quoteDown) {
|
||||||
|
quotes--;
|
||||||
|
if (quotes == 0) {
|
||||||
|
quoteRep--;
|
||||||
|
if (quoteRep <= 0) {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_PL_DEFAULT;
|
||||||
|
ch = ' ';
|
||||||
|
}
|
||||||
|
if (quoteUp == quoteDown) {
|
||||||
|
quotes++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (ch == quoteUp) {
|
||||||
|
quotes++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == SCE_PL_DEFAULT) { // One of the above succeeded
|
||||||
|
if (ch == '#') {
|
||||||
|
state = SCE_PL_COMMENTLINE;
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
state = SCE_PL_STRING;
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
state = SCE_PL_CHARACTER;
|
||||||
|
} else if (iswordstart(ch)) {
|
||||||
|
state = SCE_PL_WORD;
|
||||||
|
preferRE = false;
|
||||||
|
} else if (isoperator(ch)) {
|
||||||
|
styler.ColourTo(i, SCE_PL_OPERATOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chPrev = ch;
|
||||||
|
}
|
||||||
|
styler.ColourTo(lengthDoc, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
LexerModule lmPerl(SCLEX_PERL, ColourisePerlDoc);
|
||||||
281
contrib/src/stc/scintilla/src/LexPython.cxx
Normal file
@@ -0,0 +1,281 @@
|
|||||||
|
// SciTE - Scintilla based Text Editor
|
||||||
|
// LexPython.cxx - lexer for Python
|
||||||
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "Platform.h"
|
||||||
|
|
||||||
|
#include "PropSet.h"
|
||||||
|
#include "Accessor.h"
|
||||||
|
#include "KeyWords.h"
|
||||||
|
#include "Scintilla.h"
|
||||||
|
#include "SciLexer.h"
|
||||||
|
|
||||||
|
static void ClassifyWordPy(unsigned int start, unsigned int end, WordList &keywords, Accessor &styler, char *prevWord) {
|
||||||
|
char s[100];
|
||||||
|
bool wordIsNumber = isdigit(styler[start]);
|
||||||
|
for (unsigned int i = 0; i < end - start + 1 && i < 30; i++) {
|
||||||
|
s[i] = styler[start + i];
|
||||||
|
s[i + 1] = '\0';
|
||||||
|
}
|
||||||
|
char chAttr = SCE_P_IDENTIFIER;
|
||||||
|
if (0 == strcmp(prevWord, "class"))
|
||||||
|
chAttr = SCE_P_CLASSNAME;
|
||||||
|
else if (0 == strcmp(prevWord, "def"))
|
||||||
|
chAttr = SCE_P_DEFNAME;
|
||||||
|
else if (wordIsNumber)
|
||||||
|
chAttr = SCE_P_NUMBER;
|
||||||
|
else if (keywords.InList(s))
|
||||||
|
chAttr = SCE_P_WORD;
|
||||||
|
// make sure that dot-qualifiers inside the word are lexed correct
|
||||||
|
else for (unsigned int i = 0; i < end - start + 1; i++) {
|
||||||
|
if (styler[start + i] == '.') {
|
||||||
|
styler.ColourTo(start + i - 1, chAttr);
|
||||||
|
styler.ColourTo(start + i, SCE_P_OPERATOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
styler.ColourTo(end, chAttr);
|
||||||
|
strcpy(prevWord, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool IsPyComment(Accessor &styler, int pos, int len) {
|
||||||
|
return len>0 && styler[pos]=='#';
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColourisePyDoc(unsigned int startPos, int length, int initStyle,
|
||||||
|
WordList *keywordlists[], Accessor &styler) {
|
||||||
|
|
||||||
|
int lengthDoc = startPos + length;
|
||||||
|
|
||||||
|
// Backtrack to previous line in case need to fix its fold status or tab whinging
|
||||||
|
int lineCurrent = styler.GetLine(startPos);
|
||||||
|
if (startPos > 0) {
|
||||||
|
if (lineCurrent > 0) {
|
||||||
|
lineCurrent--;
|
||||||
|
startPos = styler.LineStart(lineCurrent);
|
||||||
|
if (startPos == 0)
|
||||||
|
initStyle = SCE_P_DEFAULT;
|
||||||
|
else
|
||||||
|
initStyle = styler.StyleAt(startPos-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Python uses a different mask because bad indentation is marked by oring with 32
|
||||||
|
styler.StartAt(startPos, 127);
|
||||||
|
|
||||||
|
WordList &keywords = *keywordlists[0];
|
||||||
|
|
||||||
|
bool fold = styler.GetPropertyInt("fold");
|
||||||
|
int whingeLevel = styler.GetPropertyInt("tab.timmy.whinge.level");
|
||||||
|
char prevWord[200];
|
||||||
|
prevWord[0] = '\0';
|
||||||
|
if (length == 0)
|
||||||
|
return ;
|
||||||
|
int spaceFlags = 0;
|
||||||
|
|
||||||
|
int state = initStyle & 31;
|
||||||
|
|
||||||
|
int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, IsPyComment);
|
||||||
|
if ((state == SCE_P_TRIPLE) || (state == SCE_P_TRIPLEDOUBLE))
|
||||||
|
indentCurrent |= SC_FOLDLEVELWHITEFLAG;
|
||||||
|
|
||||||
|
char chPrev = ' ';
|
||||||
|
char chPrev2 = ' ';
|
||||||
|
char chNext = styler[startPos];
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
bool atStartLine = true;
|
||||||
|
for (int i = startPos; i < lengthDoc; i++) {
|
||||||
|
|
||||||
|
if (atStartLine) {
|
||||||
|
char chBad = static_cast<char>(64);
|
||||||
|
char chGood = static_cast<char>(0);
|
||||||
|
char chFlags = chGood;
|
||||||
|
if (whingeLevel == 1) {
|
||||||
|
chFlags = (spaceFlags & wsInconsistent) ? chBad : chGood;
|
||||||
|
} else if (whingeLevel == 2) {
|
||||||
|
chFlags = (spaceFlags & wsSpaceTab) ? chBad : chGood;
|
||||||
|
} else if (whingeLevel == 3) {
|
||||||
|
chFlags = (spaceFlags & wsSpace) ? chBad : chGood;
|
||||||
|
} else if (whingeLevel == 4) {
|
||||||
|
chFlags = (spaceFlags & wsTab) ? chBad : chGood;
|
||||||
|
}
|
||||||
|
styler.SetFlags(chFlags, static_cast<char>(state));
|
||||||
|
atStartLine = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
char ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
char chNext2 = styler.SafeGetCharAt(i + 2);
|
||||||
|
|
||||||
|
if ((ch == '\r' && chNext != '\n') || (ch == '\n') || (i == lengthDoc)) {
|
||||||
|
if ((state == SCE_P_DEFAULT) || (state == SCE_P_TRIPLE) || (state == SCE_P_TRIPLEDOUBLE)) {
|
||||||
|
// Perform colourisation of white space and triple quoted strings at end of each line to allow
|
||||||
|
// tab marking to work inside white space and triple quoted strings
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
int lev = indentCurrent;
|
||||||
|
int indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags, IsPyComment);
|
||||||
|
if ((state == SCE_P_TRIPLE) || (state == SCE_P_TRIPLEDOUBLE))
|
||||||
|
indentNext |= SC_FOLDLEVELWHITEFLAG;
|
||||||
|
if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) {
|
||||||
|
// Only non whitespace lines can be headers
|
||||||
|
if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) {
|
||||||
|
lev |= SC_FOLDLEVELHEADERFLAG;
|
||||||
|
} else if (indentNext & SC_FOLDLEVELWHITEFLAG) {
|
||||||
|
// Line after is blank so check the next - maybe should continue further?
|
||||||
|
int spaceFlags2 = 0;
|
||||||
|
int indentNext2 = styler.IndentAmount(lineCurrent + 2, &spaceFlags2, IsPyComment);
|
||||||
|
if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext2 & SC_FOLDLEVELNUMBERMASK)) {
|
||||||
|
lev |= SC_FOLDLEVELHEADERFLAG;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
indentCurrent = indentNext;
|
||||||
|
if (fold) {
|
||||||
|
styler.SetLevel(lineCurrent, lev);
|
||||||
|
}
|
||||||
|
lineCurrent++;
|
||||||
|
atStartLine = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (styler.IsLeadByte(ch)) {
|
||||||
|
chNext = styler.SafeGetCharAt(i + 2);
|
||||||
|
chPrev = ' ';
|
||||||
|
chPrev2 = ' ';
|
||||||
|
i += 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == SCE_P_STRINGEOL) {
|
||||||
|
if (ch != '\r' && ch != '\n') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_P_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (state == SCE_P_DEFAULT) {
|
||||||
|
if (iswordstart(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_P_WORD;
|
||||||
|
} else if (ch == '#') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = chNext == '#' ? SCE_P_COMMENTBLOCK : SCE_P_COMMENTLINE;
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
if (chNext == '\"' && chNext2 == '\"') {
|
||||||
|
i += 2;
|
||||||
|
state = SCE_P_TRIPLEDOUBLE;
|
||||||
|
ch = ' ';
|
||||||
|
chPrev = ' ';
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
} else {
|
||||||
|
state = SCE_P_STRING;
|
||||||
|
}
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
if (chNext == '\'' && chNext2 == '\'') {
|
||||||
|
i += 2;
|
||||||
|
state = SCE_P_TRIPLE;
|
||||||
|
ch = ' ';
|
||||||
|
chPrev = ' ';
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
} else {
|
||||||
|
state = SCE_P_CHARACTER;
|
||||||
|
}
|
||||||
|
} else if (isoperator(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
styler.ColourTo(i, SCE_P_OPERATOR);
|
||||||
|
}
|
||||||
|
} else if (state == SCE_P_WORD) {
|
||||||
|
if (!iswordchar(ch)) {
|
||||||
|
ClassifyWordPy(styler.GetStartSegment(), i - 1, keywords, styler, prevWord);
|
||||||
|
state = SCE_P_DEFAULT;
|
||||||
|
if (ch == '#') {
|
||||||
|
state = chNext == '#' ? SCE_P_COMMENTBLOCK : SCE_P_COMMENTLINE;
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
if (chNext == '\"' && chNext2 == '\"') {
|
||||||
|
i += 2;
|
||||||
|
state = SCE_P_TRIPLEDOUBLE;
|
||||||
|
ch = ' ';
|
||||||
|
chPrev = ' ';
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
} else {
|
||||||
|
state = SCE_P_STRING;
|
||||||
|
}
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
if (chNext == '\'' && chNext2 == '\'') {
|
||||||
|
i += 2;
|
||||||
|
state = SCE_P_TRIPLE;
|
||||||
|
ch = ' ';
|
||||||
|
chPrev = ' ';
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
} else {
|
||||||
|
state = SCE_P_CHARACTER;
|
||||||
|
}
|
||||||
|
} else if (isoperator(ch)) {
|
||||||
|
styler.ColourTo(i, SCE_P_OPERATOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (state == SCE_P_COMMENTLINE || state == SCE_P_COMMENTBLOCK) {
|
||||||
|
if (ch == '\r' || ch == '\n') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_P_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_P_STRING) {
|
||||||
|
if ((ch == '\r' || ch == '\n') && (chPrev != '\\')) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_P_STRINGEOL;
|
||||||
|
} else if (ch == '\\') {
|
||||||
|
if (chNext == '\"' || chNext == '\'' || chNext == '\\') {
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_P_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_P_CHARACTER) {
|
||||||
|
if ((ch == '\r' || ch == '\n') && (chPrev != '\\')) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_P_STRINGEOL;
|
||||||
|
} else if (ch == '\\') {
|
||||||
|
if (chNext == '\"' || chNext == '\'' || chNext == '\\') {
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_P_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_P_TRIPLE) {
|
||||||
|
if (ch == '\'' && chPrev == '\'' && chPrev2 == '\'') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_P_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_P_TRIPLEDOUBLE) {
|
||||||
|
if (ch == '\"' && chPrev == '\"' && chPrev2 == '\"') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_P_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chPrev2 = chPrev;
|
||||||
|
chPrev = ch;
|
||||||
|
}
|
||||||
|
if (state == SCE_P_WORD) {
|
||||||
|
ClassifyWordPy(styler.GetStartSegment(), lengthDoc, keywords, styler, prevWord);
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(lengthDoc, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LexerModule lmPython(SCLEX_PYTHON, ColourisePyDoc);
|
||||||
156
contrib/src/stc/scintilla/src/LexSQL.cxx
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
// SciTE - Scintilla based Text Editor
|
||||||
|
// LexSQL.cxx - lexer for SQL
|
||||||
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "Platform.h"
|
||||||
|
|
||||||
|
#include "PropSet.h"
|
||||||
|
#include "Accessor.h"
|
||||||
|
#include "KeyWords.h"
|
||||||
|
#include "Scintilla.h"
|
||||||
|
#include "SciLexer.h"
|
||||||
|
|
||||||
|
static void classifyWordSQL(unsigned int start, unsigned int end, WordList &keywords, Accessor &styler) {
|
||||||
|
char s[100];
|
||||||
|
bool wordIsNumber = isdigit(styler[start]) || (styler[start] == '.');
|
||||||
|
for (unsigned int i = 0; i < end - start + 1 && i < 30; i++) {
|
||||||
|
s[i] = static_cast<char>(toupper(styler[start + i]));
|
||||||
|
s[i + 1] = '\0';
|
||||||
|
}
|
||||||
|
char chAttr = SCE_C_IDENTIFIER;
|
||||||
|
if (wordIsNumber)
|
||||||
|
chAttr = SCE_C_NUMBER;
|
||||||
|
else {
|
||||||
|
if (keywords.InList(s))
|
||||||
|
chAttr = SCE_C_WORD;
|
||||||
|
}
|
||||||
|
styler.ColourTo(end, chAttr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseSQLDoc(unsigned int startPos, int length,
|
||||||
|
int initStyle, WordList *keywordlists[], Accessor &styler) {
|
||||||
|
|
||||||
|
WordList &keywords = *keywordlists[0];
|
||||||
|
|
||||||
|
styler.StartAt(startPos);
|
||||||
|
|
||||||
|
bool fold = styler.GetPropertyInt("fold");
|
||||||
|
int lineCurrent = styler.GetLine(startPos);
|
||||||
|
int spaceFlags = 0;
|
||||||
|
|
||||||
|
int state = initStyle;
|
||||||
|
char chPrev = ' ';
|
||||||
|
char chNext = styler[startPos];
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
unsigned int lengthDoc = startPos + length;
|
||||||
|
for (unsigned int i = startPos; i < lengthDoc; i++) {
|
||||||
|
char ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
|
||||||
|
if ((ch == '\r' && chNext != '\n') || (ch == '\n')) {
|
||||||
|
int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags);
|
||||||
|
int lev = indentCurrent;
|
||||||
|
if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) {
|
||||||
|
// Only non whitespace lines can be headers
|
||||||
|
int indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags);
|
||||||
|
if (indentCurrent < (indentNext & ~SC_FOLDLEVELWHITEFLAG)) {
|
||||||
|
lev |= SC_FOLDLEVELHEADERFLAG;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (fold) {
|
||||||
|
styler.SetLevel(lineCurrent, lev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (styler.IsLeadByte(ch)) {
|
||||||
|
chNext = styler.SafeGetCharAt(i + 2);
|
||||||
|
chPrev = ' ';
|
||||||
|
i += 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == SCE_C_DEFAULT) {
|
||||||
|
if (iswordstart(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_C_WORD;
|
||||||
|
} else if (ch == '/' && chNext == '*') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_C_COMMENT;
|
||||||
|
} else if (ch == '-' && chNext == '-') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_C_COMMENTLINE;
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_C_STRING;
|
||||||
|
} else if (isoperator(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
styler.ColourTo(i, SCE_C_OPERATOR);
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_WORD) {
|
||||||
|
if (!iswordchar(ch)) {
|
||||||
|
classifyWordSQL(styler.GetStartSegment(), i - 1, keywords, styler);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
if (ch == '/' && chNext == '*') {
|
||||||
|
state = SCE_C_COMMENT;
|
||||||
|
} else if (ch == '-' && chNext == '-') {
|
||||||
|
state = SCE_C_COMMENTLINE;
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
state = SCE_C_STRING;
|
||||||
|
} else if (isoperator(ch)) {
|
||||||
|
styler.ColourTo(i, SCE_C_OPERATOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (state == SCE_C_COMMENT) {
|
||||||
|
if (ch == '/' && chPrev == '*') {
|
||||||
|
if (((i > (styler.GetStartSegment() + 2)) || ((initStyle == SCE_C_COMMENT) &&
|
||||||
|
(styler.GetStartSegment() == startPos)))) {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_COMMENTLINE) {
|
||||||
|
if (ch == '\r' || ch == '\n') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_STRING) {
|
||||||
|
if (ch == '\'') {
|
||||||
|
if ( chNext == '\'' ) {
|
||||||
|
i++;
|
||||||
|
} else {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (state == SCE_C_DEFAULT) { // One of the above succeeded
|
||||||
|
if (ch == '/' && chNext == '*') {
|
||||||
|
state = SCE_C_COMMENT;
|
||||||
|
} else if (ch == '-' && chNext == '-') {
|
||||||
|
state = SCE_C_COMMENTLINE;
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
state = SCE_C_STRING;
|
||||||
|
} else if (iswordstart(ch)) {
|
||||||
|
state = SCE_C_WORD;
|
||||||
|
} else if (isoperator(ch)) {
|
||||||
|
styler.ColourTo(i, SCE_C_OPERATOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chPrev = ch;
|
||||||
|
}
|
||||||
|
styler.ColourTo(lengthDoc - 1, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
LexerModule lmSQL(SCLEX_SQL, ColouriseSQLDoc);
|
||||||
139
contrib/src/stc/scintilla/src/LexVB.cxx
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
// SciTE - Scintilla based Text Editor
|
||||||
|
// LexVB.cxx - lexer for Visual Basic and VBScript
|
||||||
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "Platform.h"
|
||||||
|
|
||||||
|
#include "PropSet.h"
|
||||||
|
#include "Accessor.h"
|
||||||
|
#include "KeyWords.h"
|
||||||
|
#include "Scintilla.h"
|
||||||
|
#include "SciLexer.h"
|
||||||
|
|
||||||
|
static int classifyWordVB(unsigned int start, unsigned int end, WordList &keywords, Accessor &styler) {
|
||||||
|
|
||||||
|
char s[100];
|
||||||
|
bool wordIsNumber = isdigit(styler[start]) || (styler[start] == '.') ||
|
||||||
|
(styler[start] == '&' && tolower(styler[start+1]) == 'h');
|
||||||
|
unsigned int i;
|
||||||
|
for (i = 0; i < end - start + 1 && i < 30; i++) {
|
||||||
|
s[i] = static_cast<char>(tolower(styler[start + i]));
|
||||||
|
}
|
||||||
|
s[i] = '\0';
|
||||||
|
char chAttr = SCE_C_DEFAULT;
|
||||||
|
if (wordIsNumber)
|
||||||
|
chAttr = SCE_C_NUMBER;
|
||||||
|
else {
|
||||||
|
if (strcmp(s, "rem") == 0)
|
||||||
|
chAttr = SCE_C_COMMENTLINE;
|
||||||
|
else if (keywords.InList(s))
|
||||||
|
chAttr = SCE_C_WORD;
|
||||||
|
}
|
||||||
|
styler.ColourTo(end, chAttr);
|
||||||
|
if (chAttr == SCE_C_COMMENTLINE)
|
||||||
|
return SCE_C_COMMENTLINE;
|
||||||
|
else
|
||||||
|
return SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ColouriseVBDoc(unsigned int startPos, int length, int initStyle,
|
||||||
|
WordList *keywordlists[], Accessor &styler) {
|
||||||
|
|
||||||
|
WordList &keywords = *keywordlists[0];
|
||||||
|
|
||||||
|
styler.StartAt(startPos);
|
||||||
|
|
||||||
|
int visibleChars = 0;
|
||||||
|
int state = initStyle;
|
||||||
|
char chNext = styler[startPos];
|
||||||
|
styler.StartSegment(startPos);
|
||||||
|
int lengthDoc = startPos + length;
|
||||||
|
for (int i = startPos; i < lengthDoc; i++) {
|
||||||
|
char ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
|
||||||
|
if (styler.IsLeadByte(ch)) {
|
||||||
|
chNext = styler.SafeGetCharAt(i + 2);
|
||||||
|
i += 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ch == '\r' || ch == '\n') {
|
||||||
|
// End of line
|
||||||
|
if (state == SCE_C_COMMENTLINE || state == SCE_C_PREPROCESSOR) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
}
|
||||||
|
visibleChars = 0;
|
||||||
|
}
|
||||||
|
if (!isspace(ch))
|
||||||
|
visibleChars++;
|
||||||
|
|
||||||
|
if (state == SCE_C_DEFAULT) {
|
||||||
|
if (iswordstart(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_C_WORD;
|
||||||
|
} else if (ch == '\'') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_C_COMMENTLINE;
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_C_STRING;
|
||||||
|
} else if (ch == '#' && visibleChars == 1) {
|
||||||
|
// Preprocessor commands are alone on their line
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_C_PREPROCESSOR;
|
||||||
|
} else if (ch == '&' && tolower(chNext) == 'h') {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
state = SCE_C_WORD;
|
||||||
|
} else if (isoperator(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
styler.ColourTo(i, SCE_C_OPERATOR);
|
||||||
|
}
|
||||||
|
} else if (state == SCE_C_WORD) {
|
||||||
|
if (!iswordchar(ch)) {
|
||||||
|
state = classifyWordVB(styler.GetStartSegment(), i - 1, keywords, styler);
|
||||||
|
if (state == SCE_C_DEFAULT) {
|
||||||
|
if (ch == '\'') {
|
||||||
|
state = SCE_C_COMMENTLINE;
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
state = SCE_C_STRING;
|
||||||
|
} else if (isoperator(ch)) {
|
||||||
|
styler.ColourTo(i - 1, state);
|
||||||
|
styler.ColourTo(i, SCE_C_OPERATOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (state == SCE_C_STRING) {
|
||||||
|
// VB doubles quotes to preserve them
|
||||||
|
if (ch == '\"') {
|
||||||
|
styler.ColourTo(i, state);
|
||||||
|
state = SCE_C_DEFAULT;
|
||||||
|
i++;
|
||||||
|
ch = chNext;
|
||||||
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (state == SCE_C_DEFAULT) { // One of the above succeeded
|
||||||
|
if (ch == '\'') {
|
||||||
|
state = SCE_C_COMMENTLINE;
|
||||||
|
} else if (ch == '\"') {
|
||||||
|
state = SCE_C_STRING;
|
||||||
|
} else if (iswordstart(ch)) {
|
||||||
|
state = SCE_C_WORD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
styler.ColourTo(lengthDoc, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
LexerModule lmVB(SCLEX_VB, ColouriseVBDoc);
|
||||||
@@ -51,20 +51,6 @@ void LineMarker::Draw(Surface *surface, PRectangle &rc) {
|
|||||||
|
|
||||||
} else if (markType == SC_MARK_PLUS) {
|
} else if (markType == SC_MARK_PLUS) {
|
||||||
int armSize = dimOn2-2;
|
int armSize = dimOn2-2;
|
||||||
Point xpts[] = {
|
|
||||||
Point(centreX - armSize, centreY),
|
|
||||||
Point(centreX, centreY),
|
|
||||||
Point(centreX, centreY - armSize),
|
|
||||||
Point(centreX, centreY - armSize),
|
|
||||||
Point(centreX, centreY),
|
|
||||||
Point(centreX + armSize, centreY),
|
|
||||||
Point(centreX + armSize, centreY),
|
|
||||||
Point(centreX, centreY),
|
|
||||||
Point(centreX, centreY + armSize),
|
|
||||||
Point(centreX, centreY + armSize),
|
|
||||||
Point(centreX, centreY),
|
|
||||||
Point(centreX - armSize, centreY),
|
|
||||||
};
|
|
||||||
Point pts[] = {
|
Point pts[] = {
|
||||||
Point(centreX - armSize, centreY - 1),
|
Point(centreX - armSize, centreY - 1),
|
||||||
Point(centreX - 1, centreY - 1),
|
Point(centreX - 1, centreY - 1),
|
||||||
@@ -90,12 +76,6 @@ void LineMarker::Draw(Surface *surface, PRectangle &rc) {
|
|||||||
Point(centreX + armSize, centreY +1),
|
Point(centreX + armSize, centreY +1),
|
||||||
Point(centreX - armSize, centreY + 1),
|
Point(centreX - armSize, centreY + 1),
|
||||||
};
|
};
|
||||||
Point xpts[] = {
|
|
||||||
Point(centreX - armSize, centreY),
|
|
||||||
Point(centreX + armSize, centreY),
|
|
||||||
Point(centreX + armSize, centreY),
|
|
||||||
Point(centreX - armSize, centreY),
|
|
||||||
};
|
|
||||||
surface->Polygon(pts, sizeof(pts) / sizeof(pts[0]),
|
surface->Polygon(pts, sizeof(pts) / sizeof(pts[0]),
|
||||||
fore.allocated, back.allocated);
|
fore.allocated, back.allocated);
|
||||||
|
|
||||||
|
|||||||
1181
contrib/src/stc/scintilla/src/PosRegExp.cxx
Normal file
@@ -24,9 +24,22 @@ bool EqualCaseInsensitive(const char *a, const char *b) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SString::size_type SString::npos = -1;
|
||||||
|
|
||||||
|
inline unsigned int HashString(const char *s) {
|
||||||
|
unsigned int ret = 0;
|
||||||
|
while (*s) {
|
||||||
|
ret <<= 4;
|
||||||
|
ret ^= *s;
|
||||||
|
s++;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// Get a line of input. If end of line escaped with '\\' then continue reading.
|
// Get a line of input. If end of line escaped with '\\' then continue reading.
|
||||||
static bool GetFullLine(const char *&fpc, int &lenData, char *s, int len) {
|
static bool GetFullLine(const char *&fpc, int &lenData, char *s, int len) {
|
||||||
bool continuation = true;
|
bool continuation = true;
|
||||||
|
s[0] = '\0';
|
||||||
while ((len > 1) && lenData > 0) {
|
while ((len > 1) && lenData > 0) {
|
||||||
char ch = *fpc;
|
char ch = *fpc;
|
||||||
fpc++;
|
fpc++;
|
||||||
@@ -38,7 +51,7 @@ static bool GetFullLine(const char *&fpc, int &lenData, char *s, int len) {
|
|||||||
fpc++;
|
fpc++;
|
||||||
lenData--;
|
lenData--;
|
||||||
}
|
}
|
||||||
*s++ = '\0';
|
*s = '\0';
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else if ((ch == '\\') && (lenData > 0) && ((*fpc == '\r') || (*fpc == '\n'))) {
|
} else if ((ch == '\\') && (lenData > 0) && ((*fpc == '\r') || (*fpc == '\n'))) {
|
||||||
@@ -46,6 +59,7 @@ static bool GetFullLine(const char *&fpc, int &lenData, char *s, int len) {
|
|||||||
} else {
|
} else {
|
||||||
continuation = false;
|
continuation = false;
|
||||||
*s++ = ch;
|
*s++ = ch;
|
||||||
|
*s = '\0';
|
||||||
len--;
|
len--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -54,47 +68,39 @@ static bool GetFullLine(const char *&fpc, int &lenData, char *s, int len) {
|
|||||||
|
|
||||||
PropSet::PropSet() {
|
PropSet::PropSet() {
|
||||||
superPS = 0;
|
superPS = 0;
|
||||||
size = 10;
|
for (int root=0; root < hashRoots; root++)
|
||||||
used = 0;
|
props[root] = 0;
|
||||||
vals = new char * [size];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PropSet::~PropSet() {
|
PropSet::~PropSet() {
|
||||||
superPS = 0;
|
superPS = 0;
|
||||||
Clear();
|
Clear();
|
||||||
delete []vals;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PropSet::EnsureCanAddEntry() {
|
|
||||||
if (used >= size - 2) {
|
|
||||||
int newsize = size + 10;
|
|
||||||
char **newvals = new char * [newsize];
|
|
||||||
|
|
||||||
for (int i = 0; i < used; i++) {
|
|
||||||
newvals[i] = vals[i];
|
|
||||||
}
|
|
||||||
delete []vals;
|
|
||||||
vals = newvals;
|
|
||||||
size = newsize;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropSet::Set(const char *key, const char *val) {
|
void PropSet::Set(const char *key, const char *val) {
|
||||||
EnsureCanAddEntry();
|
unsigned int hash = HashString(key);
|
||||||
for (int i = 0; i < used; i += 2) {
|
for (Property *p=props[hash % hashRoots]; p; p=p->next) {
|
||||||
if (EqualCaseInsensitive(vals[i], key)) {
|
if ((hash == p->hash) && (0 == strcmp(p->key, key))) {
|
||||||
// Replace current value
|
// Replace current value
|
||||||
delete [](vals[i + 1]);
|
delete [](p->val);
|
||||||
vals[i + 1] = StringDup(val);
|
p->val = StringDup(val);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Not found
|
// Not found
|
||||||
vals[used++] = StringDup(key);
|
Property *pNew = new Property;
|
||||||
vals[used++] = StringDup(val);
|
if (pNew) {
|
||||||
|
pNew->hash = HashString(key);
|
||||||
|
pNew->key = StringDup(key);
|
||||||
|
pNew->val = StringDup(val);
|
||||||
|
pNew->next = props[hash % hashRoots];
|
||||||
|
props[hash % hashRoots] = pNew;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropSet::Set(char *keyval) {
|
void PropSet::Set(char *keyval) {
|
||||||
|
while (isspace(*keyval))
|
||||||
|
keyval++;
|
||||||
char *eqat = strchr(keyval, '=');
|
char *eqat = strchr(keyval, '=');
|
||||||
if (eqat) {
|
if (eqat) {
|
||||||
*eqat = '\0';
|
*eqat = '\0';
|
||||||
@@ -104,11 +110,12 @@ void PropSet::Set(char *keyval) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SString PropSet::Get(const char *key) {
|
SString PropSet::Get(const char *key) {
|
||||||
for (int i = 0; i < used; i += 2) {
|
unsigned int hash = HashString(key);
|
||||||
if (EqualCaseInsensitive(vals[i], key)) {
|
for (Property *p=props[hash % hashRoots]; p; p=p->next) {
|
||||||
return vals[i + 1];
|
if ((hash == p->hash) && (0 == strcmp(p->key, key))) {
|
||||||
}
|
return p->val;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (superPS) {
|
if (superPS) {
|
||||||
// Failed here, so try in base property set
|
// Failed here, so try in base property set
|
||||||
return superPS->Get(key);
|
return superPS->Get(key);
|
||||||
@@ -117,17 +124,47 @@ SString PropSet::Get(const char *key) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SString PropSet::GetExpanded(const char *key) {
|
||||||
|
SString val = Get(key);
|
||||||
|
return Expand(val.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
SString PropSet::Expand(const char *withvars) {
|
||||||
|
char *base = StringDup(withvars);
|
||||||
|
char *cpvar = strstr(base, "$(");
|
||||||
|
while (cpvar) {
|
||||||
|
char *cpendvar = strchr(cpvar, ')');
|
||||||
|
if (cpendvar) {
|
||||||
|
int lenvar = cpendvar - cpvar - 2; // Subtract the $()
|
||||||
|
char *var = StringDup(cpvar+2, lenvar);
|
||||||
|
SString val = GetExpanded(var);
|
||||||
|
int newlenbase = strlen(base) + val.length() - lenvar;
|
||||||
|
char *newbase = new char[newlenbase];
|
||||||
|
strncpy(newbase, base, cpvar - base);
|
||||||
|
strcpy(newbase + (cpvar - base), val.c_str());
|
||||||
|
strcpy(newbase + (cpvar - base) + val.length(), cpendvar + 1);
|
||||||
|
delete []var;
|
||||||
|
delete []base;
|
||||||
|
base = newbase;
|
||||||
|
}
|
||||||
|
cpvar = strstr(base, "$(");
|
||||||
|
}
|
||||||
|
SString sret = base;
|
||||||
|
delete []base;
|
||||||
|
return sret;
|
||||||
|
}
|
||||||
|
|
||||||
int PropSet::GetInt(const char *key, int defaultValue) {
|
int PropSet::GetInt(const char *key, int defaultValue) {
|
||||||
SString val = Get(key);
|
SString val = Get(key);
|
||||||
if (val.length())
|
if (val.length())
|
||||||
return Get(key).value();
|
return val.value();
|
||||||
else
|
else
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isprefix(const char *target, const char *prefix) {
|
inline bool isprefix(const char *target, const char *prefix) {
|
||||||
while (*target && *prefix) {
|
while (*target && *prefix) {
|
||||||
if (toupper(*target) != toupper(*prefix))
|
if (*target != *prefix)
|
||||||
return false;
|
return false;
|
||||||
target++;
|
target++;
|
||||||
prefix++;
|
prefix++;
|
||||||
@@ -144,64 +181,63 @@ bool issuffix(const char *target, const char *suffix) {
|
|||||||
if (lensuffix > lentarget)
|
if (lensuffix > lentarget)
|
||||||
return false;
|
return false;
|
||||||
for (int i = lensuffix - 1; i >= 0; i--) {
|
for (int i = lensuffix - 1; i >= 0; i--) {
|
||||||
if (toupper(target[i + lentarget - lensuffix]) != toupper(suffix[i]))
|
if (target[i + lentarget - lensuffix] != suffix[i])
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
SString PropSet::GetWild(const char *keybase, const char *filename) {
|
SString PropSet::GetWild(const char *keybase, const char *filename) {
|
||||||
for (int i = 0; i < used; i += 2) {
|
for (int root=0; root < hashRoots; root++) {
|
||||||
if (isprefix(vals[i], keybase)) {
|
for (Property *p=props[root]; p; p=p->next) {
|
||||||
char *orgkeyfile = vals[i] + strlen(keybase);
|
if (isprefix(p->key, keybase)) {
|
||||||
char *keyfile = NULL;
|
char *orgkeyfile = p->key + strlen(keybase);
|
||||||
|
char *keyfile = NULL;
|
||||||
|
|
||||||
if (strstr(orgkeyfile, "$(") == orgkeyfile) {
|
if (strstr(orgkeyfile, "$(") == orgkeyfile) {
|
||||||
char *cpendvar = strchr(orgkeyfile, ')');
|
char *cpendvar = strchr(orgkeyfile, ')');
|
||||||
if (cpendvar) {
|
if (cpendvar) {
|
||||||
int lenvar = cpendvar - orgkeyfile - 2; // Subtract the $()
|
*cpendvar = '\0';
|
||||||
char *var = static_cast<char *>(malloc(lenvar + 1));
|
SString s = Get(orgkeyfile + 2);
|
||||||
strncpy(var, orgkeyfile + 2, lenvar);
|
*cpendvar= ')';
|
||||||
var[lenvar] = '\0';
|
keyfile = strdup(s.c_str());
|
||||||
SString s = Get(var);
|
}
|
||||||
free(var);
|
}
|
||||||
keyfile = strdup(s.c_str());
|
char *keyptr = keyfile;
|
||||||
}
|
|
||||||
}
|
|
||||||
char *keyptr = keyfile;
|
|
||||||
|
|
||||||
if (keyfile == NULL)
|
if (keyfile == NULL)
|
||||||
keyfile = orgkeyfile;
|
keyfile = orgkeyfile;
|
||||||
|
|
||||||
for (; ; ) {
|
for (; ; ) {
|
||||||
char *del = strchr(keyfile, ';');
|
char *del = strchr(keyfile, ';');
|
||||||
if (del == NULL)
|
if (del == NULL)
|
||||||
del = keyfile + strlen(keyfile);
|
del = keyfile + strlen(keyfile);
|
||||||
char delchr = *del;
|
char delchr = *del;
|
||||||
*del = '\0';
|
*del = '\0';
|
||||||
if (*keyfile == '*') {
|
if (*keyfile == '*') {
|
||||||
if (issuffix(filename, keyfile + 1)) {
|
if (issuffix(filename, keyfile + 1)) {
|
||||||
*del = delchr;
|
*del = delchr;
|
||||||
free(keyptr);
|
free(keyptr);
|
||||||
return vals[i + 1];
|
return p->val;
|
||||||
}
|
}
|
||||||
} else if (EqualCaseInsensitive(keyfile, filename)) {
|
} else if (0 == strcmp(keyfile, filename)) {
|
||||||
*del = delchr;
|
*del = delchr;
|
||||||
free(keyptr);
|
free(keyptr);
|
||||||
return vals[i + 1];
|
return p->val;
|
||||||
}
|
}
|
||||||
if (delchr == '\0')
|
if (delchr == '\0')
|
||||||
break;
|
break;
|
||||||
*del = delchr;
|
*del = delchr;
|
||||||
keyfile = del + 1;
|
keyfile = del + 1;
|
||||||
}
|
}
|
||||||
free(keyptr);
|
free(keyptr);
|
||||||
|
|
||||||
if (EqualCaseInsensitive(vals[i], keybase)) {
|
if (0 == strcmp(p->key, keybase)) {
|
||||||
return vals[i + 1];
|
return p->val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (superPS) {
|
if (superPS) {
|
||||||
// Failed here, so try in base property set
|
// Failed here, so try in base property set
|
||||||
return superPS->GetWild(keybase, filename);
|
return superPS->GetWild(keybase, filename);
|
||||||
@@ -217,9 +253,7 @@ SString PropSet::GetNewExpand(const char *keybase, const char *filename) {
|
|||||||
char *cpendvar = strchr(cpvar, ')');
|
char *cpendvar = strchr(cpvar, ')');
|
||||||
if (cpendvar) {
|
if (cpendvar) {
|
||||||
int lenvar = cpendvar - cpvar - 2; // Subtract the $()
|
int lenvar = cpendvar - cpvar - 2; // Subtract the $()
|
||||||
char *var = new char[lenvar + 1];
|
char *var = StringDup(cpvar+2, lenvar);
|
||||||
strncpy(var, cpvar + 2, lenvar);
|
|
||||||
var[lenvar] = '\0';
|
|
||||||
SString val = GetWild(var, filename);
|
SString val = GetWild(var, filename);
|
||||||
int newlenbase = strlen(base) + val.length() - lenvar;
|
int newlenbase = strlen(base) + val.length() - lenvar;
|
||||||
char *newbase = new char[newlenbase];
|
char *newbase = new char[newlenbase];
|
||||||
@@ -238,33 +272,54 @@ SString PropSet::GetNewExpand(const char *keybase, const char *filename) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PropSet::Clear() {
|
void PropSet::Clear() {
|
||||||
for (int i = 0; i < used; i++) {
|
for (int root=0; root < hashRoots; root++) {
|
||||||
delete [](vals[i]);
|
Property *p=props[root];
|
||||||
vals[i] = 0;
|
while (p) {
|
||||||
}
|
Property *pNext=p->next;
|
||||||
used = 0;
|
p->hash = 0;
|
||||||
|
delete p->key;
|
||||||
|
p->key = 0;
|
||||||
|
delete p->val;
|
||||||
|
p->val = 0;
|
||||||
|
delete p;
|
||||||
|
p = pNext;
|
||||||
|
}
|
||||||
|
props[root] = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropSet::ReadFromMemory(const char *data, int len) {
|
void PropSet::ReadFromMemory(const char *data, int len, const char *directoryForImports) {
|
||||||
if (len > 0) {
|
const char *pd = data;
|
||||||
const char *pd = data;
|
char linebuf[60000];
|
||||||
char linebuf[60000];
|
bool ifIsTrue = true;
|
||||||
while (GetFullLine(pd, len, linebuf, sizeof(linebuf))) {
|
while (len > 0) {
|
||||||
if (isalpha(linebuf[0]))
|
GetFullLine(pd, len, linebuf, sizeof(linebuf));
|
||||||
Set(linebuf);
|
if (isalpha(linebuf[0])) // If clause ends with first non-indented line
|
||||||
|
ifIsTrue = true;
|
||||||
|
if (isprefix(linebuf, "if ")) {
|
||||||
|
const char *expr = linebuf + strlen("if") + 1;
|
||||||
|
ifIsTrue = GetInt(expr);
|
||||||
|
} else if (isprefix(linebuf, "import ") && directoryForImports) {
|
||||||
|
char importPath[1024];
|
||||||
|
strcpy(importPath, directoryForImports);
|
||||||
|
strcat(importPath, linebuf + strlen("import") + 1);
|
||||||
|
strcat(importPath, ".properties");
|
||||||
|
Read(importPath,directoryForImports);
|
||||||
|
} else if (isalpha(linebuf[0])) {
|
||||||
|
Set(linebuf);
|
||||||
|
} else if (isspace(linebuf[0]) && ifIsTrue) {
|
||||||
|
Set(linebuf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropSet::Read(const char *filename) {
|
void PropSet::Read(const char *filename, const char *directoryForImports) {
|
||||||
//printf("Opening properties <%s>\n", filename);
|
|
||||||
Clear();
|
|
||||||
char propsData[60000];
|
char propsData[60000];
|
||||||
FILE *rcfile = fopen(filename, "rb");
|
FILE *rcfile = fopen(filename, "rb");
|
||||||
if (rcfile) {
|
if (rcfile) {
|
||||||
int lenFile = fread(propsData, 1, sizeof(propsData), rcfile);
|
int lenFile = fread(propsData, 1, sizeof(propsData), rcfile);
|
||||||
fclose(rcfile);
|
fclose(rcfile);
|
||||||
ReadFromMemory(propsData, lenFile);
|
ReadFromMemory(propsData, lenFile, directoryForImports);
|
||||||
} else {
|
} else {
|
||||||
//printf("Could not open <%s>\n", filename);
|
//printf("Could not open <%s>\n", filename);
|
||||||
}
|
}
|
||||||
@@ -280,7 +335,8 @@ static bool iswordsep(char ch, bool onlyLineEnds) {
|
|||||||
|
|
||||||
// Creates an array that points into each word in the string and puts \0 terminators
|
// Creates an array that points into each word in the string and puts \0 terminators
|
||||||
// after each word.
|
// after each word.
|
||||||
static char **ArrayFromWordList(char *wordlist, bool onlyLineEnds = false) {
|
static char **ArrayFromWordList(char *wordlist, int *len, bool onlyLineEnds = false) {
|
||||||
|
#if 1
|
||||||
char prev = '\n';
|
char prev = '\n';
|
||||||
int words = 0;
|
int words = 0;
|
||||||
for (int j = 0; wordlist[j]; j++) {
|
for (int j = 0; wordlist[j]; j++) {
|
||||||
@@ -292,8 +348,8 @@ static char **ArrayFromWordList(char *wordlist, bool onlyLineEnds = false) {
|
|||||||
if (keywords) {
|
if (keywords) {
|
||||||
words = 0;
|
words = 0;
|
||||||
prev = '\0';
|
prev = '\0';
|
||||||
int len = strlen(wordlist);
|
int slen = strlen(wordlist);
|
||||||
for (int k = 0; k < len; k++) {
|
for (int k = 0; k < slen; k++) {
|
||||||
if (!iswordsep(wordlist[k], onlyLineEnds)) {
|
if (!iswordsep(wordlist[k], onlyLineEnds)) {
|
||||||
if (!prev) {
|
if (!prev) {
|
||||||
keywords[words] = &wordlist[k];
|
keywords[words] = &wordlist[k];
|
||||||
@@ -304,25 +360,69 @@ static char **ArrayFromWordList(char *wordlist, bool onlyLineEnds = false) {
|
|||||||
}
|
}
|
||||||
prev = wordlist[k];
|
prev = wordlist[k];
|
||||||
}
|
}
|
||||||
keywords[words] = &wordlist[len];
|
keywords[words] = &wordlist[slen];
|
||||||
|
*len = words;
|
||||||
|
} else {
|
||||||
|
*len = 0;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
int words = 0; // length of the returned buffer of pointers
|
||||||
|
#undef APICHUNK // how many pointers will be pre-allocated (to avoid buffer reallocation on each new pointer)
|
||||||
|
#define APICHUNK 256
|
||||||
|
int size = APICHUNK; // real size of the returned buffer of pointers
|
||||||
|
char **keywords; // buffer for the pointers returned
|
||||||
|
int slen = strlen(wordlist); //length of the buffer with api file
|
||||||
|
keywords = (char**) malloc((size + 1) * sizeof (*keywords));
|
||||||
|
words = 0;
|
||||||
|
for (int k = 0;;) {
|
||||||
|
while (iswordsep(wordlist[k], onlyLineEnds))
|
||||||
|
wordlist[k++] = '\0';
|
||||||
|
if (k >= slen)
|
||||||
|
break;
|
||||||
|
if (words >= size) {
|
||||||
|
do
|
||||||
|
size += APICHUNK;
|
||||||
|
while (size <= words);
|
||||||
|
keywords = (char**) realloc(keywords, (size + 1) * sizeof (*keywords));
|
||||||
|
}
|
||||||
|
keywords[words++] = wordlist + k;
|
||||||
|
do
|
||||||
|
if (k < slen)
|
||||||
|
k++;
|
||||||
|
else
|
||||||
|
goto out;
|
||||||
|
while (!iswordsep(wordlist[k], onlyLineEnds));
|
||||||
|
}
|
||||||
|
out:
|
||||||
|
keywords[words] = wordlist + slen;
|
||||||
|
*len = words;
|
||||||
|
#endif
|
||||||
return keywords;
|
return keywords;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WordList::Clear() {
|
void WordList::Clear() {
|
||||||
if (words) {
|
if (words) {
|
||||||
delete []words;
|
|
||||||
delete []list;
|
delete []list;
|
||||||
|
#if 1
|
||||||
|
delete []words;
|
||||||
|
#else
|
||||||
|
free(words);
|
||||||
|
#endif
|
||||||
|
free(wordsNoCase);
|
||||||
}
|
}
|
||||||
words = 0;
|
words = 0;
|
||||||
|
wordsNoCase = 0;
|
||||||
list = 0;
|
list = 0;
|
||||||
len = 0;
|
len = 0;
|
||||||
|
sorted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WordList::Set(const char *s) {
|
void WordList::Set(const char *s) {
|
||||||
len = 0;
|
|
||||||
list = StringDup(s);
|
list = StringDup(s);
|
||||||
words = ArrayFromWordList(list, onlyLineEnds);
|
sorted = false;
|
||||||
|
words = ArrayFromWordList(list, &len, onlyLineEnds);
|
||||||
|
wordsNoCase = (char**) malloc ((len + 1) * sizeof (*wordsNoCase));
|
||||||
|
memcpy(wordsNoCase, words, (len + 1) * sizeof (*words));
|
||||||
}
|
}
|
||||||
|
|
||||||
char *WordList::Allocate(int size) {
|
char *WordList::Allocate(int size) {
|
||||||
@@ -332,46 +432,36 @@ char *WordList::Allocate(int size) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void WordList::SetFromAllocated() {
|
void WordList::SetFromAllocated() {
|
||||||
len = 0;
|
sorted = false;
|
||||||
words = ArrayFromWordList(list, onlyLineEnds);
|
words = ArrayFromWordList(list, &len, onlyLineEnds);
|
||||||
|
wordsNoCase = (char**) malloc ((len + 1) * sizeof (*wordsNoCase));
|
||||||
|
memcpy(wordsNoCase, words, (len + 1) * sizeof (*words));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shell sort based upon public domain C implementation by Raymond Gardner 1991
|
int cmpString(const void *a1, const void *a2) {
|
||||||
// Used here because of problems with mingw qsort.
|
// Can't work out the correct incantation to use modern casts here
|
||||||
static void SortWordList(char **words, unsigned int len) {
|
return strcmp(*(char**)(a1), *(char**)(a2));
|
||||||
unsigned int gap = len / 2;
|
|
||||||
|
|
||||||
while (gap > 0) {
|
|
||||||
unsigned int i = gap;
|
|
||||||
while (i < len) {
|
|
||||||
unsigned int j = i;
|
|
||||||
char **a = words + j;
|
|
||||||
do {
|
|
||||||
j -= gap;
|
|
||||||
char **b = a;
|
|
||||||
a -= gap;
|
|
||||||
if (strcmp(*a, *b) > 0) {
|
|
||||||
char *tmp = *a;
|
|
||||||
*a = *b;
|
|
||||||
*b = tmp;
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} while (j >= gap);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
gap = gap / 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int cmpStringNoCase(const void *a1, const void *a2) {
|
||||||
|
// Can't work out the correct incantation to use modern casts here
|
||||||
|
return strcasecmp(*(char**)(a1), *(char**)(a2));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SortWordList(char **words, char **wordsNoCase, unsigned int len) {
|
||||||
|
qsort(reinterpret_cast<void*>(words), len, sizeof(*words),
|
||||||
|
cmpString);
|
||||||
|
qsort(reinterpret_cast<void*>(wordsNoCase), len, sizeof(*wordsNoCase),
|
||||||
|
cmpStringNoCase);
|
||||||
|
}
|
||||||
|
|
||||||
bool WordList::InList(const char *s) {
|
bool WordList::InList(const char *s) {
|
||||||
if (0 == words)
|
if (0 == words)
|
||||||
return false;
|
return false;
|
||||||
if (len == 0) {
|
if (!sorted) {
|
||||||
for (int i = 0; words[i][0]; i++)
|
sorted = true;
|
||||||
len++;
|
SortWordList(words, wordsNoCase, len);
|
||||||
SortWordList(words, len);
|
for (unsigned int k = 0; k < (sizeof(starts) / sizeof(starts[0])); k++)
|
||||||
for (int k = 0; k < (sizeof(starts) / sizeof(starts[0])); k++)
|
|
||||||
starts[k] = -1;
|
starts[k] = -1;
|
||||||
for (int l = len - 1; l >= 0; l--) {
|
for (int l = len - 1; l >= 0; l--) {
|
||||||
unsigned char indexChar = words[l][0];
|
unsigned char indexChar = words[l][0];
|
||||||
@@ -397,3 +487,256 @@ bool WordList::InList(const char *s) {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an element (complete) of the wordlist array which has the beginning
|
||||||
|
* the same as the passed string. The length of the word to compare is passed
|
||||||
|
* too. Letter case can be ignored or preserved (default).
|
||||||
|
*/
|
||||||
|
const char *WordList::GetNearestWord(const char *wordStart, int searchLen /*= -1*/, bool ignoreCase /*= false*/) {
|
||||||
|
int start = 0; // lower bound of the api array block to search
|
||||||
|
int end = len - 1; // upper bound of the api array block to search
|
||||||
|
int pivot; // index of api array element just being compared
|
||||||
|
int cond; // comparison result (in the sense of strcmp() result)
|
||||||
|
const char *word; // api array element just being compared
|
||||||
|
|
||||||
|
if (0 == words)
|
||||||
|
return NULL;
|
||||||
|
if (!sorted) {
|
||||||
|
sorted = true;
|
||||||
|
SortWordList(words, wordsNoCase, len);
|
||||||
|
}
|
||||||
|
if (ignoreCase)
|
||||||
|
while (start <= end) { // binary searching loop
|
||||||
|
pivot = (start + end) >> 1;
|
||||||
|
word = wordsNoCase[pivot];
|
||||||
|
cond = strncasecmp(wordStart, word, searchLen);
|
||||||
|
if (!cond && nonFuncChar(word[searchLen])) // maybe there should be a "non-word character" test here?
|
||||||
|
return word; // result must not be freed with free()
|
||||||
|
else if (cond < 0)
|
||||||
|
end = pivot - 1;
|
||||||
|
else if (cond > 0)
|
||||||
|
start = pivot + 1;
|
||||||
|
}
|
||||||
|
else // preserve the letter case
|
||||||
|
while (start <= end) { // binary searching loop
|
||||||
|
pivot = (start + end) >> 1;
|
||||||
|
word = words[pivot];
|
||||||
|
cond = strncmp(wordStart, word, searchLen);
|
||||||
|
if (!cond && nonFuncChar(word[searchLen])) // maybe there should be a "non-word character" test here?
|
||||||
|
return word; // result must not be freed with free()
|
||||||
|
else if (cond >= 0)
|
||||||
|
start = pivot + 1;
|
||||||
|
else if (cond < 0)
|
||||||
|
end = pivot - 1;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns elements (first words of them) of the wordlist array which have
|
||||||
|
* the beginning the same as the passed string. The length of the word to
|
||||||
|
* compare is passed too. Letter case can be ignored or preserved (default).
|
||||||
|
* If there are more words meeting the condition they are returned all of
|
||||||
|
* them in the ascending order separated with spaces.
|
||||||
|
*
|
||||||
|
* NOTE: returned buffer has to be freed with a free() call.
|
||||||
|
*/
|
||||||
|
char *WordList::GetNearestWords(const char *wordStart, int searchLen /*= -1*/, bool ignoreCase /*= false*/) {
|
||||||
|
int wordlen; // length of the word part (before the '(' brace) of the api array element
|
||||||
|
int length = 0; // length of the returned buffer of words (string)
|
||||||
|
int newlength; // length of the new buffer before the reallocating itself
|
||||||
|
#undef WORDCHUNK // how many characters will be pre-allocated (to avoid buffer reallocation on each new word)
|
||||||
|
#define WORDCHUNK 100
|
||||||
|
int size = WORDCHUNK; // real size of the returned buffer of words
|
||||||
|
char *buffer; // buffer for the words returned
|
||||||
|
int start = 0; // lower bound of the api array block to search
|
||||||
|
int end = len - 1; // upper bound of the api array block to search
|
||||||
|
int pivot; // index of api array element just being compared
|
||||||
|
int cond; // comparison result (in the sense of strcmp() result)
|
||||||
|
int oldpivot; // pivot storage to be able to browse the api array upwards and then downwards
|
||||||
|
const char *word; // api array element just being compared
|
||||||
|
const char *brace; // position of the opening brace in the api array element just being compared
|
||||||
|
|
||||||
|
if (0 == words)
|
||||||
|
return NULL;
|
||||||
|
if (!sorted) {
|
||||||
|
sorted = true;
|
||||||
|
SortWordList(words, wordsNoCase, len);
|
||||||
|
}
|
||||||
|
buffer = (char*) malloc(size);
|
||||||
|
*buffer = '\0';
|
||||||
|
if (ignoreCase)
|
||||||
|
while (start <= end) { // binary searching loop
|
||||||
|
pivot = (start + end) >> 1;
|
||||||
|
word = wordsNoCase[pivot];
|
||||||
|
cond = strncasecmp(wordStart, word, searchLen);
|
||||||
|
if (!cond) {
|
||||||
|
oldpivot = pivot;
|
||||||
|
do { // browse sequentially the rest after the hit
|
||||||
|
brace = strchr(word, '(');
|
||||||
|
if (brace)
|
||||||
|
do
|
||||||
|
if (--brace < word)
|
||||||
|
break;
|
||||||
|
while (isspace(*brace));
|
||||||
|
else {
|
||||||
|
brace = word + strlen(word);
|
||||||
|
do
|
||||||
|
if (--brace < word)
|
||||||
|
break;
|
||||||
|
while (isspace(*brace));
|
||||||
|
}
|
||||||
|
wordlen = brace - word + 1;
|
||||||
|
newlength = length + wordlen; // stretch the buffer
|
||||||
|
if (length)
|
||||||
|
newlength++;
|
||||||
|
if (newlength >= size) {
|
||||||
|
do
|
||||||
|
size += WORDCHUNK;
|
||||||
|
while (size <= newlength);
|
||||||
|
buffer = (char*) realloc(buffer, size);
|
||||||
|
}
|
||||||
|
if (length) // append a new entry
|
||||||
|
buffer[length++] = ' ';
|
||||||
|
memcpy(buffer + length, word, wordlen);
|
||||||
|
length = newlength;
|
||||||
|
buffer[length] = '\0';
|
||||||
|
if (++pivot > end)
|
||||||
|
break;
|
||||||
|
word = wordsNoCase[pivot];
|
||||||
|
} while (!strncasecmp(wordStart, word, searchLen));
|
||||||
|
|
||||||
|
pivot = oldpivot;
|
||||||
|
for (;;) { // browse sequentially the rest before the hit
|
||||||
|
if (--pivot < start)
|
||||||
|
break;
|
||||||
|
word = wordsNoCase[pivot];
|
||||||
|
if (strncasecmp(wordStart, word, searchLen))
|
||||||
|
break;
|
||||||
|
brace = strchr(word, '(');
|
||||||
|
if (brace)
|
||||||
|
do
|
||||||
|
if (--brace < word)
|
||||||
|
break;
|
||||||
|
while (isspace(*brace));
|
||||||
|
else {
|
||||||
|
brace = word + strlen(word);
|
||||||
|
do
|
||||||
|
if (--brace < word)
|
||||||
|
break;
|
||||||
|
while (isspace(*brace));
|
||||||
|
}
|
||||||
|
wordlen = brace - word + 1;
|
||||||
|
newlength = length + wordlen; // stretch the buffer
|
||||||
|
if (length)
|
||||||
|
newlength++;
|
||||||
|
if (newlength >= size)
|
||||||
|
{
|
||||||
|
do
|
||||||
|
size += WORDCHUNK;
|
||||||
|
while (size <= newlength);
|
||||||
|
buffer = (char*) realloc(buffer, size);
|
||||||
|
}
|
||||||
|
if (length) // append a new entry
|
||||||
|
buffer[length++] = ' ';
|
||||||
|
memcpy(buffer + length, word, wordlen);
|
||||||
|
length = newlength;
|
||||||
|
buffer[length] = '\0';
|
||||||
|
}
|
||||||
|
return buffer; // result has to be freed with free()
|
||||||
|
}
|
||||||
|
else if (cond < 0)
|
||||||
|
end = pivot - 1;
|
||||||
|
else if (cond > 0)
|
||||||
|
start = pivot + 1;
|
||||||
|
}
|
||||||
|
else // preserve the letter case
|
||||||
|
while (start <= end) { // binary searching loop
|
||||||
|
pivot = (start + end) >> 1;
|
||||||
|
word = words[pivot];
|
||||||
|
cond = strncmp(wordStart, word, searchLen);
|
||||||
|
if (!cond) {
|
||||||
|
oldpivot = pivot;
|
||||||
|
do { // browse sequentially the rest after the hit
|
||||||
|
brace = strchr(word, '(');
|
||||||
|
if (brace)
|
||||||
|
do
|
||||||
|
if (--brace < word)
|
||||||
|
break;
|
||||||
|
while (isspace(*brace));
|
||||||
|
else {
|
||||||
|
brace = word + strlen(word);
|
||||||
|
do
|
||||||
|
if (--brace < word)
|
||||||
|
break;
|
||||||
|
while (isspace(*brace));
|
||||||
|
}
|
||||||
|
wordlen = brace - word + 1;
|
||||||
|
newlength = length + wordlen; // stretch the buffer
|
||||||
|
if (length)
|
||||||
|
newlength++;
|
||||||
|
if (newlength >= size)
|
||||||
|
{
|
||||||
|
do
|
||||||
|
size += WORDCHUNK;
|
||||||
|
while (size <= newlength);
|
||||||
|
buffer = (char*) realloc(buffer, size);
|
||||||
|
}
|
||||||
|
if (length) // append a new entry
|
||||||
|
buffer[length++] = ' ';
|
||||||
|
memcpy(buffer + length, word, wordlen);
|
||||||
|
length = newlength;
|
||||||
|
buffer[length] = '\0';
|
||||||
|
if (++pivot > end)
|
||||||
|
break;
|
||||||
|
word = words[pivot];
|
||||||
|
} while (!strncmp(wordStart, word, searchLen));
|
||||||
|
|
||||||
|
pivot = oldpivot;
|
||||||
|
for (;;) { // browse sequentially the rest before the hit
|
||||||
|
if (--pivot < start)
|
||||||
|
break;
|
||||||
|
word = words[pivot];
|
||||||
|
if (strncmp(wordStart, word, searchLen))
|
||||||
|
break;
|
||||||
|
brace = strchr(word, '(');
|
||||||
|
if (brace)
|
||||||
|
do
|
||||||
|
if (--brace < word)
|
||||||
|
break;
|
||||||
|
while (isspace(*brace));
|
||||||
|
else {
|
||||||
|
brace = word + strlen(word);
|
||||||
|
do
|
||||||
|
if (--brace < word)
|
||||||
|
break;
|
||||||
|
while (isspace(*brace));
|
||||||
|
}
|
||||||
|
wordlen = brace - word + 1;
|
||||||
|
newlength = length + wordlen; // stretch the buffer
|
||||||
|
if (length)
|
||||||
|
newlength++;
|
||||||
|
if (newlength >= size)
|
||||||
|
{
|
||||||
|
do
|
||||||
|
size += WORDCHUNK;
|
||||||
|
while (size <= newlength);
|
||||||
|
buffer = (char*) realloc(buffer, size);
|
||||||
|
}
|
||||||
|
if (length) // append a new entry
|
||||||
|
buffer[length++] = ' ';
|
||||||
|
memcpy(buffer + length, word, wordlen);
|
||||||
|
length = newlength;
|
||||||
|
buffer[length] = '\0';
|
||||||
|
}
|
||||||
|
return buffer; // result has to be freed with free()
|
||||||
|
}
|
||||||
|
else if (cond < 0)
|
||||||
|
end = pivot - 1;
|
||||||
|
else if (cond > 0)
|
||||||
|
start = pivot + 1;
|
||||||
|
}
|
||||||
|
free(buffer);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,13 +6,12 @@
|
|||||||
#ifndef SVECTOR_H
|
#ifndef SVECTOR_H
|
||||||
#define SVECTOR_H
|
#define SVECTOR_H
|
||||||
|
|
||||||
// A simple expandable vector.
|
// A simple expandable integer vector.
|
||||||
// T must support assignment.
|
|
||||||
// Storage not allocated for elements until an element is used.
|
// Storage not allocated for elements until an element is used.
|
||||||
// This makes it very lightweight unless used so is a good match for optional features.
|
// This makes it very lightweight unless used so is a good match for optional features.
|
||||||
template<class T, int sizeIncrement>
|
|
||||||
class SVector {
|
class SVector {
|
||||||
T *v;
|
int *v;
|
||||||
unsigned int size; // Number of elements allocated
|
unsigned int size; // Number of elements allocated
|
||||||
unsigned int len; // Number of elements in vector
|
unsigned int len; // Number of elements in vector
|
||||||
bool allocFailure; // A memory allocation call has failed
|
bool allocFailure; // A memory allocation call has failed
|
||||||
@@ -20,19 +19,23 @@ class SVector {
|
|||||||
// Internally allocate more elements than the user wants to avoid
|
// Internally allocate more elements than the user wants to avoid
|
||||||
// thrashng the memory allocator
|
// thrashng the memory allocator
|
||||||
void SizeTo(int newSize) {
|
void SizeTo(int newSize) {
|
||||||
if (newSize < sizeIncrement)
|
if (newSize < 4000)
|
||||||
newSize += sizeIncrement;
|
newSize += 4000;
|
||||||
else
|
else
|
||||||
newSize = (newSize * 3) / 2;
|
newSize = (newSize * 3) / 2;
|
||||||
T* newv = new T[newSize];
|
int* newv = new int[newSize];
|
||||||
if (!newv) {
|
if (!newv) {
|
||||||
allocFailure = true;
|
allocFailure = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
size = newSize;
|
size = newSize;
|
||||||
for (int i=0; i<len; i++) {
|
unsigned int i=0;
|
||||||
|
for (; i<len; i++) {
|
||||||
newv[i] = v[i];
|
newv[i] = v[i];
|
||||||
}
|
}
|
||||||
|
for (; i<size; i++) {
|
||||||
|
newv[i] = 0;
|
||||||
|
}
|
||||||
delete []v;
|
delete []v;
|
||||||
v = newv;
|
v = newv;
|
||||||
}
|
}
|
||||||
@@ -79,7 +82,7 @@ public:
|
|||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
T &operator[](unsigned int i) {
|
int &operator[](unsigned int i) {
|
||||||
if (i >= len) {
|
if (i >= len) {
|
||||||
if (i >= size) {
|
if (i >= size) {
|
||||||
SizeTo(i);
|
SizeTo(i);
|
||||||
@@ -94,13 +97,13 @@ public:
|
|||||||
size = 0;
|
size = 0;
|
||||||
len = 0;
|
len = 0;
|
||||||
}
|
}
|
||||||
void SetLength(int newLen) {
|
void SetLength(unsigned int newLength) {
|
||||||
if (newLen > len) {
|
if (newLength > len) {
|
||||||
if (newLen >= size) {
|
if (newLength >= size) {
|
||||||
SizeTo(newLen);
|
SizeTo(newLength);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
len = newLen;
|
len = newLength;
|
||||||
}
|
}
|
||||||
int Length() const {
|
int Length() const {
|
||||||
return len;
|
return len;
|
||||||
|
|||||||
@@ -11,10 +11,12 @@
|
|||||||
#include "Platform.h"
|
#include "Platform.h"
|
||||||
|
|
||||||
#include "Scintilla.h"
|
#include "Scintilla.h"
|
||||||
|
#include "PropSet.h"
|
||||||
#ifdef SCI_LEXER
|
#ifdef SCI_LEXER
|
||||||
#include "SciLexer.h"
|
#include "SciLexer.h"
|
||||||
#include "PropSet.h"
|
|
||||||
#include "Accessor.h"
|
#include "Accessor.h"
|
||||||
|
#include "WindowAccessor.h"
|
||||||
|
#include "DocumentAccessor.h"
|
||||||
#include "KeyWords.h"
|
#include "KeyWords.h"
|
||||||
#endif
|
#endif
|
||||||
#include "ContractionState.h"
|
#include "ContractionState.h"
|
||||||
@@ -39,9 +41,15 @@ ScintillaBase::ScintillaBase() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
ScintillaBase::~ScintillaBase() {}
|
ScintillaBase::~ScintillaBase() {
|
||||||
|
#ifdef SCI_LEXER
|
||||||
|
for (int wl=0;wl<numWordLists;wl++)
|
||||||
|
delete keyWordLists[wl];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void ScintillaBase::Finalise() {
|
void ScintillaBase::Finalise() {
|
||||||
|
Editor::Finalise();
|
||||||
popup.Destroy();
|
popup.Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,11 +58,12 @@ void ScintillaBase::RefreshColourPalette(Palette &pal, bool want) {
|
|||||||
ct.RefreshColourPalette(pal, want);
|
ct.RefreshColourPalette(pal, want);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScintillaBase::AddChar(char ch) {
|
void ScintillaBase::AddCharUTF(char *s, unsigned int len) {
|
||||||
bool acActiveBeforeCharAdded = ac.Active();
|
bool acActiveBeforeCharAdded = ac.Active();
|
||||||
Editor::AddChar(ch);
|
if (!acActiveBeforeCharAdded || !ac.IsFillUpChar(*s))
|
||||||
|
Editor::AddCharUTF(s, len);
|
||||||
if (acActiveBeforeCharAdded)
|
if (acActiveBeforeCharAdded)
|
||||||
AutoCompleteChanged(ch);
|
AutoCompleteChanged(s[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScintillaBase::Command(int cmdId) {
|
void ScintillaBase::Command(int cmdId) {
|
||||||
@@ -68,7 +77,7 @@ void ScintillaBase::Command(int cmdId) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case idcmdUndo:
|
case idcmdUndo:
|
||||||
WndProc(WM_UNDO, 0, 0);
|
WndProc(SCI_UNDO, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case idcmdRedo:
|
case idcmdRedo:
|
||||||
@@ -76,19 +85,19 @@ void ScintillaBase::Command(int cmdId) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case idcmdCut:
|
case idcmdCut:
|
||||||
WndProc(WM_CUT, 0, 0);
|
WndProc(SCI_CUT, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case idcmdCopy:
|
case idcmdCopy:
|
||||||
WndProc(WM_COPY, 0, 0);
|
WndProc(SCI_COPY, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case idcmdPaste:
|
case idcmdPaste:
|
||||||
WndProc(WM_PASTE, 0, 0);
|
WndProc(SCI_PASTE, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case idcmdDelete:
|
case idcmdDelete:
|
||||||
WndProc(WM_CLEAR, 0, 0);
|
WndProc(SCI_CLEAR, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case idcmdSelectAll:
|
case idcmdSelectAll:
|
||||||
@@ -97,7 +106,7 @@ void ScintillaBase::Command(int cmdId) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScintillaBase::KeyCommand(UINT iMessage) {
|
int ScintillaBase::KeyCommand(unsigned int iMessage) {
|
||||||
// Most key commands cancel autocompletion mode
|
// Most key commands cancel autocompletion mode
|
||||||
if (ac.Active()) {
|
if (ac.Active()) {
|
||||||
switch (iMessage) {
|
switch (iMessage) {
|
||||||
@@ -128,6 +137,9 @@ int ScintillaBase::KeyCommand(UINT iMessage) {
|
|||||||
case SCI_TAB:
|
case SCI_TAB:
|
||||||
AutoCompleteCompleted();
|
AutoCompleteCompleted();
|
||||||
return 0;
|
return 0;
|
||||||
|
case SCI_NEWLINE:
|
||||||
|
AutoCompleteCompleted();
|
||||||
|
return 0;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
ac.Cancel();
|
ac.Cancel();
|
||||||
@@ -155,15 +167,30 @@ int ScintillaBase::KeyCommand(UINT iMessage) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) {
|
void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) {
|
||||||
//Platform::DebugPrintf("AutoCOmplete %s\n", list);
|
//Platform::DebugPrintf("AutoComplete %s\n", list);
|
||||||
ct.CallTipCancel();
|
ct.CallTipCancel();
|
||||||
|
|
||||||
|
if (ac.chooseSingle) {
|
||||||
|
if (list && !strchr(list, ac.GetSeparator())) {
|
||||||
|
if (ac.ignoreCase) {
|
||||||
|
SetEmptySelection(currentPos - lenEntered);
|
||||||
|
pdoc->DeleteChars(currentPos, lenEntered);
|
||||||
|
SetEmptySelection(currentPos);
|
||||||
|
pdoc->InsertString(currentPos, list);
|
||||||
|
SetEmptySelection(currentPos + strlen(list));
|
||||||
|
} else {
|
||||||
|
SetEmptySelection(currentPos);
|
||||||
|
pdoc->InsertString(currentPos, list + lenEntered);
|
||||||
|
SetEmptySelection(currentPos + strlen(list + lenEntered));
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
ac.Start(wDraw, idAutoComplete, currentPos, lenEntered);
|
ac.Start(wDraw, idAutoComplete, currentPos, lenEntered);
|
||||||
|
|
||||||
PRectangle rcClient = GetClientRectangle();
|
PRectangle rcClient = GetClientRectangle();
|
||||||
Point pt = LocationFromPosition(currentPos-lenEntered);
|
Point pt = LocationFromPosition(currentPos-lenEntered);
|
||||||
|
|
||||||
//Platform::DebugPrintf("Auto complete %x\n", lbAutoComplete);
|
|
||||||
int heightLB = 100;
|
int heightLB = 100;
|
||||||
int widthLB = 100;
|
int widthLB = 100;
|
||||||
if (pt.x >= rcClient.right - widthLB) {
|
if (pt.x >= rcClient.right - widthLB) {
|
||||||
@@ -186,16 +213,18 @@ void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) {
|
|||||||
rcac.right = rcac.left + widthLB;
|
rcac.right = rcac.left + widthLB;
|
||||||
rcac.bottom = Platform::Minimum(rcac.top + heightLB, rcClient.bottom);
|
rcac.bottom = Platform::Minimum(rcac.top + heightLB, rcClient.bottom);
|
||||||
ac.lb.SetPositionRelative(rcac, wMain);
|
ac.lb.SetPositionRelative(rcac, wMain);
|
||||||
ac.lb.SetFont(vs.styles[0].font);
|
ac.lb.SetFont(vs.styles[STYLE_DEFAULT].font);
|
||||||
|
ac.lb.SetAverageCharWidth(vs.styles[STYLE_DEFAULT].aveCharWidth);
|
||||||
|
|
||||||
int maxStrLen = ac.SetList(list);
|
ac.SetList(list);
|
||||||
|
|
||||||
// Fiddle the position of the list so it is right next to the target and wide enough for all its strings
|
// Fiddle the position of the list so it is right next to the target and wide enough for all its strings
|
||||||
PRectangle rcList = ac.lb.GetPosition();
|
PRectangle rcList = ac.lb.GetDesiredRect();
|
||||||
int heightAlloced = rcList.bottom - rcList.top;
|
int heightAlloced = rcList.bottom - rcList.top;
|
||||||
|
widthLB = Platform::Maximum(widthLB, rcList.right - rcList.left);
|
||||||
// Make an allowance for large strings in list
|
// Make an allowance for large strings in list
|
||||||
rcList.left = pt.x - 5;
|
rcList.left = pt.x - 5;
|
||||||
rcList.right = rcList.left + Platform::Maximum(widthLB, maxStrLen * 8 + 16);
|
rcList.right = rcList.left + widthLB;
|
||||||
if (pt.y >= rcClient.bottom - heightLB && // Wont fit below.
|
if (pt.y >= rcClient.bottom - heightLB && // Wont fit below.
|
||||||
pt.y >= (rcClient.bottom + rcClient.top) / 2) { // and there is more room above.
|
pt.y >= (rcClient.bottom + rcClient.top) / 2) { // and there is more room above.
|
||||||
rcList.top = pt.y - heightAlloced;
|
rcList.top = pt.y - heightAlloced;
|
||||||
@@ -204,8 +233,10 @@ void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) {
|
|||||||
}
|
}
|
||||||
rcList.bottom = rcList.top + heightAlloced;
|
rcList.bottom = rcList.top + heightAlloced;
|
||||||
ac.lb.SetPositionRelative(rcList, wMain);
|
ac.lb.SetPositionRelative(rcList, wMain);
|
||||||
//lbAutoComplete.SetPosition(rcList);
|
|
||||||
ac.Show();
|
ac.Show();
|
||||||
|
if (lenEntered != 0) {
|
||||||
|
AutoCompleteMoveToCurrentWord();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScintillaBase::AutoCompleteCancel() {
|
void ScintillaBase::AutoCompleteCancel() {
|
||||||
@@ -216,36 +247,63 @@ void ScintillaBase::AutoCompleteMove(int delta) {
|
|||||||
ac.Move(delta);
|
ac.Move(delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScintillaBase::AutoCompleteMoveToCurrentWord() {
|
||||||
|
char wordCurrent[1000];
|
||||||
|
int i;
|
||||||
|
int startWord = ac.posStart - ac.startLen;
|
||||||
|
for (i = startWord; i < currentPos; i++)
|
||||||
|
wordCurrent[i - startWord] = pdoc->CharAt(i);
|
||||||
|
wordCurrent[i - startWord] = '\0';
|
||||||
|
ac.Select(wordCurrent);
|
||||||
|
}
|
||||||
|
|
||||||
void ScintillaBase::AutoCompleteChanged(char ch) {
|
void ScintillaBase::AutoCompleteChanged(char ch) {
|
||||||
if (currentPos <= ac.posStart) {
|
if (ac.IsFillUpChar(ch)) {
|
||||||
|
AutoCompleteCompleted(ch);
|
||||||
|
} else if (currentPos <= ac.posStart - ac.startLen) {
|
||||||
|
ac.Cancel();
|
||||||
|
} else if (ac.cancelAtStartPos && currentPos <= ac.posStart) {
|
||||||
ac.Cancel();
|
ac.Cancel();
|
||||||
} else if (ac.IsStopChar(ch)) {
|
} else if (ac.IsStopChar(ch)) {
|
||||||
ac.Cancel();
|
ac.Cancel();
|
||||||
} else {
|
} else {
|
||||||
char wordCurrent[1000];
|
AutoCompleteMoveToCurrentWord();
|
||||||
int i;
|
|
||||||
int startWord = ac.posStart - ac.startLen;
|
|
||||||
for (i = startWord; i < currentPos; i++)
|
|
||||||
wordCurrent[i - startWord] = pdoc->CharAt(i);
|
|
||||||
wordCurrent[i - startWord] = '\0';
|
|
||||||
ac.Select(wordCurrent);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScintillaBase::AutoCompleteCompleted() {
|
void ScintillaBase::AutoCompleteCompleted(char fillUp/*='\0'*/) {
|
||||||
int item = ac.lb.GetSelection();
|
int item = ac.lb.GetSelection();
|
||||||
char selected[200];
|
char selected[1000];
|
||||||
if (item != -1) {
|
if (item != -1) {
|
||||||
ac.lb.GetValue(item, selected, sizeof(selected));
|
ac.lb.GetValue(item, selected, sizeof(selected));
|
||||||
}
|
}
|
||||||
ac.Cancel();
|
ac.Cancel();
|
||||||
if (currentPos != ac.posStart) {
|
|
||||||
pdoc->DeleteChars(ac.posStart, currentPos - ac.posStart);
|
if (ac.ignoreCase) {
|
||||||
}
|
if (currentPos != ac.posStart) {
|
||||||
SetEmptySelection(ac.posStart);
|
pdoc->DeleteChars(ac.posStart, currentPos - ac.posStart);
|
||||||
if (item != -1) {
|
}
|
||||||
pdoc->InsertString(currentPos, selected + ac.startLen);
|
SetEmptySelection(ac.posStart - ac.startLen);
|
||||||
SetEmptySelection(currentPos + strlen(selected + ac.startLen));
|
pdoc->DeleteChars(ac.posStart - ac.startLen, ac.startLen);
|
||||||
|
if (item != -1) {
|
||||||
|
SString piece = selected;
|
||||||
|
if (fillUp)
|
||||||
|
piece += fillUp;
|
||||||
|
pdoc->InsertString(currentPos, piece.c_str());
|
||||||
|
SetEmptySelection(currentPos + piece.length());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (currentPos != ac.posStart) {
|
||||||
|
pdoc->DeleteChars(ac.posStart, currentPos - ac.posStart);
|
||||||
|
}
|
||||||
|
SetEmptySelection(ac.posStart);
|
||||||
|
if (item != -1) {
|
||||||
|
SString piece = selected + ac.startLen;
|
||||||
|
if (fillUp)
|
||||||
|
piece += fillUp;
|
||||||
|
pdoc->InsertString(currentPos, piece.c_str());
|
||||||
|
SetEmptySelection(currentPos + piece.length());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,16 +314,21 @@ void ScintillaBase::ContextMenu(Point pt) {
|
|||||||
AddToPopUp("");
|
AddToPopUp("");
|
||||||
AddToPopUp("Cut", idcmdCut, currentPos != anchor);
|
AddToPopUp("Cut", idcmdCut, currentPos != anchor);
|
||||||
AddToPopUp("Copy", idcmdCopy, currentPos != anchor);
|
AddToPopUp("Copy", idcmdCopy, currentPos != anchor);
|
||||||
AddToPopUp("Paste", idcmdPaste, WndProc(EM_CANPASTE, 0, 0));
|
AddToPopUp("Paste", idcmdPaste, WndProc(SCI_CANPASTE, 0, 0));
|
||||||
AddToPopUp("Delete", idcmdDelete, currentPos != anchor);
|
AddToPopUp("Delete", idcmdDelete, currentPos != anchor);
|
||||||
AddToPopUp("");
|
AddToPopUp("");
|
||||||
AddToPopUp("Select All", idcmdSelectAll);
|
AddToPopUp("Select All", idcmdSelectAll);
|
||||||
popup.Show(pt, wMain);
|
popup.Show(pt, wMain);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScintillaBase::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) {
|
void ScintillaBase::CancelModes() {
|
||||||
AutoCompleteCancel();
|
AutoCompleteCancel();
|
||||||
ct.CallTipCancel();
|
ct.CallTipCancel();
|
||||||
|
Editor::CancelModes();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScintillaBase::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) {
|
||||||
|
CancelModes();
|
||||||
Editor::ButtonDown(pt, curTime, shift, ctrl, alt);
|
Editor::ButtonDown(pt, curTime, shift, ctrl, alt);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,33 +339,33 @@ void ScintillaBase::Colourise(int start, int end) {
|
|||||||
end = lengthDoc;
|
end = lengthDoc;
|
||||||
int len = end - start;
|
int len = end - start;
|
||||||
|
|
||||||
PropSet props;
|
//WindowAccessor styler(wMain.GetID(), props);
|
||||||
|
DocumentAccessor styler(pdoc, props);
|
||||||
StylingContext styler(wMain.GetID(), props);
|
|
||||||
|
|
||||||
int styleStart = 0;
|
int styleStart = 0;
|
||||||
if (start > 0)
|
if (start > 0)
|
||||||
styleStart = styler.StyleAt(start - 1);
|
styleStart = styler.StyleAt(start - 1);
|
||||||
|
styler.SetCodePage(pdoc->dbcsCodePage);
|
||||||
ColouriseDoc(pdoc->dbcsCodePage, start, len, styleStart, lexLanguage, keyWordLists, styler);
|
|
||||||
|
LexerModule::Colourise(start, len, styleStart, lexLanguage, keyWordLists, styler);
|
||||||
styler.Flush();
|
styler.Flush();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void ScintillaBase::NotifyStyleNeeded(int endStyleNeeded) {
|
void ScintillaBase::NotifyStyleToNeeded(int endStyleNeeded) {
|
||||||
#ifdef SCI_LEXER
|
#ifdef SCI_LEXER
|
||||||
if (lexLanguage != SCLEX_CONTAINER) {
|
if (lexLanguage != SCLEX_CONTAINER) {
|
||||||
int endStyled = Platform::SendScintilla(wMain.GetID(), SCI_GETENDSTYLED, 0, 0);
|
int endStyled = Platform::SendScintilla(wMain.GetID(), SCI_GETENDSTYLED, 0, 0);
|
||||||
int lineEndStyled = Platform::SendScintilla(wMain.GetID(), EM_LINEFROMCHAR, endStyled, 0);
|
int lineEndStyled = Platform::SendScintilla(wMain.GetID(), SCI_LINEFROMPOSITION, endStyled, 0);
|
||||||
endStyled = Platform::SendScintilla(wMain.GetID(), EM_LINEINDEX, lineEndStyled, 0);
|
endStyled = Platform::SendScintilla(wMain.GetID(), SCI_POSITIONFROMLINE, lineEndStyled, 0);
|
||||||
Colourise(endStyled, endStyleNeeded);
|
Colourise(endStyled, endStyleNeeded);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
Editor::NotifyStyleNeeded(endStyleNeeded);
|
Editor::NotifyStyleToNeeded(endStyleNeeded);
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT ScintillaBase::WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) {
|
long ScintillaBase::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
|
||||||
switch (iMessage) {
|
switch (iMessage) {
|
||||||
case SCI_AUTOCSHOW:
|
case SCI_AUTOCSHOW:
|
||||||
AutoCompleteStart(wParam, reinterpret_cast<const char *>(lParam));
|
AutoCompleteStart(wParam, reinterpret_cast<const char *>(lParam));
|
||||||
@@ -322,16 +385,52 @@ LRESULT ScintillaBase::WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) {
|
|||||||
AutoCompleteCompleted();
|
AutoCompleteCompleted();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SCI_AUTOCSETSEPARATOR:
|
||||||
|
ac.SetSeparator(static_cast<char>(wParam));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SCI_AUTOCGETSEPARATOR:
|
||||||
|
return ac.GetSeparator();
|
||||||
|
|
||||||
case SCI_AUTOCSTOPS:
|
case SCI_AUTOCSTOPS:
|
||||||
ac.SetStopChars(reinterpret_cast<char *>(lParam));
|
ac.SetStopChars(reinterpret_cast<char *>(lParam));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SCI_AUTOCSELECT:
|
||||||
|
ac.Select(reinterpret_cast<char *>(lParam));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SCI_AUTOCSETCANCELATSTART:
|
||||||
|
ac.cancelAtStartPos = wParam;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SCI_AUTOCGETCANCELATSTART:
|
||||||
|
return ac.cancelAtStartPos;
|
||||||
|
|
||||||
|
case SCI_AUTOCSETFILLUPS:
|
||||||
|
ac.SetFillUpChars(reinterpret_cast<char *>(lParam));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SCI_AUTOCSETCHOOSESINGLE:
|
||||||
|
ac.chooseSingle = wParam;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SCI_AUTOCGETCHOOSESINGLE:
|
||||||
|
return ac.chooseSingle;
|
||||||
|
|
||||||
|
case SCI_AUTOCSETIGNORECASE:
|
||||||
|
ac.ignoreCase = wParam;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SCI_AUTOCGETIGNORECASE:
|
||||||
|
return ac.ignoreCase;
|
||||||
|
|
||||||
case SCI_CALLTIPSHOW: {
|
case SCI_CALLTIPSHOW: {
|
||||||
AutoCompleteCancel();
|
AutoCompleteCancel();
|
||||||
if (!ct.wCallTip.Created()) {
|
if (!ct.wCallTip.Created()) {
|
||||||
PRectangle rc = ct.CallTipStart(currentPos, LocationFromPosition(wParam),
|
PRectangle rc = ct.CallTipStart(currentPos, LocationFromPosition(wParam),
|
||||||
reinterpret_cast<char *>(lParam),
|
reinterpret_cast<char *>(lParam),
|
||||||
vs.styles[0].fontName, vs.styles[0].size);
|
vs.styles[STYLE_DEFAULT].fontName, vs.styles[STYLE_DEFAULT].size);
|
||||||
// If the call-tip window would be out of the client
|
// If the call-tip window would be out of the client
|
||||||
// space, adjust so it displays above the text.
|
// space, adjust so it displays above the text.
|
||||||
PRectangle rcClient = GetClientRectangle();
|
PRectangle rcClient = GetClientRectangle();
|
||||||
@@ -377,6 +476,7 @@ LRESULT ScintillaBase::WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) {
|
|||||||
|
|
||||||
case SCI_COLOURISE:
|
case SCI_COLOURISE:
|
||||||
Colourise(wParam, lParam);
|
Colourise(wParam, lParam);
|
||||||
|
Redraw();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCI_SETPROPERTY:
|
case SCI_SETPROPERTY:
|
||||||
@@ -385,7 +485,7 @@ LRESULT ScintillaBase::WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SCI_SETKEYWORDS:
|
case SCI_SETKEYWORDS:
|
||||||
if ((wParam >= 0) && (wParam < numWordLists)) {
|
if (wParam < numWordLists) {
|
||||||
keyWordLists[wParam]->Clear();
|
keyWordLists[wParam]->Clear();
|
||||||
keyWordLists[wParam]->Set(reinterpret_cast<const char *>(lParam));
|
keyWordLists[wParam]->Set(reinterpret_cast<const char *>(lParam));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,9 @@
|
|||||||
#define SCINTILLABASE_H
|
#define SCINTILLABASE_H
|
||||||
|
|
||||||
class ScintillaBase : public Editor {
|
class ScintillaBase : public Editor {
|
||||||
|
// Private so ScintillaBase objects can not be copied
|
||||||
|
ScintillaBase(const ScintillaBase &) : Editor() {}
|
||||||
|
ScintillaBase &operator=(const ScintillaBase &) { return *this; }
|
||||||
protected:
|
protected:
|
||||||
// Enumeration of commands and child windows
|
// Enumeration of commands and child windows
|
||||||
enum {
|
enum {
|
||||||
@@ -42,15 +45,17 @@ protected:
|
|||||||
|
|
||||||
virtual void RefreshColourPalette(Palette &pal, bool want);
|
virtual void RefreshColourPalette(Palette &pal, bool want);
|
||||||
|
|
||||||
virtual void AddChar(char ch);
|
virtual void AddCharUTF(char *s, unsigned int len);
|
||||||
void Command(int cmdId);
|
void Command(int cmdId);
|
||||||
virtual int KeyCommand(UINT iMessage);
|
virtual void CancelModes();
|
||||||
|
virtual int KeyCommand(unsigned int iMessage);
|
||||||
|
|
||||||
void AutoCompleteStart(int lenEntered, const char *list);
|
void AutoCompleteStart(int lenEntered, const char *list);
|
||||||
void AutoCompleteCancel();
|
void AutoCompleteCancel();
|
||||||
void AutoCompleteMove(int delta);
|
void AutoCompleteMove(int delta);
|
||||||
void AutoCompleteChanged(char ch=0);
|
void AutoCompleteChanged(char ch=0);
|
||||||
void AutoCompleteCompleted();
|
void AutoCompleteCompleted(char fillUp='\0');
|
||||||
|
void AutoCompleteMoveToCurrentWord();
|
||||||
|
|
||||||
virtual void CreateCallTipWindow(PRectangle rc) = 0;
|
virtual void CreateCallTipWindow(PRectangle rc) = 0;
|
||||||
|
|
||||||
@@ -59,10 +64,10 @@ protected:
|
|||||||
|
|
||||||
virtual void ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);
|
virtual void ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);
|
||||||
|
|
||||||
virtual void NotifyStyleNeeded(int endStyleNeeded);
|
virtual void NotifyStyleToNeeded(int endStyleNeeded);
|
||||||
public:
|
public:
|
||||||
// Public so scintilla_send_message can use it
|
// Public so scintilla_send_message can use it
|
||||||
virtual LRESULT WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam);
|
virtual long WndProc(unsigned int iMessage, unsigned long wParam, long lParam);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -7,49 +7,111 @@
|
|||||||
|
|
||||||
#include "Platform.h"
|
#include "Platform.h"
|
||||||
|
|
||||||
|
#include "Scintilla.h"
|
||||||
#include "Style.h"
|
#include "Style.h"
|
||||||
|
|
||||||
Style::Style() {
|
Style::Style() {
|
||||||
Clear();
|
aliasOfDefaultFont = true;
|
||||||
|
Clear(Colour(0,0,0), Colour(0xff,0xff,0xff),
|
||||||
|
Platform::DefaultFontSize(), 0, SC_CHARSET_DEFAULT,
|
||||||
|
false, false, false, false, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
Style::Style(const Style &source) {
|
||||||
|
Clear(Colour(0,0,0), Colour(0xff,0xff,0xff),
|
||||||
|
0, 0, 0,
|
||||||
|
false, false, false, false, true);
|
||||||
|
fore.desired = source.fore.desired;
|
||||||
|
back.desired = source.back.desired;
|
||||||
|
characterSet = source.characterSet;
|
||||||
|
bold = source.bold;
|
||||||
|
italic = source.italic;
|
||||||
|
size = source.size;
|
||||||
|
eolFilled = source.eolFilled;
|
||||||
|
underline = source.underline;
|
||||||
|
visible = source.visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
Style::~Style() {
|
Style::~Style() {
|
||||||
font.Release();
|
if (aliasOfDefaultFont)
|
||||||
|
font.SetID(0);
|
||||||
|
else
|
||||||
|
font.Release();
|
||||||
|
aliasOfDefaultFont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Style &Style::operator=(const Style &source) {
|
Style &Style::operator=(const Style &source) {
|
||||||
if (this == &source)
|
if (this == &source)
|
||||||
return *this;
|
return *this;
|
||||||
Clear();
|
Clear(Colour(0,0,0), Colour(0xff,0xff,0xff),
|
||||||
|
0, 0, SC_CHARSET_DEFAULT,
|
||||||
|
false, false, false, false, true);
|
||||||
fore.desired = source.fore.desired;
|
fore.desired = source.fore.desired;
|
||||||
back.desired = source.back.desired;
|
back.desired = source.back.desired;
|
||||||
|
characterSet = source.characterSet;
|
||||||
bold = source.bold;
|
bold = source.bold;
|
||||||
italic = source.italic;
|
italic = source.italic;
|
||||||
size = source.size;
|
size = source.size;
|
||||||
strcpy(fontName, source.fontName);
|
|
||||||
eolFilled = source.eolFilled;
|
eolFilled = source.eolFilled;
|
||||||
|
underline = source.underline;
|
||||||
|
visible = source.visible;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Style::Clear(Colour fore_, Colour back_, int size_, const char *fontName_,
|
void Style::Clear(Colour fore_, Colour back_, int size_,
|
||||||
bool bold_, bool italic_, bool eolFilled_) {
|
const char *fontName_, int characterSet_,
|
||||||
|
bool bold_, bool italic_, bool eolFilled_, bool underline_, bool visible_) {
|
||||||
fore.desired = fore_;
|
fore.desired = fore_;
|
||||||
back.desired = back_;
|
back.desired = back_;
|
||||||
|
characterSet = characterSet_;
|
||||||
bold = bold_;
|
bold = bold_;
|
||||||
italic = italic_;
|
italic = italic_;
|
||||||
size = size_;
|
size = size_;
|
||||||
strcpy(fontName, fontName_);
|
fontName = fontName_;
|
||||||
eolFilled = eolFilled_;
|
eolFilled = eolFilled_;
|
||||||
font.Release();
|
underline = underline_;
|
||||||
|
visible = visible_;
|
||||||
|
if (aliasOfDefaultFont)
|
||||||
|
font.SetID(0);
|
||||||
|
else
|
||||||
|
font.Release();
|
||||||
|
aliasOfDefaultFont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Style::Realise(Surface &surface, int zoomLevel) {
|
bool Style::EquivalentFontTo(const Style *other) const {
|
||||||
|
if (bold != other->bold ||
|
||||||
|
italic != other->italic ||
|
||||||
|
size != other->size ||
|
||||||
|
characterSet != other->characterSet)
|
||||||
|
return false;
|
||||||
|
if (fontName == other->fontName)
|
||||||
|
return true;
|
||||||
|
if (!fontName)
|
||||||
|
return false;
|
||||||
|
if (!other->fontName)
|
||||||
|
return false;
|
||||||
|
return strcmp(fontName, other->fontName) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Style::Realise(Surface &surface, int zoomLevel, Style *defaultStyle) {
|
||||||
int sizeZoomed = size + zoomLevel;
|
int sizeZoomed = size + zoomLevel;
|
||||||
if (sizeZoomed <= 2) // Hangs if sizeZoomed <= 1
|
if (sizeZoomed <= 2) // Hangs if sizeZoomed <= 1
|
||||||
sizeZoomed = 2;
|
sizeZoomed = 2;
|
||||||
|
|
||||||
int deviceHeight = (sizeZoomed * surface.LogPixelsY()) / 72;
|
if (aliasOfDefaultFont)
|
||||||
font.Create(fontName, deviceHeight, bold, italic);
|
font.SetID(0);
|
||||||
|
else
|
||||||
|
font.Release();
|
||||||
|
int deviceHeight = surface.DeviceHeightFont(sizeZoomed);
|
||||||
|
aliasOfDefaultFont = defaultStyle &&
|
||||||
|
(EquivalentFontTo(defaultStyle) || !fontName);
|
||||||
|
if (aliasOfDefaultFont) {
|
||||||
|
font.SetID(defaultStyle->font.GetID());
|
||||||
|
} else if (fontName) {
|
||||||
|
font.Create(fontName, characterSet, deviceHeight, bold, italic);
|
||||||
|
} else {
|
||||||
|
font.SetID(0);
|
||||||
|
}
|
||||||
|
|
||||||
ascent = surface.Ascent(font);
|
ascent = surface.Ascent(font);
|
||||||
descent = surface.Descent(font);
|
descent = surface.Descent(font);
|
||||||
|
|||||||
@@ -10,11 +10,15 @@ class Style {
|
|||||||
public:
|
public:
|
||||||
ColourPair fore;
|
ColourPair fore;
|
||||||
ColourPair back;
|
ColourPair back;
|
||||||
|
bool aliasOfDefaultFont;
|
||||||
bool bold;
|
bool bold;
|
||||||
bool italic;
|
bool italic;
|
||||||
int size;
|
int size;
|
||||||
char fontName[100];
|
const char *fontName;
|
||||||
|
int characterSet;
|
||||||
bool eolFilled;
|
bool eolFilled;
|
||||||
|
bool underline;
|
||||||
|
bool visible;
|
||||||
|
|
||||||
Font font;
|
Font font;
|
||||||
unsigned int lineHeight;
|
unsigned int lineHeight;
|
||||||
@@ -25,13 +29,15 @@ public:
|
|||||||
unsigned int spaceWidth;
|
unsigned int spaceWidth;
|
||||||
|
|
||||||
Style();
|
Style();
|
||||||
|
Style(const Style &source);
|
||||||
~Style();
|
~Style();
|
||||||
Style &operator=(const Style &source);
|
Style &operator=(const Style &source);
|
||||||
void Clear(Colour fore_=Colour(0,0,0), Colour back_=Colour(0xff,0xff,0xff),
|
void Clear(Colour fore_, Colour back_,
|
||||||
int size_=Platform::DefaultFontSize(),
|
int size_,
|
||||||
const char *fontName_=Platform::DefaultFont(),
|
const char *fontName_, int characterSet_,
|
||||||
bool bold_=false, bool italic_=false, bool eolFilled_=false);
|
bool bold_, bool italic_, bool eolFilled_, bool underline_, bool visible_);
|
||||||
void Realise(Surface &surface, int zoomLevel);
|
bool EquivalentFontTo(const Style *other) const;
|
||||||
|
void Realise(Surface &surface, int zoomLevel, Style *defaultStyle=0);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
77
contrib/src/stc/scintilla/src/UniConversion.cxx
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
// UniConversion.h - functions to handle UFT-8 and UCS-2 strings
|
||||||
|
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
|
||||||
|
// The License.txt file describes the conditions under which this software may be distributed.
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "UniConversion.h"
|
||||||
|
|
||||||
|
unsigned int UTF8Length(const wchar_t *uptr, unsigned int tlen) {
|
||||||
|
unsigned int len = 0;
|
||||||
|
for (unsigned int i = 0; i < tlen && uptr[i]; i++) {
|
||||||
|
unsigned int uch = uptr[i];
|
||||||
|
if (uch < 0x80)
|
||||||
|
len++;
|
||||||
|
else if (uch < 0x800)
|
||||||
|
len+=2;
|
||||||
|
else
|
||||||
|
len +=3;
|
||||||
|
}
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UTF8FromUCS2(const wchar_t *uptr, unsigned int tlen, char *putf, unsigned int len) {
|
||||||
|
int k = 0;
|
||||||
|
for (unsigned int i = 0; i < tlen && uptr[i]; i++) {
|
||||||
|
unsigned int uch = uptr[i];
|
||||||
|
if (uch < 0x80) {
|
||||||
|
putf[k++] = static_cast<char>(uch);
|
||||||
|
} else if (uch < 0x800) {
|
||||||
|
putf[k++] = static_cast<char>(0xC0 | (uch >> 6));
|
||||||
|
putf[k++] = static_cast<char>(0x80 | (uch & 0x3f));
|
||||||
|
} else {
|
||||||
|
putf[k++] = static_cast<char>(0xE0 | (uch >> 12));
|
||||||
|
putf[k++] = static_cast<char>(0x80 | ((uch >> 6) & 0x3f));
|
||||||
|
putf[k++] = static_cast<char>(0x80 | (uch & 0x3f));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
putf[len] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int UCS2Length(const char *s, unsigned int len) {
|
||||||
|
unsigned int ulen = 0;
|
||||||
|
for (unsigned int i=0;i<len;i++) {
|
||||||
|
unsigned char ch = static_cast<unsigned char>(s[i]);
|
||||||
|
if ((ch < 0x80) || (ch > (0x80 + 0x40)))
|
||||||
|
ulen++;
|
||||||
|
}
|
||||||
|
return ulen;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int UCS2FromUTF8(const char *s, unsigned int len, wchar_t *tbuf, unsigned int tlen) {
|
||||||
|
#ifdef USE_API
|
||||||
|
return ::MultiByteToWideChar(CP_UTF8, 0, s, len, tbuf, tlen);
|
||||||
|
#else
|
||||||
|
unsigned int ui=0;
|
||||||
|
const unsigned char *us = reinterpret_cast<const unsigned char *>(s);
|
||||||
|
unsigned int i=0;
|
||||||
|
while ((i<len) && (ui<tlen)) {
|
||||||
|
unsigned char ch = us[i++];
|
||||||
|
if (ch < 0x80) {
|
||||||
|
tbuf[ui] = ch;
|
||||||
|
} else if (ch < 0x80 + 0x40 + 0x20) {
|
||||||
|
tbuf[ui] = static_cast<wchar_t>((ch & 0x1F) << 6);
|
||||||
|
ch = us[i++];
|
||||||
|
tbuf[ui] = static_cast<wchar_t>(tbuf[ui] + (ch & 0x7F));
|
||||||
|
} else {
|
||||||
|
tbuf[ui] = static_cast<wchar_t>((ch & 0xF) << 12);
|
||||||
|
ch = us[i++];
|
||||||
|
tbuf[ui] = static_cast<wchar_t>(tbuf[ui] + ((ch & 0x7F) << 6));
|
||||||
|
ch = us[i++];
|
||||||
|
tbuf[ui] = static_cast<wchar_t>(tbuf[ui] + (ch & 0x7F));
|
||||||
|
}
|
||||||
|
ui++;
|
||||||
|
}
|
||||||
|
return ui;
|
||||||
|
#endif
|
||||||
|
}
|
||||||