Compare commits

...

508 Commits

Author SHA1 Message Date
Bryan Petty
3ab65aab91 This commit was manufactured by cvs2svn to create tag 'UNDO'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/UNDO@6999 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 18:43:38 +00:00
Eric W. Sink
64a3ee5fd2 This commit includes the following changes:
1.  I have grabbed a new copy of the original Scintilla code from its
CVS repository on SourceForge.  I believe this code corresponds to
Scintilla 1.24.

2.  That code included several new files (stc/scintilla/src/Lex*.cxx)

3.  I added mentions of those files to Makefile.in and the .dsp file.

4.  I added a new required method to PlatWX.cpp, but it doesn't do
anything, and I don't think it needs to.

5.  I added code to stc.cpp which gratuitously references all of the
lexers, to prevent them from being optimized away by the linker.

6.  I modified (stc/scintilla/src/Lex*.cxx) to make the LexerModule
objects externally visible.

Gripes to me.  (eric@sourcegear.com)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6998 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 18:43:38 +00:00
Robin Dunn
13d7105a66 simple change to test new CVS server
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6971 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 17:15:58 +00:00
Karsten Ballüder
bb4624242b joystick made conditional
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6951 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-27 11:20:54 +00:00
David Webster
b963e7d546 no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6911 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-23 05:17:18 +00:00
David Webster
40bd6154f1 Reworked Frame class
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6910 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 23:22:48 +00:00
Vadim Zeitlin
96525e629a french translation done!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6901 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:50:10 +00:00
Jouk Jansen
02c6eadbc8 Committing in .
Modified Files:
 	wxWindows/src/gtk/wx_gtk_vmsjackets.c
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6900 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:42:38 +00:00
Vadim Zeitlin
15b8c27a7a small fix to the msg catalog search path
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6898 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:32:46 +00:00
Vadim Zeitlin
61714c237d note about comctl32.dll bug with tree ctrl colours added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6897 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:11:54 +00:00
David Webster
2df793f9f4 Quick VA fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6889 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 13:39:53 +00:00
David Webster
d92a1d4f5a Settle on one shortcut key utility proc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6888 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 13:39:23 +00:00
Julian Smart
d6a3816816 Added WXDLLEXPORT keywords
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6887 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 10:39:00 +00:00
Robert Roebling
ea1f75db44 Great. A dot mssing in the spec file so I can start
building again.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6886 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 18:51:59 +00:00
Vadim Zeitlin
dc3d889d0b 1. some (benign) warnings fixed
2. make dist/install fixes for wxBase


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6884 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 18:41:55 +00:00
Vadim Zeitlin
b18cfdd9bd wxThread::Kill() doesn't call OnExit() incorrectly
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6883 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 17:39:18 +00:00
Julian Smart
f8f3e76318 Had to #ifdef out wxGetFullHostName for Cygwin b20
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6882 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 16:52:43 +00:00
Julian Smart
f47cd02d71 Win16 BC++ makefile fixes, other v. small fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6881 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 16:32:55 +00:00
Julian Smart
05edc41991 SetBrushOrgExt broke WIN16 compilation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6880 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 15:48:54 +00:00
David Webster
6aa929e784 gsocket update. Fix for EMX broke VA.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6879 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 14:47:47 +00:00
Vadim Zeitlin
8916026b7e always link with libm
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6878 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 13:46:14 +00:00
Julian Smart
0a0352f2f8 Docview mended (grrr) and OGL studio partially working under wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6877 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 13:41:16 +00:00
Guillermo Rodriguez Garcia
26993c4f64 Added extern "C" around winsock and moved it before "wx/msw/private.h"
to make it work with mingw (2.95 is buggy)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6876 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 13:00:27 +00:00
Guillermo Rodriguez Garcia
062a3faae7 Patch to add extern "C" to winsock.h in gcc2.95
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6875 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 12:57:26 +00:00
Julian Smart
09fb214e01 Added joytest Makefile.in
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6874 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 10:54:26 +00:00
Julian Smart
34cb2199dc Fixed wrong cursor problem in wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6873 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 10:53:48 +00:00
Julian Smart
cca602accb Fixed problem with CaptureMouse if cursor is null.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6872 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 10:53:04 +00:00
David Webster
dae167759c OS/2 Updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6871 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 00:31:11 +00:00
David Webster
8c5907cea3 OS/2 Updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6870 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 00:20:29 +00:00
Guillermo Rodriguez Garcia
c2c436609d A duplicate case label broken mingw compilation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6869 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 23:43:38 +00:00
Guillermo Rodriguez Garcia
dbf75be725 Added a Motif-only extra call to UpdateInfoText() just after frame creation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6868 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 23:19:52 +00:00
Ron Lee
ceded8b925 fixed broken test for wxUSE_JOYSTICK in configure.
added joytest sample to samples_dist and samples/configure.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6867 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 23:04:18 +00:00
Julian Smart
281b0186b8 Misc small changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6866 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 19:55:13 +00:00
Robert Roebling
1f3c610d03 The Return of WM Size Hints Part IV.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6865 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 19:51:08 +00:00
Vadim Zeitlin
a20b6d3ab3 zlib objects linked together with wxBase
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6864 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 18:51:40 +00:00
Vadim Zeitlin
7ff26ec2ae wxFTP::Close() shouldn't hide base wxSocket function
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6863 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 18:46:55 +00:00
Robin Dunn
bae411099c Allows wxStatusBar95 to send common events like other windows
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6862 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 17:21:28 +00:00
Vadim Zeitlin
bd3277fec0 1. corrected HAVE_PW_GECOS detection in configure (which never worked)
2. added and documented wxGetFreeMemory() for Unix (Linux/Solaris only)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6861 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 16:45:43 +00:00
Robert Roebling
15909a16b3 Funny resize behaviour fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 16:23:09 +00:00
Václav Slavík
3d6f72618e fixed KeySym handling ((keysym & 0xF000) != 0 instead of keysym < 0xFF to determine printable characters
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6859 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 15:28:45 +00:00
Julian Smart
9c6751aa46 Small mods to distrib files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6858 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 15:24:27 +00:00
Julian Smart
7fee680be8 Some VC++ makefile fixes; minor comment mods to setup0.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6857 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 14:47:13 +00:00
Ron Lee
8e792b5432 added missing object file for vidxanm to unix makefile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6856 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 14:43:52 +00:00
Stefan Neis
3720ab6a98 Added info about versions for XFree86/OS2.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6855 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 14:34:23 +00:00
Vadim Zeitlin
2633045c32 some old Danish translations
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6854 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 14:18:16 +00:00
Vadim Zeitlin
c837a756e8 OS/2 info added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6853 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 13:59:52 +00:00
Vadim Zeitlin
a5ea1d7cc8 compilation fix for anything different from VC++
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6852 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 13:52:50 +00:00
Ron Lee
08c921042e added missing object files for oss & esd to unix makefile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6851 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 13:51:13 +00:00
Vadim Zeitlin
e9f88d0414 some more (apparently harmless) changes from Klass Holwerda
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6850 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 13:27:52 +00:00
Vadim Zeitlin
af7451accc translator for Swedish added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6849 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 13:20:06 +00:00
Vadim Zeitlin
f7aa71fa81 some more explanations about thread exiting/killing/deleting
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6848 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 13:10:02 +00:00
Stefan Neis
444cb676b2 Chnaged includes to work without precompiled headers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6847 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 12:57:08 +00:00
Vadim Zeitlin
6e58645e86 apparent gcc bug workaround
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6846 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 12:36:04 +00:00
Robert Roebling
d06b34a73e Highly experimental, unstable code (for determining the
encoding of the default GUI font). #ifdeffed.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6845 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 10:31:26 +00:00
Robert Roebling
aaef15bf82 Small speed-up.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6844 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 09:08:09 +00:00
Ron Lee
3711412e38 repaired some of the more obvious horrors in the contrib (configure) Makefiles
reworked makelib.env so that it now can create shared libs and has (un)install
targets.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6843 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 04:09:08 +00:00
Robin Dunn
ede8795ff0 wxUSE_DYNAMIC_CLASSES was left out.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6842 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 03:41:25 +00:00
Unknown (NI)
e8741ccae8 fixed wxListMainWindow::HitTest
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6841 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 02:10:09 +00:00
Vadim Zeitlin
feea7c52e9 don't compile docvwmdi sample if !wxUSE_MDI_ARCHITECTURE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6840 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 00:57:10 +00:00
Vadim Zeitlin
3b415ba4cd 1. fixed crash in wxDateTime::ParseDate
2. some DLL compilation fixes
3. wxHandleFatalExceptions() implemented for MSW and documented
4. some attempts to make setup0.h a bit nicer


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6839 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-19 00:56:22 +00:00
Stefan Neis
b59c98ddb8 Added includes needed if not using precompiled headers.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6838 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 23:42:28 +00:00
Stefan Neis
999e841c9e Removed redundant member variable.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6837 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 23:24:51 +00:00
Stefan Neis
7a85f3f97c Don't try to use Tooltips, if they are not available.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6836 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 23:12:01 +00:00
Stefan Neis
6040c9de74 No precompiled headers for gcc, even if compiling WXPM.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6835 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 22:50:07 +00:00
Stefan Neis
468e327aac Added a couple of fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6834 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 22:28:28 +00:00
Vadim Zeitlin
eb4efbdc86 some files for wxHandleFatalException() I previously forgot to commit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6833 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 22:25:22 +00:00
Václav Slavík
08abd69b58 changed titlebar text colour from white to fg[GTK_STATE_SELECTED]
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6832 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 21:46:18 +00:00
Ron Lee
c56371028f These two makefiles were *horrid* abominations.
In fact they still are.  But at least now they have
some _chance_ of actually working..


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6831 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 21:15:16 +00:00
Ron Lee
99ad02720b made makefile more robust
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6830 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 20:22:18 +00:00
Robert Roebling
1bd59dddc3 wxAccel fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6829 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 20:18:00 +00:00
Julian Smart
fac2666314 Added def files for making OpenGL DLLs (Mingw32); added comment to wxHTML format
doc; added OpenGL libs to makeg95.env


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6828 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 20:11:10 +00:00
Robert Roebling
7c1122c4eb I don't think the last person to edit splitter.cpp did
actually run the sample afterwards. I did.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6827 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 18:47:00 +00:00
Stefan Neis
2b33b72819 Added conversion of menu labels (&->~)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6826 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 17:39:14 +00:00
Guillermo Rodriguez Garcia
90cfeaab3f Had to #ifdef out all the new wxGetFullHostName code as it breaks all
the samples and apps _at least_ under mingw (and I think it will also
cause other problems). Sorry, will have to wait for 2.1.14 to be released
before this can be properly fixed.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6825 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 16:48:02 +00:00
Julian Smart
2d027cfa88 Removed the wonderfully malicious WS_CLIPSIBLINGS style.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6824 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 15:50:40 +00:00
Julian Smart
d50af7148c Corrected my correction.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6823 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 14:12:11 +00:00
Julian Smart
2c68bdb64e Moved position of WXDLLEXPORT keyword
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6822 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 13:24:58 +00:00
Julian Smart
541418efad Corrected WXDLLEXPORT keyword position.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6821 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 13:19:54 +00:00
Julian Smart
741f371c68 Restored sane way of using BC++ linker
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6820 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 09:34:56 +00:00
Julian Smart
6787e41e49 Added stub for wxHandleFatalExceptions. But where's the implementation?
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6819 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 09:26:44 +00:00
Julian Smart
528e0faf1c Doc tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6818 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 09:20:21 +00:00
Robin Dunn
ee284519e4 When making the DLL with glcanvas then you have to link the dll with
the gl libraries.  Added a flag to let the makefile do that.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6817 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 08:33:15 +00:00
Robin Dunn
bd53731ec3 When making the DLL with glcanvas then you have to link the dll with
the gl libraries.  Added a flag to let the makefile do that.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6816 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 08:15:25 +00:00
Robin Dunn
4107335720 new swig generated code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6815 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 07:57:59 +00:00
Robin Dunn
de9d9ed211 changes for wxDash
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6814 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-18 07:57:15 +00:00
Vadim Zeitlin
89e6035748 more tests: OS/user info functions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6813 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 23:02:38 +00:00
Vadim Zeitlin
2e8a1588f8 compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6812 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 23:02:03 +00:00
Stefan Neis
c092213d52 Added include of module.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6811 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 23:01:33 +00:00
Vadim Zeitlin
1f0500b3ee 1. wxGetFullHostName() does return the full host name now under MSW
2. wxGetEmailAddress() doesn't always return empty string...
3. status bar created under MSW is of type wxStatusBar, hence wxWin RTTI
   works for it
4. carsh in IPC sample fixed


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6810 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 23:00:10 +00:00
Robin Dunn
8759d4d519 fixes for drop source and for capturing the mouse
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6809 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 19:30:19 +00:00
Robin Dunn
aa9fb2be6d Some wxPython doc changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6808 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 18:59:26 +00:00
Robin Dunn
6a6d5b4731 fixing the STC sample makefile to find the include directory
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6807 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 18:49:18 +00:00
Vadim Zeitlin
a7987cc1a2 fix in fontspec parsing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6806 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 18:29:58 +00:00
Vadim Zeitlin
b2b3552407 HTTP_PROXY bug (freeze on program startup) should be fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6805 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 18:18:58 +00:00
Robin Dunn
fb04b3438d wxFont remembers facename of actual font used
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6804 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 18:16:08 +00:00
Julian Smart
b2cf617cb8 Some doc fixes; BC++, Watcom C++, Mingw32 fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6803 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 17:59:56 +00:00
Vadim Zeitlin
a37a5a73c5 wxHandleFatalExceptions() added, documented
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6802 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 16:55:34 +00:00
Stefan Neis
3bfbab1e83 Added missing IMPLEMENT_DYNAMIC_CLASS
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6801 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 16:41:12 +00:00
Robert Roebling
5d9fe0892b Small makefile change.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6800 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 15:42:54 +00:00
Vadim Zeitlin
7d9fd00474 skip status bars in wxWindow::Fit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6799 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 15:30:55 +00:00
Guillermo Rodriguez Garcia
e5b502f3a6 Fixed bug for late events arriving after connections had been destroyed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6798 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 15:09:18 +00:00
Vadim Zeitlin
bc1dcfc1aa warnings from FreeBSD compilation log removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6797 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 14:08:54 +00:00
Julian Smart
f4bfe7e0c1 Removed an include from windres flags since it can't cope with a long command line
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6796 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 14:05:16 +00:00
Vadim Zeitlin
a18db02249 oops, compilation error - fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6795 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 13:59:54 +00:00
Vadim Zeitlin
2d8a5cb1da wxSTIPPLE_MASK_OPAQUE implementation from Klaas Holwerda
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6794 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 13:58:17 +00:00
Bart A.M. Jourquin
7ef53f2dc5 fix for textctrl height
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 13:39:45 +00:00
Bart A.M. Jourquin
5a074a3c22 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6792 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 13:31:51 +00:00
Bart A.M. Jourquin
780ee02d16 default font for dialog
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6791 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 13:12:10 +00:00
Stefan Neis
1c85008fcf Added #pragma implementation for gcc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6790 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 12:47:10 +00:00
Stefan Neis
a78e08d6cb bool-> int, gcc doesn't like bool in _C_ code.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6789 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 12:46:29 +00:00
Stefan Neis
27f37ae504 bool->int, since gcc doesn't like bool in _C_ code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6788 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 12:45:29 +00:00
Julian Smart
f6a3517155 Added back gnuwin32 include
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6787 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 12:01:00 +00:00
George Tasker
ec974d2300 RCS left a turd in the previous checkin
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6786 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 11:18:46 +00:00
George Tasker
2750885629 Fixed compilation in release mode
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6785 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 11:15:57 +00:00
Julian Smart
6158481fe5 Added some makefiles, more BC++/win16 fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6784 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 10:08:07 +00:00
Julian Smart
9c824f2977 Doc updates; new grid disabled for BC++/WIN16 (too much global data)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6783 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 09:19:37 +00:00
Mark Johnson
595b5c4eb6 db.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6782 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 08:44:44 +00:00
Mark Johnson
e2f1cfb2cc browsedb.cpp browsedb.h doc.cpp doc.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6781 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 08:43:57 +00:00
Unknown (MT)
6fb8177afd added WS_CLIPSIBLINGS
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6780 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 08:10:09 +00:00
Unknown (MT)
d3f5d09d47 no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6779 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-17 08:07:00 +00:00
David Webster
c3cea74805 more framework fixes for menu displays
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6778 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 23:24:38 +00:00
Guillermo Rodriguez Garcia
cc534ff767 Removed bool params and retvalues in GSocket interface to avoid mismatch
between C-compiled bools in gsocket and C++ real bools as passed by wxSocket


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6777 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 21:57:21 +00:00
Guillermo Rodriguez Garcia
5c9eff3055 Removed bool params and retvalues in GSocket interface to avoid mismatch
between C-compiled bools in gsocket and C++ real bools as passed by wxSocket


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6776 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 21:57:20 +00:00
Guillermo Rodriguez Garcia
032d558182 Fixed a problem in GAddress related to CHECK_ADDRESS macro
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6775 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 20:46:52 +00:00
Robert Roebling
80629c8bf6 Next take at getting mini-frames even with Life! to work...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6774 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 20:41:27 +00:00
Guillermo Rodriguez Garcia
609c60af5e More debug code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6773 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 20:09:08 +00:00
Robert Roebling
8185521695 Fixed mini-frame problems.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6772 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 19:47:23 +00:00
George Tasker
69d042c37d Fixed a typo in wxDbConnectionsInUse()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6771 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 19:42:29 +00:00
Stefan Neis
039bec17f4 Readded #if wxUSE_UNICODE to ~wxApp.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6770 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 19:27:40 +00:00
George Tasker
3f755e2d96 Modified to use the newly defined names for functions/classes/structs defined to match the wxWindows conventions for naming (primarily prefacing these items with wx).
Fixed program so it would not crash when using FILE|EXIT
Fixed widget alignment issues


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6769 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 19:09:42 +00:00
George Tasker
df991b9dfb Modified to use the newly defined names for functions/classes/structs defined to match the wxWindows conventions for naming (primarily prefacing these items with wx).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6768 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 19:02:22 +00:00
George Tasker
fdc0367851 Cleaned up the API for class/structure/function names to follow the wxWindows conventions (mostly prefixing wx to all of them). Backward compatability is maintained by keeping the old names calling the new functions, or typedef-ing the old names to the new names. The old names can be totally disabled at the end of the file by changing the #if 1 block that surrounds the old names
Added a wxDbCreateDataSource() function, though it only works under MSW using VC6, because the API is not available with iODBC.  To use this, it requires linking in odbccp32.lib and #including odbcinst.h in db.h.  This function is disabled with #if 0 for now.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6767 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 19:00:24 +00:00
George Tasker
4a8fc2c8b3 Cleaned up the API for class/structure/function names to follow the wxWindows conventions (mostly prefixing wx to all of them). Backward compatability is maintained by keeping the old names calling the new functions, or typedef-ing the old names to the new names. The old names can be totally disabled at the end of the file by changing the #if 1 block that surrounds the old names
Added a param to GetWhereClause() so that now the LIKE operator can be applied to strings rather than EQUAL


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6766 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 19:00:07 +00:00
George Tasker
8128349e81 Cleaned up the API for class/structure/function names to follow the wxWindows conventions (mostly prefixing wx to all of them). Backward compatability is maintained by keeping the old names calling the new functions, or typedef-ing the old names to the new names. The old names can be totally disabled at the end of the file by changing the #if 1 block that surrounds the old names
Undid RRs last change, as it breaks backward compatabilty with using this class with 1.6x (GetData() is still a supported function, and is used in dozens of other places in this file, so it could not have broken compilation).
Added a param to GetWhereClause() so that now the LIKE operator can be applied to strings rather than EQUAL


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6765 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 18:59:40 +00:00
Vadim Zeitlin
ab0f03868e added test for bug #38
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6764 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 17:57:19 +00:00
Robin Dunn
4e0dcbb14a converted some args to return values
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6763 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 17:37:32 +00:00
Vadim Zeitlin
0d910be798 tooltip fix: compile-time test removed, comment explaining it added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6762 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 17:37:18 +00:00
Václav Slavík
23d38b36f8 added remark on hhp2cached
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6761 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 17:22:25 +00:00
Vadim Zeitlin
ccdb23df47 better TestSocketServer()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6760 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 16:47:45 +00:00
Vadim Zeitlin
9239628cfc bug fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6759 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 16:30:14 +00:00
Guillermo Rodriguez Garcia
8e3aec856b Only added \n to debug printfs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6758 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 16:00:19 +00:00
David Webster
13588544c5 compile bug fixed in SetCursor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 15:53:49 +00:00
Guillermo Rodriguez Garcia
aac67d4c3d More debug code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6756 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 15:35:10 +00:00
Guillermo Rodriguez Garcia
29c25a8e01 MSW: Grouped all MSVC #pragma disable
Unix: Fixed GAddress_destroy leak as Vadim did for MSW


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6755 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 12:26:15 +00:00
Guillermo Rodriguez Garcia
0ca580f6fb Process pending events before deleting pending objects, and do it
regardless of the value of wxUSE_THREADS (wxPostEvents can be used
in single threaded apps). Changed: wxApp::OnIdle


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6754 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 12:05:01 +00:00
Jouk Jansen
967a572877 Committing in .
Modified Files:
 	wxWindows/docs/readme_vms.txt
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6753 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 08:49:44 +00:00
Jouk Jansen
27df579a6f Committing in .
Patches for the wxGTK compilation on VMS

 Modified Files:
 	wxWindows/descrip.mms wxWindows/setup.h_vms
 	wxWindows/include/wx/gtk/app.h
 	wxWindows/samples/minimal/descrip.mms
 	wxWindows/src/generic/descrip.mms
 	wxWindows/src/generic/filedlgg.cpp wxWindows/src/gtk/app.cpp
 	wxWindows/src/gtk/descrip.mms wxWindows/src/gtk/listbox.cpp
 	wxWindows/src/gtk/utilsgtk.cpp wxWindows/src/gtk/win_gtk.c
 	wxWindows/src/gtk/window.cpp
 	wxWindows/src/gtk/wx_gtk_vmsjackets.c
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6752 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 08:07:59 +00:00
Vadim Zeitlin
117082d17b 1. fixed memory leak in GAddress
2. fixed memory leak with wxLogStderr in wxBase
3. updated tmake files/makefiles for wxBase with wxSocket under MSW
4. fixed wxSashWindow cursor bug by allowing SetCursor(wxNullCursor)
5. fixed warning in gsock*.c


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6751 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 01:12:31 +00:00
Vadim Zeitlin
89fc5e5d66 removed test code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6750 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 01:05:20 +00:00
Vadim Zeitlin
9fc3cba7fa some fixes in TestSocketServer()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6749 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 01:04:50 +00:00
Vadim Zeitlin
8a9c22462a 1. fixed memory leak in GAddress
2. fixed memory leak with wxLogStderr in wxBase
3. updated tmake files/makefiles for wxBase with wxSocket under MSW
4. fixed wxSashWindow cursor bug by allowing SetCursor(wxNullCursor)
5. fixed warning in gsock*.c


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6748 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 01:03:52 +00:00
Robin Dunn
9eb662e94c dropTarget is now dynamically allocated.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6747 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-16 00:15:48 +00:00
Unknown (NI)
7e42f2f863 included missing header files - without them mingw32 compilation failed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6746 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 23:31:15 +00:00
David Webster
c0dbf1fb90 no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6745 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 23:27:47 +00:00
Stefan Neis
8138a3b0c6 Bugfix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6744 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 22:01:45 +00:00
Ron Lee
a99b3d76f2 removed TAB_TRAVERSAL style
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6743 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 20:51:43 +00:00
Julian Smart
d834f22c8e Some C++Builder fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6742 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 19:53:30 +00:00
Vadim Zeitlin
8dfea369ea wxSocketServer test added to console sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6741 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 19:19:44 +00:00
Julian Smart
669f7a111f Various compiler changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6740 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 18:52:23 +00:00
Vadim Zeitlin
2d8e9af9c9 test data file for console sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6739 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 17:16:56 +00:00
Vadim Zeitlin
8e907a13ea 1. wxFTP works (somehow)
2. wxSocket/GSocket wxBase support for Unix


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6738 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 17:16:35 +00:00
David Webster
76990f630b no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6737 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 16:39:36 +00:00
Ron Lee
e893cd66dc added some missing makefile.unx to samples_dist
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6736 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 16:16:53 +00:00
Ron Lee
39fc1a6a05 makefile changes for utils_dist
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6735 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 14:58:04 +00:00
Guillermo Rodriguez Garcia
5f3629babd Fixed _Read() when waitall was not set and there was data in the pushback buffer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6734 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 14:35:33 +00:00
Guillermo Rodriguez Garcia
7b28543293 Fixed typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6733 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 14:34:41 +00:00
Guillermo Rodriguez Garcia
f4d5e0098a Fixed a endianness stupidity in the sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6732 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 13:29:07 +00:00
Guillermo Rodriguez Garcia
52fbdb5892 Added a warning for unknown events
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6731 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 13:28:07 +00:00
Julian Smart
53adbc34a2 Changes to ProjGen for new sample filenames
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6730 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 12:11:38 +00:00
Guillermo Rodriguez Garcia
896e4cbf4d list.h was included twice
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6729 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 09:31:26 +00:00
Guillermo Rodriguez Garcia
2288191b9c Forgot to commit this one - changes for wxBase
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6728 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 09:03:40 +00:00
Bart A.M. Jourquin
032da43172 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6727 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 08:49:20 +00:00
Bart A.M. Jourquin
3cfd2b707d removing ogl from utils
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6726 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 08:48:14 +00:00
Julian Smart
de8e98f133 Added missing includes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6725 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 08:41:00 +00:00
Vadim Zeitlin
bbd41262ca mingw32 compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6724 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 08:09:17 +00:00
Vadim Zeitlin
9f303149a0 some fwd declarations added to the header
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 07:52:46 +00:00
Guillermo Rodriguez Garcia
ed2eb9afcb Some modifications and additions for full wxBase support -
not tested yet, but it should work OK as is or with little
changes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6722 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 06:05:00 +00:00
Guillermo Rodriguez Garcia
bac6b9676c Fixed a bug in the latest 'micro optimization' - was skipping one
of each two events.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6721 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 03:30:40 +00:00
Guillermo Rodriguez Garcia
f6f13cd4a8 err.. not sure :-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6720 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 02:14:54 +00:00
Julian Smart
627a3091c8 Possible fix for DestroyWindow message in MDI apps (call DestroyChildren in destructor)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6719 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 00:22:33 +00:00
Julian Smart
fa482912e4 Some doc proofreading
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6718 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-15 00:21:49 +00:00
Robert Roebling
8cb9f0d0f8 Fixed missing paint events when overriding DoMoveWindow()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6717 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 20:08:31 +00:00
Ron Lee
07a9af327e renamed treelay sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6716 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 19:55:34 +00:00
Ron Lee
11e2dfd37d renamed dragimag sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6715 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 19:47:10 +00:00
Ron Lee
c4f02b1fd8 renamed thread sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6714 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 19:35:40 +00:00
Ron Lee
6718d773ad renamed splitter sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6713 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 19:30:04 +00:00
Ron Lee
b2f757f9b7 renamed notebook sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6712 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 19:24:14 +00:00
Ron Lee
14057bf4dc renamed minifram sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6711 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 19:17:41 +00:00
Ron Lee
f30dcba95d renamed grid sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 19:09:12 +00:00
Ron Lee
8fef0a6eae renamed tab sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6709 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 18:58:22 +00:00
Ron Lee
13f5935c36 renamed wizard sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6708 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 18:50:24 +00:00
Vadim Zeitlin
68662769ff some micro optimisations in SearchEventTable
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6707 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 18:46:17 +00:00
Ron Lee
5301d93336 renamed treectrl sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6706 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 18:37:46 +00:00
Vadim Zeitlin
e72007907a call wxMenubarSetInvokingWindow for submenus appended during run-time
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6705 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 18:28:19 +00:00
Ron Lee
eeb75ae603 ...and extra proplist makefiles too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6704 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 18:22:50 +00:00
Ron Lee
30b641919c renamed proplist sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6703 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 18:20:11 +00:00
Vadim Zeitlin
9ce2171eed portuguese translator added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6702 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 17:58:33 +00:00
Julian Smart
9ba09ba5e6 Removed some redundant files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6701 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 17:53:11 +00:00
Robert Roebling
b4bee866f3 Corrected status bar redraw problems.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6700 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 17:20:42 +00:00
Vadim Zeitlin
8461a0598c removed -Icontrib from src/make.env, use APPEXTRADEFS for such things instead
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6699 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 17:09:45 +00:00
Vadim Zeitlin
aaa2f29761 fixed crash in OnChar() after m_key_current was deleted
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6698 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 16:51:43 +00:00
Vadim Zeitlin
624d1a4f31 fixed infinite recursion in TAB handling with panels inside panels
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6697 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 16:35:03 +00:00
Vadim Zeitlin
110b5d83a6 stc targets in the global makefiles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6696 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 16:11:33 +00:00
Vadim Zeitlin
0f8df1b95c wxDropSource should have def ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6695 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 16:01:06 +00:00
Vadim Zeitlin
e9b663934d makefiles for stc lib and sample for Unix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6694 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 16:00:24 +00:00
Julian Smart
5d525ad911 Doc edits; adding mmedia.rsp; added STC BC++ makefiles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6693 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 15:18:20 +00:00
Vadim Zeitlin
e32ddbaae5 temp ugly hack around the bug under GTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6692 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 15:15:35 +00:00
Vadim Zeitlin
4e6bceff3b reverted all changes by Mark Johnson
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6691 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 15:10:15 +00:00
Vadim Zeitlin
8e97b17bbd 1. aapplied patch for bcc makefiles from Ricky Gonzales
2. regenerated makefiles with tmake


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6690 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 14:57:16 +00:00
Vadim Zeitlin
a1a4396142 some appearance fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6689 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 14:50:30 +00:00
Bart A.M. Jourquin
8ba3dcde1e better dialog for Motif
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6688 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 14:43:30 +00:00
Vadim Zeitlin
f6c881b448 compilation fir for !WX_PRECOMP
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6687 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 14:42:25 +00:00
Vadim Zeitlin
73fd4a6046 changed test -a into 2 tests
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6686 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 14:34:28 +00:00
David Webster
dafec3de59 Tiff library icc for VisualAge 4.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6685 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 14:07:33 +00:00
Ron Lee
367e57ec9b updated samples makefiles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6684 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 14:06:41 +00:00
Robert Roebling
a8a0b892df Even more printfs in GSocket,
Copmile fix for splitter.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6683 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 13:53:34 +00:00
David Webster
ee453a161f Some changes to fix event processing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6682 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 13:36:35 +00:00
Karsten Ballüder
0902e71a16 fixed arguments to "test"
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6681 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 12:33:37 +00:00
Julian Smart
9f15eeb32a Added/updated some BC++ makefiles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6680 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 11:51:29 +00:00
Václav Slavík
0f3168aa5b Czech message catalog is now up to date
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6679 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 11:33:48 +00:00
Václav Slavík
997e13fca4 removed files that have nothing to do here (cz is alias for cs, .mo files for other languages are not here)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6678 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 11:33:22 +00:00
Julian Smart
c0bcc48068 Fixed crash-on-exit bug due to status bar being deleted twice (MDI apps);
small changes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6677 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 11:25:54 +00:00
Guillermo Rodriguez Garcia
bc7e88ae03 Changed Socket() and SocketEvent() to Get... in the samples, also added
a few more comments and output messages for easier understanding of what's
going on inside wxSocket.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6676 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 09:56:38 +00:00
Guillermo Rodriguez Garcia
da051b23fe Changed declaration of functions taking an empty arglist (which means
no prototype in C, not (void) like in C++) to take (void) instead.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6675 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 09:32:27 +00:00
Julian Smart
09707570eb Added gsockmsw.c to VC++ project files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6674 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 09:02:13 +00:00
Julian Smart
8c014dbafe Added prototypes to eliminate BC++ warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6673 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 09:00:46 +00:00
Guillermo Rodriguez Garcia
1c282a3a62 Added new file: gsockmsw.c
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6672 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 04:44:32 +00:00
Guillermo Rodriguez Garcia
70988afbb1 Added gsockmsw which now contains all GUI-specific code for the MSW version
of gsocket - a step towards wxBase


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6671 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 04:43:58 +00:00
Guillermo Rodriguez Garcia
5ff8699684 src\unix\gsocket.c
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6670 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 04:41:34 +00:00
Unknown (MT)
ac6482e0eb remove HWND association when DestroyWindow
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6669 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 03:13:01 +00:00
Guillermo Rodriguez Garcia
711df835d3 Removed the PREEXTRALIBS hack - no longer needed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6668 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 01:05:54 +00:00
Guillermo Rodriguez Garcia
672186efa8 A few unimportant changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6667 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 01:00:08 +00:00
Vadim Zeitlin
8b8bff20d0 1. demo of status bar at the top in statbar
2. kbd accels added to splitter


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6666 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 00:47:03 +00:00
Vadim Zeitlin
43b5058d59 1. status bar can now be positioned on top (and anywhere, in fact)
2. status bar without wxST_SIZEGRIP style won't have the size grip (wow)
3. scrollbars don't get the cursor of the main window any more
4. introduced wxSetCursorEvent and use it in wxSplitterWindow


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6665 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 00:45:54 +00:00
Guillermo Rodriguez Garcia
e828e4f7f1 Added PREEXTRALIBS and .cxx rule
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6664 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 00:09:00 +00:00
Guillermo Rodriguez Garcia
d29e95a922 Added PREEXTRALIBS (ugh)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6663 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-14 00:08:41 +00:00
Guillermo Rodriguez Garcia
afc68427d8 new
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6662 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 23:41:18 +00:00
David Webster
8df85a6123 Some changes to fix event processing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6661 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 23:29:44 +00:00
Stefan Neis
399b60a0ad Improved selection mode handling in wxGrid::SelectBlock
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6660 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 22:11:24 +00:00
Václav Slavík
add95ac378 replaced 'wxPCX/GIFHandler:' by 'PCX/GIF:' in error messages -- these are for users, should not reveal internals
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6659 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 17:22:49 +00:00
Vadim Zeitlin
58b3bdc933 added test for selection events
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6658 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 17:20:39 +00:00
Robin Dunn
c6e7d14fa9 Initialize the field count in Create(). It was using a garbage value
and causing havoc...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6657 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 17:12:31 +00:00
Robert Roebling
2035e10e83 Found bug that skrewed up display wrt horizontal
scrolling of wxListCtrl. The selected area still
    seems wrong, though.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6656 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 16:45:26 +00:00
Vadim Zeitlin
5f170f33fd 1. some patches from Janos Vegh to docview template detection
2. fixed reentrancy bug in wxGetTranslation/wxLogError resulting in infinite
   number of messageboxes
3. wxMenuItem::GetLabelFromText("&Foo") now returns "Foo", not "&Foo" in GTK
   as well
4. test for update region being NULL in wxPaintDC


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6655 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 15:48:03 +00:00
Vadim Zeitlin
c9ce2da080 suppress gcc warning about non virtual dtor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6654 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 15:31:15 +00:00
Robert Roebling
d5ab387d2a Typo GtkPizza,
More debug printf()s in GSocket_Write()
  Did I touch plot.cpp ?


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6653 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 15:21:40 +00:00
Ron Lee
236a9de39a moved wxDash typedef to gdicmn.h
added wxXXXDash, platform dependant types for all ports
made using native dialogs the default in msw/setup0.h


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6652 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 14:34:35 +00:00
Guillermo Rodriguez Garcia
dfd2e67583 Fixed a harmless warning about $d in sprintf and long argument
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6651 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 13:52:49 +00:00
Guillermo Rodriguez Garcia
8290d43d0d Use system default font for all platforms
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 13:00:26 +00:00
Stefan Neis
6fc0f38fe0 More compilation fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6649 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 12:04:25 +00:00
Julian Smart
12646a5ae2 Added tech note on adding class documentation.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6648 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 11:20:59 +00:00
Vadim Zeitlin
e59890c3e8 fixed cross-compilation for Windows with mingw
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6647 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 09:45:00 +00:00
Vadim Zeitlin
f83e3685a5 remove \r from literal strings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6646 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 08:28:21 +00:00
Vadim Zeitlin
6098c7f953 check for strtok_r() using C++ compiler
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6645 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 08:27:44 +00:00
Robin Dunn
67003d1af8 Added methods for folding
dropTarget is now allocated with new


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 06:50:32 +00:00
David Webster
a06066343d no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6643 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 05:43:53 +00:00
Unknown (NI)
6e395e9c60 someone forgot to clear the m_needUpdating flag, so Splitter-Windows were always redrawn after the first sash move in the OnIdle function, even after the dragging was over\!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6642 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 02:34:50 +00:00
Unknown (NI)
7e8583bdef someone forgot to clear the m_needUpdating flag, so Splitter-Windows were always redrawn after the first sash move in the OnIdle function, even after the dragging was over\!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6641 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-13 01:59:16 +00:00
Robert Roebling
856bc99a57 Added debuf printf()s to GSocket,
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6640 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-12 21:26:48 +00:00
Robert Roebling
6e7b6cc6f7 Some doc updates,
makefile and distrib things.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6639 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-12 17:11:54 +00:00
Guilhem Lavaux
760e231bf0 Latex doc compilation fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6638 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-12 16:10:13 +00:00
Robert Roebling
d6d26e0414 Corrected scrollwin thumb release event,
Reenabled horizontal scrolling, cannot currently
    reproduce misbehaviour.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6637 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-12 15:37:49 +00:00
Julian Smart
0d3a69ec70 Added project files for STC; fixed wxStringList memory leaks; small doc changes;
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6636 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-12 15:04:12 +00:00
Ron Lee
2eca425d4b separated wxDash type from platform specific wxGTKDash type
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6635 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-12 11:49:19 +00:00
Julian Smart
8f19c916dc Made iniconf compile on BC++ 5.01 (involved adding Set... accessors to wxConfigBase);
added SafeWord patch to Dialog Editor


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6634 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-12 11:29:13 +00:00
Julian Smart
10d432b1b4 Added Mmedia makefile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6633 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-12 11:27:01 +00:00
Mark Johnson
36ba4665ff dbbrowse.cpp doc.cpp de/dbbrowse.mo de/dbbrowse.po
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6632 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-12 09:11:36 +00:00
Vadim Zeitlin
79f585d903 fixed (rare but fatal) bug in wxWindowDisabler
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6631 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-12 00:49:42 +00:00
Vadim Zeitlin
cbc66a2704 1. wxProgressDialog uses wxWindowDisabler, not (dumb) wxEnableTopLevelWindows
2. some more wxWindowDisabler bugs fixed (updated dialogs sample to test them)
3. Esc won't close the dialogs without cancel button under MSW
4. status bar can be child of windows of clases other than wxFrame
   (updated statbar sample to show it)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6630 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-12 00:26:21 +00:00
Robin Dunn
5028104652 reenabled the old wxGrid.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6629 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 22:38:39 +00:00
Václav Slavík
e81910e077 fixed incorrect use of _() where it should be wxT()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6628 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 19:31:33 +00:00
Václav Slavík
f5ba273ecd some != NULL checks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6627 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 19:31:19 +00:00
Václav Slavík
86f6187197 fixed DoGetBestSize -- it returned too small bounding box
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6626 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 19:31:03 +00:00
Stefan Neis
0b7e6e7da2 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6625 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 18:01:18 +00:00
Stefan Neis
c78b3acd0c Added WXUNUSED_GTK and WXUNUSED_GTK_AND_MOTIF
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6624 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 17:28:36 +00:00
Vadim Zeitlin
451868847b replaced make with $MAKE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6623 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 16:38:01 +00:00
Stefan Neis
aa5e1f75d9 Added many WXUNUSED, untabified once again.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6622 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 13:59:41 +00:00
Stefan Neis
4a64bee465 Fixed remaining int vs. long warnings.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6621 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 13:27:39 +00:00
Václav Slavík
f3d05fe417 fixed GTK 1.2.7 vs. <= 1.2.6 API incompatibility: gdk_gc_set_hashes, argument 3 gint8* vs. char*
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6620 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 12:28:31 +00:00
Julian Smart
f3979fcc3b Oops, compile errors...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6619 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 10:49:46 +00:00
Václav Slavík
5d9dba5b1a documented wxSpinCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6618 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 10:12:20 +00:00
Václav Slavík
71155438f0 documented wxSpinCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6617 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 10:06:36 +00:00
Václav Slavík
04a4a2afd5 documented wxFontMapper
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6616 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 10:05:40 +00:00
Václav Slavík
de52822400 now compiles with wxBase
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6615 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 10:05:23 +00:00
Václav Slavík
ba9f095e75 fixed documentation of wxList::Clear behavior after DeleteContents(TRUE)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 10:05:09 +00:00
Václav Slavík
77611ad4da fixed typo : _ instead of wxT
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6613 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 10:05:02 +00:00
Robin Dunn
7ece89c6b1 Did splitting of wxEntry for wxMSW. Not nearly as complex as wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6612 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 09:05:03 +00:00
Robin Dunn
c5a7371313 some tests
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6611 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 07:32:25 +00:00
Robin Dunn
954de0f158 Split up wxEntry so wxPython can use the bits it needs instead of
copying code.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6610 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 07:25:01 +00:00
Robin Dunn
7ff49f0c73 More updates.
Began splitting up wxEntry so wxPython can use the bits it needs
instead of copying code.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6609 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 07:24:00 +00:00
Robin Dunn
4c9993c3c7 updates to correct build errors (new locations, etc.)
minor bug fixes, etc.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6608 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 03:20:42 +00:00
Unknown (NI)
8775b35700 small change to avoid floating point exception in wxScrolledWindow::Scroll
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6607 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 03:05:27 +00:00
Vadim Zeitlin
b7e1921351 some warnings fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6606 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 00:47:45 +00:00
Vadim Zeitlin
378d2bd3a8 some warnings fixed in the sockets code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6605 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-11 00:47:00 +00:00
David Webster
7c8aaed1c7 remove the VisualAge 3.0 hack
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6604 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 23:12:50 +00:00
David Webster
b41cdbf4d3 Icon bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6603 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 23:12:21 +00:00
David Webster
9a0c6b1ed2 combine minimal with the .dll
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 22:24:54 +00:00
David Webster
7bed7a507c no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6601 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 22:24:07 +00:00
Stefan Neis
0b7e77395d Replaced long by wxCoord as used in the other ports.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6600 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 22:07:01 +00:00
Stefan Neis
4a277ceb2b Compilation fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6599 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 20:55:15 +00:00
Robert Roebling
b420fb6a37 Small oops in redrawing code.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6598 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 19:49:54 +00:00
Guillermo Rodriguez Garcia
5adbbc2995 Updated to reflect latest changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6597 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 17:59:20 +00:00
Robert Roebling
27d0ab2482 Committing menubar changes again after CVS trashed them.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6596 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 17:30:22 +00:00
Robert Roebling
186baeb237 Fixed various bugs (from - err - various authors) related
to inserting and replacing menubars etc.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6595 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 17:24:09 +00:00
Julian Smart
a5a55c458f Added icons.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6594 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 16:09:01 +00:00
Julian Smart
66f55ec64c Doc corrections, wxMotif toolbar AddControl implementation (untested as yet)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6593 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 16:06:33 +00:00
Stefan Neis
723d1b1da1 Removed unused parameter addToSelected.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6592 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 13:57:58 +00:00
David Webster
32e768ae94 OS/2 patch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 13:56:17 +00:00
David Webster
3d407edab0 no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6590 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 13:53:58 +00:00
Stefan Neis
e32352cf66 Changed wxGridCellCoords from long to int (get rid of most HP warnings?)
Added Shift/Control+Click handling for labels.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6589 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 12:27:27 +00:00
Karsten Ballüder
2c4ad28347 fixed configure script for Solaris
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6588 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 11:33:19 +00:00
Julian Smart
3f8e5072f7 Small fixes for Tex2RTF but alas, we still get memory problems.
Added wxUSE_MFC setting (doesn't include windows.h, removes own memory
tracing); added include <ctype.h> in case where PCH isn't used;
wxExit now exits :-)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 11:18:22 +00:00
Julian Smart
0a5835068c Added GIF files to help sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6586 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 08:18:14 +00:00
Guillermo Rodriguez Garcia
9bdc99bec2 Fix from Mumit Khan to allow mingw DLL compilation, v.2 :-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6585 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 07:32:25 +00:00
Guillermo Rodriguez Garcia
af7b970e76 Fix from Mumit Khan to allow mingw DLL compilation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6584 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 07:29:51 +00:00
David Webster
d853016702 no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6583 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 06:23:53 +00:00
Guillermo Rodriguez Garcia
02d15cad11 Ups, mismatch between header and source wrt InterruptWait()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6582 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 05:54:35 +00:00
Guillermo Rodriguez Garcia
ee80814753 Set IPC by default on MSW (need to test recent changes), instead of DDE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6581 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 05:32:40 +00:00
Guillermo Rodriguez Garcia
bffc1eaaf5 Finally deprecated callbacks.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6580 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 05:31:53 +00:00
Guillermo Rodriguez Garcia
cdc59bb69e Some parts rewritten to use wxSocket events instead of callbacks, as the
latter will be deprecated soon. Also, some slight bugs fixed.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6579 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 05:30:53 +00:00
Robin Dunn
ecc888a08f Fixes for building the DLL with the new auxillary library names
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6578 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 02:58:58 +00:00
Michael Bedward
f41986da2d Compilation fix for Borland. Write 'T' or 'F' to logBuf rather than
bool return values of XXXDown() key query functions.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6577 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 02:27:48 +00:00
Vadim Zeitlin
dee1b66f85 changed default image size to 16
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 01:17:08 +00:00
Vadim Zeitlin
d7da975624 1. fixed warning which was hiding a bug in wxGrid::SendEvent()
2. started documenting wxDateTime
3. and wxLongLong


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6575 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 01:15:17 +00:00
Guillermo Rodriguez Garcia
3adb47a937 - Uses wxSocketBase::Destroy() now.
- Fixed a memory leak when connection requests failed.
- Maybe some other (small) bugfix as well.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6574 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 00:21:25 +00:00
Guillermo Rodriguez Garcia
557e701169 Bugfix:
GSocket_Shutdown sets m_detected to GSOCK_LOST_FLAG.
This avoids that Wait operations from wxSocket get caught in an endless
loop, if called after wxSocketBase::Close(). Was breaking IPC.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6573 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-10 00:20:00 +00:00
Julian Smart
5da69e38e6 Help sample should work for .zip help files now.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6572 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 23:41:57 +00:00
Julian Smart
98beeb8ba9 Added wxHtmlHelpController version of help file.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6571 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 23:08:53 +00:00
David Webster
75acb5321e os2 update. Need initializers like windows, not unix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6570 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 22:26:41 +00:00
David Webster
052e089dce Module definitions files for build VisualAge C++ V3.0 dlls.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6569 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 21:15:03 +00:00
David Webster
413098d06c Update for building jpeg as an os2 dll
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 21:12:50 +00:00
David Webster
1d4ad4df1d Update for building png as an os2 dll
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6567 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 21:12:29 +00:00
David Webster
4de601b128 Update for building xpm as an os2 dll
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 21:12:05 +00:00
David Webster
7e415a0f66 Update for building zlib as an os2 dll
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6565 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 21:11:46 +00:00
David Webster
3bedfb1d17 Update for building tiff as an os2 dll
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6564 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 21:11:21 +00:00
David Webster
426d574504 Loads of framework and dll fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6563 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 21:10:00 +00:00
David Webster
60b8078990 Updates for build dll
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 21:07:55 +00:00
David Webster
9add53a470 More framework fixes and fixes for building dlls.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 21:06:48 +00:00
Vadim Zeitlin
b0a0942105 fix for resourses compilation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6560 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 20:32:10 +00:00
Vadim Zeitlin
3283290881 patch from Paul Gammans <paul.gammans@brunel.ac.uk> for cross compiling for MSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6559 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 20:18:59 +00:00
Julian Smart
7b28757f5e Mmedia, OGL lib directory changes; omitted naughty wxGA_SMOOTH style from wxProgressDialog;
wxMotif toolbar fix; ~wxWindow Motif fix


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6558 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 20:15:44 +00:00
Julian Smart
b4414c1f37 wxHtmlHelpController made compatible with other controllers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6557 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 20:05:52 +00:00
Robert Roebling
304e5625e5 Disabled horizontal report mode scrolling in wxListCtrl
as it skrews up the display,
  Corrected disabling the closing of top level window
    when there are open (modal) dialogs,
  Minor change to redrawing window-less widgets.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 20:04:36 +00:00
Robin Dunn
9ce192d417 Initial version of wxStyledTextCtrl, a Scintilla wrapper. There is
still LOTS and LOTS to be done, but this is already very functional.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6555 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 19:42:06 +00:00
Vadim Zeitlin
7b22b912fd updated from the current sources
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6554 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 19:35:16 +00:00
Robin Dunn
fe98790977 Oops. Removed duplicate target.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6553 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 19:26:18 +00:00
Robin Dunn
50a5c3f33e Made clean target be not quite so agressive, added 'cleanall'
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6552 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 19:25:20 +00:00
Guillermo Rodriguez Garcia
c17e495529 Removed a space (oh, dear, it looks like a joke
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6551 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 18:34:59 +00:00
Vadim Zeitlin
7e12d1bf7f very minor fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6550 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 18:33:16 +00:00
Vadim Zeitlin
b4da05a638 (failed) attempts at fixing menu bar swapping
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 17:53:58 +00:00
Vadim Zeitlin
8862e11b01 fixed parsing of non quoted entries in .mime.types
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6548 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 17:14:26 +00:00
Vadim Zeitlin
b97f6d757b regenerated with tmake
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6547 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 16:48:37 +00:00
Vadim Zeitlin
bd9724b905 Get/SetDefaultItem docs corrections
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6546 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 16:47:20 +00:00
Vadim Zeitlin
6cbe6d0821 don't define __cplusplus for DECCXX if it is already defined
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6545 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 16:40:55 +00:00
Vadim Zeitlin
0e8c82331d don't translate wxASSERT_MSG messages
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6544 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 16:33:49 +00:00
Vadim Zeitlin
771779ed91 use wxFAIL_MSG, not wxMessageBox for programming errors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6543 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 16:33:03 +00:00
Vadim Zeitlin
793867a736 explain why quotes/brackets should be used in #includes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6542 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 16:31:35 +00:00
Vadim Zeitlin
c5d3832cfe fixed the value of LVM_SETEXTENDEDLISTVIEWSTYLE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6541 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 16:22:51 +00:00
Vadim Zeitlin
0e93516996 don't allow multiple root in the tree
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 16:19:35 +00:00
Stefan Neis
6b10575493 Make correct cell visible for cursor movement.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6539 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 15:55:17 +00:00
Stefan Neis
f0d5fc50ef Added workaround for life crashing in toolbar deletion.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6538 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 14:58:40 +00:00
Stefan Neis
ca4f2b729c Modified keyboard and mouse handling wrt selecting blocks/cells.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 14:25:07 +00:00
Guillermo Rodriguez Garcia
4bd87101b3 Added samples.inc to DATAFILES in Makefile.in - is that enough?
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6536 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 14:19:32 +00:00
Mark Johnson
30bb7c133e doc.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6535 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 14:01:39 +00:00
Stefan Neis
d95b0c2ba0 Changed Shift+Arrow handling
Fixed Ctrl/Shift/Alt/Meta handling in generated events.
Added display of Ctrl/Shift/Alt/Meta status to griddemo.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6534 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 13:57:02 +00:00
Robert Roebling
b6fa52db66 Some make corrections for HP and related,
Changed refresh order so that window-less widgets
    don't get overdrawn anymore,
  Prevent GTK from filtering our supposedly unneeded
    expose events,
  Block all expose calls if a resize is requested and
    do a full redraw then, thus removing flicker and
    behaving like wxMSW,
  Moved some doubled expose and draw code from GtkPizza
    to the respective callbacks in window.cpp,
  Set idle priority to a higher value (which should
    indicate a lower priority if I interpret glib.h
    correctly) but the desired side-effect didn't
    really show up.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6533 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 13:24:34 +00:00
Guillermo Rodriguez Garcia
6da3a3ef1f Removed an extra scope resolution operator in the declaration of class LifeShape
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-09 12:07:01 +00:00
Vadim Zeitlin
c77ae1d950 (blind) gcc fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6531 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 15:12:29 +00:00
Vadim Zeitlin
39d03faf4e warnings in wxCHeCK_MSG fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6530 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 15:08:42 +00:00
Vadim Zeitlin
5bcea60e1b warning in wxCustomDataObject::Free fix (I hope)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6529 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 15:08:17 +00:00
Ron Lee
ecb017924c final (touch wood) tidy after things went pearshaped on line 666
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6528 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 15:06:28 +00:00
George Tasker
a00d62c913 Fixed the fix of the fix so it will compile under VC6
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6527 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 14:40:56 +00:00
Ron Lee
87e1d2a51b fixed my own typo.. oops
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6526 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 14:17:37 +00:00
Julian Smart
8fdffc7e9b Correction
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6525 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 14:10:30 +00:00
David Webster
58ca01aeae Placed an ifndef for VA around the MSWGetImagePixels declaration.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6524 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 13:48:14 +00:00
Ron Lee
4dcfef961d fix for pageup 'blind spot'
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6523 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 13:34:14 +00:00
Julian Smart
7c4a59a881 Added WinHelp sample doc to samples/help, and made it possible to show
both native and wxHTML help


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6522 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 13:04:51 +00:00
Julian Smart
07fce3c2f9 More makefile and project fun
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6521 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 10:38:50 +00:00
Julian Smart
5fa399c9e2 Made VC++ makefiles and project files a bit more consistent
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6520 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 08:32:31 +00:00
Guillermo Rodriguez Garcia
90da75e673 Forgot to add this one
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6519 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 08:30:29 +00:00
Guillermo Rodriguez Garcia
061379e2ac Updated to reflect some of the latest changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6518 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 08:29:16 +00:00
Mark Johnson
6bf783984a calctrl.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6517 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 08:28:40 +00:00
Guillermo Rodriguez Garcia
f187448d85 All IO calls take void* instead of char*
Added Get/SetClientData to wxSocketBase and wxSocketEvent
Some other deprecated functions & co.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6516 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 08:28:20 +00:00
Julian Smart
62ea79f381 Added WIN16 code for window disabler
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6515 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 08:25:42 +00:00
Jouk Jansen
6ad7611a5c Committing in .
Modified Files:
 	wxWindows/descrip.mms
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6514 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-08 07:28:35 +00:00
Václav Slavík
96becbd8fa fix of previous commit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6513 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 21:32:40 +00:00
David Webster
70a5b429e7 makefile enhancements for dll, ne wxwindll.ics for VA 4.0 dll
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6512 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 21:29:46 +00:00
David Webster
f23208cacc more minimal stuff
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6511 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 21:28:30 +00:00
David Webster
49af73a59b remove the #warning for VisualAge
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6510 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 21:27:31 +00:00
David Webster
3e282d337f no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6509 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 21:26:54 +00:00
Guillermo Rodriguez Garcia
fbf5995c02 Ops, stupid me.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 17:16:54 +00:00
Václav Slavík
635b44a118 fixed bug: removed m_windowStyle = style
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6507 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 16:30:45 +00:00
Guillermo Rodriguez Garcia
71622a7ac0 First set of changes toward wxBase compliance :-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6506 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 16:11:58 +00:00
Mark Johnson
3965571c7c *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 13:47:44 +00:00
Vadim Zeitlin
ea8849aaf6 updated to use msgmerge
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6504 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 12:17:16 +00:00
Stefan Neis
cf58a48f62 Add Child to parent instead of adding it to itself!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6503 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 11:48:36 +00:00
Mark Johnson
9898fcda80 calendar.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6502 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 11:02:27 +00:00
Vadim Zeitlin
3c002e048d technote about translations added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6501 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 10:54:39 +00:00
Vadim Zeitlin
f077f5c39f technote about translations added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6500 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 10:53:53 +00:00
Mark Johnson
efa7ad84f6 calendar.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6499 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 10:38:12 +00:00
Mark Johnson
78d5068a96 calendar.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6498 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 10:19:00 +00:00
Michael Bedward
cb9fb5bb00 Modified <shift>+arrow key behaviour so that the starting cell is
included in the selection


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 10:07:36 +00:00
Vadim Zeitlin
07e87221f6 Mark Johnoson's additions for variable-width weekday names
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6496 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 10:03:54 +00:00
Michael Bedward
1b6dea5de1 Added Create functions. They return TRUE if the file was successfully
created; FALSE if it couldn't be created (or already exists - is that
ok?).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6495 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 10:02:25 +00:00
Vadim Zeitlin
d76bb2182d APPEXTRALIBS added to LDLIBS
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6494 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 09:15:35 +00:00
Jouk Jansen
d6c85bee75 Committing in .
VMS/GTK compile support

 Added Files:
 	wxWindows/src/gtk/descrip.mms
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6493 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 09:02:37 +00:00
Jouk Jansen
3fa056ab78 Committing in .
VMS/GTK compile support

 Modified Files:
 	wxWindows/descrip.mms wxWindows/setup.h_vms
 	wxWindows/samples/minimal/descrip.mms
 	wxWindows/src/common/descrip.mms
 	wxWindows/src/common/resource.cpp
 	wxWindows/src/generic/descrip.mms
 	wxWindows/src/gtk/dcclient.cpp wxWindows/src/gtk/filedlg.cpp
 	wxWindows/src/gtk/fontdlg.cpp wxWindows/src/gtk/listbox.cpp
 	wxWindows/src/gtk/tbargtk.cpp wxWindows/src/gtk/win_gtk.c
 	wxWindows/src/unix/descrip.mms wxWindows/src/unix/fontenum.cpp
 Added Files:
 	wxWindows/lib/vms_gtk.opt
 	wxWindows/src/gtk/wx_gtk_vmsjackets.c
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6492 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 09:00:27 +00:00
Michael Bedward
19701d22df Removed redundant m_displayed member var from wxGrid
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6491 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 08:22:43 +00:00
Michael Bedward
2a7750d939 Moved current cell initialization from wxGrid::OnPaint to
wxGrid::DrawHighlight to accommodate wxGTK behaviour.

Removed redundant m_displayed member var from wxGrid.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6490 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-07 07:41:58 +00:00
Guillermo Rodriguez Garcia
3f04dfd331 Changed another NONE to wxSOCKET_NONE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6489 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 23:39:09 +00:00
Guillermo Rodriguez Garcia
ed8297b98d Some other typos
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6488 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 21:00:02 +00:00
Guillermo Rodriguez Garcia
e8773bdf80 Use IsConnected instead of m_connected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6487 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 20:35:53 +00:00
Guillermo Rodriguez Garcia
45ef0076bf Ops, typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6486 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 18:14:32 +00:00
Guillermo Rodriguez Garcia
a24cc774ec Trying to fix IPC problems under Linux as reported by VS
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6485 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 17:44:27 +00:00
Vadim Zeitlin
0dcf989311 system libtiff can now be used instead of the built-in one
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6484 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 17:37:58 +00:00
Julian Smart
59917a749b Corrections
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6483 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 17:34:25 +00:00
Guillermo Rodriguez Garcia
425652451b Added wxIcon(const char **) ctor (same as char **)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6482 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 17:34:24 +00:00
Guillermo Rodriguez Garcia
65dc92ca0f removed wxUSE_WXCONFIG (obsoleted by wxUSE_CONFIG
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 17:23:16 +00:00
Vadim Zeitlin
a6e2b3a831 patches from Ricky Gonzales <gonzales@pyramid3.net>:
1. BC++ 5.5 compilation/building fixes
2. wxMSW listctrl will use correct ILC_COLOR flag depending on current display
   depth
3. wxFrame::Show() argument is TRUE by default undet GTK/Motif too


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6480 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 17:16:12 +00:00
Guillermo Rodriguez Garcia
6b4a39fb51 Documented Destroy()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6479 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 17:14:16 +00:00
Guillermo Rodriguez Garcia
5cb9148949 Documented Destroy()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6478 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 17:11:10 +00:00
Guillermo Rodriguez Garcia
03bbd98b9c Added a mention about demos/ instead of samples/
Added a mention of the 'samples overview' section in the wxWindows manual
Added EOF marker to easily distinguish the text from the CVS log.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6477 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 16:50:13 +00:00
Guillermo Rodriguez Garcia
b4e87ec32c Added rotate sample and comment about masks in wxImage::Rotate
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6476 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 16:31:05 +00:00
Guillermo Rodriguez Garcia
1ea670896b Disabled memory tracing code for mingw32,
Added LIBTIFF support by default,
Added comment about itsy bitsy lib being useful for win3.1 only,


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 16:19:39 +00:00
Guillermo Rodriguez Garcia
d2249417f8 And now some more of them
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6474 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 15:35:55 +00:00
Guillermo Rodriguez Garcia
70d213e08b Moved some items to 'already done' in the todo list
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6473 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 15:28:41 +00:00
Guillermo Rodriguez Garcia
89e6463c1a Slight changes to the stopwatch test
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6472 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 15:08:17 +00:00
Mark Johnson
67c0489076 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6471 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 09:37:35 +00:00
Mark Johnson
260460ae06 dbbrowse.cpp dbbrowse.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6470 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 09:08:03 +00:00
Ron Lee
f547e9bb27 set m_clipXX so dc.GetClippingBox returns real bounding box
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6469 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 04:40:01 +00:00
Guillermo Rodriguez Garcia
a059bcd21c Added blind-fix for vert. scrollbars - not tested yet
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6468 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 02:30:36 +00:00
Guillermo Rodriguez Garcia
b3ddc4c2ec Added support for timer events in Motif
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6467 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-06 00:59:31 +00:00
Ron Lee
ee8dbe6308 set m_clipXX to resultant clipping region
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6466 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 23:42:50 +00:00
Stefan Neis
b3ef4fb50c Re-added XtDestroyWidget call in ~wxWindow - hopefully fixed the problem
with scrolledWindow.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6465 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 20:03:09 +00:00
Robert Roebling
40903af771 Enabled OpenGl in RPM.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6464 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 19:53:29 +00:00
Ron Lee
05a1104392 couple of typo/thinko bug fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6463 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 19:18:31 +00:00
Guilhem Lavaux
5dffa63b2f Removed all wxMMedia2 files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 19:05:13 +00:00
Guilhem Lavaux
e8482f24cf Moved wxMMedia to contrib/src/mmedia
Added contrib configure
Made wxSocket sample compile
Made OGL compile
Modified main configure to pass some more parameter
to children
Changed the wxProcess doc according to the modification

Still some win makefiles to come


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 19:03:21 +00:00
Stefan Neis
f5b9cde232 Fixed apparent typo (int->wxWindowID)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6460 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 18:46:27 +00:00
Robert Roebling
c661ecca60 Various makefile and installation things.
main() is now always in the program. Also added a
    macro that doesn't set main at all so that users
    can have their own.
  The isosurf sample doesn't work anymore.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 17:49:58 +00:00
Stefan Neis
0649ebbdb7 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6458 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 16:25:23 +00:00
Guilhem Lavaux
84899251f1 Removed wxMMedia classes doc from the main wx doc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6457 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 16:05:53 +00:00
Václav Slavík
4d44947336 added missing wxImageList::Add methods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6456 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 14:15:47 +00:00
Julian Smart
4767810533 Fixed blatant non-initialisation bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6455 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 11:45:03 +00:00
Vadim Zeitlin
87798c0030 test for 'backwards clock' bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6454 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 02:31:16 +00:00
Vadim Zeitlin
d31b7b682c 1. wxStopWatch tests in console
2. some more messages in exec


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6453 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 02:23:53 +00:00
Vadim Zeitlin
f7bd3a7d8f create null, not empty, region in default wxRegion ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6452 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 02:14:10 +00:00
Vadim Zeitlin
5e1febface 1. wxWindowDisabler modified to bring parent window back to top under MSW
2. modal dialogs without parent now use the app top window as parent or use
   wxWindowDisabler if none
3. modal dialogs bring parent windows to top when activated
4. wxBase dsp will now compile it with MT CRT


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6451 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 02:12:04 +00:00
Vadim Zeitlin
41fd4136fc regenerated from configure.in
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6450 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-05 00:06:57 +00:00
Stefan Neis
0912bee1aa Compilation fixes (true->TRUE, false->FALSE)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6449 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 23:59:34 +00:00
Vadim Zeitlin
581e8516ea fix for --with-libpng=sys warning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6448 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 23:59:13 +00:00
Stefan Neis
0dd8a49d4d Added a fix for compilers with problems to compute signed % unsigned
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6447 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 23:38:22 +00:00
Vadim Zeitlin
983a384436 removed warning about wxDrawRectangle being unused
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6446 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 23:21:53 +00:00
Stefan Neis
5c8fc7c1de Improved handling of selection/deselection events.
Improved keyboard navigation.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6445 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 23:09:37 +00:00
Vadim Zeitlin
1f80a703f2 removed extern from inline function declarations
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6444 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 22:54:41 +00:00
Václav Slavík
777fd647dc fixed couple of bugs in wxZlibInputStream -- mainly incorrect handling of underlaying stream errors and absolutely wrong bytes counting
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6443 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 20:37:23 +00:00
Václav Slavík
39a16cb41d fixed wxDataInputStream::ReadString for empty strings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6442 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 20:37:16 +00:00
Václav Slavík
11eaa98105 fixes for wxBase compilation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 20:37:08 +00:00
Václav Slavík
c07c37d70a added more stuff to wxBase: zipstrm, zstream, fs_*, mstream
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6440 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 20:36:46 +00:00
Stefan Neis
043d16b225 Bugfixes; added selection modes demo to griddemo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6439 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 19:56:39 +00:00
Robert Roebling
a56fcaaf46 Some more drawing things,
Tried to make miniframe stay on top, doesn't work,
  Make radio box big enough for its title,
  Can't anylong close disabled toplevel windows,
  Minor other changes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6438 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 18:40:52 +00:00
Stefan Neis
f1567cddea Added SetSelectionMode
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6437 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 16:35:58 +00:00
Robert Roebling
e1208c3103 Lotta stuff for drawing etc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6436 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 16:23:26 +00:00
Guillermo Rodriguez Garcia
a85139a1b7 Ops
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6435 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 13:20:35 +00:00
Guillermo Rodriguez Garcia
d90d994c74 Motif blindfix :-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6434 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 13:20:14 +00:00
Julian Smart
b14159f7d8 Fixed non-standard C++ syntax errors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6433 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 12:11:47 +00:00
Robert Roebling
993f97eed6 Adapted wxGTK to wxMSW's notion of region setting.
Made Julian's gc_include_inferior hack a bit less radical.
  Small addition to changes.txt,
  Compile fix to dbbrowse sample. Still crashes upon startup.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6432 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 09:24:17 +00:00
Guillermo Rodriguez Garcia
36bec0acf0 Oh well..
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6431 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 02:54:56 +00:00
Guillermo Rodriguez Garcia
bd4d918f36 Fixed (my own) stupidity in Connect() mini-tutorial / comments
Changed all _T() to _() in server.cpp
Modified server to use Destroy() instead of directly accessing the wxPendingDelete list
Removed the panels which contained the textctrls - they are not needed at all.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6430 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 02:51:45 +00:00
Guillermo Rodriguez Garcia
2b396caaa2 Stupidity fixed in WaitOnConnect()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6429 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 02:42:13 +00:00
Guillermo Rodriguez Garcia
261b9a3df1 Stupidity fixed in WaitOnConnect() docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6428 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-04 02:41:14 +00:00
Václav Slavík
5824f314a3 added compression ratio argument to wxZlibOutputStream ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6427 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 22:52:17 +00:00
Guillermo Rodriguez Garcia
77a36397c0 Removed dependency on tiffiop.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6426 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 20:53:27 +00:00
Guilhem Lavaux
3072610753 wxSoundFileStream doc updates (indeed, first write)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6425 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 20:10:49 +00:00
Robert Roebling
5d25c05039 Clean-up, speed-up and bug-fix for wxListCtrl drawing,
Removed overlay things from wxScreenDC,
  Added test for bitmaps clipping with regions.
  Updates to changes.txt


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6424 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 20:09:19 +00:00
Guillermo Rodriguez Garcia
9764dcbca3 Please add classes in alphabetical order
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6423 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 19:24:58 +00:00
Guillermo Rodriguez Garcia
9181a38382 Added Destroy()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6422 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 19:24:24 +00:00
Guillermo Rodriguez Garcia
d7bd7ca5bf makefiles changed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6421 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 19:24:21 +00:00
Guillermo Rodriguez Garcia
e51b013093 small mods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6420 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 19:22:35 +00:00
Guilhem Lavaux
70dc22dcc9 Updated some doc (wxProcess, wxSoundStream)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6419 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 18:46:12 +00:00
Vadim Zeitlin
20590f751f bug in month day parsing - now check that it's > 1 too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6418 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 18:27:18 +00:00
Guillermo Rodriguez Garcia
a6a1ef9e7b new XPMs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6417 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 18:22:42 +00:00
Guillermo Rodriguez Garcia
75f245410a new bitmaps
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6416 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 18:22:20 +00:00
Guillermo Rodriguez Garcia
29b07a3821 Life version 2.1
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6415 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 18:21:48 +00:00
Guillermo Rodriguez Garcia
5f9fd7ea86 no more _ftime instead of ftime
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6414 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 17:36:02 +00:00
Vadim Zeitlin
2a47e1401b regenerated from filelist.txt
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6413 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 17:04:33 +00:00
Stefan Neis
b58088819b Added extended selection support.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6412 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 16:44:33 +00:00
Stefan Neis
d2e4966591 Added gridsel.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6411 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 16:35:47 +00:00
Guillermo Rodriguez Garcia
b531e140f1 mingw32 makefiles must use tabs as separators
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6410 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 16:09:38 +00:00
Vadim Zeitlin
b0230a69bc fatal bug in wxSplitPath fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6409 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 14:05:42 +00:00
Guillermo Rodriguez Garcia
91ff98b7b5 Added HAVE_FTIME for all Windows compilers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 13:51:28 +00:00
Julian Smart
1fc25a89ac Added OGL to contrib
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6407 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 11:25:10 +00:00
Julian Smart
b14391d1c8 Removed OGL prior to re-adding; some Watcom corrections
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6406 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 11:10:51 +00:00
Vadim Zeitlin
422107f900 removed OGL files from wxGTK build, fixed configure for wxBase
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6405 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 10:46:23 +00:00
Vadim Zeitlin
2c8e47380e 1. wxShell fixes: now really uses shell (it wasn't different from wxExecute!)
and also added a version which captures the programs output
2. fix for compilers which have void ftime() (my mingw does) in timercmn.cpp
3. updated console sample to test wxShell/wxExecute
4. treetest now can toggle images or change their size
5. wxTreeCtrl doesn't crash if it has no image list


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-03 10:31:34 +00:00
David Webster
914589c26c More framework updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6403 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 22:13:38 +00:00
Stefan Neis
294f6bcbdb Added class to handle selection inside wxGrid
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6402 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 19:41:17 +00:00
Robert Roebling
bc3cedfa48 Added test for region clipping.
Corrected makefile.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6401 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 19:18:45 +00:00
Vadim Zeitlin
cd6ce4a90c 1. wxProcess changes to make capturing subprocess output easier (and more
reliable), now works in both sync and async modes
2. wxSafeYieldBug() corrected, wxWindowDisabler which is now used in it
   added and documented
3. exec sample updated to illustrate capturing the subprocess output
4. wxStreamBase::IsOk() added
5. wxInputStream::Eof() added and non-blocking Eof() implementation in
   wxPipeInputStream used by wxExecute


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6400 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 19:06:13 +00:00
Guillermo Rodriguez Garcia
21e5527b59 Latest OS/2 changes broke xpmlib for MSW. Fixed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6399 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 17:18:34 +00:00
Vadim Zeitlin
d8e41d423d added demo of capturing program output - doesn't work very well though
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6398 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 16:17:43 +00:00
Vadim Zeitlin
42d14d4e8f corrected Remove() description
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6397 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 15:41:18 +00:00
Jouk Jansen
61a021a822 Committing in .
Modified Files:
 	wxWindows/setup.h_vms wxWindows/src/common/timercmn.cpp
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6396 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 11:29:59 +00:00
Ron Lee
bc2e39e366 made msw wxRegion(wxRect&) constructor consistant with other wxRegion constructors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6395 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 10:47:38 +00:00
Guillermo Rodriguez Garcia
1cab5b8d99 Renamed tech notes to tnxxxx.txt
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6394 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 04:18:53 +00:00
Guillermo Rodriguez Garcia
0824a13502 Changed naming to TNxxxx
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6393 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 04:17:18 +00:00
Vadim Zeitlin
9121bed249 no changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6392 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 01:06:16 +00:00
Vadim Zeitlin
a95e38c034 1. wxGrid row can't be resized to less than minimal height
2. memory leaks fixed in wxHashTableLong
3. and in wxGrid
4. changed newgrid sample to use char buffers
5. fixed double clicking owner-drawn buttons
6. compilation fix in enhmeta.cpp for !wxUSE_DND
7. bug introduced earlier today in wxGridCellAttr::GetEditor() fixed
8. bool renderer/editor now look as good as I may ever make them look
   good under MSW


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-02 00:58:11 +00:00
5846 changed files with 32588 additions and 1390354 deletions

View File

@@ -1,44 +0,0 @@
system.list
bin
.gdb_history
Test
config.cache
configarg.cache
config.status
system.list
linux.system.cache
wx-config
config.log
linux-gnu.system.cache
*.dsp
*.dsw
*.plg
*.opt
*.aps
*.ncb
*.pro
*.opt
*.d
*.swp
*.swo
Release
Debug
ReleaseDLL
DebugDLL
robert
stamp-h.in
Makefile
configure
setup.h
stamp-h
libtool
aclocal.m4
base
gtk
motif
win32
base-release
gtk-release
motif-release
win32-release
*tags

View File

@@ -1,242 +0,0 @@
------------------------------------------------------------------------
How to build the sources from CVS
------------------------------------------------------------------------
I) Windows using plain makefiles
----------------------------------------
a) If using Microsoft Visual C++ 5.0 or 6.0
Ensure that the command-line compiler and tools (including
nmake) are installed and ready to run. Depending on your
installation there may be a batch file (named something like
VCVARS32.BAT) that needs to be run to set correct environment
varaibles and PATH entries.
Continue with item c) below.
b) If using the GNU MinGW32 or GNU CygWin32 compilers
You'll need the compiler itself which is available from
http://www.cygwin.com
When using MingW32 you'll need GNU make which is a part
of the CygWin32 toolchain and is also available as a stand
alone port without the infamous Cygwin.dll from
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
where your compiler and tools reside
b-2) Using Mingw32 with gcc-2.95 and Anders Norlander's
Win32 headers
Using the newer gcc-2.95/Noralander header combination
will allow you to compile more of the MSW code, such
as OLE and Drag-n-Drop.
Instructions are similar to those for Regular Mingw32 except
->Get the compiler from
ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/gcc-2.95/
->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
-> Assumming that you installed the wxWindows sources
into c:\wxWin
-> Copy c:\wxWin\include\wx\msw\setup0.h
to c:\wxWin\include\wx\msw\setup.h
-> Edit c:\wxWin\include\wx\msw\setup.h so that
most features are enabled (i.e. defined to 1) with
#define wxUSE_ODBC 0
#define wxUSE_SOCKETS 0
#define wxUSE_HTML 1
#define wxUSE_THREADS 1
#define wxUSE_FS_INET 0
#define wxUSE_FS_ZIP 1
#define wxUSE_BUSYINFO 1
#define wxUSE_DYNLIB_CLASS 1
#define wxUSE_ZIPSTREAM 1
#define wxUSE_LIBJPEG 1
#define wxUSE_LIBPNG 1
and iostreams ares disabled with
#define wxUSE_STD_IOSTREAM 0
note: ODBC and SOCKETS can be 1 for gcc-2.95
-> type: cd c:\wxWin\src\msw
-> type: make -f makefile.g95 (if using GNU tools)
or type: make -f makefile.vc (if using MS VC++)
II) Unix ports
--------------
Building wxGTK or wxMotif completely without configure
won't ever work, but there is now a new makefile system
that works without libtool and automake, using only
configure to create what is needed.
In order to create configure, you need to have the
GNU autoconf package (version 2.13 or 2.14) installed
on your system and type run "autoconf" in the base
directory (or run the autogen.sh script in the same
directory, which just calls autoconf).
Set WXWIN environment variable to the base directory such
as ~/wxWindows (this is actually not really needed).
-> type: export WXWIN=~/wxWindows
-> type: md mybuild
-> type: cd mybuild
-> type: ../configure --with-motif
or type: ../configure --with-gtk
-> type: make
-> type: su <type root password>
-> type: make install
-> type: ldconfig
-> type: exit
Call configure with --disable-shared to create a static
library. Calling "make uninstall" will remove the installed
library and "make dist" will create a distribution (not
yet complete).
III) Windows using configure
----------------------------------------
Take a look at Unix->Windows cross compiling. With minor
modifications, this should work in Windows if you've got the cygnus
utilities (bash, GNU make, etc) and either mingw32 or cygwin32 installed.
See http://www.cygnus.com for these programs, or go straight to their
ftp server at ftp://sourceware.cygnus.com/pub/cygwin/.
Of course, you can also build the library using plain makefiles (see
section I).
V) MacOS
----------------------------------------
VI) OS/2
----------------------------------------
VII) Unix->Windows cross-compiling using configure
--------------------------------------------------
First you'll need a cross-compiler; linux glibc binaries of mingw32 and
cygwin32 (both based on egcs) can be found at
ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Otherwise you can
compile one yourself. Check the relevant FAQs.
[ A Note about cygwin32 and mingw32: the main difference is that cygwin32
binaries are always linked against cygwin.dll. This dll encapsulates most
standard Unix C extensions, which is very handy if you're porting unix
software to windows. However, wxMSW doesn't need this, so mingw32 is
preferable if you write portable C(++). ]
You might want to build both Unix and Windows binaries in the same source
tree; to do this make subdirs for each e.g. unix and win32. If you've
already build wxWindows in the main dir, do a 'make distclean' there,
otherwise configure will get confused. (In any case, read the section 'Unix
using configure' and make sure you're able to build a native wxWindows
library; cross-compiling errors can be pretty obscure and you'll want to be
sure that your configure setup is basically sound.)
To cross compile the windows library, do
-> cd win32
(or whatever you called it)
Now run configure. There are two ways to do this
-> ../configure --host=i586-mingw32 --build=i586-linux --with-mingw \
--enable-dnd=no --without-odbc
where --build= should read whatever platform you're building on. Configure
will notice that build and host platforms differ, and automatically prepend
i586-mingw32- to gcc, ar, ld, etc (make sure they're in the PATH!).
The other way to run configure is by specifying the names of the binaries
yourself:
-> CC=i586-mingw32-gcc CXX=i586-mingw32-g++ RANLIB=i586-mingw32-ranlib \
DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \
../configure --host=i586-mingw32 --with-mingw --enable-dnd=no
(all assuming you're using mingw32)
Drag'n'drop is disabled because mingw32 lacks (AFAIK) OLE headers.
[ Update: some new mingw32 versions now have a new set of windows header
files, which apparently can handle ole. Untested at the moment ]
ODBC files don't compile as of 13.10.99 - may be this will be fixed by the
moment you're reading these lines.
Configure will conclude that shared libraries are out of the question and
opt for a static one. I haven't looked into DLL creation yet.
Type
-> make
and wait, wait, wait. Don't leave the room, because the minute you do there
will be a compile error :-)
NB: you risk to get quite a few warnings about "ANSI C++ forbids implicit
conversion from 'void *'" in all places where va_arg macro is used. This
is due to a bug in (some versions of) mingw32 headers which may be
corrected by editing the file
${install_prefix}/lib/gcc-lib/i586-mingw32/egcs-2.91.57/include/stdarg.h
(instead of egcs-2.91.57 you may have something different), searching for
the lines
/* Define __gnuc_va_list. */
#ifndef __GNUC_VA_LIST
#define __GNUC_VA_LIST
#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__)
typedef char *__gnuc_va_list;
#else
typedef void *__gnuc_va_list;
#endif
#endif
and adding "|| defined(_WIN32)" to the list of platforms on which
__gnuc_va_list is char *.
If this is successful, you end up with a libwx_msw.a in win32/lib. Now try
building the minimal sample:
-> cd samples/minimal
-> make
and run it with wine, for example (or copy to a Windows box)
-> wine minimal.exe
If all is well, do an install; from win32
-> make install
Native and cross-compiled installations can co-exist peacefully
(as long as their widget sets differ), except for wx-config. You might
want to rename the cross-compiled one to i586-mingw32-wx-config, or something.
Cross-compiling TODO:
---------------------
- resource compiling must be done manually for now (should/can we link the
default wx resources into libwx_msw.a?) [ No we can't; the linker won't
link it in... you have to supply an object file ]
- dynamic libraries
- static executables are HUGE -- there must be room for improvement.

File diff suppressed because it is too large Load Diff

View File

@@ -1,144 +0,0 @@
*** \gcc-inc\basetyps.h Sat Jul 31 16:48:36 1999
--- basetyps.h Fri Aug 06 11:14:36 1999
***************
*** 74,91 ****
--- 74,97 ----
STDMETHOD(Clone)(IENUM_THIS_(I) I**) PURE; \
}
#define DECLARE_ENUMERATOR(T) DECLARE_ENUMERATOR_(IEnum##T,T)
+ #ifndef GUID_DEFINED
+ #define GUID_DEFINED
typedef struct _GUID
{
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID;
+ #endif /* GUID_DEFINED */
typedef GUID *REFGUID;
typedef GUID *LPGUID;
+ #ifndef UUID_DEFINED
+ #define UUID_DEFINED
typedef GUID UUID;
+ #endif /* UUID_DEFINED */
typedef GUID IID;
typedef GUID CLSID;
typedef CLSID *LPCLSID;
typedef IID *LPIID;
*** \gcc-inc\oaidl.h Sat Jul 31 16:48:42 1999
--- oaidl.h Fri Aug 06 13:18:48 1999
***************
*** 39,44 ****
--- 39,53 ----
#define IMPLTYPEFLAG_FRESTRICTED 4
#define IMPLTYPEFLAG_FDEFAULTVTABLE 8
+ #define DISPID_UNKNOWN ( -1 )
+ #define DISPID_VALUE ( 0 )
+ #define DISPID_PROPERTYPUT ( -3 )
+ #define DISPID_NEWENUM ( -4 )
+ #define DISPID_EVALUATE ( -5 )
+ #define DISPID_CONSTRUCTOR ( -6 )
+ #define DISPID_DESTRUCTOR ( -7 )
+ #define DISPID_COLLECT ( -8 )
+
typedef interface ITypeLib *LPTYPELIB;
typedef interface ICreateTypeInfo *LPCREATETYPEINFO;
typedef interface ICreateTypeInfo2 *LPCREATETYPEINFO2;
***************
*** 49,54 ****
--- 58,73 ----
typedef interface IDispatch *LPDISPATCH;
typedef interface ICreateErrorInfo *LPCREATEERRORINFO;
+ extern "C" const IID IID_ITypeLib;
+ extern "C" const IID IID_ICreateTypeInfo;
+ extern "C" const IID IID_ICreateTypeInfo2;
+ extern "C" const IID IID_ICreateTypeLib;
+ extern "C" const IID IID_ICreateTypeLib2;
+ extern "C" const IID IID_ITypeInfo;
+ extern "C" const IID IID_IErrorInfo;
+ extern "C" const IID IID_IDispatch;
+ extern "C" const IID IID_ICreateErrorInfo;
+
typedef enum tagSYSKIND {
SYS_WIN16,SYS_WIN32,SYS_MAC
} SYSKIND;
***************
*** 375,382 ****
STDMETHOD_(ULONG,Release)(THIS) PURE;
STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
! STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID)
PURE;
! STDMETHOD(Invoked)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
};
#ifdef __cplusplus
--- 394,401 ----
STDMETHOD_(ULONG,Release)(THIS) PURE;
STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
! STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*)
PURE;
! STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
};
#ifdef __cplusplus
*** \gcc-inc\objidl.h Sat Jul 31 16:48:42 1999
--- objidl.h Fri Aug 06 11:00:19 1999
***************
*** 627,633 ****
STDMETHOD(QueryGetData)(THIS_ FORMATETC*) PURE;
STDMETHOD(GetCanonicalFormatEtc)(THIS_ FORMATETC*,FORMATETC*) PURE;
STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE;
! STDMETHOD(EnumFormatEtc)(THIS_ DWORD,IEnumFORMATETC*) PURE;
STDMETHOD(DAdvise)(THIS_ FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE;
STDMETHOD(DUnadvise)(THIS_ DWORD) PURE;
STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**);
--- 627,633 ----
STDMETHOD(QueryGetData)(THIS_ FORMATETC*) PURE;
STDMETHOD(GetCanonicalFormatEtc)(THIS_ FORMATETC*,FORMATETC*) PURE;
STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE;
! STDMETHOD(EnumFormatEtc)(THIS_ DWORD,IEnumFORMATETC**) PURE;
STDMETHOD(DAdvise)(THIS_ FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE;
STDMETHOD(DUnadvise)(THIS_ DWORD) PURE;
STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**);
--- i386-mingw32\include\stdio.h Sun Aug 1 06:18:20 1999
+++ stdio.h Sun Nov 7 03:41:40 1999
@@ -203,9 +203,12 @@
int fprintf (FILE* filePrintTo, const char* szFormat, ...);
int printf (const char* szFormat, ...);
int sprintf (char* caBuffer, const char* szFormat, ...);
+int _snprintf (char* caBuffer, size_t n, const char* szFormat, ...);
int vfprintf (FILE* filePrintTo, const char* szFormat, va_list varg);
int vprintf (const char* szFormat, va_list varg);
int vsprintf (char* caBuffer, const char* szFormat, va_list varg);
+int _vsnprintf (char* caBuffer, size_t n, const char* szFormat,
+ va_list varg);
/* Wide character versions */
int fwprintf (FILE* filePrintTo, const wchar_t* wsFormat, ...);
--- i386-mingw32\include\winbase.h Sat Jul 31 17:48:48 1999
+++ winbase.h Fri Feb 25 01:49:08 2000
@@ -989,7 +989,7 @@
BOOL WINAPI CopyFileExW(LPCWSTR,LPCWSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD);
#define RtlMoveMemory memmove
#define RtlCopyMemory memcpy
-#define RtlFillMemory memset
+#define RtlFillMemory(d,l,f) memset ((d),(f),(l))
#define RtlZeroMemory(d,l) memset((d),0,(l))
#define MoveMemory RtlMoveMemory
#define CopyMemory RtlCopyMemory

View File

@@ -1,2 +0,0 @@
#!/bin/sh
autoconf

951
config.guess vendored
View File

@@ -1,951 +0,0 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Written by Per Bothner <bothner@cygnus.com>.
# The master version of this file is at the FSF in /home/gd/gnu/lib.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
#
# The plan is that this can be called by configure scripts if you
# don't specify an explicit system type (host/target name).
#
# Only a few systems have been added to this list; please add others
# (but try to keep the structure clean).
#
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 8/24/94.)
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
PATH=$PATH:/.attbin ; export PATH
fi
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
alpha:OSF1:*:*)
if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
fi
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
cat <<EOF >dummy.s
.globl main
.ent main
main:
.frame \$30,0,\$26,0
.prologue 0
.long 0x47e03d80 # implver $0
lda \$2,259
.long 0x47e20c21 # amask $2,$1
srl \$1,8,\$2
sll \$2,2,\$2
sll \$0,3,\$0
addl \$1,\$0,\$0
addl \$2,\$0,\$0
ret \$31,(\$26),1
.end main
EOF
${CC-cc} dummy.s -o dummy 2>/dev/null
if test "$?" = 0 ; then
./dummy
case "$?" in
7)
UNAME_MACHINE="alpha"
;;
15)
UNAME_MACHINE="alphaev5"
;;
14)
UNAME_MACHINE="alphaev56"
;;
10)
UNAME_MACHINE="alphapca56"
;;
16)
UNAME_MACHINE="alphaev6"
;;
esac
fi
rm -f dummy.s dummy
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
exit 0 ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
exit 0 ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-cbm-sysv4
exit 0;;
amiga:NetBSD:*:*)
echo m68k-cbm-netbsd${UNAME_RELEASE}
exit 0 ;;
amiga:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
*:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos
exit 0 ;;
arc64:OpenBSD:*:*)
echo mips64el-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
arc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
hkmips:OpenBSD:*:*)
echo mips-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
pmax:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
sgi:OpenBSD:*:*)
echo mips-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
wgrisc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
arm32:NetBSD:*:*)
echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
SR2?01:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
exit 0;;
Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
echo pyramid-pyramid-sysv3
else
echo pyramid-pyramid-bsd
fi
exit 0 ;;
NILE:*:*:dcosx)
echo pyramid-pyramid-svr4
exit 0 ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
i86pc:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
Series*|S4*)
UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
exit 0 ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
exit 0 ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
echo m68k-sun-sunos${UNAME_RELEASE}
;;
sun4)
echo sparc-sun-sunos${UNAME_RELEASE}
;;
esac
exit 0 ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
exit 0 ;;
atari*:NetBSD:*:*)
echo m68k-atari-netbsd${UNAME_RELEASE}
exit 0 ;;
atari*:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
sun3*:NetBSD:*:*)
echo m68k-sun-netbsd${UNAME_RELEASE}
exit 0 ;;
sun3*:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:NetBSD:*:*)
echo m68k-apple-netbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mvme68k:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mvme88k:OpenBSD:*:*)
echo m88k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
exit 0 ;;
macppc:NetBSD:*:*)
echo powerpc-apple-netbsd${UNAME_RELEASE}
exit 0 ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit 0 ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
exit 0 ;;
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
exit 0 ;;
2020:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
exit 0 ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
sed 's/^ //' << EOF >dummy.c
int main (argc, argv) int argc; char **argv; {
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_SVR4)
printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
#endif
#endif
exit (-1);
}
EOF
${CC-cc} dummy.c -o dummy \
&& ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
&& rm dummy.c dummy && exit 0
rm -f dummy.c dummy
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
exit 0 ;;
m88k:CX/UX:7*:*)
echo m88k-harris-cxux7
exit 0 ;;
m88k:*:4*:R4*)
echo m88k-motorola-sysv4
exit 0 ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
exit 0 ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
-o ${TARGET_BINARY_INTERFACE}x = x ] ; then
echo m88k-dg-dgux${UNAME_RELEASE}
else
echo m88k-dg-dguxbcs${UNAME_RELEASE}
fi
else echo i586-dg-dgux${UNAME_RELEASE}
fi
exit 0 ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit 0 ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
echo m88k-motorola-sysv3
exit 0 ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
echo m88k-tektronix-sysv3
exit 0 ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
echo m68k-tektronix-bsd
exit 0 ;;
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
exit 0 ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i?86:AIX:*:*)
echo i386-ibm-aix
exit 0 ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
sed 's/^ //' << EOF >dummy.c
#include <sys/systemcfg.h>
main()
{
if (!__power_pc())
exit(1);
puts("powerpc-ibm-aix3.2.5");
exit(0);
}
EOF
${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
rm -f dummy.c dummy
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
else
echo rs6000-ibm-aix3.2
fi
exit 0 ;;
*:AIX:*:4)
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
IBM_REV=4.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
exit 0 ;;
*:AIX:*:*)
echo rs6000-ibm-aix
exit 0 ;;
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
exit 0 ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
exit 0 ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
exit 0 ;;
DPX/2?00:B.O.S.:*:*)
echo m68k-bull-sysv3
exit 0 ;;
9000/[34]??:4.3bsd:1.*:*)
echo m68k-hp-bsd
exit 0 ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
exit 0 ;;
9000/[34678]??:HP-UX:*:*)
case "${UNAME_MACHINE}" in
9000/31? ) HP_ARCH=m68000 ;;
9000/[34]?? ) HP_ARCH=m68k ;;
9000/6?? | 9000/7?? | 9000/80[24] | 9000/8?[13679] | 9000/892 )
sed 's/^ //' << EOF >dummy.c
#include <stdlib.h>
#include <unistd.h>
int main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
#endif
long cpu = sysconf (_SC_CPU_VERSION);
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
case CPU_PA_RISC2_0:
#if defined(_SC_KERNEL_BITS)
switch (bits)
{
case 64: puts ("hppa2.0w"); break;
case 32: puts ("hppa2.0n"); break;
default: puts ("hppa2.0"); break;
} break;
#else /* !defined(_SC_KERNEL_BITS) */
puts ("hppa2.0"); break;
#endif
default: puts ("hppa1.0"); break;
}
exit (0);
}
EOF
(${CC-cc} dummy.c -o dummy 2>/dev/null ) && HP_ARCH=`./dummy`
rm -f dummy.c dummy
esac
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
3050*:HI-UX:*:*)
sed 's/^ //' << EOF >dummy.c
#include <unistd.h>
int
main ()
{
long cpu = sysconf (_SC_CPU_VERSION);
/* The order matters, because CPU_IS_HP_MC68K erroneously returns
true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
results, however. */
if (CPU_IS_PA_RISC (cpu))
{
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
default: puts ("hppa-hitachi-hiuxwe2"); break;
}
}
else if (CPU_IS_HP_MC68K (cpu))
puts ("m68k-hitachi-hiuxwe2");
else puts ("unknown-hitachi-hiuxwe2");
exit (0);
}
EOF
${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
rm -f dummy.c dummy
echo unknown-hitachi-hiuxwe2
exit 0 ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
echo hppa1.1-hp-bsd
exit 0 ;;
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
exit 0 ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
exit 0 ;;
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
exit 0 ;;
i?86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
exit 0 ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
exit 0 ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
exit 0 ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit 0 ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
exit 0 ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
exit 0 ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
exit 0 ;;
CRAY*X-MP:*:*:*)
echo xmp-cray-unicos
exit 0 ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE}
exit 0 ;;
CRAY*[A-Z]90:*:*:*)
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
exit 0 ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE}
exit 0 ;;
CRAY-2:*:*:*)
echo cray2-cray-unicos
exit 0 ;;
F300:UNIX_System_V:*:*)
FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
F301:UNIX_System_V:*:*)
echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
exit 0 ;;
hp3[0-9][05]:NetBSD:*:*)
echo m68k-hp-netbsd${UNAME_RELEASE}
exit 0 ;;
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
sparc*:BSD/OS:*:*)
echo sparc-unknown-bsdi${UNAME_RELEASE}
exit 0 ;;
i?86:BSD/386:*:* | *:BSD/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
*:FreeBSD:*:*)
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit 0 ;;
*:NetBSD:*:*)
echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin32
exit 0 ;;
i*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit 0 ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin32
exit 0 ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
*:GNU:*:*)
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit 0 ;;
*:Linux:*:*)
# uname on the ARM produces all sorts of strangeness, and we need to
# filter it out.
case "$UNAME_MACHINE" in
arm* | sa110*) UNAME_MACHINE="arm" ;;
esac
# The BFD linker knows what the default object file format is, so
# first see if it will tell us.
ld_help_string=`ld --help 2>&1`
ld_supported_emulations=`echo $ld_help_string \
| sed -ne '/supported emulations:/!d
s/[ ][ ]*/ /g
s/.*supported emulations: *//
s/ .*//
p'`
case "$ld_supported_emulations" in
i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;;
i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;;
sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;;
esac
if test "${UNAME_MACHINE}" = "alpha" ; then
sed 's/^ //' <<EOF >dummy.s
.globl main
.ent main
main:
.frame \$30,0,\$26,0
.prologue 0
.long 0x47e03d80 # implver $0
lda \$2,259
.long 0x47e20c21 # amask $2,$1
srl \$1,8,\$2
sll \$2,2,\$2
sll \$0,3,\$0
addl \$1,\$0,\$0
addl \$2,\$0,\$0
ret \$31,(\$26),1
.end main
EOF
LIBC=""
${CC-cc} dummy.s -o dummy 2>/dev/null
if test "$?" = 0 ; then
./dummy
case "$?" in
7)
UNAME_MACHINE="alpha"
;;
15)
UNAME_MACHINE="alphaev5"
;;
14)
UNAME_MACHINE="alphaev56"
;;
10)
UNAME_MACHINE="alphapca56"
;;
16)
UNAME_MACHINE="alphaev6"
;;
esac
objdump --private-headers dummy | \
grep ld.so.1 > /dev/null
if test "$?" = 0 ; then
LIBC="libc1"
fi
fi
rm -f dummy.s dummy
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
elif test "${UNAME_MACHINE}" = "mips" ; then
cat >dummy.c <<EOF
main(argc, argv)
int argc;
char *argv[];
{
#ifdef __MIPSEB__
printf ("%s-unknown-linux-gnu\n", argv[1]);
#endif
#ifdef __MIPSEL__
printf ("%sel-unknown-linux-gnu\n", argv[1]);
#endif
return 0;
}
EOF
${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
rm -f dummy.c dummy
else
# Either a pre-BFD a.out linker (linux-gnuoldld)
# or one that does not give us useful --help.
# GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
# If ld does not provide *any* "supported emulations:"
# that means it is gnuoldld.
echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
case "${UNAME_MACHINE}" in
i?86)
VENDOR=pc;
;;
*)
VENDOR=unknown;
;;
esac
# Determine whether the default compiler is a.out or elf
cat >dummy.c <<EOF
#include <features.h>
main(argc, argv)
int argc;
char *argv[];
{
#ifdef __ELF__
# ifdef __GLIBC__
# if __GLIBC__ >= 2
printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
# else
printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
# endif
# else
printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
# endif
#else
printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
#endif
return 0;
}
EOF
${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
rm -f dummy.c dummy
fi ;;
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
# are messed up and put the nodename in both sysname and nodename.
i?86:DYNIX/ptx:4*:*)
echo i386-sequent-sysv4
exit 0 ;;
i?86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit 0 ;;
i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
fi
exit 0 ;;
i?86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
elif /bin/uname -X 2>/dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
exit 0 ;;
i?86:UnixWare:*:*)
if /bin/uname -X 2>/dev/null >/dev/null ; then
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
fi
echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION}
exit 0 ;;
pc:*:*:*)
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i386.
echo i386-pc-msdosdjgpp
exit 0 ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit 0 ;;
paragon:*:*:*)
echo i860-intel-osf1
exit 0 ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
fi
exit 0 ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
echo m68010-convergent-sysv
exit 0 ;;
M68*:*:R3V[567]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& echo i486-ncr-sysv4.3${OS_REL} && exit 0
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& echo i486-ncr-sysv4 && exit 0 ;;
m68*:LynxOS:2.*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit 0 ;;
i?86:LynxOS:2.*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
exit 0 ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
exit 0 ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
echo ${UNAME_MACHINE}-sni-sysv4
else
echo ns32k-sni-sysv
fi
exit 0 ;;
PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit 0 ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
exit 0 ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
exit 0 ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
exit 0 ;;
news*:NEWS-OS:*:6*)
echo mips-sony-newsos6
exit 0 ;;
R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
else
echo mips-unknown-sysv${UNAME_RELEASE}
fi
exit 0 ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit 0 ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
echo powerpc-apple-beos
exit 0 ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
cat >dummy.c <<EOF
#ifdef _SEQUENT_
# include <sys/types.h>
# include <sys/utsname.h>
#endif
main ()
{
#if defined (sony)
#if defined (MIPSEB)
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
I don't know.... */
printf ("mips-sony-bsd\n"); exit (0);
#else
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
#else
""
#endif
); exit (0);
#endif
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
printf ("arm-acorn-riscix"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
printf ("m68k-hp-bsd\n"); exit (0);
#endif
#if defined (NeXT)
#if !defined (__ARCHITECTURE__)
#define __ARCHITECTURE__ "m68k"
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
#if defined (MULTIMAX) || defined (n16)
#if defined (UMAXV)
printf ("ns32k-encore-sysv\n"); exit (0);
#else
#if defined (CMU)
printf ("ns32k-encore-mach\n"); exit (0);
#else
printf ("ns32k-encore-bsd\n"); exit (0);
#endif
#endif
#endif
#if defined (__386BSD__)
printf ("i386-pc-bsd\n"); exit (0);
#endif
#if defined (sequent)
#if defined (i386)
printf ("i386-sequent-dynix\n"); exit (0);
#endif
#if defined (ns32000)
printf ("ns32k-sequent-dynix\n"); exit (0);
#endif
#endif
#if defined (_SEQUENT_)
struct utsname un;
uname(&un);
if (strncmp(un.version, "V2", 2) == 0) {
printf ("i386-sequent-ptx2\n"); exit (0);
}
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
printf ("i386-sequent-ptx1\n"); exit (0);
}
printf ("i386-sequent-ptx\n"); exit (0);
#endif
#if defined (vax)
#if !defined (ultrix)
printf ("vax-dec-bsd\n"); exit (0);
#else
printf ("vax-dec-ultrix\n"); exit (0);
#endif
#endif
#if defined (alliant) && defined (i860)
printf ("i860-alliant-bsd\n"); exit (0);
#endif
exit (1);
}
EOF
${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
rm -f dummy.c dummy
# Apollos put the system type in the environment.
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
# Convex versions that predate uname can use getsysinfo(1)
if [ -x /usr/convex/getsysinfo ]
then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
exit 0 ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit 0 ;;
c34*)
echo c34-convex-bsd
exit 0 ;;
c38*)
echo c38-convex-bsd
exit 0 ;;
c4*)
echo c4-convex-bsd
exit 0 ;;
esac
fi
#echo '(Unable to guess system type)' 1>&2
exit 1

955
config.sub vendored
View File

@@ -1,955 +0,0 @@
#! /bin/sh
# Configuration validation subroutine script, version 1.1.
# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
# This file is (in principle) common to ALL 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.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
# Each package is responsible for reporting which valid configurations
# it does not support. The user should be able to distinguish
# a failure to support a valid configuration from a meaningless
# configuration.
# The goal of this file is to map all the various variations of a given
# machine specification into a single specification in the form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or in some cases, the newer four-part form:
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
if [ x$1 = x ]
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.
case $1 in
*local*)
echo $1
exit 0
;;
*)
;;
esac
# 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.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
linux-gnu*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
then os=`echo $1 | sed 's/.*-/-/'`
else os=; fi
;;
esac
### Let's recognize common machines as not being operating systems so
### that things like config.sub decstation-3100 work. We also
### recognize some manufacturers as not being operating systems, so we
### can provide default operating systems below.
case $os in
-sun*os*)
# Prevent following clause from handling this invalid input.
;;
-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-apple)
os=
basic_machine=$1
;;
-hiux*)
os=-hiuxwe2
;;
-sco5)
os=sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
os=-sco3.2v4
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2v[4-9]*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco*)
os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-isc)
os=-isc2.2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-clix*)
basic_machine=clipper-intergraph
;;
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-lynx*)
os=-lynxos
;;
-ptx*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
;;
-windowsnt*)
os=`echo $os | sed -e 's/windowsnt/winnt/'`
;;
-psos*)
os=-psos
;;
esac
# Decode aliases for certain CPU-COMPANY combinations.
case $basic_machine in
# Recognize the basic CPU types without company name.
# Some are omitted here because they have special meanings below.
tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
| 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \
| alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
| i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
| mips64 | mipsel | mips64el | mips64orion | mips64orionel \
| mipstx39 | mipstx39el \
| sparc | sparclet | sparclite | sparc64 | v850)
basic_machine=$basic_machine-unknown
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i[34567]86)
basic_machine=$basic_machine-pc
;;
# Object if more than one company name word.
*-*-*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
# Recognize the basic CPU types with company name.
vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
| m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
| power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
| xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \
| alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
| ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
| sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
| sparc64-* | mips64-* | mipsel-* \
| mips64el-* | mips64orion-* | mips64orionel-* \
| mipstx39-* | mipstx39el-* \
| f301-*)
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
basic_machine=m68000-att
;;
3b*)
basic_machine=we32k-att
;;
alliant | fx80)
basic_machine=fx80-alliant
;;
altos | altos3068)
basic_machine=m68k-altos
;;
am29k)
basic_machine=a29k-none
os=-bsd
;;
amdahl)
basic_machine=580-amdahl
os=-sysv
;;
amiga | amiga-*)
basic_machine=m68k-cbm
;;
amigaos | amigados)
basic_machine=m68k-cbm
os=-amigaos
;;
amigaunix | amix)
basic_machine=m68k-cbm
os=-sysv4
;;
apollo68)
basic_machine=m68k-apollo
os=-sysv
;;
aux)
basic_machine=m68k-apple
os=-aux
;;
balance)
basic_machine=ns32k-sequent
os=-dynix
;;
convex-c1)
basic_machine=c1-convex
os=-bsd
;;
convex-c2)
basic_machine=c2-convex
os=-bsd
;;
convex-c32)
basic_machine=c32-convex
os=-bsd
;;
convex-c34)
basic_machine=c34-convex
os=-bsd
;;
convex-c38)
basic_machine=c38-convex
os=-bsd
;;
cray | ymp)
basic_machine=ymp-cray
os=-unicos
;;
cray2)
basic_machine=cray2-cray
os=-unicos
;;
[ctj]90-cray)
basic_machine=c90-cray
os=-unicos
;;
crds | unos)
basic_machine=m68k-crds
;;
da30 | da30-*)
basic_machine=m68k-da30
;;
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
basic_machine=mips-dec
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
basic_machine=m68k-motorola
;;
delta88)
basic_machine=m88k-motorola
os=-sysv3
;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
;;
dpx2* | dpx2*-bull)
basic_machine=m68k-bull
os=-sysv3
;;
ebmon29k)
basic_machine=a29k-amd
os=-ebmon
;;
elxsi)
basic_machine=elxsi-elxsi
os=-bsd
;;
encore | umax | mmax)
basic_machine=ns32k-encore
;;
fx2800)
basic_machine=i860-alliant
;;
genix)
basic_machine=ns32k-ns
;;
gmicro)
basic_machine=tron-gmicro
os=-sysv
;;
h3050r* | hiux*)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
h8300hms)
basic_machine=h8300-hitachi
os=-hms
;;
harris)
basic_machine=m88k-harris
os=-sysv3
;;
hp300-*)
basic_machine=m68k-hp
;;
hp300bsd)
basic_machine=m68k-hp
os=-bsd
;;
hp300hpux)
basic_machine=m68k-hp
os=-hpux
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
basic_machine=m68000-hp
;;
hp9k3[2-9][0-9])
basic_machine=m68k-hp
;;
hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
basic_machine=hppa1.1-hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
basic_machine=hppa1.0-hp
;;
hppa-next)
os=-nextstep3
;;
i370-ibm* | ibm*)
basic_machine=i370-ibm
os=-mvs
;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i[34567]86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
;;
i[34567]86v4*)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv4
;;
i[34567]86v)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv
;;
i[34567]86sol2)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-solaris2
;;
iris | iris4d)
basic_machine=mips-sgi
case $os in
-irix*)
;;
*)
os=-irix4
;;
esac
;;
isi68 | isi)
basic_machine=m68k-isi
os=-sysv
;;
m88k-omron*)
basic_machine=m88k-omron
;;
magnum | m3230)
basic_machine=mips-mips
os=-sysv
;;
merlin)
basic_machine=ns32k-utek
os=-sysv
;;
miniframe)
basic_machine=m68000-convergent
;;
mipsel*-linux*)
basic_machine=mipsel-unknown
os=-linux-gnu
;;
mips*-linux*)
basic_machine=mips-unknown
os=-linux-gnu
;;
mips3*-*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
;;
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
os=-newsos
;;
news1000)
basic_machine=m68030-sony
os=-newsos
;;
news-3600 | risc-news)
basic_machine=mips-sony
os=-newsos
;;
next | m*-next )
basic_machine=m68k-next
case $os in
-nextstep* )
;;
-ns2*)
os=-nextstep2
;;
*)
os=-nextstep3
;;
esac
;;
nh3000)
basic_machine=m68k-harris
os=-cxux
;;
nh[45]000)
basic_machine=m88k-harris
os=-cxux
;;
nindy960)
basic_machine=i960-intel
os=-nindy
;;
np1)
basic_machine=np1-gould
;;
pa-hitachi)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
paragon)
basic_machine=i860-intel
os=-osf
;;
pbd)
basic_machine=sparc-tti
;;
pbb)
basic_machine=m68k-tti
;;
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pentium | p5 | k5 | nexen)
basic_machine=i586-pc
;;
pentiumpro | p6 | k6 | 6x86)
basic_machine=i686-pc
;;
pentiumii | pentium2)
basic_machine=i786-pc
;;
pentium-* | p5-* | k5-* | nexen-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-* | k6-* | 6x86-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumii-* | pentium2-*)
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pn)
basic_machine=pn-gould
;;
power) basic_machine=rs6000-ibm
;;
ppc) basic_machine=powerpc-unknown
;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
;;
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ps2)
basic_machine=i386-ibm
;;
rm[46]00)
basic_machine=mips-siemens
;;
rtpc | rtpc-*)
basic_machine=romp-ibm
;;
sequent)
basic_machine=i386-sequent
;;
sh)
basic_machine=sh-hitachi
os=-hms
;;
sps7)
basic_machine=m68k-bull
os=-sysv2
;;
spur)
basic_machine=spur-unknown
;;
sun2)
basic_machine=m68000-sun
;;
sun2os3)
basic_machine=m68000-sun
os=-sunos3
;;
sun2os4)
basic_machine=m68000-sun
os=-sunos4
;;
sun3os3)
basic_machine=m68k-sun
os=-sunos3
;;
sun3os4)
basic_machine=m68k-sun
os=-sunos4
;;
sun4os3)
basic_machine=sparc-sun
os=-sunos3
;;
sun4os4)
basic_machine=sparc-sun
os=-sunos4
;;
sun4sol2)
basic_machine=sparc-sun
os=-solaris2
;;
sun3 | sun3-*)
basic_machine=m68k-sun
;;
sun4)
basic_machine=sparc-sun
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
symmetry)
basic_machine=i386-sequent
os=-dynix
;;
tx39)
basic_machine=mipstx39-unknown
;;
tx39el)
basic_machine=mipstx39el-unknown
;;
tower | tower-32)
basic_machine=m68k-ncr
;;
udi29k)
basic_machine=a29k-amd
os=-udi
;;
ultra3)
basic_machine=a29k-nyu
os=-sym1
;;
vaxv)
basic_machine=vax-dec
os=-sysv
;;
vms)
basic_machine=vax-dec
os=-vms
;;
vpp*|vx|vx-*)
basic_machine=f301-fujitsu
;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
;;
vxworks68)
basic_machine=m68k-wrs
os=-vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
os=-vxworks
;;
xmp)
basic_machine=xmp-cray
os=-unicos
;;
xps | xps100)
basic_machine=xps100-honeywell
;;
none)
basic_machine=none-none
os=-none
;;
# 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.
mips)
if [ x$os = x-linux-gnu ]; then
basic_machine=mips-unknown
else
basic_machine=mips-mips
fi
;;
romp)
basic_machine=romp-ibm
;;
rs6000)
basic_machine=rs6000-ibm
;;
vax)
basic_machine=vax-dec
;;
pdp11)
basic_machine=pdp11-dec
;;
we32k)
basic_machine=we32k-att
;;
sparc)
basic_machine=sparc-sun
;;
cydra)
basic_machine=cydra-cydrome
;;
orion)
basic_machine=orion-highlevel
;;
orion105)
basic_machine=clipper-highlevel
;;
*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
esac
# Here we canonicalize certain aliases for manufacturers.
case $basic_machine in
*-digital*)
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
;;
*-commodore*)
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
;;
*)
;;
esac
# Decode manufacturer-specific aliases for certain operating systems.
if [ x"$os" != x"" ]
then
case $os in
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
-solaris)
os=-solaris2
;;
-svr4*)
os=-sysv4
;;
-unixware*)
os=-sysv4.2uw
;;
-gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
# First accept the basic system types.
# The portable systems comes first.
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -uxpv* | -beos*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
-sunos5*)
os=`echo $os | sed -e 's|sunos5|solaris2|'`
;;
-sunos6*)
os=`echo $os | sed -e 's|sunos6|solaris3|'`
;;
-osfrose*)
os=-osfrose
;;
-osf*)
os=-osf
;;
-utek*)
os=-bsd
;;
-dynix*)
os=-bsd
;;
-acis*)
os=-aos
;;
-ctix* | -uts*)
os=-sysv
;;
-ns2 )
os=-nextstep2
;;
# Preserve the version number of sinix5.
-sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
;;
-sinix*)
os=-sysv4
;;
-triton*)
os=-sysv3
;;
-oss*)
os=-sysv3
;;
-svr4)
os=-sysv4
;;
-svr3)
os=-sysv3
;;
-sysvr4)
os=-sysv4
;;
# This must come after -sysvr4.
-sysv*)
;;
-xenix)
os=-xenix
;;
-none)
;;
*)
# Get rid of the `-' at the beginning of $os.
os=`echo $os | sed 's/[^-]*-//'`
echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
exit 1
;;
esac
else
# Here we handle the default operating systems that come with various machines.
# The value should be what the vendor currently ships out the door with their
# machine or put another way, the most popular os provided with the machine.
# Note that if you're going to try to match "-MANUFACTURER" here (say,
# "-sun"), then you have to tell the case statement up towards the top
# that MANUFACTURER isn't an operating system. Otherwise, code above
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
case $basic_machine in
*-acorn)
os=-riscix1.2
;;
arm*-semi)
os=-aout
;;
pdp11-*)
os=-none
;;
*-dec | vax-*)
os=-ultrix4.2
;;
m68*-apollo)
os=-domain
;;
i386-sun)
os=-sunos4.0.2
;;
m68000-sun)
os=-sunos3
# This also exists in the configure program, but was not the
# default.
# os=-sunos4
;;
*-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3
;;
sparc-* | *-sun)
os=-sunos4.1.1
;;
*-be)
os=-beos
;;
*-ibm)
os=-aix
;;
*-hp)
os=-hpux
;;
*-hitachi)
os=-hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
os=-sysv
;;
*-cbm)
os=-amigaos
;;
*-dg)
os=-dgux
;;
*-dolphin)
os=-sysv3
;;
m68k-ccur)
os=-rtu
;;
m88k-omron*)
os=-luna
;;
*-next )
os=-nextstep
;;
*-sequent)
os=-ptx
;;
*-crds)
os=-unos
;;
*-ns)
os=-genix
;;
i370-*)
os=-mvs
;;
*-next)
os=-nextstep3
;;
*-gould)
os=-sysv
;;
*-highlevel)
os=-bsd
;;
*-encore)
os=-bsd
;;
*-sgi)
os=-irix
;;
*-siemens)
os=-sysv4
;;
*-masscomp)
os=-rtu
;;
f301-fujitsu)
os=-uxpv
;;
*)
os=-none
;;
esac
fi
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
vendor=unknown
case $basic_machine in
*-unknown)
case $os in
-riscix*)
vendor=acorn
;;
-sunos*)
vendor=sun
;;
-aix*)
vendor=ibm
;;
-hpux*)
vendor=hp
;;
-hiux*)
vendor=hitachi
;;
-unos*)
vendor=crds
;;
-dgux*)
vendor=dg
;;
-luna*)
vendor=omron
;;
-genix*)
vendor=ns
;;
-mvs*)
vendor=ibm
;;
-ptx*)
vendor=sequent
;;
-vxsim* | -vxworks*)
vendor=wrs
;;
-aux*)
vendor=apple
;;
esac
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
esac
echo $basic_machine$os

14067
configure vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,47 @@
###############################################################################
# Purpose: Makefile.in for STC contrib for Unix with autoconf
# Created: 14.03.00
# Author: VZ
# Version: $Id$
###############################################################################
top_srcdir = @top_srcdir@
top_builddir = ../../..
this_dir = $(top_srcdir)/src/stc
scintilla_dir=$(this_dir)/scintilla
VPATH=$(this_dir)@PATH_IFS@$(scintilla_dir)/src # ':' for autoconf
TARGET_LIBNAME=libstc
LIBVERSION_CURRENT=1
LIBVERSION_REVISION=0
LIBVERSION_AGE=0
OBJECTS=PlatWX.o ScintillaWX.o stc.o \
Accessor.o \
AutoComplete.o \
CallTip.o \
CellBuffer.o \
ContractionState.o \
Document.o \
Editor.o \
Indicator.o \
KeyMap.o \
KeyWords.o \
LexCPP.o \
LexHTML.o \
LexOthers.o \
LexPerl.o \
LexPython.o \
LexSQL.o \
LexVB.o \
LineMarker.o \
PropSet.o \
ScintillaBase.o \
Style.o \
ViewStyle.o
APPEXTRADEFS=-D__WX__ -DSCI_LEXER -I$(scintilla_dir)/src -I$(scintilla_dir)/include -I$(top_srcdir)/include
include $(top_builddir)/src/makelib.env

597
contrib/src/stc/PlatWX.cpp Normal file
View File

@@ -0,0 +1,597 @@
// Scintilla source code edit control
// PlatWX.cxx - implementation of platform facilities on wxWindows
// Copyright 1998-1999 by Neil Hodgson <neilh@scintilla.org>
// Robin Dunn <robin@aldunn.com>
// The License.txt file describes the conditions under which this software may be distributed.
#include <ctype.h>
#include "Platform.h"
#include "wx/stc/stc.h"
Point Point::FromLong(long lpoint) {
return Point(lpoint & 0xFFFF, lpoint >> 32);
}
wxRect wxRectFromPRectangle(PRectangle prc) {
wxRect rc(prc.left, prc.top,
prc.right-prc.left+1, prc.bottom-prc.top+1);
return rc;
}
PRectangle PRectangleFromwxRect(wxRect rc) {
return PRectangle(rc.GetLeft(), rc.GetTop(), rc.GetRight(), rc.GetBottom());
}
Colour::Colour(long lcol) {
co.Set(lcol & 0xff, (lcol >> 8) & 0xff, (lcol >> 16) & 0xff);
}
Colour::Colour(unsigned int red, unsigned int green, unsigned int blue) {
co.Set(red, green, blue);
}
bool Colour::operator==(const Colour &other) const {
return co == other.co;
}
long Colour::AsLong() const {
return (((long)co.Blue() << 16) |
((long)co.Green() << 8) |
((long)co.Red()));
}
unsigned int Colour::GetRed() {
return co.Red();
}
unsigned int Colour::GetGreen() {
return co.Green();
}
unsigned int Colour::GetBlue() {
return co.Blue();
}
Palette::Palette() {
used = 0;
allowRealization = false;
}
Palette::~Palette() {
Release();
}
void Palette::Release() {
used = 0;
}
// This method either adds a colour to the list of wanted colours (want==true)
// or retrieves the allocated colour back to the ColourPair.
// This is one method to make it easier to keep the code for wanting and retrieving in sync.
void Palette::WantFind(ColourPair &cp, bool want) {
if (want) {
for (int i=0; i < used; i++) {
if (entries[i].desired == cp.desired)
return;
}
if (used < numEntries) {
entries[used].desired = cp.desired;
entries[used].allocated = cp.desired;
used++;
}
} else {
for (int i=0; i < used; i++) {
if (entries[i].desired == cp.desired) {
cp.allocated = entries[i].allocated;
return;
}
}
cp.allocated = cp.desired;
}
}
void Palette::Allocate(Window &) {
if (allowRealization) {
}
}
Font::Font() {
id = 0;
ascent = 0;
}
Font::~Font() {
}
void Font::Create(const char *faceName, int size, bool bold, bool italic) {
Release();
id = new wxFont(size,
wxDEFAULT,
italic ? wxITALIC : wxNORMAL,
bold ? wxBOLD : wxNORMAL,
false,
faceName);
}
void Font::Release() {
if (id)
delete id;
id = 0;
}
Surface::Surface() :
hdc(0), hdcOwned(0), bitmap(0),
x(0), y(0) {
}
Surface::~Surface() {
Release();
}
void Surface::Release() {
if (bitmap) {
((wxMemoryDC*)hdc)->SelectObject(wxNullBitmap);
delete bitmap;
bitmap = 0;
}
if (hdcOwned) {
delete hdc;
hdc = 0;
hdcOwned = false;
}
}
bool Surface::Initialised() {
return hdc != 0;
}
void Surface::Init() {
Release();
hdc = new wxMemoryDC();
hdcOwned = true;
// **** ::SetTextAlign(hdc, TA_BASELINE);
}
void Surface::Init(SurfaceID hdc_) {
Release();
hdc = hdc_;
// **** ::SetTextAlign(hdc, TA_BASELINE);
}
void Surface::InitPixMap(int width, int height, Surface *surface_) {
Release();
hdc = new wxMemoryDC(surface_->hdc);
hdcOwned = true;
bitmap = new wxBitmap(width, height);
((wxMemoryDC*)hdc)->SelectObject(*bitmap);
// **** ::SetTextAlign(hdc, TA_BASELINE);
}
void Surface::PenColour(Colour fore) {
hdc->SetPen(wxPen(fore.co, 1, wxSOLID));
}
void Surface::BrushColor(Colour back) {
hdc->SetBrush(wxBrush(back.co, wxSOLID));
}
void Surface::SetFont(Font &font_) {
// I think the following check is valid.
// It eliminates a crash for me. -- eric@sourcegear.com
if (font_.GetID())
{
hdc->SetFont(*font_.GetID());
}
}
int Surface::LogPixelsY() {
return hdc->GetPPI().y;
}
void Surface::MoveTo(int x_, int y_) {
x = x_;
y = y_;
}
void Surface::LineTo(int x_, int y_) {
hdc->DrawLine(x,y, x_,y_);
x = x_;
y = y_;
}
void Surface::Polygon(Point *pts, int npts, Colour fore,
Colour back) {
PenColour(fore);
BrushColor(back);
hdc->DrawPolygon(npts, (wxPoint*)pts);
}
void Surface::RectangleDraw(PRectangle rc, Colour fore, Colour back) {
PenColour(fore);
BrushColor(back);
hdc->DrawRectangle(wxRectFromPRectangle(rc));
}
void Surface::FillRectangle(PRectangle rc, Colour back) {
BrushColor(back);
hdc->SetPen(*wxTRANSPARENT_PEN);
hdc->DrawRectangle(wxRectFromPRectangle(rc));
}
void Surface::FillRectangle(PRectangle rc, Surface &surfacePattern) {
wxBrush br;
if (surfacePattern.bitmap)
br = wxBrush(*surfacePattern.bitmap);
else // Something is wrong so display in red
br = wxBrush(*wxRED, wxSOLID);
hdc->SetPen(*wxTRANSPARENT_PEN);
hdc->SetBrush(br);
hdc->DrawRectangle(wxRectFromPRectangle(rc));
}
void Surface::RoundedRectangle(PRectangle rc, Colour fore, Colour back) {
PenColour(fore);
BrushColor(back);
hdc->DrawRoundedRectangle(wxRectFromPRectangle(rc), 8);
}
void Surface::Ellipse(PRectangle rc, Colour fore, Colour back) {
PenColour(fore);
BrushColor(back);
hdc->DrawEllipse(wxRectFromPRectangle(rc));
}
void Surface::Copy(PRectangle rc, Point from, Surface &surfaceSource) {
hdc->Blit(rc.left, rc.top, rc.Width(), rc.Height(),
surfaceSource.hdc, from.x, from.y, wxCOPY);
}
void Surface::DrawText(PRectangle rc, Font &font, int ybase,
const char *s, int len, Colour fore, Colour back) {
SetFont(font);
hdc->SetTextForeground(fore.co);
hdc->SetTextBackground(back.co);
FillRectangle(rc, back);
// ybase is where the baseline should be, but wxWin uses the upper left
// corner, so I need to calculate the real position for the text...
hdc->DrawText(wxString(s, len), rc.left, ybase - font.ascent);
}
void Surface::DrawTextClipped(PRectangle rc, Font &font, int ybase, const char *s, int len, Colour fore, Colour back) {
SetFont(font);
hdc->SetTextForeground(fore.co);
hdc->SetTextBackground(back.co);
FillRectangle(rc, back);
hdc->SetClippingRegion(wxRectFromPRectangle(rc));
// see comments above
hdc->DrawText(wxString(s, len), rc.left, ybase - font.ascent);
hdc->DestroyClippingRegion();
}
int Surface::WidthText(Font &font, const char *s, int len) {
SetFont(font);
int w;
int h;
hdc->GetTextExtent(wxString(s, len), &w, &h);
return w;
}
void Surface::MeasureWidths(Font &font, const char *s, int len, int *positions) {
SetFont(font);
int totalWidth = 0;
for (int i=0; i<len; i++) {
int w;
int h;
hdc->GetTextExtent(s[i], &w, &h);
totalWidth += w;
positions[i] = totalWidth;
}
}
int Surface::WidthChar(Font &font, char ch) {
SetFont(font);
int w;
int h;
hdc->GetTextExtent(ch, &w, &h);
return w;
}
#define EXTENT_TEST " `~!@#$%^&*()-_=+\\|[]{};:\"\'<,>.?/1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
int Surface::Ascent(Font &font) {
SetFont(font);
int w, h, d, e;
hdc->GetTextExtent(EXTENT_TEST, &w, &h, &d, &e);
font.ascent = h - d;
return font.ascent;
}
int Surface::Descent(Font &font) {
SetFont(font);
int w, h, d, e;
hdc->GetTextExtent(EXTENT_TEST, &w, &h, &d, &e);
return d;
}
int Surface::InternalLeading(Font &font) {
return 0;
}
int Surface::ExternalLeading(Font &font) {
SetFont(font);
int w, h, d, e;
hdc->GetTextExtent(EXTENT_TEST, &w, &h, &d, &e);
return e;
}
int Surface::Height(Font &font) {
SetFont(font);
return hdc->GetCharHeight();
}
int Surface::AverageCharWidth(Font &font) {
SetFont(font);
return hdc->GetCharWidth();
}
int Surface::SetPalette(Palette *pal, bool inBackGround) {
return 0; // **** figure out what to do with palettes...
}
void Surface::SetClip(PRectangle rc) {
hdc->SetClippingRegion(wxRectFromPRectangle(rc));
}
void Surface::FlushCachedState() {
// TODO Is there anything we need to do here? eric@sourcegear.com
// TODO I had to add this method when I merged new Scintilla code
// TODO from Neil.
}
Window::~Window() {
}
void Window::Destroy() {
if (id)
id->Destroy();
id = 0;
}
bool Window::HasFocus() {
return wxWindow::FindFocus() == id;
}
PRectangle Window::GetPosition() {
wxRect rc(id->GetPosition(), id->GetSize());
return PRectangleFromwxRect(rc);
}
void Window::SetPosition(PRectangle rc) {
id->SetSize(rc.left, rc.top, rc.Width(), rc.Height());
}
void Window::SetPositionRelative(PRectangle rc, Window) {
SetPosition(rc); // ????
}
PRectangle Window::GetClientPosition() {
wxSize sz = id->GetClientSize();
return PRectangle(0, 0, sz.x - 1, sz.y - 1);
}
void Window::Show(bool show) {
id->Show(show);
}
void Window::InvalidateAll() {
id->Refresh(false);
}
void Window::InvalidateRectangle(PRectangle rc) {
id->Refresh(false, &wxRectFromPRectangle(rc));
}
void Window::SetFont(Font &font) {
id->SetFont(*font.GetID());
}
void Window::SetCursor(Cursor curs) {
int cursorId;
switch (curs) {
case cursorText:
cursorId = wxCURSOR_IBEAM;
break;
case cursorArrow:
cursorId = wxCURSOR_ARROW;
break;
case cursorUp:
cursorId = wxCURSOR_ARROW; // ** no up arrow... wxCURSOR_UPARROW;
break;
case cursorWait:
cursorId = wxCURSOR_WAIT;
break;
case cursorHoriz:
cursorId = wxCURSOR_SIZEWE;
break;
case cursorVert:
cursorId = wxCURSOR_SIZENS;
break;
case cursorReverseArrow:
cursorId = wxCURSOR_POINT_RIGHT;
break;
default:
cursorId = wxCURSOR_ARROW;
break;
}
id->SetCursor(wxCursor(cursorId));
}
void Window::SetTitle(const char *s) {
id->SetTitle(s);
}
ListBox::ListBox() {
}
ListBox::~ListBox() {
}
void ListBox::Create(Window &parent, int ctrlID) {
id = new wxListBox(parent.id, ctrlID, wxDefaultPosition, wxDefaultSize,
0, NULL, wxLB_SINGLE | wxLB_SORT);
}
void ListBox::Clear() {
((wxListBox*)id)->Clear();
}
void ListBox::Append(char *s) {
((wxListBox*)id)->Append(s);
}
int ListBox::Length() {
return ((wxListBox*)id)->Number();
}
void ListBox::Select(int n) {
((wxListBox*)id)->SetSelection(n);
}
int ListBox::GetSelection() {
return ((wxListBox*)id)->GetSelection();
}
int ListBox::Find(const char *prefix) {
return ((wxListBox*)id)->FindString(prefix);
}
void ListBox::GetValue(int n, char *value, int len) {
wxString text = ((wxListBox*)id)->GetString(n);
strncpy(value, text.c_str(), len);
value[len-1] = '\0';
}
void ListBox::Sort() {
// wxWindows keeps sorted so no need to sort
}
Menu::Menu() : id(0) {
}
void Menu::CreatePopUp() {
Destroy();
id = new wxMenu();
}
void Menu::Destroy() {
if (id)
delete id;
id = 0;
}
void Menu::Show(Point pt, Window &w) {
w.GetID()->PopupMenu(id, pt.x - 4, pt.y);
Destroy();
}
Colour Platform::Chrome() {
wxColour c;
c = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
return Colour(c.Red(), c.Green(), c.Blue());
}
Colour Platform::ChromeHighlight() {
wxColour c;
c = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DHIGHLIGHT);
return Colour(c.Red(), c.Green(), c.Blue());
}
const char *Platform::DefaultFont() {
return wxNORMAL_FONT->GetFaceName();
}
int Platform::DefaultFontSize() {
return 8;
}
unsigned int Platform::DoubleClickTime() {
return 500; // **** ::GetDoubleClickTime();
}
void Platform::DebugDisplay(const char *s) {
wxLogDebug(s);
}
bool Platform::IsKeyDown(int key) {
return false; // I don't think we'll need this.
}
long Platform::SendScintilla(WindowID w,
unsigned int msg,
unsigned long wParam,
long lParam) {
wxStyledTextCtrl* stc = (wxStyledTextCtrl*)w;
return stc->SendMsg(msg, wParam, lParam);
}
// These are utility functions not really tied to a platform
int Platform::Minimum(int a, int b) {
if (a < b)
return a;
else
return b;
}
int Platform::Maximum(int a, int b) {
if (a > b)
return a;
else
return b;
}
#define TRACE
void Platform::DebugPrintf(const char *format, ...) {
#ifdef TRACE
char buffer[2000];
va_list pArguments;
va_start(pArguments, format);
vsprintf(buffer,format,pArguments);
va_end(pArguments);
Platform::DebugDisplay(buffer);
#endif
}
int Platform::Clamp(int val, int minVal, int maxVal) {
if (val > maxVal)
val = maxVal;
if (val < minVal)
val = minVal;
return val;
}

View File

@@ -0,0 +1,47 @@
This contrib is the wxStyledTextCtrl, which is a wrapper around the
Scintilla edit control. (See www.scintilla.org)
There is still VERY MUCH to be done, most notable of which is a more
advanced sample that exercises more of the code. (I havn't tested
AutoComplete or CallTips, or most of the event types at all yet.) And
also documentation, adding wrappers for some new scintilla
functionality, building and testing on wxGTK, etc. Be patient, it all
will get there soon.
Let me describe a bit about the architecture I am implementing...
Obviously there is the Platform layer which implements the varioius
platform classes by using wxWindows classes and filling in where
needed. Then there is a ScintillaWX class that is derived from
ScintillaBase and implements the necessary virtual methods that
Scintilla needs to fully funciton. This class however is not meant to
ever be used directly by wx programmers. I call it one end of the
bridge between the wx and Scintilla worlds. The other end of the
bridge is a class called wxStyledTextCtrl that looks, feels and acts
like other classes in wxWindows. Here is a diagram:
+------------------+ +-------------------+
| wxStyledTextCtrl |--bridge--| ScintillaWX |
+------------------+ +-------------------+
| ScintillaBase |
+-------------------+
| Editor |
+-------------------+
| PlatWX |
+-------------------+
wxStyledTextCtrl derives from wxControl so it has a window that can be
drawn upon. When a wxStyledTextCtrl is constructed it constructs a
ScintillaWX for itself and passes itself to the scintilla object to be
set as the wMain and wDraw attributes. All method calls on the STC
are sent over the bridge in the form of calls to ScintiallWX::WndProc.
All notifications are sent back over the bridge and turned into
wxEvents.
Robin

View File

@@ -0,0 +1,460 @@
////////////////////////////////////////////////////////////////////////////
// Name: ScintillaWX.cxx
// Purpose: A wxWindows implementation of Scintilla. A class derived
// from ScintillaBase that uses the "wx platform" defined in
// PlatformWX.cxx This class is one end of a bridge between
// the wx world and the Scintilla world. It needs a peer
// object of type wxStyledTextCtrl to function.
//
// Author: Robin Dunn
//
// Created: 13-Jan-2000
// RCS-ID: $Id$
// Copyright: (c) 2000 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#include <ctype.h>
#include "ScintillaWX.h"
#include "wx/stc/stc.h"
//----------------------------------------------------------------------
const int H_SCROLL_MAX = 2000;
const int H_SCROLL_STEP = 20;
const int H_SCROLL_PAGE = 200;
//----------------------------------------------------------------------
// Helper classes
class wxSTCTimer : public wxTimer {
public:
wxSTCTimer(ScintillaWX* swx) {
this->swx = swx;
}
void Notify() {
swx->DoTick();
}
private:
ScintillaWX* swx;
};
bool wxSTCDropTarget::OnDropText(wxCoord x, wxCoord y, const wxString& data) {
return swx->DoDropText(x, y, data);
}
wxDragResult wxSTCDropTarget::OnEnter(wxCoord x, wxCoord y, wxDragResult def) {
return swx->DoDragEnter(x, y, def);
}
wxDragResult wxSTCDropTarget::OnDragOver(wxCoord x, wxCoord y, wxDragResult def) {
return swx->DoDragOver(x, y, def);
}
void wxSTCDropTarget::OnLeave() {
swx->DoDragLeave();
}
//----------------------------------------------------------------------
// Constructor/Destructor
ScintillaWX::ScintillaWX(wxStyledTextCtrl* win) {
capturedMouse = false;
wMain = win;
wDraw = win;
stc = win;
Initialise();
}
ScintillaWX::~ScintillaWX() {
SetTicking(false);
}
//----------------------------------------------------------------------
// base class virtuals
void ScintillaWX::Initialise() {
//ScintillaBase::Initialise();
dropTarget = new wxSTCDropTarget;
dropTarget->SetScintilla(this);
stc->SetDropTarget(dropTarget);
}
void ScintillaWX::Finalise() {
ScintillaBase::Finalise();
}
void ScintillaWX::StartDrag() {
wxDropSource source(wMain.GetID());
wxTextDataObject data(dragChars);
wxDragResult result;
source.SetData(data);
result = source.DoDragDrop(TRUE);
if (result == wxDragMove && dropWentOutside)
ClearSelection();
inDragDrop = FALSE;
SetDragPosition(invalidPosition);
}
void ScintillaWX::SetTicking(bool on) {
wxSTCTimer* steTimer;
if (timer.ticking != on) {
timer.ticking = on;
if (timer.ticking) {
steTimer = new wxSTCTimer(this);
steTimer->Start(timer.tickSize);
timer.tickerID = (int)steTimer;
} else {
steTimer = (wxSTCTimer*)timer.tickerID;
steTimer->Stop();
delete steTimer;
timer.tickerID = 0;
}
}
timer.ticksToWait = caret.period;
}
void ScintillaWX::SetMouseCapture(bool on) {
if (on && !capturedMouse)
wMain.GetID()->CaptureMouse();
else if (!on && capturedMouse)
wMain.GetID()->ReleaseMouse();
capturedMouse = on;
}
bool ScintillaWX::HaveMouseCapture() {
return capturedMouse;
}
void ScintillaWX::ScrollText(int linesToMove) {
int dy = vs.lineHeight * (linesToMove);
// TODO: calculate the rectangle to refreshed...
wMain.GetID()->ScrollWindow(0, dy);
}
void ScintillaWX::SetVerticalScrollPos() {
wMain.GetID()->SetScrollPos(wxVERTICAL, topLine);
}
void ScintillaWX::SetHorizontalScrollPos() {
wMain.GetID()->SetScrollPos(wxHORIZONTAL, xOffset);
}
bool ScintillaWX::ModifyScrollBars(int nMax, int nPage) {
bool modified = false;
int sbMax = wMain.GetID()->GetScrollRange(wxVERTICAL);
int sbThumb = wMain.GetID()->GetScrollThumb(wxVERTICAL);
int sbPos = wMain.GetID()->GetScrollPos(wxVERTICAL);
if (sbMax != nMax || sbThumb != nPage) {
wMain.GetID()->SetScrollbar(wxVERTICAL, sbPos, nPage, nMax);
modified = true;
}
sbMax = wMain.GetID()->GetScrollRange(wxHORIZONTAL);
sbThumb = wMain.GetID()->GetScrollThumb(wxHORIZONTAL);
if ((sbMax != H_SCROLL_MAX) || (sbThumb != H_SCROLL_STEP)) {
wMain.GetID()->SetScrollbar(wxHORIZONTAL, 0, H_SCROLL_STEP, H_SCROLL_MAX);
modified = true;
}
return modified;
}
void ScintillaWX::NotifyChange() {
stc->NotifyChange();
}
void ScintillaWX::NotifyParent(SCNotification scn) {
stc->NotifyParent(&scn);
}
void ScintillaWX::Copy() {
if (currentPos != anchor) {
char* text = CopySelectionRange();
textDO.SetText(text);
wxTheClipboard->Open();
wxTheClipboard->SetData(&textDO);
wxTheClipboard->Close();
}
}
void ScintillaWX::Paste() {
pdoc->BeginUndoAction();
ClearSelection();
wxTextDataObject data;
bool canPaste;
wxTheClipboard->Open();
canPaste = wxTheClipboard->GetData(data);
wxTheClipboard->Close();
if (canPaste) {
wxString str = data.GetText();
int len = str.Length();
pdoc->InsertString(currentPos, str.c_str(), len);
SetEmptySelection(currentPos + len);
}
pdoc->EndUndoAction();
NotifyChange();
Redraw();
}
bool ScintillaWX::CanPaste() {
wxTextDataObject data;
bool canPaste;
wxTheClipboard->Open();
canPaste = wxTheClipboard->GetData(data);
wxTheClipboard->Close();
return canPaste;
}
void ScintillaWX::CreateCallTipWindow(PRectangle) {
ct.wCallTip = new wxWindow(wDraw.GetID(), -1);
ct.wDraw = ct.wCallTip;
}
void ScintillaWX::AddToPopUp(const char *label, int cmd, bool enabled) {
if (!label[0])
popup.GetID()->AppendSeparator();
else
popup.GetID()->Append(cmd, label);
if (!enabled)
popup.GetID()->Enable(cmd, enabled);
// TODO: need to create event handler mappings for the cmd ID
}
void ScintillaWX::ClaimSelection() {
}
LRESULT ScintillaWX::DefWndProc(UINT /*iMessage*/, WPARAM /*wParam*/, LPARAM /*lParam*/) {
return 0;
}
LRESULT ScintillaWX::WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) {
switch (iMessage) {
case EM_CANPASTE:
return CanPaste();
default:
return ScintillaBase::WndProc(iMessage, wParam, lParam);
}
return 0;
}
//----------------------------------------------------------------------
// Event delegates
void ScintillaWX::DoPaint(wxDC* dc, wxRect rect) {
paintState = painting;
Surface surfaceWindow;
surfaceWindow.Init(dc);
PRectangle rcPaint = PRectangleFromwxRect(rect);
dc->BeginDrawing();
Paint(&surfaceWindow, rcPaint);
dc->EndDrawing();
surfaceWindow.Release();
if (paintState == paintAbandoned) {
// Painting area was insufficient to cover new styling or brace highlight positions
FullPaint();
}
paintState = notPainting;
}
void ScintillaWX::DoHScroll(int type, int pos) {
int xPos = xOffset;
switch (type) {
case wxEVT_SCROLLWIN_LINEUP:
xPos -= H_SCROLL_STEP;
break;
case wxEVT_SCROLLWIN_LINEDOWN:
xPos += H_SCROLL_STEP;
break;
case wxEVT_SCROLLWIN_PAGEUP:
xPos -= H_SCROLL_PAGE;
break;
case wxEVT_SCROLLWIN_PAGEDOWN:
xPos += H_SCROLL_PAGE;
break;
case wxEVT_SCROLLWIN_TOP:
xPos = 0;
break;
case wxEVT_SCROLLWIN_BOTTOM:
xPos = H_SCROLL_MAX;
break;
case wxEVT_SCROLLWIN_THUMBTRACK:
xPos = pos;
break;
}
HorizontalScrollTo(xPos);
}
void ScintillaWX::DoVScroll(int type, int pos) {
int topLineNew = topLine;
switch (type) {
case wxEVT_SCROLLWIN_LINEUP:
topLineNew -= 1;
break;
case wxEVT_SCROLLWIN_LINEDOWN:
topLineNew += 1;
break;
case wxEVT_SCROLLWIN_PAGEUP:
topLineNew -= LinesToScroll();
break;
case wxEVT_SCROLLWIN_PAGEDOWN:
topLineNew += LinesToScroll();
break;
case wxEVT_SCROLLWIN_TOP:
topLineNew = 0;
break;
case wxEVT_SCROLLWIN_BOTTOM:
topLineNew = MaxScrollPos();
break;
case wxEVT_SCROLLWIN_THUMBTRACK:
topLineNew = pos;
break;
}
ScrollTo(topLineNew);
}
void ScintillaWX::DoSize(int width, int height) {
PRectangle rcClient(0,0,width,height);
SetScrollBarsTo(rcClient);
DropGraphics();
}
void ScintillaWX::DoLoseFocus(){
DropCaret();
}
void ScintillaWX::DoGainFocus(){
ShowCaretAtCurrentPosition();
}
void ScintillaWX::DoSysColourChange() {
InvalidateStyleData();
}
void ScintillaWX::DoButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) {
ButtonDown(pt, curTime, shift, ctrl, alt);
}
void ScintillaWX::DoButtonUp(Point pt, unsigned int curTime, bool ctrl) {
ButtonUp(pt, curTime, ctrl);
}
void ScintillaWX::DoButtonMove(Point pt) {
ButtonMove(pt);
}
void ScintillaWX::DoAddChar(char ch) {
AddChar(ch);
}
int ScintillaWX::DoKeyDown(int key, bool shift, bool ctrl, bool alt) {
return KeyDown(key, shift, ctrl, alt);
}
void ScintillaWX::DoCommand(int ID) {
Command(ID);
}
void ScintillaWX::DoContextMenu(Point pt) {
ContextMenu(pt);
}
//----------------------------------------------------------------------
bool ScintillaWX::DoDropText(long x, long y, const wxString& data) {
SetDragPosition(invalidPosition);
int movePos = PositionFromLocation(Point(x,y));
DropAt(movePos, data, dragResult == wxDragMove, FALSE); // TODO: rectangular?
return TRUE;
}
wxDragResult ScintillaWX::DoDragEnter(wxCoord x, wxCoord y, wxDragResult def) {
return def;
}
wxDragResult ScintillaWX::DoDragOver(wxCoord x, wxCoord y, wxDragResult def) {
SetDragPosition(PositionFromLocation(Point(x, y)));
dragResult = def;
return def;
}
void ScintillaWX::DoDragLeave() {
SetDragPosition(invalidPosition);
}
//----------------------------------------------------------------------
// Redraw all of text area. This paint will not be abandoned.
void ScintillaWX::FullPaint() {
paintState = painting;
rcPaint = GetTextRectangle();
wxClientDC dc(wMain.GetID());
Surface surfaceWindow;
surfaceWindow.Init(&dc);
Paint(&surfaceWindow, rcPaint);
surfaceWindow.Release();
paintState = notPainting;
}
void ScintillaWX::DoScrollToLine(int line) {
ScrollTo(line);
}
void ScintillaWX::DoScrollToColumn(int column) {
HorizontalScrollTo(column * vs.spaceWidth);
}
//----------------------------------------------------------------------
//----------------------------------------------------------------------

View File

@@ -0,0 +1,148 @@
////////////////////////////////////////////////////////////////////////////
// Name: ScintillaWX.h
// Purpose: A wxWindows implementation of Scintilla. A class derived
// from ScintillaBase that uses the "wx platform" defined in
// PlatWX.cpp. This class is one end of a bridge between
// the wx world and the Scintilla world. It needs a peer
// object of type wxStyledTextCtrl to function.
//
// Author: Robin Dunn
//
// Created: 13-Jan-2000
// RCS-ID: $Id$
// Copyright: (c) 2000 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifndef __ScintillaWX_h__
#define __ScintillaWX_h__
//----------------------------------------------------------------------
#include "Platform.h"
#include "Scintilla.h"
#ifdef SCI_LEXER
#include "SciLexer.h"
#include "PropSet.h"
#include "Accessor.h"
#include "KeyWords.h"
#endif
#include "ContractionState.h"
#include "SVector.h"
#include "CellBuffer.h"
#include "CallTip.h"
#include "KeyMap.h"
#include "Indicator.h"
#include "LineMarker.h"
#include "Style.h"
#include "ViewStyle.h"
#include "AutoComplete.h"
#include "Document.h"
#include "Editor.h"
#include "ScintillaBase.h"
#include <wx/wx.h>
#include <wx/dataobj.h>
#include <wx/clipbrd.h>
#include <wx/dnd.h>
//----------------------------------------------------------------------
class wxStyledTextCtrl; // forward
class ScintillaWX;
//----------------------------------------------------------------------
// Helper classes
class wxSTCDropTarget : public wxTextDropTarget {
public:
void SetScintilla(ScintillaWX* swx) {
this->swx = swx;
}
bool OnDropText(wxCoord x, wxCoord y, const wxString& data);
wxDragResult OnEnter(wxCoord x, wxCoord y, wxDragResult def);
wxDragResult OnDragOver(wxCoord x, wxCoord y, wxDragResult def);
void OnLeave();
private:
ScintillaWX* swx;
};
//----------------------------------------------------------------------
class ScintillaWX : public ScintillaBase {
public:
ScintillaWX(wxStyledTextCtrl* win);
~ScintillaWX();
// base class virtuals
virtual void Initialise();
virtual void Finalise();
virtual void StartDrag();
virtual void SetTicking(bool on);
virtual void SetMouseCapture(bool on);
virtual bool HaveMouseCapture();
virtual void ScrollText(int linesToMove);
virtual void SetVerticalScrollPos();
virtual void SetHorizontalScrollPos();
virtual bool ModifyScrollBars(int nMax, int nPage);
virtual void Copy();
virtual void Paste();
virtual void CreateCallTipWindow(PRectangle rc);
virtual void AddToPopUp(const char *label, int cmd = 0, bool enabled = true);
virtual void ClaimSelection();
virtual LRESULT DefWndProc(UINT iMessage, WPARAM wParam, LPARAM lParam);
virtual LRESULT WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam);
virtual void NotifyChange();
virtual void NotifyParent(SCNotification scn);
// Event delegates
void DoPaint(wxDC* dc, wxRect rect);
void DoHScroll(int type, int pos);
void DoVScroll(int type, int pos);
void DoSize(int width, int height);
void DoLoseFocus();
void DoGainFocus();
void DoSysColourChange();
void DoButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);
void DoButtonUp(Point pt, unsigned int curTime, bool ctrl);
void DoButtonMove(Point pt);
void DoAddChar(char ch);
int DoKeyDown(int key, bool shift, bool ctrl, bool alt);
void DoTick() { Tick(); }
bool DoDropText(long x, long y, const wxString& data);
wxDragResult DoDragEnter(wxCoord x, wxCoord y, wxDragResult def);
wxDragResult DoDragOver(wxCoord x, wxCoord y, wxDragResult def);
void DoDragLeave();
void DoCommand(int ID);
void DoContextMenu(Point pt);
// helpers
void FullPaint();
bool CanPaste();
bool GetHideSelection() { return hideSelection; }
void DoScrollToLine(int line);
void DoScrollToColumn(int column);
private:
bool capturedMouse;
wxStyledTextCtrl* stc;
wxTextDataObject textDO;
wxSTCDropTarget* dropTarget;
wxDragResult dragResult;
};
//----------------------------------------------------------------------
#endif

View File

@@ -1,34 +1,32 @@
# Microsoft Developer Studio Project File - Name="wxBase" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# Microsoft Developer Studio Project File - Name="StcVC" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 5.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=wxBase - Win32 Debug
CFG=StcVC - 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 "wxBase.mak".
!MESSAGE NMAKE /f "StcVC.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 "wxBase.mak" CFG="wxBase - Win32 Debug"
!MESSAGE NMAKE /f "StcVC.mak" CFG="StcVC - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "wxBase - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "wxBase - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE "StcVC - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "StcVC - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "wxBase - Win32 Release"
!IF "$(CFG)" == "StcVC - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -40,18 +38,20 @@ RSC=rc.exe
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# 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 CPP /nologo /W3 /Zi /O2 /I "$(wx)\include" /I "$(wx)\src\zlib" /D "NDEBUG" /D wxUSE_GUI=0 /D WIN95=1 /D "__WIN95__" /D "WIN32" /D "_WIN32" /D WINVER=0x400 /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN32__" /Yu"wx/wxprec.h" /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
# 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
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
# ADD LIB32 /nologo /out:"..\..\lib\stc.lib"
!ELSEIF "$(CFG)" == "wxBase - Win32 Debug"
!ELSEIF "$(CFG)" == "StcVC - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -60,203 +60,191 @@ LIB32=link.exe -lib
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "BaseDebug"
# PROP Intermediate_Dir "BaseDebug"
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# 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 CPP /nologo /MTd /W4 /Zi /Od /I "$(wx)\include" /I "$(wx)\src\zlib" /D DEBUG=1 /D "_DEBUG" /D WXDEBUG=1 /D "__WXDEBUG__" /D wxUSE_GUI=0 /D "__WIN95__" /D "WIN32" /D "_WIN32" /D WINVER=0x400 /D "__WINDOWS__" /D "__WIN32__" /D "__WXMSW__" /D "_MT" /Fr /Yu"wx/wxprec.h" /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
# 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
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo /o"lib/wxBase.bsc"
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
# ADD LIB32 /nologo /out:"..\..\lib\stcd.lib"
!ENDIF
# Begin Target
# Name "wxBase - Win32 Release"
# Name "wxBase - Win32 Debug"
# Name "StcVC - Win32 Release"
# Name "StcVC - Win32 Debug"
# Begin Group "Stc"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\common\appcmn.cpp
SOURCE=.\PlatWX.cpp
# End Source File
# Begin Source File
SOURCE=.\src\common\config.cpp
SOURCE=.\ScintillaWX.cpp
# End Source File
# Begin Source File
SOURCE=.\src\common\datetime.cpp
SOURCE=.\ScintillaWX.h
# End Source File
# Begin Source File
SOURCE=.\src\msw\dir.cpp
SOURCE=.\stc.cpp
# End Source File
# End Group
# Begin Group "Scintilla"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\scintilla\src\Accessor.cxx
# End Source File
# Begin Source File
SOURCE=.\src\msw\dummy.cpp
# ADD CPP /Yc"wx/wxprec.h"
SOURCE=.\scintilla\src\AutoComplete.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\dynarray.cpp
SOURCE=.\scintilla\src\AutoComplete.h
# End Source File
# Begin Source File
SOURCE=.\src\common\dynlib.cpp
SOURCE=.\scintilla\src\CallTip.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\event.cpp
SOURCE=.\scintilla\src\CallTip.h
# End Source File
# Begin Source File
SOURCE=.\src\common\extended.c
# SUBTRACT CPP /YX /Yc /Yu
SOURCE=.\scintilla\src\CellBuffer.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\ffile.cpp
SOURCE=.\scintilla\src\CellBuffer.h
# End Source File
# Begin Source File
SOURCE=.\src\common\file.cpp
SOURCE=.\scintilla\src\ContractionState.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\fileconf.cpp
SOURCE=.\scintilla\src\ContractionState.h
# End Source File
# Begin Source File
SOURCE=.\src\common\filefn.cpp
SOURCE=.\scintilla\src\Document.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\filesys.cpp
SOURCE=.\scintilla\src\Document.h
# End Source File
# Begin Source File
SOURCE=.\src\common\hash.cpp
SOURCE=.\scintilla\src\Editor.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\init.cpp
SOURCE=.\scintilla\src\Editor.h
# End Source File
# Begin Source File
SOURCE=.\src\common\intl.cpp
SOURCE=.\scintilla\src\Indicator.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\list.cpp
SOURCE=.\scintilla\src\Indicator.h
# End Source File
# Begin Source File
SOURCE=.\src\common\log.cpp
SOURCE=.\scintilla\src\KeyMap.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\longlong.cpp
SOURCE=.\scintilla\src\KeyMap.h
# End Source File
# Begin Source File
SOURCE=.\src\msw\main.cpp
SOURCE=.\scintilla\src\KeyWords.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\mimetype.cpp
SOURCE=.\scintilla\src\LexCPP.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\module.cpp
SOURCE=.\scintilla\src\LexHTML.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\object.cpp
SOURCE=.\scintilla\src\LexOthers.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\process.cpp
SOURCE=.\scintilla\src\LexPerl.cxx
# End Source File
# Begin Source File
SOURCE=.\src\msw\regconf.cpp
SOURCE=.\scintilla\src\LexPython.cxx
# End Source File
# Begin Source File
SOURCE=.\src\msw\registry.cpp
SOURCE=.\scintilla\src\LexSQL.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\strconv.cpp
SOURCE=.\scintilla\src\LexVB.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\stream.cpp
SOURCE=.\scintilla\src\LineMarker.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\string.cpp
SOURCE=.\scintilla\src\LineMarker.h
# End Source File
# Begin Source File
SOURCE=.\src\common\textfile.cpp
SOURCE=.\scintilla\src\PropSet.cxx
# End Source File
# Begin Source File
SOURCE=.\src\msw\thread.cpp
SOURCE=.\scintilla\src\ScintillaBase.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\timercmn.cpp
SOURCE=.\scintilla\src\ScintillaBase.h
# End Source File
# Begin Source File
SOURCE=.\src\common\tokenzr.cpp
SOURCE=.\scintilla\src\Style.cxx
# End Source File
# Begin Source File
SOURCE=.\src\common\txtstrm.cpp
SOURCE=.\scintilla\src\Style.h
# End Source File
# Begin Source File
SOURCE=.\src\msw\utils.cpp
SOURCE=.\scintilla\src\SVector.h
# End Source File
# Begin Source File
SOURCE=.\src\common\utilscmn.cpp
SOURCE=.\scintilla\src\ViewStyle.cxx
# End Source File
# Begin Source File
SOURCE=.\src\msw\utilsexc.cpp
# End Source File
# Begin Source File
SOURCE=.\src\common\variant.cpp
# End Source File
# Begin Source File
SOURCE=.\src\common\wxchar.cpp
# End Source File
# Begin Source File
SOURCE=.\src\common\y_tab.c
!IF "$(CFG)" == "wxBase - Win32 Release"
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "wxBase - Win32 Debug"
# ADD CPP /W1
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
SOURCE=.\scintilla\src\ViewStyle.h
# End Source File
# End Group
# End Target
# End Project

View File

@@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
###############################################################################
Project: "jpeg"=.\jpeg.dsp - Package Owner=<4>
Project: "StcVC"=.\StcVC.dsp - Package Owner=<4>
Package=<5>
{{{

View File

@@ -0,0 +1,79 @@
#
# File: makefile.b32
# Author: Julian Smart
# Created: 1999
# Updated:
# Copyright:
#
# Makefile : Builds wxMMedia library for 32-bit BC++
# N.B. use:
# make -f makefile.b32 stc.cfg
# make -f makefile.b32
WXDIR = $(WXWIN)
SCINTILLA=.\scintilla
S=$(SCINTILLA)\src
STCEXTRACPPFLAGS=-D__WX__ -DSCI_LEXER -I$(SCINTILLA)/include -I$(S)
LIBTARGET=$(WXDIR)\contrib\lib\stc.lib
OBJECTS = \
Accessor.obj \
AutoComplete.obj \
CallTip.obj \
CellBuffer.obj \
ContractionState.obj\
Document.obj \
Editor.obj \
Indicator.obj \
KeyMap.obj \
KeyWords.obj \
LineMarker.obj \
PropSet.obj \
ScintillaBase.obj \
Style.obj \
ViewStyle.obj \
\
PlatWX.obj \
ScintillaWX.obj \
stc.obj \
!include $(WXDIR)\src\makelib.b32
CFG = stc.cfg
CPPFLAGS=$(DLL_FLAGS) $(EXTRACPPFLAGS) @$(CFG)
{$(S)}.cxx.obj:
bcc32 $(CPPFLAGS) -P -c {$< }
$(CFG): makefile.b32
copy &&!
-H=$(WXDIR)\src\msw\wx32.csm
-3
-d
-a1 # byte alignment
-R-
-X
-w-par
-w-aus
-w-hid # virtual function A hides virtual function B
-WE
-tWM
-I$(WXINC);$(BCCDIR)\include;$(WXDIR)/src/generic;$(WXDIR)/src/png;$(WXDIR)/src/jpeg;$(WXDIR)/src/zlib;$(WXDIR)/src/xpm;$(WXDIR)/src/tiff
-I$(WXDIR)\include\wx\msw\gnuwin32
-L$(BCCDIR)\lib
-D__WXWIN__
-D__WXMSW__
-D__WINDOWS__
-DWIN32
$(OPT)
$(DEBUG_FLAGS)
$(WIN95FLAG)
$(STCEXTRACPPFLAGS)
! $(CFG)

View File

@@ -0,0 +1,34 @@
# File: makefile.g95 For stectrl
# Author: Robin Dunn
# Created: 1-Feb-2000
# Updated:
WXDIR = ../../..
SCINTILLA=$(WXDIR)/contrib/src/stc/scintilla
S=$(SCINTILLA)/src
EXTRAINC=-D__WX__ -DSCI_LEXER -I$(SCINTILLA)/include -I$(S) -I. -I$(WXDIR)/contrib/include
OBJECTS = \
$(S)/Accessor.$(OBJSUFF) \
$(S)/AutoComplete.$(OBJSUFF) \
$(S)/CallTip.$(OBJSUFF) \
$(S)/CellBuffer.$(OBJSUFF) \
$(S)/ContractionState.$(OBJSUFF)\
$(S)/Document.$(OBJSUFF) \
$(S)/Editor.$(OBJSUFF) \
$(S)/Indicator.$(OBJSUFF) \
$(S)/KeyMap.$(OBJSUFF) \
$(S)/KeyWords.$(OBJSUFF) \
$(S)/LineMarker.$(OBJSUFF) \
$(S)/PropSet.$(OBJSUFF) \
$(S)/ScintillaBase.$(OBJSUFF) \
$(S)/Style.$(OBJSUFF) \
$(S)/ViewStyle.$(OBJSUFF) \
PlatWX.$(OBJSUFF) \
ScintillaWX.$(OBJSUFF) \
stc.$(OBJSUFF)
LIBTARGET = $(WXDIR)/contrib/lib/libstc.a
include $(WXDIR)/src/makelib.g95

View File

@@ -0,0 +1,94 @@
# File: makefile.vc For stectrl
# Author: Robin Dunn
# Created: 1-Feb-2000
# Updated:
# Set WXDIR for your system
WXDIR = $(WXWIN)
SCINTILLA=.\scintilla
S=$(SCINTILLA)\src
EXTRAINC=-D__WX__ -DSCI_LEXER -I$(SCINTILLA)/include -I$(S) -I. -I$(WXDIR)\contrib\include
NOPCH=1
!include $(WXDIR)\src\makevc.env
OBJECTS = \
$(D)\Accessor.obj \
$(D)\AutoComplete.obj \
$(D)\CallTip.obj \
$(D)\CellBuffer.obj \
$(D)\ContractionState.obj\
$(D)\Document.obj \
$(D)\Editor.obj \
$(D)\Indicator.obj \
$(D)\KeyMap.obj \
$(D)\KeyWords.obj \
$(D)\LineMarker.obj \
$(D)\PropSet.obj \
$(D)\ScintillaBase.obj \
$(D)\Style.obj \
$(D)\ViewStyle.obj \
\
$(D)\PlatWX.obj \
$(D)\ScintillaWX.obj \
$(D)\stc.obj \
LIBTARGET = $(WXDIR)\contrib\lib\stc$(LIBEXT).lib
all: $(D) $(LIBTARGET)
$(D) :
mkdir $(D)
wx:
cd $(WXDIR)\src\msw
nmake -f makefile.vc FINAL=$(FINAL)
cd $(THISDIR)
wxclean:
cd $(WXDIR)\src\msw
nmake -f makefile.vc clean
cd $(THISDIR)
$(LIBTARGET): $(OBJECTS)
-erase $(LIBTARGET)
$(implib) @<<
-out:$(LIBTARGET)
-machine:$(CPU)
$(OBJECTS)
<<
{$(S)}.cxx{$(D)}.obj:
$(cc) @<<
$(CPPFLAGS) /c /Fo$@ /Tp $<
<<
{}.cpp{$(D)}.obj:
$(cc) @<<
$(CPPFLAGS) /c /Fo$@ /Tp $<
<<
show:
@echo $(CPPFLAGS)
clean:
-erase $(D)\*.obj
-erase *.sbr
-erase *.exe
-erase *.res
-erase *.map
-erase *.pdb
-erase $(LIBTARGET)

View File

@@ -0,0 +1,7 @@
This directory contains copies of the scintilla/src and
scintilla/include directories from the Scintilla/SCiTE source
distribution. All other code needed to implement Scintilla on top of
wxWindows is located in the directory above this one.
The current version of the Scintilla code is somewhere between 1.22
and 1.23, (from their CVS.)

View File

@@ -0,0 +1,88 @@
// SciTE - Scintilla based Text Editor
// Accessor.h - 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.
enum { wsSpace = 1, wsTab = 2, wsSpaceTab = 4, wsInconsistent=8};
class Accessor {
protected:
// bufferSize is a trade off between time taken to copy the characters and SendMessage overhead
// slopSize positions the buffer before the desired position in case there is some backtracking
enum {bufferSize=4000, slopSize=bufferSize/8};
char buf[bufferSize+1];
WindowID id;
PropSet &props;
int startPos;
int endPos;
int lenDoc;
int offset; // Optional but including an offset makes GCC generate better code
int codePage;
bool InternalIsLeadByte(char ch);
void Fill(int position);
public:
Accessor(WindowID id_, PropSet &props_, int offset_=0) :
id(id_), props(props_), startPos(0x7FFFFFFF), endPos(0),
lenDoc(-1), offset(offset_), codePage(0) {
}
void SetCodePage(int codePage_) { codePage = codePage_; }
char operator[](int position) {
position += offset;
if (position < startPos || position >= endPos) {
Fill(position);
}
return buf[position - startPos];
}
char SafeGetCharAt(int position, char chDefault=' ') {
// Safe version of operator[], returning a defined value for invalid position
position += offset;
if (position < startPos || position >= endPos) {
Fill(position);
if (position < startPos || position >= endPos) {
// Position is outside range of document
return chDefault;
}
}
return buf[position - startPos];
}
bool IsLeadByte(char ch) {
return codePage && InternalIsLeadByte(ch);
}
char StyleAt(int position);
int GetLine(int position);
int LineStart(int line);
int LevelAt(int line);
int Length();
void Flush() {
startPos = 0x7FFFFFFF;
lenDoc = -1;
}
int GetLineState(int line);
int SetLineState(int line, int state);
PropSet &GetPropSet() { return props; }
};
class StylingContext;
typedef bool (*PFNIsCommentLeader)(StylingContext &styler, int pos, int len);
class StylingContext : public Accessor {
char styleBuf[bufferSize];
int validLen;
char chFlags;
char chWhile;
unsigned int startSeg;
public:
StylingContext(WindowID id_, PropSet &props_, int offset_=0) :
Accessor(id_,props_,offset_), validLen(0), chFlags(0) {}
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);
int GetLine(int position);
void SetLevel(int line, int level);
void Flush();
int IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0);
};

View File

@@ -0,0 +1,41 @@
// SciTE - Scintilla based Text Editor
// KeyWords.h - colourise for particular languages
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
typedef void (*LexerFunction)(unsigned int startPos, int lengthDoc, int initStyle,
WordList *keywordlists[], StylingContext &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[], StylingContext &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;
}

View File

@@ -0,0 +1,395 @@
// Scintilla source code edit control
// Platform.h - interface to platform facilities
// Also includes some basic utilities
// Implemented in PlatGTK.cxx for GTK+/Linux, PlatWin.cxx for Windows, and PlatWX.cxx for wxWindows
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef PLATFORM_H
#define PLATFORM_H
// PLAT_GTK = GTK+ on Linux, PLAT_WIN = Win32 API on Win32 OS
// PLAT_WX is wxWindows on any supported platform
// Could also have PLAT_GTKWIN = GTK+ on Win32 OS in future
#define PLAT_GTK 0
#define PLAT_WIN 0
#define PLAT_WX 0
#if defined(__WX__)
#undef PLAT_WX
#define PLAT_WX 1
#elif defined(GTK)
#undef PLAT_GTK
#define PLAT_GTK 1
#else
#undef PLAT_WIN
#define PLAT_WIN 1
#endif
// Include the main header for each platform
#if PLAT_GTK
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#endif
#if PLAT_WIN
#define _WIN32_WINNT 0x0400 // Otherwise some required stuff gets ifdef'd out
// Vassili Bourdo: shut up annoying Visual C++ warnings:
#ifdef _MSC_VER
#pragma warning(disable: 4800 4244 4309)
#endif
#include <windows.h>
#include <richedit.h>
#endif
#if PLAT_WX
#include <wx/wx.h>
#endif
// Underlying the implementation of the platform classes are platform specific types.
// Sometimes these need to be passed around by client code so they are defined here
#if PLAT_GTK
typedef GdkColor ColourID;
typedef GdkFont* FontID;
typedef GdkDrawable* SurfaceID;
typedef GtkWidget* WindowID;
typedef GtkItemFactory* MenuID;
#endif
#if PLAT_WIN
typedef COLORREF ColourID;
typedef HFONT FontID;
typedef HDC SurfaceID;
typedef HWND WindowID;
typedef HMENU MenuID;
#endif
#if PLAT_WX
typedef wxColour ColourID;
typedef wxFont* FontID;
typedef wxDC* SurfaceID;
typedef wxWindow* WindowID;
typedef wxMenu* MenuID;
#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
class Point {
public:
int x;
int y;
Point(int x_=0, int y_=0) : x(x_), y(y_) {
}
// Other automatically defined methods (assignment, copy constructor, destructor) are fine
static Point FromLong(long lpoint);
};
// PRectangle is exactly the same as the Win32 RECT so can be used interchangeably
// PRectangles contain their top and left sides, but not their right and bottom sides
class PRectangle {
public:
int left;
int top;
int right;
int bottom;
PRectangle(int left_=0, int top_=0, int right_=0, int bottom_ = 0) :
left(left_), top(top_), right(right_), bottom(bottom_) {
}
// Other automatically defined methods (assignment, copy constructor, destructor) are fine
bool Contains(Point pt) {
return (pt.x >= left) && (pt.x <= right) &&
(pt.y >= top) && (pt.y <= bottom);
}
bool Contains(PRectangle rc) {
return (rc.left >= left) && (rc.right <= right) &&
(rc.top >= top) && (rc.bottom <= bottom);
}
bool Intersects(PRectangle other) {
return (right >= other.left) && (left <= other.right) &&
(bottom >= other.top) && (top <= other.bottom);
}
int Width() { return right - left; }
int Height() { return bottom - top; }
};
#if PLAT_WX
wxRect wxRectFromPRectangle(PRectangle prc);
PRectangle PRectangleFromwxRect(wxRect rc);
#endif
class Colour {
ColourID co;
public:
Colour(long lcol=0);
Colour(unsigned int red, unsigned int green, unsigned int blue);
bool operator==(const Colour &other) const;
long AsLong() const;
unsigned int GetRed();
unsigned int GetGreen();
unsigned int GetBlue();
friend class Surface;
friend class Palette;
};
// Colour pairs hold a desired colour and the colour that the graphics engine
// allocates to approximate the desired colour.
// To make palette management more automatic, ColourPairs could register at
// construction time with a palette management object.
struct ColourPair {
Colour desired;
Colour allocated;
ColourPair(Colour desired_=Colour(0,0,0)) {
desired = desired_;
allocated = desired;
}
};
class Window; // Forward declaration for Palette
class Palette {
int used;
enum {numEntries = 100};
ColourPair entries[numEntries];
#if PLAT_GTK
GdkColor *allocatedPalette;
int allocatedLen;
#elif PLAT_WIN
HPALETTE hpal;
#elif PLAT_WX
// wxPalette* pal; // **** Is this needed?
#endif
public:
bool allowRealization;
Palette();
~Palette();
void Release();
// This method either adds a colour to the list of wanted colours (want==true)
// or retrieves the allocated colour back to the ColourPair.
// This is one method to make it easier to keep the code for wanting and retrieving in sync.
void WantFind(ColourPair &cp, bool want);
void Allocate(Window &w);
friend class Surface;
};
class Font {
FontID id;
#if PLAT_WX
int ascent;
#endif
// Private so Font objects can not be copied
Font(const Font &) {}
Font &operator=(const Font &) { id=0; return *this; }
public:
Font();
~Font();
void Create(const char *faceName, int size, bool bold=false, bool italic=false);
void Release();
FontID GetID() { return id; }
// Alias another font - caller guarantees not to Release
void SetID(FontID id_) { id = id_; }
friend class Surface;
};
// A surface abstracts a place to draw
class Surface {
private:
#if PLAT_GTK
GdkDrawable *drawable;
GdkGC *gc;
GdkPixmap *ppixmap;
int x;
int y;
bool inited;
bool createdGC;
#elif PLAT_WIN
HDC hdc;
bool hdcOwned;
HPEN pen;
HPEN penOld;
HBRUSH brush;
HBRUSH brushOld;
HFONT font;
HFONT fontOld;
HBITMAP bitmap;
HBITMAP bitmapOld;
HPALETTE paletteOld;
#elif PLAT_WX
wxDC* hdc;
bool hdcOwned;
wxBitmap* bitmap;
int x;
int y;
#endif
// Private so Surface objects can not be copied
Surface(const Surface &) {}
Surface &operator=(const Surface &) { return *this; }
#if PLAT_WIN || PLAT_WX
void BrushColor(Colour back);
void SetFont(Font &font_);
#endif
public:
Surface();
~Surface();
void Init();
void Init(SurfaceID hdc_);
void InitPixMap(int width, int height, Surface *surface_);
void Release();
bool Initialised();
void PenColour(Colour fore);
int LogPixelsY();
void MoveTo(int x_, int y_);
void LineTo(int x_, int y_);
void Polygon(Point *pts, int npts, Colour fore, Colour back);
void RectangleDraw(PRectangle rc, Colour fore, Colour back);
void FillRectangle(PRectangle rc, Colour back);
void FillRectangle(PRectangle rc, Surface &surfacePattern);
void RoundedRectangle(PRectangle rc, Colour fore, Colour back);
void Ellipse(PRectangle rc, Colour fore, Colour back);
void Copy(PRectangle rc, Point from, Surface &surfaceSource);
void DrawText(PRectangle rc, Font &font_, int ybase, const char *s, int len, Colour fore, Colour back);
void DrawTextClipped(PRectangle rc, Font &font_, int ybase, const char *s, int len, Colour fore, Colour back);
void MeasureWidths(Font &font_, const char *s, int len, int *positions);
int WidthText(Font &font_, const char *s, int len);
int WidthChar(Font &font_, char ch);
int Ascent(Font &font_);
int Descent(Font &font_);
int InternalLeading(Font &font_);
int ExternalLeading(Font &font_);
int Height(Font &font_);
int AverageCharWidth(Font &font_);
int SetPalette(Palette *pal, bool inBackGround);
void SetClip(PRectangle rc);
void FlushCachedState();
};
// Class to hide the details of window manipulation
// Does not own the window which will normally have a longer life than this object
class Window {
friend class ListBox;
protected:
WindowID id;
public:
Window() : id(0) {}
virtual ~Window();
Window &operator=(WindowID id_) {
id = id_;
return *this;
}
WindowID GetID() { return id; }
bool Created() { return id != 0; }
void Destroy();
bool HasFocus();
PRectangle GetPosition();
void SetPosition(PRectangle rc);
void SetPositionRelative(PRectangle rc, Window relativeTo);
PRectangle GetClientPosition();
void Show(bool show=true);
void InvalidateAll();
void InvalidateRectangle(PRectangle rc);
void SetFont(Font &font);
enum Cursor { cursorText, cursorArrow, cursorUp, cursorWait, cursorHoriz, cursorVert, cursorReverseArrow };
void SetCursor(Cursor curs);
void SetTitle(const char *s);
#if PLAT_WIN
LRESULT SendMessage(UINT msg, WPARAM wParam=0, LPARAM lParam=0);
int GetDlgCtrlID();
HINSTANCE GetInstance();
#endif
};
class ListBox : public Window {
#if PLAT_GTK
WindowID list;
WindowID scroller;
int current;
#endif
public:
ListBox();
virtual ~ListBox();
ListBox &operator=(WindowID id_) {
id = id_;
return *this;
}
void Create(Window &parent, int ctrlID);
void Clear();
void Append(char *s);
int Length();
void Select(int n);
int GetSelection();
int Find(const char *prefix);
void GetValue(int n, char *value, int len);
void Sort();
};
class Menu {
MenuID id;
public:
Menu();
MenuID GetID() { return id; }
void CreatePopUp();
void Destroy();
void Show(Point pt, Window &w);
};
// Platform class used to retrieve system wide parameters such as double click speed
// and chrome colour. Not a creatable object, more of a module with several functions.
class Platform {
// Private so Platform objects can not be copied
Platform(const Platform &) {}
Platform &operator=(const Platform &) { return *this; }
public:
// Should be private because no new Platforms are ever created
// but gcc warns about this
Platform() {}
~Platform() {}
static Colour Chrome();
static Colour ChromeHighlight();
static const char *DefaultFont();
static int DefaultFontSize();
static unsigned int DoubleClickTime();
static void DebugDisplay(const char *s);
static bool IsKeyDown(int key);
static long SendScintilla(
WindowID w, unsigned int msg, unsigned long wParam=0, long lParam=0);
// These are utility functions not really tied to a platform
static int Minimum(int a, int b);
static int Maximum(int a, int b);
static void DebugPrintf(const char *format, ...);
static int Clamp(int val, int minVal, int maxVal);
};
#endif

View File

@@ -0,0 +1,180 @@
// SciTE - Scintilla based Text Editor
// PropSet.h - a java style properties file module
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef PROPSET_H
#define PROPSET_H
bool EqualCaseInsensitive(const char *a, const char *b);
// Define another string class.
// While it would be 'better' to use std::string, that doubles the executable size.
inline char *StringDup(const char *s) {
if (!s)
return 0;
char *sNew = new char[strlen(s) + 1];
if (sNew)
strcpy(sNew, s);
return sNew;
}
class SString {
char *s;
public:
SString() {
s = 0;
}
SString(const SString &source) {
s = StringDup(source.s);
}
SString(const char *s_) {
s = StringDup(s_);
}
SString(int i) {
char number[100];
sprintf(number, "%0d", i);
//itoa(i, number, 10);
s = StringDup(number);
}
~SString() {
delete []s;
s = 0;
}
SString &operator=(const SString &source) {
if (this != &source) {
delete []s;
s = StringDup(source.s);
}
return *this;
}
bool operator==(const SString &other) const {
if ((s == 0) && (other.s == 0))
return true;
if ((s == 0) || (other.s == 0))
return false;
return strcmp(s, other.s) == 0;
}
bool operator==(const char *sother) const {
if ((s == 0) && (sother == 0))
return true;
if ((s == 0) || (sother == 0))
return false;
return strcmp(s, sother) == 0;
}
const char *c_str() const {
if (s)
return s;
else
return "";
}
int length() const {
if (s)
return strlen(s);
else
return 0;
}
char operator[](int i) {
if (s)
return s[i];
else
return '\0';
}
SString &operator +=(const char *sother) {
int len = length();
int lenOther = strlen(sother);
char *sNew = new char[len + lenOther + 1];
if (sNew) {
if (s)
memcpy(sNew, s, len);
memcpy(sNew + len, sother, lenOther);
sNew[len + lenOther] = '\0';
delete []s;
s = sNew;
}
return *this;
}
int value() {
if (s)
return atoi(s);
else
return 0;
}
};
class PropSet {
private:
char **vals;
int size;
int used;
public:
PropSet *superPS;
PropSet();
~PropSet();
void EnsureCanAddEntry();
void Set(const char *key, const char *val);
void Set(char *keyval);
SString Get(const char *key);
int GetInt(const char *key, int defaultValue=0);
SString GetWild(const char *keybase, const char *filename);
SString GetNewExpand(const char *keybase, const char *filename);
void Clear();
void ReadFromMemory(const char *data, int len);
void Read(const char *filename);
};
// 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 {
public:
// Each word contains at least one character - a empty word acts as sentinal at the end.
char **words;
char *list;
int len;
bool onlyLineEnds; // Delimited by any white space or only line ends
int starts[256];
WordList(bool onlyLineEnds_ = false) :
words(0), list(0), len(0), onlyLineEnds(onlyLineEnds_) {}
~WordList() { Clear(); }
operator bool() { return list; }
const char *operator[](int ind) { return words[ind]; }
void Clear();
void Set(const char *s);
char *Allocate(int size);
void SetFromAllocated();
bool InList(const char *s);
};
#endif

View File

@@ -0,0 +1,172 @@
// Scintilla source code edit control
// SciLexer - interface to the added lexer functions in the SciLexer version of the edit control
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef SCILEXER_H
#define SCILEXER_H
// SciLexer features - not in standard Scintilla
#define SCLEX_CONTAINER 0
#define SCLEX_NULL 1
#define SCLEX_PYTHON 2
#define SCLEX_CPP 3
#define SCLEX_HTML 4
#define SCLEX_XML 5
#define SCLEX_PERL 6
#define SCLEX_SQL 7
#define SCLEX_VB 8
#define SCLEX_PROPERTIES 9
#define SCLEX_ERRORLIST 10
#define SCLEX_MAKEFILE 11
#define SCLEX_BATCH 12
// Lexical states for SCLEX_PYTHON
#define SCE_P_DEFAULT 0
#define SCE_P_COMMENTLINE 1
#define SCE_P_NUMBER 2
#define SCE_P_STRING 3
#define SCE_P_CHARACTER 4
#define SCE_P_WORD 5
#define SCE_P_TRIPLE 6
#define SCE_P_TRIPLEDOUBLE 7
#define SCE_P_CLASSNAME 8
#define SCE_P_DEFNAME 9
#define SCE_P_OPERATOR 10
#define SCE_P_IDENTIFIER 11
#define SCE_P_COMMENTBLOCK 12
#define SCE_P_STRINGEOL 13
// Lexical states for SCLEX_CPP, SCLEX_VB
#define SCE_C_DEFAULT 0
#define SCE_C_COMMENT 1
#define SCE_C_COMMENTLINE 2
#define SCE_C_COMMENTDOC 3
#define SCE_C_NUMBER 4
#define SCE_C_WORD 5
#define SCE_C_STRING 6
#define SCE_C_CHARACTER 7
#define SCE_C_UUID 8
#define SCE_C_PREPROCESSOR 9
#define SCE_C_OPERATOR 10
#define SCE_C_IDENTIFIER 11
#define SCE_C_STRINGEOL 12
// Lexical states for SCLEX_HTML, SCLEX_xML
#define SCE_H_DEFAULT 0
#define SCE_H_TAG 1
#define SCE_H_TAGUNKNOWN 2
#define SCE_H_ATTRIBUTE 3
#define SCE_H_ATTRIBUTEUNKNOWN 4
#define SCE_H_NUMBER 5
#define SCE_H_DOUBLESTRING 6
#define SCE_H_SINGLESTRING 7
#define SCE_H_OTHER 8
#define SCE_H_COMMENT 9
#define SCE_H_ENTITY 10
// XML and ASP
#define SCE_H_TAGEND 11
#define SCE_H_XMLSTART 12
#define SCE_H_XMLEND 13
#define SCE_H_SCRIPT 14
#define SCE_H_ASP 15
#define SCE_H_ASPAT 16
// Embedded Javascript
#define SCE_HJ_START 40
#define SCE_HJ_DEFAULT 41
#define SCE_HJ_COMMENT 42
#define SCE_HJ_COMMENTLINE 43
#define SCE_HJ_COMMENTDOC 44
#define SCE_HJ_NUMBER 45
#define SCE_HJ_WORD 46
#define SCE_HJ_KEYWORD 47
#define SCE_HJ_DOUBLESTRING 48
#define SCE_HJ_SINGLESTRING 49
#define SCE_HJ_SYMBOLS 50
#define SCE_HJ_STRINGEOL 51
// ASP Javascript
#define SCE_HJA_START 55
#define SCE_HJA_DEFAULT 56
#define SCE_HJA_COMMENT 57
#define SCE_HJA_COMMENTLINE 58
#define SCE_HJA_COMMENTDOC 59
#define SCE_HJA_NUMBER 60
#define SCE_HJA_WORD 61
#define SCE_HJA_KEYWORD 62
#define SCE_HJA_DOUBLESTRING 63
#define SCE_HJA_SINGLESTRING 64
#define SCE_HJA_SYMBOLS 65
#define SCE_HJA_STRINGEOL 66
// Embedded VBScript
#define SCE_HB_START 70
#define SCE_HB_DEFAULT 71
#define SCE_HB_COMMENTLINE 72
#define SCE_HB_NUMBER 73
#define SCE_HB_WORD 74
#define SCE_HB_STRING 75
#define SCE_HB_IDENTIFIER 76
#define SCE_HB_STRINGEOL 77
// ASP VBScript
#define SCE_HBA_START 80
#define SCE_HBA_DEFAULT 81
#define SCE_HBA_COMMENTLINE 82
#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
// Embedded Python
#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
// ASP Python
#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
// Lexical states for SCLEX_PERL
#define SCE_PL_DEFAULT 0
#define SCE_PL_HERE 1
#define SCE_PL_COMMENTLINE 2
#define SCE_PL_POD 3
#define SCE_PL_NUMBER 4
#define SCE_PL_WORD 5
#define SCE_PL_STRING 6
#define SCE_PL_CHARACTER 7
#define SCE_PL_PUNCTUATION 8
#define SCE_PL_PREPROCESSOR 9
#define SCE_PL_OPERATOR 10
#define SCE_PL_IDENTIFIER 11
#define SCE_PL_SCALAR 12
#define SCE_PL_ARRAY 13
#define SCE_PL_HASH 14
#define SCE_PL_SYMBOLTABLE 15
#define SCE_PL_REF 16
#define SCE_PL_REGEX 17
#define SCE_PL_REGSUBST 18
#define SCE_PL_LONGQUOTE 19
#define SCE_PL_BACKTICKS 20
#define SCE_PL_DATASECTION 21
#endif

View File

@@ -0,0 +1,423 @@
// Scintilla source code edit control
// Scintilla.h - interface to the edit control
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef SCINTILLA_H
#define SCINTILLA_H
// Compile-time configuration options
#define MACRO_SUPPORT 1 // Comment out to remove macro hooks
#if PLAT_GTK
#include <gdk/gdk.h>
#include <gtk/gtkvbox.h>
#ifdef __cplusplus
extern "C" {
#endif
#define SCINTILLA(obj) GTK_CHECK_CAST (obj, scintilla_get_type (), ScintillaObject)
#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;
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);
#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_OPTIONAL_START 3000
#define SCI_LEXER_START 4000
#define SCI_ADDTEXT SCI_START + 1
#define SCI_ADDSTYLEDTEXT SCI_START + 2
#define SCI_INSERTTEXT SCI_START + 3
#define SCI_CLEARALL SCI_START + 4
#define SCI_GETLENGTH SCI_START + 6
#define SCI_GETCHARAT SCI_START + 7
#define SCI_GETCURRENTPOS SCI_START + 8
#define SCI_GETANCHOR SCI_START + 9
#define SCI_GETSTYLEAT SCI_START + 10
#define SCI_REDO SCI_START + 11
#define SCI_SETUNDOCOLLECTION SCI_START + 12
#define SCI_SELECTALL SCI_START + 13
#define SCI_SETSAVEPOINT SCI_START + 14
#define SCI_GETSTYLEDTEXT SCI_START + 15
#define SCI_CANREDO SCI_START + 16
#define SCI_MARKERLINEFROMHANDLE SCI_START + 17
#define SCI_MARKERDELETEHANDLE SCI_START + 18
#define SC_UNDOCOLLECT_NONE 0
#define SC_UNDOCOLLECT_AUTOSTART 1
#define SCI_GETVIEWWS SCI_START + 20
#define SCI_SETVIEWWS SCI_START + 21
#define SCI_CHANGEPOSITION SCI_START + 22
#define SCI_GOTOLINE SCI_START + 24
#define SCI_GOTOPOS SCI_START + 25
#define SCI_SETANCHOR SCI_START + 26
#define SCI_GETCURLINE SCI_START + 27
#define SCI_GETENDSTYLED SCI_START + 28
#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_CR 1
#define SC_EOL_LF 2
#define SCI_STARTSTYLING SCI_START + 32
#define SCI_SETSTYLING SCI_START + 33
#define SCI_SETBUFFEREDDRAW SCI_START + 35
#define SCI_SETTABWIDTH SCI_START + 36
#define SCI_SETCODEPAGE SCI_START + 37
#define SCI_SETUSEPALETTE SCI_START + 39
#define MARKER_MAX 31
#define SC_MARK_CIRCLE 0
#define SC_MARK_ROUNDRECT 1
#define SC_MARK_ARROW 2
#define SC_MARK_SMALLRECT 3
#define SC_MARK_SHORTARROW 4
#define SC_MARK_EMPTY 5
#define SC_MARK_ARROWDOWN 6
#define SC_MARK_MINUS 7
#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_FOLDEROPEN 31
#define SC_MASK_FOLDERS ((1<<SC_MARKNUM_FOLDER) | (1<<SC_MARKNUM_FOLDEROPEN))
#define SC_MARGIN_SYMBOL 0
#define SC_MARGIN_NUMBER 1
#define SCI_SETMARGINTYPEN SCI_START + 240
#define SCI_GETMARGINTYPEN SCI_START + 241
#define SCI_SETMARGINWIDTHN SCI_START + 242
#define SCI_GETMARGINWIDTHN SCI_START + 243
#define SCI_SETMARGINMASKN SCI_START + 244
#define SCI_GETMARGINMASKN SCI_START + 245
#define SCI_SETMARGINSENSITIVEN SCI_START + 246
#define SCI_GETMARGINSENSITIVEN SCI_START + 247
#define STYLE_DEFAULT 32
#define STYLE_LINENUMBER 33
#define STYLE_BRACELIGHT 34
#define STYLE_BRACEBAD 35
#define STYLE_CONTROLCHAR 36
#define STYLE_MAX 127
#define SCI_STYLECLEARALL SCI_START + 50
#define SCI_STYLESETFORE SCI_START + 51
#define SCI_STYLESETBACK SCI_START + 52
#define SCI_STYLESETBOLD SCI_START + 53
#define SCI_STYLESETITALIC SCI_START + 54
#define SCI_STYLESETSIZE SCI_START + 55
#define SCI_STYLESETFONT SCI_START + 56
#define SCI_STYLESETEOLFILLED SCI_START + 57
#define SCI_STYLERESETDEFAULT SCI_START + 58
#define SCI_SETSELFORE SCI_START + 67
#define SCI_SETSELBACK SCI_START + 68
#define SCI_SETCARETFORE SCI_START + 69
#define SCI_ASSIGNCMDKEY SCI_START + 70
#define SCI_CLEARCMDKEY SCI_START + 71
#define SCI_CLEARALLCMDKEYS SCI_START + 72
#define SCI_SETSTYLINGEX SCI_START + 73
#define SCI_GETCARETPERIOD SCI_START + 75
#define SCI_SETCARETPERIOD SCI_START + 76
#define SCI_SETWORDCHARS SCI_START + 77
#define SCI_BEGINUNDOACTION SCI_START + 78
#define SCI_ENDUNDOACTION SCI_START + 79
#define INDIC_MAX 7
#define INDIC_PLAIN 0
#define INDIC_SQUIGGLE 1
#define INDIC_TT 2
#define INDIC0_MASK 32
#define INDIC1_MASK 64
#define INDIC2_MASK 128
#define INDICS_MASK (INDIC0_MASK | INDIC1_MASK | INDIC2_MASK)
#define SCI_INDICSETSTYLE SCI_START + 80
#define SCI_INDICGETSTYLE SCI_START + 81
#define SCI_INDICSETFORE SCI_START + 82
#define SCI_INDICGETFORE SCI_START + 83
#define SCI_SETSTYLEBITS SCI_START + 90
#define SCI_GETSTYLEBITS SCI_START + 91
#define SCI_SETLINESTATE SCI_START + 92
#define SCI_GETLINESTATE SCI_START + 93
#define SCI_GETMAXLINESTATE SCI_START + 94
#define SCI_AUTOCSHOW SCI_START + 100
#define SCI_AUTOCCANCEL SCI_START + 101
#define SCI_AUTOCACTIVE SCI_START + 102
#define SCI_AUTOCPOSSTART SCI_START + 103
#define SCI_AUTOCCOMPLETE SCI_START + 104
#define SCI_AUTOCSTOPS SCI_START + 105
#define SCI_CALLTIPSHOW SCI_START + 200
#define SCI_CALLTIPCANCEL SCI_START + 201
#define SCI_CALLTIPACTIVE SCI_START + 202
#define SCI_CALLTIPPOSSTART SCI_START + 203
#define SCI_CALLTIPSETHLT SCI_START + 204
#define SCI_CALLTIPSETBACK SCI_START + 205
#define SC_FOLDLEVELBASE 0x400
#define SC_FOLDLEVELWHITEFLAG 0x1000
#define SC_FOLDLEVELHEADERFLAG 0x2000
#define SC_FOLDLEVELNUMBERMASK 0x0FFF
#define SCI_VISIBLEFROMDOCLINE SCI_START + 220
#define SCI_DOCLINEFROMVISIBLE SCI_START + 221
#define SCI_SETFOLDLEVEL SCI_START + 222
#define SCI_GETFOLDLEVEL SCI_START + 223
#define SCI_GETLASTCHILD SCI_START + 224
#define SCI_GETFOLDPARENT SCI_START + 225
#define SCI_SHOWLINES SCI_START + 226
#define SCI_HIDELINES SCI_START + 227
#define SCI_GETLINEVISIBLE SCI_START + 228
#define SCI_SETFOLDEXPANDED SCI_START + 229
#define SCI_GETFOLDEXPANDED SCI_START + 230
#define SCI_TOGGLEFOLD SCI_START + 231
#define SCI_ENSUREVISIBLE SCI_START + 232
#define SCI_SETFOLDFLAGS SCI_START + 233
// Key messages
#define SCI_LINEDOWN SCI_START + 300
#define SCI_LINEDOWNEXTEND SCI_START + 301
#define SCI_LINEUP SCI_START + 302
#define SCI_LINEUPEXTEND SCI_START + 303
#define SCI_CHARLEFT SCI_START + 304
#define SCI_CHARLEFTEXTEND SCI_START + 305
#define SCI_CHARRIGHT SCI_START + 306
#define SCI_CHARRIGHTEXTEND SCI_START + 307
#define SCI_WORDLEFT SCI_START + 308
#define SCI_WORDLEFTEXTEND SCI_START + 309
#define SCI_WORDRIGHT SCI_START + 310
#define SCI_WORDRIGHTEXTEND SCI_START + 311
#define SCI_HOME SCI_START + 312
#define SCI_HOMEEXTEND SCI_START + 313
#define SCI_LINEEND SCI_START + 314
#define SCI_LINEENDEXTEND SCI_START + 315
#define SCI_DOCUMENTSTART SCI_START + 316
#define SCI_DOCUMENTSTARTEXTEND SCI_START + 317
#define SCI_DOCUMENTEND SCI_START + 318
#define SCI_DOCUMENTENDEXTEND SCI_START + 319
#define SCI_PAGEUP SCI_START + 320
#define SCI_PAGEUPEXTEND SCI_START + 321
#define SCI_PAGEDOWN SCI_START + 322
#define SCI_PAGEDOWNEXTEND SCI_START + 323
#define SCI_EDITTOGGLEOVERTYPE SCI_START + 324
#define SCI_CANCEL SCI_START + 325
#define SCI_DELETEBACK SCI_START + 326
#define SCI_TAB SCI_START + 327
#define SCI_BACKTAB SCI_START + 328
#define SCI_NEWLINE SCI_START + 329
#define SCI_FORMFEED SCI_START + 330
#define SCI_VCHOME SCI_START + 331
#define SCI_VCHOMEEXTEND SCI_START + 332
#define SCI_ZOOMIN SCI_START + 333
#define SCI_ZOOMOUT SCI_START + 334
#define SCI_DELWORDLEFT SCI_START + 335
#define SCI_DELWORDRIGHT SCI_START + 336
#define SCI_LINECUT SCI_START + 337
#define SCI_LINEDELETE SCI_START + 338
#define SCI_LINETRANSPOSE SCI_START + 339
#define SCI_LOWERCASE SCI_START + 340
#define SCI_UPPERCASE SCI_START + 341
#define SCI_LINELENGTH SCI_START + 350
#define SCI_BRACEHIGHLIGHT SCI_START + 351
#define SCI_BRACEBADLIGHT SCI_START + 352
#define SCI_BRACEMATCH SCI_START + 353
#define SCI_GETVIEWEOL SCI_START + 355
#define SCI_SETVIEWEOL SCI_START + 356
#define SCI_GETDOCPOINTER SCI_START + 357
#define SCI_SETDOCPOINTER SCI_START + 358
#define SCI_SETMODEVENTMASK SCI_START + 359
#define EDGE_NONE 0
#define EDGE_LINE 1
#define EDGE_BACKGROUND 2
#define SCI_GETEDGECOLUMN SCI_START + 360
#define SCI_SETEDGECOLUMN SCI_START + 361
#define SCI_GETEDGEMODE SCI_START + 362
#define SCI_SETEDGEMODE SCI_START + 363
#define SCI_GETEDGECOLOUR SCI_START + 364
#define SCI_SETEDGECOLOUR SCI_START + 365
#define SCI_SEARCHANCHOR SCI_START + 366
#define SCI_SEARCHNEXT SCI_START + 367
#define SCI_SEARCHPREV SCI_START + 368
#define CARET_SLOP 0x01 // Show caret within N lines of edge when it's scrolled to view
#define CARET_CENTER 0x02 // Center caret on screen when it's scrolled to view
#define CARET_STRICT 0x04 // OR this with CARET_CENTER to reposition even when visible, or
// OR this with CARET_SLOP to reposition whenever outside slop border
#define SCI_SETCARETPOLICY SCI_START + 369
#define SCI_LINESONSCREEN SCI_START + 370
#define SCI_USEPOPUP SCI_START + 371
// GTK+ Specific
#define SCI_GRABFOCUS SCI_START + 400
// Optional module for macro recording
#ifdef MACRO_SUPPORT
typedef void (tMacroRecorder)(UINT iMessage, WPARAM wParam, LPARAM lParam,
void *userData);
#define SCI_STARTRECORD SCI_OPTIONAL_START + 1
#define SCI_STOPRECORD SCI_OPTIONAL_START + 2
#endif
#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_DELETETEXT 0x2
#define SC_MOD_CHANGESTYLE 0x4
#define SC_MOD_CHANGEFOLD 0x8
#define SC_PERFORMED_USER 0x10
#define SC_PERFORMED_UNDO 0x20
#define SC_PERFORMED_REDO 0x40
#define SC_LASTSTEPINUNDOREDO 0x100
#define SC_MOD_CHANGEMARKER 0x200
#define SC_MODEVENTMASKALL 0x377
struct SCNotification {
NMHDR nmhdr;
int position; // SCN_STYLENEEDED, SCN_MODIFIED
int ch; // SCN_CHARADDED, SCN_KEY
int modifiers; // SCN_KEY
int modificationType; // SCN_MODIFIED
const char *text; // SCN_MODIFIED
int length; // SCN_MODIFIED
int linesAdded; // SCN_MODIFIED
#ifdef MACRO_SUPPORT
int message; // SCN_MACRORECORD
int wParam; // SCN_MACRORECORD
int lParam; // SCN_MACRORECORD
#endif
int line; // SCN_MODIFIED
int foldLevelNow; // SCN_MODIFIED
int foldLevelPrev; // SCN_MODIFIED
int margin; // SCN_MARGINCLICK
};
#define SCN_STYLENEEDED 2000
#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
// will be removed completely in a future version.
// To enable these features define INCLUDE_DEPRECATED_FEATURES
#ifdef INCLUDE_DEPRECATED_FEATURES
// Default style settings. These are deprecated and will be removed in a future version.
#define SCI_SETFORE SCI_START + 60
#define SCI_SETBACK SCI_START + 61
#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

View File

@@ -0,0 +1,218 @@
// Scintilla source code edit control
// WinDefs.h - the subset of definitions from Windows needed by Scintilla for GTK+
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef WINDEFS_H
#define WINDEFS_H
#define WORD short
#define WPARAM unsigned long
#define LPARAM long
#define LRESULT long
#define DWORD long
#define UINT unsigned int
#define LPSTR char *
#define LONG long
/* RTF control */
#define EM_CANPASTE (1074)
#define EM_CANUNDO (198)
#define EM_CHARFROMPOS (215)
#define EM_DISPLAYBAND (1075)
#define EM_EMPTYUNDOBUFFER (205)
#define EM_EXGETSEL (1076)
#define EM_EXLIMITTEXT (1077)
#define EM_EXLINEFROMCHAR (1078)
#define EM_EXSETSEL (1079)
#define EM_FINDTEXT (1080)
#define EM_FINDTEXTEX (1103)
#define EM_FINDWORDBREAK (1100)
#define EM_FMTLINES (200)
#define EM_FORMATRANGE (1081)
#define EM_GETCHARFORMAT (1082)
#define EM_GETEVENTMASK (1083)
#define EM_GETFIRSTVISIBLELINE (206)
#define EM_GETHANDLE (189)
#define EM_GETLIMITTEXT (213)
#define EM_GETLINE (196)
#define EM_GETLINECOUNT (186)
#define EM_GETMARGINS (212)
#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_GETSEL (176)
#define EM_GETSELTEXT (1086)
#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_LIMITTEXT (197)
#define EM_LINEFROMCHAR (201)
#define EM_LINEINDEX (187)
#define EM_LINELENGTH (193)
#define EM_LINESCROLL (182)
#define EM_PASTESPECIAL (1088)
#define EM_POSFROMCHAR (214)
#define EM_REPLACESEL (194)
#define EM_REQUESTRESIZE (1089)
#define EM_SCROLL (181)
#define EM_SCROLLCARET (183)
#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_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_SETRECT (179)
#define EM_SETRECTNP (180)
#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 WM_NULL (0)
#define WM_CLEAR (771)
#define WM_COMMAND (273)
#define WM_COPY (769)
#define WM_CUT (768)
#define WM_GETTEXT (13)
#define WM_GETTEXTLENGTH (14)
#define WM_NOTIFY (78)
#define WM_PASTE (770)
#define WM_SETTEXT (12)
#define WM_UNDO (772)
#define EN_CHANGE (768)
#define EN_KILLFOCUS (512)
#define EN_SETFOCUS (256)
#define EC_LEFTMARGIN 1
#define EC_RIGHTMARGIN 2
#define EC_USEFONTINFO 0xffff
#if PLAT_GTK
#define VK_DOWN GDK_Down
#define VK_UP GDK_Up
#define VK_LEFT GDK_Left
#define VK_RIGHT GDK_Right
#define VK_HOME GDK_Home
#define VK_END GDK_End
#define VK_PRIOR GDK_Page_Up
#define VK_NEXT GDK_Page_Down
#define VK_DELETE GDK_Delete
#define VK_INSERT GDK_Insert
#define VK_ESCAPE GDK_Escape
#define VK_BACK GDK_BackSpace
#define VK_TAB GDK_Tab
#define VK_RETURN GDK_Return
#define VK_ADD GDK_KP_Add
#define VK_SUBTRACT GDK_KP_Subtract
#endif
#if PLAT_WX
#define VK_DOWN WXK_DOWN
#define VK_UP WXK_UP
#define VK_LEFT WXK_LEFT
#define VK_RIGHT WXK_RIGHT
#define VK_HOME WXK_HOME
#define VK_END WXK_END
#define VK_PRIOR WXK_PRIOR
#define VK_NEXT WXK_NEXT
#define VK_DELETE WXK_DELETE
#define VK_INSERT WXK_INSERT
#define VK_ESCAPE WXK_ESCAPE
#define VK_BACK WXK_BACK
#define VK_TAB WXK_TAB
#define VK_RETURN WXK_RETURN
#define VK_ADD WXK_ADD
#define VK_SUBTRACT WXK_SUBTRACT
// Are these needed any more
#define LPSTR char *
#define LONG long
#define LPDWORD (long *)
#endif
/* SELCHANGE structure */
#define SEL_EMPTY (0)
#define SEL_TEXT (1)
#define SEL_OBJECT (2)
#define SEL_MULTICHAR (4)
#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 {
LONG left;
LONG top;
LONG right;
LONG bottom;
};
struct CHARRANGE {
LONG cpMin;
LONG cpMax;
};
struct TEXTRANGE {
CHARRANGE chrg;
LPSTR lpstrText;
};
struct FINDTEXTEX {
CHARRANGE chrg;
LPSTR lpstrText;
CHARRANGE chrgText;
};
struct NMHDR {
WindowID hwndFrom;
UINT idFrom;
UINT code;
};
struct FORMATRANGE {
SurfaceID hdc;
SurfaceID hdcTarget;
RECT rc;
RECT rcPage;
CHARRANGE chrg;
};
#define MAKELONG(a, b) ((a) | ((b) << 16))
#define LOWORD(x) (x & 0xffff)
#define HIWORD(x) (x >> 16)
#endif

View File

@@ -0,0 +1,166 @@
// 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 <ctype.h>
#include <stdio.h>
#include "Platform.h"
#include "PropSet.h"
#include "Accessor.h"
#include "Scintilla.h"
bool Accessor::InternalIsLeadByte(char ch) {
#if PLAT_GTK
// TODO: support DBCS under GTK+
return false;
#elif PLAT_WIN
return IsDBCSLeadByteEx(codePage, ch);
#elif PLAT_WX
return false;
#endif
}
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::StartSegment(unsigned int pos) {
startSeg = pos;
}
void StylingContext::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
Platform::SendScintilla(id, SCI_SETSTYLING, pos - startSeg + 1, chAttr);
} else {
if (chAttr != chWhile)
chFlags = 0;
chAttr |= chFlags;
for (unsigned int i = startSeg; i <= pos; i++) {
styleBuf[validLen++] = 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;
}
}
int StylingContext::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;
}

View File

@@ -0,0 +1,104 @@
// Scintilla source code edit control
// AutoComplete.cxx - defines the auto completion list box
// 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 "Platform.h"
#include "AutoComplete.h"
AutoComplete::AutoComplete() {
lb = 0;
active = false;
posStart = 0;
strcpy(stopChars, "");
}
AutoComplete::~AutoComplete() {
lb.Destroy();
}
bool AutoComplete::Active() {
return active;
}
void AutoComplete::Start(Window &parent, int ctrlID, int position, int startLen_) {
if (!lb.Created()) {
lb.Create(parent, ctrlID);
}
lb.Clear();
active = true;
startLen = startLen_;
posStart = position;
}
void AutoComplete::SetStopChars(const char *stopChars_) {
strncpy(stopChars, stopChars_, sizeof(stopChars));
stopChars[sizeof(stopChars) - 1] = '\0';
}
bool AutoComplete::IsStopChar(char ch) {
return ch && strchr(stopChars, ch);
}
int AutoComplete::SetList(const char *list) {
int maxStrLen = 12;
lb.Clear();
char *words = new char[strlen(list) + 1];
if (words) {
strcpy(words, list);
char *startword = words;
int i = 0;
for (; words && words[i]; i++) {
if (words[i] == ' ') {
words[i] = '\0';
lb.Append(startword);
maxStrLen = Platform::Maximum(maxStrLen, strlen(startword));
startword = words + i + 1;
}
}
if (startword) {
lb.Append(startword);
maxStrLen = Platform::Maximum(maxStrLen, strlen(startword));
}
delete []words;
}
lb.Sort();
return maxStrLen;
}
void AutoComplete::Show() {
lb.Show();
lb.Select(0);
}
void AutoComplete::Cancel() {
if (lb.Created()) {
lb.Destroy();
lb = 0;
active = false;
}
}
void AutoComplete::Move(int delta) {
int count = lb.Length();
int current = lb.GetSelection();
current += delta;
if (current >= count)
current = count - 1;
if (current < 0)
current = 0;
lb.Select(current);
}
void AutoComplete::Select(const char *word) {
int pos = lb.Find(word);
//Platform::DebugPrintf("Autocompleting at <%s> %d\n", wordCurrent, pos);
if (pos != -1)
lb.Select(pos);
}

View File

@@ -0,0 +1,43 @@
// Scintilla source code edit control
// AutoComplete.h - defines the auto completion list box
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef AUTOCOMPLETE_H
#define AUTOCOMPLETE_H
class AutoComplete {
bool active;
char stopChars[256];
public:
ListBox lb;
int posStart;
int startLen;
AutoComplete();
~AutoComplete();
// Is the auto completion list displayed?
bool Active();
// Display the auto completion list positioned to be near a character position
void Start(Window &parent, int ctrlID, int position, int startLen_);
// The stop chars are characters which, when typed, cause the auto completion list to disappear
void SetStopChars(const char *stopChars_);
bool IsStopChar(char ch);
// The list string contains a sequence of words separated by spaces
int SetList(const char *list);
void Show();
void Cancel();
// Move the current list element by delta, scrolling appropriately
void Move(int delta);
// Select a list element that starts with word as the current element
void Select(const char *word);
};
#endif

View File

@@ -0,0 +1,168 @@
// Scintilla source code edit control
// CallTip.cxx - code for displaying call tips
// 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 "Platform.h"
#include "CallTip.h"
CallTip::CallTip() {
wCallTip = 0;
inCallTipMode = false;
posStartCallTip = 0;
val = 0;
startHighlight = 0;
endHighlight = 0;
colourBG.desired = Colour(0xff, 0xff, 0xff);
colourUnSel.desired = Colour(0x80, 0x80, 0x80);
colourSel.desired = Colour(0, 0, 0x80);
colourShade.desired = Colour(0, 0, 0);
colourLight.desired = Colour(0xc0, 0xc0, 0xc0);
}
CallTip::~CallTip() {
wCallTip.Destroy();
delete []val;
val = 0;
}
void CallTip::RefreshColourPalette(Palette &pal, bool want) {
pal.WantFind(colourBG, want);
pal.WantFind(colourUnSel, want);
pal.WantFind(colourSel, want);
pal.WantFind(colourShade, want);
pal.WantFind(colourLight, want);
}
void CallTip::PaintCT(Surface *surfaceWindow) {
if (!val)
return;
PRectangle rcClientPos = wCallTip.GetClientPosition();
PRectangle rcClientSize(0, 0, rcClientPos.right - rcClientPos.left,
rcClientPos.bottom - rcClientPos.top);
PRectangle rcClient(1, 1, rcClientSize.right - 1, rcClientSize.bottom - 1);
surfaceWindow->FillRectangle(rcClient, colourBG.allocated);
// To make a nice small call tip window, it is only sized to fit most normal characters without accents
int lineHeight = surfaceWindow->Height(font);
int ascent = surfaceWindow->Ascent(font) - surfaceWindow->InternalLeading(font);
// For each line...
// Draw the definition in three parts: before highlight, highlighted, after highlight
int ytext = rcClient.top + ascent + 1;
char *chunkVal = val;
bool moreChunks = true;
while (moreChunks) {
char *chunkEnd = strchr(chunkVal, '\n');
if (chunkEnd == NULL) {
chunkEnd = chunkVal + strlen(chunkVal);
moreChunks = false;
}
int chunkOffset = chunkVal - val;
int chunkLength = chunkEnd - chunkVal;
int chunkEndOffset = chunkOffset + chunkLength;
int thisStartHighlight = Platform::Maximum(startHighlight, chunkOffset);
thisStartHighlight = Platform::Minimum(thisStartHighlight, chunkEndOffset);
thisStartHighlight -= chunkOffset;
int thisEndHighlight = Platform::Maximum(endHighlight, chunkOffset);
thisEndHighlight = Platform::Minimum(thisEndHighlight, chunkEndOffset);
thisEndHighlight -= chunkOffset;
int x = 5;
int xEnd = x + surfaceWindow->WidthText(font, chunkVal, thisStartHighlight);
rcClient.left = x;
rcClient.top = ytext - ascent - 1;
rcClient.right = xEnd;
surfaceWindow->DrawText(rcClient, font, ytext,
chunkVal, thisStartHighlight,
colourUnSel.allocated, colourBG.allocated);
x = xEnd;
xEnd = x + surfaceWindow->WidthText(font, chunkVal + thisStartHighlight,
thisEndHighlight - thisStartHighlight);
rcClient.top = ytext;
rcClient.left = x;
rcClient.right = xEnd;
surfaceWindow->DrawText(rcClient, font, ytext,
chunkVal + thisStartHighlight, thisEndHighlight - thisStartHighlight,
colourSel.allocated, colourBG.allocated);
x = xEnd;
xEnd = x + surfaceWindow->WidthText(font, chunkVal + thisEndHighlight,
chunkLength - thisEndHighlight);
rcClient.left = x;
rcClient.right = xEnd;
surfaceWindow->DrawText(rcClient, font, ytext,
chunkVal + thisEndHighlight, chunkLength - thisEndHighlight,
colourUnSel.allocated, colourBG.allocated);
chunkVal = chunkEnd + 1;
ytext += lineHeight;
}
// Draw a raised border around the edges of the window
surfaceWindow->MoveTo(0, rcClientSize.bottom - 1);
surfaceWindow->PenColour(colourShade.allocated);
surfaceWindow->LineTo(rcClientSize.right - 1, rcClientSize.bottom - 1);
surfaceWindow->LineTo(rcClientSize.right - 1, 0);
surfaceWindow->PenColour(colourLight.allocated);
surfaceWindow->LineTo(0, 0);
surfaceWindow->LineTo(0, rcClientSize.bottom - 1);
}
PRectangle CallTip::CallTipStart(int pos, Point pt, const char *defn,
const char *faceName, int size) {
Surface surfaceMeasure;
surfaceMeasure.Init();
int deviceHeight = (size * surfaceMeasure.LogPixelsY()) / 72;
font.Create(faceName, deviceHeight);
if (val)
delete []val;
val = new char[strlen(defn) + 1];
if (!val)
return PRectangle();
strcpy(val, defn);
startHighlight = 0;
endHighlight = 0;
inCallTipMode = true;
posStartCallTip = pos;
// Look for multiple lines in the text
// Only support \n here - simply means container must avoid \r!
int width = 0;
int numLines = 1;
const char *newline;
const char *look = val;
while ((newline = strchr(look, '\n')) != NULL) {
int thisWidth = surfaceMeasure.WidthText(font, look, newline - look);
width = Platform::Maximum(width, thisWidth);
look = newline + 1;
numLines++;
}
int lastWidth = surfaceMeasure.WidthText(font, look, strlen(look));
width = Platform::Maximum(width, lastWidth) + 10;
int lineHeight = surfaceMeasure.Height(font);
// Extra line for border and an empty line at top and bottom
int height = lineHeight * numLines - surfaceMeasure.InternalLeading(font) + 2 + 2;
return PRectangle(pt.x -5, pt.y + lineHeight + 1, pt.x + width - 5, pt.y + lineHeight + 1 + height);
}
void CallTip::CallTipCancel() {
inCallTipMode = false;
if (wCallTip.Created()) {
wCallTip.Destroy();
}
}
void CallTip::SetHighlight(int start, int end) {
// Avoid flashing by checking something has really changed
if ((start != startHighlight) || (end != endHighlight)) {
startHighlight = start;
endHighlight = end;
if (wCallTip.Created()) {
wCallTip.InvalidateAll();
}
}
}

View File

@@ -0,0 +1,46 @@
// Scintilla source code edit control
// CallTip.h - interface to the call tip control
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef CALLTIP_H
#define CALLTIP_H
const char callClassName[] = "CallTip";
class CallTip {
int startHighlight;
int endHighlight;
char *val;
Font font;
public:
Window wCallTip;
Window wDraw;
bool inCallTipMode;
int posStartCallTip;
ColourPair colourBG;
ColourPair colourUnSel;
ColourPair colourSel;
ColourPair colourShade;
ColourPair colourLight;
CallTip();
~CallTip();
// Claim or accept palette entries for the colours required to paint a calltip
void RefreshColourPalette(Palette &pal, bool want);
void PaintCT(Surface *surfaceWindow);
// Setup the calltip and return a rectangle of the area required
PRectangle CallTipStart(int pos, Point pt, const char *defn,
const char *faceName, int size);
void CallTipCancel();
// Set a range of characters to be displayed in a highlight style.
// Commonly used to highlight the current parameter.
void SetHighlight(int start, int end);
};
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,224 @@
// Scintilla source code edit control
// CellBuffer.h - manages the text of the document
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef CELLBUFFER_H
#define CELLBUFFER_H
// This holds the marker identifier and the marker type to display.
// MarkerHandleNumbers are members of lists.
struct MarkerHandleNumber {
int handle;
int number;
MarkerHandleNumber *next;
};
// A marker handle set contains any number of MarkerHandleNumbers
class MarkerHandleSet {
MarkerHandleNumber *root;
public:
MarkerHandleSet();
~MarkerHandleSet();
int Length();
int NumberFromHandle(int handle);
int MarkValue(); // Bit set of marker numbers
bool Contains(int handle);
bool InsertHandle(int handle, int markerNum);
void RemoveHandle(int handle);
void RemoveNumber(int markerNum);
void CombineWith(MarkerHandleSet *other);
};
// Each line stores the starting position of the first character of the line in the cell buffer
// and potentially a marker handle set. Often a line will not have any attached markers.
struct LineData {
int startPosition;
MarkerHandleSet *handleSet;
LineData() : startPosition(0), handleSet(0) {
}
};
// The line vector contains information about each of the lines in a cell buffer.
class LineVector {
public:
enum { growSize = 4000 };
int lines;
LineData *linesData;
int size;
int *levels;
int sizeLevels;
// Handles are allocated sequentially and should never have to be reused as 32 bit ints are very big.
int handleCurrent;
LineVector();
~LineVector();
void Init();
void Expand(int sizeNew);
void ExpandLevels(int sizeNew=-1);
void InsertValue(int pos, int value);
void SetValue(int pos, int value);
void Remove(int pos);
int LineFromPosition(int pos);
int AddMark(int line, int marker);
void MergeMarkers(int pos);
void DeleteMark(int line, int markerNum);
void DeleteMarkFromHandle(int markerHandle);
int LineFromHandle(int markerHandle);
};
// Actions are used to store all the information required to perform one undo/redo step.
enum actionType { insertAction, removeAction, startAction };
class Action {
public:
actionType at;
int position;
char *data;
int lenData;
Action();
~Action();
void Create(actionType at_, int position_=0, char *data_=0, int lenData_=0);
void Destroy();
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 &UndoStep();
bool CanRedo() const;
int StartRedo();
const Action &RedoStep();
};
// Holder for an expandable array of characters that supports undo and line markers
// Based on article "Data Structures in a Bit-Mapped Text Editor"
// by Wilfred J. Hansen, Byte January 1987, page 183
class CellBuffer {
private:
char *body;
int size;
int length;
int part1len;
int gaplen;
char *part2body;
bool readOnly;
undoCollectionType collectingUndo;
UndoHistory uh;
LineVector lv;
SVector<int, 4000> lineStates;
void GapTo(int position);
void RoomFor(int insertionLength);
inline char ByteAt(int position);
void SetByteAt(int position, char ch);
public:
CellBuffer(int initialLength = 4000);
~CellBuffer();
// Retrieving positions outside the range of the buffer works and returns 0
char CharAt(int position);
void GetCharRange(char *buffer, int position, int lengthRetrieve);
char StyleAt(int position);
int ByteLength();
int Length();
int Lines();
int LineStart(int line);
int LineFromPosition(int pos) { return lv.LineFromPosition(pos); }
const char *InsertString(int position, char *s, int insertLength);
void InsertCharStyle(int position, char ch, char style);
// 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.
bool SetStyleAt(int position, char style, char mask=(char)0xff);
bool SetStyleFor(int position, int length, char style, char mask);
const char *DeleteChars(int position, int deleteLength);
bool IsReadOnly();
void SetReadOnly(bool set);
// 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();
// Line marker functions
int AddMark(int line, int markerNum);
void DeleteMark(int line, int markerNum);
void DeleteMarkFromHandle(int markerHandle);
int GetMark(int line);
void DeleteAllMarks(int markerNum);
int LineFromHandle(int markerHandle);
// Without undo
void BasicInsertString(int position, char *s, int insertLength);
void BasicDeleteChars(int position, int deleteLength);
undoCollectionType SetUndoCollection(undoCollectionType collectUndo);
bool IsCollectingUndo();
void BeginUndoAction();
void EndUndoAction();
void DeleteUndoHistory();
// 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();
int StartUndo();
const Action &UndoStep();
bool CanRedo();
int StartRedo();
const Action &RedoStep();
int SetLineState(int line, int state);
int GetLineState(int line);
int GetMaxLineState();
int SetLevel(int line, int level);
int GetLevel(int line);
};
#define CELL_SIZE 2
#endif

View File

@@ -0,0 +1,203 @@
// Scintilla source code edit control
// ContractionState.cxx - manages visibility of lines for folding
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#include "Platform.h"
#include "ContractionState.h"
OneLine::OneLine() {
displayLine = 0;
docLine = 0;
visible = true;
expanded = true;
}
ContractionState::ContractionState() {
lines = 0;
size = 0;
linesInDoc = 1;
linesInDisplay = 1;
valid = false;
}
ContractionState::~ContractionState() {
Clear();
}
void ContractionState::MakeValid() const {
if (!valid) {
// Could be cleverer by keeping the index of the last still valid entry
// rather than invalidating all.
int linePrev = -1;
int lineDisplay = 0;
for (int line=0; line<linesInDoc; line++) {
lines[line].displayLine = lineDisplay;
if (lines[line].visible) {
lines[lineDisplay].docLine = line;
lineDisplay++;
}
}
valid = true;
}
}
void ContractionState::Clear() {
delete []lines;
lines = 0;
size = 0;
linesInDoc = 1;
linesInDisplay = 1;
}
int ContractionState::LinesInDoc() const {
return linesInDoc;
}
int ContractionState::LinesDisplayed() const {
return linesInDisplay;
}
int ContractionState::DisplayFromDoc(int lineDoc) const {
if (size == 0) {
return lineDoc;
}
MakeValid();
if ((lineDoc >= 0) && (lineDoc < linesInDoc)) {
return lines[lineDoc].displayLine;
}
return -1;
}
int ContractionState::DocFromDisplay(int lineDisplay) const {
if (lineDisplay <= 0)
return 0;
if (lineDisplay >= linesInDisplay)
return linesInDoc-1;
if (size == 0)
return lineDisplay;
MakeValid();
return lines[lineDisplay].docLine;
}
void ContractionState::Grow(int sizeNew) {
OneLine *linesNew = new OneLine[sizeNew];
if (linesNew) {
int i = 0;
for (; i < size; i++) {
linesNew[i] = lines[i];
}
for (; i < sizeNew; i++) {
linesNew[i].displayLine = i;
}
delete []lines;
lines = linesNew;
size = sizeNew;
valid = false;
} else {
Platform::DebugPrintf("No memory available\n");
// TODO: Blow up
}
}
void ContractionState::InsertLines(int lineDoc, int lineCount) {
if (size == 0) {
linesInDoc += lineCount;
linesInDisplay += lineCount;
return;
}
//Platform::DebugPrintf("InsertLine[%d] = %d\n", lineDoc);
if ((linesInDoc + lineCount + 2) >= size) {
Grow(linesInDoc + lineCount + growSize);
}
linesInDoc += lineCount;
linesInDisplay += lineCount;
for (int i = linesInDoc + 1; i >= lineDoc + lineCount; i--) {
lines[i].visible = lines[i - lineCount].visible;
lines[i].expanded = lines[i - lineCount].expanded;
}
for (int d=0;d<lineCount;d++) {
lines[lineDoc+d].visible = true; // Should inherit visibility from context ?
lines[lineDoc+d].expanded = true;
}
valid = false;
}
void ContractionState::DeleteLines(int lineDoc, int lineCount) {
if (size == 0) {
linesInDoc -= lineCount;
linesInDisplay -= lineCount;
return;
}
int delta = 0;
for (int d=0;d<lineCount;d++)
if (lines[lineDoc+d].visible)
delta--;
for (int i = lineDoc; i < linesInDoc-lineCount; i++) {
lines[i].visible = lines[i + lineCount].visible;
lines[i].expanded = lines[i + lineCount].expanded;
}
linesInDoc -= lineCount;
linesInDisplay += delta;
valid = false;
}
bool ContractionState::GetVisible(int lineDoc) const {
if (size == 0)
return true;
if ((lineDoc >= 0) && (lineDoc < linesInDoc)) {
return lines[lineDoc].visible;
} else {
return false;
}
}
bool ContractionState::SetVisible(int lineDocStart, int lineDocEnd, bool visible) {
if (size == 0) {
Grow(linesInDoc + growSize);
}
// TODO: modify docLine members to mirror displayLine
int delta = 0;
// Change lineDocs
if ((lineDocStart <= lineDocEnd) && (lineDocStart >= 0) && (lineDocEnd < linesInDoc)) {
for (int line=lineDocStart; line <= lineDocEnd; line++) {
if (lines[line].visible != visible) {
delta += visible ? 1 : -1;
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;
valid = false;
return delta != 0;
}
bool ContractionState::GetExpanded(int lineDoc) const {
if (size == 0)
return true;
if ((lineDoc >= 0) && (lineDoc < linesInDoc)) {
return lines[lineDoc].expanded;
} else {
return false;
}
}
bool ContractionState::SetExpanded(int lineDoc, bool expanded) {
if (size == 0) {
Grow(linesInDoc + growSize);
}
if ((lineDoc >= 0) && (lineDoc < linesInDoc)) {
if (lines[lineDoc].expanded != expanded) {
lines[lineDoc].expanded = expanded;
return true;
}
}
return false;
}

View File

@@ -0,0 +1,50 @@
// Scintilla source code edit control
// ContractionState.h - manages visibility of lines for folding
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef CONTRACTIONSTATE_H
#define CONTRACTIONSTATE_H
class OneLine {
public:
int displayLine; // position within set of visible lines
int docLine; // inverse of displayLine
bool visible;
bool expanded;
OneLine();
virtual ~OneLine() {}
};
class ContractionState {
void Grow(int sizeNew);
enum { growSize = 4000 };
int linesInDoc;
int linesInDisplay;
mutable OneLine *lines;
int size;
mutable bool valid;
void MakeValid() const;
public:
ContractionState();
virtual ~ContractionState();
void Clear();
int LinesInDoc() const;
int LinesDisplayed() const;
int DisplayFromDoc(int lineDoc) const;
int DocFromDisplay(int lineDisplay) const;
void InsertLines(int lineDoc, int lineCount);
void DeleteLines(int lineDoc, int lineCount);
bool GetVisible(int lineDoc) const;
bool SetVisible(int lineDocStart, int lineDocEnd, bool visible);
bool GetExpanded(int lineDoc) const;
bool SetExpanded(int lineDoc, bool expanded);
};
#endif

View File

@@ -0,0 +1,797 @@
// Scintilla source code edit control
// Document.cxx - text document that handles notifications, DBCS, styling, words and end of line
// 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 <stdio.h>
#include <ctype.h>
#include "Platform.h"
#include "Scintilla.h"
#include "SVector.h"
#include "CellBuffer.h"
#include "Document.h"
Document::Document() {
refCount = 0;
#ifdef unix
eolMode = SC_EOL_LF;
#else
eolMode = SC_EOL_CRLF;
#endif
dbcsCodePage = 0;
stylingBits = 5;
stylingBitsMask = 0x1F;
stylingPos = 0;
stylingMask = 0;
for (int ch = 0; ch < 256; ch++) {
wordchars[ch] = isalnum(ch) || ch == '_';
}
endStyled = 0;
enteredCount = 0;
tabInChars = 8;
watchers = 0;
lenWatchers = 0;
}
Document::~Document() {
for (int i = 0; i < lenWatchers; i++) {
watchers[i].watcher->NotifyDeleted(this, watchers[i].userData);
}
delete []watchers;
watchers = 0;
lenWatchers = 0;
}
// Increase reference count and return its previous value.
int Document::AddRef() {
return refCount++;
}
// Decrease reference count and return its provius value.
// Delete the document if reference count reaches zero.
int Document::Release() {
int curRefCount = --refCount;
if (curRefCount == 0)
delete this;
return curRefCount;
}
void Document::SetSavePoint() {
cb.SetSavePoint();
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) {
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) {
return cb.LineFromPosition(pos);
}
int Document::LineEndPosition(int position) {
return LineEnd(LineFromPosition(position));
}
int Document::VCHomePosition(int position) {
int line = LineFromPosition(position);
int startPosition = LineStart(line);
int endLine = LineStart(line + 1) - 1;
int startText = startPosition;
while (startText < endLine && (cb.CharAt(startText) == ' ' || cb.CharAt(startText) == '\t' ) )
startText++;
if (position == startText)
return startPosition;
else
return startText;
}
int Document::SetLevel(int line, int level) {
int prev = cb.SetLevel(line, level);
if (prev != level) {
DocModification mh(SC_MOD_CHANGEFOLD, LineStart(line), 0, 0, 0);
mh.line = line;
mh.foldLevelNow = level;
mh.foldLevelPrev = prev;
NotifyModified(mh);
}
return prev;
}
static bool IsSubordinate(int levelStart, int levelTry) {
if (levelTry & SC_FOLDLEVELWHITEFLAG)
return true;
else
return (levelStart & SC_FOLDLEVELNUMBERMASK) < (levelTry & SC_FOLDLEVELNUMBERMASK);
}
int Document::GetLastChild(int lineParent, int level) {
if (level == -1)
level = GetLevel(lineParent) & SC_FOLDLEVELNUMBERMASK;
int maxLine = LinesTotal();
int lineMaxSubord = lineParent;
while (lineMaxSubord < maxLine-1) {
EnsureStyledTo(LineStart(lineMaxSubord+2));
if (!IsSubordinate(level, GetLevel(lineMaxSubord+1)))
break;
lineMaxSubord++;
}
if (lineMaxSubord > lineParent) {
if (level > (GetLevel(lineMaxSubord+1) & SC_FOLDLEVELNUMBERMASK)) {
// Have chewed up some whitespace that belongs to a parent so seek back
if ((lineMaxSubord > lineParent) && (GetLevel(lineMaxSubord) & SC_FOLDLEVELWHITEFLAG)) {
lineMaxSubord--;
}
}
}
return lineMaxSubord;
}
int Document::GetFoldParent(int line) {
int level = GetLevel(line);
int lineLook = line-1;
while ((lineLook > 0) && (
(!(GetLevel(lineLook) & SC_FOLDLEVELHEADERFLAG)) ||
((GetLevel(lineLook) & SC_FOLDLEVELNUMBERMASK) >= level))
) {
lineLook--;
}
if ((GetLevel(lineLook) & SC_FOLDLEVELHEADERFLAG) &&
((GetLevel(lineLook) & SC_FOLDLEVELNUMBERMASK) < level)) {
return lineLook;
} else {
return -1;
}
}
int Document::ClampPositionIntoDocument(int pos) {
return Platform::Clamp(pos, 0, Length());
}
bool Document::IsCrLf(int pos) {
if (pos < 0)
return false;
if (pos >= (Length() - 1))
return false;
return (cb.CharAt(pos) == '\r') && (cb.CharAt(pos + 1) == '\n');
}
bool Document::IsDBCS(int pos) {
#if PLAT_WIN
if (dbcsCodePage) {
// Anchor DBCS calculations at start of line because start of line can
// not be a DBCS trail byte.
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++;
}
}
return false;
#else
return false;
#endif
}
// Normalise a position so that it is not halfway through a two byte character.
// This can occur in two situations -
// When lines are terminated with \r\n pairs which should be treated as one character.
// When displaying DBCS text such as Japanese.
// If moving, move the position in the indicated direction.
int Document::MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd) {
//Platform::DebugPrintf("NoCRLF %d %d\n", pos, moveDir);
// If out of range, just return value - should be fixed up after
if (pos < 0)
return pos;
if (pos > Length())
return pos;
// Position 0 and Length() can not be between any two characters
if (pos == 0)
return pos;
if (pos == Length())
return pos;
// assert pos > 0 && pos < Length()
if (checkLineEnd && IsCrLf(pos - 1)) {
if (moveDir > 0)
return pos + 1;
else
return pos - 1;
}
// Not between CR and LF
#if PLAT_WIN
if (dbcsCodePage) {
// Anchor DBCS calculations at start of line because start of line can
// not be a DBCS trail byte.
int startLine = pos;
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) {
// Position is between a lead byte and a trail byte
if (moveDir > 0)
return pos + 1;
else
return pos - 1;
}
}
#endif
return pos;
}
void Document::ModifiedAt(int pos) {
if (endStyled > pos)
endStyled = pos;
}
// Document only modified by gateways DeleteChars, InsertStyledString, Undo, Redo, and SetStyleAt.
// SetStyleAt does not change the persistent state of a document
// Unlike Undo, Redo, and InsertStyledString, the pos argument is a cell number not a char number
void Document::DeleteChars(int pos, int len) {
if (enteredCount == 0) {
enteredCount++;
if (cb.IsReadOnly())
NotifyModifyAttempt();
if (!cb.IsReadOnly()) {
int prevLinesTotal = LinesTotal();
bool startSavePoint = cb.IsSavePoint();
const char *text = cb.DeleteChars(pos*2, len * 2);
if (startSavePoint && cb.IsCollectingUndo())
NotifySavePoint(!startSavePoint);
ModifiedAt(pos);
int modFlags = SC_MOD_DELETETEXT | SC_PERFORMED_USER;
DocModification mh(modFlags, pos, len, LinesTotal() - prevLinesTotal, text);
NotifyModified(mh);
}
enteredCount--;
}
}
void Document::InsertStyledString(int position, char *s, int insertLength) {
if (enteredCount == 0) {
enteredCount++;
if (cb.IsReadOnly())
NotifyModifyAttempt();
if (!cb.IsReadOnly()) {
int prevLinesTotal = LinesTotal();
bool startSavePoint = cb.IsSavePoint();
const char *text = cb.InsertString(position, s, insertLength);
if (startSavePoint && cb.IsCollectingUndo())
NotifySavePoint(!startSavePoint);
ModifiedAt(position / 2);
int modFlags = SC_MOD_INSERTTEXT | SC_PERFORMED_USER;
DocModification mh(modFlags, position / 2, insertLength / 2, LinesTotal() - prevLinesTotal, text);
NotifyModified(mh);
}
enteredCount--;
}
}
int Document::Undo() {
int newPos = 0;
if (enteredCount == 0) {
enteredCount++;
bool startSavePoint = cb.IsSavePoint();
int steps = cb.StartUndo();
//Platform::DebugPrintf("Steps=%d\n", steps);
for (int step=0; step<steps; step++) {
int prevLinesTotal = LinesTotal();
const Action &action = cb.UndoStep();
int cellPosition = action.position / 2;
ModifiedAt(cellPosition);
newPos = cellPosition;
int modFlags = SC_PERFORMED_UNDO;
// With undo, an insertion action becomes a deletion notification
if (action.at == removeAction) {
newPos += action.lenData;
modFlags |= SC_MOD_INSERTTEXT;
} else {
modFlags |= SC_MOD_DELETETEXT;
}
if (step == steps-1)
modFlags |= SC_LASTSTEPINUNDOREDO;
NotifyModified(DocModification(modFlags, cellPosition, action.lenData,
LinesTotal() - prevLinesTotal, action.data));
}
bool endSavePoint = cb.IsSavePoint();
if (startSavePoint != endSavePoint)
NotifySavePoint(endSavePoint);
enteredCount--;
}
return newPos;
}
int Document::Redo() {
int newPos = 0;
if (enteredCount == 0) {
enteredCount++;
bool startSavePoint = cb.IsSavePoint();
int steps = cb.StartRedo();
for (int step=0; step<steps; step++) {
int prevLinesTotal = LinesTotal();
const Action &action = cb.RedoStep();
int cellPosition = action.position / 2;
ModifiedAt(cellPosition);
newPos = cellPosition;
int modFlags = SC_PERFORMED_REDO;
if (action.at == insertAction) {
newPos += action.lenData;
modFlags |= SC_MOD_INSERTTEXT;
} else {
modFlags |= SC_MOD_DELETETEXT;
}
if (step == steps-1)
modFlags |= SC_LASTSTEPINUNDOREDO;
NotifyModified(DocModification(modFlags, cellPosition, action.lenData,
LinesTotal() - prevLinesTotal, action.data));
}
bool endSavePoint = cb.IsSavePoint();
if (startSavePoint != endSavePoint)
NotifySavePoint(endSavePoint);
enteredCount--;
}
return newPos;
}
void Document::InsertChar(int pos, char ch) {
char chs[2];
chs[0] = ch;
chs[1] = 0;
InsertStyledString(pos*2, chs, 2);
}
// Insert a null terminated string
void Document::InsertString(int position, const char *s) {
InsertString(position, s, strlen(s));
}
// Insert a string with a length
void Document::InsertString(int position, const char *s, int insertLength) {
char *sWithStyle = new char[insertLength * 2];
if (sWithStyle) {
for (int i = 0; i < insertLength; i++) {
sWithStyle[i*2] = s[i];
sWithStyle[i*2 + 1] = 0;
}
InsertStyledString(position*2, sWithStyle, insertLength*2);
delete []sWithStyle;
}
}
void Document::ChangeChar(int pos, char ch) {
DeleteChars(pos, 1);
InsertChar(pos, ch);
}
void Document::DelChar(int pos) {
if (IsCrLf(pos)) {
DeleteChars(pos, 2);
} else if (IsDBCS(pos)) {
DeleteChars(pos, 2);
} else if (pos < Length()) {
DeleteChars(pos, 1);
}
}
int Document::DelCharBack(int pos) {
if (pos <= 0) {
return pos;
} else if (IsCrLf(pos - 2)) {
DeleteChars(pos - 2, 2);
return pos - 2;
} else if (IsDBCS(pos - 1)) {
DeleteChars(pos - 2, 2);
return pos - 2;
} else {
DeleteChars(pos - 1, 1);
return pos - 1;
}
}
void Document::Indent(bool forwards, int lineBottom, int lineTop) {
if (forwards) {
// Indent by a tab
for (int line = lineBottom; line >= lineTop; line--) {
InsertChar(LineStart(line), '\t');
}
} else {
// Dedent - suck white space off the front of the line to dedent by equivalent of a tab
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);
}
}
}
}
void Document::ConvertLineEnds(int eolModeSet) {
BeginUndoAction();
for (int pos = 0; pos < Length(); pos++) {
if (cb.CharAt(pos) == '\r') {
if (cb.CharAt(pos+1) == '\n') {
if (eolModeSet != SC_EOL_CRLF) {
DeleteChars(pos, 2);
if (eolModeSet == SC_EOL_CR)
InsertString(pos, "\r", 1);
else
InsertString(pos, "\n", 1);
} else {
pos++;
}
} else {
if (eolModeSet != SC_EOL_CR) {
DeleteChars(pos, 1);
if (eolModeSet == SC_EOL_CRLF) {
InsertString(pos, "\r\n", 2);
pos++;
} else {
InsertString(pos, "\n", 1);
}
}
}
} else if (cb.CharAt(pos) == '\n') {
if (eolModeSet != SC_EOL_LF) {
DeleteChars(pos, 1);
if (eolModeSet == SC_EOL_CRLF) {
InsertString(pos, "\r\n", 2);
pos++;
} else {
InsertString(pos, "\r", 1);
}
}
}
}
EndUndoAction();
}
bool Document::IsWordChar(unsigned char ch) {
return wordchars[ch];
}
int Document::ExtendWordSelect(int pos, int delta) {
if (delta < 0) {
while (pos > 0 && IsWordChar(cb.CharAt(pos - 1)))
pos--;
} else {
while (pos < (Length()) && IsWordChar(cb.CharAt(pos)))
pos++;
}
return pos;
}
int Document::NextWordStart(int pos, int delta) {
if (delta < 0) {
while (pos > 0 && (cb.CharAt(pos - 1) == ' ' || cb.CharAt(pos - 1) == '\t'))
pos--;
if (isspace(cb.CharAt(pos - 1))) { // Back up to previous line
while (pos > 0 && isspace(cb.CharAt(pos - 1)))
pos--;
} else {
bool startAtWordChar = IsWordChar(cb.CharAt(pos - 1));
while (pos > 0 && !isspace(cb.CharAt(pos - 1)) && (startAtWordChar == IsWordChar(cb.CharAt(pos - 1))))
pos--;
}
} else {
bool startAtWordChar = IsWordChar(cb.CharAt(pos));
while (pos < (Length()) && isspace(cb.CharAt(pos)))
pos++;
while (pos < (Length()) && !isspace(cb.CharAt(pos)) && (startAtWordChar == IsWordChar(cb.CharAt(pos))))
pos++;
while (pos < (Length()) && (cb.CharAt(pos) == ' ' || cb.CharAt(pos) == '\t'))
pos++;
}
return pos;
}
bool Document::IsWordAt(int start, int end) {
int lengthDoc = Length();
if (start > 0) {
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;
}
// Find text in document, supporting both forward and backward
// searches (just pass minPos > maxPos to do a backward search)
// Has not been tested with backwards DBCS searches yet.
long Document::FindText(int minPos, int maxPos, const char *s, bool caseSensitive, bool word) {
bool forward = minPos <= maxPos;
int increment = forward ? 1 : -1;
// Range endpoints should not be inside DBCS characters, but just in case, move them.
int startPos = MovePositionOutsideChar(minPos, increment, false);
int endPos = MovePositionOutsideChar(maxPos, increment, false);
// Compute actual search ranges needed
int lengthFind = strlen(s);
int endSearch = 0;
if (startPos <= endPos) {
endSearch = endPos - lengthFind + 1;
} else {
endSearch = endPos;
}
//Platform::DebugPrintf("Find %d %d %s %d\n", startPos, endPos, ft->lpstrText, lengthFind);
char firstChar = s[0];
if (!caseSensitive)
firstChar = toupper(firstChar);
int pos = startPos;
while (forward ? (pos < endSearch) : (pos >= endSearch)) {
char ch = CharAt(pos);
if (caseSensitive) {
if (ch == firstChar) {
bool found = true;
for (int posMatch = 1; posMatch < lengthFind && found; posMatch++) {
ch = CharAt(pos + posMatch);
if (ch != s[posMatch])
found = false;
}
if (found) {
if ((!word) || IsWordAt(pos, pos + lengthFind))
return pos;
}
}
} else {
if (toupper(ch) == firstChar) {
bool found = true;
for (int posMatch = 1; posMatch < lengthFind && found; posMatch++) {
ch = CharAt(pos + posMatch);
if (toupper(ch) != toupper(s[posMatch]))
found = false;
}
if (found) {
if ((!word) || IsWordAt(pos, pos + lengthFind))
return pos;
}
}
}
pos += increment;
if (dbcsCodePage) {
// Ensure trying to match from start of character
pos = MovePositionOutsideChar(pos, increment, false);
}
}
//Platform::DebugPrintf("Not found\n");
return - 1;
}
int Document::LinesTotal() {
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++;
} else {
if (makeUpperCase) {
if (islower(ch)) {
ChangeChar(pos, toupper(ch));
}
} else {
if (isupper(ch)) {
ChangeChar(pos, tolower(ch));
}
}
}
}
}
void Document::SetWordChars(unsigned char *chars) {
int ch;
for (ch = 0; ch < 256; ch++) {
wordchars[ch] = false;
}
if (chars) {
while (*chars) {
wordchars[*chars] = true;
chars++;
}
} else {
for (ch = 0; ch < 256; ch++) {
wordchars[ch] = isalnum(ch) || ch == '_';
}
}
}
void Document::SetStylingBits(int bits) {
stylingBits = bits;
stylingBitsMask = 0;
for (int bit=0; bit<stylingBits; bit++) {
stylingBitsMask <<= 1;
stylingBitsMask |= 1;
}
}
void Document::StartStyling(int position, char mask) {
stylingPos = position;
stylingMask = mask;
}
void Document::SetStyleFor(int length, char style) {
if (enteredCount == 0) {
enteredCount++;
int prevEndStyled = endStyled;
if (cb.SetStyleFor(stylingPos, length, style, stylingMask)) {
DocModification mh(SC_MOD_CHANGESTYLE | SC_PERFORMED_USER,
prevEndStyled, length);
NotifyModified(mh);
}
stylingPos += length;
endStyled = stylingPos;
enteredCount--;
}
}
void Document::SetStyles(int length, char *styles) {
if (enteredCount == 0) {
enteredCount++;
int prevEndStyled = endStyled;
bool didChange = false;
for (int iPos = 0; iPos < length; iPos++, stylingPos++) {
if (cb.SetStyleAt(stylingPos, styles[iPos], stylingMask)) {
didChange = true;
}
}
endStyled = stylingPos;
if (didChange) {
DocModification mh(SC_MOD_CHANGESTYLE | SC_PERFORMED_USER,
prevEndStyled, endStyled - prevEndStyled);
NotifyModified(mh);
}
enteredCount--;
}
}
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) {
for (int i = 0; i < lenWatchers; i++) {
if ((watchers[i].watcher == watcher) &&
(watchers[i].userData == userData))
return false;
}
WatcherWithUserData *pwNew = new WatcherWithUserData[lenWatchers + 1];
if (!pwNew)
return false;
for (int j = 0; j < lenWatchers; j++)
pwNew[j] = watchers[j];
pwNew[lenWatchers].watcher = watcher;
pwNew[lenWatchers].userData = userData;
delete []watchers;
watchers = pwNew;
lenWatchers++;
return true;
}
bool Document::RemoveWatcher(DocWatcher *watcher, void *userData) {
for (int i = 0; i < lenWatchers; i++) {
if ((watchers[i].watcher == watcher) &&
(watchers[i].userData == userData)) {
if (lenWatchers == 1) {
delete []watchers;
watchers = 0;
lenWatchers = 0;
} else {
WatcherWithUserData *pwNew = new WatcherWithUserData[lenWatchers];
if (!pwNew)
return false;
for (int j = 0; j < lenWatchers - 1; j++) {
pwNew[j] = (j < i) ? watchers[j] : watchers[j + 1];
}
delete []watchers;
watchers = pwNew;
lenWatchers--;
}
return true;
}
}
return false;
}
void Document::NotifyModifyAttempt() {
for (int i = 0; i < lenWatchers; i++) {
watchers[i].watcher->NotifyModifyAttempt(this, watchers[i].userData);
}
}
void Document::NotifySavePoint(bool atSavePoint) {
for (int i = 0; i < lenWatchers; i++) {
watchers[i].watcher->NotifySavePoint(this, watchers[i].userData, atSavePoint);
}
}
void Document::NotifyModified(DocModification mh) {
for (int i = 0; i < lenWatchers; i++) {
watchers[i].watcher->NotifyModified(this, mh, watchers[i].userData);
}
}

View File

@@ -0,0 +1,227 @@
// Scintilla source code edit control
// Document.h - text document that handles notifications, DBCS, styling, words and end of line
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef DOCUMENT_H
#define DOCUMENT_H
// A Position is a position within a document between two characters or at the beginning or end.
// Sometimes used as a character index where it identifies the character after the position.
typedef int Position;
const Position invalidPosition = -1;
// The range class represents a range of text in a document.
// The two values are not sorted as one end may be more significant than the other
// as is the case for the selection where the end position is the position of the caret.
// If either position is invalidPosition then the range is invalid and most operations will fail.
class Range {
public:
Position start;
Position end;
Range(Position pos=0) :
start(pos), end(pos) {
};
Range(Position start_, Position end_) :
start(start_), end(end_) {
};
bool Valid() const {
return (start != invalidPosition) && (end != invalidPosition);
}
bool Contains(Position pos) const {
if (start < end) {
return (pos >= start && pos <= end);
} else {
return (pos <= start && pos >= end);
}
}
bool Contains(Range other) const {
return Contains(other.start) && Contains(other.end);
}
bool Overlaps(Range other) const {
return
Contains(other.start) ||
Contains(other.end) ||
other.Contains(start) ||
other.Contains(end);
}
};
class DocWatcher;
class DocModification;
class Document {
public:
// Used to pair watcher pointer with user data
class WatcherWithUserData {
public:
DocWatcher *watcher;
void *userData;
WatcherWithUserData() {
watcher = 0;
userData = 0;
}
};
private:
int refCount;
CellBuffer cb;
bool wordchars[256];
int stylingPos;
int stylingMask;
int endStyled;
int enteredCount;
WatcherWithUserData *watchers;
int lenWatchers;
public:
int stylingBits;
int stylingBitsMask;
int eolMode;
int dbcsCodePage;
int tabInChars;
Document();
virtual ~Document();
int AddRef();
int Release();
int LineFromPosition(int pos);
int ClampPositionIntoDocument(int pos);
bool IsCrLf(int pos);
int MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd=true);
// Gateways to modifying document
void DeleteChars(int pos, int len);
void InsertStyledString(int position, char *s, int insertLength);
int Undo();
int Redo();
bool CanUndo() { return cb.CanUndo(); }
bool CanRedo() { return cb.CanRedo(); }
void DeleteUndoHistory() { cb.DeleteUndoHistory(); }
undoCollectionType SetUndoCollection(undoCollectionType collectUndo) {
return cb.SetUndoCollection(collectUndo);
}
void BeginUndoAction() { cb.BeginUndoAction(); }
void EndUndoAction() { cb.EndUndoAction(); }
void SetSavePoint();
bool IsSavePoint() { return cb.IsSavePoint(); }
void Indent(bool forwards, int lineBottom, int lineTop);
void ConvertLineEnds(int eolModeSet);
void SetReadOnly(bool set) { cb.SetReadOnly(set); }
void InsertChar(int pos, char ch);
void InsertString(int position, const char *s);
void InsertString(int position, const char *s, int insertLength);
void ChangeChar(int pos, char ch);
void DelChar(int pos);
int DelCharBack(int pos);
char CharAt(int position) { return cb.CharAt(position); }
void GetCharRange(char *buffer, int position, int lengthRetrieve) {
cb.GetCharRange(buffer, position, lengthRetrieve);
}
char StyleAt(int position) { return cb.StyleAt(position); }
int GetMark(int line) { return cb.GetMark(line); }
int AddMark(int line, int markerNum);
void DeleteMark(int line, int markerNum);
void DeleteMarkFromHandle(int markerHandle);
void DeleteAllMarks(int markerNum);
int LineFromHandle(int markerHandle) { return cb.LineFromHandle(markerHandle); }
int LineStart(int line);
int LineEnd(int line);
int LineEndPosition(int position);
int VCHomePosition(int position);
int SetLevel(int line, int level);
int GetLevel(int line) { return cb.GetLevel(line); }
int GetLastChild(int lineParent, int level=-1);
int GetFoldParent(int line);
void Indent(bool forwards);
int ExtendWordSelect(int pos, int delta);
int NextWordStart(int pos, int delta);
int Length() { return cb.Length(); }
long FindText(int minPos, int maxPos, const char *s, bool caseSensitive, bool word);
long FindText(WORD iMessage,WPARAM wParam,LPARAM lParam);
int LinesTotal();
void ChangeCase(Range r, bool makeUpperCase);
void SetWordChars(unsigned char *chars);
void SetStylingBits(int bits);
void StartStyling(int position, char mask);
void SetStyleFor(int length, char style);
void SetStyles(int length, char *styles);
int GetEndStyled() { return endStyled; }
bool EnsureStyledTo(int pos);
int SetLineState(int line, int state) { return cb.SetLineState(line, state); }
int GetLineState(int line) { return cb.GetLineState(line); }
int GetMaxLineState() { return cb.GetMaxLineState(); }
bool AddWatcher(DocWatcher *watcher, void *userData);
bool RemoveWatcher(DocWatcher *watcher, void *userData);
const WatcherWithUserData *GetWatchers() const { return watchers; }
int GetLenWatchers() const { return lenWatchers; }
private:
bool IsDBCS(int pos);
bool IsWordChar(unsigned char ch);
bool IsWordAt(int start, int end);
void ModifiedAt(int pos);
void NotifyModifyAttempt();
void NotifySavePoint(bool atSavePoint);
void NotifyModified(DocModification mh);
};
// To optimise processing of document modifications by DocWatchers, a hint is passed indicating the
// scope of the change.
// If the DocWatcher is a document view then this can be used to optimise screen updating.
class DocModification {
public:
int modificationType;
int position;
int length;
int linesAdded; // Negative if lines deleted
const char *text; // Only valid for changes to text, not for changes to style
int line;
int foldLevelNow;
int foldLevelPrev;
DocModification(int modificationType_, int position_=0, int length_=0,
int linesAdded_=0, const char *text_=0) :
modificationType(modificationType_),
position(position_),
length(length_),
linesAdded(linesAdded_),
text(text_),
line(0),
foldLevelNow(0),
foldLevelPrev(0) {}
};
// A class that wants to receive notifications from a Document must be derived from DocWatcher
// and implement the notification methods. It can then be added to the watcher list with AddWatcher.
class DocWatcher {
public:
virtual ~DocWatcher() {}
virtual void NotifyModifyAttempt(Document *doc, void *userData) = 0;
virtual void NotifySavePoint(Document *doc, void *userData, bool atSavePoint) = 0;
virtual void NotifyModified(Document *doc, DocModification mh, void *userData) = 0;
virtual void NotifyDeleted(Document *doc, void *userData) = 0;
virtual void NotifyStyleNeeded(Document *doc, void *userData, int endPos) = 0;
};
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,287 @@
// Scintilla source code edit control
// Editor.h - defines the main editor class
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef EDITOR_H
#define EDITOR_H
class Caret {
public:
bool active;
bool on;
int period;
Caret();
};
class Timer {
public:
bool ticking;
int ticksToWait;
enum {tickSize = 100};
int tickerID;
Timer();
};
class LineLayout {
public:
// Drawing is only performed for maxLineLength characters on each line.
enum {maxLineLength = 4000};
int numCharsInLine;
char chars[maxLineLength];
char styles[maxLineLength];
char indicators[maxLineLength];
int positions[maxLineLength];
};
class Editor : public DocWatcher {
protected: // ScintillaBase subclass needs access to much of Editor
// On GTK+, Scintilla is a container widget holding two scroll bars and a drawing area
// whereas on Windows there is just one window with both scroll bars turned on.
// Therefore, on GTK+ the following are separate windows but only one window on Windows.
Window wMain; // The Scintilla parent window
Window wDraw; // The text drawing area
// Style resources may be expensive to allocate so are cached between uses.
// When a style attribute is changed, this cache is flushed.
bool stylesValid;
ViewStyle vs;
Palette palette;
bool hideSelection;
bool inOverstrike;
// In bufferedDraw mode, graphics operations are drawn to a pixmap and then copied to
// the screen. This avoids flashing but is about 30% slower.
bool bufferedDraw;
int xOffset; // Horizontal scrolled amount in pixels
int xCaretMargin; // Ensure this many pixels visible on both sides of caret
Surface pixmapLine;
Surface pixmapSelMargin;
Surface pixmapSelPattern;
// Intellimouse support - currently only implemented for Windows
unsigned int ucWheelScrollLines;
short cWheelDelta; //wheel delta from roll
KeyMap kmap;
Caret caret;
Timer timer;
Point lastClick;
unsigned int lastClickTime;
enum { selChar, selWord, selLine } selectionType;
Point ptMouseLast;
bool firstExpose;
bool inDragDrop;
bool dropWentOutside;
int posDrag;
int posDrop;
int lastXChosen;
int lineAnchor;
int originalAnchorPos;
int currentPos;
int anchor;
int topLine;
int posTopLine;
bool needUpdateUI;
Position braces[2];
int bracesMatchStyle;
int edgeState;
int theEdge;
enum { notPainting, painting, paintAbandoned } paintState;
PRectangle rcPaint;
bool paintingAllText;
int modEventMask;
char *dragChars;
int lenDrag;
bool dragIsRectangle;
enum { selStream, selRectangle, selRectangleFixed } selType;
int xStartSelect;
int xEndSelect;
int caretPolicy;
int caretSlop;
int searchAnchor;
int displayPopupMenu;
#ifdef MACRO_SUPPORT
int recordingMacro;
#endif
int foldFlags;
ContractionState cs;
Document *pdoc;
Editor();
virtual ~Editor();
virtual void Initialise() = 0;
virtual void Finalise();
void InvalidateStyleData();
void InvalidateStyleRedraw();
virtual void RefreshColourPalette(Palette &pal, bool want);
void RefreshStyleData();
void DropGraphics();
PRectangle GetClientRectangle();
PRectangle GetTextRectangle();
int LinesOnScreen();
int LinesToScroll();
int MaxScrollPos();
Point LocationFromPosition(unsigned int pos);
int XFromPosition(unsigned int pos);
int PositionFromLocation(Point pt);
int PositionFromLineX(int line, int x);
int LineFromLocation(Point pt);
void SetTopLine(int topLineNew);
void RedrawRect(PRectangle rc);
void Redraw();
void RedrawSelMargin();
PRectangle RectangleFromRange(int start, int end);
void InvalidateRange(int start, int end);
int CurrentPosition();
bool SelectionEmpty();
int SelectionStart(int line=-1);
int SelectionEnd(int line=-1);
void SetSelection(int currentPos_, int anchor_);
void SetSelection(int currentPos_);
void SetEmptySelection(int currentPos_);
int MovePositionTo(int newPos, bool extend = false);
int MovePositionSoVisible(int pos, int moveDir);
void SetLastXChosen();
void ScrollTo(int line);
virtual void ScrollText(int linesToMove);
void HorizontalScrollTo(int xPos);
void EnsureCaretVisible(bool useMargin=true);
void ShowCaretAtCurrentPosition();
void DropCaret();
void InvalidateCaret();
void PaintSelMargin(Surface *surface, PRectangle &rc);
void LayoutLine(int line, Surface *surface, ViewStyle &vstyle, LineLayout &ll);
void DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int xStart,
PRectangle rcLine, LineLayout &ll);
void Paint(Surface *surfaceWindow, PRectangle rcArea);
long FormatRange(bool draw, FORMATRANGE *pfr);
virtual void SetVerticalScrollPos() = 0;
virtual void SetHorizontalScrollPos() = 0;
virtual bool ModifyScrollBars(int nMax, int nPage) = 0;
void SetScrollBarsTo(PRectangle rsClient);
void SetScrollBars();
virtual void AddChar(char ch);
void ClearSelection();
void ClearAll();
void Cut();
void PasteRectangular(int pos, const char *ptr, int len);
virtual void Copy() = 0;
virtual void Paste() = 0;
void Clear();
void SelectAll();
void Undo();
void Redo();
void DelChar();
void DelCharBack();
virtual void ClaimSelection() = 0;
virtual void NotifyChange() = 0;
virtual void NotifyFocus(bool focus);
virtual void NotifyParent(SCNotification scn) = 0;
virtual void NotifyStyleNeeded(int endStyleNeeded);
void NotifyChar(char ch);
void NotifySavePoint(bool isSavePoint);
void NotifyModifyAttempt();
virtual void NotifyDoubleClick(Point pt, bool shift);
void NotifyUpdateUI();
bool NotifyMarginClick(Point pt, bool shift, bool ctrl, bool alt);
void NotifyNeedShown(int pos, int len);
void NotifyModifyAttempt(Document *document, void *userData);
void NotifySavePoint(Document *document, void *userData, bool atSavePoint);
void NotifyModified(Document *document, DocModification mh, void *userData);
void NotifyDeleted(Document *document, void *userData);
void NotifyStyleNeeded(Document *doc, void *userData, int endPos);
#ifdef MACRO_SUPPORT
void NotifyMacroRecord(UINT iMessage, WPARAM wParam, LPARAM lParam);
#endif
void PageMove(int direction, bool extend=false);
void ChangeCaseOfSelection(bool makeUpperCase);
void LineTranspose();
virtual int KeyCommand(UINT iMessage);
virtual int KeyDefault(int /* key */, int /*modifiers*/);
int KeyDown(int key, bool shift, bool ctrl, bool alt);
bool GetWhitespaceVisible();
void SetWhitespaceVisible(bool view);
void Indent(bool forwards);
long FindText(UINT iMessage,WPARAM wParam,LPARAM lParam);
void SearchAnchor();
long SearchText(UINT iMessage,WPARAM wParam,LPARAM lParam);
void GoToLine(int lineNo);
char *CopyRange(int start, int end);
int SelectionRangeLength();
char *CopySelectionRange();
void CopySelectionIntoDrag();
void SetDragPosition(int newPos);
virtual void StartDrag();
void DropAt(int position, const char *value, bool moving, bool rectangular);
// PositionInSelection returns 0 if position in selection, -1 if position before selection, and 1 if after.
// Before means either before any line of selection or before selection on its line, with a similar meaning to after
int PositionInSelection(int pos);
bool PointInSelection(Point pt);
bool PointInSelMargin(Point pt);
virtual void ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);
void ButtonMove(Point pt);
void ButtonUp(Point pt, unsigned int curTime, bool ctrl);
void Tick();
virtual void SetTicking(bool on) = 0;
virtual void SetMouseCapture(bool on) = 0;
virtual bool HaveMouseCapture() = 0;
void CheckForChangeOutsidePaint(Range r);
int BraceMatch(int position, int maxReStyle);
void SetBraceHighlight(Position pos0, Position pos1, int matchStyle);
void SetDocPointer(Document *document);
void Expand(int &line, bool doExpand);
void ToggleContraction(int line);
void EnsureLineVisible(int line);
virtual LRESULT DefWndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) = 0;
public:
// Public so scintilla_send_message can use it
virtual LRESULT WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam);
// Public so scintilla_set_id can use it
int ctrlID;
};
#endif

View File

@@ -0,0 +1,45 @@
// Scintilla source code edit control
// Indicator.cxx - defines the style of indicators which are text decorations such as underlining
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#include "Platform.h"
#include "Scintilla.h"
#include "Indicator.h"
void Indicator::Draw(Surface *surface, PRectangle &rc) {
surface->PenColour(fore.allocated);
int ymid = (rc.bottom + rc.top) / 2;
if (style == INDIC_SQUIGGLE) {
surface->MoveTo(rc.left, rc.top);
int x = rc.left + 2;
int y = 2;
while (x < rc.right) {
surface->LineTo(x, rc.top + y);
x += 2;
y = 2 - y;
}
surface->LineTo(rc.right, rc.top + y); // Finish the line
} else if (style == INDIC_TT) {
surface->MoveTo(rc.left, ymid);
int x = rc.left + 5;
while (x < rc.right) {
surface->LineTo(x, ymid);
surface->MoveTo(x-3, ymid);
surface->LineTo(x-3, ymid+2);
x++;
surface->MoveTo(x, ymid);
x += 5;
}
surface->LineTo(rc.right, ymid); // Finish the line
if (x - 3 <= rc.right) {
surface->MoveTo(x-3, ymid);
surface->LineTo(x-3, ymid+2);
}
} else { // Either INDIC_PLAIN or unknown
surface->MoveTo(rc.left, ymid);
surface->LineTo(rc.right, ymid);
}
}

View File

@@ -0,0 +1,18 @@
// Scintilla source code edit control
// Indicator.h - defines the style of indicators which are text decorations such as underlining
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef INDICATOR_H
#define INDICATOR_H
class Indicator {
public:
int style;
ColourPair fore;
Indicator() : style(INDIC_PLAIN), fore(Colour(0,0,0)) {
}
void Draw(Surface *surface, PRectangle &rc);
};
#endif

View File

@@ -0,0 +1,116 @@
// Scintilla source code edit control
// KeyMap.cxx - defines a mapping between keystrokes and commands
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#include "Platform.h"
#include "Scintilla.h"
#include "KeyMap.h"
KeyMap::KeyMap() : kmap(0), len(0), alloc(0) {
for (int i = 0; MapDefault[i].key; i++) {
AssignCmdKey(MapDefault[i].key,
MapDefault[i].modifiers,
MapDefault[i].msg);
}
}
KeyMap::~KeyMap() {
Clear();
}
void KeyMap::Clear() {
delete []kmap;
kmap = 0;
len = 0;
alloc = 0;
}
void KeyMap::AssignCmdKey(int key, int modifiers, UINT msg) {
if ((len+1) >= alloc) {
KeyToCommand *ktcNew = new KeyToCommand[alloc + 5];
if (!ktcNew)
return;
for (int k=0;k<len;k++)
ktcNew[k] = kmap[k];
alloc += 5;
delete []kmap;
kmap = ktcNew;
}
for (int keyIndex = 0; keyIndex < len; keyIndex++) {
if ((key == kmap[keyIndex].key) && (modifiers == kmap[keyIndex].modifiers)) {
kmap[keyIndex].msg = msg;
return;
}
}
kmap[len].key = key;
kmap[len].modifiers = modifiers;
kmap[len].msg = msg;
len++;
}
UINT KeyMap::Find(int key, int modifiers) {
for (int i=0; i < len; i++) {
if ((key == kmap[i].key) && (modifiers == kmap[i].modifiers)) {
return kmap[i].msg;
}
}
return 0;
}
KeyToCommand KeyMap::MapDefault[] = {
VK_DOWN, SCI_NORM, SCI_LINEDOWN,
VK_DOWN, SCI_SHIFT, SCI_LINEDOWNEXTEND,
VK_UP, SCI_NORM, SCI_LINEUP,
VK_UP, SCI_SHIFT, SCI_LINEUPEXTEND,
VK_LEFT, SCI_NORM, SCI_CHARLEFT,
VK_LEFT, SCI_SHIFT, SCI_CHARLEFTEXTEND,
VK_LEFT, SCI_CTRL, SCI_WORDLEFT,
VK_LEFT, SCI_CSHIFT, SCI_WORDLEFTEXTEND,
VK_RIGHT, SCI_NORM, SCI_CHARRIGHT,
VK_RIGHT, SCI_SHIFT, SCI_CHARRIGHTEXTEND,
VK_RIGHT, SCI_CTRL, SCI_WORDRIGHT,
VK_RIGHT, SCI_CSHIFT, SCI_WORDRIGHTEXTEND,
VK_HOME, SCI_NORM, SCI_VCHOME,
VK_HOME, SCI_SHIFT, SCI_VCHOMEEXTEND,
VK_HOME, SCI_CTRL, SCI_DOCUMENTSTART,
VK_HOME, SCI_CSHIFT, SCI_DOCUMENTSTARTEXTEND,
VK_END, SCI_NORM, SCI_LINEEND,
VK_END, SCI_SHIFT, SCI_LINEENDEXTEND,
VK_END, SCI_CTRL, SCI_DOCUMENTEND,
VK_END, SCI_CSHIFT, SCI_DOCUMENTENDEXTEND,
VK_PRIOR, SCI_NORM, SCI_PAGEUP,
VK_PRIOR, SCI_SHIFT, SCI_PAGEUPEXTEND,
VK_NEXT, SCI_NORM, SCI_PAGEDOWN,
VK_NEXT, SCI_SHIFT, SCI_PAGEDOWNEXTEND,
VK_DELETE, SCI_NORM, WM_CLEAR,
VK_DELETE, SCI_SHIFT, WM_CUT,
VK_DELETE, SCI_CTRL, SCI_DELWORDRIGHT,
VK_INSERT, SCI_NORM, SCI_EDITTOGGLEOVERTYPE,
VK_INSERT, SCI_SHIFT, WM_PASTE,
VK_INSERT, SCI_CTRL, WM_COPY,
VK_ESCAPE, SCI_NORM, SCI_CANCEL,
VK_BACK, SCI_NORM, SCI_DELETEBACK,
VK_BACK, SCI_CTRL, SCI_DELWORDLEFT,
'Z', SCI_CTRL, WM_UNDO,
'Y', SCI_CTRL, SCI_REDO,
'X', SCI_CTRL, WM_CUT,
'C', SCI_CTRL, WM_COPY,
'V', SCI_CTRL, WM_PASTE,
'A', SCI_CTRL, SCI_SELECTALL,
VK_TAB, SCI_NORM, SCI_TAB,
VK_TAB, SCI_SHIFT, SCI_BACKTAB,
VK_RETURN, SCI_NORM, SCI_NEWLINE,
VK_ADD, SCI_CTRL, SCI_ZOOMIN,
VK_SUBTRACT, SCI_CTRL, SCI_ZOOMOUT,
//'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,
};

View File

@@ -0,0 +1,36 @@
// Scintilla source code edit control
// KeyMap.h - defines a mapping between keystrokes and commands
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef KEYTOCOMMAND_H
#define KEYTOCOMMAND_H
#define SCI_NORM 0
#define SCI_SHIFT SHIFT_PRESSED
#define SCI_CTRL LEFT_CTRL_PRESSED
#define SCI_ALT LEFT_ALT_PRESSED
#define SCI_CSHIFT (SCI_CTRL | SCI_SHIFT)
#define SCI_ASHIFT (SCI_ALT | SCI_SHIFT)
class KeyToCommand {
public:
int key;
int modifiers;
UINT msg;
};
class KeyMap {
KeyToCommand *kmap;
int len;
int alloc;
static KeyToCommand MapDefault[];
public:
KeyMap();
~KeyMap();
void Clear();
void AssignCmdKey(int key, int modifiers, UINT msg);
UINT Find(int key, int modifiers); // 0 returned on failure
};
#endif

View File

@@ -0,0 +1,45 @@
// SciTE - Scintilla based Text Editor
// KeyWords.cxx - colourise for particular languages
// 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"
LexerModule *LexerModule::base = 0;
LexerModule::LexerModule(int language_, LexerFunction fn_) :
language(language_), fn(fn_) {
next = base;
base = this;
}
void LexerModule::Colourise(unsigned int startPos, int lengthDoc, int initStyle,
int language, WordList *keywordlists[], StylingContext &styler) {
LexerModule *lm = base;
while (lm) {
if (lm->language == language) {
lm->fn(startPos, lengthDoc, initStyle, keywordlists, styler);
return;
}
lm = lm->next;
}
// Unknown language
// Null language means all style bytes are 0 so just mark the end - no need to fill in.
if (lengthDoc > 0) {
styler.StartAt(startPos + lengthDoc - 1);
styler.StartSegment(startPos + lengthDoc - 1);
styler.ColourTo(startPos + lengthDoc - 1, 0);
}
}

View File

@@ -0,0 +1,255 @@
// 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, StylingContext &styler) {
char s[100];
bool wordIsNumber = isdigit(styler[start]) || (styler[start] == '.');
bool wordIsUUID = false;
for (unsigned int i = 0; i < end - start + 1 && i < 30; i++) {
s[i] = 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;
wordIsUUID = strcmp(s, "uuid") == 0;
}
}
styler.ColourTo(end, chAttr);
return wordIsUUID;
}
static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, WordList *keywordlists[],
StylingContext &styler) {
WordList &keywords = *keywordlists[0];
styler.StartAt(startPos);
bool fold = styler.GetPropSet().GetInt("fold");
int lineCurrent = styler.GetLine(startPos);
int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;
int levelCurrent = levelPrev;
int state = initStyle;
char chPrev = ' ';
char chNext = styler[startPos];
unsigned int lengthDoc = startPos + length;
int visChars = 0;
styler.StartSegment(startPos);
bool lastWordWasUUID = false;
for (unsigned int i = startPos; i <= lengthDoc; i++) {
char ch = chNext;
chNext = styler.SafeGetCharAt(i + 1);
if ((fold) && ((ch == '\r' && chNext != '\n') || (ch == '\n'))) {
int lev = levelPrev;
if (visChars == 0)
lev |= SC_FOLDLEVELWHITEFLAG;
if ((levelCurrent > levelPrev) && (visChars > 0))
lev |= SC_FOLDLEVELHEADERFLAG;
styler.SetLevel(lineCurrent, lev);
lineCurrent++;
visChars = 0;
levelPrev = levelCurrent;
}
if (!isspace(ch))
visChars++;
if (styler.IsLeadByte(ch)) {
chNext = styler.SafeGetCharAt(i + 2);
chPrev = ' ';
i += 1;
continue;
}
if (state == SCE_C_STRINGEOL) {
if (ch != '\r' && ch != '\n') {
styler.ColourTo(i-1, state);
state = SCE_C_DEFAULT;
}
}
if (state == SCE_C_DEFAULT) {
if (iswordstart(ch)) {
styler.ColourTo(i-1, state);
if (lastWordWasUUID) {
state = SCE_C_UUID;
lastWordWasUUID = false;
} else {
state = SCE_C_WORD;
}
} 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 == '#') {
styler.ColourTo(i-1, state);
state = SCE_C_PREPROCESSOR;
} 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_WORD) {
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 (ch == '#') {
state = SCE_C_PREPROCESSOR;
} else if (isoperator(ch)) {
styler.ColourTo(i, SCE_C_OPERATOR);
if ((ch == '{') || (ch == '}')) {
levelCurrent += (ch == '{') ? 1 : -1;
}
}
}
} else {
if (state == SCE_C_PREPROCESSOR) {
if ((ch == '\r' || ch == '\n') && (chPrev != '\\')) {
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() + 3) || (
(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 == '\r' || ch == '\n') && (chPrev != '\\')) {
styler.ColourTo(i-1, state);
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;
i++;
ch = chNext;
chNext = styler.SafeGetCharAt(i + 1);
}
} else if (state == SCE_C_CHARACTER) {
if ((ch == '\r' || ch == '\n') && (chPrev != '\\')) {
styler.ColourTo(i-1, state);
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;
i++;
ch = chNext;
chNext = styler.SafeGetCharAt(i + 1);
}
} else if (state == SCE_C_UUID) {
if (ch == '\r' || ch == '\n' || ch == ')') {
styler.ColourTo(i-1, state);
state = SCE_C_DEFAULT;
}
}
if (state == SCE_C_DEFAULT) { // One of the above succeeded
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 (ch == '#') {
state = SCE_C_PREPROCESSOR;
} else if (iswordstart(ch)) {
state = SCE_C_WORD;
} else if (isoperator(ch)) {
styler.ColourTo(i, SCE_C_OPERATOR);
if ((ch == '{') || (ch == '}')) {
levelCurrent += (ch == '{') ? 1 : -1;
}
}
}
}
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);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,200 @@
// 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, StylingContext &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 *[], StylingContext &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 ColourisePropsLine(char *lineBuffer, int lengthLine, int startLine, int endPos, StylingContext &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 *[], StylingContext &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, StylingContext &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 *[], StylingContext &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, StylingContext &styler) {
if (lineBuffer[0] == '>') {
// Command or return status
styler.ColourTo(endPos, 4);
} else if (strstr(lineBuffer, "File \"") && strstr(lineBuffer, ", line ")) {
styler.ColourTo(endPos, 1);
} else if (0 == strncmp(lineBuffer, "Error ", strlen("Error "))) {
// Borland error message
styler.ColourTo(endPos, 5);
} else if (0 == strncmp(lineBuffer, "Warning ", strlen("Warning "))) {
// Borland warning message
styler.ColourTo(endPos, 5);
} 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;
break;
} 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, 2);
} else if ((state == 14) || (state == 15)) {
styler.ColourTo(endPos, 3);
} else {
styler.ColourTo(endPos, 0);
}
}
}
static void ColouriseErrorListDoc(unsigned int startPos, int length, int, WordList *[], StylingContext &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);
}
LexerModule lmProps(SCLEX_PROPERTIES, ColourisePropsDoc);
LexerModule lmErrorList(SCLEX_ERRORLIST, ColouriseErrorListDoc);
LexerModule lmMake(SCLEX_MAKEFILE, ColouriseMakeDoc);
LexerModule lmBatch(SCLEX_BATCH, ColouriseBatchDoc);

View File

@@ -0,0 +1,488 @@
// 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, StylingContext &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(StylingContext &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 bool isOKQuote(char ch) {
if (isalnum(ch))
return false;
if (isspace(ch))
return false;
if (iscntrl(ch))
return false;
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[], StylingContext &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 = ' ';
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 == '=' && 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) && quotes < 2) {
sooked[sookedpos++] = ch;
sooked[sookedpos] = '\0';
if (quotes == 0)
quotes = 1;
} else {
quotes++;
}
if (quotes > 1 && isMatch(styler, lengthDoc, i, sooked)) {
styler.ColourTo(i + sookedpos - 1, SCE_PL_HERE);
state = SCE_PL_DEFAULT;
i += sookedpos;
chNext = ' ';
}
} 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 == '=') {
if (isMatch(styler, lengthDoc, i, "=cut")) {
styler.ColourTo(i - 1 + 4, state);
i += 4;
state = SCE_PL_DEFAULT;
chNext = ' ';
ch = ' ';
}
}
} 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 (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);

View File

@@ -0,0 +1,254 @@
// 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, StylingContext &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;
styler.ColourTo(end, chAttr);
strcpy(prevWord, s);
}
static bool IsPyComment(StylingContext &styler, int pos, int len) {
return len>0 && styler[pos]=='#';
}
static void ColourisePyDoc(unsigned int startPos, int length, int initStyle,
WordList *keywordlists[], StylingContext &styler) {
// Python uses a different mask because bad indentation is marked by oring with 32
styler.StartAt(startPos, 127);
WordList &keywords = *keywordlists[0];
//Platform::DebugPrintf("Python coloured\n");
bool fold = styler.GetPropSet().GetInt("fold");
int whingeLevel = styler.GetPropSet().GetInt("tab.timmy.whinge.level");
char prevWord[200];
prevWord[0] = '\0';
if (length == 0)
return ;
int lineCurrent = styler.GetLine(startPos);
int spaceFlags = 0;
// TODO: Need to check previous line for indentation for both folding and bad indentation
int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, IsPyComment);
int state = initStyle & 31;
char chPrev = ' ';
char chPrev2 = ' ';
char chNext = styler[startPos];
char chNext2 = styler[startPos];
styler.StartSegment(startPos);
int lengthDoc = startPos + length;
bool atStartLine = true;
for (int i = startPos; i <= lengthDoc; i++) {
if (atStartLine) {
if (whingeLevel == 1) {
styler.SetFlags((spaceFlags & wsInconsistent) ? 64 : 0, state);
} else if (whingeLevel == 2) {
styler.SetFlags((spaceFlags & wsSpaceTab) ? 64 : 0, state);
} else if (whingeLevel == 3) {
styler.SetFlags((spaceFlags & wsSpace) ? 64 : 0, state);
} else if (whingeLevel == 4) {
styler.SetFlags((spaceFlags & wsTab) ? 64 : 0, state);
}
atStartLine = false;
}
char ch = chNext;
chNext = styler.SafeGetCharAt(i + 1);
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 (!(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);

View File

@@ -0,0 +1,158 @@
// 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, StylingContext &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] = 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[], StylingContext &styler) {
WordList &keywords = *keywordlists[0];
styler.StartAt(startPos);
bool fold = styler.GetPropSet().GetInt("fold");
int lineCurrent = styler.GetLine(startPos);
int spaceFlags = 0;
int indentCurrent = 0;
int state = initStyle;
char chPrev = ' ';
char chNext = styler[startPos];
styler.StartSegment(startPos);
unsigned int lengthDoc = startPos + length;
bool prevCr = false;
for (unsigned int i = startPos; i <= lengthDoc; i++) {
char ch = chNext;
chNext = styler.SafeGetCharAt(i + 1);
if ((ch == '\r' && chNext != '\n') || (ch == '\n')) {
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);

View File

@@ -0,0 +1,118 @@
// 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, StylingContext &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] = tolower(styler[start + i]);
s[i + 1] = '\0';
}
char chAttr = SCE_C_DEFAULT;
if (wordIsNumber)
chAttr = SCE_C_NUMBER;
else {
if (keywords.InList(s)) {
chAttr = SCE_C_WORD;
if (strcmp(s, "rem") == 0)
chAttr = SCE_C_COMMENTLINE;
}
}
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[], StylingContext &styler) {
WordList &keywords = *keywordlists[0];
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 += 1;
continue;
}
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 (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 (state == SCE_C_COMMENTLINE) {
if (ch == '\r' || ch == '\n') {
styler.ColourTo(i - 1, state);
state = SCE_C_DEFAULT;
}
} 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);

View File

@@ -0,0 +1,125 @@
// Scintilla source code edit control
// LineMarker.cxx - defines the look of a line marker in the margin
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#include "Platform.h"
#include "Scintilla.h"
#include "LineMarker.h"
void LineMarker::Draw(Surface *surface, PRectangle &rc) {
int minDim = Platform::Minimum(rc.Width(), rc.Height());
minDim--; // Ensure does not go beyond edge
int centreX = (rc.right + rc.left) / 2;
int centreY = (rc.bottom + rc.top) / 2;
int dimOn2 = minDim / 2;
int dimOn4 = minDim / 4;
if (rc.Width() > (rc.Height() * 2)) {
// Wide column is line number so move to left to try to avoid overlapping number
centreX = rc.left + dimOn2 + 1;
}
if (markType == SC_MARK_ROUNDRECT) {
PRectangle rcRounded = rc;
rcRounded.left = rc.left + 1;
rcRounded.right = rc.right - 1;
surface->RoundedRectangle(rcRounded, fore.allocated, back.allocated);
} else if (markType == SC_MARK_CIRCLE) {
PRectangle rcCircle;
rcCircle.left = centreX - dimOn2;
rcCircle.top = centreY - dimOn2;
rcCircle.right = centreX + dimOn2;
rcCircle.bottom = centreY + dimOn2;
surface->Ellipse(rcCircle, fore.allocated, back.allocated);
} else if (markType == SC_MARK_ARROW) {
Point pts[] = {
Point(centreX - dimOn4, centreY - dimOn2),
Point(centreX - dimOn4, centreY + dimOn2),
Point(centreX + dimOn2 - dimOn4, centreY),
};
surface->Polygon(pts, sizeof(pts) / sizeof(pts[0]),
fore.allocated, back.allocated);
} else if (markType == SC_MARK_ARROWDOWN) {
Point pts[] = {
Point(centreX - dimOn2, centreY - dimOn4),
Point(centreX + dimOn2, centreY - dimOn4),
Point(centreX, centreY + dimOn2 - dimOn4),
};
surface->Polygon(pts, sizeof(pts) / sizeof(pts[0]),
fore.allocated, back.allocated);
} else if (markType == SC_MARK_PLUS) {
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(centreX - armSize, centreY - 1),
Point(centreX - 1, centreY - 1),
Point(centreX - 1, centreY - armSize),
Point(centreX + 1, centreY - armSize),
Point(centreX + 1, centreY - 1),
Point(centreX + armSize, centreY -1),
Point(centreX + armSize, centreY +1),
Point(centreX + 1, centreY + 1),
Point(centreX + 1, centreY + armSize),
Point(centreX - 1, centreY + armSize),
Point(centreX - 1, centreY + 1),
Point(centreX - armSize, centreY + 1),
};
surface->Polygon(pts, sizeof(pts) / sizeof(pts[0]),
fore.allocated, back.allocated);
} else if (markType == SC_MARK_MINUS) {
int armSize = dimOn2-2;
Point pts[] = {
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]),
fore.allocated, back.allocated);
} else if (markType == SC_MARK_SMALLRECT) {
PRectangle rcSmall;
rcSmall.left = rc.left + 1;
rcSmall.top = rc.top + 2;
rcSmall.right = rc.right - 1;
rcSmall.bottom = rc.bottom - 2;
surface->RectangleDraw(rcSmall, fore.allocated, back.allocated);
} else if (markType == SC_MARK_EMPTY) {
// An invisible marker so don't draw anything
} else { // SC_MARK_SHORTARROW
Point pts[] = {
Point(centreX, centreY + dimOn2),
Point(centreX + dimOn2, centreY),
Point(centreX, centreY - dimOn2),
Point(centreX, centreY - dimOn4),
Point(centreX - dimOn4, centreY - dimOn4),
Point(centreX - dimOn4, centreY + dimOn4),
Point(centreX, centreY + dimOn4),
Point(centreX, centreY + dimOn2),
};
surface->Polygon(pts, sizeof(pts) / sizeof(pts[0]),
fore.allocated, back.allocated);
}
}

View File

@@ -0,0 +1,22 @@
// Scintilla source code edit control
// LineMarker.h - defines the look of a line marker in the margin
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef LINEMARKER_H
#define LINEMARKER_H
class LineMarker {
public:
int markType;
ColourPair fore;
ColourPair back;
LineMarker() {
markType = SC_MARK_CIRCLE;
fore = Colour(0,0,0);
back = Colour(0xff,0xff,0xff);
}
void Draw(Surface *surface, PRectangle &rc);
};
#endif

View File

@@ -0,0 +1,404 @@
// SciTE - Scintilla based Text Editor
// PropSet.cxx - a java style properties file module
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
// Maintain a dictionary of properties
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include "Platform.h"
#include "PropSet.h"
bool EqualCaseInsensitive(const char *a, const char *b) {
#if PLAT_GTK
return 0 == strcasecmp(a, b);
#elif PLAT_WIN
return 0 == stricmp(a, b);
#elif PLAT_WX
return 0 == wxStricmp(a, b);
#endif
}
// 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) {
bool continuation = true;
s[0] = '\0';
while ((len > 1) && lenData > 0) {
char ch = *fpc;
fpc++;
lenData--;
if ((ch == '\r') || (ch == '\n')) {
if (!continuation) {
if ((lenData > 0) && (ch == '\r') && ((*fpc) == '\n')) {
// munch the second half of a crlf
fpc++;
lenData--;
}
*s++ = '\0';
return true;
}
} else if ((ch == '\\') && (lenData > 0) && ((*fpc == '\r') || (*fpc == '\n'))) {
continuation = true;
} else {
continuation = false;
*s++ = ch;
*s = '\0';
len--;
}
}
return false;
}
PropSet::PropSet() {
superPS = 0;
size = 10;
used = 0;
vals = new char * [size];
}
PropSet::~PropSet() {
superPS = 0;
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) {
EnsureCanAddEntry();
for (int i = 0; i < used; i += 2) {
if (EqualCaseInsensitive(vals[i], key)) {
// Replace current value
delete [](vals[i + 1]);
vals[i + 1] = StringDup(val);
return;
}
}
// Not found
vals[used++] = StringDup(key);
vals[used++] = StringDup(val);
}
void PropSet::Set(char *keyval) {
char *eqat = strchr(keyval, '=');
if (eqat) {
*eqat = '\0';
Set(keyval, eqat + 1);
*eqat = '=';
}
}
SString PropSet::Get(const char *key) {
for (int i = 0; i < used; i += 2) {
if (EqualCaseInsensitive(vals[i], key)) {
return vals[i + 1];
}
}
if (superPS) {
// Failed here, so try in base property set
return superPS->Get(key);
} else {
return "";
}
}
int PropSet::GetInt(const char *key, int defaultValue) {
SString val = Get(key);
if (val.length())
return Get(key).value();
else
return defaultValue;
}
bool isprefix(const char *target, const char *prefix) {
while (*target && *prefix) {
if (toupper(*target) != toupper(*prefix))
return false;
target++;
prefix++;
}
if (*prefix)
return false;
else
return true;
}
bool issuffix(const char *target, const char *suffix) {
int lentarget = strlen(target);
int lensuffix = strlen(suffix);
if (lensuffix > lentarget)
return false;
for (int i = lensuffix - 1; i >= 0; i--) {
if (toupper(target[i + lentarget - lensuffix]) != toupper(suffix[i]))
return false;
}
return true;
}
SString PropSet::GetWild(const char *keybase, const char *filename) {
for (int i = 0; i < used; i += 2) {
if (isprefix(vals[i], keybase)) {
char *orgkeyfile = vals[i] + strlen(keybase);
char *keyfile = NULL;
if (strstr(orgkeyfile, "$(") == orgkeyfile) {
char *cpendvar = strchr(orgkeyfile, ')');
if (cpendvar) {
int lenvar = cpendvar - orgkeyfile - 2; // Subtract the $()
char *var = static_cast<char *>(malloc(lenvar + 1));
strncpy(var, orgkeyfile + 2, lenvar);
var[lenvar] = '\0';
SString s = Get(var);
free(var);
keyfile = strdup(s.c_str());
}
}
char *keyptr = keyfile;
if (keyfile == NULL)
keyfile = orgkeyfile;
for (; ; ) {
char *del = strchr(keyfile, ';');
if (del == NULL)
del = keyfile + strlen(keyfile);
char delchr = *del;
*del = '\0';
if (*keyfile == '*') {
if (issuffix(filename, keyfile + 1)) {
*del = delchr;
free(keyptr);
return vals[i + 1];
}
} else if (EqualCaseInsensitive(keyfile, filename)) {
*del = delchr;
free(keyptr);
return vals[i + 1];
}
if (delchr == '\0')
break;
*del = delchr;
keyfile = del + 1;
}
free(keyptr);
if (EqualCaseInsensitive(vals[i], keybase)) {
return vals[i + 1];
}
}
}
if (superPS) {
// Failed here, so try in base property set
return superPS->GetWild(keybase, filename);
} else {
return "";
}
}
SString PropSet::GetNewExpand(const char *keybase, const char *filename) {
char *base = StringDup(GetWild(keybase, filename).c_str());
char *cpvar = strstr(base, "$(");
while (cpvar) {
char *cpendvar = strchr(cpvar, ')');
if (cpendvar) {
int lenvar = cpendvar - cpvar - 2; // Subtract the $()
char *var = new char[lenvar + 1];
strncpy(var, cpvar + 2, lenvar);
var[lenvar] = '\0';
SString val = GetWild(var, filename);
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;
}
void PropSet::Clear() {
for (int i = 0; i < used; i++) {
delete [](vals[i]);
vals[i] = 0;
}
used = 0;
}
void PropSet::ReadFromMemory(const char *data, int len) {
if (len > 0) {
const char *pd = data;
char linebuf[60000];
while (GetFullLine(pd, len, linebuf, sizeof(linebuf))) {
if (isalpha(linebuf[0]))
Set(linebuf);
}
// If there is a final line:
if (isalpha(linebuf[0]))
Set(linebuf);
}
}
void PropSet::Read(const char *filename) {
//printf("Opening properties <%s>\n", filename);
Clear();
char propsData[60000];
FILE *rcfile = fopen(filename, "rb");
if (rcfile) {
int lenFile = fread(propsData, 1, sizeof(propsData), rcfile);
fclose(rcfile);
ReadFromMemory(propsData, lenFile);
} else {
//printf("Could not open <%s>\n", filename);
}
}
static bool iswordsep(char ch, bool onlyLineEnds) {
if (!isspace(ch))
return false;
if (!onlyLineEnds)
return true;
return ch == '\r' || ch == '\n';
}
// Creates an array that points into each word in the string and puts \0 terminators
// after each word.
static char **ArrayFromWordList(char *wordlist, bool onlyLineEnds = false) {
char prev = '\n';
int words = 0;
for (int j = 0; wordlist[j]; j++) {
if (!iswordsep(wordlist[j], onlyLineEnds) && iswordsep(prev, onlyLineEnds))
words++;
prev = wordlist[j];
}
char **keywords = new char * [words + 1];
if (keywords) {
words = 0;
prev = '\0';
int len = strlen(wordlist);
for (int k = 0; k < len; k++) {
if (!iswordsep(wordlist[k], onlyLineEnds)) {
if (!prev) {
keywords[words] = &wordlist[k];
words++;
}
} else {
wordlist[k] = '\0';
}
prev = wordlist[k];
}
keywords[words] = &wordlist[len];
}
return keywords;
}
void WordList::Clear() {
if (words) {
delete []words;
delete []list;
}
words = 0;
list = 0;
len = 0;
}
void WordList::Set(const char *s) {
len = 0;
list = StringDup(s);
words = ArrayFromWordList(list, onlyLineEnds);
}
char *WordList::Allocate(int size) {
list = new char[size + 1];
list[size] = '\0';
return list;
}
void WordList::SetFromAllocated() {
len = 0;
words = ArrayFromWordList(list, onlyLineEnds);
}
// Shell sort based upon public domain C implementation by Raymond Gardner 1991
// Used here because of problems with mingw qsort.
static void SortWordList(char **words, unsigned int len) {
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;
}
}
bool WordList::InList(const char *s) {
if (0 == words)
return false;
if (len == 0) {
for (int i = 0; words[i][0]; i++)
len++;
SortWordList(words, len);
for (int k = 0; k < (sizeof(starts) / sizeof(starts[0])); k++)
starts[k] = -1;
for (int l = len - 1; l >= 0; l--) {
unsigned char indexChar = words[l][0];
starts[indexChar] = l;
}
}
unsigned char firstChar = s[0];
int j = starts[firstChar];
if (j >= 0) {
while (words[j][0] == firstChar) {
if (s[1] == words[j][1]) {
const char *a = words[j] + 1;
const char *b = s + 1;
while (*a && *a == *b) {
a++;
b++;
}
if (!*a && !*b)
return true;
}
j++;
}
}
return false;
}

View File

@@ -0,0 +1,110 @@
// Scintilla source code edit control
// SVector.h - a simple expandable vector
// Copyright 1998-1999 by Neil Hodgson <neilh@hare.net.au>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef SVECTOR_H
#define SVECTOR_H
// A simple expandable vector.
// T must support assignment.
// 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.
template<class T, int sizeIncrement>
class SVector {
T *v;
unsigned int size; // Number of elements allocated
unsigned int len; // Number of elements in vector
bool allocFailure; // A memory allocation call has failed
// Internally allocate more elements than the user wants to avoid
// thrashng the memory allocator
void SizeTo(int newSize) {
if (newSize < sizeIncrement)
newSize += sizeIncrement;
else
newSize = (newSize * 3) / 2;
T* newv = new T[newSize];
if (!newv) {
allocFailure = true;
return;
}
size = newSize;
for (unsigned int i=0; i<len; i++) {
newv[i] = v[i];
}
delete []v;
v = newv;
}
public:
SVector() {
allocFailure = false;
v = 0;
len = 0;
size = 0;
}
~SVector() {
Free();
}
SVector(const SVector &other) {
allocFailure = false;
v = 0;
len = 0;
size = 0;
if (other.Length() > 0) {
SizeTo(other.Length());
if (!allocFailure) {
for (int i=0;i<other.Length();i++)
v[i] = other.v[i];
len = other.Length();
}
}
}
SVector &operator=(const SVector &other) {
if (this != &other) {
delete []v;
allocFailure = false;
v = 0;
len = 0;
size = 0;
if (other.Length() > 0) {
SizeTo(other.Length());
if (!allocFailure) {
for (int i=0;i<other.Length();i++)
v[i] = other.v[i];
}
len = other.Length();
}
}
return *this;
}
T &operator[](unsigned int i) {
if (i >= len) {
if (i >= size) {
SizeTo(i);
}
len = i+1;
}
return v[i];
}
void Free() {
delete []v;
v = 0;
size = 0;
len = 0;
}
void SetLength(unsigned int newLength) {
if (newLength > len) {
if (newLength >= size) {
SizeTo(newLength);
}
}
len = newLength;
}
int Length() const {
return len;
}
};
#endif

View File

@@ -0,0 +1,398 @@
// Scintilla source code edit control
// ScintillaBase.cxx - an enhanced subclass of Editor with calltips, autocomplete and context menu
// 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 <stdio.h>
#include <ctype.h>
#include "Platform.h"
#include "Scintilla.h"
#ifdef SCI_LEXER
#include "SciLexer.h"
#include "PropSet.h"
#include "Accessor.h"
#include "KeyWords.h"
#endif
#include "ContractionState.h"
#include "SVector.h"
#include "CellBuffer.h"
#include "CallTip.h"
#include "KeyMap.h"
#include "Indicator.h"
#include "LineMarker.h"
#include "Style.h"
#include "ViewStyle.h"
#include "AutoComplete.h"
#include "Document.h"
#include "Editor.h"
#include "ScintillaBase.h"
ScintillaBase::ScintillaBase() {
#ifdef SCI_LEXER
lexLanguage = SCLEX_CONTAINER;
for (int wl=0;wl<numWordLists;wl++)
keyWordLists[wl] = new WordList;
#endif
}
ScintillaBase::~ScintillaBase() {}
void ScintillaBase::Finalise() {
popup.Destroy();
}
void ScintillaBase::RefreshColourPalette(Palette &pal, bool want) {
Editor::RefreshColourPalette(pal, want);
ct.RefreshColourPalette(pal, want);
}
void ScintillaBase::AddChar(char ch) {
bool acActiveBeforeCharAdded = ac.Active();
Editor::AddChar(ch);
if (acActiveBeforeCharAdded)
AutoCompleteChanged(ch);
}
void ScintillaBase::Command(int cmdId) {
switch (cmdId) {
case idAutoComplete: // Nothing to do
break;
case idCallTip: // Nothing to do
break;
case idcmdUndo:
WndProc(WM_UNDO, 0, 0);
break;
case idcmdRedo:
WndProc(SCI_REDO, 0, 0);
break;
case idcmdCut:
WndProc(WM_CUT, 0, 0);
break;
case idcmdCopy:
WndProc(WM_COPY, 0, 0);
break;
case idcmdPaste:
WndProc(WM_PASTE, 0, 0);
break;
case idcmdDelete:
WndProc(WM_CLEAR, 0, 0);
break;
case idcmdSelectAll:
WndProc(SCI_SELECTALL, 0, 0);
break;
}
}
int ScintillaBase::KeyCommand(UINT iMessage) {
// Most key commands cancel autocompletion mode
if (ac.Active()) {
switch (iMessage) {
// Except for these
case SCI_LINEDOWN:
AutoCompleteMove(1);
return 0;
case SCI_LINEUP:
AutoCompleteMove( -1);
return 0;
case SCI_PAGEDOWN:
AutoCompleteMove(5);
return 0;
case SCI_PAGEUP:
AutoCompleteMove( -5);
return 0;
case SCI_VCHOME:
AutoCompleteMove( -5000);
return 0;
case SCI_LINEEND:
AutoCompleteMove(5000);
return 0;
case SCI_DELETEBACK:
DelCharBack();
AutoCompleteChanged();
EnsureCaretVisible();
return 0;
case SCI_TAB:
AutoCompleteCompleted();
return 0;
default:
ac.Cancel();
}
}
if (ct.inCallTipMode) {
if (
(iMessage != SCI_CHARLEFT) &&
(iMessage != SCI_CHARLEFTEXTEND) &&
(iMessage != SCI_CHARRIGHT) &&
(iMessage != SCI_CHARLEFTEXTEND) &&
(iMessage != SCI_EDITTOGGLEOVERTYPE) &&
(iMessage != SCI_DELETEBACK)
) {
ct.CallTipCancel();
}
if (iMessage == SCI_DELETEBACK) {
if (currentPos <= ct.posStartCallTip) {
ct.CallTipCancel();
}
}
}
return Editor::KeyCommand(iMessage);
}
void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) {
//Platform::DebugPrintf("AutoCOmplete %s\n", list);
ct.CallTipCancel();
ac.Start(wDraw, idAutoComplete, currentPos, lenEntered);
PRectangle rcClient = GetClientRectangle();
Point pt = LocationFromPosition(currentPos-lenEntered);
//Platform::DebugPrintf("Auto complete %x\n", lbAutoComplete);
int heightLB = 100;
int widthLB = 100;
if (pt.x >= rcClient.right - widthLB) {
HorizontalScrollTo(xOffset + pt.x - rcClient.right + widthLB);
Redraw();
pt = LocationFromPosition(currentPos);
}
PRectangle rcac;
rcac.left = pt.x - 5;
if (pt.y >= rcClient.bottom - heightLB && // Wont fit below.
pt.y >= (rcClient.bottom + rcClient.top) / 2) { // and there is more room above.
rcac.top = pt.y - heightLB;
if (rcac.top < 0) {
heightLB += rcac.top;
rcac.top = 0;
}
} else {
rcac.top = pt.y + vs.lineHeight;
}
rcac.right = rcac.left + widthLB;
rcac.bottom = Platform::Minimum(rcac.top + heightLB, rcClient.bottom);
ac.lb.SetPositionRelative(rcac, wMain);
ac.lb.SetFont(vs.styles[0].font);
int maxStrLen = ac.SetList(list);
// 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();
int heightAlloced = rcList.bottom - rcList.top;
// Make an allowance for large strings in list
rcList.left = pt.x - 5;
rcList.right = rcList.left + Platform::Maximum(widthLB, maxStrLen * 8 + 16);
if (pt.y >= rcClient.bottom - heightLB && // Wont fit below.
pt.y >= (rcClient.bottom + rcClient.top) / 2) { // and there is more room above.
rcList.top = pt.y - heightAlloced;
} else {
rcList.top = pt.y + vs.lineHeight;
}
rcList.bottom = rcList.top + heightAlloced;
ac.lb.SetPositionRelative(rcList, wMain);
//lbAutoComplete.SetPosition(rcList);
ac.Show();
}
void ScintillaBase::AutoCompleteCancel() {
ac.Cancel();
}
void ScintillaBase::AutoCompleteMove(int delta) {
ac.Move(delta);
}
void ScintillaBase::AutoCompleteChanged(char ch) {
if (currentPos <= ac.posStart) {
ac.Cancel();
} else if (ac.IsStopChar(ch)) {
ac.Cancel();
} else {
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::AutoCompleteCompleted() {
int item = ac.lb.GetSelection();
char selected[200];
if (item != -1) {
ac.lb.GetValue(item, selected, sizeof(selected));
}
ac.Cancel();
if (currentPos != ac.posStart) {
pdoc->DeleteChars(ac.posStart, currentPos - ac.posStart);
}
SetEmptySelection(ac.posStart);
if (item != -1) {
pdoc->InsertString(currentPos, selected + ac.startLen);
SetEmptySelection(currentPos + strlen(selected + ac.startLen));
}
}
void ScintillaBase::ContextMenu(Point pt) {
popup.CreatePopUp();
AddToPopUp("Undo", idcmdUndo, pdoc->CanUndo());
AddToPopUp("Redo", idcmdRedo, pdoc->CanRedo());
AddToPopUp("");
AddToPopUp("Cut", idcmdCut, currentPos != anchor);
AddToPopUp("Copy", idcmdCopy, currentPos != anchor);
AddToPopUp("Paste", idcmdPaste, WndProc(EM_CANPASTE, 0, 0));
AddToPopUp("Delete", idcmdDelete, currentPos != anchor);
AddToPopUp("");
AddToPopUp("Select All", idcmdSelectAll);
popup.Show(pt, wMain);
}
void ScintillaBase::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) {
AutoCompleteCancel();
ct.CallTipCancel();
Editor::ButtonDown(pt, curTime, shift, ctrl, alt);
}
#ifdef SCI_LEXER
void ScintillaBase::Colourise(int start, int end) {
int lengthDoc = Platform::SendScintilla(wMain.GetID(), SCI_GETLENGTH, 0, 0);
if (end == -1)
end = lengthDoc;
int len = end - start;
StylingContext styler(wMain.GetID(), props);
int styleStart = 0;
if (start > 0)
styleStart = styler.StyleAt(start - 1);
styler.SetCodePage(pdoc->dbcsCodePage);
LexerModule::Colourise(start, len, styleStart, lexLanguage, keyWordLists, styler);
styler.Flush();
}
#endif
void ScintillaBase::NotifyStyleNeeded(int endStyleNeeded) {
#ifdef SCI_LEXER
if (lexLanguage != SCLEX_CONTAINER) {
int endStyled = Platform::SendScintilla(wMain.GetID(), SCI_GETENDSTYLED, 0, 0);
int lineEndStyled = Platform::SendScintilla(wMain.GetID(), EM_LINEFROMCHAR, endStyled, 0);
endStyled = Platform::SendScintilla(wMain.GetID(), EM_LINEINDEX, lineEndStyled, 0);
Colourise(endStyled, endStyleNeeded);
return;
}
#endif
Editor::NotifyStyleNeeded(endStyleNeeded);
}
LRESULT ScintillaBase::WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) {
switch (iMessage) {
case SCI_AUTOCSHOW:
AutoCompleteStart(wParam, reinterpret_cast<const char *>(lParam));
break;
case SCI_AUTOCCANCEL:
AutoCompleteCancel();
break;
case SCI_AUTOCACTIVE:
return ac.Active();
case SCI_AUTOCPOSSTART:
return ac.posStart;
case SCI_AUTOCCOMPLETE:
AutoCompleteCompleted();
break;
case SCI_AUTOCSTOPS:
ac.SetStopChars(reinterpret_cast<char *>(lParam));
break;
case SCI_CALLTIPSHOW: {
AutoCompleteCancel();
if (!ct.wCallTip.Created()) {
PRectangle rc = ct.CallTipStart(currentPos, LocationFromPosition(wParam),
reinterpret_cast<char *>(lParam),
vs.styles[0].fontName, vs.styles[0].size);
// If the call-tip window would be out of the client
// space, adjust so it displays above the text.
PRectangle rcClient = GetClientRectangle();
if (rc.bottom > rcClient.bottom) {
int offset = vs.lineHeight + rc.Height();
rc.top -= offset;
rc.bottom -= offset;
}
// Now display the window.
CreateCallTipWindow(rc);
ct.wCallTip.SetPositionRelative(rc, wDraw);
ct.wCallTip.Show();
}
}
break;
case SCI_CALLTIPCANCEL:
ct.CallTipCancel();
break;
case SCI_CALLTIPACTIVE:
return ct.inCallTipMode;
case SCI_CALLTIPPOSSTART:
return ct.posStartCallTip;
case SCI_CALLTIPSETHLT:
ct.SetHighlight(wParam, lParam);
break;
case SCI_CALLTIPSETBACK:
ct.colourBG = Colour(wParam);
InvalidateStyleRedraw();
break;
#ifdef SCI_LEXER
case SCI_SETLEXER:
lexLanguage = wParam;
break;
case SCI_GETLEXER:
return lexLanguage;
case SCI_COLOURISE:
Colourise(wParam, lParam);
break;
case SCI_SETPROPERTY:
props.Set(reinterpret_cast<const char *>(wParam),
reinterpret_cast<const char *>(lParam));
break;
case SCI_SETKEYWORDS:
if ((wParam >= 0) && (wParam < numWordLists)) {
keyWordLists[wParam]->Clear();
keyWordLists[wParam]->Set(reinterpret_cast<const char *>(lParam));
}
break;
#endif
default:
return Editor::WndProc(iMessage, wParam, lParam);
}
return 0l;
}

View File

@@ -0,0 +1,68 @@
// Scintilla source code edit control
// ScintillaBase.h - defines an enhanced subclass of Editor with calltips, autocomplete and context menu
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef SCINTILLABASE_H
#define SCINTILLABASE_H
class ScintillaBase : public Editor {
protected:
// Enumeration of commands and child windows
enum {
idCallTip=1,
idAutoComplete=2,
idcmdUndo=10,
idcmdRedo=11,
idcmdCut=12,
idcmdCopy=13,
idcmdPaste=14,
idcmdDelete=15,
idcmdSelectAll=16
};
Menu popup;
AutoComplete ac;
CallTip ct;
#ifdef SCI_LEXER
int lexLanguage;
PropSet props;
enum {numWordLists=5};
WordList *keyWordLists[numWordLists];
void Colourise(int start, int end);
#endif
ScintillaBase();
virtual ~ScintillaBase();
virtual void Initialise() = 0;
virtual void Finalise() = 0;
virtual void RefreshColourPalette(Palette &pal, bool want);
virtual void AddChar(char ch);
void Command(int cmdId);
virtual int KeyCommand(UINT iMessage);
void AutoCompleteStart(int lenEntered, const char *list);
void AutoCompleteCancel();
void AutoCompleteMove(int delta);
void AutoCompleteChanged(char ch=0);
void AutoCompleteCompleted();
virtual void CreateCallTipWindow(PRectangle rc) = 0;
virtual void AddToPopUp(const char *label, int cmd=0, bool enabled=true) = 0;
void ContextMenu(Point pt);
virtual void ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);
virtual void NotifyStyleNeeded(int endStyleNeeded);
public:
// Public so scintilla_send_message can use it
virtual LRESULT WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam);
};
#endif

View File

@@ -0,0 +1,101 @@
// Scintilla source code edit control
// Style.cxx - defines the font and colour style for a class of text
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#include <string.h>
#include "Platform.h"
#include "Style.h"
Style::Style() {
aliasOfDefaultFont = true;
Clear(Colour(0,0,0), Colour(0xff,0xff,0xff),
Platform::DefaultFontSize(), 0,
false, false, false);
}
Style::~Style() {
if (aliasOfDefaultFont)
font.SetID(0);
else
font.Release();
aliasOfDefaultFont = false;
}
Style &Style::operator=(const Style &source) {
if (this == &source)
return *this;
Clear(Colour(0,0,0), Colour(0xff,0xff,0xff),
0, 0,
false, false, false);
fore.desired = source.fore.desired;
back.desired = source.back.desired;
bold = source.bold;
italic = source.italic;
size = source.size;
eolFilled = source.eolFilled;
return *this;
}
void Style::Clear(Colour fore_, Colour back_, int size_, const char *fontName_,
bool bold_, bool italic_, bool eolFilled_) {
fore.desired = fore_;
back.desired = back_;
bold = bold_;
italic = italic_;
size = size_;
fontName = fontName_;
eolFilled = eolFilled_;
if (aliasOfDefaultFont)
font.SetID(0);
else
font.Release();
aliasOfDefaultFont = false;
}
bool Style::EquivalentFontTo(const Style *other) const {
if (bold != other->bold ||
italic != other->italic ||
size != other->size)
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;
if (sizeZoomed <= 2) // Hangs if sizeZoomed <= 1
sizeZoomed = 2;
if (aliasOfDefaultFont)
font.SetID(0);
else
font.Release();
int deviceHeight = (sizeZoomed * surface.LogPixelsY()) / 72;
aliasOfDefaultFont = defaultStyle &&
(EquivalentFontTo(defaultStyle) || !fontName);
if (aliasOfDefaultFont) {
font.SetID(defaultStyle->font.GetID());
} else if (fontName) {
font.Create(fontName, deviceHeight, bold, italic);
} else {
font.SetID(0);
}
ascent = surface.Ascent(font);
descent = surface.Descent(font);
// Probably more typographically correct to include leading
// but that means more complex drawing as leading must be erased
//lineHeight = surface.ExternalLeading() + surface.Height();
externalLeading = surface.ExternalLeading(font);
lineHeight = surface.Height(font);
aveCharWidth = surface.AverageCharWidth(font);
spaceWidth = surface.WidthChar(font, ' ');
}

View File

@@ -0,0 +1,39 @@
// Scintilla source code edit control
// Style.h - defines the font and colour style for a class of text
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef STYLE_H
#define STYLE_H
class Style {
public:
ColourPair fore;
ColourPair back;
bool aliasOfDefaultFont;
bool bold;
bool italic;
int size;
const char *fontName;
bool eolFilled;
Font font;
unsigned int lineHeight;
unsigned int ascent;
unsigned int descent;
unsigned int externalLeading;
unsigned int aveCharWidth;
unsigned int spaceWidth;
Style();
~Style();
Style &operator=(const Style &source);
void Clear(Colour fore_, Colour back_,
int size_,
const char *fontName_,
bool bold_, bool italic_, bool eolFilled_);
bool EquivalentFontTo(const Style *other) const;
void Realise(Surface &surface, int zoomLevel, Style *defaultStyle=0);
};
#endif

View File

@@ -0,0 +1,227 @@
// Scintilla source code edit control
// ViewStyle.cxx - store information on how the document is to be viewed
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#include <string.h>
#include "Platform.h"
#include "Scintilla.h"
#include "Indicator.h"
#include "LineMarker.h"
#include "Style.h"
#include "ViewStyle.h"
MarginStyle::MarginStyle() :
symbol(false), width(16), mask(0xffffffff), sensitive(false) {
}
// A list of the fontnames - avoids wasting space in each style
FontNames::FontNames() {
max = 0;
}
FontNames::~FontNames() {
Clear();
}
void FontNames::Clear() {
for (int i=0;i<max;i++) {
delete []names[i];
}
max = 0;
}
const char *FontNames::Save(const char *name) {
if (!name)
return 0;
for (int i=0;i<max;i++) {
if (strcmp(names[i], name) == 0) {
return names[i];
}
}
names[max] = new char[strlen(name) + 1];
strcpy(names[max], name);
max++;
return names[max-1];
}
ViewStyle::ViewStyle() {
Init();
}
ViewStyle::ViewStyle(const ViewStyle &source) {
Init();
for (unsigned int sty=0;sty<(sizeof(styles)/sizeof(styles[0]));sty++) {
styles[sty] = source.styles[sty];
// Can't just copy fontname as its lifetime is relative to its owning ViewStyle
styles[sty].fontName = fontNames.Save(source.styles[sty].fontName);
}
for (int mrk=0;mrk<=MARKER_MAX;mrk++) {
markers[mrk] = source.markers[mrk];
}
for (int ind=0;ind<=INDIC_MAX;ind++) {
indicators[ind] = source.indicators[ind];
}
selforeset = source.selforeset;
selforeground.desired = source.selforeground.desired;
selbackset = source.selbackset;
selbackground.desired = source.selbackground.desired;
selbar.desired = source.selbar.desired;
selbarlight.desired = source.selbarlight.desired;
caretcolour.desired = source.caretcolour.desired;
edgecolour.desired = source.edgecolour.desired;
leftMarginWidth = source.leftMarginWidth;
rightMarginWidth = source.rightMarginWidth;
for (int i=0;i < margins; i++) {
ms[i] = source.ms[i];
}
symbolMargin = source.symbolMargin;
maskInLine = source.maskInLine;
fixedColumnWidth = source.fixedColumnWidth;
zoomLevel = source.zoomLevel;
viewWhitespace = source.viewWhitespace;
viewEOL = source.viewEOL;
showMarkedLines = source.showMarkedLines;
}
ViewStyle::~ViewStyle() {
}
void ViewStyle::Init() {
fontNames.Clear();
ResetDefaultStyle();
indicators[0].style = INDIC_SQUIGGLE;
indicators[0].fore = Colour(0, 0x7f, 0);
indicators[1].style = INDIC_TT;
indicators[1].fore = Colour(0, 0, 0xff);
indicators[2].style = INDIC_PLAIN;
indicators[2].fore = Colour(0xff, 0, 0);
lineHeight = 1;
maxAscent = 1;
maxDescent = 1;
aveCharWidth = 8;
spaceWidth = 8;
selforeset = false;
selforeground.desired = Colour(0xff, 0, 0);
selbackset = true;
selbackground.desired = Colour(0xc0, 0xc0, 0xc0);
selbar.desired = Platform::Chrome();
selbarlight.desired = Platform::ChromeHighlight();
styles[STYLE_LINENUMBER].fore.desired = Colour(0, 0, 0);
styles[STYLE_LINENUMBER].back.desired = Platform::Chrome();
//caretcolour.desired = Colour(0xff, 0, 0);
caretcolour.desired = Colour(0, 0, 0);
edgecolour.desired = Colour(0xc0, 0xc0, 0xc0);
leftMarginWidth = 1;
rightMarginWidth = 1;
ms[0].symbol = false;
ms[0].width = 0;
ms[0].mask = 0;
ms[1].symbol = true;
ms[1].width = 16;
ms[1].mask = ~SC_MASK_FOLDERS;
ms[2].symbol = true;
ms[2].width = 14; // Nice width for arrows
ms[2].mask = SC_MASK_FOLDERS;
ms[2].width = 0; // Nice width for arrows
ms[2].mask = 0;
fixedColumnWidth = leftMarginWidth;
symbolMargin = false;
maskInLine = 0xffffffff;
for (int margin=0; margin < margins; margin++) {
fixedColumnWidth += ms[margin].width;
symbolMargin = symbolMargin || ms[margin].symbol;
if (ms[margin].width > 0)
maskInLine &= ~ms[margin].mask;
}
zoomLevel = 0;
viewWhitespace = false;
viewEOL = false;
showMarkedLines = true;
}
void ViewStyle::RefreshColourPalette(Palette &pal, bool want) {
unsigned int i;
for (i=0;i<(sizeof(styles)/sizeof(styles[0]));i++) {
pal.WantFind(styles[i].fore, want);
pal.WantFind(styles[i].back, want);
}
for (i=0;i<(sizeof(indicators)/sizeof(indicators[0]));i++) {
pal.WantFind(indicators[i].fore, want);
}
for (i=0;i<(sizeof(markers)/sizeof(markers[0]));i++) {
pal.WantFind(markers[i].fore, want);
pal.WantFind(markers[i].back, want);
}
pal.WantFind(selforeground, want);
pal.WantFind(selbackground, want);
pal.WantFind(selbar, want);
pal.WantFind(selbarlight, want);
pal.WantFind(caretcolour, want);
pal.WantFind(edgecolour, want);
}
void ViewStyle::Refresh(Surface &surface) {
selbar.desired = Platform::Chrome();
selbarlight.desired = Platform::ChromeHighlight();
styles[STYLE_DEFAULT].Realise(surface, zoomLevel);
maxAscent = styles[STYLE_DEFAULT].ascent;
maxDescent = styles[STYLE_DEFAULT].descent;
for (unsigned int i=0;i<(sizeof(styles)/sizeof(styles[0]));i++) {
if (i != STYLE_DEFAULT) {
styles[i].Realise(surface, zoomLevel, &styles[STYLE_DEFAULT]);
if (maxAscent < styles[i].ascent)
maxAscent = styles[i].ascent;
if (maxDescent < styles[i].descent)
maxDescent = styles[i].descent;
}
}
lineHeight = maxAscent + maxDescent;
aveCharWidth = styles[STYLE_DEFAULT].aveCharWidth;
spaceWidth = styles[STYLE_DEFAULT].spaceWidth;
fixedColumnWidth = leftMarginWidth;
symbolMargin = false;
maskInLine = 0xffffffff;
for (int margin=0; margin < margins; margin++) {
fixedColumnWidth += ms[margin].width;
symbolMargin = symbolMargin || ms[margin].symbol;
if (ms[margin].width > 0)
maskInLine &= ~ms[margin].mask;
}
}
void ViewStyle::ResetDefaultStyle() {
styles[STYLE_DEFAULT].Clear(Colour(0,0,0), Colour(0xff,0xff,0xff),
Platform::DefaultFontSize(), fontNames.Save(Platform::DefaultFont()),
false, false, false);
}
void ViewStyle::ClearStyles() {
// Reset all styles to be like the default style
for (unsigned int i=0;i<(sizeof(styles)/sizeof(styles[0]));i++) {
if (i != STYLE_DEFAULT) {
styles[i].Clear(
styles[STYLE_DEFAULT].fore.desired,
styles[STYLE_DEFAULT].back.desired,
styles[STYLE_DEFAULT].size,
styles[STYLE_DEFAULT].fontName,
styles[STYLE_DEFAULT].bold,
styles[STYLE_DEFAULT].italic,
styles[STYLE_DEFAULT].eolFilled);
}
}
styles[STYLE_LINENUMBER].back.desired = Platform::Chrome();
}
void ViewStyle::SetStyleFontName(int styleIndex, const char *name) {
styles[styleIndex].fontName = fontNames.Save(name);
}

View File

@@ -0,0 +1,72 @@
// Scintilla source code edit control
// ViewStyle.h - store information on how the document is to be viewed
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#ifndef VIEWSTYLE_H
#define VIEWSTYLE_H
class MarginStyle {
public:
bool symbol;
int width;
int mask;
bool sensitive;
MarginStyle();
};
class FontNames {
private:
char *names[STYLE_MAX + 1];
int max;
public:
FontNames();
~FontNames();
void Clear();
const char *Save(const char *name);
};
class ViewStyle {
public:
FontNames fontNames;
Style styles[STYLE_MAX + 1];
LineMarker markers[MARKER_MAX + 1];
Indicator indicators[INDIC_MAX + 1];
int lineHeight;
unsigned int maxAscent;
unsigned int maxDescent;
unsigned int aveCharWidth;
unsigned int spaceWidth;
bool selforeset;
ColourPair selforeground;
bool selbackset;
ColourPair selbackground;
ColourPair selbar;
ColourPair selbarlight;
// Margins are ordered: Line Numbers, Selection Margin, Spacing Margin
int leftMarginWidth; // Spacing margin on left of text
int rightMarginWidth; // Spacing margin on left of text
enum { margins=3 };
bool symbolMargin;
int maskInLine; // Mask for markers to be put into text because there is nowhere for them to go in margin
MarginStyle ms[margins];
int fixedColumnWidth;
int zoomLevel;
bool viewWhitespace;
bool viewEOL;
bool showMarkedLines;
ColourPair caretcolour;
ColourPair edgecolour;
ViewStyle();
ViewStyle(const ViewStyle &source);
~ViewStyle();
void Init();
void RefreshColourPalette(Palette &pal, bool want);
void Refresh(Surface &surface);
void ResetDefaultStyle();
void ClearStyles();
void SetStyleFontName(int styleIndex, const char *name);
};
#endif

1496
contrib/src/stc/stc.cpp Normal file

File diff suppressed because it is too large Load Diff

13
debian/README.Debian vendored
View File

@@ -1,13 +0,0 @@
wxwindows for Debian
----------------------
The following packages are built from the wxWindows CVS source.
libwxgtk wxGTK shared library
libwxgtk-dev Headers and static lib for building wxGTK apps
libwxgtk-python Python binding to wxGTK
wxwin-doc HTML version of the wxWindows manual
wxwin-examples wxWindows and wxPython demos and samples (source)
-- Ron Lee <ron@debian.org>, Sun, 13 Feb 2000 18:40:00 +1030

9
debian/changelog vendored
View File

@@ -1,9 +0,0 @@
wxwindows2.1 (2.1.14) unstable; urgency=low
* Repackaged to build from cvs.
-- Ron Lee <ron@debian.org> Sun, 13 Feb 2000 18:40:00 +1030
Local variables:
mode: debian-changelog
End:

107
debian/control.in vendored
View File

@@ -1,107 +0,0 @@
Source: wxwindows=V
Section: libs
Priority: optional
Build-Depends: debhelper, libgtk1.2-dev, python-dev (>=1.5), flex, bison
Maintainer: Ron Lee <ron@debian.org>
Standards-Version: 3.1.1
Package: libwxbase=V
Architecture: any
Section: libs
Depends: ${shlibs:Depends}
Description: wxBase library (runtime) - non-GUI support classes of wxWindows toolkit
wxBase is a collection of C++ classes providing basic data structures
(strings, lists, arrays), powerful wxDateTime class for date manipulations,
portable wrappers around many OS-specific functions allowing to build the
same program under all supported folders, wxThread class for writing
multithreaded programs using either Win32 or POSIX threads and much more.
wxBase currently supports the following platforms: Win32, generic Unix
(Linux, FreeBSD, Solaris, HP-UX, ...) and BeOS.
.
This package is only useful for non-gui apps. It offers a subset of the
classes in libwx_gtk=V for use in console apps and daemons. It is currently
under development and may not be as stable as the gui version.
Package: libwxbase=V-dev
Architecture: any
Section: devel
Depends: libwxbase=V (= ${Source-Version}), libwxgtk=V-dev (= ${Source-Version}), libc6-dev
Suggests: wxwin=V-doc, gettext
Conflicts: libwxbase-dev
Replaces: libwxbase-dev
Provides: libwxbase-dev
Description: wxBase library (development) - non-GUI support classes of wxWindows toolkit
wxBase is a collection of C++ classes providing basic data structures
(strings, lists, arrays), powerful wxDateTime class for date manipulations,
portable wrappers around many OS-specific functions allowing to build the
same program under all supported folders, wxThread class for writing
multithreaded programs using either Win32 or POSIX threads and much more.
wxBase currently supports the following platforms: Win32, generic Unix
(Linux, FreeBSD, Solaris, HP-UX, ...) and BeOS.
.
This package is only useful for non-gui apps. It offers a subset of the
classes in libwx_gtk=V for use in console apps and daemons. It is currently
under development and may not be as stable as the gui version.
Package: libwxgtk=V
Architecture: any
Section: libs
Depends: ${shlibs:Depends}
Description: wxWindows Cross-platform C++ GUI toolkit (GTK+ runtime)
wxWindows is a class library for C++ providing GUI (Graphical User
Interface) and other facilities on more than one platform. Version 2.1
currently supports subsets of GTK+, Motif, and MS Windows.
.
This package provides the shared libraries needed to run programs linked
against wxWindows.
Package: libwxgtk=V-dev
Architecture: any
Section: devel
Depends: libwxgtk=V (= ${Source-Version}), libc6-dev
Suggests: wxwin=V-doc, libstdc++-dev, gettext
Conflicts: libwxgtk-dev
Replaces: libwxgtk-dev
Provides: libwxgtk-dev
Description: wxWindows Cross-platform C++ GUI toolkit (GTK+ development)
wxWindows is a class library for C++ providing GUI (Graphical User
Interface) and other facilities on more than one platform. Version 2.1
currently supports subsets of GTK+, Motif, and MS Windows.
.
This package provides files needed to compile wxWindows programs. It
includes header files and static libraries.
Package: libwxgtk=V-python
Architecture: any
Section: interpreters
Depends: libwxgtk=V (= ${Source-Version}), python-base (>=1.5), ${shlibs:Depends}
Suggests: wxwin=V-doc
Description: wxWindows Cross-platform C++ GUI toolkit (Python binding)
wxWindows is a class library for C++ providing GUI (Graphical User
Interface) and other facilities on more than one platform. Version 2.1
currently supports subsets of GTK+, Motif, and MS Windows.
.
This package provides a Python binding to the wxGTK library.
Package: wxwin=V-doc
Architecture: all
Section: doc
Suggests: doc-base, www-browser
Description: wxWindows Cross-platform C++ GUI toolkit (documentation)
wxWindows is a class library for C++ providing GUI (Graphical User
Interface) and other facilities on more than one platform. Version 2.1
currently supports subsets of GTK+, Motif, and MS Windows.
.
This package provides a HTML version of the wxWindows reference manual.
Package: wxwin=V-examples
Architecture: all
Section: devel
Suggests: libwxgtk=V-dev (= ${Source-Version}), wxwin=V-doc
Description: wxWindows Cross-platform C++ GUI toolkit (examples)
wxWindows is a class library for C++ providing GUI (Graphical User
Interface) and other facilities on more than one platform. Version 2.1
currently supports subsets of GTK+, Motif, and MS Windows.
.
This package contains examples of using the wxWindows toolkit.

18
debian/copyright vendored
View File

@@ -1,18 +0,0 @@
This package was debianized by Ron Lee <ron@debian.org> on
Sun, 13 Feb 2000 18:40:00 +1030.
wxWindows main upstream site is www.wxwindows.org
wxWindows is licenced under the LGPL with a special exception for
binary only apps produced with it. Some parts of the library (as
compiled for Debian) might *not* include this extra exception in
their licence. If you wish to distribute binary object code under
terms other than those allowed by the (L)GPL (but allowed by the
wxWindows Licence), you must first ensure all linked in code is
subject to this exception. This package is almost certainly built
with code licenced under terms which do not include that exception.
See the file licence.txt for authorative details of
the wxWindows licence.

View File

@@ -1,3 +0,0 @@
usr/bin
usr/lib/wx/include/wx
usr/share/man/man1

View File

@@ -1,3 +0,0 @@
docs/preamble.txt
docs/licence.txt
docs/licendoc.txt

View File

@@ -1,4 +0,0 @@
usr/bin/wxbase-config
usr/lib/wx/include/wx/base/setup.h
usr/lib/libwxbase*.so
usr/lib/libwxbase*.a

View File

@@ -1 +0,0 @@
usr/share/man/man1/wx-config.1.gz usr/share/man/man1/wxbase-config.1.gz

View File

@@ -1,7 +0,0 @@
#! /bin/sh
set -e
update-alternatives --install /usr/bin/wx-config wx-config /usr/bin/wxbase-config 50
#DEBHELPER#

View File

@@ -1,7 +0,0 @@
#! /bin/sh
set -e
update-alternatives --remove wx-config /usr/bin/wxbase-config
#DEBHELPER#

View File

@@ -1 +0,0 @@
usr/lib

View File

@@ -1 +0,0 @@
docs/licence.txt

View File

@@ -1 +0,0 @@
usr/lib/libwxbase*.so.*

View File

@@ -1,10 +0,0 @@
#!/bin/sh
set -e
if [ "$1" = "configure" ]; then
ldconfig
fi
#DEBHELPER#

View File

@@ -1,4 +0,0 @@
usr/bin
usr/lib/wx/include/wx/gtk/
usr/include/wx
usr/share/man/man1

View File

@@ -1,3 +0,0 @@
docs/preamble.txt
docs/licence.txt
docs/licendoc.txt

View File

@@ -1,5 +0,0 @@
usr/bin/wxgtk-config
usr/include/wx/
usr/lib/wx/include/wx/gtk/setup.h
usr/lib/libwx_gtk*.so
usr/lib/libwx_gtk*.a

View File

@@ -1 +0,0 @@
usr/share/man/man1/wx-config.1.gz usr/share/man/man1/wxgtk-config.1.gz

View File

@@ -1,7 +0,0 @@
#! /bin/sh
set -e
update-alternatives --install /usr/bin/wx-config wx-config /usr/bin/wxgtk-config 50
#DEBHELPER#

View File

@@ -1,7 +0,0 @@
#! /bin/sh
set -e
update-alternatives --remove wx-config /usr/bin/wxgtk-config
#DEBHELPER#

View File

@@ -1 +0,0 @@
usr/lib/python1.5/site-packages/wxPython/lib/sizers

View File

@@ -1,3 +0,0 @@
utils/wxPython/README.txt
utils/wxPython/CHANGES.txt
docs/licence.txt

View File

@@ -1,2 +0,0 @@
usr/lib/python1.5/site-packages/wxPython
usr/lib/libwxPyHelpers.so

View File

@@ -1,14 +0,0 @@
#!/bin/sh
set -e
WXPYTHONDIR="/usr/lib/python1.5/site-packages/wxPython"
if [ "$1" = "configure" ]; then
python /usr/lib/python1.5/compileall.py -q ${WXPYTHONDIR}
python -O /usr/lib/python1.5/compileall.py -q ${WXPYTHONDIR}
ldconfig
fi
#DEBHELPER#

View File

@@ -1,9 +0,0 @@
#!/bin/sh
set -e
WXPYTHONDIR="/usr/lib/python1.5/site-packages/wxPython"
find ${WXPYTHONDIR} -name "*.py?" -exec rm -f {} \;
#DEBHELPER#

View File

@@ -1,3 +0,0 @@
usr/lib
usr/share/wx/afm
usr/share/wx/gs_afm

View File

@@ -1 +0,0 @@
docs/licence.txt

View File

@@ -1,2 +0,0 @@
usr/lib/libwx_gtk*.so.*
usr/share/wx

View File

@@ -1,10 +0,0 @@
#!/bin/sh
set -e
if [ "$1" = "configure" ]; then
ldconfig
fi
#DEBHELPER#

237
debian/rules vendored
View File

@@ -1,237 +0,0 @@
#!/usr/bin/make -f
# debian/rules file to build packages from wxWindows CVS source
#
# Sculpted 13/2/2000 by Ron Lee <ron@debian.org> from new and
# variously stolen code :-)
# (including a debhelper template, GNU copyright 1997 to 1999 by
# Joey Hess, and some ideas found in the ncurses rules file that
# I quite liked. Thanks!)
#export DH_VERBOSE=1
export DH_COMPAT=2
release:=$(shell dpkg-parsechangelog | sed -n 's/^Source: wxwindows//p')
# Packages to build:
package_wxbase_lib=libwxbase$(release)
package_wxbase_dev=libwxbase$(release)-dev
package_gtk_lib=libwxgtk$(release)
package_gtk_dev=libwxgtk$(release)-dev
package_gtk_py=libwxgtk$(release)-python
package_doc=wxwin$(release)-doc
package_examples=wxwin$(release)-examples
# Build directories:
objdir_wxbase_shared=objs_wxbase_sh
objdir_wxbase_static=objs_wxbase_st
objdir_gtk_shared=objs_gtk_sh
objdir_gtk_static=objs_gtk_st
objdir_doc_cruft=objs_doc_con
objdir_doc=docs/wxWindows-manual.html
objdir_examples=docs/examples
objdirs=$(objdir_wxbase_shared) $(objdir_wxbase_static) $(objdir_gtk_shared) \
$(objdir_gtk_static) $(objdir_doc) $(objdir_examples)
build_stamps=build-wxbase-shared-stamp build-wxbase-static-stamp \
build-gtk-shared-stamp build-gtk-static-stamp \
build-gtk-python-stamp build-examples-stamp build-doc-stamp
wxconfig:=$(shell pwd)/$(objdir_gtk_shared)/wx-config \
--prefix=$(shell pwd) \
--exec-prefix=$(shell pwd)/$(objdir_gtk_shared)
# The Rules:
debian/control: debian/control.in
sed -e 's/=V/$(release)/g' < debian/control.in > debian/control
debian/wxwin-doc.doc-base: debian/wxwin-doc.doc-base.in
sed -e 's/=V/$(release)/g' < debian/wxwin-doc.doc-base.in > debian/wxwin-doc.doc-base
build: debian/control debian/wxwin-doc.doc-base $(build_stamps)
build-wxbase-shared-stamp:
dh_testdir
mkdir $(objdir_wxbase_shared)
cd $(objdir_wxbase_shared) \
&& ../configure --prefix=/usr --disable-gui --enable-burnt_name \
&& $(MAKE)
touch $@
build-wxbase-static-stamp:
dh_testdir
mkdir $(objdir_wxbase_static)
cd $(objdir_wxbase_static) \
&& ../configure --prefix=/usr --disable-gui --disable-shared \
&& $(MAKE)
touch $@
build-gtk-shared-stamp:
dh_testdir
mkdir $(objdir_gtk_shared)
cd $(objdir_gtk_shared) \
&& ../configure --prefix=/usr --with-gtk --enable-burnt_name --disable-newgrid \
&& $(MAKE)
touch $@
build-gtk-static-stamp:
dh_testdir
mkdir $(objdir_gtk_static)
cd $(objdir_gtk_static) \
&& ../configure --prefix=/usr --with-gtk --disable-shared \
&& $(MAKE)
touch $@
build-gtk-python-stamp: build-gtk-shared-stamp
dh_testdir
cd utils/wxPython/src \
&& touch gtk/*.cpp gtk/*.py \
&& ../distrib/build.py -b WXDIR=../../.. WXCONFIG='$(wxconfig)'
cd utils/wxPython/modules/html \
&& ../../distrib/build.py -b WXDIR=../../../.. WXCONFIG='$(wxconfig)'
cd utils/wxPython/modules/utils \
&& ../../distrib/build.py -b WXDIR=../../../.. WXCONFIG='$(wxconfig)'
touch $@
build-doc-stamp: build-gtk-shared-stamp
dh_testdir
cd $(objdir_gtk_shared)/utils/tex2rtf/src \
&& $(MAKE)
mkdir $(objdir_doc)
mkdir $(objdir_doc_cruft)
cd $(objdir_doc_cruft) \
&& LD_LIBRARY_PATH=../$(objdir_gtk_shared)/lib \
../$(objdir_gtk_shared)/utils/tex2rtf/src/tex2rtf \
../docs/latex/wx/manual.tex ../$(objdir_doc)/wxwin.htm -twice -html
cp docs/latex/wx/*.gif $(objdir_doc)
rm -rf $(objdir_doc_cruft)
rm -f $(objdir_doc)/wxwin.con $(objdir_doc)/wxwin.hh* \
$(objdir_doc)/wxwin.htx $(objdir_doc)/wxwin.ref
touch $@
build-examples-stamp:
dh_testdir
mkdir $(objdir_examples)
cp -a samples $(objdir_examples)
cp -a demos $(objdir_examples)
cp -a utils/wxPython/demo $(objdir_examples)/wxPython
@for d in $(objdir_examples)/demos $(objdir_examples)/samples; do \
(cd $$d \
&& mv Makefile.in Makefile \
&& rm -f configure* \
&& find -name 'Makefile.in' -exec rm -f '{}' ';' \
&& for f in $$(find -type d); do \
if [ -f $$f/makefile.unx ]; then \
mv $$f/makefile.unx $$f/Makefile; \
fi; \
done) \
done;
touch $@
clean: debian/control
dh_testdir
dh_testroot
rm -rf $(build_stamps) $(objdirs)
-cd utils/wxPython/src && $(MAKE) clean
-cd utils/wxPython/modules/html && $(MAKE) clean
-cd utils/wxPython/modules/utils && $(MAKE) clean
dh_clean
rm -f debian/$(package_wxbase_lib).*
rm -f debian/$(package_wxbase_dev).*
rm -f debian/$(package_gtk_lib).*
rm -f debian/$(package_gtk_dev).*
rm -f debian/$(package_gtk_py).*
rm -f debian/$(package_doc).*
rm -f debian/$(package_examples).*
install: build
dh_testdir
dh_testroot
@for f in dirs docs files postinst; do \
echo "generating control file $(package_wxbase_lib).$$f"; \
cp debian/libwxbase.$$f debian/$(package_wxbase_lib).$$f; \
done;
@for f in dirs docs files links postinst prerm; do \
echo "generating control file $(package_wxbase_dev).$$f"; \
cp debian/libwxbase-dev.$$f debian/$(package_wxbase_dev).$$f; \
done;
@for f in dirs docs files postinst; do \
echo "generating control file $(package_gtk_lib).$$f"; \
cp debian/libwxgtk.$$f debian/$(package_gtk_lib).$$f; \
done;
@for f in dirs docs files links postinst prerm; do \
echo "generating control file $(package_gtk_dev).$$f"; \
cp debian/libwxgtk-dev.$$f debian/$(package_gtk_dev).$$f; \
done;
@for f in dirs docs files postinst prerm; do \
echo "generating control file $(package_gtk_py).$$f"; \
cp debian/libwxgtk-python.$$f debian/$(package_gtk_py).$$f; \
done;
@for f in dirs docs doc-base; do \
echo "generating control file $(package_doc).$$f"; \
cp debian/wxwin-doc.$$f debian/$(package_doc).$$f; \
done;
@for f in docs examples; do \
echo "generating control file $(package_examples).$$f"; \
cp debian/wxwin-examples.$$f debian/$(package_examples).$$f; \
done;
dh_clean -k
dh_installdirs
cd $(objdir_gtk_shared) \
&& $(MAKE) install prefix=`pwd`/../debian/tmp/usr
rm -f debian/tmp/usr/bin/wx-config
cp $(objdir_gtk_static)/lib/*.a debian/tmp/usr/lib
cp -a $(objdir_wxbase_shared)/lib/* debian/tmp/usr/lib
cp $(objdir_wxbase_shared)/wxbase-config debian/tmp/usr/bin/
cp $(objdir_wxbase_static)/lib/*.a debian/tmp/usr/lib
cd utils/wxPython/src \
&& ../distrib/build.py -i \
TARGETDIR=../../../debian/tmp/usr/lib/python1.5/site-packages/wxPython \
HELPERLIBDIR=../../../debian/tmp/usr/lib \
WXDIR=../../..
cd utils/wxPython/modules/html \
&& ../../distrib/build.py -i \
TARGETDIR=../../../../debian/tmp/usr/lib/python1.5/site-packages/wxPython \
WXDIR=../../../..
cd utils/wxPython/modules/utils \
&& ../../distrib/build.py -i \
TARGETDIR=../../../../debian/tmp/usr/lib/python1.5/site-packages/wxPython \
WXDIR=../../../..
rm -rf debian/tmp/usr/lib/python1.5/site-packages/wxPython/demo
find debian/tmp/usr/lib/python1.5/site-packages/wxPython \
-name '*.py?' -exec rm '{}' ';'
dh_movefiles
# Build architecture-independent files here.
binary-indep: build install
# nothing to do.
# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
dh_testroot
dh_installdocs
dh_installmanpages -p$(package_gtk_dev) \
ansi2knr.1 \
jpegtran.1 \
libpng.3 \
libpngpf.3 \
zlib.3 \
png.5
dh_installchangelogs
dh_installexamples
dh_link
dh_strip
dh_compress
dh_fixperms
dh_makeshlibs
dh_installdeb
dh_shlibdeps -ldebian/$(package_gtk_lib)/usr/lib:debian/$(package_gtk_py)/usr/lib
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install

91
debian/wx-config.1 vendored
View File

@@ -1,91 +0,0 @@
.TH wx-config 1 "15 Feb 2000" "Debian GNU/Linux" "wxWindows 2.2"
.SH NAME
wx-config - generate compile time info for wxWindows
.SH SYNOPSIS
.nh
.B wxbase-config
.br
.B wxgtk-config
.HP
.B wx-config
[\-\-version] [\-\-libs] [\-\-cflags] [\-\-cc] [\-\-cxx] [\-\-ld]
[\-\-prefix\fI[=DIR]\fP] [\-\-exec\-prefix\fI[=DIR]\fP]
.SH DESCRIPTION
\fIwx-config\fP is a tool to determine the compiler and linker
flags required for applications using the \fIwxWindows\fP toolkit(s).
.PP
\fIwx-config\fP is normally a symlink to one of the port-specific
versions like \fIwxbase-config\fP or \fIwxgtk-config\fP which
designates the default port to compile applications with.
You can override this default either by using one of the specific
versions directly, or by changing which version the symlink points to.
On Debian systems this can be done using the
.BR update-alternatives (8)
mechanism.
.hy
.SH OPTIONS
.l
\fIwx-config\fP accepts the following options:
.TP 8
.B \-\-version
What to
.B ALWAYS
include in a bug report.
.br
( But of course you already knew that ... )
.TP 8
.B \-\-libs
Generate linker flags for a \fIwxWindows\fP program.
.TP 8
.B \-\-cflags
Generate compiler flags for the same.
.TP 8
.B \-\-cc
Output the name of the C compiler \fB$(CC)\fP.
.TP 8
.B \-\-cxx
Output the name of the C++ compiler \fB$(CXX)\fP.
.TP 8
.B \-\-ld
Output the Linker command \fB$(LD)\fP.
.TP 8
.B \-\-prefix=PREFIX
If specified, use PREFIX instead of the installation prefix that \fIwxWindows\fP
was built with when computing the output for the \-\-cflags and
\-\-libs options. This option is also used for the exec prefix
if \-\-exec\-prefix was not specified. This option must be specified
before any \-\-libs or \-\-cflags options.
.br
.nh
.HP
(Translation: this is the root path to the \fIwxWindows\fP headers -- [Ron])
.hy
.TP 8
.B \-\-exec\-prefix=PREFIX
If specified, use PREFIX instead of the installation exec prefix that
\fIwxWindows\fP was built with when computing the output for the \-\-cflags
and \-\-libs options. This option must be specified before any
\-\-libs or \-\-cflags options.
.br
.nh
.HP
(Translation: this is the root path to the \fIwxWindows\fP library -- [Ron])
.hy
.SH SEE ALSO
.BR gtk-config (1),
.BR update-alternatives (8)
.SH COPYRIGHT
This manpage was copied whole-heartedly from the \fBgtk-config\fP(1) manpage
by Brian Bassett <brianb@debian.org> for the Debian GNU/Linux distribution of
wxGTK. It was then updated to include new options and otherwise bastardised
generally by Ron Lee <ron@debian.org>
The original gtk-config manpage copyright:
Copyright \(co 1995 Spencer Kimball and Peter Mattis
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation.

View File

@@ -1 +0,0 @@
usr/share/doc-base

View File

@@ -1,10 +0,0 @@
Document: wxwindows-manual
Title: wxWindows Programming Manual
Author: The wxWindows Cabal
Abstract: This manual describes the wxWindows cross-platform GUI toolkit.
Section: Apps/Programming
Format: HTML
Index: /usr/share/doc/wxwin=V-doc/wxWindows-manual.html/wxwin.htm
Files: /usr/share/doc/wxwin=V-doc/wxWindows-manual.html/*

View File

@@ -1,2 +0,0 @@
docs/licendoc.txt
docs/wxWindows-manual.html

View File

@@ -1 +0,0 @@
docs/licence.txt

View File

@@ -1,3 +0,0 @@
docs/examples/demos
docs/examples/samples
docs/examples/wxPython

View File

@@ -1,11 +0,0 @@
#
# Makefile : Builds wxWindows demos for Unix.
#
DEMOS_SUBDIRS=bombs dbbrowse forty fractal life poem
all:
@for d in $(DEMOS_SUBDIRS); do (cd $$d && make); done
clean:
@for d in $(DEMOS_SUBDIRS); do (cd $$d && make clean); done

Some files were not shown because too many files have changed in this diff Show More