Compare commits
239 Commits
BEFORE_VOL
...
v2.3.2
Author | SHA1 | Date | |
---|---|---|---|
|
0d8a8bf477 | ||
|
2bcdcf7e2a | ||
|
84a32a7796 | ||
|
22b41d3e01 | ||
|
00360d4699 | ||
|
d1cd84e787 | ||
|
edc8bd8df3 | ||
|
f221f8eb3a | ||
|
2ba9346d84 | ||
|
a6139dacac | ||
|
6b5691cb91 | ||
|
dc7c324430 | ||
|
af7e29cc47 | ||
|
4309b812ef | ||
|
cbb26e3f6d | ||
|
0655d12d67 | ||
|
52ad59c2e9 | ||
|
daa2c7d950 | ||
|
f6eaeda1b0 | ||
|
ba5ac173ea | ||
|
5d0000b5b5 | ||
|
2593f03384 | ||
|
abfc2b1d5a | ||
|
dd5a32cc2d | ||
|
0cbc52f38e | ||
|
0a4f1bbf6d | ||
|
f17fb29767 | ||
|
e04487ebe8 | ||
|
607d9cfc56 | ||
|
59a2e6354d | ||
|
abbacd903e | ||
|
ae0d8c1445 | ||
|
68c7f44cf6 | ||
|
7a25a27c35 | ||
|
92209a3966 | ||
|
63efc55ff7 | ||
|
000307d7a8 | ||
|
b43a988613 | ||
|
af01f1ba0d | ||
|
0627d0917b | ||
|
a92b0cfd2b | ||
|
aac7e7fe7b | ||
|
c6465c961b | ||
|
b1d66b5415 | ||
|
fcf689db0d | ||
|
810aa7fc7f | ||
|
3602a62e83 | ||
|
2796d5dae5 | ||
|
00811ff918 | ||
|
0729bd19f1 | ||
|
f725b2a4ec | ||
|
cb69afe081 | ||
|
d4597e138e | ||
|
8810d43125 | ||
|
99d1b93d89 | ||
|
a40a9c813f | ||
|
53fdeb16a8 | ||
|
25ad2ac2fe | ||
|
51dc95a4c8 | ||
|
08df3e4420 | ||
|
5bc0790f29 | ||
|
4a98c806e5 | ||
|
78b57918f8 | ||
|
ff5f1abaf0 | ||
|
23895080c2 | ||
|
b32a1ead44 | ||
|
a246f95e96 | ||
|
f043bf8d19 | ||
|
ed2e7e59a9 | ||
|
712969258a | ||
|
a20275148b | ||
|
b13f5fbf29 | ||
|
4894ae18fc | ||
|
17386f5322 | ||
|
e76520fdf8 | ||
|
3678697093 | ||
|
c5124240c4 | ||
|
625e74a703 | ||
|
c35c7d01d4 | ||
|
4d97d44e14 | ||
|
659a606421 | ||
|
d9f54bb0c7 | ||
|
84e89e2aac | ||
|
950e7faf4a | ||
|
91bdd96210 | ||
|
75421bf116 | ||
|
3a989c8afe | ||
|
b03e4fcd11 | ||
|
56a38bbe87 | ||
|
ff65119eb2 | ||
|
4d416b5f21 | ||
|
5acc0d5f32 | ||
|
be050baf48 | ||
|
39679a3c2f | ||
|
462f07cac2 | ||
|
df7c5d28a3 | ||
|
4a61305d36 | ||
|
d30f093006 | ||
|
c8499e53d8 | ||
|
8cf3806b82 | ||
|
3363eadf72 | ||
|
0f092804a2 | ||
|
f48fa475c2 | ||
|
d2ce649bec | ||
|
b7f411dd9b | ||
|
7f60145d85 | ||
|
8f3fc6b415 | ||
|
508e0acbd9 | ||
|
c427acc8d5 | ||
|
863210791a | ||
|
c7aaa64f26 | ||
|
6198749900 | ||
|
ac6bdf4056 | ||
|
9c641c057c | ||
|
ea64fd024a | ||
|
ee88cb3417 | ||
|
c768ded54a | ||
|
dd964dccf7 | ||
|
eaf336e02a | ||
|
eddd3a9d37 | ||
|
e8566d3538 | ||
|
ae4d7004d3 | ||
|
e562df9b4b | ||
|
a385b5dfa8 | ||
|
f7d886af3a | ||
|
c942560f94 | ||
|
d90b2df89d | ||
|
dd2b41b6e9 | ||
|
269c86d089 | ||
|
a22eb2f5c3 | ||
|
a20c8355d3 | ||
|
ea1e6c4be4 | ||
|
f736ec7623 | ||
|
81f256328c | ||
|
a8e6bf8ae2 | ||
|
ed8c278040 | ||
|
14b3f932dd | ||
|
2bc6041712 | ||
|
07c99b2608 | ||
|
74bcba0e33 | ||
|
a18b162dc1 | ||
|
78e8819c2e | ||
|
9bbe7068c4 | ||
|
1dc302a8ae | ||
|
bb064193a7 | ||
|
02a3b39120 | ||
|
5ea757d054 | ||
|
0bd63eb6ff | ||
|
3a87625f68 | ||
|
5515f252cb | ||
|
e6b01b78a3 | ||
|
d6044f582c | ||
|
7527fdd873 | ||
|
add33e95c5 | ||
|
8a242615ef | ||
|
b383b2c1fd | ||
|
d8542a1cd1 | ||
|
afcca39be9 | ||
|
1c777e15c9 | ||
|
644deea4d2 | ||
|
58a9336be1 | ||
|
fdda2df62d | ||
|
5f3286d17d | ||
|
af4088f1be | ||
|
f69fcd070b | ||
|
af54096f69 | ||
|
0cdb5f82c6 | ||
|
4ae76072f1 | ||
|
c598f22518 | ||
|
2dc5bacc01 | ||
|
961c54c333 | ||
|
673ad11240 | ||
|
71292fab8d | ||
|
3f2474754a | ||
|
d7997e1ab1 | ||
|
b01fb5c340 | ||
|
42dd647cfd | ||
|
44d568b6a8 | ||
|
d0e9b1506e | ||
|
d71c423e19 | ||
|
ade35f11fe | ||
|
1d21855083 | ||
|
f2d0790b1a | ||
|
f1104df133 | ||
|
681641370c | ||
|
ab3edaceba | ||
|
2edd0e7c66 | ||
|
4f716609c9 | ||
|
485cf710d7 | ||
|
77f859c38e | ||
|
0ba9f867fa | ||
|
13ff9344d6 | ||
|
38058a49c6 | ||
|
4b796bb03c | ||
|
9929591c13 | ||
|
8e38fd1fb0 | ||
|
2b7e44a28c | ||
|
9926e4a4d7 | ||
|
0b01706f2c | ||
|
f38bcae5bf | ||
|
83a2e3c5ad | ||
|
6f91bc3333 | ||
|
52dbd056d2 | ||
|
1918b6f789 | ||
|
39cc7a0bae | ||
|
ff69a290d6 | ||
|
572c7069bb | ||
|
68673975c6 | ||
|
2481a3763b | ||
|
4416b50837 | ||
|
684cbc0edd | ||
|
5f09cfe3de | ||
|
8962e1d938 | ||
|
d323d966dd | ||
|
27752aab2a | ||
|
a874db9279 | ||
|
04c943b139 | ||
|
2569938d39 | ||
|
d8b6f4d9a2 | ||
|
744d5712ce | ||
|
7a0f694a11 | ||
|
611dc22cee | ||
|
643b97f8a7 | ||
|
5a56be287a | ||
|
7104f65dbe | ||
|
232b005197 | ||
|
3e2125031b | ||
|
4161723f46 | ||
|
ddf2da08b5 | ||
|
58fd8ab910 | ||
|
4efb5650d1 | ||
|
3ac59f211b | ||
|
2226ead00d | ||
|
c594325333 | ||
|
b2abc29318 | ||
|
f7db440e1f | ||
|
83c865f518 | ||
|
a3b72ffb8f | ||
|
e8d5008c2e |
14
BuildCVS.txt
14
BuildCVS.txt
@@ -125,11 +125,15 @@ Refer to the readme.txt and install.txt files in docs/mac to build
|
||||
wxWindows under Classic Mac OS using CodeWarrior.
|
||||
|
||||
If you are checking out the CVS sources using cvs under Mac OS X and
|
||||
compiling under Classic Mac OS, make sure that all text files have a
|
||||
Mac OS type of 'TEXT' otherwise CodeWarrior may ignore them. Checking
|
||||
out the CVS sources using cvs under Mac OS X creates untyped files
|
||||
which can lead to compialtion errors under CodeWarrior which are hard
|
||||
to track down.
|
||||
compiling under Classic Mac OS:
|
||||
|
||||
- make sure that all text files have a Mac OS type of 'TEXT' otherwise
|
||||
CodeWarrior may ignore them. Checking out the CVS sources using cvs
|
||||
under Mac OS X creates untyped files which can lead to compilation
|
||||
errors under CodeWarrior which are hard to track down.
|
||||
|
||||
- convert the xml files to CodeWarrior binary projects using the supplied
|
||||
AppleScript in docs/mac (M5xml2mcp.applescript for CodeWarrior 5.3)
|
||||
|
||||
V) MacOS X using configure and the Developer Tools
|
||||
----------------------------------------
|
||||
|
48
Makefile.in
48
Makefile.in
@@ -436,6 +436,9 @@ preinstall: $(build_libdir)/@WX_TARGET_LIBRARY@ $(top_builddir)/wx@TOOLCHAIN_NAM
|
||||
@if test "$(USE_GUI)" = 1; then $(INSTALL) -d $(includedir)/wx/generic; fi
|
||||
@if test "@TOOLKIT_DIR@" = "msw"; then $(INSTALL) -d $(includedir)/wx/msw/ole; fi
|
||||
|
||||
@# always install msw headers for wxBase, it's much simpler
|
||||
@if test "$(USE_GUI)" = 0; then $(INSTALL) -d $(includedir)/wx/msw; fi
|
||||
|
||||
$(INSTALL) -d $(includedir)/wx/protocol
|
||||
$(INSTALL) -d $(includedir)/wx/unix
|
||||
@list='$(HEADERS)'; for p in $$list; do \
|
||||
@@ -532,8 +535,6 @@ ALL_DIST: distclean
|
||||
mkdir $(DISTDIR)
|
||||
cp $(WXDIR)/wxwin.m4 $(DISTDIR)
|
||||
cp $(WXDIR)/aclocal.m4 $(DISTDIR)
|
||||
cp $(WXDIR)/configure.in $(DISTDIR)
|
||||
cp $(WXDIR)/configure $(DISTDIR)
|
||||
cp $(WXDIR)/config.sub $(DISTDIR)
|
||||
cp $(WXDIR)/config.guess $(DISTDIR)
|
||||
cp $(WXDIR)/install-sh $(DISTDIR)
|
||||
@@ -543,11 +544,11 @@ ALL_DIST: distclean
|
||||
cp $(WXDIR)/setup.h_vms $(DISTDIR)
|
||||
cp $(WXDIR)/descrip.mms $(DISTDIR)
|
||||
cp $(WXDIR)/Makefile.in $(DISTDIR)
|
||||
cp $(WXDIR)/wxBase.spec $(DISTDIR)
|
||||
cp $(DOCDIR)/lgpl.txt $(DISTDIR)/COPYING.LIB
|
||||
cp $(DOCDIR)/licence.txt $(DISTDIR)/LICENCE.txt
|
||||
cp $(DOCDIR)/symbols.txt $(DISTDIR)/SYMBOLS.txt
|
||||
cp $(DOCDIR)/changes.txt $(DISTDIR)/CHANGES.txt
|
||||
cp $(DOCDIR)/readme.txt $(DISTDIR)/README.txt
|
||||
mkdir $(DISTDIR)/lib
|
||||
cp $(WXDIR)/lib/vms.opt $(DISTDIR)/lib
|
||||
cp $(WXDIR)/lib/vms_gtk.opt $(DISTDIR)/lib
|
||||
@@ -556,7 +557,6 @@ ALL_DIST: distclean
|
||||
mkdir $(DISTDIR)/src/zlib
|
||||
cp $(ZLIBDIR)/*.h $(DISTDIR)/src/zlib
|
||||
cp $(ZLIBDIR)/*.c $(DISTDIR)/src/zlib
|
||||
cp $(ZLIBDIR)/*.mcp $(DISTDIR)/src/zlib
|
||||
cp $(ZLIBDIR)/README $(DISTDIR)/src/zlib
|
||||
cp $(ZLIBDIR)/*.mms $(DISTDIR)/src/zlib
|
||||
mkdir $(DISTDIR)/src/regex
|
||||
@@ -573,8 +573,10 @@ ALL_DIST: distclean
|
||||
# this target is the common part of distribution script for all GUI toolkits,
|
||||
# but is not used when building wxBase distribution
|
||||
ALL_GUI_DIST: ALL_DIST
|
||||
cp $(WXDIR)/wxBase.spec $(DISTDIR)
|
||||
cp $(DOCDIR)/$(TOOLKITDIR)/install.txt $(DISTDIR)/INSTALL.txt
|
||||
cp $(WXDIR)/configure.in $(DISTDIR)
|
||||
cp $(WXDIR)/configure $(DISTDIR)
|
||||
cp $(DOCDIR)/readme.txt $(DISTDIR)/README.txt
|
||||
cp $(DOCDIR)/$(TOOLKITDIR)/install.txt $(DISTDIR)/INSTALL.txt
|
||||
if test -f $(DOCDIR)/$(TOOLKITDIR)/changes.txt ; then \
|
||||
cp $(DOCDIR)/$(TOOLKITDIR)/changes.txt $(DISTDIR)/CHANGES-$(TOOLKIT).txt ; fi
|
||||
cp $(DOCDIR)/$(TOOLKITDIR)/readme.txt $(DISTDIR)/README-$(TOOLKIT).txt
|
||||
@@ -621,15 +623,12 @@ ALL_GUI_DIST: ALL_DIST
|
||||
cp $(HTMLDIR)/bitmaps/*.xpm $(DISTDIR)/src/html/bitmaps
|
||||
cp $(PNGDIR)/*.h $(DISTDIR)/src/png
|
||||
cp $(PNGDIR)/*.c $(DISTDIR)/src/png
|
||||
cp $(PNGDIR)/*.mcp $(DISTDIR)/src/png
|
||||
cp $(PNGDIR)/README $(DISTDIR)/src/png
|
||||
cp $(JPEGDIR)/*.h $(DISTDIR)/src/jpeg
|
||||
cp $(JPEGDIR)/*.c $(DISTDIR)/src/jpeg
|
||||
cp $(JPEGDIR)/*.mcp $(DISTDIR)/src/jpeg
|
||||
cp $(JPEGDIR)/README $(DISTDIR)/src/jpeg
|
||||
cp $(TIFFDIR)/*.h $(DISTDIR)/src/tiff
|
||||
cp $(TIFFDIR)/*.c $(DISTDIR)/src/tiff
|
||||
cp $(TIFFDIR)/*.mcp $(DISTDIR)/src/tiff
|
||||
cp $(TIFFDIR)/README $(DISTDIR)/src/tiff
|
||||
cp $(ODBCDIR)/*.h $(DISTDIR)/src/iodbc
|
||||
cp $(ODBCDIR)/*.c $(DISTDIR)/src/iodbc
|
||||
@@ -640,19 +639,25 @@ ALL_GUI_DIST: ALL_DIST
|
||||
cp $(ODBCDIR)/Changes.log $(DISTDIR)/src/iodbc
|
||||
|
||||
BASE_DIST: ALL_DIST
|
||||
# make --disable-gui the default
|
||||
sed 's/DEFAULT_wxUSE_GUI=yes/DEFAULT_wxUSE_GUI=no/' \
|
||||
$(WXDIR)/configure.in > $(DISTDIR)/configure.in
|
||||
sed 's/DEFAULT_wxUSE_GUI=yes/DEFAULT_wxUSE_GUI=no/' \
|
||||
$(WXDIR)/configure > $(DISTDIR)/configure
|
||||
chmod +x $(DISTDIR)/configure
|
||||
mkdir $(DISTDIR)/include
|
||||
mkdir $(DISTDIR)/include/wx
|
||||
mkdir $(DISTDIR)/include/wx/protocol
|
||||
mkdir $(DISTDIR)/include/wx/unix
|
||||
mkdir $(DISTDIR)/include/wx/msw
|
||||
mkdir $(DISTDIR)/src/common
|
||||
mkdir $(DISTDIR)/src/unix
|
||||
mkdir $(DISTDIR)/src/msw
|
||||
cp $(WXDIR)/wxBase.spec $(DISTDIR)
|
||||
cp @PORT_FILES@ $(DISTDIR)
|
||||
cp $(WXDIR)/src/wxBase*.dsp $(DISTDIR)
|
||||
cp $(WXDIR)/src/wxBase*.dsw $(DISTDIR)
|
||||
cp $(DOCDIR)/changes.txt $(DISTDIR)/CHANGES.txt
|
||||
cp $(DOCDIR)/readme.txt $(DISTDIR)/README.txt
|
||||
cp $(DOCDIR)/install.txt $(DISTDIR)/README.txt
|
||||
cp $(SRCDIR)/*.in $(DISTDIR)/src
|
||||
cp $(WXDIR)/src/common/*.inc $(DISTDIR)/src/common
|
||||
cp $(WXDIR)/src/common/base.rc $(DISTDIR)/src/common
|
||||
@@ -673,6 +678,7 @@ BASE_DIST: ALL_DIST
|
||||
cp $(SAMPDIR)/console/Makefile.in $(DISTDIR)/samples/console
|
||||
cp $(SAMPDIR)/console/makefile.unx $(DISTDIR)/samples/console
|
||||
cp $(SAMPDIR)/console/console.cpp $(DISTDIR)/samples/console
|
||||
cp $(SAMPDIR)/console/console.dsp $(DISTDIR)/samples/console
|
||||
cp $(SAMPDIR)/console/testdata.fc $(DISTDIR)/samples/console
|
||||
|
||||
GTK_DIST: ALL_GUI_DIST
|
||||
@@ -702,7 +708,6 @@ MOTIF_DIST: ALL_GUI_DIST
|
||||
MACX_DIST: ALL_GUI_DIST
|
||||
cp $(INCDIR)/*.* $(DISTDIR)/include
|
||||
cp $(INCDIR)/wx/mac/*.h $(DISTDIR)/include/wx/mac
|
||||
cp $(SRCDIR)/*.mcp $(DISTDIR)/src
|
||||
cp $(MACDIR)/files.lst $(DISTDIR)/src/mac
|
||||
cp $(MACDIR)/*.cpp $(DISTDIR)/src/mac
|
||||
cp $(MACDIR)/*.c $(DISTDIR)/src/mac
|
||||
@@ -711,14 +716,6 @@ MACX_DIST: ALL_GUI_DIST
|
||||
mkdir $(DISTDIR)/src/mac/morefile
|
||||
cp $(MACDIR)/morefile/*.h $(DISTDIR)/src/mac/morefile
|
||||
cp $(MACDIR)/morefile/*.c $(DISTDIR)/src/mac/morefile
|
||||
mkdir $(DISTDIR)/src/mac/cdef
|
||||
cp $(MACDIR)/cdef/*.h $(DISTDIR)/src/mac/cdef
|
||||
cp $(MACDIR)/cdef/*.c $(DISTDIR)/src/mac/cdef
|
||||
cp $(MACDIR)/cdef/*.mcp $(DISTDIR)/src/mac/cdef
|
||||
mkdir $(DISTDIR)/src/mac/ldef
|
||||
cp $(MACDIR)/ldef/*.h $(DISTDIR)/src/mac/ldef
|
||||
cp $(MACDIR)/ldef/*.c $(DISTDIR)/src/mac/ldef
|
||||
cp $(MACDIR)/ldef/*.mcp $(DISTDIR)/src/mac/cdef
|
||||
mkdir $(DISTDIR)/src/mac/macsock
|
||||
cp $(MACDIR)/macsock/*.lib $(DISTDIR)/src/mac/macsock
|
||||
|
||||
@@ -761,8 +758,6 @@ DEMOS_DIST: ALL_GUI_DIST
|
||||
cp $(DEMODIR)/configure $(DISTDIR)/demos
|
||||
cp $(DEMODIR)/configure.in $(DISTDIR)/demos
|
||||
|
||||
cp -R $(DEMODIR)/dbbrowse $(DISTDIR)/demos/dbbrowse
|
||||
|
||||
mkdir $(DISTDIR)/demos/bombs
|
||||
cp $(DEMODIR)/bombs/Makefile.in $(DISTDIR)/demos/bombs
|
||||
cp $(DEMODIR)/bombs/makefile.unx $(DISTDIR)/demos/bombs
|
||||
@@ -771,6 +766,8 @@ DEMOS_DIST: ALL_GUI_DIST
|
||||
cp $(DEMODIR)/bombs/*.xpm $(DISTDIR)/demos/bombs
|
||||
cp $(DEMODIR)/bombs/readme.txt $(DISTDIR)/demos/bombs
|
||||
|
||||
cp -R $(DEMODIR)/dbbrowse $(DISTDIR)/demos/dbbrowse
|
||||
|
||||
mkdir $(DISTDIR)/demos/forty
|
||||
cp $(DEMODIR)/forty/Makefile.in $(DISTDIR)/demos/forty
|
||||
cp $(DEMODIR)/forty/makefile.unx $(DISTDIR)/demos/forty
|
||||
@@ -813,7 +810,6 @@ SAMPLES_DIST: ALL_GUI_DIST
|
||||
mkdir $(DISTDIR)/samples/calendar
|
||||
cp $(SAMPDIR)/calendar/Makefile.in $(DISTDIR)/samples/calendar
|
||||
cp $(SAMPDIR)/calendar/makefile.unx $(DISTDIR)/samples/calendar
|
||||
cp $(SAMPDIR)/calendar/*.mcp $(DISTDIR)/samples/calendar
|
||||
cp $(SAMPDIR)/calendar/*.cpp $(DISTDIR)/samples/calendar
|
||||
|
||||
mkdir $(DISTDIR)/samples/caret
|
||||
@@ -825,7 +821,6 @@ SAMPLES_DIST: ALL_GUI_DIST
|
||||
mkdir $(DISTDIR)/samples/checklst
|
||||
cp $(SAMPDIR)/checklst/Makefile.in $(DISTDIR)/samples/checklst
|
||||
cp $(SAMPDIR)/checklst/makefile.unx $(DISTDIR)/samples/checklst
|
||||
cp $(SAMPDIR)/checklst/*.mcp $(DISTDIR)/samples/checklst
|
||||
cp $(SAMPDIR)/checklst/*.cpp $(DISTDIR)/samples/checklst
|
||||
cp $(SAMPDIR)/checklst/*.xpm $(DISTDIR)/samples/checklst
|
||||
cp $(SAMPDIR)/checklst/*.mms $(DISTDIR)/samples/checklst
|
||||
@@ -833,7 +828,6 @@ SAMPLES_DIST: ALL_GUI_DIST
|
||||
mkdir $(DISTDIR)/samples/config
|
||||
cp $(SAMPDIR)/config/Makefile.in $(DISTDIR)/samples/config
|
||||
cp $(SAMPDIR)/config/makefile.unx $(DISTDIR)/samples/config
|
||||
cp $(SAMPDIR)/config/*.mcp $(DISTDIR)/samples/config
|
||||
cp $(SAMPDIR)/config/*.cpp $(DISTDIR)/samples/config
|
||||
|
||||
mkdir $(DISTDIR)/samples/console
|
||||
@@ -845,7 +839,6 @@ SAMPLES_DIST: ALL_GUI_DIST
|
||||
mkdir $(DISTDIR)/samples/controls/icons
|
||||
cp $(SAMPDIR)/controls/Makefile.in $(DISTDIR)/samples/controls
|
||||
cp $(SAMPDIR)/controls/makefile.unx $(DISTDIR)/samples/controls
|
||||
cp $(SAMPDIR)/controls/*.mcp $(DISTDIR)/samples/controls
|
||||
cp $(SAMPDIR)/controls/*.cpp $(DISTDIR)/samples/controls
|
||||
cp $(SAMPDIR)/controls/*.xpm $(DISTDIR)/samples/controls
|
||||
cp $(SAMPDIR)/controls/*.mms $(DISTDIR)/samples/controls
|
||||
@@ -861,7 +854,6 @@ SAMPLES_DIST: ALL_GUI_DIST
|
||||
mkdir $(DISTDIR)/samples/dialogs
|
||||
cp $(SAMPDIR)/dialogs/Makefile.in $(DISTDIR)/samples/dialogs
|
||||
cp $(SAMPDIR)/dialogs/makefile.unx $(DISTDIR)/samples/dialogs
|
||||
cp $(SAMPDIR)/dialogs/*.mcp $(DISTDIR)/samples/dialogs
|
||||
cp $(SAMPDIR)/dialogs/*.cpp $(DISTDIR)/samples/dialogs
|
||||
cp $(SAMPDIR)/dialogs/*.h $(DISTDIR)/samples/dialogs
|
||||
cp $(SAMPDIR)/dialogs/*.txt $(DISTDIR)/samples/dialogs
|
||||
@@ -1319,6 +1311,7 @@ MANUAL_DIST:
|
||||
PYTHON_DIST:
|
||||
mkdir $(DISTDIR)/wxPython
|
||||
mkdir $(DISTDIR)/wxPython/contrib
|
||||
mkdir $(DISTDIR)/wxPython/contrib/gizmos
|
||||
mkdir $(DISTDIR)/wxPython/contrib/glcanvas
|
||||
mkdir $(DISTDIR)/wxPython/contrib/glcanvas/gtk
|
||||
mkdir $(DISTDIR)/wxPython/contrib/ogl
|
||||
@@ -1339,6 +1332,7 @@ PYTHON_DIST:
|
||||
cp $(WXDIR)/wxPython/*.py $(DISTDIR)/wxPython
|
||||
cp $(WXDIR)/wxPython/setup.cfg $(DISTDIR)/wxPython
|
||||
cp $(WXDIR)/wxPython/MANIFEST.in $(DISTDIR)/wxPython
|
||||
cp $(WXDIR)/wxPython/contrib/gizmos/*.{py,cpp,i} $(DISTDIR)/wxPython/contrib/gizmos
|
||||
-cp $(WXDIR)/wxPython/contrib/glcanvas/* $(DISTDIR)/wxPython/contrib/glcanvas
|
||||
cp $(WXDIR)/wxPython/contrib/glcanvas/gtk/glcanvas.* $(DISTDIR)/wxPython/contrib/glcanvas/gtk
|
||||
-cp $(WXDIR)/wxPython/contrib/ogl/* $(DISTDIR)/wxPython/contrib/ogl
|
||||
|
23
configure.in
23
configure.in
@@ -780,6 +780,7 @@ if test $DEBUG_CONFIGURE = 1; then
|
||||
DEFAULT_wxUSE_TOOLBAR_SIMPLE=no
|
||||
DEFAULT_wxUSE_TREECTRL=no
|
||||
DEFAULT_wxUSE_POPUPWIN=no
|
||||
DEFAULT_wxUSE_TIPWINDOW=no
|
||||
|
||||
DEFAULT_wxUSE_UNICODE=no
|
||||
DEFAULT_wxUSE_WCSRTOMBS=no
|
||||
@@ -943,6 +944,7 @@ else
|
||||
DEFAULT_wxUSE_TOOLBAR_SIMPLE=yes
|
||||
DEFAULT_wxUSE_TREECTRL=yes
|
||||
DEFAULT_wxUSE_POPUPWIN=yes
|
||||
DEFAULT_wxUSE_TIPWINDOW=yes
|
||||
|
||||
DEFAULT_wxUSE_UNICODE=no
|
||||
DEFAULT_wxUSE_WCSRTOMBS=no
|
||||
@@ -1006,7 +1008,7 @@ WX_ARG_WITH(opengl, [ --with-opengl use OpenGL (or Mesa)], wxU
|
||||
fi
|
||||
dnl for GUI only
|
||||
|
||||
WX_ARG_WITH(dmalloc, [ --with-dmalloc use dmalloc library (www.letters.com/dmalloc)], wxUSE_DMALLOC)
|
||||
WX_ARG_WITH(dmalloc, [ --with-dmalloc use dmalloc library (http://dmalloc.com/)], wxUSE_DMALLOC)
|
||||
WX_ARG_SYS_WITH(regex, [ --with-regex enable support for wxRegEx class], wxUSE_REGEX)
|
||||
WX_ARG_SYS_WITH(zlib, [ --with-zlib use zlib for LZW compression], wxUSE_ZLIB)
|
||||
WX_ARG_WITH(odbc, [ --with-odbc use the IODBC and wxODBC classes], wxUSE_ODBC)
|
||||
@@ -1189,6 +1191,7 @@ if test "$wxUSE_CONTROLS" = "yes"; then
|
||||
DEFAULT_wxUSE_TOOLTIPS=yes
|
||||
DEFAULT_wxUSE_TREECTRL=yes
|
||||
DEFAULT_wxUSE_POPUPWIN=yes
|
||||
DEFAULT_wxUSE_TIPWINDOW=yes
|
||||
elif test "$wxUSE_CONTROLS" = "no"; then
|
||||
DEFAULT_wxUSE_ACCEL=no
|
||||
DEFAULT_wxUSE_BMPBUTTON=no
|
||||
@@ -1227,6 +1230,7 @@ elif test "$wxUSE_CONTROLS" = "no"; then
|
||||
DEFAULT_wxUSE_TOOLTIPS=no
|
||||
DEFAULT_wxUSE_TREECTRL=no
|
||||
DEFAULT_wxUSE_POPUPWIN=no
|
||||
DEFAULT_wxUSE_TIPWINDOW=no
|
||||
fi
|
||||
|
||||
WX_ARG_ENABLE(accel, [ --enable-accel use accelerators], wxUSE_ACCEL)
|
||||
@@ -1266,6 +1270,7 @@ WX_ARG_ENABLE(toolbar, [ --enable-toolbar use wxToolBar class], wxUS
|
||||
WX_ARG_ENABLE(tbarnative, [ --enable-tbarnative use native wxToolBar class], wxUSE_TOOLBAR_NATIVE)
|
||||
WX_ARG_ENABLE(tbarsmpl, [ --enable-tbarsmpl use wxToolBarSimple class], wxUSE_TOOLBAR_SIMPLE)
|
||||
WX_ARG_ENABLE(treectrl, [ --enable-treectrl use wxTreeCtrl class], wxUSE_TREECTRL)
|
||||
WX_ARG_ENABLE(tipwindow, [ --enable-tipwindow use wxTipWindow class], wxUSE_TIPWINDOW)
|
||||
WX_ARG_ENABLE(popupwin, [ --enable-popupwin use wxPopUpWindow class], wxUSE_POPUPWIN)
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
@@ -3050,6 +3055,9 @@ fi
|
||||
dnl check for vfork() (even if it's the same as fork() in modern Unices)
|
||||
AC_CHECK_FUNCS(vfork)
|
||||
|
||||
dnl check for the function for temp files creation
|
||||
AC_CHECK_FUNCS(mkstemp mktemp, break)
|
||||
|
||||
dnl get the library function to use for wxGetDiskSpace(): it is statfs() under
|
||||
dnl Linux and *BSD and statvfs() under Solaris
|
||||
AC_CACHE_CHECK(for statfs, wx_cv_func_statfs,
|
||||
@@ -4500,11 +4508,20 @@ if test "$wxUSE_POPUPWIN" = "yes"; then
|
||||
if test "$wxUSE_MAC" = 1; then
|
||||
AC_MSG_WARN([Popup window not yet supported under Mac OS X... disabled])
|
||||
else
|
||||
AC_DEFINE(wxUSE_POPUPWIN)
|
||||
USES_CONTROLS=1
|
||||
if test "$wxUSE_MOTIF" = 1; then
|
||||
AC_MSG_WARN([wxPopupWindow not yet supported under Motif... disabled])
|
||||
else
|
||||
AC_DEFINE(wxUSE_POPUPWIN)
|
||||
|
||||
USES_CONTROLS=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$wxUSE_TIPWINDOW" = "yes"; then
|
||||
AC_DEFINE(wxUSE_TIPWINDOW)
|
||||
fi
|
||||
|
||||
if test "$USES_CONTROLS" = 1; then
|
||||
AC_DEFINE(wxUSE_CONTROLS)
|
||||
fi
|
||||
|
89
contrib/include/wx/gizmos/ledctrl.h
Normal file
89
contrib/include/wx/gizmos/ledctrl.h
Normal file
@@ -0,0 +1,89 @@
|
||||
#ifndef _WX_LEDNUMBERCTRL_H_
|
||||
#define _WX_LEDNUMBERCTRL_H_
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface "wxLEDNumberCtrl.h"
|
||||
#endif
|
||||
|
||||
#ifdef GIZMOISDLL
|
||||
#define GIZMODLLEXPORT WXDLLEXPORT
|
||||
#else
|
||||
#define GIZMODLLEXPORT
|
||||
#endif
|
||||
|
||||
|
||||
#include <wx/window.h>
|
||||
#include <wx/control.h>
|
||||
|
||||
class wxEraseEvent;
|
||||
class wxPaintEvent;
|
||||
class wxSizeEvent;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// enum and styles
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
enum wxLEDValueAlign
|
||||
{
|
||||
wxLED_ALIGN_LEFT = 0x01,
|
||||
wxLED_ALIGN_RIGHT = 0x02,
|
||||
wxLED_ALIGN_CENTER = 0x04,
|
||||
|
||||
wxLED_ALIGN_MASK = 0x04
|
||||
};
|
||||
|
||||
#define wxLED_DRAW_FADED 0x08
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxLEDNumberCtrl
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class GIZMODLLEXPORT wxLEDNumberCtrl : public wxControl
|
||||
{
|
||||
public:
|
||||
// Constructors.
|
||||
wxLEDNumberCtrl();
|
||||
wxLEDNumberCtrl(wxWindow *parent, wxWindowID id = -1,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxLED_ALIGN_LEFT | wxLED_DRAW_FADED);
|
||||
|
||||
// Create functions.
|
||||
bool Create(wxWindow *parent, wxWindowID id = -1,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = 0);
|
||||
|
||||
wxLEDValueAlign GetAlignment() const { return m_Alignment; }
|
||||
bool GetDrawFaded() const { return m_DrawFaded; }
|
||||
const wxString &GetValue() const { return m_Value; }
|
||||
|
||||
void SetAlignment(wxLEDValueAlign Alignment, bool Redraw = TRUE);
|
||||
void SetDrawFaded(bool DrawFaded, bool Redraw = TRUE);
|
||||
void SetValue(const wxString &Value, bool Redraw = TRUE);
|
||||
|
||||
private:
|
||||
// Members.
|
||||
wxString m_Value;
|
||||
wxLEDValueAlign m_Alignment;
|
||||
|
||||
int m_LineMargin;
|
||||
int m_DigitMargin;
|
||||
int m_LineLength;
|
||||
int m_LineWidth;
|
||||
bool m_DrawFaded;
|
||||
int m_LeftStartPos;
|
||||
|
||||
// Functions.
|
||||
void DrawDigit(wxDC &Dc, int Digit, int Column);
|
||||
void RecalcInternals(const wxSize &CurrentSize);
|
||||
|
||||
// Events.
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
void OnEraseBackground(wxEraseEvent &Event);
|
||||
void OnPaint(wxPaintEvent &Event);
|
||||
void OnSize(wxSizeEvent &Event);
|
||||
};
|
||||
|
||||
#endif
|
@@ -15,7 +15,7 @@
|
||||
#define _WX_SPLITTREE_H_
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface "splittree.h"
|
||||
#pragma interface "splittree.h"
|
||||
#endif
|
||||
|
||||
#ifdef GIZMOISDLL
|
||||
@@ -54,16 +54,17 @@ class wxSplitterScrolledWindow;
|
||||
|
||||
class GIZMODLLEXPORT wxRemotelyScrolledTreeCtrl: public wxTreeCtrl
|
||||
{
|
||||
DECLARE_CLASS(wxRemotelyScrolledTreeCtrl)
|
||||
DECLARE_CLASS(wxRemotelyScrolledTreeCtrl)
|
||||
public:
|
||||
wxRemotelyScrolledTreeCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pt = wxDefaultPosition,
|
||||
const wxSize& sz = wxDefaultSize, long style = wxTR_HAS_BUTTONS);
|
||||
~wxRemotelyScrolledTreeCtrl();
|
||||
~wxRemotelyScrolledTreeCtrl();
|
||||
|
||||
//// Events
|
||||
void OnSize(wxSizeEvent& event);
|
||||
void OnExpand(wxTreeEvent& event);
|
||||
void OnSize(wxSizeEvent& event);
|
||||
void OnExpand(wxTreeEvent& event);
|
||||
void OnScroll(wxScrollWinEvent& event);
|
||||
void OnPaint(wxPaintEvent& event);
|
||||
|
||||
//// Overrides
|
||||
// Override this in case we're using the generic tree control.
|
||||
@@ -88,18 +89,18 @@ public:
|
||||
virtual int GetScrollPos(int orient) const;
|
||||
|
||||
//// Helpers
|
||||
void HideVScrollbar();
|
||||
void HideVScrollbar();
|
||||
|
||||
// Calculate the tree overall size so we can set the scrollbar
|
||||
// correctly
|
||||
void CalcTreeSize(wxRect& rect);
|
||||
void CalcTreeSize(const wxTreeItemId& id, wxRect& rect);
|
||||
// Calculate the tree overall size so we can set the scrollbar
|
||||
// correctly
|
||||
void CalcTreeSize(wxRect& rect);
|
||||
void CalcTreeSize(const wxTreeItemId& id, wxRect& rect);
|
||||
|
||||
// Adjust the containing wxScrolledWindow's scrollbars appropriately
|
||||
void AdjustRemoteScrollbars();
|
||||
// Adjust the containing wxScrolledWindow's scrollbars appropriately
|
||||
void AdjustRemoteScrollbars();
|
||||
|
||||
// Find the scrolled window that contains this control
|
||||
wxScrolledWindow* GetScrolledWindow() const;
|
||||
// Find the scrolled window that contains this control
|
||||
wxScrolledWindow* GetScrolledWindow() const;
|
||||
|
||||
// Scroll to the given line (in scroll units where each unit is
|
||||
// the height of an item)
|
||||
@@ -107,15 +108,16 @@ public:
|
||||
|
||||
//// Accessors
|
||||
|
||||
// The companion window is one which will get notified when certain
|
||||
// events happen such as node expansion
|
||||
void SetCompanionWindow(wxWindow* companion) { m_companionWindow = companion; }
|
||||
wxWindow* GetCompanionWindow() const { return m_companionWindow; }
|
||||
// The companion window is one which will get notified when certain
|
||||
// events happen such as node expansion
|
||||
void SetCompanionWindow(wxWindow* companion) { m_companionWindow = companion; }
|
||||
wxWindow* GetCompanionWindow() const { return m_companionWindow; }
|
||||
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
protected:
|
||||
wxWindow* m_companionWindow;
|
||||
wxWindow* m_companionWindow;
|
||||
bool m_drawRowLines;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -135,22 +137,22 @@ public:
|
||||
long style = 0);
|
||||
|
||||
//// Overrides
|
||||
virtual void DrawItem(wxDC& dc, wxTreeItemId id, const wxRect& rect);
|
||||
virtual void DrawItem(wxDC& dc, wxTreeItemId id, const wxRect& rect);
|
||||
|
||||
//// Events
|
||||
void OnPaint(wxPaintEvent& event);
|
||||
void OnPaint(wxPaintEvent& event);
|
||||
void OnScroll(wxScrollWinEvent& event);
|
||||
void OnExpand(wxTreeEvent& event);
|
||||
void OnExpand(wxTreeEvent& event);
|
||||
|
||||
//// Operations
|
||||
|
||||
//// Accessors
|
||||
wxRemotelyScrolledTreeCtrl* GetTreeCtrl() const { return m_treeCtrl; };
|
||||
void SetTreeCtrl(wxRemotelyScrolledTreeCtrl* treeCtrl) { m_treeCtrl = treeCtrl; }
|
||||
wxRemotelyScrolledTreeCtrl* GetTreeCtrl() const { return m_treeCtrl; };
|
||||
void SetTreeCtrl(wxRemotelyScrolledTreeCtrl* treeCtrl) { m_treeCtrl = treeCtrl; }
|
||||
|
||||
//// Data members
|
||||
protected:
|
||||
wxRemotelyScrolledTreeCtrl* m_treeCtrl;
|
||||
wxRemotelyScrolledTreeCtrl* m_treeCtrl;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
@@ -179,7 +181,7 @@ public:
|
||||
// Tests for x, y over sash. Overriding this allows us to increase
|
||||
// the tolerance.
|
||||
bool SashHitTest(int x, int y, int tolerance = 2);
|
||||
void DrawSash(wxDC& dc);
|
||||
void DrawSash(wxDC& dc);
|
||||
|
||||
//// Events
|
||||
|
||||
|
@@ -299,8 +299,6 @@ class wxShape: public wxShapeEvtHandler
|
||||
|
||||
void SetPen(wxPen *pen);
|
||||
void SetBrush(wxBrush *brush);
|
||||
inline void SetClientData(wxObject *client_data) { m_clientData = client_data; };
|
||||
inline wxObject *GetClientData() const { return m_clientData; };
|
||||
|
||||
virtual void Show(bool show);
|
||||
virtual bool IsShown() const { return m_visible; }
|
||||
@@ -520,9 +518,6 @@ class wxShape: public wxShapeEvtHandler
|
||||
wxBrush GetBackgroundBrush();
|
||||
|
||||
|
||||
private:
|
||||
wxObject* m_clientData;
|
||||
|
||||
protected:
|
||||
wxShapeEvtHandler* m_eventHandler;
|
||||
bool m_formatted;
|
||||
|
@@ -1615,6 +1615,7 @@ private:
|
||||
void OnMouseLeftDown(wxMouseEvent& evt);
|
||||
void OnMouseMove(wxMouseEvent& evt);
|
||||
void OnMouseLeftUp(wxMouseEvent& evt);
|
||||
void OnMouseRightUp(wxMouseEvent& evt);
|
||||
void OnContextMenu(wxContextMenuEvent& evt);
|
||||
void OnMouseWheel(wxMouseEvent& evt);
|
||||
void OnChar(wxKeyEvent& evt);
|
||||
@@ -1652,8 +1653,10 @@ private:
|
||||
|
||||
class wxStyledTextEvent : public wxCommandEvent {
|
||||
public:
|
||||
wxStyledTextEvent(const wxStyledTextEvent& event);
|
||||
wxStyledTextEvent(wxEventType commandType=0, int id=0);
|
||||
#ifndef SWIG
|
||||
wxStyledTextEvent(const wxStyledTextEvent& event);
|
||||
#endif
|
||||
~wxStyledTextEvent() {}
|
||||
|
||||
void SetPosition(int pos) { m_position = pos; }
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# $Id$
|
||||
|
||||
CONTRIB_SAMPLES=mmedia ogl stc gizmos canvas xrc plot applet fl
|
||||
CONTRIB_SAMPLES=canvas fl gizmos mmedia net ogl plot stc xrc #applet
|
||||
|
||||
all:
|
||||
@for d in $(CONTRIB_SAMPLES); do (cd $$d && $(MAKE)); done
|
||||
|
@@ -169,8 +169,10 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
||||
m_splitter = new wxThinSplitterWindow(m_scrolledWindow, idSPLITTER_WINDOW, wxDefaultPosition,
|
||||
wxDefaultSize, wxSP_3DBORDER | wxCLIP_CHILDREN /* | wxSP_LIVE_UPDATE */);
|
||||
m_splitter->SetSashSize(2);
|
||||
m_tree = new TestTree(m_splitter, idTREE_CTRL, wxDefaultPosition,
|
||||
wxDefaultSize, wxTR_HAS_BUTTONS | wxTR_NO_LINES | wxNO_BORDER );
|
||||
|
||||
/* Note the wxTR_ROW_LINES style: draws horizontal lines between items */
|
||||
m_tree = new TestTree(m_splitter , idTREE_CTRL, wxDefaultPosition,
|
||||
wxDefaultSize, wxTR_HAS_BUTTONS | wxTR_NO_LINES | wxNO_BORDER | wxTR_ROW_LINES );
|
||||
m_valueWindow = new TestValueWindow(m_splitter, idVALUE_WINDOW, wxDefaultPosition,
|
||||
wxDefaultSize, wxNO_BORDER);
|
||||
m_splitter->SplitVertically(m_tree, m_valueWindow);
|
||||
@@ -230,7 +232,6 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
||||
IMPLEMENT_CLASS(TestTree, wxRemotelyScrolledTreeCtrl)
|
||||
|
||||
BEGIN_EVENT_TABLE(TestTree, wxRemotelyScrolledTreeCtrl)
|
||||
EVT_PAINT(TestTree::OnPaint)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
TestTree::TestTree(wxWindow* parent, wxWindowID id, const wxPoint& pt,
|
||||
@@ -273,39 +274,6 @@ TestTree::~TestTree()
|
||||
delete m_imageList;
|
||||
}
|
||||
|
||||
void TestTree::OnPaint(wxPaintEvent& event)
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
|
||||
wxTreeCtrl::OnPaint(event);
|
||||
|
||||
// Reset the device origin since it may have been set
|
||||
dc.SetDeviceOrigin(0, 0);
|
||||
|
||||
wxPen pen(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID);
|
||||
dc.SetPen(pen);
|
||||
dc.SetBrush(* wxTRANSPARENT_BRUSH);
|
||||
|
||||
wxSize clientSize = GetClientSize();
|
||||
wxRect itemRect;
|
||||
int cy=0;
|
||||
wxTreeItemId h, lastH;
|
||||
for(h=GetFirstVisibleItem();h;h=GetNextVisible(h))
|
||||
{
|
||||
if (GetBoundingRect(h, itemRect))
|
||||
{
|
||||
cy = itemRect.GetTop();
|
||||
dc.DrawLine(0, cy, clientSize.x, cy);
|
||||
lastH = h;
|
||||
}
|
||||
}
|
||||
if (GetBoundingRect(lastH, itemRect))
|
||||
{
|
||||
cy = itemRect.GetBottom();
|
||||
dc.DrawLine(0, cy, clientSize.x, cy);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* TestValueWindow
|
||||
*/
|
||||
|
@@ -45,6 +45,7 @@ protected:
|
||||
wxRemotelyScrolledTreeCtrl* m_tree;
|
||||
wxThinSplitterWindow* m_splitter;
|
||||
wxSplitterScrolledWindow* m_scrolledWindow;
|
||||
//wxScrolledWindow* m_scrolledWindow;
|
||||
TestValueWindow* m_valueWindow;
|
||||
|
||||
private:
|
||||
@@ -78,7 +79,6 @@ public:
|
||||
const wxSize& sz = wxDefaultSize, long style = wxTR_HAS_BUTTONS);
|
||||
~TestTree();
|
||||
|
||||
void OnPaint(wxPaintEvent& event);
|
||||
DECLARE_EVENT_TABLE()
|
||||
protected:
|
||||
wxImageList* m_imageList;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# $Id$
|
||||
|
||||
CONTRIB_SUBDIRS=ogl mmedia stc xrc plot canvas animate fl #applet
|
||||
CONTRIB_SUBDIRS=canvas fl gizmos mmedia net ogl plot stc xrc #applet
|
||||
|
||||
all:
|
||||
@for d in $(CONTRIB_SUBDIRS); do (cd $$d && $(MAKE)); done
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@
|
||||
// Created: 02/01/99
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Aleksandras Gluchovas
|
||||
// Licence: wxWindows license
|
||||
// Licence: wxWindows license
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __GNUG__
|
||||
@@ -31,86 +31,86 @@
|
||||
|
||||
BEGIN_EVENT_TABLE( wxFrameView, wxEvtHandler )
|
||||
|
||||
EVT_IDLE( wxFrameView::OnIdle )
|
||||
EVT_IDLE( wxFrameView::OnIdle )
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
void wxFrameView::OnIdle( wxIdleEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
event.Skip();
|
||||
|
||||
if ( mDoToolUpdates )
|
||||
{
|
||||
int o = 0; //glt
|
||||
++o;
|
||||
if ( mDoToolUpdates )
|
||||
{
|
||||
int o = 0; //glt
|
||||
++o;
|
||||
|
||||
// TBD::
|
||||
}
|
||||
// TBD::
|
||||
}
|
||||
}
|
||||
|
||||
/*** public methods ***/
|
||||
|
||||
wxFrameView::wxFrameView()
|
||||
|
||||
: mpLayout( NULL ),
|
||||
mpFrameMgr( NULL )
|
||||
: mpLayout( NULL ),
|
||||
mpFrameMgr( NULL )
|
||||
{}
|
||||
|
||||
wxFrameView::~wxFrameView()
|
||||
{
|
||||
if ( mpLayout ) delete mpLayout;
|
||||
if ( mpLayout ) delete mpLayout;
|
||||
}
|
||||
|
||||
wxFrame* wxFrameView::GetParentFrame()
|
||||
{
|
||||
return mpFrameMgr->GetParentFrame();
|
||||
return mpFrameMgr->GetParentFrame();
|
||||
}
|
||||
|
||||
wxWindow* wxFrameView::GetClientWindow()
|
||||
{
|
||||
return mpFrameMgr->GetClientWindow();
|
||||
return mpFrameMgr->GetClientWindow();
|
||||
}
|
||||
|
||||
void wxFrameView::Activate()
|
||||
{
|
||||
mpFrameMgr->ActivateView( this );
|
||||
mpFrameMgr->ActivateView( this );
|
||||
}
|
||||
|
||||
void wxFrameView::Deactivate()
|
||||
{
|
||||
mpFrameMgr->DeactivateCurrentView();
|
||||
mpFrameMgr->DeactivateCurrentView();
|
||||
}
|
||||
|
||||
void wxFrameView::CreateLayout()
|
||||
{
|
||||
mpLayout = new wxFrameLayout( GetParentFrame(), mpFrameMgr->GetClientWindow(), FALSE );
|
||||
mpLayout = new wxFrameLayout( GetParentFrame(), mpFrameMgr->GetClientWindow(), FALSE );
|
||||
}
|
||||
|
||||
wxFrameLayout* wxFrameView::GetLayout()
|
||||
{
|
||||
return mpLayout;
|
||||
return mpLayout;
|
||||
}
|
||||
|
||||
void wxFrameView::SetToolUpdates( bool doToolUpdates )
|
||||
{
|
||||
mDoToolUpdates = doToolUpdates;
|
||||
mDoToolUpdates = doToolUpdates;
|
||||
}
|
||||
|
||||
void wxFrameView::SetLayout( wxFrameLayout* pLayout )
|
||||
{
|
||||
if ( mpLayout ) delete mpLayout;
|
||||
if ( mpLayout ) delete mpLayout;
|
||||
|
||||
mpLayout = pLayout;
|
||||
mpLayout = pLayout;
|
||||
}
|
||||
|
||||
wxFrameManager& wxFrameView::GetFrameManager()
|
||||
{
|
||||
return *mpFrameMgr;
|
||||
return *mpFrameMgr;
|
||||
}
|
||||
|
||||
void wxFrameView::RegisterMenu( const wxString& topMenuName )
|
||||
{
|
||||
mTopMenus.Add( topMenuName );
|
||||
mTopMenus.Add( topMenuName );
|
||||
}
|
||||
|
||||
#if 0
|
||||
@@ -121,32 +121,32 @@ void wxFrameView::RegisterMenu( const wxString& topMenuName )
|
||||
|
||||
class wxFrameViewSerializer : public wxEvtHandlerSerializer
|
||||
{
|
||||
DECLARE_SERIALIZER_CLASS( wxFrameViewSerializer );
|
||||
DECLARE_SERIALIZER_CLASS( wxFrameViewSerializer );
|
||||
|
||||
static void Serialize( wxObject* pObj, wxObjectStorage& store );
|
||||
static void Serialize( wxObject* pObj, wxObjectStorage& store );
|
||||
};
|
||||
|
||||
IMPLEMENT_SERIALIZER_CLASS( wxFrameView,
|
||||
wxFrameViewSerializer,
|
||||
wxFrameViewSerializer::Serialize,
|
||||
NO_CLASS_INIT )
|
||||
wxFrameViewSerializer,
|
||||
wxFrameViewSerializer::Serialize,
|
||||
NO_CLASS_INIT )
|
||||
|
||||
void wxFrameViewSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
|
||||
{
|
||||
// wxFrameViewSerializer is a kind of wxEvtHandler - peform serialization of
|
||||
// the base class first
|
||||
// wxFrameViewSerializer is a kind of wxEvtHandler - peform serialization of
|
||||
// the base class first
|
||||
|
||||
info.SerializeInherited( pObj, store );
|
||||
info.SerializeInherited( pObj, store );
|
||||
|
||||
wxFrameView* pView = (wxFrameView*)pObj;
|
||||
wxFrameView* pView = (wxFrameView*)pObj;
|
||||
|
||||
store.XchgObjPtr( (wxObject**) &pView->mpFrameMgr );
|
||||
store.XchgObjPtr( (wxObject**) &pView->mpLayout );
|
||||
store.XchgBool ( pView->mDoToolUpdates );
|
||||
store.XchgObjPtr( (wxObject**) &pView->mpFrameMgr );
|
||||
store.XchgObjPtr( (wxObject**) &pView->mpLayout );
|
||||
store.XchgBool ( pView->mDoToolUpdates );
|
||||
|
||||
// serialize members in derived classes
|
||||
// serialize members in derived classes
|
||||
|
||||
pView->OnSerialize( store );
|
||||
pView->OnSerialize( store );
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -156,263 +156,262 @@ void wxFrameViewSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
|
||||
void wxFrameManager::DoSerialize( wxObjectStorage& store )
|
||||
{
|
||||
#if 0
|
||||
store.AddInitialRef( mpFrameWnd );
|
||||
store.AddInitialRef( this );
|
||||
if ( mpClientWnd ) store.AddInitialRef( mpClientWnd );
|
||||
store.AddInitialRef( mpFrameWnd );
|
||||
store.AddInitialRef( this );
|
||||
if ( mpClientWnd ) store.AddInitialRef( mpClientWnd );
|
||||
|
||||
store.XchgObj( (wxObject*) &mViews );
|
||||
store.XchgInt( mActiveViewNo );
|
||||
store.XchgObj( (wxObject*) &mViews );
|
||||
store.XchgInt( mActiveViewNo );
|
||||
|
||||
store.Finalize(); // finish serialization
|
||||
store.Finalize(); // finish serialization
|
||||
#endif
|
||||
}
|
||||
|
||||
void wxFrameManager::DestroyViews()
|
||||
{
|
||||
DeactivateCurrentView();
|
||||
DeactivateCurrentView();
|
||||
|
||||
wxNode* pNode = mViews.First();
|
||||
wxNode* pNode = mViews.First();
|
||||
|
||||
while( pNode )
|
||||
{
|
||||
delete (wxFrameView*)pNode->Data();
|
||||
while ( pNode )
|
||||
{
|
||||
delete (wxFrameView*)pNode->Data();
|
||||
|
||||
pNode = pNode->Next();
|
||||
}
|
||||
pNode = pNode->Next();
|
||||
}
|
||||
|
||||
if ( mActiveViewNo != -1 && GetParentFrame() )
|
||||
if ( mActiveViewNo != -1 && GetParentFrame() )
|
||||
|
||||
GetParentFrame()->SetNextHandler( NULL );
|
||||
GetParentFrame()->SetNextHandler( NULL );
|
||||
}
|
||||
|
||||
int wxFrameManager::GetViewNo( wxFrameView* pView )
|
||||
{
|
||||
wxNode* pNode = mViews.First();
|
||||
int n = 0;
|
||||
wxNode* pNode = mViews.First();
|
||||
int n = 0;
|
||||
|
||||
while( pNode )
|
||||
{
|
||||
if ( (wxFrameView*)pNode->Data() == pView )
|
||||
while ( pNode )
|
||||
{
|
||||
if ( (wxFrameView*)pNode->Data() == pView )
|
||||
|
||||
return n;
|
||||
return n;
|
||||
|
||||
++n;
|
||||
pNode = pNode->Next();
|
||||
}
|
||||
++n;
|
||||
pNode = pNode->Next();
|
||||
}
|
||||
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
void wxFrameManager::EnableMenusForView( wxFrameView* pView, bool enable )
|
||||
{
|
||||
wxMenuBar* pMenuBar = GetParentFrame()->GetMenuBar();
|
||||
int count = pMenuBar->GetMenuCount();
|
||||
wxMenuBar* pMenuBar = GetParentFrame()->GetMenuBar();
|
||||
int count = pMenuBar->GetMenuCount();
|
||||
|
||||
if ( !pMenuBar ) return;
|
||||
if ( !pMenuBar )
|
||||
return;
|
||||
|
||||
wxStringListNode* pNode = pView->mTopMenus.GetFirst();
|
||||
wxStringListNode* pNode = pView->mTopMenus.GetFirst();
|
||||
|
||||
while( pNode )
|
||||
{
|
||||
for( int i = 0; i != count; ++i )
|
||||
{
|
||||
if ( pMenuBar->GetMenu(i)->GetTitle() == pNode->GetData() )
|
||||
int i;
|
||||
while ( pNode )
|
||||
{
|
||||
for ( i = 0; i != count; ++i )
|
||||
{
|
||||
if ( pMenuBar->GetMenu(i)->GetTitle() == pNode->GetData() )
|
||||
pMenuBar->EnableTop( i, enable );
|
||||
}
|
||||
|
||||
pMenuBar->EnableTop( i, enable );
|
||||
}
|
||||
|
||||
pNode = pNode->GetNext();
|
||||
}
|
||||
pNode = pNode->GetNext();
|
||||
}
|
||||
}
|
||||
|
||||
void wxFrameManager::SyncAllMenus()
|
||||
{
|
||||
wxNode* pNode = mViews.First();
|
||||
int i = 0;
|
||||
wxNode* pNode = mViews.First();
|
||||
int i = 0;
|
||||
|
||||
while( pNode )
|
||||
{
|
||||
if ( i != mActiveViewNo )
|
||||
while ( pNode )
|
||||
{
|
||||
if ( i != mActiveViewNo )
|
||||
|
||||
EnableMenusForView( (wxFrameView*)pNode->GetData(), FALSE );
|
||||
EnableMenusForView( (wxFrameView*)pNode->GetData(), FALSE );
|
||||
|
||||
pNode = pNode->Next();
|
||||
}
|
||||
pNode = pNode->Next();
|
||||
}
|
||||
|
||||
EnableMenusForView( GetView( mActiveViewNo ), TRUE );
|
||||
EnableMenusForView( GetView( mActiveViewNo ), TRUE );
|
||||
}
|
||||
|
||||
/*** public methods ***/
|
||||
|
||||
wxFrameManager::wxFrameManager()
|
||||
|
||||
: mpFrameWnd( NULL ),
|
||||
mActiveViewNo( -1 ),
|
||||
mpClientWnd( NULL )
|
||||
: mpFrameWnd( NULL ),
|
||||
mActiveViewNo( -1 ),
|
||||
mpClientWnd( NULL )
|
||||
{
|
||||
}
|
||||
|
||||
wxFrameManager::~wxFrameManager()
|
||||
{
|
||||
SaveViewsNow();
|
||||
DestroyViews();
|
||||
SaveViewsNow();
|
||||
DestroyViews();
|
||||
}
|
||||
|
||||
void wxFrameManager::Init( wxWindow* pMainFrame, const wxString& settingsFile )
|
||||
{
|
||||
mSettingsFile = settingsFile;
|
||||
mpFrameWnd = pMainFrame;
|
||||
mSettingsFile = settingsFile;
|
||||
mpFrameWnd = pMainFrame;
|
||||
|
||||
wxNode* pNode = mViews.First();
|
||||
wxNode* pNode = mViews.First();
|
||||
|
||||
while( pNode )
|
||||
{
|
||||
wxFrameView* pView = (wxFrameView*)pNode->Data();
|
||||
while ( pNode )
|
||||
{
|
||||
wxFrameView* pView = (wxFrameView*)pNode->Data();
|
||||
|
||||
pView->OnInit();
|
||||
pView->OnInitMenus();
|
||||
pView->OnInit();
|
||||
pView->OnInitMenus();
|
||||
|
||||
pNode = pNode->Next();
|
||||
}
|
||||
pNode = pNode->Next();
|
||||
}
|
||||
|
||||
if ( !ReloadViews() )
|
||||
{
|
||||
// if loading of settings file failed (e.g. was not found),
|
||||
// do recreation of items in each view
|
||||
if ( !ReloadViews() )
|
||||
{
|
||||
// if loading of settings file failed (e.g. was not found),
|
||||
// do recreation of items in each view
|
||||
|
||||
pNode = mViews.First();
|
||||
pNode = mViews.First();
|
||||
|
||||
while( pNode )
|
||||
{
|
||||
wxFrameView* pView = (wxFrameView*)pNode->Data();
|
||||
while ( pNode )
|
||||
{
|
||||
wxFrameView* pView = (wxFrameView*)pNode->Data();
|
||||
|
||||
pView->OnRecreate();
|
||||
pView->OnRecreate();
|
||||
|
||||
pNode = pNode->Next();
|
||||
}
|
||||
}
|
||||
pNode = pNode->Next();
|
||||
}
|
||||
}
|
||||
|
||||
if ( mActiveViewNo >= mViews.Number() )
|
||||
|
||||
mActiveViewNo = -1;
|
||||
if ( mActiveViewNo >= mViews.Number() )
|
||||
mActiveViewNo = -1;
|
||||
|
||||
ActivateView( GetView( ( mActiveViewNo == -1 ) ? 0 : mActiveViewNo ) );
|
||||
ActivateView( GetView( ( mActiveViewNo == -1 ) ? 0 : mActiveViewNo ) );
|
||||
|
||||
SyncAllMenus();
|
||||
SyncAllMenus();
|
||||
}
|
||||
|
||||
void wxFrameManager::AddView( wxFrameView* pFrmView )
|
||||
{
|
||||
mViews.Append( pFrmView );
|
||||
mViews.Append( pFrmView );
|
||||
|
||||
pFrmView->mpFrameMgr = this; // back ref.
|
||||
pFrmView->mpFrameMgr = this; // back ref.
|
||||
}
|
||||
|
||||
void wxFrameManager::RemoveView( wxFrameView* pFrmView )
|
||||
{
|
||||
// TBD::
|
||||
int avoidCompilerWarning = 0;
|
||||
wxASSERT(avoidCompilerWarning);
|
||||
// TBD::
|
||||
wxFAIL_MSG("wxFrameManager::RemoveView() has not been implemented yet.");
|
||||
}
|
||||
|
||||
int wxFrameManager::GetActiveViewNo()
|
||||
{
|
||||
return mActiveViewNo;
|
||||
return mActiveViewNo;
|
||||
}
|
||||
|
||||
wxFrameView* wxFrameManager::GetActiveView()
|
||||
{
|
||||
wxNode* pNode = mViews.Nth( mActiveViewNo );
|
||||
wxNode* pNode = mViews.Nth( mActiveViewNo );
|
||||
|
||||
if ( pNode ) return (wxFrameView*)pNode->Data();
|
||||
else return NULL;
|
||||
if ( pNode ) return (wxFrameView*)pNode->Data();
|
||||
else return NULL;
|
||||
}
|
||||
|
||||
wxNode* wxFrameManager::GetActiveViewNode()
|
||||
{
|
||||
return mViews.Nth( mActiveViewNo );
|
||||
return mViews.Nth( mActiveViewNo );
|
||||
}
|
||||
|
||||
wxFrame* wxFrameManager::GetParentFrame()
|
||||
{
|
||||
return ((wxFrame*)mpFrameWnd);
|
||||
return ((wxFrame*)mpFrameWnd);
|
||||
}
|
||||
|
||||
wxWindow* wxFrameManager::GetParentWindow()
|
||||
{
|
||||
return mpFrameWnd;
|
||||
return mpFrameWnd;
|
||||
}
|
||||
|
||||
wxFrameView* wxFrameManager::GetView( int viewNo )
|
||||
{
|
||||
wxNode* pNode = mViews.Nth( viewNo );
|
||||
wxNode* pNode = mViews.Nth( viewNo );
|
||||
|
||||
if ( pNode ) return (wxFrameView*)pNode->Data();
|
||||
else return NULL;
|
||||
if ( pNode ) return (wxFrameView*)pNode->Data();
|
||||
else return NULL;
|
||||
}
|
||||
|
||||
void wxFrameManager::ActivateView( int viewNo )
|
||||
{
|
||||
ActivateView( GetView( viewNo ) );
|
||||
ActivateView( GetView( viewNo ) );
|
||||
}
|
||||
|
||||
void wxFrameManager::ActivateView( wxFrameView* pFrmView )
|
||||
{
|
||||
DeactivateCurrentView();
|
||||
DeactivateCurrentView();
|
||||
|
||||
mActiveViewNo = GetViewNo( pFrmView );
|
||||
mActiveViewNo = GetViewNo( pFrmView );
|
||||
|
||||
if ( pFrmView->mpLayout )
|
||||
if ( pFrmView->mpLayout )
|
||||
|
||||
pFrmView->mpLayout->Activate();
|
||||
pFrmView->mpLayout->Activate();
|
||||
|
||||
// FIXME:: we would have used PushEventHandler(),
|
||||
// but wxFrame bypasses attached handlers when
|
||||
// handling wxCommand events!
|
||||
// FIXME:: we would have used PushEventHandler(),
|
||||
// but wxFrame bypasses attached handlers when
|
||||
// handling wxCommand events!
|
||||
|
||||
GetParentFrame()->PushEventHandler( pFrmView );
|
||||
GetParentFrame()->PushEventHandler( pFrmView );
|
||||
|
||||
EnableMenusForView( pFrmView, TRUE );
|
||||
EnableMenusForView( pFrmView, TRUE );
|
||||
}
|
||||
|
||||
void wxFrameManager::SetClinetWindow( wxWindow* pFrameClient )
|
||||
{
|
||||
if ( mpClientWnd ) mpClientWnd->Destroy();
|
||||
if ( mpClientWnd ) mpClientWnd->Destroy();
|
||||
|
||||
mpClientWnd = pFrameClient;
|
||||
mpClientWnd = pFrameClient;
|
||||
}
|
||||
|
||||
wxWindow* wxFrameManager::GetClientWindow()
|
||||
{
|
||||
if ( !mpClientWnd )
|
||||
if ( !mpClientWnd )
|
||||
|
||||
mpClientWnd = new wxWindow( GetParentFrame(), -1 );
|
||||
mpClientWnd = new wxWindow( GetParentFrame(), -1 );
|
||||
|
||||
return mpClientWnd;
|
||||
return mpClientWnd;
|
||||
}
|
||||
|
||||
void wxFrameManager::DeactivateCurrentView()
|
||||
{
|
||||
if ( mActiveViewNo == -1 ) return;
|
||||
if ( mActiveViewNo == -1 )
|
||||
return;
|
||||
|
||||
wxFrameView* pView = GetActiveView();
|
||||
wxFrameView* pView = GetActiveView();
|
||||
|
||||
// FOR NOW::
|
||||
wxASSERT( GetParentFrame()->GetEventHandler() == pView );
|
||||
// FOR NOW::
|
||||
wxASSERT( GetParentFrame()->GetEventHandler() == pView );
|
||||
|
||||
GetParentFrame()->PopEventHandler();
|
||||
GetParentFrame()->PopEventHandler();
|
||||
|
||||
if ( pView->mpLayout )
|
||||
if ( pView->mpLayout )
|
||||
pView->mpLayout->Deactivate();
|
||||
|
||||
pView->mpLayout->Deactivate();
|
||||
|
||||
EnableMenusForView( pView, FALSE );
|
||||
EnableMenusForView( pView, FALSE );
|
||||
}
|
||||
|
||||
void wxFrameManager::SaveViewsNow()
|
||||
{
|
||||
#if 0
|
||||
if ( mSettingsFile == "" ) return;
|
||||
if ( mSettingsFile == "" ) return;
|
||||
|
||||
wxIOStreamWrapper stm;
|
||||
stm.CreateForOutput( mSettingsFile );
|
||||
@@ -424,15 +423,14 @@ void wxFrameManager::SaveViewsNow()
|
||||
|
||||
bool wxFrameManager::ReloadViews()
|
||||
{
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
|
||||
// TBD: ????
|
||||
// TBD: ????
|
||||
#if 0
|
||||
if ( mSettingsFile == "" || !wxFileExists( mSettingsFile ) )
|
||||
|
||||
return FALSE;
|
||||
if ( mSettingsFile == "" || !wxFileExists( mSettingsFile ) )
|
||||
return FALSE;
|
||||
|
||||
DestroyViews();
|
||||
DestroyViews();
|
||||
|
||||
wxIOStreamWrapper stm;
|
||||
stm.CreateForInput( mSettingsFile );
|
||||
@@ -440,12 +438,12 @@ bool wxFrameManager::ReloadViews()
|
||||
mStore.SetDataStream( stm );
|
||||
DoSerialize( mStore );
|
||||
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool wxFrameManager::ViewsAreLoaded()
|
||||
{
|
||||
return ( mViews.Number() != 0 );
|
||||
return ( mViews.Number() != 0 );
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -496,8 +496,7 @@ void wxToolWindow::CalcResizedRect( wxRect& rect, wxPoint& delta, const wxSize&
|
||||
}
|
||||
else
|
||||
{
|
||||
int avoidCompilerWarning = 0;
|
||||
wxASSERT(avoidCompilerWarning); // DBG::
|
||||
wxFAIL( _T("what did the cursor hit?") );
|
||||
}
|
||||
|
||||
rect.x = left;
|
||||
|
@@ -7,19 +7,19 @@
|
||||
CFG=GizmosVC - 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
|
||||
!MESSAGE NMAKE /f "GizmosVC.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "GizmosVC.mak" CFG="GizmosVC - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE
|
||||
!MESSAGE "GizmosVC - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "GizmosVC - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
@@ -76,7 +76,7 @@ LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\..\..\lib\gizmosd.lib"
|
||||
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
@@ -118,5 +118,9 @@ SOURCE=.\multicell.cpp
|
||||
|
||||
SOURCE=.\splittree.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ledctrl.cpp
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
|
@@ -13,9 +13,9 @@ LIBVERSION_AGE=0
|
||||
HEADER_PATH=$(top_srcdir)/contrib/include/wx
|
||||
HEADER_SUBDIR=gizmos
|
||||
|
||||
HEADERS=multicell.h splittree.h editlbox.h dynamicsash.h
|
||||
HEADERS=multicell.h splittree.h editlbox.h dynamicsash.h ledctrl.h
|
||||
|
||||
OBJECTS=multicell.o splittree.o editlbox.o dynamicsash.o
|
||||
OBJECTS=multicell.o splittree.o editlbox.o dynamicsash.o ledctrl.o
|
||||
DEPFILES=$(OBJECTS:.o=.d)
|
||||
|
||||
APPEXTRADEFS=-I$(top_srcdir)/contrib/include
|
||||
|
@@ -10,6 +10,23 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "splittree.h"
|
||||
#endif
|
||||
|
||||
// For compilers that support precompilation, includes "wx/wx.h".
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
// for all others, include the necessary headers (this file is usually all you
|
||||
// need because it includes almost all "standard" wxWindows headers)
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/wx.h"
|
||||
#endif
|
||||
|
||||
#include "wx/gizmos/dynamicsash.h"
|
||||
|
||||
/*
|
||||
|
358
contrib/src/gizmos/ledctrl.cpp
Normal file
358
contrib/src/gizmos/ledctrl.cpp
Normal file
@@ -0,0 +1,358 @@
|
||||
// ============================================================================
|
||||
// headers
|
||||
// ============================================================================
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "wxLEDNumberCtrl.h"
|
||||
#endif
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif //__BORLANDC__
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/dcclient.h"
|
||||
#include "wx/dcmemory.h"
|
||||
#include "wx/intl.h"
|
||||
#endif
|
||||
|
||||
#include "wx/gizmos/ledctrl.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// constants
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// A LED digit is build up like this, with maximum 7 Lines :
|
||||
//
|
||||
// 111
|
||||
// 6 2
|
||||
// 777
|
||||
// 5 3
|
||||
// 444
|
||||
//
|
||||
// Each number contains combinations of the lines, and they are set up below.
|
||||
|
||||
const int LINE1 = 1;
|
||||
const int LINE2 = 2;
|
||||
const int LINE3 = 4;
|
||||
const int LINE4 = 8;
|
||||
const int LINE5 = 16;
|
||||
const int LINE6 = 32;
|
||||
const int LINE7 = 64;
|
||||
|
||||
const int DIGIT0 = LINE1 | LINE2 | LINE3 | LINE4 | LINE5 | LINE6;
|
||||
const int DIGIT1 = LINE2 | LINE3;
|
||||
const int DIGIT2 = LINE1 | LINE2 | LINE4 | LINE5 | LINE7;
|
||||
const int DIGIT3 = LINE1 | LINE2 | LINE3 | LINE4 | LINE7;
|
||||
const int DIGIT4 = LINE2 | LINE3 | LINE6 | LINE7;
|
||||
const int DIGIT5 = LINE1 | LINE3 | LINE4 | LINE6 | LINE7;
|
||||
const int DIGIT6 = LINE1 | LINE3 | LINE4 | LINE5 | LINE6 | LINE7;
|
||||
const int DIGIT7 = LINE1 | LINE2 | LINE3;
|
||||
const int DIGIT8 = LINE1 | LINE2 | LINE3 | LINE4 | LINE5 | LINE6 | LINE7;
|
||||
const int DIGIT9 = LINE1 | LINE2 | LINE3 | LINE6 | LINE7;
|
||||
const int DASH = LINE7;
|
||||
|
||||
const int DIGITALL = -1;
|
||||
|
||||
// ============================================================================
|
||||
// wxLEDNumberCtrl class implementation
|
||||
// ============================================================================
|
||||
|
||||
wxLEDNumberCtrl::wxLEDNumberCtrl()
|
||||
: m_Alignment(wxLED_ALIGN_LEFT),
|
||||
m_LineMargin(-1),
|
||||
m_DigitMargin(-1),
|
||||
m_LineLength(-1),
|
||||
m_LineWidth(-1),
|
||||
m_DrawFaded(FALSE),
|
||||
m_LeftStartPos(-1)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
wxLEDNumberCtrl::wxLEDNumberCtrl(wxWindow *parent, wxWindowID id,
|
||||
const wxPoint& pos, const wxSize& size,
|
||||
long style)
|
||||
: m_Alignment(wxLED_ALIGN_LEFT),
|
||||
m_LineMargin(-1),
|
||||
m_DigitMargin(-1),
|
||||
m_LineLength(-1),
|
||||
m_LineWidth(-1),
|
||||
m_DrawFaded(FALSE),
|
||||
m_LeftStartPos(-1)
|
||||
{
|
||||
Create(parent, id, pos, size, style);
|
||||
}
|
||||
|
||||
|
||||
bool wxLEDNumberCtrl::Create(wxWindow *parent, wxWindowID id,
|
||||
const wxPoint& pos, const wxSize& size,
|
||||
long style)
|
||||
{
|
||||
bool RetVal = wxControl::Create(parent, id, pos, size, style);
|
||||
|
||||
if ((style & wxLED_DRAW_FADED) != 0)
|
||||
SetDrawFaded(TRUE);
|
||||
if ((style & wxLED_ALIGN_MASK) != 0)
|
||||
SetAlignment((wxLEDValueAlign)(style & wxLED_ALIGN_MASK));
|
||||
|
||||
SetBackgroundColour(*wxBLACK);
|
||||
SetForegroundColour(*wxGREEN);
|
||||
|
||||
return RetVal;
|
||||
}
|
||||
|
||||
|
||||
void wxLEDNumberCtrl::SetAlignment(wxLEDValueAlign Alignment, bool Redraw)
|
||||
{
|
||||
if (Alignment != m_Alignment)
|
||||
{
|
||||
m_Alignment = Alignment;
|
||||
RecalcInternals(GetClientSize());
|
||||
|
||||
if (Redraw)
|
||||
Refresh(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxLEDNumberCtrl::SetDrawFaded(bool DrawFaded, bool Redraw)
|
||||
{
|
||||
if (DrawFaded != m_DrawFaded)
|
||||
{
|
||||
m_DrawFaded = DrawFaded;
|
||||
|
||||
if (Redraw)
|
||||
Refresh(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxLEDNumberCtrl::SetValue(wxString const &Value, bool Redraw)
|
||||
{
|
||||
if (Value != m_Value)
|
||||
{
|
||||
if (!Value.IsEmpty())
|
||||
{
|
||||
for(size_t i=0; i<Value.Length(); i++) {
|
||||
wxChar ch = Value[i];
|
||||
wxASSERT_MSG((ch>='0' && ch<='9') || ch=='-' || ch==' ',
|
||||
wxT("wxLEDNumberCtrl can only display numeric string values."));
|
||||
}
|
||||
}
|
||||
|
||||
m_Value = Value;
|
||||
RecalcInternals(GetClientSize());
|
||||
|
||||
if (Redraw)
|
||||
Refresh(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BEGIN_EVENT_TABLE(wxLEDNumberCtrl, wxControl)
|
||||
EVT_ERASE_BACKGROUND(wxLEDNumberCtrl::OnEraseBackground)
|
||||
EVT_PAINT(wxLEDNumberCtrl::OnPaint)
|
||||
EVT_SIZE(wxLEDNumberCtrl::OnSize)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
void wxLEDNumberCtrl::OnEraseBackground(wxEraseEvent &Event)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxLEDNumberCtrl::OnPaint(wxPaintEvent &Event)
|
||||
{
|
||||
wxPaintDC Dc(this);
|
||||
|
||||
int Width, Height;
|
||||
GetClientSize(&Width, &Height);
|
||||
|
||||
wxBitmap *pMemoryBitmap = new wxBitmap(Width, Height);
|
||||
wxMemoryDC MemDc;
|
||||
|
||||
MemDc.SelectObject(*pMemoryBitmap);
|
||||
MemDc.BeginDrawing();
|
||||
|
||||
// Draw background.
|
||||
MemDc.SetBrush(wxBrush(GetBackgroundColour(), wxSOLID));
|
||||
MemDc.DrawRectangle(wxRect(0, 0, Width, Height));
|
||||
MemDc.SetBrush(wxNullBrush);
|
||||
|
||||
// Iterate each digit in the value, and draw.
|
||||
const int DigitCount = m_Value.Len();
|
||||
for (int i = 0; i < DigitCount; ++i)
|
||||
{
|
||||
// Draw faded lines if wanted.
|
||||
if (m_DrawFaded)
|
||||
DrawDigit(MemDc, DIGITALL, i);
|
||||
|
||||
// Draw the digits.
|
||||
switch (m_Value[i])
|
||||
{
|
||||
case '0' :
|
||||
DrawDigit(MemDc, DIGIT0, i);
|
||||
break;
|
||||
case '1' :
|
||||
DrawDigit(MemDc, DIGIT1, i);
|
||||
break;
|
||||
case '2' :
|
||||
DrawDigit(MemDc, DIGIT2, i);
|
||||
break;
|
||||
case '3' :
|
||||
DrawDigit(MemDc, DIGIT3, i);
|
||||
break;
|
||||
case '4' :
|
||||
DrawDigit(MemDc, DIGIT4, i);
|
||||
break;
|
||||
case '5' :
|
||||
DrawDigit(MemDc, DIGIT5, i);
|
||||
break;
|
||||
case '6' :
|
||||
DrawDigit(MemDc, DIGIT6, i);
|
||||
break;
|
||||
case '7' :
|
||||
DrawDigit(MemDc, DIGIT7, i);
|
||||
break;
|
||||
case '8' :
|
||||
DrawDigit(MemDc, DIGIT8, i);
|
||||
break;
|
||||
case '9' :
|
||||
DrawDigit(MemDc, DIGIT9, i);
|
||||
break;
|
||||
case '-' :
|
||||
DrawDigit(MemDc, DASH, i);
|
||||
break;
|
||||
case ' ' :
|
||||
// just skip it
|
||||
break;
|
||||
default :
|
||||
wxFAIL_MSG(_("Unknown digit value"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
MemDc.EndDrawing();
|
||||
|
||||
// Blit the memory dc to screen.
|
||||
Dc.Blit(0, 0, Width, Height, &MemDc, 0, 0, wxCOPY);
|
||||
delete pMemoryBitmap;
|
||||
}
|
||||
|
||||
|
||||
void wxLEDNumberCtrl::DrawDigit(wxDC &Dc, int Digit, int Column)
|
||||
{
|
||||
wxColour LineColor(GetForegroundColour());
|
||||
|
||||
if (Digit == DIGITALL)
|
||||
{
|
||||
const int R = LineColor.Red() / 3;
|
||||
const int G = LineColor.Green() / 3;
|
||||
const int B = LineColor.Blue() / 3;
|
||||
|
||||
LineColor.Set(R, G, B);
|
||||
}
|
||||
|
||||
int XPos = m_LeftStartPos;
|
||||
|
||||
if (Column > 0)
|
||||
XPos += (Column * m_LineLength) + (m_DigitMargin) * Column;
|
||||
|
||||
// Create a pen and draw the lines.
|
||||
wxPen Pen(LineColor, m_LineWidth, wxSOLID);
|
||||
Dc.SetPen(Pen);
|
||||
|
||||
if ((Digit & LINE1))
|
||||
{
|
||||
Dc.DrawLine(XPos + m_LineMargin*2, m_LineMargin,
|
||||
XPos + m_LineLength, m_LineMargin);
|
||||
}
|
||||
|
||||
if (Digit & LINE2)
|
||||
{
|
||||
Dc.DrawLine(XPos + m_LineLength + m_LineMargin, m_LineMargin*2,
|
||||
XPos + m_LineLength + m_LineMargin, m_LineLength + (m_LineMargin*2));
|
||||
}
|
||||
|
||||
if (Digit & LINE3)
|
||||
{
|
||||
Dc.DrawLine(XPos + m_LineLength + m_LineMargin, m_LineLength + (m_LineMargin*4),
|
||||
XPos + m_LineLength + m_LineMargin, m_LineLength*2 + (m_LineMargin*3));
|
||||
}
|
||||
|
||||
if (Digit & LINE4)
|
||||
{
|
||||
Dc.DrawLine(XPos + m_LineMargin*2, m_LineLength*2 + (m_LineMargin*4),
|
||||
XPos + m_LineLength, m_LineLength*2 + (m_LineMargin*4));
|
||||
}
|
||||
|
||||
if (Digit & LINE5)
|
||||
{
|
||||
Dc.DrawLine(XPos + m_LineMargin, m_LineLength + (m_LineMargin*4),
|
||||
XPos + m_LineMargin, m_LineLength*2 + (m_LineMargin*3));
|
||||
}
|
||||
|
||||
if (Digit & LINE6)
|
||||
{
|
||||
Dc.DrawLine(XPos + m_LineMargin, m_LineMargin*2,
|
||||
XPos + m_LineMargin, m_LineLength + (m_LineMargin*2));
|
||||
}
|
||||
|
||||
if (Digit & LINE7)
|
||||
{
|
||||
Dc.DrawLine(XPos + m_LineMargin*2, m_LineLength + (m_LineMargin*3),
|
||||
XPos + m_LineMargin + m_LineLength - m_LineMargin, m_LineLength + (m_LineMargin*3));
|
||||
}
|
||||
|
||||
Dc.SetPen(wxNullPen);
|
||||
}
|
||||
|
||||
|
||||
void wxLEDNumberCtrl::RecalcInternals(const wxSize &CurrentSize)
|
||||
{
|
||||
const int Height = CurrentSize.GetHeight();
|
||||
|
||||
if ((Height * 0.07) < 1)
|
||||
m_LineMargin = 1;
|
||||
else
|
||||
m_LineMargin = Height * 0.07;
|
||||
|
||||
if ((Height * 0.35) < 1)
|
||||
m_LineLength = 1;
|
||||
else
|
||||
m_LineLength = Height * 0.35;
|
||||
|
||||
m_LineWidth = m_LineMargin;
|
||||
|
||||
m_DigitMargin = m_LineMargin * 4;
|
||||
|
||||
const int ValueWidth = (m_LineLength + m_DigitMargin) * m_Value.Len();
|
||||
const int ClientWidth = CurrentSize.GetWidth();
|
||||
|
||||
switch (m_Alignment)
|
||||
{
|
||||
case wxLED_ALIGN_LEFT :
|
||||
m_LeftStartPos = 0;
|
||||
break;
|
||||
case wxLED_ALIGN_RIGHT :
|
||||
m_LeftStartPos = ClientWidth - ValueWidth;
|
||||
break;
|
||||
case wxLED_ALIGN_CENTER :
|
||||
m_LeftStartPos = (ClientWidth - ValueWidth) / 2;
|
||||
break;
|
||||
default :
|
||||
wxFAIL_MSG(_("Unknown alignent value for wxLEDNumberCtrl."));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxLEDNumberCtrl::OnSize(wxSizeEvent &Event)
|
||||
{
|
||||
RecalcInternals(Event.GetSize());
|
||||
|
||||
Event.Skip();
|
||||
}
|
@@ -2,7 +2,7 @@
|
||||
# File: makefile.b32
|
||||
# Author: Julian Smart
|
||||
# Created: 1999
|
||||
# Updated:
|
||||
# Updated:
|
||||
# Copyright:
|
||||
#
|
||||
# Makefile : Builds Gizmos library for 32-bit BC++
|
||||
@@ -11,7 +11,7 @@ WXDIR = $(WXWIN)
|
||||
|
||||
LIBTARGET=$(WXDIR)\lib\gizmos.lib
|
||||
|
||||
OBJECTS = multicell.obj splittree.obj editlbox.obj dynamicsash.obj
|
||||
OBJECTS = multicell.obj splittree.obj editlbox.obj dynamicsash.obj ledctrl.obj
|
||||
|
||||
!include $(WXDIR)\src\makelib.b32
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
# File: makefile.bcc
|
||||
# Author: Julian Smart
|
||||
# Created: 1998
|
||||
# Updated:
|
||||
# Updated:
|
||||
#
|
||||
# Builds Gizmos library for BC++, 16-bit
|
||||
|
||||
@@ -14,7 +14,7 @@ WXDIR = $(WXWIN)
|
||||
|
||||
LIBTARGET=$(WXDIR)\lib\gizmos.lib
|
||||
|
||||
OBJECTS = multicell.obj splittree.obj editlbox.obj dynamicsash.obj
|
||||
OBJECTS = multicell.obj splittree.obj editlbox.obj dynamicsash.obj ledctrl.obj
|
||||
|
||||
!include $(WXDIR)\src\makelib.bcc
|
||||
|
||||
|
@@ -10,7 +10,7 @@
|
||||
WXDIR = ../../..
|
||||
|
||||
LIBTARGET=$(WXDIR)/lib/libgizmos.a
|
||||
OBJECTS = multicell.o splittree.o editlbox.o dynamicsash.o
|
||||
OBJECTS = multicell.o splittree.o editlbox.o dynamicsash.o ledctrl.o
|
||||
|
||||
include $(WXDIR)/src/makelib.g95
|
||||
|
||||
|
@@ -23,7 +23,7 @@ LOCALDOCDIR=$(WXDIR)\contrib\docs\latex\gizmos
|
||||
|
||||
!include $(WXDIR)\src\makevc.env
|
||||
|
||||
OBJECTS = $(D)\multicell.obj $(D)\splittree.obj $(D)\editlbox.obj $(D)\dynamicsash.obj
|
||||
OBJECTS = $(D)\multicell.obj $(D)\splittree.obj $(D)\editlbox.obj $(D)\dynamicsash.obj $(D)\ledctrl.obj
|
||||
|
||||
LIBTARGET=$(WXDIR)\lib\gizmos$(LIBEXT).lib
|
||||
|
||||
|
@@ -10,7 +10,7 @@ THISDIR = $(WXDIR)\contrib\src\gizmos
|
||||
NAME = gizmos
|
||||
LNK = $(name).lnk
|
||||
|
||||
OBJECTS = multicell.obj splittree.obj editlbox.obj dynamicsash.obj
|
||||
OBJECTS = multicell.obj splittree.obj editlbox.obj dynamicsash.obj ledctrl.obj
|
||||
|
||||
all: $(GIZMOSLIB)
|
||||
|
||||
|
@@ -58,17 +58,25 @@ BEGIN_EVENT_TABLE(wxRemotelyScrolledTreeCtrl, wxGenericTreeCtrl)
|
||||
#else
|
||||
BEGIN_EVENT_TABLE(wxRemotelyScrolledTreeCtrl, wxTreeCtrl)
|
||||
#endif
|
||||
EVT_SIZE(wxRemotelyScrolledTreeCtrl::OnSize)
|
||||
EVT_TREE_ITEM_EXPANDED(-1, wxRemotelyScrolledTreeCtrl::OnExpand)
|
||||
EVT_TREE_ITEM_COLLAPSED(-1, wxRemotelyScrolledTreeCtrl::OnExpand)
|
||||
EVT_SCROLLWIN(wxRemotelyScrolledTreeCtrl::OnScroll)
|
||||
EVT_SIZE(wxRemotelyScrolledTreeCtrl::OnSize)
|
||||
EVT_PAINT(wxRemotelyScrolledTreeCtrl::OnPaint)
|
||||
EVT_TREE_ITEM_EXPANDED(-1, wxRemotelyScrolledTreeCtrl::OnExpand)
|
||||
EVT_TREE_ITEM_COLLAPSED(-1, wxRemotelyScrolledTreeCtrl::OnExpand)
|
||||
EVT_SCROLLWIN(wxRemotelyScrolledTreeCtrl::OnScroll)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxRemotelyScrolledTreeCtrl::wxRemotelyScrolledTreeCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pt,
|
||||
const wxSize& sz, long style):
|
||||
wxTreeCtrl(parent, id, pt, sz, style)
|
||||
wxRemotelyScrolledTreeCtrl::wxRemotelyScrolledTreeCtrl(
|
||||
wxWindow* parent, wxWindowID id, const wxPoint& pt,
|
||||
const wxSize& sz, long style)
|
||||
: wxTreeCtrl(parent, id, pt, sz, style & ~wxTR_ROW_LINES)
|
||||
{
|
||||
m_companionWindow = NULL;
|
||||
m_companionWindow = NULL;
|
||||
|
||||
// We draw the row lines ourself so they match what's done
|
||||
// by the companion window. That is why the flag is turned
|
||||
// off above, so wxGenericTreeCtrl doesn't draw them in a
|
||||
// different colour.
|
||||
m_drawRowLines = (style & wxTR_ROW_LINES) != 0;
|
||||
}
|
||||
|
||||
wxRemotelyScrolledTreeCtrl::~wxRemotelyScrolledTreeCtrl()
|
||||
@@ -77,16 +85,20 @@ wxRemotelyScrolledTreeCtrl::~wxRemotelyScrolledTreeCtrl()
|
||||
|
||||
void wxRemotelyScrolledTreeCtrl::HideVScrollbar()
|
||||
{
|
||||
#if defined(__WXMSW__) && USE_GENERIC_TREECTRL
|
||||
#if defined(__WXMSW__)
|
||||
#if USE_GENERIC_TREECTRL
|
||||
if (!IsKindOf(CLASSINFO(wxGenericTreeCtrl)))
|
||||
#endif
|
||||
{
|
||||
::ShowScrollBar((HWND) GetHWND(), SB_VERT, FALSE);
|
||||
}
|
||||
#if USE_GENERIC_TREECTRL
|
||||
else
|
||||
#endif
|
||||
{
|
||||
// Implicit in overriding SetScrollbars
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
// Number of pixels per user unit (0 or -1 for no scrollbar)
|
||||
@@ -103,9 +115,9 @@ void wxRemotelyScrolledTreeCtrl::SetScrollbars(int pixelsPerUnitX, int pixelsPer
|
||||
wxGenericTreeCtrl* win = (wxGenericTreeCtrl*) this;
|
||||
win->wxGenericTreeCtrl::SetScrollbars(pixelsPerUnitX, 0, noUnitsX, 0, xPos, 0, noRefresh);
|
||||
|
||||
wxScrolledWindow* scrolledWindow = GetScrolledWindow();
|
||||
if (scrolledWindow)
|
||||
{
|
||||
wxScrolledWindow* scrolledWindow = GetScrolledWindow();
|
||||
if (scrolledWindow)
|
||||
{
|
||||
scrolledWindow->SetScrollbars(0, pixelsPerUnitY, 0, noUnitsY, 0, yPos, noRefresh);
|
||||
}
|
||||
}
|
||||
@@ -154,13 +166,13 @@ void wxRemotelyScrolledTreeCtrl::GetViewStart(int *x, int *y) const
|
||||
scrolledWindow->GetViewStart(& x2, & y2);
|
||||
* y = y2;
|
||||
}
|
||||
else
|
||||
else
|
||||
#endif
|
||||
{
|
||||
// x is wrong since the horizontal scrollbar is controlled by the
|
||||
// tree control, but we probably don't need it.
|
||||
{
|
||||
// x is wrong since the horizontal scrollbar is controlled by the
|
||||
// tree control, but we probably don't need it.
|
||||
scrolledWindow->GetViewStart(x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// In case we're using the generic tree control.
|
||||
@@ -169,7 +181,7 @@ void wxRemotelyScrolledTreeCtrl::PrepareDC(wxDC& dc)
|
||||
#if USE_GENERIC_TREECTRL || !defined(__WXMSW__)
|
||||
if (IsKindOf(CLASSINFO(wxGenericTreeCtrl)))
|
||||
{
|
||||
wxScrolledWindow* scrolledWindow = GetScrolledWindow();
|
||||
wxScrolledWindow* scrolledWindow = GetScrolledWindow();
|
||||
|
||||
wxGenericTreeCtrl* win = (wxGenericTreeCtrl*) this;
|
||||
|
||||
@@ -195,9 +207,9 @@ void wxRemotelyScrolledTreeCtrl::ScrollToLine(int posHoriz, int posVert)
|
||||
if (!IsKindOf(CLASSINFO(wxGenericTreeCtrl)))
|
||||
#endif
|
||||
{
|
||||
UINT sbCode = SB_THUMBPOSITION;
|
||||
HWND vertScrollBar = 0;
|
||||
MSWDefWindowProc((WXUINT) WM_VSCROLL, MAKELONG(sbCode, posVert), (WXHWND) vertScrollBar);
|
||||
UINT sbCode = SB_THUMBPOSITION;
|
||||
HWND vertScrollBar = 0;
|
||||
MSWDefWindowProc((WXUINT) WM_VSCROLL, MAKELONG(sbCode, posVert), (WXHWND) vertScrollBar);
|
||||
}
|
||||
#if USE_GENERIC_TREECTRL
|
||||
else
|
||||
@@ -206,90 +218,127 @@ void wxRemotelyScrolledTreeCtrl::ScrollToLine(int posHoriz, int posVert)
|
||||
#if USE_GENERIC_TREECTRL || !defined(__WXMSW__)
|
||||
{
|
||||
wxGenericTreeCtrl* win = (wxGenericTreeCtrl*) this;
|
||||
win->Refresh();
|
||||
/* Doesn't work yet because scrolling is ignored by Scroll
|
||||
win->Refresh();
|
||||
/* Doesn't work yet because scrolling is ignored by Scroll
|
||||
int xppu, yppu;
|
||||
wxScrolledWindow* scrolledWindow = GetScrolledWindow();
|
||||
if (scrolledWindow)
|
||||
{
|
||||
scrolledWindow->GetScrollPixelsPerUnit(& xppu, & yppu);
|
||||
win->Scroll(-1, posVert*yppu);
|
||||
}
|
||||
*/
|
||||
wxScrolledWindow* scrolledWindow = GetScrolledWindow();
|
||||
if (scrolledWindow)
|
||||
{
|
||||
scrolledWindow->GetScrollPixelsPerUnit(& xppu, & yppu);
|
||||
win->Scroll(-1, posVert*yppu);
|
||||
}
|
||||
*/
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void wxRemotelyScrolledTreeCtrl::OnSize(wxSizeEvent& event)
|
||||
{
|
||||
HideVScrollbar();
|
||||
AdjustRemoteScrollbars();
|
||||
event.Skip();
|
||||
HideVScrollbar();
|
||||
AdjustRemoteScrollbars();
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
void wxRemotelyScrolledTreeCtrl::OnExpand(wxTreeEvent& event)
|
||||
{
|
||||
AdjustRemoteScrollbars();
|
||||
event.Skip();
|
||||
AdjustRemoteScrollbars();
|
||||
event.Skip();
|
||||
|
||||
// If we don't have this, we get some bits of lines still remaining
|
||||
if (event.GetEventType() == wxEVT_COMMAND_TREE_ITEM_COLLAPSED)
|
||||
Refresh();
|
||||
|
||||
// Pass on the event
|
||||
if (m_companionWindow)
|
||||
m_companionWindow->GetEventHandler()->ProcessEvent(event);
|
||||
// Pass on the event
|
||||
if (m_companionWindow)
|
||||
m_companionWindow->GetEventHandler()->ProcessEvent(event);
|
||||
}
|
||||
|
||||
void wxRemotelyScrolledTreeCtrl::OnPaint(wxPaintEvent& event)
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
|
||||
wxTreeCtrl::OnPaint(event);
|
||||
|
||||
if (! m_drawRowLines)
|
||||
return;
|
||||
|
||||
// Reset the device origin since it may have been set
|
||||
dc.SetDeviceOrigin(0, 0);
|
||||
|
||||
wxPen pen(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID);
|
||||
dc.SetPen(pen);
|
||||
dc.SetBrush(* wxTRANSPARENT_BRUSH);
|
||||
|
||||
wxSize clientSize = GetClientSize();
|
||||
wxRect itemRect;
|
||||
int cy=0;
|
||||
wxTreeItemId h, lastH;
|
||||
for(h=GetFirstVisibleItem();h;h=GetNextVisible(h))
|
||||
{
|
||||
if (GetBoundingRect(h, itemRect))
|
||||
{
|
||||
cy = itemRect.GetTop();
|
||||
dc.DrawLine(0, cy, clientSize.x, cy);
|
||||
lastH = h;
|
||||
}
|
||||
}
|
||||
if (GetBoundingRect(lastH, itemRect))
|
||||
{
|
||||
cy = itemRect.GetBottom();
|
||||
dc.DrawLine(0, cy, clientSize.x, cy);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Adjust the containing wxScrolledWindow's scrollbars appropriately
|
||||
void wxRemotelyScrolledTreeCtrl::AdjustRemoteScrollbars()
|
||||
{
|
||||
#if USE_GENERIC_TREECTRL || !defined(__WXMSW__)
|
||||
if (IsKindOf(CLASSINFO(wxGenericTreeCtrl)))
|
||||
{
|
||||
// This is for the generic tree control.
|
||||
// It calls SetScrollbars which has been overridden
|
||||
// to adjust the parent scrolled window vertical
|
||||
// scrollbar.
|
||||
((wxGenericTreeCtrl*) this)->AdjustMyScrollbars();
|
||||
{
|
||||
// This is for the generic tree control.
|
||||
// It calls SetScrollbars which has been overridden
|
||||
// to adjust the parent scrolled window vertical
|
||||
// scrollbar.
|
||||
((wxGenericTreeCtrl*) this)->AdjustMyScrollbars();
|
||||
return;
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
// This is for the wxMSW tree control
|
||||
wxScrolledWindow* scrolledWindow = GetScrolledWindow();
|
||||
if (scrolledWindow)
|
||||
{
|
||||
wxRect itemRect;
|
||||
if (GetBoundingRect(GetRootItem(), itemRect))
|
||||
{
|
||||
{
|
||||
// This is for the wxMSW tree control
|
||||
wxScrolledWindow* scrolledWindow = GetScrolledWindow();
|
||||
if (scrolledWindow)
|
||||
{
|
||||
wxRect itemRect;
|
||||
if (GetBoundingRect(GetRootItem(), itemRect))
|
||||
{
|
||||
// Actually, the real height seems to be 1 less than reported
|
||||
// (e.g. 16 instead of 16)
|
||||
int itemHeight = itemRect.GetHeight() - 1;
|
||||
|
||||
int w, h;
|
||||
GetClientSize(&w, &h);
|
||||
|
||||
wxRect rect(0, 0, 0, 0);
|
||||
CalcTreeSize(rect);
|
||||
|
||||
int w, h;
|
||||
GetClientSize(&w, &h);
|
||||
|
||||
wxRect rect(0, 0, 0, 0);
|
||||
CalcTreeSize(rect);
|
||||
|
||||
double f = ((double) (rect.GetHeight()) / (double) itemHeight) ;
|
||||
int treeViewHeight = (int) ceil(f);
|
||||
|
||||
int scrollPixelsPerLine = itemHeight;
|
||||
int scrollPos = - (itemRect.y / itemHeight);
|
||||
|
||||
scrolledWindow->SetScrollbars(0, scrollPixelsPerLine, 0, treeViewHeight, 0, scrollPos);
|
||||
|
||||
// Ensure that when a scrollbar becomes hidden or visible,
|
||||
// the contained window sizes are right.
|
||||
// Problem: this is called too early (?)
|
||||
wxSizeEvent event(scrolledWindow->GetSize(), scrolledWindow->GetId());
|
||||
scrolledWindow->GetEventHandler()->ProcessEvent(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int scrollPixelsPerLine = itemHeight;
|
||||
int scrollPos = - (itemRect.y / itemHeight);
|
||||
|
||||
scrolledWindow->SetScrollbars(0, scrollPixelsPerLine, 0, treeViewHeight, 0, scrollPos);
|
||||
|
||||
// Ensure that when a scrollbar becomes hidden or visible,
|
||||
// the contained window sizes are right.
|
||||
// Problem: this is called too early (?)
|
||||
wxSizeEvent event(scrolledWindow->GetSize(), scrolledWindow->GetId());
|
||||
scrolledWindow->GetEventHandler()->ProcessEvent(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -302,10 +351,10 @@ static wxRect CombineRectangles(const wxRect& rect1, const wxRect& rect2)
|
||||
int bottom1 = rect1.GetBottom();
|
||||
int right2 = rect2.GetRight();
|
||||
int bottom2 = rect2.GetBottom();
|
||||
|
||||
|
||||
wxPoint topLeft = wxPoint(wxMin(rect1.x, rect2.x), wxMin(rect1.y, rect2.y));
|
||||
wxPoint bottomRight = wxPoint(wxMax(right1, right2), wxMax(bottom1, bottom2));
|
||||
|
||||
|
||||
rect.x = topLeft.x; rect.y = topLeft.y;
|
||||
rect.SetRight(bottomRight.x);
|
||||
rect.SetBottom(bottomRight.y);
|
||||
@@ -318,40 +367,40 @@ static wxRect CombineRectangles(const wxRect& rect1, const wxRect& rect2)
|
||||
// correctly
|
||||
void wxRemotelyScrolledTreeCtrl::CalcTreeSize(wxRect& rect)
|
||||
{
|
||||
CalcTreeSize(GetRootItem(), rect);
|
||||
CalcTreeSize(GetRootItem(), rect);
|
||||
}
|
||||
|
||||
void wxRemotelyScrolledTreeCtrl::CalcTreeSize(const wxTreeItemId& id, wxRect& rect)
|
||||
{
|
||||
// More efficient implementation would be to find the last item (but how?)
|
||||
// Q: is the bounding rect relative to the top of the virtual tree workspace
|
||||
// or the top of the window? How would we convert?
|
||||
wxRect itemSize;
|
||||
if (GetBoundingRect(id, itemSize))
|
||||
{
|
||||
rect = CombineRectangles(rect, itemSize);
|
||||
}
|
||||
// More efficient implementation would be to find the last item (but how?)
|
||||
// Q: is the bounding rect relative to the top of the virtual tree workspace
|
||||
// or the top of the window? How would we convert?
|
||||
wxRect itemSize;
|
||||
if (GetBoundingRect(id, itemSize))
|
||||
{
|
||||
rect = CombineRectangles(rect, itemSize);
|
||||
}
|
||||
|
||||
long cookie;
|
||||
wxTreeItemId childId = GetFirstChild(id, cookie);
|
||||
while (childId != 0)
|
||||
{
|
||||
CalcTreeSize(childId, rect);
|
||||
childId = GetNextChild(childId, cookie);
|
||||
}
|
||||
long cookie;
|
||||
wxTreeItemId childId = GetFirstChild(id, cookie);
|
||||
while (childId != 0)
|
||||
{
|
||||
CalcTreeSize(childId, rect);
|
||||
childId = GetNextChild(childId, cookie);
|
||||
}
|
||||
}
|
||||
|
||||
// Find the scrolled window that contains this control
|
||||
wxScrolledWindow* wxRemotelyScrolledTreeCtrl::GetScrolledWindow() const
|
||||
{
|
||||
wxWindow* parent = wxWindow::GetParent();
|
||||
while (parent)
|
||||
{
|
||||
if (parent->IsKindOf(CLASSINFO(wxScrolledWindow)))
|
||||
return (wxScrolledWindow*) parent;
|
||||
parent = parent->GetParent();
|
||||
}
|
||||
return NULL;
|
||||
wxWindow* parent = wxWindow::GetParent();
|
||||
while (parent)
|
||||
{
|
||||
if (parent->IsKindOf(CLASSINFO(wxScrolledWindow)))
|
||||
return (wxScrolledWindow*) parent;
|
||||
parent = parent->GetParent();
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void wxRemotelyScrolledTreeCtrl::OnScroll(wxScrollWinEvent& event)
|
||||
@@ -381,78 +430,78 @@ void wxRemotelyScrolledTreeCtrl::OnScroll(wxScrollWinEvent& event)
|
||||
IMPLEMENT_CLASS(wxTreeCompanionWindow, wxWindow)
|
||||
|
||||
BEGIN_EVENT_TABLE(wxTreeCompanionWindow, wxWindow)
|
||||
EVT_PAINT(wxTreeCompanionWindow::OnPaint)
|
||||
EVT_SCROLLWIN(wxTreeCompanionWindow::OnScroll)
|
||||
EVT_TREE_ITEM_EXPANDED(-1, wxTreeCompanionWindow::OnExpand)
|
||||
EVT_TREE_ITEM_COLLAPSED(-1, wxTreeCompanionWindow::OnExpand)
|
||||
EVT_PAINT(wxTreeCompanionWindow::OnPaint)
|
||||
EVT_SCROLLWIN(wxTreeCompanionWindow::OnScroll)
|
||||
EVT_TREE_ITEM_EXPANDED(-1, wxTreeCompanionWindow::OnExpand)
|
||||
EVT_TREE_ITEM_COLLAPSED(-1, wxTreeCompanionWindow::OnExpand)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxTreeCompanionWindow::wxTreeCompanionWindow(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos,
|
||||
const wxSize& sz,
|
||||
long style):
|
||||
wxWindow(parent, id, pos, sz, style)
|
||||
wxWindow(parent, id, pos, sz, style)
|
||||
{
|
||||
m_treeCtrl = NULL;
|
||||
m_treeCtrl = NULL;
|
||||
}
|
||||
|
||||
void wxTreeCompanionWindow::DrawItem(wxDC& dc, wxTreeItemId id, const wxRect& rect)
|
||||
{
|
||||
// TEST CODE
|
||||
// TEST CODE
|
||||
#if 1
|
||||
if (m_treeCtrl)
|
||||
{
|
||||
wxString text = m_treeCtrl->GetItemText(id);
|
||||
dc.SetTextForeground(* wxBLACK);
|
||||
dc.SetBackgroundMode(wxTRANSPARENT);
|
||||
if (m_treeCtrl)
|
||||
{
|
||||
wxString text = m_treeCtrl->GetItemText(id);
|
||||
dc.SetTextForeground(* wxBLACK);
|
||||
dc.SetBackgroundMode(wxTRANSPARENT);
|
||||
|
||||
int textW, textH;
|
||||
dc.GetTextExtent(text, & textW, & textH);
|
||||
int textW, textH;
|
||||
dc.GetTextExtent(text, & textW, & textH);
|
||||
|
||||
int x = 5;
|
||||
int y = rect.GetY() + wxMax(0, (rect.GetHeight() - textH) / 2);
|
||||
int x = 5;
|
||||
int y = rect.GetY() + wxMax(0, (rect.GetHeight() - textH) / 2);
|
||||
|
||||
dc.DrawText(text, x, y);
|
||||
}
|
||||
dc.DrawText(text, x, y);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void wxTreeCompanionWindow::OnPaint(wxPaintEvent& event)
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
wxPaintDC dc(this);
|
||||
|
||||
if (!m_treeCtrl)
|
||||
return;
|
||||
|
||||
wxPen pen(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID);
|
||||
dc.SetPen(pen);
|
||||
dc.SetBrush(* wxTRANSPARENT_BRUSH);
|
||||
wxFont font(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));
|
||||
dc.SetFont(font);
|
||||
dc.SetPen(pen);
|
||||
dc.SetBrush(* wxTRANSPARENT_BRUSH);
|
||||
wxFont font(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));
|
||||
dc.SetFont(font);
|
||||
|
||||
wxSize clientSize = GetClientSize();
|
||||
wxRect itemRect;
|
||||
int cy=0;
|
||||
wxTreeItemId h, lastH;
|
||||
for(h=m_treeCtrl->GetFirstVisibleItem();h;h=m_treeCtrl->GetNextVisible(h))
|
||||
{
|
||||
if (m_treeCtrl->GetBoundingRect(h, itemRect))
|
||||
{
|
||||
cy = itemRect.GetTop();
|
||||
wxRect drawItemRect(0, cy, clientSize.x, itemRect.GetHeight());
|
||||
wxRect itemRect;
|
||||
int cy=0;
|
||||
wxTreeItemId h, lastH;
|
||||
for(h=m_treeCtrl->GetFirstVisibleItem();h;h=m_treeCtrl->GetNextVisible(h))
|
||||
{
|
||||
if (m_treeCtrl->GetBoundingRect(h, itemRect))
|
||||
{
|
||||
cy = itemRect.GetTop();
|
||||
wxRect drawItemRect(0, cy, clientSize.x, itemRect.GetHeight());
|
||||
|
||||
lastH = h;
|
||||
lastH = h;
|
||||
|
||||
// Draw the actual item
|
||||
DrawItem(dc, h, drawItemRect);
|
||||
dc.DrawLine(0, cy, clientSize.x, cy);
|
||||
}
|
||||
}
|
||||
if (lastH.IsOk() && m_treeCtrl->GetBoundingRect(lastH, itemRect))
|
||||
{
|
||||
cy = itemRect.GetBottom();
|
||||
dc.DrawLine(0, cy, clientSize.x, cy);
|
||||
}
|
||||
// Draw the actual item
|
||||
DrawItem(dc, h, drawItemRect);
|
||||
dc.DrawLine(0, cy, clientSize.x, cy);
|
||||
}
|
||||
}
|
||||
if (lastH.IsOk() && m_treeCtrl->GetBoundingRect(lastH, itemRect))
|
||||
{
|
||||
cy = itemRect.GetBottom();
|
||||
dc.DrawLine(0, cy, clientSize.x, cy);
|
||||
}
|
||||
}
|
||||
|
||||
void wxTreeCompanionWindow::OnScroll(wxScrollWinEvent& event)
|
||||
@@ -466,15 +515,15 @@ void wxTreeCompanionWindow::OnScroll(wxScrollWinEvent& event)
|
||||
if (!m_treeCtrl)
|
||||
return;
|
||||
|
||||
// TODO: scroll the window physically instead of just refreshing.
|
||||
Refresh(TRUE);
|
||||
// TODO: scroll the window physically instead of just refreshing.
|
||||
Refresh(TRUE);
|
||||
}
|
||||
|
||||
void wxTreeCompanionWindow::OnExpand(wxTreeEvent& event)
|
||||
{
|
||||
// TODO: something more optimized than simply refresh the whole
|
||||
// window when the tree is expanded/collapsed. Tricky.
|
||||
Refresh();
|
||||
// TODO: something more optimized than simply refresh the whole
|
||||
// window when the tree is expanded/collapsed. Tricky.
|
||||
Refresh();
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -484,7 +533,7 @@ void wxTreeCompanionWindow::OnExpand(wxTreeEvent& event)
|
||||
IMPLEMENT_CLASS(wxThinSplitterWindow, wxSplitterWindow)
|
||||
|
||||
BEGIN_EVENT_TABLE(wxThinSplitterWindow, wxSplitterWindow)
|
||||
EVT_SIZE(wxThinSplitterWindow::OnSize)
|
||||
EVT_SIZE(wxThinSplitterWindow::OnSize)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxThinSplitterWindow::wxThinSplitterWindow(wxWindow* parent, wxWindowID id,
|
||||
@@ -497,9 +546,9 @@ wxThinSplitterWindow::wxThinSplitterWindow(wxWindow* parent, wxWindowID id,
|
||||
|
||||
void wxThinSplitterWindow::SizeWindows()
|
||||
{
|
||||
// The client size may have changed inbetween
|
||||
// the sizing of the first window and the sizing of
|
||||
// the second. So repeat SizeWindows.
|
||||
// The client size may have changed inbetween
|
||||
// the sizing of the first window and the sizing of
|
||||
// the second. So repeat SizeWindows.
|
||||
wxSplitterWindow::SizeWindows();
|
||||
wxSplitterWindow::SizeWindows();
|
||||
}
|
||||
@@ -507,7 +556,7 @@ void wxThinSplitterWindow::SizeWindows()
|
||||
// Tests for x, y over sash
|
||||
bool wxThinSplitterWindow::SashHitTest(int x, int y, int tolerance)
|
||||
{
|
||||
return wxSplitterWindow::SashHitTest(x, y, 4);
|
||||
return wxSplitterWindow::SashHitTest(x, y, 4);
|
||||
}
|
||||
|
||||
void wxThinSplitterWindow::DrawSash(wxDC& dc)
|
||||
@@ -520,42 +569,42 @@ void wxThinSplitterWindow::DrawSash(wxDC& dc)
|
||||
int w, h;
|
||||
GetClientSize(&w, &h);
|
||||
|
||||
if ( m_splitMode == wxSPLIT_VERTICAL )
|
||||
{
|
||||
dc.SetPen(* m_facePen);
|
||||
dc.SetBrush(* m_faceBrush);
|
||||
int h1 = h-1;
|
||||
int y1 = 0;
|
||||
if ( (GetWindowStyleFlag() & wxSP_BORDER) != wxSP_BORDER && (GetWindowStyleFlag() & wxSP_3DBORDER) != wxSP_3DBORDER )
|
||||
h1 += 1; // Not sure why this is necessary...
|
||||
if ( (GetWindowStyleFlag() & wxSP_3DBORDER) == wxSP_3DBORDER)
|
||||
{
|
||||
y1 = 2; h1 -= 3;
|
||||
}
|
||||
dc.DrawRectangle(m_sashPosition, y1, m_sashSize, h1);
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.SetPen(* m_facePen);
|
||||
dc.SetBrush(* m_faceBrush);
|
||||
int w1 = w-1;
|
||||
int x1 = 0;
|
||||
if ( (GetWindowStyleFlag() & wxSP_BORDER) != wxSP_BORDER && (GetWindowStyleFlag() & wxSP_3DBORDER) != wxSP_3DBORDER )
|
||||
w1 ++;
|
||||
if ( (GetWindowStyleFlag() & wxSP_3DBORDER) == wxSP_3DBORDER)
|
||||
{
|
||||
x1 = 2; w1 -= 3;
|
||||
}
|
||||
dc.DrawRectangle(x1, m_sashPosition, w1, m_sashSize);
|
||||
}
|
||||
|
||||
if ( m_splitMode == wxSPLIT_VERTICAL )
|
||||
{
|
||||
dc.SetPen(* m_facePen);
|
||||
dc.SetBrush(* m_faceBrush);
|
||||
int h1 = h-1;
|
||||
int y1 = 0;
|
||||
if ( (GetWindowStyleFlag() & wxSP_BORDER) != wxSP_BORDER && (GetWindowStyleFlag() & wxSP_3DBORDER) != wxSP_3DBORDER )
|
||||
h1 += 1; // Not sure why this is necessary...
|
||||
if ( (GetWindowStyleFlag() & wxSP_3DBORDER) == wxSP_3DBORDER)
|
||||
{
|
||||
y1 = 2; h1 -= 3;
|
||||
}
|
||||
dc.DrawRectangle(m_sashPosition, y1, m_sashSize, h1);
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.SetPen(* m_facePen);
|
||||
dc.SetBrush(* m_faceBrush);
|
||||
int w1 = w-1;
|
||||
int x1 = 0;
|
||||
if ( (GetWindowStyleFlag() & wxSP_BORDER) != wxSP_BORDER && (GetWindowStyleFlag() & wxSP_3DBORDER) != wxSP_3DBORDER )
|
||||
w1 ++;
|
||||
if ( (GetWindowStyleFlag() & wxSP_3DBORDER) == wxSP_3DBORDER)
|
||||
{
|
||||
x1 = 2; w1 -= 3;
|
||||
}
|
||||
dc.DrawRectangle(x1, m_sashPosition, w1, m_sashSize);
|
||||
}
|
||||
|
||||
dc.SetPen(wxNullPen);
|
||||
dc.SetBrush(wxNullBrush);
|
||||
}
|
||||
|
||||
void wxThinSplitterWindow::OnSize(wxSizeEvent& event)
|
||||
{
|
||||
wxSplitterWindow::OnSize(event);
|
||||
wxSplitterWindow::OnSize(event);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -565,8 +614,8 @@ void wxThinSplitterWindow::OnSize(wxSizeEvent& event)
|
||||
IMPLEMENT_CLASS(wxSplitterScrolledWindow, wxScrolledWindow)
|
||||
|
||||
BEGIN_EVENT_TABLE(wxSplitterScrolledWindow, wxScrolledWindow)
|
||||
EVT_SCROLLWIN(wxSplitterScrolledWindow::OnScroll)
|
||||
EVT_SIZE(wxSplitterScrolledWindow::OnSize)
|
||||
EVT_SCROLLWIN(wxSplitterScrolledWindow::OnScroll)
|
||||
EVT_SIZE(wxSplitterScrolledWindow::OnSize)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxSplitterScrolledWindow::wxSplitterScrolledWindow(wxWindow* parent, wxWindowID id,
|
||||
@@ -579,11 +628,11 @@ wxSplitterScrolledWindow::wxSplitterScrolledWindow(wxWindow* parent, wxWindowID
|
||||
|
||||
void wxSplitterScrolledWindow::OnSize(wxSizeEvent& event)
|
||||
{
|
||||
wxSize sz = GetClientSize();
|
||||
if (GetChildren().First())
|
||||
{
|
||||
((wxWindow*) GetChildren().First()->Data())->SetSize(0, 0, sz.x, sz.y);
|
||||
}
|
||||
wxSize sz = GetClientSize();
|
||||
if (GetChildren().First())
|
||||
{
|
||||
((wxWindow*) GetChildren().First()->Data())->SetSize(0, 0, sz.x, sz.y);
|
||||
}
|
||||
}
|
||||
|
||||
void wxSplitterScrolledWindow::OnScroll(wxScrollWinEvent& event)
|
||||
@@ -597,7 +646,7 @@ void wxSplitterScrolledWindow::OnScroll(wxScrollWinEvent& event)
|
||||
return;
|
||||
}
|
||||
inOnScroll = TRUE;
|
||||
|
||||
|
||||
int orient = event.GetOrientation();
|
||||
|
||||
int nScrollInc = CalcScrollInc(event);
|
||||
|
@@ -288,7 +288,6 @@ wxShape::wxShape(wxShapeCanvas *can)
|
||||
m_textColour = wxBLACK;
|
||||
m_textColourName = "BLACK";
|
||||
m_visible = FALSE;
|
||||
m_clientData = NULL;
|
||||
m_selected = FALSE;
|
||||
m_attachmentMode = ATTACHMENT_MODE_NONE;
|
||||
m_spaceAttachments = TRUE;
|
||||
@@ -338,11 +337,6 @@ wxShape::~wxShape()
|
||||
if (m_canvas)
|
||||
m_canvas->RemoveShape(this);
|
||||
|
||||
if (m_clientData) {
|
||||
delete m_clientData;
|
||||
m_clientData = NULL;
|
||||
}
|
||||
|
||||
GetEventHandler()->OnDelete();
|
||||
}
|
||||
|
||||
|
@@ -112,7 +112,11 @@ BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl)
|
||||
#endif
|
||||
EVT_MOTION (wxStyledTextCtrl::OnMouseMove)
|
||||
EVT_LEFT_UP (wxStyledTextCtrl::OnMouseLeftUp)
|
||||
#ifdef __WXGTK__
|
||||
EVT_RIGHT_UP (wxStyledTextCtrl::OnMouseRightUp)
|
||||
#else
|
||||
EVT_CONTEXT_MENU (wxStyledTextCtrl::OnContextMenu)
|
||||
#endif
|
||||
EVT_MOUSEWHEEL (wxStyledTextCtrl::OnMouseWheel)
|
||||
EVT_CHAR (wxStyledTextCtrl::OnChar)
|
||||
EVT_KEY_DOWN (wxStyledTextCtrl::OnKeyDown)
|
||||
@@ -1837,6 +1841,12 @@ void wxStyledTextCtrl::OnMouseLeftUp(wxMouseEvent& evt) {
|
||||
}
|
||||
|
||||
|
||||
void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) {
|
||||
wxPoint pt = evt.GetPosition();
|
||||
m_swx->DoContextMenu(Point(pt.x, pt.y));
|
||||
}
|
||||
|
||||
|
||||
void wxStyledTextCtrl::OnContextMenu(wxContextMenuEvent& evt) {
|
||||
wxPoint pt = evt.GetPosition();
|
||||
ScreenToClient(&pt.x, &pt.y);
|
||||
@@ -1869,7 +1879,7 @@ void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
|
||||
bool alt = evt.AltDown();
|
||||
bool skip = ((ctrl || alt) && ! (ctrl && alt));
|
||||
|
||||
if (key <= 0xff && !iscntrl(key) && !m_lastKeyDownConsumed && !skip) {
|
||||
if (key <= 0xff && key >= 32 && !m_lastKeyDownConsumed && !skip) {
|
||||
m_swx->DoAddChar(key);
|
||||
return;
|
||||
}
|
||||
|
@@ -112,7 +112,11 @@ BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl)
|
||||
#endif
|
||||
EVT_MOTION (wxStyledTextCtrl::OnMouseMove)
|
||||
EVT_LEFT_UP (wxStyledTextCtrl::OnMouseLeftUp)
|
||||
#ifdef __WXGTK__
|
||||
EVT_RIGHT_UP (wxStyledTextCtrl::OnMouseRightUp)
|
||||
#else
|
||||
EVT_CONTEXT_MENU (wxStyledTextCtrl::OnContextMenu)
|
||||
#endif
|
||||
EVT_MOUSEWHEEL (wxStyledTextCtrl::OnMouseWheel)
|
||||
EVT_CHAR (wxStyledTextCtrl::OnChar)
|
||||
EVT_KEY_DOWN (wxStyledTextCtrl::OnKeyDown)
|
||||
@@ -381,6 +385,12 @@ void wxStyledTextCtrl::OnMouseLeftUp(wxMouseEvent& evt) {
|
||||
}
|
||||
|
||||
|
||||
void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) {
|
||||
wxPoint pt = evt.GetPosition();
|
||||
m_swx->DoContextMenu(Point(pt.x, pt.y));
|
||||
}
|
||||
|
||||
|
||||
void wxStyledTextCtrl::OnContextMenu(wxContextMenuEvent& evt) {
|
||||
wxPoint pt = evt.GetPosition();
|
||||
ScreenToClient(&pt.x, &pt.y);
|
||||
@@ -413,7 +423,7 @@ void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
|
||||
bool alt = evt.AltDown();
|
||||
bool skip = ((ctrl || alt) && ! (ctrl && alt));
|
||||
|
||||
if (key <= 0xff && !iscntrl(key) && !m_lastKeyDownConsumed && !skip) {
|
||||
if (key <= 0xff && key >= 32 && !m_lastKeyDownConsumed && !skip) {
|
||||
m_swx->DoAddChar(key);
|
||||
return;
|
||||
}
|
||||
|
@@ -169,6 +169,7 @@ private:
|
||||
void OnMouseLeftDown(wxMouseEvent& evt);
|
||||
void OnMouseMove(wxMouseEvent& evt);
|
||||
void OnMouseLeftUp(wxMouseEvent& evt);
|
||||
void OnMouseRightUp(wxMouseEvent& evt);
|
||||
void OnContextMenu(wxContextMenuEvent& evt);
|
||||
void OnMouseWheel(wxMouseEvent& evt);
|
||||
void OnChar(wxKeyEvent& evt);
|
||||
@@ -206,8 +207,10 @@ private:
|
||||
|
||||
class wxStyledTextEvent : public wxCommandEvent {
|
||||
public:
|
||||
wxStyledTextEvent(const wxStyledTextEvent& event);
|
||||
wxStyledTextEvent(wxEventType commandType=0, int id=0);
|
||||
#ifndef SWIG
|
||||
wxStyledTextEvent(const wxStyledTextEvent& event);
|
||||
#endif
|
||||
~wxStyledTextEvent() {}
|
||||
|
||||
void SetPosition(int pos) { m_position = pos; }
|
||||
|
@@ -1,4 +1,5 @@
|
||||
BombsM*Data
|
||||
bombsM5.mcp
|
||||
bombsM*Data
|
||||
*Classic?Debug*
|
||||
*Classic?Release*
|
||||
*Carbon?Debug*
|
||||
|
Binary file not shown.
3943
demos/bombs/bombsM5.xml
Normal file
3943
demos/bombs/bombsM5.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,5 @@
|
||||
DbbrowseM*Data
|
||||
dbbrowseM5.mcp
|
||||
dbbrowseM*Data
|
||||
*Classic?Debug*
|
||||
*Classic?Release*
|
||||
*Carbon?Debug*
|
||||
|
Binary file not shown.
4183
demos/dbbrowse/dbbrowseM5.xml
Normal file
4183
demos/dbbrowse/dbbrowseM5.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,5 @@
|
||||
FortyM*Data
|
||||
fortyM5.mcp
|
||||
fortyM*Data
|
||||
*Classic?Debug*
|
||||
*Classic?Release*
|
||||
*Carbon?Debug*
|
||||
|
Binary file not shown.
4213
demos/forty/fortyM5.xml
Normal file
4213
demos/forty/fortyM5.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,5 @@
|
||||
FractalM*Data
|
||||
fractalM5.mcp
|
||||
fractalM*Data
|
||||
*Classic?Debug*
|
||||
*Classic?Release*
|
||||
*Carbon?Debug*
|
||||
|
Binary file not shown.
3835
demos/fractal/fractalM5.xml
Normal file
3835
demos/fractal/fractalM5.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,5 @@
|
||||
LifeM*Data
|
||||
lifeM5.mcp
|
||||
lifeM*Data
|
||||
*Classic?Debug*
|
||||
*Classic?Release*
|
||||
*Carbon?Debug*
|
||||
|
Binary file not shown.
3997
demos/life/lifeM5.xml
Normal file
3997
demos/life/lifeM5.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,5 @@
|
||||
PoemM*Data
|
||||
poemM5.mcp
|
||||
poemM*Data
|
||||
*Classic?Debug*
|
||||
*Classic?Release*
|
||||
*Carbon?Debug*
|
||||
|
Binary file not shown.
3835
demos/poem/poemM5.xml
Normal file
3835
demos/poem/poemM5.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -118,7 +118,6 @@ src/regex/makefile*
|
||||
src/regex/README
|
||||
src/regex/WHATSNEW
|
||||
src/regex/mkh
|
||||
src/regex/makefile*
|
||||
src/regex/*.h
|
||||
src/regex/*.ih
|
||||
src/regex/*.c
|
||||
@@ -1031,6 +1030,16 @@ samples/opengl/penguin/*.xpm
|
||||
samples/opengl/penguin/make*.*
|
||||
samples/opengl/penguin/penguin.lwo
|
||||
|
||||
samples/widgets/*.cpp
|
||||
samples/widgets/*.h
|
||||
samples/widgets/makefile*
|
||||
samples/widgets/*.rc
|
||||
samples/widgets/*.def
|
||||
samples/widgets/*.ico
|
||||
samples/widgets/*.xpm
|
||||
samples/widgets/*.txt
|
||||
samples/widgets/*.bmp
|
||||
|
||||
demos/makefile*
|
||||
demos/configure
|
||||
demos/configure.in
|
||||
|
@@ -70,6 +70,7 @@ samples/opengl/Makefile.in
|
||||
samples/opengl/cube/Makefile.in
|
||||
samples/opengl/penguin/Makefile.in
|
||||
samples/opengl/isosurf/Makefile.in
|
||||
samples/widgets/Makefile.in
|
||||
demos/Makefile.in
|
||||
demos/bombs/Makefile.in
|
||||
demos/forty/Makefile.in
|
||||
|
@@ -21,38 +21,39 @@ all: $(MSW_MAKEFILES_DIR)/makefile.vc \
|
||||
$(WXDIR)/src/motif/files.lst \
|
||||
$(WXDIR)/src/os2/files.lst \
|
||||
|
||||
$(MSW_MAKEFILES_DIR)/makefile.vc: filelist.txt wxwin.pro
|
||||
$(MSW_MAKEFILES_DIR)/makefile.vc: vc.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t vc wxwin.pro -o $@
|
||||
|
||||
$(MSW_MAKEFILES_DIR)/makefile.b32: filelist.txt wxwin.pro
|
||||
$(MSW_MAKEFILES_DIR)/makefile.b32: b32.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t b32 wxwin.pro -o $@
|
||||
|
||||
$(MSW_MAKEFILES_DIR)/makefile.dos: filelist.txt wxwin.pro
|
||||
$(MSW_MAKEFILES_DIR)/makefile.dos: dos.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t dos wxwin.pro -o $@
|
||||
|
||||
$(MSW_MAKEFILES_DIR)/makefile.bcc: filelist.txt wxwin.pro
|
||||
$(MSW_MAKEFILES_DIR)/makefile.bcc: bcc.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t bcc wxwin.pro -o $@
|
||||
|
||||
$(MSW_MAKEFILES_DIR)/makefile.sc: filelist.txt wxwin.pro
|
||||
$(MSW_MAKEFILES_DIR)/makefile.sc: sc.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t sc wxwin.pro -o $@
|
||||
|
||||
$(MSW_MAKEFILES_DIR)/makefile.wat: filelist.txt wxwin.pro
|
||||
$(MSW_MAKEFILES_DIR)/makefile.wat: wat.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t wat wxwin.pro -o $@
|
||||
|
||||
$(MSW_MAKEFILES_DIR)/makefile.g95: filelist.txt wxwin.pro
|
||||
$(MSW_MAKEFILES_DIR)/makefile.g95: g95.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t g95 wxwin.pro -o $@
|
||||
|
||||
$(WXDIR)/src/msw/files.lst: filelist.txt wxwin.pro
|
||||
$(WXDIR)/src/msw/files.lst: msw.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t msw wxwin.pro -o $@
|
||||
|
||||
$(WXDIR)/src/gtk/files.lst: filelist.txt wxwin.pro
|
||||
$(WXDIR)/src/gtk/files.lst: gtk.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t gtk wxwin.pro -o $@
|
||||
|
||||
$(WXDIR)/src/mac/files.lst: filelist.txt wxwin.pro
|
||||
$(WXDIR)/src/mac/files.lst: mac.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t mac wxwin.pro -o $@
|
||||
|
||||
$(WXDIR)/src/motif/files.lst: filelist.txt wxwin.pro
|
||||
$(WXDIR)/src/motif/files.lst: motif.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t motif wxwin.pro -o $@
|
||||
|
||||
$(WXDIR)/src/os2/files.lst: filelist.txt wxwin.pro
|
||||
$(WXDIR)/src/os2/files.lst: os2.t filelist.txt wxwin.pro
|
||||
$(TMAKE) -t os2 wxwin.pro -o $@
|
||||
|
||||
|
@@ -298,7 +298,8 @@ else
|
||||
PATH_SUBST:=$(BACKSLASH)
|
||||
endif
|
||||
|
||||
ARCHINCDIR=$(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(WXDIR)/lib/msw$(INCEXT))
|
||||
#ARCHINCDIR=$(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(WXDIR)/lib/msw$(INCEXT))
|
||||
ARCHINCDIR=(WXDIR)/lib/msw$(INCEXT)
|
||||
|
||||
SETUP_H=$(ARCHINCDIR)/wx/setup.h
|
||||
|
||||
@@ -313,7 +314,9 @@ $(ARCHINCDIR)/wx:
|
||||
mkdir $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(ARCHINCDIR)/wx)
|
||||
|
||||
$(SETUP_H): $(ARCHINCDIR)/wx
|
||||
$(COPY) $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(WXDIR)/include/wx/msw/setup.h) $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$@)
|
||||
$(COPY) $(WXDIR)/include/wx/msw/setup.h $@
|
||||
|
||||
# $(COPY) $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(WXDIR)/include/wx/msw/setup.h) $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$@)
|
||||
|
||||
ifndef WXMAKINGDLL
|
||||
|
||||
|
@@ -90,6 +90,10 @@ do
|
||||
mgl.t)
|
||||
echo "Generating $topdir/src/mgl/files.lst for MGL and Configure..."
|
||||
tmake -t mgl wxwin.pro -o $topdir/src/mgl/files.lst;;
|
||||
|
||||
watmgl.t)
|
||||
echo "Generating $topdir/src/mgl/makefile.wat for Watcom C++ and MGL+DOS..."
|
||||
tmake -t watmgl wxwin.pro -o $topdir/src/mgl/makefile.wat;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
@@ -176,7 +176,7 @@ $(ARCHINCDIR)\wx:
|
||||
mkdir $(ARCHINCDIR)
|
||||
mkdir $(ARCHINCDIR)\wx
|
||||
|
||||
$(SETUP_H):
|
||||
$(SETUP_H): $(WXDIR)\include\wx\msw\setup.h
|
||||
copy $(WXDIR)\include\wx\msw\setup.h $@
|
||||
|
||||
dirs: $(MSWDIR)\$D $(COMMDIR)\$D $(GENDIR)\$D $(OLEDIR)\$D $(HTMLDIR)\$D $(JPEGDIR)\$D $(TIFFDIR)\$D $(REGEXDIR)\$D $(ARCHINCDIR)\wx $(WXDIR)\$D
|
||||
|
@@ -89,8 +89,8 @@ LIBTARGET = $(WXLIB)\wx.lib
|
||||
DUMMY=dummydll
|
||||
# ODBCLIB = ..\..\contrib\odbc\odbc32.lib
|
||||
|
||||
EXTRATARGETS = png zlib jpeg tiff
|
||||
EXTRATARGETSCLEAN = clean_png clean_zlib clean_jpeg clean_tiff
|
||||
EXTRATARGETS = png zlib jpeg tiff regex
|
||||
EXTRATARGETSCLEAN = clean_png clean_zlib clean_jpeg clean_tiff clean_regex
|
||||
GENDIR=$(WXDIR)\src\generic
|
||||
COMMDIR=$(WXDIR)\src\common
|
||||
JPEGDIR=$(WXDIR)\src\jpeg
|
||||
@@ -118,7 +118,17 @@ HTMLOBJS = #$ ExpandGlue("WXHTMLOBJS", "", " &\n\t")
|
||||
# Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc.
|
||||
OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) $(HTMLOBJS)
|
||||
|
||||
all: $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) .SYMBOLIC
|
||||
ARCHINCDIR=$(WXDIR)\lib\msw
|
||||
SETUP_H=$(ARCHINCDIR)\wx\setup.h
|
||||
|
||||
all: $(SETUP_H) $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) .SYMBOLIC
|
||||
|
||||
$(ARCHINCDIR)\wx:
|
||||
mkdir $(ARCHINCDIR)
|
||||
mkdir $(ARCHINCDIR)\wx
|
||||
|
||||
$(SETUP_H): $(WXDIR)\include\wx\msw\setup.h $(ARCHINCDIR)\wx
|
||||
copy $(WXDIR)\include\wx\msw\setup.h $@
|
||||
|
||||
$(LIBTARGET) : $(OBJECTS)
|
||||
%create tmp.lbc
|
||||
@@ -232,56 +242,6 @@ $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c
|
||||
}
|
||||
#$}
|
||||
|
||||
|
||||
OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \
|
||||
trees$(O)
|
||||
OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \
|
||||
infutil$(O) inffast$(O)
|
||||
|
||||
adler32.obj: adler32.c zutil.h zlib.h zconf.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
compress.obj: compress.c zlib.h zconf.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
crc32.obj: crc32.c zutil.h zlib.h zconf.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
gzio.obj: gzio.c zutil.h zlib.h zconf.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\
|
||||
infcodes.h infutil.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\
|
||||
infcodes.h inffast.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
uncompr.obj: uncompr.c zlib.h zconf.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
zutil.obj: zutil.c zutil.h zlib.h zconf.h
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
png: .SYMBOLIC
|
||||
cd $(WXDIR)\src\png
|
||||
wmake -f makefile.wat all
|
||||
@@ -322,6 +282,16 @@ clean_tiff: .SYMBOLIC
|
||||
wmake -f makefile.wat clean
|
||||
cd $(WXDIR)\src\msw
|
||||
|
||||
regex: .SYMBOLIC
|
||||
cd $(WXDIR)\src\regex
|
||||
wmake -f makefile.wat all
|
||||
cd $(WXDIR)\src\msw
|
||||
|
||||
clean_regex: .SYMBOLIC
|
||||
cd $(WXDIR)\src\regex
|
||||
wmake -f makefile.wat clean
|
||||
cd $(WXDIR)\src\msw
|
||||
|
||||
MFTYPE=wat
|
||||
self : .SYMBOLIC $(WXDIR)\distrib\msw\tmake\filelist.txt $(WXDIR)\distrib\msw\tmake\$(MFTYPE).t
|
||||
cd $(WXDIR)\distrib\msw\tmake
|
||||
|
308
distrib/msw/tmake/watmgl.t
Normal file
308
distrib/msw/tmake/watmgl.t
Normal file
@@ -0,0 +1,308 @@
|
||||
#!#############################################################################
|
||||
#! File: wat.t
|
||||
#! Purpose: tmake template file from which makefile.wat is generated by running
|
||||
#! tmake -t wat wxwin.pro -o makefile.wat
|
||||
#! TODO:
|
||||
#! - extended.c, unzip.c must be compiled with $(CC), not $(CCC).
|
||||
#! - extended.c, unzip.c targets must be as per b32.t etc.
|
||||
#! - OLE files not generated correctly (need 'ole/' directory)
|
||||
#! Author: Vadim Zeitlin
|
||||
#! Created: 14.07.99
|
||||
#! Version: $Id$
|
||||
#!#############################################################################
|
||||
#${
|
||||
#! include the code which parses filelist.txt file and initializes
|
||||
#! %wxCommon, %wxGeneric and %wxMSW hashes.
|
||||
IncludeTemplate("filelist.t");
|
||||
|
||||
#! now transform these hashes into $project tags
|
||||
foreach $file (sort keys %wxGeneric) {
|
||||
next if $wxGeneric{$file} =~ /\bNotMGL\b/;
|
||||
|
||||
$file =~ s/cp?p?$/obj/;
|
||||
$project{"WXGENERICOBJS"} .= $file . " "
|
||||
}
|
||||
|
||||
foreach $file (sort keys %wxHTML) {
|
||||
next if $wxHTML{$file} =~ /\b16\b/;
|
||||
|
||||
$file =~ s/cp?p?$/obj/;
|
||||
$project{"WXHTMLOBJS"} .= $file . " "
|
||||
}
|
||||
|
||||
foreach $file (sort keys %wxCommon) {
|
||||
next if $wxCommon{$file} =~ /\bNotMGL\b/;
|
||||
|
||||
$isCFile = $file =~ /\.c$/;
|
||||
$file =~ s/cp?p?$/obj/;
|
||||
$project{"WXCOMMONOBJS"} .= $file . " ";
|
||||
$project{"WXCOBJS"} .= $file . " " if $isCFile;
|
||||
}
|
||||
|
||||
foreach $file (sort keys %wxMGL) {
|
||||
#! these files don't compile
|
||||
|
||||
$isBmpbase = $file =~ /bmpbase\.cpp$/;
|
||||
$file =~ s/cp?p?$/obj/;
|
||||
if ($isBmpbase) {
|
||||
$project{"WXCOMMONOBJS"} .= $file . " ";
|
||||
} else {
|
||||
$project{"WXMGLOBJS"} .= $file . " ";
|
||||
}
|
||||
}
|
||||
|
||||
foreach $file (sort keys %wxUNIV) {
|
||||
($fileobj = $file) =~ s/cp?p?$/\o/;
|
||||
my $tag = $wxUNIV{$file} =~ /Theme/ ? "WXUNIVTHEMEOBJS" : "WXUNIVOBJS";
|
||||
|
||||
$file =~ s/cp?p?$/obj/;
|
||||
$project{$tag} .= $file . " ";
|
||||
}
|
||||
#$}
|
||||
#! an attempt to embed '#' directly in the string somehow didn't work...
|
||||
#$ $text = chr(35) . '!/binb/wmake.exe';
|
||||
|
||||
# This file was automatically generated by tmake at #$ Now()
|
||||
# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE WAT.T!
|
||||
|
||||
#
|
||||
# File: makefile.wat
|
||||
# Author: Julian Smart & Vaclav Slavik
|
||||
# Created: 1998
|
||||
#
|
||||
# Makefile : Builds wxWindows library for Watcom C++, DOS+MGL
|
||||
#
|
||||
# NOTE: This file is generated from wat.t by tmake, but not all bugs have
|
||||
# been removed from this process. If wxWindows doesn't compile,
|
||||
# check the following and edit this makefile accordingly:
|
||||
#
|
||||
# - extended.c, gsocket.c, unzip.c must be compiled using $(CC), not $(CCC).
|
||||
# They may also be wrongly specified as extended.cpp, etc.
|
||||
|
||||
WXDIR = ..\..
|
||||
|
||||
!include makewat.env
|
||||
|
||||
WXLIB = $(WXDIR)\lib
|
||||
|
||||
LIBTARGET = $(WXLIB)\wx.lib
|
||||
DUMMY=dummydll
|
||||
# ODBCLIB = ..\..\contrib\odbc\odbc32.lib
|
||||
|
||||
EXTRATARGETS = png zlib jpeg tiff regex
|
||||
EXTRATARGETSCLEAN = clean_png clean_zlib clean_jpeg clean_tiff clean_regex
|
||||
GENDIR=$(WXDIR)\src\generic
|
||||
COMMDIR=$(WXDIR)\src\common
|
||||
JPEGDIR=$(WXDIR)\src\jpeg
|
||||
TIFFDIR=$(WXDIR)\src\tiff
|
||||
MGLDIR=$(WXDIR)\src\mgl
|
||||
UNIVDIR=$(WXDIR)\src\univ
|
||||
UNIVTHEMEDIR=$(WXDIR)\src\univ\themes
|
||||
HTMLDIR=$(WXDIR)\src\html
|
||||
|
||||
DOCDIR = $(WXDIR)\docs
|
||||
|
||||
GENERICOBJS= #$ ExpandGlue("WXGENERICOBJS", "", " &\n\t")
|
||||
|
||||
COMMONOBJS = &
|
||||
y_tab.obj &
|
||||
#$ ExpandGlue("WXCOMMONOBJS", "", " &\n\t")
|
||||
|
||||
MGLOBJS = #$ ExpandGlue("WXMGLOBJS", "", " &\n\t")
|
||||
|
||||
UNIVOBJS = #$ ExpandGlue("WXUNIVOBJS", "", " &\n\t")
|
||||
|
||||
UNIVTHEMEOBJS = #$ ExpandGlue("WXUNIVTHEMEOBJS", "", " &\n\t")
|
||||
|
||||
HTMLOBJS = #$ ExpandGlue("WXHTMLOBJS", "", " &\n\t")
|
||||
|
||||
# Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc.
|
||||
OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MGLOBJS) $(UNIVOBJS) $(UNIVTHEMEOBJS) $(HTMLOBJS)
|
||||
|
||||
all: $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) .SYMBOLIC
|
||||
|
||||
$(LIBTARGET) : $(OBJECTS)
|
||||
%create tmp.lbc
|
||||
@for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i
|
||||
wlib /b /c /n /p=512 $^@ @tmp.lbc
|
||||
|
||||
clean: .SYMBOLIC $(EXTRATARGETSCLEAN)
|
||||
-erase *.obj
|
||||
-erase $(LIBTARGET)
|
||||
-erase *.pch
|
||||
-erase *.err
|
||||
-erase *.lbc
|
||||
|
||||
cleanall: clean
|
||||
|
||||
#${
|
||||
$_ = $project{"WXMGLOBJS"};
|
||||
my @objs = split;
|
||||
foreach (@objs) {
|
||||
$text .= $_ . ': $(';
|
||||
s/\.obj$//;
|
||||
$text .= 'MGLDIR)\\';
|
||||
my $suffix, $cc;
|
||||
if ( $project{"WXCOBJS"} =~ /\b\Q$_\E\b/ ) {
|
||||
$suffix = "c";
|
||||
$cc="CC";
|
||||
}
|
||||
else {
|
||||
$suffix = "cpp";
|
||||
$cc="CCC";
|
||||
}
|
||||
$text .= $_ . ".$suffix\n" .
|
||||
" *\$($cc) \$(CPPFLAGS) \$(IFLAGS) \$<" . "\n\n";
|
||||
}
|
||||
#$}
|
||||
|
||||
########################################################
|
||||
# wxUNIVERSAL objects (always compiled)
|
||||
|
||||
#${
|
||||
$_ = $project{"WXUNIVOBJS"};
|
||||
my @objs = split;
|
||||
foreach (@objs) {
|
||||
$text .= $_;
|
||||
s/\.obj$//;
|
||||
$text .= ': $(UNIVDIR)\\';
|
||||
$text .= $_ . ".cpp\n" .
|
||||
' *$(CCC) $(CPPFLAGS) $(IFLAGS) $<' . "\n\n";
|
||||
}
|
||||
#$}
|
||||
|
||||
#${
|
||||
$_ = $project{"WXUNIVTHEMEOBJS"};
|
||||
my @objs = split;
|
||||
foreach (@objs) {
|
||||
$text .= $_;
|
||||
s/\.obj$//;
|
||||
$text .= ': $(UNIVTHEMEDIR)\\';
|
||||
$text .= $_ . ".cpp\n" .
|
||||
' *$(CCC) $(CPPFLAGS) $(IFLAGS) $<' . "\n\n";
|
||||
}
|
||||
#$}
|
||||
|
||||
########################################################
|
||||
# Common objects (always compiled)
|
||||
|
||||
#${
|
||||
$_ = $project{"WXCOMMONOBJS"};
|
||||
my @objs = split;
|
||||
foreach (@objs) {
|
||||
$text .= $_;
|
||||
s/\.obj$//;
|
||||
$text .= ': $(COMMDIR)\\';
|
||||
my $suffix, $cc;
|
||||
if ( $project{"WXCOBJS"} =~ /\b\Q$_\E\b/ ) {
|
||||
$suffix = "c";
|
||||
$cc="CC";
|
||||
}
|
||||
else {
|
||||
$suffix = "cpp";
|
||||
$cc="CCC";
|
||||
}
|
||||
$text .= $_ . ".$suffix\n" .
|
||||
" *\$($cc) \$(CPPFLAGS) \$(IFLAGS) \$<" . "\n\n";
|
||||
}
|
||||
#$}
|
||||
|
||||
y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c
|
||||
*$(CC) $(CPPFLAGS) $(IFLAGS) -DUSE_DEFINE $(COMMDIR)\y_tab.c
|
||||
|
||||
# *$(CC) $(CPPFLAGS) $(IFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS $(COMMDIR)\y_tab.c
|
||||
|
||||
$(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c
|
||||
copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c
|
||||
|
||||
$(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c
|
||||
copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c
|
||||
|
||||
########################################################
|
||||
# Generic objects (not always compiled, depending on
|
||||
# whether platforms have native implementations)
|
||||
|
||||
#${
|
||||
$_ = $project{"WXGENERICOBJS"};
|
||||
my @objs = split;
|
||||
foreach (@objs) {
|
||||
$text .= $_;
|
||||
s/\.obj$//;
|
||||
$text .= ': $(GENDIR)\\';
|
||||
$text .= $_ . ".cpp\n" .
|
||||
' *$(CCC) $(CPPFLAGS) $(IFLAGS) $<' . "\n\n";
|
||||
}
|
||||
#$}
|
||||
|
||||
|
||||
########################################################
|
||||
# HTML objects (always compiled)
|
||||
|
||||
#${
|
||||
$_ = $project{"WXHTMLOBJS"};
|
||||
my @objs = split;
|
||||
foreach (@objs) {
|
||||
$text .= $_;
|
||||
s/\.obj$//;
|
||||
$text .= ': $(HTMLDIR)\\';
|
||||
$text .= $_ . ".cpp\n" .
|
||||
' *$(CCC) $(CPPFLAGS) $(IFLAGS) $<' . "\n\n";
|
||||
}
|
||||
#$}
|
||||
|
||||
|
||||
png: .SYMBOLIC
|
||||
cd $(WXDIR)\src\png
|
||||
wmake -f makefile.wat all
|
||||
cd $(WXDIR)\src\mgl
|
||||
|
||||
clean_png: .SYMBOLIC
|
||||
cd $(WXDIR)\src\png
|
||||
wmake -f makefile.wat clean
|
||||
cd $(WXDIR)\src\mgl
|
||||
|
||||
zlib: .SYMBOLIC
|
||||
cd $(WXDIR)\src\zlib
|
||||
wmake -f makefile.wat all
|
||||
cd $(WXDIR)\src\mgl
|
||||
|
||||
clean_zlib: .SYMBOLIC
|
||||
cd $(WXDIR)\src\zlib
|
||||
wmake -f makefile.wat clean
|
||||
cd $(WXDIR)\src\mgl
|
||||
|
||||
jpeg: .SYMBOLIC
|
||||
cd $(WXDIR)\src\jpeg
|
||||
wmake -f makefile.wat all
|
||||
cd $(WXDIR)\src\mgl
|
||||
|
||||
clean_jpeg: .SYMBOLIC
|
||||
cd $(WXDIR)\src\jpeg
|
||||
wmake -f makefile.wat clean
|
||||
cd $(WXDIR)\src\mgl
|
||||
|
||||
tiff: .SYMBOLIC
|
||||
cd $(WXDIR)\src\tiff
|
||||
wmake -f makefile.wat all
|
||||
cd $(WXDIR)\src\mgl
|
||||
|
||||
clean_tiff: .SYMBOLIC
|
||||
cd $(WXDIR)\src\tiff
|
||||
wmake -f makefile.wat clean
|
||||
cd $(WXDIR)\src\mgl
|
||||
|
||||
regex: .SYMBOLIC
|
||||
cd $(WXDIR)\src\regex
|
||||
wmake -f makefile.wat all
|
||||
cd $(WXDIR)\src\mgl
|
||||
|
||||
clean_regex: .SYMBOLIC
|
||||
cd $(WXDIR)\src\regex
|
||||
wmake -f makefile.wat clean
|
||||
cd $(WXDIR)\src\mgl
|
||||
|
||||
MFTYPE=watmgl
|
||||
self : .SYMBOLIC $(WXDIR)\distrib\msw\tmake\filelist.txt $(WXDIR)\distrib\msw\tmake\$(MFTYPE).t
|
||||
cd $(WXDIR)\distrib\msw\tmake
|
||||
tmake -t $(MFTYPE) wxwin.pro -o makefile.$(MFTYPE)
|
||||
copy makefile.$(MFTYPE) $(WXDIR)\src\mgl
|
13
distrib/msw/univ.rsp
Normal file
13
distrib/msw/univ.rsp
Normal file
@@ -0,0 +1,13 @@
|
||||
include/wx/unix/*.h
|
||||
include/wx/univ/*.h
|
||||
|
||||
src/unix/*.cpp
|
||||
src/unix/*.c
|
||||
src/univ/*.cpp
|
||||
src/univ/*.c
|
||||
src/univ/*.lst
|
||||
src/univ/themes/*.cpp
|
||||
|
||||
docs/microwin/readme.txt
|
||||
docs/microwin/microwindows.patches
|
||||
|
@@ -231,6 +231,9 @@ samples/validate/Validate.dsw
|
||||
samples/wizard/Wizard.dsp
|
||||
samples/wizard/Wizard.dsw
|
||||
|
||||
samples/widgets/Treelay.dsp
|
||||
samples/widgets/Treelay.dsw
|
||||
|
||||
samples/opengl/cube/Cube.dsp
|
||||
samples/opengl/cube/Cube.dsw
|
||||
samples/opengl/isosurf/Isosurf.dsp
|
||||
|
@@ -85,7 +85,7 @@ zip32 -@ %dest\wxWindows-%version%-msw.zip < %src\distrib\msw\msw.rsp
|
||||
zip32 -@ -u %dest\wxWindows-%version%-msw.zip < %src\distrib\msw\makefile.rsp
|
||||
zip32 -@ %dest\wxWindows-%version%-gtk.zip < %src\distrib\msw\gtk.rsp
|
||||
zip32 -@ -u %dest\wxWindows-%version%-gtk.zip < %src\distrib\msw\makefile.rsp
|
||||
zip32 -@ %dest\wxWindows-%version%-stubs.zip < %src\distrib\msw\stubs.rsp
|
||||
Rem zip32 -@ %dest\wxWindows-%version%-stubs.zip < %src\distrib\msw\stubs.rsp
|
||||
zip32 -@ %dest\wxWindows-%version%-mot.zip < %src\distrib\msw\motif.rsp
|
||||
zip32 -@ -u %dest\wxWindows-%version%-mot.zip < %src\distrib\msw\makefile.rsp
|
||||
Rem (Obsolete) zip32 -@ %dest\wxWindows-%version%-user.zip < %src\distrib\msw\user.rsp
|
||||
@@ -102,6 +102,9 @@ Rem PDF/HTML docs that should go into the Windows setup because
|
||||
Rem there are no WinHelp equivalents
|
||||
zip32 -@ %dest\extradoc-%version%.zip < %src\distrib\msw\extradoc.rsp
|
||||
|
||||
Rem zip up Univ-specific files
|
||||
zip32 -@ %dest\wxWindows-%version%-univ.zip < %src\distrib\msw\univ.rsp
|
||||
|
||||
rem VC++ project files
|
||||
zip32 -@ %dest\wxWindows-%version%-vc.zip < %src\distrib\msw\vc.rsp
|
||||
|
||||
@@ -183,6 +186,7 @@ Rem the source wxWindows directory.
|
||||
cd %dest\wx
|
||||
unzip32 -o ..\wxWindows-%version%-msw.zip
|
||||
unzip32 -o ..\wxWindows-%version%-gen.zip
|
||||
unzip32 -o ..\wxWindows-%version%-univ.zip
|
||||
unzip32 -o ..\wxWindows-%version%-vc.zip
|
||||
unzip32 -o ..\wxWindows-%version%-bc.zip
|
||||
unzip32 -o ..\wxWindows-%version%-HTMLHelp.zip
|
||||
|
127
docs/install.txt
127
docs/install.txt
@@ -1,14 +1,121 @@
|
||||
INSTALL.TXT
|
||||
wxBase README
|
||||
=============
|
||||
|
||||
NB: this file describes the installation of wxBase library. If you are using a
|
||||
GUI version of wxWindows, please refer to the install.txt in the
|
||||
appropriate subdirectory (msw, gtk, motif).
|
||||
NB: this file applies to wxBase library only. If you are using a GUI version
|
||||
of wxWindows, please refer to the documentation in the appropriate
|
||||
subdirectory (msw, gtk, motif &c).
|
||||
|
||||
0. Requirments and supported platforms
|
||||
-----------------------------------
|
||||
|
||||
1. Installing under Win32
|
||||
----------------------
|
||||
Welcome to wxBase!
|
||||
|
||||
0. Introduction
|
||||
---------------
|
||||
|
||||
wxBase is the library providing most of the non-GUI classes of the wxWindows
|
||||
cross-platform C++ framework. wxBase has some generic classes such as yet
|
||||
another C++ string class, typesafe dynamic arrays, hashes and lists and, more
|
||||
excitingly, wxDateTime - a very flexible and powerful class for manipulating
|
||||
the dates in the range of 580 million years with up to millisecond precision.
|
||||
Another useful class not present in the standard C++ library is wxRegEx which
|
||||
allows you to use regular expressions for string matching and replacing.
|
||||
|
||||
There are also classes for writing portable programs in C++ painlessly which
|
||||
encapsulate things like files (and their names), directories, processes,
|
||||
threads, sockets and much more. Some of the other utility classes allow you to
|
||||
parse the command line, limit the number of instances of your program
|
||||
executing simultaneously (portably!) and so on.
|
||||
|
||||
1. Requirments and supported platforms
|
||||
--------------------------------------
|
||||
|
||||
wxBase can be compiled and used under Win32, mostly any modern Unix system
|
||||
(probably including Mac OS X but it wasn't tested there), VMS and BeOS (this
|
||||
release couldn't be tested under these platforms neither so you might
|
||||
encounter some problems but they should be easy to solve - please contact us
|
||||
in this case!)
|
||||
|
||||
It is written without using any modern C++ features (such as templates,
|
||||
exceptions, namespaces) for maximal portability and so you shouldn't have
|
||||
problems compiling it with any C++ compiler at all. However, we only provide
|
||||
the project files for Microsoft Visual C++ 6.0 for Win32 (any contributions
|
||||
are welcome!) - but our Unix makefiles will work with any compiler.
|
||||
|
||||
2. Installing under Win32
|
||||
-------------------------
|
||||
|
||||
Please note that wxBase can be compiled in different configurations under
|
||||
Win32: as a static or shared library, in debug or release mode and in ANSI
|
||||
or Unicode mode for a total of 8 possibilities.
|
||||
|
||||
a) Using Visual C++ 6.0
|
||||
|
||||
Simply open the src/wxBase.dsw file in MSDEV and build it. When it is
|
||||
done you can also open samples/console/console.dsp project and build it as
|
||||
well.
|
||||
|
||||
b) Cygwin
|
||||
|
||||
Please refer to the Unix section below
|
||||
|
||||
c) Other compilers
|
||||
|
||||
Unfortunately we don't have the makefiles for any other compilers yet.
|
||||
Please contact us if you would like to help us with creating one for the
|
||||
compiler you use.
|
||||
|
||||
3. Installing under Unix/BeOS
|
||||
-----------------------------
|
||||
|
||||
NB: If you're building wxBase from the wxWindows distribution and not from a
|
||||
separate wxBase one you will need to add "--disable-gui" to configure
|
||||
arguments below!
|
||||
|
||||
Please note that GNU make is required to build wxBase!
|
||||
|
||||
The recommended way to build wxBase is:
|
||||
|
||||
% cd ..../wxWindows
|
||||
% mkdir base-release
|
||||
% cd base-release
|
||||
% ../configure
|
||||
# ignore the error messages about missing samples
|
||||
% make
|
||||
% make install
|
||||
|
||||
You can also do:
|
||||
|
||||
% mkdir base-debug
|
||||
% cd base-debug
|
||||
% ../configure --enable-debug
|
||||
% make
|
||||
|
||||
To build the sample then cd to samples/console and make there.
|
||||
|
||||
4. Documentation and support
|
||||
----------------------------
|
||||
|
||||
The console sample provided with this distribution tests most (but not all)
|
||||
wxBase classes. It doesn't do anything useful per itself but you may want to
|
||||
look at its code to see examples of usage of the class you are interested in.
|
||||
|
||||
There is no separate documentation for wxBase, please refer to wxWindows
|
||||
documentation instead.
|
||||
|
||||
Support for wxBase is available from the same places as for wxWindows itself,
|
||||
namely:
|
||||
|
||||
* Usenet newsgroup comp.soft-sys.wxwindows
|
||||
|
||||
* Mailing lists: see http://lists.wxwindows.org/ for more information
|
||||
|
||||
* WWW page: http://www.wxwindows.org/
|
||||
|
||||
|
||||
Hope you will find wxBase useful!
|
||||
|
||||
Vadim Zeitlin
|
||||
|
||||
|
||||
This file is accurate for the version 2.3.2 of wxBase. It was last modified on
|
||||
Dec 11, 2001.
|
||||
|
||||
2. Installing under Unix/BeOS
|
||||
--------------------------
|
||||
|
@@ -425,6 +425,7 @@ wxWindows has several small classes to work with disk files, see \helpref{file c
|
||||
overview}{wxfileoverview} for more details.
|
||||
|
||||
\begin{twocollist}\itemsep=0pt
|
||||
\twocolitem{\helpref{wxFileName}{wxfilename}}{Operations with the file name and attributes}
|
||||
\twocolitem{\helpref{wxDir}{wxdir}}{Class for enumerating files/subdirectories.}
|
||||
\twocolitem{\helpref{wxDirTraverser}{wxdirtraverser}}{Class used together with wxDir for recursively enumerating the files/subdirectories}
|
||||
\twocolitem{\helpref{wxFile}{wxfile}}{Low-level file input/output class.}
|
||||
|
@@ -92,6 +92,7 @@
|
||||
\input fildrptg.tex
|
||||
\input filehist.tex
|
||||
\input strmfile.tex
|
||||
\input filename.tex
|
||||
\input propflva.tex
|
||||
\input filesys.tex
|
||||
\input filesysh.tex
|
||||
|
@@ -281,6 +281,14 @@ specifies the \helpref{command line description}{wxcmdlineparsersetdesc}.
|
||||
Same as \helpref{wxCmdLineParser}{wxcmdlineparserwxcmdlineparserstr}, but also
|
||||
specifies the \helpref{command line description}{wxcmdlineparsersetdesc}.
|
||||
|
||||
\membersection{wxCmdLineParser::ConvertStringToArgs}\label{wxcmdlineparserconvertstringtoargs}
|
||||
|
||||
\func{static wxArrayString}{ConvertStringToArgs}{\param{const wxChar }{*cmdline}}
|
||||
|
||||
Breaks down the string containing the full command line in words. The words are
|
||||
separated by whitespace. The quotes can be used in the input string to quote
|
||||
the white space and the back slashes can be used to quote the quotes.
|
||||
|
||||
\membersection{wxCmdLineParser::SetCmdLine}\label{wxcmdlineparsersetcmdlineargc}
|
||||
|
||||
\func{void}{SetCmdLine}{\param{int }{argc}, \param{char** }{argv}}
|
||||
|
@@ -50,5 +50,6 @@ Override this function to receive dropped files.
|
||||
|
||||
Return TRUE to accept the data, FALSE to veto the operation.
|
||||
|
||||
\perlnote{In wxPerl there is just an array reference in place of {\tt nFiles}
|
||||
\perlnote{In wxPerl there is just an array reference in place of {\tt nFiles}
|
||||
and {\tt files}.}
|
||||
|
||||
|
@@ -54,6 +54,8 @@ or test if it can be opened for writing with Access()}
|
||||
contents of the file is not erased and the file pointer is initially placed at the end of the file;
|
||||
can not be used with Access(). This is the same as {\bf wxFile::write} if the
|
||||
file doesn't exist.}
|
||||
\twocolitem{{\bf wxFile::write\_excl}}{Open the file securely for writing (Uses O\_EXCL | O\_CREAT).
|
||||
Will fail if the file already exists, else create and open it atomically. Useful for opening temporary files without being vulnerable to race exploits.}
|
||||
\end{twocollist}
|
||||
|
||||
Other constants defined elsewhere but used by wxFile functions are wxInvalidOffset which represents an
|
||||
|
617
docs/latex/wx/filename.tex
Normal file
617
docs/latex/wx/filename.tex
Normal file
@@ -0,0 +1,617 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% Name: filename.tex
|
||||
%% Purpose: wxFileName documentation
|
||||
%% Author: Vadim Zeitlin
|
||||
%% Modified by:
|
||||
%% Created: 30.11.01
|
||||
%% RCS-ID: $Id$
|
||||
%% Copyright: (c) 2001 Vadim Zeitlin
|
||||
%% License: wxWindows license
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\section{\class{wxFileName}}\label{wxfilename}
|
||||
|
||||
wxFileName encapsulates a file name. This class serves two purposes: first, it
|
||||
provides the functions to split the file names into components and to recombine
|
||||
these components in the full file name which can then be passed to the OS file
|
||||
functions (and \helpref{wxWindows functions}{filefunctions} wrapping them).
|
||||
Second, it includes the functions for working with the files itself. Note that
|
||||
to change the file data you should use \helpref{wxFile}{wxfile} class instead,
|
||||
wxFileName provides functions for working with the file attributes.
|
||||
|
||||
\wxheading{Derived from}
|
||||
|
||||
No base class
|
||||
|
||||
\wxheading{Data structures}
|
||||
|
||||
Many wxFileName methods accept the path format argument which is by\rtfsp
|
||||
{\tt wxPATH\_NATIVE} by default meaning to use the path format native for the
|
||||
current platform.
|
||||
|
||||
The path format affects the operation of wxFileName functions in several ways:
|
||||
first and foremost, it defines the path separator character to use, but it also
|
||||
affects other things such as whether the path has the drive part or not.
|
||||
|
||||
\begin{verbatim}
|
||||
enum wxPathFormat
|
||||
{
|
||||
wxPATH_NATIVE = 0, // the path format for the current platform
|
||||
wxPATH_UNIX,
|
||||
wxPATH_MAC,
|
||||
wxPATH_DOS,
|
||||
wxPATH_VMS,
|
||||
|
||||
wxPATH_BEOS = wxPATH_UNIX,
|
||||
wxPATH_WIN = wxPATH_DOS,
|
||||
wxPATH_OS2 = wxPATH_DOS
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
The kind of normalization to do with the file name: these values can be
|
||||
or'd together to perform several operations at once in\rtfsp
|
||||
\helpref{Normalize}{wxfilenamenormalize}.
|
||||
|
||||
\begin{verbatim}
|
||||
enum wxPathNormalize
|
||||
{
|
||||
wxPATH_NORM_ENV_VARS = 0x0001, // replace env vars with their values
|
||||
wxPATH_NORM_DOTS = 0x0002, // squeeze all .. and . and prepend cwd
|
||||
wxPATH_NORM_TILDE = 0x0004, // Unix only: replace ~ and ~user
|
||||
wxPATH_NORM_CASE = 0x0008, // if case insensitive => tolower
|
||||
wxPATH_NORM_ABSOLUTE = 0x0010, // make the path absolute
|
||||
wxPATH_NORM_LONG = 0x0020, // make the path the long form
|
||||
wxPATH_NORM_ALL = 0x003f
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
\latexignore{\rtfignore{\wxheading{Function groups}}}
|
||||
|
||||
\membersection{File name format}
|
||||
|
||||
wxFileName currently supports the file names in the Unix, DOS/Windows, Mac OS
|
||||
and VMS formats. Although these formats are quite different, wxFileName tries
|
||||
to treat them all in the sam generic way. It supposes that all file names
|
||||
consist of the following parts: the volume (also known as drive under Windows
|
||||
or device under VMS), the path which is a sequence of directory names separated
|
||||
by the \helpref{path separators}{wxfilenamegetpathseparators} and the full
|
||||
filename itself which, in turn, is composed from the base file name and the
|
||||
extension. All of the individual components of the file name may be empty and,
|
||||
for example, the volume name is always empty under Unix, but if they are all
|
||||
empty simultaneously, the filename object is considered to be in an invalid
|
||||
state and \helpref{IsOk}{wxfilenameisok} returns {\tt FALSE} for it.
|
||||
|
||||
File names can be case-sensitive or not, the function\rtfsp
|
||||
\helpref{IsCaseSensitive}{wxfilenameiscasesensitive} allows to determine this.
|
||||
|
||||
The rules for determining if the file name is absolute or relative also depends
|
||||
on the file name format and the only portable way to answer to this question is
|
||||
to use \helpref{IsAbsolute}{wxfilenameisabsolute} method. To ensure that the
|
||||
filename is absolute you may use \helpref{Normalize}{wxfilenamenormalize}. There
|
||||
is also an inverse function \helpref{MakeRelativeTo}{wxfilenamemakerelativeto}
|
||||
which undoes what \helpref{Normalize(wxPATH\_NORM\_DOTS}{wxfilenamenormalize}
|
||||
does.
|
||||
|
||||
Other functions returning information about the file format provided by this
|
||||
class are \helpref{GetVolumeSeparator}{wxfilenamegetvolumeseparator},\rtfsp
|
||||
\helpref{IsPathSeparator}{wxfilenameispathseparator} and\rtfsp
|
||||
\helpref{IsWild}{wxfilenameiswild}.
|
||||
|
||||
\helpref{IsRelative}{wxfilenameisrelative}
|
||||
|
||||
\membersection{File name construction}
|
||||
|
||||
TODO.
|
||||
|
||||
\membersection{File tests}
|
||||
|
||||
Before doing the other tests you should use \helpref{IsOk}{wxfilenameisok} to
|
||||
verify that the filename is well defined. If it is,
|
||||
\helpref{FileExists}{wxfilenamefileexists} can be used to test if a file with
|
||||
such name exists and \helpref{DirExists}{wxfilenamedirexists} - if a directory
|
||||
with this name exists.
|
||||
|
||||
File names should be compared using \helpref{SameAs}{wxfilenamesameas} method
|
||||
or \helpref{$==$}{wxfilenameoperatorequal}.
|
||||
|
||||
\membersection{File name components}
|
||||
|
||||
These functions allow to examine and modify the directories of the path:
|
||||
|
||||
\helpref{AppendDir}{wxfilenameappenddir}\\
|
||||
\helpref{InsertDir}{wxfilenameinsertdir}\\
|
||||
\helpref{GetDirCount}{wxfilenamegetdircount}
|
||||
\helpref{PrependDir}{wxfilenameprependdir}\\
|
||||
\helpref{RemoveDir}{wxfilenameremovedir}
|
||||
|
||||
To change the components of the file name individually you can use the
|
||||
following functions:
|
||||
|
||||
\helpref{GetExt}{wxfilenamegetext}\\
|
||||
\helpref{GetName}{wxfilenamegetname}\\
|
||||
\helpref{GetVolume}{wxfilenamegetvolume}\\
|
||||
\helpref{HasExt}{wxfilenamehasext}\\
|
||||
\helpref{HasName}{wxfilenamehasname}\\
|
||||
\helpref{HasVolume}{wxfilenamehasvolume}\\
|
||||
\helpref{SetExt}{wxfilenamesetext}\\
|
||||
\helpref{SetName}{wxfilenamesetname}\\
|
||||
\helpref{SetVolume}{wxfilenamesetvolume}\\
|
||||
|
||||
\membersection{Operations}
|
||||
|
||||
These methods allow to work with the file creation, access and modification
|
||||
times:
|
||||
|
||||
\helpref{GetModificationTime}{wxfilenamegetmodificationtime}\\
|
||||
\helpref{GetTimes}{wxfilenamegettimes}\\
|
||||
\helpref{SetTimes}{wxfilenamesettimes}\\
|
||||
\helpref{Touch}{wxfilenametouch}
|
||||
|
||||
Other file system operations functions are:
|
||||
|
||||
\helpref{Mkdir}{wxfilenamemkdir}\\
|
||||
\helpref{Rmdir}{wxfilenamermdir}
|
||||
|
||||
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||
|
||||
\membersection{wxFileName::wxFileName}\label{wxfilenamewxfilename}
|
||||
|
||||
\func{}{wxFileName}{\void}
|
||||
|
||||
Default constructor.
|
||||
|
||||
\func{}{wxFileName}{\param{const wxFileName\& }{filename}}
|
||||
|
||||
Copy constructor.
|
||||
|
||||
\func{}{wxFileName}{\param{const wxString\& }{fullpath}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
From a full filename: if it terminates with a '/', a directory path
|
||||
is contructed (the name will be empty), otherwise a file name and
|
||||
extension are extracted from it
|
||||
|
||||
\func{}{wxFileName}{\param{const wxString\& }{path}, \param{const wxString\& }{name}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Constructor from a directory name and a file name.
|
||||
|
||||
\func{}{wxFileName}{\param{const wxString\& }{path}, \param{const wxString\& }{name}, \param{const wxString\& }{ext}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Constructor from a directory name, base file name and extension
|
||||
|
||||
\func{}{wxFileName}{\param{const wxString\& }{volume}, \param{const wxString\& }{path}, \param{const wxString\& }{name}, \param{const wxString\& }{ext}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Constructor from a volume name, a directory name, base file name and extension
|
||||
|
||||
\membersection{wxFileName::AppendDir}\label{wxfilenameappenddir}
|
||||
|
||||
\func{void}{AppendDir}{\param{const wxString\& }{dir}}
|
||||
|
||||
|
||||
\membersection{wxFileName::Assign}\label{wxfilenameassign}
|
||||
|
||||
\func{void}{Assign}{\param{const wxFileName\& }{filepath}}
|
||||
|
||||
\func{void}{Assign}{\param{const wxString\& }{fullpath}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
\func{void}{Assign}{\param{const wxString\& }{volume}, \param{const wxString\& }{path}, \param{const wxString\& }{name}, \param{const wxString\& }{ext}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
\func{void}{Assign}{\param{const wxString\& }{path}, \param{const wxString\& }{name}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
\func{void}{Assign}{\param{const wxString\& }{path}, \param{const wxString\& }{name}, \param{const wxString\& }{ext}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
|
||||
\membersection{wxFileName::AssignCwd}\label{wxfilenameassigncwd}
|
||||
|
||||
\func{void}{AssignCwd}{\param{const wxString\& }{volume = ""}}
|
||||
|
||||
Makes this object refer to the current working directory on the specified
|
||||
volume (or current volume if {\it volume} is empty).
|
||||
|
||||
\wxheading{See also}
|
||||
|
||||
\helpref{GetCwd}{wxfilenamegetcwd}
|
||||
|
||||
\membersection{wxFileName::AssignDir}\label{wxfilenameassigndir}
|
||||
|
||||
\func{void}{AssignDir}{\param{const wxString\& }{dir}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Set this file name object to the given directory name. The name and extension
|
||||
will be empty.
|
||||
|
||||
\membersection{wxFileName::AssignHomeDir}\label{wxfilenameassignhomedir}
|
||||
|
||||
\func{void}{AssignHomeDir}{\void}
|
||||
|
||||
Set this file name object to the home directory.
|
||||
|
||||
\membersection{wxFileName::AssignTempFileName}\label{wxfilenameassigntempfilename}
|
||||
|
||||
\func{void}{AssignTempFileName}{\param{const wxString\& }{prefix}}
|
||||
|
||||
The function calls \helpref{CreateTempFileName}{wxfilenamecreatetempfilename} to
|
||||
create a temporary file and sets this object to the name of the file. If a
|
||||
temporary file couldn't be created, the object is put into the\rtfsp
|
||||
\helpref{invalid}{wxfilenameisok} state.
|
||||
|
||||
\membersection{wxFileName::Clear}\label{wxfilenameclear}
|
||||
|
||||
\func{void}{Clear}{\void}
|
||||
|
||||
Reset all components to default, uninitialized state.
|
||||
|
||||
\membersection{wxFileName::CreateTempFileName}\label{wxfilenamecreatetempfilename}
|
||||
|
||||
\func{static wxString}{CreateTempFileName}{\param{const wxString\& }{prefix}}
|
||||
|
||||
Returns a temporary file name starting with the given {\it prefix}. If
|
||||
the {\it prefix} is an absolute path, the temporary file is created in this
|
||||
directory, otherwise it is created in the default system directory for the
|
||||
temporary files or in the current directory.
|
||||
|
||||
If the function succeeds, the temporary file is actually created (but not
|
||||
opened) as well. Under Unix, it will have read and write permissions for the
|
||||
owner only.
|
||||
|
||||
\wxheading{Return value}
|
||||
|
||||
The full temporary file name or an empty string on error.
|
||||
|
||||
\membersection{wxFileName::DirExists}\label{wxfilenamedirexists}
|
||||
|
||||
\func{bool}{DirExists}{\void}
|
||||
|
||||
\func{bool}{DirExists}{\param{const wxString\& }{dir}}
|
||||
|
||||
Does the directory with this name exists?
|
||||
|
||||
\membersection{wxFileName::DirName}\label{wxfilenamedirname}
|
||||
|
||||
\func{wxFileName}{DirName}{\param{const wxString\& }{dir}}
|
||||
|
||||
\membersection{wxFileName::FileExists}\label{wxfilenamefileexists}
|
||||
|
||||
\func{bool}{FileExists}{\void}
|
||||
|
||||
\func{bool}{FileExists}{\param{const wxString\& }{file}}
|
||||
|
||||
Does the file with this name exists?
|
||||
|
||||
\membersection{wxFileName::FileName}\label{wxfilenamefilename}
|
||||
|
||||
\func{wxFileName}{FileName}{\param{const wxString\& }{file}}
|
||||
|
||||
static pseudo constructors
|
||||
|
||||
\membersection{wxFileName::GetCwd}\label{wxfilenamegetcwd}
|
||||
|
||||
\func{wxString}{GetCwd}{\param{const wxString\& }{volume = ""}}
|
||||
|
||||
Retrieve the value of the current working directory on the specified volume. If
|
||||
the volume is empty, the programs current working directory is returned for the
|
||||
current volume.
|
||||
|
||||
\wxheading{Return value}
|
||||
|
||||
The string containing the current working directory or an empty string on
|
||||
error.
|
||||
|
||||
\wxheading{See also}
|
||||
|
||||
\helpref{AssignCwd}{wxfilenameassigncwd}
|
||||
|
||||
\membersection{wxFileName::GetDirCount}\label{wxfilenamegetdircount}
|
||||
|
||||
\constfunc{size\_t}{GetDirCount}{\void}
|
||||
|
||||
|
||||
\membersection{wxFileName::GetDirs}\label{wxfilenamegetdirs}
|
||||
|
||||
\constfunc{const wxArrayString\&}{GetDirs}{\void}
|
||||
|
||||
|
||||
\membersection{wxFileName::GetExt}\label{wxfilenamegetext}
|
||||
|
||||
\constfunc{wxString}{GetExt}{\void}
|
||||
|
||||
|
||||
\membersection{wxFileName::GetFormat}\label{wxfilenamegetformat}
|
||||
|
||||
\func{wxPathFormat}{GetFormat}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
various helpers
|
||||
get the canonical path format for this platform
|
||||
|
||||
|
||||
\membersection{wxFileName::GetFullName}\label{wxfilenamegetfullname}
|
||||
|
||||
\constfunc{wxString}{GetFullName}{\void}
|
||||
|
||||
|
||||
\membersection{wxFileName::GetFullPath}\label{wxfilenamegetfullpath}
|
||||
|
||||
\constfunc{wxString}{GetFullPath}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
add separator Construct full path with name and ext
|
||||
|
||||
|
||||
\membersection{wxFileName::GetHomeDir}\label{wxfilenamegethomedir}
|
||||
|
||||
\func{wxString}{GetHomeDir}{\void}
|
||||
|
||||
|
||||
\membersection{wxFileName::GetLongPath}\label{wxfilenamegetlongpath}
|
||||
|
||||
\constfunc{wxString}{GetLongPath}{\void}
|
||||
|
||||
Return the long form of the path (returns identity on non-Windows platforms)
|
||||
|
||||
|
||||
\membersection{wxFileName::GetModificationTime}\label{wxfilenamegetmodificationtime}
|
||||
|
||||
\constfunc{wxDateTime}{GetModificationTime}{\void}
|
||||
|
||||
convenience wrapper: get just the last mod time of the file
|
||||
|
||||
|
||||
\membersection{wxFileName::GetName}\label{wxfilenamegetname}
|
||||
|
||||
\constfunc{wxString}{GetName}{\void}
|
||||
|
||||
|
||||
\membersection{wxFileName::GetPath}\label{wxfilenamegetpath}
|
||||
|
||||
\constfunc{wxString}{GetPath}{\param{bool }{add\_separator = FALSE}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Construct path only - possibly with the trailing separator
|
||||
|
||||
|
||||
\membersection{wxFileName::GetPathSeparators}\label{wxfilenamegetpathseparators}
|
||||
|
||||
\func{wxString}{GetPathSeparators}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
get the string of path separators for this format
|
||||
|
||||
|
||||
\membersection{wxFileName::GetPathWithSep}\label{wxfilenamegetpathwithsep}
|
||||
|
||||
\constfunc{wxString}{GetPathWithSep}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
more readable synonym
|
||||
|
||||
|
||||
\membersection{wxFileName::GetShortPath}\label{wxfilenamegetshortpath}
|
||||
|
||||
\constfunc{wxString}{GetShortPath}{\void}
|
||||
|
||||
Return the short form of the path (returns identity on non-Windows platforms)
|
||||
|
||||
|
||||
\membersection{wxFileName::GetTimes}\label{wxfilenamegettimes}
|
||||
|
||||
\constfunc{bool}{GetTimes}{\param{wxDateTime* }{dtAccess}, \param{wxDateTime* }{dtMod}, \param{wxDateTime* }{dtChange}}
|
||||
|
||||
return the last access, last modification and last change times
|
||||
(any of the pointers may be NULL)
|
||||
|
||||
|
||||
\membersection{wxFileName::GetVolume}\label{wxfilenamegetvolume}
|
||||
|
||||
\constfunc{wxString}{GetVolume}{\void}
|
||||
|
||||
|
||||
\membersection{wxFileName::GetVolumeSeparator}\label{wxfilenamegetvolumeseparator}
|
||||
|
||||
\func{wxString}{GetVolumeSeparator}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
get the string separating the volume from the path for this format
|
||||
|
||||
|
||||
\membersection{wxFileName::HasExt}\label{wxfilenamehasext}
|
||||
|
||||
\constfunc{bool}{HasExt}{\void}
|
||||
|
||||
|
||||
\membersection{wxFileName::HasName}\label{wxfilenamehasname}
|
||||
|
||||
\constfunc{bool}{HasName}{\void}
|
||||
|
||||
|
||||
\membersection{wxFileName::HasVolume}\label{wxfilenamehasvolume}
|
||||
|
||||
\constfunc{bool}{HasVolume}{\void}
|
||||
|
||||
|
||||
\membersection{wxFileName::InsertDir}\label{wxfilenameinsertdir}
|
||||
|
||||
\func{void}{InsertDir}{\param{int }{before}, \param{const wxString\& }{dir}}
|
||||
|
||||
|
||||
\membersection{wxFileName::IsAbsolute}\label{wxfilenameisabsolute}
|
||||
|
||||
\func{bool}{IsAbsolute}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
is this filename absolute?
|
||||
|
||||
|
||||
\membersection{wxFileName::IsCaseSensitive}\label{wxfilenameiscasesensitive}
|
||||
|
||||
\func{bool}{IsCaseSensitive}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Tests
|
||||
are the file names of this type cases sensitive?
|
||||
|
||||
|
||||
\membersection{wxFileName::IsOk}\label{wxfilenameisok}
|
||||
|
||||
\constfunc{bool}{IsOk}{\void}
|
||||
|
||||
Returns {\tt TRUE} if the filename is valid, {\tt FALSE} if it is not
|
||||
initialized yet. The assignment functions and
|
||||
\helpref{Clear}{wxfilenameclear} may reset the object to the uninitialized,
|
||||
invalid state (the former only do it on failure).
|
||||
|
||||
\membersection{wxFileName::IsPathSeparator}\label{wxfilenameispathseparator}
|
||||
|
||||
\func{bool}{IsPathSeparator}{\param{wxChar }{ch}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Returns {\tt TRUE} if the char is a path separator for this format.
|
||||
|
||||
\membersection{wxFileName::IsRelative}\label{wxfilenameisrelative}
|
||||
|
||||
\func{bool}{IsRelative}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Returns {\tt TRUE} if this filename is not absolute.
|
||||
|
||||
\membersection{wxFileName::IsWild}\label{wxfilenameiswild}
|
||||
|
||||
\func{bool}{IsWild}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
FIXME: what exactly does this do?
|
||||
|
||||
\membersection{wxFileName::MakeRelativeTo}\label{wxfilenamemakerelativeto}
|
||||
|
||||
\func{bool}{MakeRelativeTo}{\param{const wxString\& }{pathBase = ""}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
This function tries to put this file name in a form relative to {\it pathBase}.
|
||||
In other words, it returns the file name which should be used to access this
|
||||
file if the current directory were {\it pathBase}.
|
||||
|
||||
\docparam{pathBase}{the directory to use as root, current directory is used by
|
||||
default}
|
||||
|
||||
\docparam{format}{the file name format, native by default}
|
||||
|
||||
\wxheading{Return value}
|
||||
|
||||
{\tt TRUE} if the file name has been changed, {\tt FALSE} if we failed to do
|
||||
anything with it (currently this only happens if the file name is on a volume
|
||||
different from the volume specified by {\it pathBase}).
|
||||
|
||||
\wxheading{See also}
|
||||
|
||||
\helpref{Normalize}{wxfilenamenormalize}
|
||||
|
||||
\membersection{wxFileName::Mkdir}\label{wxfilenamemkdir}
|
||||
|
||||
\func{bool}{Mkdir}{\param{int }{perm = 0777}, \param{bool }{full = FALSE}}
|
||||
|
||||
\func{static bool}{Mkdir}{\param{const wxString\& }{dir}, \param{int }{perm = 0777}, \param{bool }{full = FALSE}}
|
||||
|
||||
\docparam{dir}{the directory to create}
|
||||
|
||||
\docparam{parm}{the permissions for the newly created directory}
|
||||
|
||||
\docparam{full}{if {\tt TRUE}, will try to make each directory in the path}
|
||||
|
||||
\wxheading{Return value}
|
||||
|
||||
Returns {\tt TRUE} if the directory was successfully created, {\tt FALSE}
|
||||
otherwise.
|
||||
|
||||
\membersection{wxFileName::Normalize}\label{wxfilenamenormalize}
|
||||
|
||||
\func{bool}{Normalize}{\param{wxPathNormalize }{flags = wxPATH\_NORM\_ALL}, \param{const wxString\& }{cwd = wxEmptyString}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
operations on the path
|
||||
normalize the path: with the default flags value, the path will be
|
||||
made absolute, without any ".." and "." and all environment
|
||||
variables will be expanded in it
|
||||
this may be done using another (than current) value of cwd
|
||||
|
||||
|
||||
\membersection{wxFileName::PrependDir}\label{wxfilenameprependdir}
|
||||
|
||||
\func{void}{PrependDir}{\param{const wxString\& }{dir}}
|
||||
|
||||
|
||||
\membersection{wxFileName::RemoveDir}\label{wxfilenameremovedir}
|
||||
|
||||
\func{void}{RemoveDir}{\param{int }{pos}}
|
||||
|
||||
|
||||
\membersection{wxFileName::Rmdir}\label{wxfilenamermdir}
|
||||
|
||||
\func{bool}{Rmdir}{\void}
|
||||
|
||||
\func{static bool}{Rmdir}{\param{const wxString\& }{dir}}
|
||||
|
||||
Deletes the specified directory.
|
||||
|
||||
|
||||
\membersection{wxFileName::SameAs}\label{wxfilenamesameas}
|
||||
|
||||
\func{bool}{SameAs}{\param{const wxFileName\& }{filepath}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Compares the filename using the rules of this platform
|
||||
|
||||
|
||||
\membersection{wxFileName::SetCwd}\label{wxfilenamesetcwd}
|
||||
|
||||
\func{bool}{SetCwd}{\void}
|
||||
|
||||
\func{static bool}{SetCwd}{\param{const wxString\& }{cwd}}
|
||||
|
||||
change the current working directory
|
||||
|
||||
\membersection{wxFileName::SetExt}\label{wxfilenamesetext}
|
||||
|
||||
\func{void}{SetExt}{\param{const wxString\& }{ext}}
|
||||
|
||||
|
||||
\membersection{wxFileName::SetFullName}\label{wxfilenamesetfullname}
|
||||
|
||||
\func{void}{SetFullName}{\param{const wxString\& }{fullname}}
|
||||
|
||||
full name is the file name + extension (but without the path)
|
||||
|
||||
|
||||
\membersection{wxFileName::SetName}\label{wxfilenamesetname}
|
||||
|
||||
\func{void}{SetName}{\param{const wxString\& }{name}}
|
||||
|
||||
|
||||
\membersection{wxFileName::SetTimes}\label{wxfilenamesettimes}
|
||||
|
||||
\func{bool}{SetTimes}{\param{const wxDateTime* }{dtCreate}, \param{const wxDateTime* }{dtAccess}, \param{const wxDateTime* }{dtMod}}
|
||||
|
||||
set the file creation and last access/mod times
|
||||
(any of the pointers may be NULL)
|
||||
|
||||
|
||||
\membersection{wxFileName::SetVolume}\label{wxfilenamesetvolume}
|
||||
|
||||
\func{void}{SetVolume}{\param{const wxString\& }{volume}}
|
||||
|
||||
|
||||
\membersection{wxFileName::SplitPath}\label{wxfilenamesplitpath}
|
||||
|
||||
\func{void}{SplitPath}{\param{const wxString\& }{fullpath}, \param{wxString* }{volume}, \param{wxString* }{path}, \param{wxString* }{name}, \param{wxString* }{ext}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
\func{void}{SplitPath}{\param{const wxString\& }{fullpath}, \param{wxString* }{path}, \param{wxString* }{name}, \param{wxString* }{ext}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
split a fullpath into the volume, path, (base) name and extension
|
||||
(all of the pointers can be NULL)
|
||||
|
||||
\membersection{wxFileName::Touch}\label{wxfilenametouch}
|
||||
|
||||
\func{bool}{Touch}{\void}
|
||||
|
||||
set the access and modification times to the current moment
|
||||
|
||||
|
||||
\membersection{wxFileName::operator=}\label{wxfilenameoperatorassign}
|
||||
|
||||
\func{wxFileName\& operator}{operator=}{\param{const wxFileName\& }{filename}}
|
||||
|
||||
\func{wxFileName\& operator}{operator=}{\param{const wxString\& }{filename}}
|
||||
|
||||
Assigns the new value to this filename object.
|
||||
|
||||
\membersection{wxFileName::operator==}\label{wxfilenameoperatorequal}
|
||||
|
||||
\func{bool operator}{operator==}{\param{const wxFileName\& }{filename}}
|
||||
|
||||
\func{bool operator}{operator==}{\param{const wxString\& }{filename}}
|
||||
|
||||
Returns {\tt TRUE} if the filenames are equal for the native file format.
|
||||
|
@@ -265,15 +265,19 @@ if the buffer is NULL.
|
||||
|
||||
\func{bool}{wxGetTempFileName}{\param{const wxString\& }{prefix}, \param{wxString\& }{buf}}
|
||||
|
||||
Makes a temporary filename based on {\it prefix}, opens and closes the file,
|
||||
and places the name in {\it buf}. If {\it buf} is NULL, new store
|
||||
is allocated for the temporary filename using {\it new}.
|
||||
%% Makes a temporary filename based on {\it prefix}, opens and closes the file,
|
||||
%% and places the name in {\it buf}. If {\it buf} is NULL, new store
|
||||
%% is allocated for the temporary filename using {\it new}.
|
||||
%%
|
||||
%% Under Windows, the filename will include the drive and name of the
|
||||
%% directory allocated for temporary files (usually the contents of the
|
||||
%% TEMP variable). Under Unix, the {\tt /tmp} directory is used.
|
||||
%%
|
||||
%% It is the application's responsibility to create and delete the file.
|
||||
|
||||
Under Windows, the filename will include the drive and name of the
|
||||
directory allocated for temporary files (usually the contents of the
|
||||
TEMP variable). Under Unix, the {\tt /tmp} directory is used.
|
||||
|
||||
It is the application's responsibility to create and delete the file.
|
||||
These functions are obsolete, please use\rtfsp
|
||||
\helpref{wxFileName::CreateTempFileName}{wxfilenamecreatetempfilename}\rtfsp
|
||||
instead.
|
||||
|
||||
\membersection{::wxIsWild}\label{wxiswild}
|
||||
|
||||
|
@@ -127,7 +127,7 @@ Inserts data into the hash table, using an integer or string key (depending on w
|
||||
has table constructor was used). The key string is copied and stored by the hash
|
||||
table implementation.
|
||||
|
||||
\membersection{wxList::GetCount}
|
||||
\membersection{wxHashTable::GetCount}
|
||||
|
||||
\constfunc{size\_t}{GetCount}{\void}
|
||||
|
||||
|
@@ -24,7 +24,8 @@ also has operators for implicit construction from and conversion to the native
|
||||
{\it long long} type if it exists and {\it long}.
|
||||
|
||||
You would usually use this type in exactly the same manner as any other
|
||||
(built-in) arithmetic type. Note that wxLongLong is a signed type.
|
||||
(built-in) arithmetic type. Note that wxLongLong is a signed type, if you
|
||||
want unsigned values use wxULongLong.
|
||||
|
||||
If a native (i.e. supported directly by the compiler) 64 bit integer type was
|
||||
found a typedef {\it wxLongLong\_t} will be defined to correspond it.
|
||||
@@ -71,7 +72,7 @@ Assignment operator from native long long (only for compilers supporting it).
|
||||
\func{wxLongLong\&}{Abs}{\void}
|
||||
|
||||
Returns an absolute value of wxLongLong - either making a copy (const version)
|
||||
or modifying it in place (the second one).
|
||||
or modifying it in place (the second one). Not in wxULongLong.
|
||||
|
||||
\membersection{wxLongLong::Assign}\label{wxlonglongassign}
|
||||
|
||||
@@ -79,7 +80,7 @@ or modifying it in place (the second one).
|
||||
|
||||
This allows to convert a double value to wxLongLong type. Such conversion is
|
||||
not always possible in which case the result will be silently truncated in a
|
||||
platform-dependent way.
|
||||
platform-dependent way. Not in wxULongLong.
|
||||
|
||||
\membersection{wxLongLong::GetHi}\label{wxlonglonggethi}
|
||||
|
||||
@@ -137,7 +138,7 @@ Pre/post increment operator.
|
||||
|
||||
\constfunc{wxLongLong}{operator$-$}{\void}
|
||||
|
||||
Returns the value of this wxLongLong with opposite sign.
|
||||
Returns the value of this wxLongLong with opposite sign. Not in wxULongLong.
|
||||
|
||||
\membersection{wxLongLong::operator$-$}\label{wxlonglongoperatorminus}
|
||||
|
||||
|
@@ -31,7 +31,7 @@
|
||||
}}
|
||||
\winhelpignore{\author{Julian Smart, Robert Roebling, Vadim Zeitlin,
|
||||
Robin Dunn, et al}
|
||||
\date{September 6th 2001}
|
||||
\date{December 7th 2001}
|
||||
}
|
||||
\makeindex
|
||||
\begin{document}
|
||||
|
@@ -6,8 +6,9 @@ This class manages up to two subwindows. The current view can be
|
||||
split into two programmatically (perhaps from a menu command), and unsplit
|
||||
either programmatically or via the wxSplitterWindow user interface.
|
||||
|
||||
Appropriate 3D shading for the Windows 95 user interface is an option.
|
||||
This is also recommended for GTK.
|
||||
Appropriate 3D shading for the Windows 95 user interface is an option -
|
||||
this is also recommended for GTK. Optionally, the sash can be made to
|
||||
look more like the native control under MacOS X.
|
||||
|
||||
\wxheading{Window styles}
|
||||
|
||||
|
@@ -5,12 +5,36 @@ mouse clicks. An icon has an optional tooltip. This class is only supported for
|
||||
|
||||
\wxheading{Derived from}
|
||||
|
||||
\helpref{wxEvtHandler}{wxevthandler}\\
|
||||
\helpref{wxObject}{wxobject}
|
||||
|
||||
\wxheading{Include files}
|
||||
|
||||
<wx/taskbar.h>
|
||||
|
||||
\wxheading{Event handling}
|
||||
|
||||
To process input from a taskbar icon, use the following event handler macros to direct input to member
|
||||
functions that take a wxTaskBarIconEvent argument.
|
||||
|
||||
\twocolwidtha{7cm}
|
||||
\begin{twocollist}\itemsep=0pt
|
||||
\twocolitem{{\bf EVT\_TASKBAR\_MOVE(func)}}{Process a
|
||||
wxEVT\_TASKBAR\_MOVE event.}
|
||||
\twocolitem{{\bf EVT\_TASKBAR\_LEFT\_DOWN(func)}}{Process a
|
||||
wxEVT\_TASKBAR\_LEFT\_DOWN event.}
|
||||
\twocolitem{{\bf EVT\_TASKBAR\_LEFT\_UP(func)}}{Process a
|
||||
wxEVT\_TASKBAR\_LEFT\_UP event.}
|
||||
\twocolitem{{\bf EVT\_TASKBAR\_RIGHT\_DOWN(func)}}{Process a
|
||||
wxEVT\_TASKBAR\_RIGHT\_DOWN event.}
|
||||
\twocolitem{{\bf EVT\_TASKBAR\_RIGHT\_UP(func)}}{Process a
|
||||
wxEVT\_TASKBAR\_RIGHT\_UP event.}
|
||||
\twocolitem{{\bf EVT\_TASKBAR\_LEFT\_DCLICK(func)}}{Process a
|
||||
wxEVT\_TASKBAR\_LEFT\_DCLICK event.}
|
||||
\twocolitem{{\bf EVT\_TASKBAR\_RIGHT\_DCLICK(func)}}{Process a
|
||||
wxEVT\_TASKBAR\_RIGHT\_DCLICK event.}
|
||||
\end{twocollist}%
|
||||
|
||||
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||
|
||||
\membersection{wxTaskBarIcon::wxTaskBarIcon}\label{wxtaskbariconconstr}
|
||||
|
@@ -389,7 +389,7 @@ Copies the selected text to the clipboard and removes the selection.
|
||||
|
||||
Resets the internal `modified' flag as if the current edits had been saved.
|
||||
|
||||
\membersection{wxTextCtrl::GetDefaultStyle}{wxtextctrlgetdefaultstyle}
|
||||
\membersection{wxTextCtrl::GetDefaultStyle}\label{wxtextctrlgetdefaultstyle}
|
||||
|
||||
\constfunc{const wxTextAttr\& }{GetDefaultStyle}{\void}
|
||||
|
||||
@@ -681,6 +681,10 @@ If either of the font, foreground, or background colour is not set in\rtfsp
|
||||
the previous default style didn't set them neither, the global font or colours
|
||||
of the text control itself are used as fall back.
|
||||
|
||||
However if the {\it style} parameter is the default wxTextAttr, then the
|
||||
default style is just reset (instead of being combined with the new style which
|
||||
wouldn't change it at all).
|
||||
|
||||
\wxheading{Parameters}
|
||||
|
||||
\docparam{style}{The style for the new text.}
|
||||
|
@@ -9,7 +9,8 @@ will create it when required.
|
||||
|
||||
\wxheading{Derived from}
|
||||
|
||||
\helpref{wxFrame}{wxframe}\\
|
||||
wxPopupTransientWindow\\
|
||||
wxPopupWindow\\
|
||||
\helpref{wxWindow}{wxwindow}\\
|
||||
\helpref{wxEvtHandler}{wxevthandler}\\
|
||||
\helpref{wxObject}{wxobject}
|
||||
|
@@ -2068,6 +2068,10 @@ for them is found. Using this style allows to prevent them from being
|
||||
propagated beyond this window. Notice that wxDialog has this style on by
|
||||
default for the reasons explained in the
|
||||
\helpref{event processing overview}{eventprocessing}.}
|
||||
\twocolitem{\windowstyle{wxWS\_EX\_TRANSIENT}}{This can be used to prevent a
|
||||
window from being used as an implicit parent for the dialogs which were
|
||||
created without a parent. It is useful for the windows which can disappear at
|
||||
any moment as creating childs of such windows results in fatal problems.}
|
||||
\end{twocollist}
|
||||
|
||||
\membersection{wxWindow::SetFocus}\label{wxwindowsetfocus}
|
||||
|
@@ -1116,3 +1116,57 @@ Implicit conversion to a C string.
|
||||
|
||||
These comparisons are case-sensitive.
|
||||
|
||||
|
||||
\section{\class{wxStringBuffer}}\label{wxstringbuffer}
|
||||
|
||||
This tiny class allows to conveniently access the \helpref{wxString}{wxstring}
|
||||
internal buffer as a writable pointer without any risk to forget to restore
|
||||
the string to the usable state later.
|
||||
|
||||
For example, assuming you have a low-level OS function called
|
||||
{\tt GetMeaningOfLifeAsString(char *)} returning the value in the provided
|
||||
buffer (which must be writable, of course) you might call it like this:
|
||||
|
||||
\begin{verbatim}
|
||||
wxString theAnswer;
|
||||
GetMeaningOfLifeAsString(wxStringBuffer(theAnswer, 1024));
|
||||
if ( theAnswer != "42" )
|
||||
{
|
||||
wxLogError("Something is very wrong!");
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
\wxheading{Derived from}
|
||||
|
||||
None
|
||||
|
||||
\wxheading{Include files}
|
||||
|
||||
<wx/string.h>
|
||||
|
||||
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||
|
||||
\membersection{wxStringBuffer::wxStringBuffer}
|
||||
|
||||
\func{}{wxStringBuffer}{\param{const wxString\& }{str}, \param{size\_t }{len}}
|
||||
|
||||
Constructs a writable string buffer object associated with the given string
|
||||
and containing enough space for at least {\it len} characters. Basicly, this
|
||||
is equivalent to calling \helpref{GetWriteBuf}{wxstringgetwritebuf} and
|
||||
saving the result.
|
||||
|
||||
\membersection{wxStringBuffer::\destruct{wxStringBuffer}}
|
||||
|
||||
\func{}{\destruct{wxStringBuffer}}{\void}
|
||||
|
||||
Restores the string passed to the constructor to the usable state by calling
|
||||
\helpref{UngetWriteBuf}{wxstringungetwritebuf} on it.
|
||||
|
||||
\membersection{wxStringBuffer::operator wxChar *}
|
||||
|
||||
\constfunc{wxChar *}{operator wxChar *}{\void}
|
||||
|
||||
Returns the writable pointer to a buffer of the size at least equal to the
|
||||
length specified in the constructor.
|
||||
|
||||
|
||||
|
131
docs/mac/BuildSamplesM5.as → docs/mac/M5build.applescript
Executable file → Normal file
131
docs/mac/BuildSamplesM5.as → docs/mac/M5build.applescript
Executable file → Normal file
@@ -1,10 +1,13 @@
|
||||
--
|
||||
-- File: BuildSamplesM5.as
|
||||
-- Purpose: Automatic build of samples with CodeWarrior 5
|
||||
-- Author: Gilles Depeyrot
|
||||
-- Created: 06.10.2001
|
||||
--
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- Name: docs/mac/M5build.applescript
|
||||
-- Purpose: Automatic build of projects with CodeWarrior 5
|
||||
-- Author: Gilles Depeyrot
|
||||
-- Modified by:
|
||||
-- Created: 06.10.2001
|
||||
-- RCS-ID: $Id$
|
||||
-- Copyright: (c) 2001 Gilles Depeyrot
|
||||
-- Licence: wxWindows licence
|
||||
-----------------------------------------------------------------------------
|
||||
--
|
||||
-- This AppleScript automatically recurses through the selected folder looking for
|
||||
-- and building CodeWarrior projects.
|
||||
@@ -21,7 +24,7 @@ property gProjectSuffix : "M5.mcp"
|
||||
--
|
||||
property gEol : "
|
||||
"
|
||||
property gSeparator : "--------------------------------------------------------------------------------" & gEol
|
||||
property gSeparator : "-------------------------------------------------------------------------------" & gEol
|
||||
|
||||
--
|
||||
-- Project and build success count
|
||||
@@ -33,17 +36,17 @@ set theProjectSuccessCount to 0
|
||||
-- Default log file name
|
||||
--
|
||||
set theDate to (day of (current date)) & "/" & GetMonthIndex(current date) & "/" & (year of (current date))
|
||||
set theLogFileName to "wxMac samples " & theDate & ".log"
|
||||
set theLogFileName to "build-" & theDate & ".log"
|
||||
|
||||
--
|
||||
-- Ask the user to select the wxWindows samples folder
|
||||
--
|
||||
set theFolder to choose folder with prompt "Select the wxWindows samples folder"
|
||||
set theFolder to choose folder with prompt "Select the folder in which to build the projects"
|
||||
|
||||
--
|
||||
-- Ask the user to choose the build log file
|
||||
--
|
||||
set theLogFile to choose file name with prompt "Create the wxWindows samples build log file" default name theLogFileName
|
||||
set theLogFile to choose file name with prompt "Save the build log file" default name theLogFileName
|
||||
|
||||
--
|
||||
-- Open the log file to record the build log
|
||||
@@ -54,7 +57,7 @@ set theLogFileRef to open for access theLogFile with write permission
|
||||
-- Write log file header
|
||||
--
|
||||
write gSeparator starting at 0 to theLogFileRef
|
||||
write "wxWindows samples build log" & gEol to theLogFileRef
|
||||
write "Build log" & gEol to theLogFileRef
|
||||
write gSeparator to theLogFileRef
|
||||
write "start on " & ((current date) as string) & gEol to theLogFileRef
|
||||
write gSeparator to theLogFileRef
|
||||
@@ -101,13 +104,6 @@ write gSeparator to theLogFileRef
|
||||
-- Close the log file
|
||||
--
|
||||
close access theLogFileRef
|
||||
--
|
||||
-- Open the file in BBEdit Lite
|
||||
--
|
||||
tell application "BBEdit Lite 6.1"
|
||||
activate
|
||||
open theLogFile
|
||||
end tell
|
||||
|
||||
--
|
||||
-- BuildProjects
|
||||
@@ -115,51 +111,56 @@ end tell
|
||||
on BuildProjects(inLogFileRef, inFolder, inTarget, inRebuild)
|
||||
global theProjectCount, theProjectSuccessCount
|
||||
|
||||
tell application "Finder" to set theSubFolders to every folder of inFolder
|
||||
tell application "Finder" to update inFolder
|
||||
|
||||
try
|
||||
tell application "Finder" to set theProject to ((the first file of inFolder whose name ends with gProjectSuffix) as string)
|
||||
on error
|
||||
set theProject to ""
|
||||
end try
|
||||
|
||||
if theProject is not "" then
|
||||
set theProjectCount to theProjectCount + 1
|
||||
|
||||
write "building project '" & theProject & "'" & gEol to inLogFileRef
|
||||
|
||||
tell application "CodeWarrior IDE 4.0.4"
|
||||
--
|
||||
-- Open the project in CodeWarrior
|
||||
--
|
||||
open theProject
|
||||
--
|
||||
-- Change to the requested target
|
||||
--
|
||||
Set Current Target inTarget
|
||||
--
|
||||
-- Remove object code if rebuild requested
|
||||
--
|
||||
if inRebuild then
|
||||
Remove Binaries
|
||||
end if
|
||||
--
|
||||
-- Build/Rebuild the selected target
|
||||
--
|
||||
set theBuildInfo to Make Project with ExternalEditor
|
||||
--
|
||||
-- Close the project
|
||||
--
|
||||
Close Project
|
||||
end tell
|
||||
--
|
||||
-- Report errors to build log file
|
||||
--
|
||||
write gEol to inLogFileRef
|
||||
ReportBuildInfo(inLogFileRef, theBuildInfo)
|
||||
write gSeparator to inLogFileRef
|
||||
end if
|
||||
|
||||
tell application "Finder" to set theSubFolders to every folder of inFolder whose name does not end with " Data"
|
||||
repeat with theFolder in theSubFolders
|
||||
|
||||
tell application "Finder" to set theProject to (the first file of theFolder whose name ends with gProjectSuffix)
|
||||
|
||||
if theProject as string is not "" then
|
||||
set theProjectCount to theProjectCount + 1
|
||||
write "building project '" & (theProject as string) & "'" & gEol to inLogFileRef
|
||||
|
||||
tell application "CodeWarrior IDE 4.0.4"
|
||||
--
|
||||
-- Open the project in CodeWarrior
|
||||
--
|
||||
open theProject as string
|
||||
--
|
||||
-- Change to the requested target
|
||||
--
|
||||
Set Current Target inTarget
|
||||
--
|
||||
-- Remove object code if rebuild requested
|
||||
--
|
||||
if inRebuild then
|
||||
Remove Binaries
|
||||
end if
|
||||
--
|
||||
-- Build/Rebuild the selected target
|
||||
--
|
||||
set theBuildInfo to Make Project with ExternalEditor
|
||||
--
|
||||
-- Close the project
|
||||
--
|
||||
Close Project
|
||||
end tell
|
||||
--
|
||||
-- Report errors to build log file
|
||||
--
|
||||
write gEol to inLogFileRef
|
||||
ReportBuildInfo(inLogFileRef, theBuildInfo)
|
||||
write gSeparator to inLogFileRef
|
||||
else
|
||||
BuildProjects(inLogFileRef, theFolder, inTarget, inRebuild)
|
||||
end if
|
||||
|
||||
BuildProjects(inLogFileRef, theFolder, inTarget, inRebuild)
|
||||
end repeat
|
||||
|
||||
end BuildProjects
|
||||
|
||||
--
|
||||
@@ -175,16 +176,16 @@ on ReportBuildInfo(inLogFileRef, inBuildInfo)
|
||||
tell application "CodeWarrior IDE 4.0.4"
|
||||
set theKind to ((messageKind of theInfo) as string)
|
||||
|
||||
write "*** " & theKind & " *** " & message of theInfo & gEol to inLogFileRef
|
||||
tell me to write "*** " & theKind & " *** " & message of theInfo & gEol to inLogFileRef
|
||||
try
|
||||
set theFile to ((file of theInfo) as string)
|
||||
on error
|
||||
set theFile to ""
|
||||
end try
|
||||
if theFile is not "" then
|
||||
write theFile & " line " & lineNumber of theInfo & gEol to inLogFileRef
|
||||
tell me to write theFile & " line " & lineNumber of theInfo & gEol to inLogFileRef
|
||||
end if
|
||||
write gEol to inLogFileRef
|
||||
tell me to write gEol to inLogFileRef
|
||||
end tell
|
||||
|
||||
if MessageKindIsError(theKind) then
|
||||
@@ -224,4 +225,4 @@ on GetMonthIndex(inDate)
|
||||
return i
|
||||
end if
|
||||
end repeat
|
||||
end GetMonthIndex
|
||||
end GetMonthIndex
|
92
docs/mac/M5mcp2xml.applescript
Normal file
92
docs/mac/M5mcp2xml.applescript
Normal file
@@ -0,0 +1,92 @@
|
||||
-----------------------------------------------------------------------------
|
||||
-- Name: docs/mac/M5mcp2xml.applescript
|
||||
-- Purpose: Automatic export of CodeWarrior 5 projects to XML files
|
||||
-- Author: Gilles Depeyrot
|
||||
-- Modified by:
|
||||
-- Created: 28.11.2001
|
||||
-- RCS-ID: $Id$
|
||||
-- Copyright: (c) 2001 Gilles Depeyrot
|
||||
-- Licence: wxWindows licence
|
||||
-----------------------------------------------------------------------------
|
||||
--
|
||||
-- This AppleScript automatically recurses through the selected folder looking for
|
||||
-- and exporting CodeWarrior projects to xml files.
|
||||
-- To use this script, simply open it with the 'Script Editor' and run it.
|
||||
--
|
||||
|
||||
--
|
||||
-- Suffix used to recognize CodeWarrior project files
|
||||
--
|
||||
property gProjectSuffix : "M5.mcp"
|
||||
|
||||
--
|
||||
-- Project and build success count
|
||||
--
|
||||
set theProjectCount to 0
|
||||
set theProjectSuccessCount to 0
|
||||
|
||||
--
|
||||
-- Ask the user to select the wxWindows samples folder
|
||||
--
|
||||
set theFolder to choose folder with prompt "Select the wxWindows folder"
|
||||
|
||||
ExportProjects(theFolder)
|
||||
|
||||
tell me to display dialog "Exported " & theProjectSuccessCount & " projects out of " & theProjectCount
|
||||
|
||||
--
|
||||
-- ExportProjects
|
||||
--
|
||||
on ExportProjects(inFolder)
|
||||
global theProjectCount, theProjectSuccessCount
|
||||
|
||||
tell application "Finder" to update inFolder
|
||||
|
||||
try
|
||||
tell application "Finder" to set theProject to ((the first file of inFolder whose name ends with gProjectSuffix) as string)
|
||||
on error
|
||||
set theProject to ""
|
||||
end try
|
||||
|
||||
if theProject is not "" then
|
||||
set theProjectCount to theProjectCount + 1
|
||||
|
||||
-- save the current text delimiters
|
||||
set theDelimiters to my text item delimiters
|
||||
|
||||
-- replace the ".mcp" extension with ".xml"
|
||||
set my text item delimiters to "."
|
||||
set theList to (every text item of theProject)
|
||||
set theList to (items 1 thru -2 of theList)
|
||||
set theExport to (theList as string) & ".xml"
|
||||
|
||||
-- restore the text delimiters
|
||||
set my text item delimiters to theDelimiters
|
||||
|
||||
tell application "CodeWarrior IDE 4.0.4"
|
||||
--
|
||||
-- Open the project in CodeWarrior
|
||||
--
|
||||
open theProject
|
||||
--
|
||||
-- Export the selected project
|
||||
--
|
||||
try
|
||||
export project document 1 in theExport
|
||||
set theProjectSuccessCount to theProjectSuccessCount + 1
|
||||
on error number errnum
|
||||
tell me to display dialog "Error " & errnum & " exporting " & theExport
|
||||
end try
|
||||
--
|
||||
-- Close the project
|
||||
--
|
||||
Close Project
|
||||
end tell
|
||||
end if
|
||||
|
||||
tell application "Finder" to set theSubFolders to every folder of inFolder whose name does not end with " Data"
|
||||
repeat with theFolder in theSubFolders
|
||||
ExportProjects(theFolder)
|
||||
end repeat
|
||||
|
||||
end ExportProjects
|
88
docs/mac/M5xml2mcp.applescript
Normal file
88
docs/mac/M5xml2mcp.applescript
Normal file
@@ -0,0 +1,88 @@
|
||||
-----------------------------------------------------------------------------
|
||||
-- Name: docs/mac/M5xml2mcp.applescript
|
||||
-- Purpose: Automatic import of CodeWarrior 5 xml files to projects
|
||||
-- Author: Gilles Depeyrot
|
||||
-- Modified by:
|
||||
-- Created: 30.11.2001
|
||||
-- RCS-ID: $Id$
|
||||
-- Copyright: (c) 2001 Gilles Depeyrot
|
||||
-- Licence: wxWindows licence
|
||||
-----------------------------------------------------------------------------
|
||||
--
|
||||
-- This AppleScript automatically recurses through the selected folder looking for
|
||||
-- and importing CodeWarrior xml files to projects
|
||||
-- To use this script, simply open it with the 'Script Editor' and run it.
|
||||
--
|
||||
|
||||
--
|
||||
-- Suffix used to recognize CodeWarrior xml files
|
||||
--
|
||||
property gXmlSuffix : "M5.xml"
|
||||
|
||||
--
|
||||
-- Project and build success count
|
||||
--
|
||||
set theXmlCount to 0
|
||||
set theXmlSuccessCount to 0
|
||||
|
||||
--
|
||||
-- Ask the user to select the wxWindows samples folder
|
||||
--
|
||||
set theFolder to choose folder with prompt "Select the wxWindows folder"
|
||||
|
||||
ImportProjects(theFolder)
|
||||
|
||||
tell me to display dialog "Imported " & theXmlSuccessCount & " xml files out of " & theXmlCount buttons {"OK"}
|
||||
|
||||
--
|
||||
-- ImportProjects
|
||||
--
|
||||
on ImportProjects(inFolder)
|
||||
global theXmlCount, theXmlSuccessCount
|
||||
|
||||
tell application "Finder" to update inFolder
|
||||
|
||||
try
|
||||
tell application "Finder" to set theXml to ((the first file of inFolder whose name ends with gXmlSuffix) as string)
|
||||
on error
|
||||
set theXml to ""
|
||||
end try
|
||||
|
||||
if theXml is not "" then
|
||||
set theXmlCount to theXmlCount + 1
|
||||
|
||||
-- save the current text delimiters
|
||||
set theDelimiters to my text item delimiters
|
||||
|
||||
-- replace the ".xml" extension with ".mcp"
|
||||
set my text item delimiters to "."
|
||||
set theList to (every text item of theXml)
|
||||
set theList to (items 1 thru -2 of theList)
|
||||
set theImport to (theList as string) & ".mcp"
|
||||
|
||||
-- restore the text delimiters
|
||||
set my text item delimiters to theDelimiters
|
||||
|
||||
tell application "CodeWarrior IDE 4.0.4"
|
||||
--
|
||||
-- Import the selected xml file
|
||||
--
|
||||
try
|
||||
make new project document as theImport with data theXml
|
||||
set theXmlSuccessCount to theXmlSuccessCount + 1
|
||||
--
|
||||
-- Close the project
|
||||
--
|
||||
Close Project
|
||||
on error number errnum
|
||||
tell me to display dialog "Error " & errnum & " importing " & theXml & " to " & theImport
|
||||
end try
|
||||
end tell
|
||||
end if
|
||||
|
||||
tell application "Finder" to set theSubFolders to every folder of inFolder whose name does not end with " Data"
|
||||
repeat with theFolder in theSubFolders
|
||||
ImportProjects(theFolder)
|
||||
end repeat
|
||||
|
||||
end ImportProjects
|
@@ -1 +1,4 @@
|
||||
These are the changes for wxMac 2.3.2
|
||||
|
||||
- support for configuration and build under Mac OS X using the Apple Developer
|
||||
Tools
|
||||
|
@@ -3,8 +3,9 @@ Installing latest headers (and Carbon Support)
|
||||
|
||||
NOTE : these steps are not necessary for Pro 6, only for Pro 5.3
|
||||
|
||||
the latest build for carbon support lead to a few changes you will have to follow, in order
|
||||
to successfully compile the code (also necessary if you don't want to build the carbon targets)
|
||||
the latest build for carbon support lead to a few changes you will have to
|
||||
follow, in order to successfully compile the code (also necessary if you don't
|
||||
want to build the carbon targets)
|
||||
|
||||
1. you need CodeWarrior Pro 5.3 , i.e. 5.0 with all the upgrades
|
||||
2. you have to download the 3.3.2 universal interfaces from
|
||||
@@ -17,8 +18,9 @@ to successfully compile the code (also necessary if you don't want to build the
|
||||
#include <Controls.h>
|
||||
6. rebuild all MacHeaders from the MacHeaders.mcp project in the same folder
|
||||
|
||||
if you want to build the carbon targets, you will also need the latest carbonized version of
|
||||
MSL from Metrowerks, at the time of writing, this meant applying the changes from the folders
|
||||
if you want to build the carbon targets, you will also need the latest
|
||||
carbonized version of MSL from Metrowerks, at the time of writing, this meant
|
||||
applying the changes from the folders
|
||||
CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbonized MSL and
|
||||
CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbonized Runtimes
|
||||
(consult the file CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbon & MacOSX README)
|
||||
@@ -26,44 +28,58 @@ CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbonized Runtimes
|
||||
setup.h
|
||||
-------
|
||||
|
||||
in order to build wxMac with CodeWarrior, you must copy or alias the file include/wx/mac/setup0.h
|
||||
to include/wx/setup.h.
|
||||
in order to build wxMac with CodeWarrior, you must copy or alias the file
|
||||
include/wx/mac/setup0.h to include/wx/setup.h.
|
||||
|
||||
this step is not needed when using the Apple Developer Tools under Mac OS X since the setup.h
|
||||
file is automatically generated during the configuration of wxMac.
|
||||
this step is not needed when using the Apple Developer Tools under Mac OS X
|
||||
since the setup.h file is automatically generated during the configuration.
|
||||
|
||||
OpenGL
|
||||
------
|
||||
|
||||
In order to build opengl support with CodeWarrior, you must install the opengl libraries and headers
|
||||
from http://developer.apple.com/opengl/index.html
|
||||
In order to build opengl support with CodeWarrior, you must install the opengl
|
||||
libraries and headers from http://developer.apple.com/opengl/index.html
|
||||
|
||||
If you want OpenGL support with CodeWarrior, set wxUSE_OPENGL in include/wx/setup.h to 1
|
||||
If you want OpenGL support with CodeWarrior, set wxUSE_OPENGL to 1 in
|
||||
include/wx/setup.h
|
||||
|
||||
If you don't want OpenGl support, remove the file "glcanvas.cpp" from the project before
|
||||
compilation and leave the setting at 0
|
||||
If you don't want OpenGl support, remove the file "glcanvas.cpp" from the
|
||||
project before compilation and leave the setting at 0
|
||||
|
||||
If you want OpenGL support with the Apple Developer Tools under Mac OS X, add --with-opengl to the
|
||||
arguments of configure when configuring wxMac.
|
||||
If you want OpenGL support with the Apple Developer Tools under Mac OS X, add
|
||||
--with-opengl to the arguments of configure when configuring wxMac.
|
||||
|
||||
Project Files
|
||||
-------------
|
||||
|
||||
There are always the makemac.mcp or *M5.mcp files for Pro 5.3 and the makemac6.mcp files for Pro 6
|
||||
The project files are stored as xml text files and converted to binary
|
||||
CodeWarrior projects in the distribution (see AppleScript Files below):
|
||||
- *M5.xml -> *M5.mcp for CodeWarrior 5.3
|
||||
- *M6.xml -> *M6.mcp for CodeWarrior 6
|
||||
- *M7.xml -> *M7.mcp for CodeWarrior 7
|
||||
|
||||
In order to build the library (and then the samples) you need to make the
|
||||
following projects (for 5.3)
|
||||
:src:wxWindowsM5.mcp
|
||||
:src:png:makemac.mcp
|
||||
:src:tif:makemac.mcp
|
||||
:src:jpeg:makemac.mcp
|
||||
:src:zlib:makemac.mcp
|
||||
:src:wxxindowsM5.mcp
|
||||
:src:png:pngM5.mcp
|
||||
:src:tiff:tiffM5.mcp
|
||||
:src:jpeg:jpegM5.mcp
|
||||
:src:zlib:zlibM5.mcp
|
||||
|
||||
AppleScript Files
|
||||
-----------------
|
||||
|
||||
Several AppleScript files are provided in the docs:mac directory (currently
|
||||
only for CodeWarrior 5.3 related projects):
|
||||
- M5xml2mcp.applescript to convert xml files to CodeWarrior projects
|
||||
- M5mcp2xml.applescript to convert CodeWarrior projects to xml files
|
||||
- M5build.applescript to automatically build all samples/demos projects
|
||||
|
||||
Apple Developers Tools
|
||||
----------------------
|
||||
|
||||
As in all Unix projects, you need to do something like this
|
||||
under MacOS 10.1 with the Apple Developers Tools installed.
|
||||
As in all Unix projects, you need to do something like this under MacOS 10.1
|
||||
with the Apple Developers Tools installed:
|
||||
|
||||
1) cd into the source dir
|
||||
2) mkdir build
|
||||
@@ -71,23 +87,23 @@ under MacOS 10.1 with the Apple Developers Tools installed.
|
||||
4) ../configure
|
||||
5) make
|
||||
|
||||
If you want to install the library, you need to be able
|
||||
to log in as "root". For this, "root" has to be activated
|
||||
in the NetInfo utility - there you will also have to
|
||||
choose a password for the "root" user. Then
|
||||
If you want to install the library, you need to be able to log in as "root".
|
||||
For this, "root" has to be activated in the NetInfo utility - there you will
|
||||
also have to choose a password for the "root" user. Then
|
||||
|
||||
6) su
|
||||
7) type <PASSWORD>
|
||||
8) make install
|
||||
9) exit
|
||||
|
||||
Note: There are currently link problems (in some rare cases)
|
||||
with wxMAC and Apple's tools when compiling the library as
|
||||
a shared library (the default). You might want to type
|
||||
Note:
|
||||
You might want to configure a static library instead:
|
||||
|
||||
4) ../configure --disable-shared
|
||||
|
||||
to build a static library instead.
|
||||
or activate OpenGL:
|
||||
|
||||
4) ../configure --with-opengl
|
||||
|
||||
|
||||
Problems with .xpm files
|
||||
@@ -98,11 +114,12 @@ if you have downloaded all the files and get errors like :
|
||||
Error : the file 'wx/generic/tip.xpm' cannot be opened
|
||||
tipdlg.cpp line 201 #include "wx/generic/tip.xpm"
|
||||
|
||||
then your cvs has changed the type of the .xpm files to something other than text, in order to fix this
|
||||
either change the type by using a resource editor or drag the files from /include/wx/generic/..xpm on
|
||||
the SetTypeFromExtension application that is included in this folder. This small applet itself queries
|
||||
the Internet Config, so you will have to associate the "xpm" extension with CodeWarrior before making
|
||||
use of this applet.
|
||||
then your cvs has changed the type of the .xpm files to something other than
|
||||
text, in order to fix this either change the type by using a resource editor
|
||||
or drag the files from /include/wx/generic/..xpm on the SetTypeFromExtension
|
||||
application that is included in this folder. This small applet itself queries
|
||||
the Internet Config, so you will have to associate the "xpm" extension with
|
||||
CodeWarrior before making use of this applet.
|
||||
|
||||
Missing PLStringFuncsLib
|
||||
------------------------
|
||||
|
@@ -1,12 +1,8 @@
|
||||
Welcome to wxWindows/Mac 2
|
||||
|
||||
More Information is available from our own page at
|
||||
More Information is available from the wxWindows project home page at
|
||||
|
||||
http://www.advanced.ch/wxwin (mac port)
|
||||
|
||||
or on the wxWindows project in general
|
||||
|
||||
from http://www.wxwindows.org
|
||||
http://www.wxwindows.org
|
||||
|
||||
For more information, please see changes.txt, todo.txt, and the
|
||||
manuals.
|
||||
|
@@ -1,6 +1,10 @@
|
||||
Bugs/Defects (GD)
|
||||
-----------------
|
||||
* Implement toggle buttons missing under Mac OS & Mac OS X
|
||||
* Implement toggle buttons
|
||||
|
||||
* Implement popup windows
|
||||
|
||||
* Implement joystick support
|
||||
|
||||
* Implement drag and drop
|
||||
|
||||
* Correct smart processing errors that provoke the following error:
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
wxMicroWindows port
|
||||
===================
|
||||
|
||||
Julian Smart 2001-07-02
|
||||
Julian Smart 2001-12-08
|
||||
|
||||
This is a port of wxWindows to MicroWindows, under Linux.
|
||||
Widgets are supplied by the wxUniversal project, while the
|
||||
@@ -26,7 +26,7 @@ Installation
|
||||
|
||||
MicroWindows:
|
||||
|
||||
- unarchive MicroWindows 0.89pre7
|
||||
- unarchive MicroWindows 0.89pre8
|
||||
|
||||
- change 'config' to use X11 and any other options you feel fit.
|
||||
Suggestions for changes to the defaults:
|
||||
@@ -39,13 +39,14 @@ MicroWindows:
|
||||
|
||||
- apply microwindows.patches (from wxWindows:
|
||||
docs/microwin/microwindows.patches) to fix PeekMessage
|
||||
and other issues
|
||||
and other issues. If the patch doesn't apply automatically,
|
||||
you may need to apply it by hand
|
||||
|
||||
- compile by typing 'make' from within the MicroWindows src directory
|
||||
|
||||
wxMicroWindows:
|
||||
|
||||
- Download wxMSW 2.3.3 or greater, or get it from CVS
|
||||
- Download wxMSW 2.3.2 or greater, or get it from CVS
|
||||
|
||||
- Copy include/wx/msw/setup_microwin.h to include/wx/setup.h if
|
||||
include/wx/setup.h doesn't exist
|
||||
@@ -53,11 +54,11 @@ wxMicroWindows:
|
||||
- change the TOP variable at the top of src/msw/makefile.mic
|
||||
to reflect where MicroWindows is installed
|
||||
|
||||
- type 'make all' from src/msw. To clean, use cleanwx and NOT clean
|
||||
since that will clean MicroWindows itself
|
||||
- type 'make -f makefile.mic all' from src/msw. To clean, use
|
||||
cleanwx and NOT clean since that will clean MicroWindows itself
|
||||
|
||||
- to make the sample, cd into samples/minimal, edit the TOP variable,
|
||||
and type 'make all'
|
||||
and type 'make -f makefile.mic all'
|
||||
|
||||
Running 'minimal' runs the virtual MicroWindows desktop
|
||||
and the minimal sample, since in a MicroWindows WIN32 application
|
||||
|
@@ -2,8 +2,13 @@
|
||||
Installing wxWindows 2.3
|
||||
------------------------
|
||||
|
||||
This is wxWindows 2.3 for Microsoft Windows 3.1, 95, 98 and
|
||||
Windows NT/Windows 2000. This is an unstable development release.
|
||||
This is wxWindows 2.3 for Microsoft Windows 9x/ME, Windows NT,
|
||||
Windows 2000 and Windows XP. This is an unstable development release.
|
||||
|
||||
Please note that the library naming conventions for VC++
|
||||
compilation have changed between 2.3.1 and 2.3.2. This means that
|
||||
you will need to change your application project files. See the
|
||||
relevant section below for details.
|
||||
|
||||
IMPORTANT NOTE: If you experience problems installing, please
|
||||
re-read this instructions and other related files (changes.txt,
|
||||
@@ -53,8 +58,8 @@ For Cygwin or Mingw32 compilation, make sure WXWIN contains only
|
||||
forward slashes.
|
||||
|
||||
If installing from the CVS server, copy include/wx/msw/setup0.h to
|
||||
include/wx/msw/setup.h and edit the resulting file to choose the featrues you
|
||||
would like to compile wxWindows with[out].
|
||||
include/wx/msw/setup.h and edit the resulting file to choose
|
||||
the features you would like to compile wxWindows with[out].
|
||||
|
||||
Compilation
|
||||
-----------
|
||||
@@ -62,27 +67,35 @@ Compilation
|
||||
The following sections explain how to compile wxWindows with each supported
|
||||
compiler.
|
||||
|
||||
Visual C++ 4.0/5.0/6.0 compilation
|
||||
----------------------------------
|
||||
Visual C++ 6.0 compilation
|
||||
---------------------------
|
||||
|
||||
Using project files (VC++ 5 and 6 only):
|
||||
Using project files (VC++ 6 only):
|
||||
|
||||
1. Unarchive wxWindows-x.y.z-vc.zip, the VC++ 5/6 project
|
||||
1. Unarchive wxWindows-x.y.z-vc.zip, the VC++ 6 project
|
||||
makefiles (already included in wxMSW-x.y.z.zip and the setup version).
|
||||
2. Open src/wxvc.dsp, set Debug or Release configuration for
|
||||
the wxvc project, and compile. Alternatively, use Batch Build
|
||||
to build both Debug and Release configurations.
|
||||
This will produce lib/wx.lib (release) and lib/wxd.lib (debug),
|
||||
plus various subordinate libraries. It assumes you have
|
||||
the TIFF and JPEG source, which is already in the setup
|
||||
version of the distribution.
|
||||
The project file src/wxvc_dll.dsp will make a DLL version of wxWindow,
|
||||
which will go in lib/wxdll.[lib,dll] and lib/wxdlld.[lib,dll].
|
||||
2. Open src/wxWindows.dsp, which has configurations for static
|
||||
compilation or DLL compilation, and each of these available in
|
||||
Unicode/ANSI and Debug/Release variations. Normally you'll use
|
||||
a static linking ANSI configuration. Choose the Win32 Debug or
|
||||
Win32 Release configuration for the wxWindows project, and compile.
|
||||
Alternatively, use Batch Build to build more than one
|
||||
configuration.
|
||||
The following libraries will be produced depending on chosen
|
||||
configuration:
|
||||
|
||||
wxmsw.lib wxmswd.lib ; ANSI Release/Debug
|
||||
wxmswu.lib wxmswud.lib ; UNICODE Release/Debug
|
||||
wxmsw23x.lib wxmsw23xd.lib ; ANSI DLL Release/Debug
|
||||
wxmsw23xu.lib wxmsw23xud.lib ; UNICODE DLL Release/Debug
|
||||
|
||||
It will also produce similar variations on jpeg.lib, png.lib,
|
||||
tiff.lib, zlib.lib, and regex.lib.
|
||||
3. Open a sample project file, choose a configuration such as
|
||||
Debug using Build | Set Active Configuration..., and compile.
|
||||
Win32 Debug using Build | Set Active Configuration..., and compile.
|
||||
The project files don't use precompiled headers, to save disk
|
||||
space, but you can switch PCH compiling on for greater speed.
|
||||
NOTE: you may also use samples/SamplesVC.dsw to access all
|
||||
NOTE: you may also use samples/samples.dsw to access all
|
||||
sample projects without opening each workspace individually.
|
||||
You can use the Batch Build facility to make several samples
|
||||
at a time.
|
||||
@@ -104,8 +117,7 @@ Using makefiles:
|
||||
'nmake -f makefile.vc cleanall FINAL=1'
|
||||
'nmake -f makefile.vc FINAL=1'
|
||||
|
||||
to make the wxWindows core library without debug information
|
||||
(wx\lib\wx.lib).
|
||||
to make the wxWindows core library without debug information.
|
||||
4. Change directory to wx\samples and type 'nmake -f makefile.vc'
|
||||
to make all the samples. You can also make them individually.
|
||||
|
||||
@@ -133,11 +145,7 @@ To build the DLL version using makefiles:
|
||||
1. Change directory to wx\src\msw. Type 'nmake -f makefile.vc dll pch'
|
||||
to make both a suitable DLL and import library, and to build a
|
||||
suitable precompiled header file for compiling applications.
|
||||
The resulting libraries are called:
|
||||
|
||||
wx\lib\wx[version].lib(dll) (debug version)
|
||||
wx\lib\wx[version].lib(dll) (release version, using FINAL=1)
|
||||
|
||||
See the previous section for library names.
|
||||
2. Invoke a sample makefile with 'nmake -f makefile.vc WXUSINGDLL=1'
|
||||
(or edit src\makeprog.vc to set WXUSINGDLL to 1 for all
|
||||
applications).
|
||||
@@ -165,18 +173,6 @@ optimized. For example, in wxWindows project, set to 'Minimum
|
||||
Size'. In Dialog Editor project, set to 'Customize: Favor Small
|
||||
Code' (and no others). This will then work.
|
||||
|
||||
Similarly, in VC++ 4, optimization can cause internal compiler
|
||||
errors, so edit src\makevc.env and change /O1 to /Od before
|
||||
trying build a release version of the library. Or, type:
|
||||
|
||||
nmake -f makefile.vc noopt FINAL=1
|
||||
|
||||
and then resume compilation in the normal way. This will build
|
||||
troublesome files with no optimization. However, there now seems to be
|
||||
an internal linker error using VC++ 4, in addition to internal
|
||||
compiler errors for most of the samples, so this version of the compiler
|
||||
cannot be recommended!
|
||||
|
||||
Note (4): some crash problems can be due to inconsistent compiler
|
||||
options. If strange/weird/impossible things start to happen please
|
||||
check (dumping IDE project file as makefile and doing text comparison
|
||||
@@ -184,12 +180,7 @@ if necessary) that the project settings, especially the list of defined
|
||||
symbols, struct packing, etc. are exactly the same for all items in
|
||||
the project. After this, delete everything (including PCH) and recompile.
|
||||
|
||||
Note (5): for some further notes about upgrading your project
|
||||
files to be compatible with wxWindows 2.1.14, please see
|
||||
"Highlights of wxWindows" from the Download page of the
|
||||
web site or CD-ROM.
|
||||
|
||||
Note (6): to create your own IDE files, see the technical note on the
|
||||
Note (5): to create your own IDE files, see the technical note on the
|
||||
wxWindows web site or CD-ROM, entitled "Compiling wxWindows
|
||||
applications in the VC++ IDE" (technical note docs/tech/tn0010.htm in the
|
||||
wxWindows distribution). You can also copy .dsp and .dsw
|
||||
@@ -198,6 +189,9 @@ files from an existing wxWindows sample and adapt them.
|
||||
Visual C++ 1.5 compilation (16-bit)
|
||||
-----------------------------------
|
||||
|
||||
NOTE: this has not been tested recently and probably doesn't
|
||||
work.
|
||||
|
||||
1. Make sure your WXWIN variable is set, and uses the FAT (short
|
||||
name) form.
|
||||
2. Change directory to wx\src\msw. Type 'nmake -f makefile.dos' to
|
||||
@@ -216,6 +210,8 @@ Borland C++ 4.5/5.0 compilation
|
||||
|
||||
Compiling using the makefiles:
|
||||
|
||||
0. If downloading from CVS, copy include\wx\msw\setup0.h to
|
||||
include\wx\setup.h.
|
||||
1. Make sure your WXWIN variable is set, and uses the FAT (short
|
||||
name) form if doing a 16-bit compile.
|
||||
2. Change directory to wx\src\msw. Type 'make -f makefile.b32' to
|
||||
@@ -398,9 +394,9 @@ Watcom C++ 10.6/11 compilation
|
||||
|
||||
1. Make sure your WXWIN variable is set, and uses the DOS short
|
||||
name form.
|
||||
2. Change directory to wx\src\msw. Type 'wmake -f makefile.wat' to
|
||||
2. Change directory to wx\src\msw. Type 'wmake -f makefile.wat all' to
|
||||
make the wxWindows core library.
|
||||
3. Change directory to wx\samples\minimal and type 'wmake -f makefile.wat'
|
||||
3. Change directory to wx\samples\minimal and type 'wmake -f makefile.wat all'
|
||||
to make this sample. Repeat for other samples of interest.
|
||||
|
||||
Note (1): makewat.env uses the odbc32.lib supplied in wxWindows' lib\watcom
|
||||
|
62
docs/msw/winxp.txt
Normal file
62
docs/msw/winxp.txt
Normal file
@@ -0,0 +1,62 @@
|
||||
Microsoft Windows XP Support in wxWindows 2.3.2
|
||||
-----------------------------------------------
|
||||
|
||||
Windows XP introduces the themes (called "visual styles" in the Microsoft
|
||||
documentation) in Windows world. As wxWindows uses the standard Windows
|
||||
controls for most of its classes, it can take advantage of it without
|
||||
(almost) any effort from your part. The only thing you need to do if you
|
||||
want your program to honour the visual style setting of Windows XP is to
|
||||
add the manifest file to your program (this is not at all specific to
|
||||
wxWindows programs but is required for all Windows applications).
|
||||
|
||||
|
||||
For your convinience, below is an example manifest. It should be put in a
|
||||
file called "yourapp.exe.manifest" and put in the same directory where
|
||||
"yourapp.exe" resides. Alternatively, you can include the manifest in your
|
||||
applications resource section. Please see the MSDN documentation at
|
||||
|
||||
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/xptheming.asp
|
||||
|
||||
for more details.
|
||||
|
||||
|
||||
Here is the example manifest which you can put into controls.exe.manifest
|
||||
file to test theme support using the controls sample:
|
||||
|
||||
--- cut here ---
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity
|
||||
version="0.64.1.0"
|
||||
processorArchitecture="x86"
|
||||
name="Controls"
|
||||
type="win32"
|
||||
/>
|
||||
<description>Controls: wxWindows sample application</description>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="X86"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
</assembly>
|
||||
--- cut here ---
|
||||
|
||||
|
||||
There are a few minor problems with theme support in wxWindows currently
|
||||
which will be fixed in the next releases:
|
||||
|
||||
- the buttons with non-default colours are owner-drawn and thus don't
|
||||
follow the visual style look but always have the default 3D look of
|
||||
the previous Windows versions - don't change the buttons colours if
|
||||
you want them to look nicely under Windows XP
|
||||
|
||||
- wxCheckListBox control doesn't have the same appearance as the native
|
||||
checkboxes in Windows XP
|
||||
|
@@ -17,7 +17,7 @@ TCP/IP applications, thread handling, and more. Where certain
|
||||
features are not available on a platform, such as MDI and tree
|
||||
controls on Unix, they are emulated.
|
||||
|
||||
A detailed 1400-page reference manual is supplied in HTML, PDF
|
||||
A detailed 1700-page reference manual is supplied in HTML, PDF
|
||||
and Windows Help form: see the docs hierarchy.
|
||||
|
||||
For a quick start, point your Web browser at docs/html/index.htm
|
||||
@@ -33,7 +33,7 @@ Platforms supported
|
||||
|
||||
wxWindows 2 currently supports the following platforms:
|
||||
|
||||
- Windows 3.1, Windows 95/98, Windows NT, Windows 2000
|
||||
- Windows 95/98/ME, Windows NT, Windows 2000, Windows XP (see msw/winxp.txt)
|
||||
- Most Unix variants with Motif/Lesstif
|
||||
- Most Unix variants with GTK+
|
||||
- MacOS
|
||||
|
98
docs/univ.txt
Normal file
98
docs/univ.txt
Normal file
@@ -0,0 +1,98 @@
|
||||
wxUniversal README
|
||||
==================
|
||||
|
||||
Welcome to wxUniversal!
|
||||
|
||||
Acknowledgements: wxUniversal wouldn't have been written without the
|
||||
generuous support of SciTech Software. Many thanks to Kendall Benett and
|
||||
Tom Ryan!
|
||||
|
||||
0. Introduction
|
||||
---------------
|
||||
|
||||
wxUniversal is a port of wxWindows which implements the various GUI controls
|
||||
by drawing them itself (using low level wxWindows classes). Please see
|
||||
|
||||
http://www.wxwindows.org/wxuniv.htm
|
||||
|
||||
for more details about it.
|
||||
|
||||
The advantage of wxUniversal is that you have precise control over the
|
||||
controls appearance (it is not always possible to change all aspects of the
|
||||
native controls) and the theme support: the same program may be changed to
|
||||
look completely differently without changing a single line of its code but
|
||||
just changing the theme.
|
||||
|
||||
Another advantage is that it makes writing ports of wxWindows for other
|
||||
platforms (such as OS/2, BeOS or QNX) much simpler, so it is of special
|
||||
interest to the people interested in porting wxWindows to another platform.
|
||||
|
||||
However, wxUniversal doesn't have the 100% native look and feel unlike the
|
||||
other wxWindows ports - this is the price to pay for the extra flexibility.
|
||||
|
||||
1. Requirments and supported platforms
|
||||
--------------------------------------
|
||||
|
||||
wxUniversal is used together with another wxWindows port which provides the
|
||||
"low level classes" mentioned above. Currently it can be built either with
|
||||
wxMSW or wxGTK. In any case, you should download the sources for the
|
||||
appropriate toolkit in addition to wxUniversal - in fact, you should download
|
||||
them first and then unpack wxUniversal in the same directory.
|
||||
|
||||
The requirments for wxUniversal are the same as for the underlying low level
|
||||
toolkit.
|
||||
|
||||
2. Installing under Win32
|
||||
-------------------------
|
||||
|
||||
a) Using Visual C++ 6.0
|
||||
|
||||
Simply open the src/wxUniv.dsw file in MSDEV and build it.
|
||||
|
||||
b) Cygwin
|
||||
|
||||
Please refer to the Unix section below
|
||||
|
||||
c) Other compilers
|
||||
|
||||
Unfortunately we don't have the makefiles for any other compilers yet.
|
||||
Please contact us if you would like to help us with creating one for the
|
||||
compiler you use.
|
||||
|
||||
3. Installing under Unix
|
||||
------------------------
|
||||
|
||||
Please refer to the installation instructions for wxGTK. The only change for
|
||||
wxUniversal is that you must add "--enable-univ" switch to the configure
|
||||
command line.
|
||||
|
||||
4. Documentation and support
|
||||
----------------------------
|
||||
|
||||
Please note that wxUniversal is not as mature as the other wxWindows ports
|
||||
and is currently officially in alpha stage. In particular, it is not really
|
||||
intended for the end users but rather for developers at the current stage and
|
||||
this is why we don't provide any binaries for it.
|
||||
|
||||
There is no separate documentation for wxUniversal, please refer to wxWindows
|
||||
documentation instead.
|
||||
|
||||
Support for wxUniversal is available from the same places as for wxWindows
|
||||
itself, namely:
|
||||
|
||||
* Usenet newsgroup comp.soft-sys.wxwindows
|
||||
|
||||
* Mailing lists: see http://lists.wxwindows.org/ for more information
|
||||
|
||||
* WWW page: http://www.wxwindows.org/
|
||||
|
||||
|
||||
Hope you will find wxUniversal useful!
|
||||
|
||||
Vadim Zeitlin
|
||||
|
||||
|
||||
This file is accurate for the version 2.3.2 of wxUniversal. It was last
|
||||
modified on Dec 11, 2001.
|
||||
|
||||
|
@@ -493,6 +493,14 @@
|
||||
# endif
|
||||
#endif /* !defined(wxUSE_TEXTFILE) */
|
||||
|
||||
#ifndef wxUSE_TIPWINDOW
|
||||
# ifdef wxABORT_ON_CONFIG_ERROR
|
||||
# error "wxUSE_TIPWINDOW must be defined."
|
||||
# else
|
||||
# define wxUSE_TIPWINDOW 0
|
||||
# endif
|
||||
#endif /* !defined(wxUSE_TIPWINDOW) */
|
||||
|
||||
#ifndef wxUSE_TOOLBAR
|
||||
# ifdef wxABORT_ON_CONFIG_ERROR
|
||||
# error "wxUSE_TOOLBAR must be defined."
|
||||
|
@@ -254,7 +254,7 @@ class WXDLLEXPORT wxDataObjectComposite : public wxDataObject
|
||||
{
|
||||
public:
|
||||
// ctor
|
||||
wxDataObjectComposite() { m_preferred = 0; }
|
||||
wxDataObjectComposite();
|
||||
|
||||
// add data object (it will be deleted by wxDataObjectComposite, hence it
|
||||
// must be allocated on the heap) whose format will become the preferred
|
||||
|
@@ -402,6 +402,7 @@ enum
|
||||
wxMGL_X, // MGL on X
|
||||
wxMGL_WIN32, // MGL on Win32
|
||||
wxMGL_OS2, // MGL on OS/2
|
||||
wxMGL_DOS, // MGL on MS-DOS
|
||||
wxWINDOWS_OS2, // Native OS/2 PM
|
||||
wxUNIX // wxBase under Unix
|
||||
};
|
||||
@@ -451,7 +452,7 @@ enum
|
||||
#define wxUint64 long long unsigned
|
||||
#else // FIXME: what else can we do here aside from implementing wxULongLong
|
||||
#define wxInt64 wxLongLong
|
||||
#define wxUint64 wxLongLong
|
||||
#define wxUint64 wxULongLong
|
||||
#endif
|
||||
|
||||
#define wxByte wxUint8
|
||||
@@ -550,16 +551,63 @@ typedef float wxFloat32 ;
|
||||
#endif
|
||||
// machine specific byte swapping
|
||||
|
||||
#if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8)
|
||||
#define wxUINT64_SWAP_ALWAYS(val) \
|
||||
((wxUint64) ( \
|
||||
((wxLongLong(val) & wxLongLong(0L, 0x000000ffU)) << 56) | \
|
||||
((wxLongLong(val) & wxLongLong(0L, 0x0000ff00U)) << 40) | \
|
||||
((wxLongLong(val) & wxLongLong(0L, 0x00ff0000U)) << 24) | \
|
||||
((wxLongLong(val) & wxLongLong(0L, 0xff000000U)) << 8) | \
|
||||
((wxLongLong(val) & wxLongLong(0x000000ffL, 0U)) >> 8) | \
|
||||
((wxLongLong(val) & wxLongLong(0x0000ff00L, 0U)) >> 24) | \
|
||||
((wxLongLong(val) & wxLongLong(0x00ff0000L, 0U)) >> 40) | \
|
||||
((wxLongLong(val) & wxLongLong(0xff000000L, 0U)) >> 56)).GetValue())
|
||||
(((wxUint64) (val) & (wxUint64) 0x00000000000000ffUL) << 56) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x000000000000ff00UL) << 40) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x0000000000ff0000UL) << 24) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x00000000ff000000UL) << 8) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x000000ff00000000UL) >> 8) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x0000ff0000000000UL) >> 24) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x00ff000000000000UL) >> 40) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0xff00000000000000UL) >> 56)))
|
||||
|
||||
#define wxINT64_SWAP_ALWAYS(val) \
|
||||
((wxInt64) ( \
|
||||
(((wxUint64) (val) & (wxUint64) 0x00000000000000ffUL) << 56) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x000000000000ff00UL) << 40) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x0000000000ff0000UL) << 24) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x00000000ff000000UL) << 8) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x000000ff00000000UL) >> 8) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x0000ff0000000000UL) >> 24) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x00ff000000000000UL) >> 40) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0xff00000000000000UL) >> 56)))
|
||||
|
||||
#elif defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8)
|
||||
#define wxUINT64_SWAP_ALWAYS(val) \
|
||||
((wxUint64) ( \
|
||||
(((wxUint64) (val) & (wxUint64) 0x00000000000000ffULL) << 56) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x000000000000ff00ULL) << 40) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x0000000000ff0000ULL) << 24) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x00000000ff000000ULL) << 8) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x000000ff00000000ULL) >> 8) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x0000ff0000000000ULL) >> 24) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x00ff000000000000ULL) >> 40) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0xff00000000000000ULL) >> 56)))
|
||||
|
||||
#define wxINT64_SWAP_ALWAYS(val) \
|
||||
((wxInt64) ( \
|
||||
(((wxUint64) (val) & (wxUint64) 0x00000000000000ffULL) << 56) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x000000000000ff00ULL) << 40) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x0000000000ff0000ULL) << 24) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x00000000ff000000ULL) << 8) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x000000ff00000000ULL) >> 8) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x0000ff0000000000ULL) >> 24) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0x00ff000000000000ULL) >> 40) | \
|
||||
(((wxUint64) (val) & (wxUint64) 0xff00000000000000ULL) >> 56)))
|
||||
|
||||
#else
|
||||
#define wxUINT64_SWAP_ALWAYS(val) \
|
||||
((wxUint64) ( \
|
||||
((wxULongLong(val) & wxULongLong(0L, 0x000000ffU)) << 56) | \
|
||||
((wxULongLong(val) & wxULongLong(0L, 0x0000ff00U)) << 40) | \
|
||||
((wxULongLong(val) & wxULongLong(0L, 0x00ff0000U)) << 24) | \
|
||||
((wxULongLong(val) & wxULongLong(0L, 0xff000000U)) << 8) | \
|
||||
((wxULongLong(val) & wxULongLong(0x000000ffL, 0U)) >> 8) | \
|
||||
((wxULongLong(val) & wxULongLong(0x0000ff00L, 0U)) >> 24) | \
|
||||
((wxULongLong(val) & wxULongLong(0x00ff0000L, 0U)) >> 40) | \
|
||||
((wxULongLong(val) & wxULongLong(0xff000000L, 0U)) >> 56)))
|
||||
|
||||
#define wxINT64_SWAP_ALWAYS(val) \
|
||||
((wxInt64) ( \
|
||||
@@ -570,8 +618,8 @@ typedef float wxFloat32 ;
|
||||
((wxLongLong(val) & wxLongLong(0x000000ffL, 0U)) >> 8) | \
|
||||
((wxLongLong(val) & wxLongLong(0x0000ff00L, 0U)) >> 24) | \
|
||||
((wxLongLong(val) & wxLongLong(0x00ff0000L, 0U)) >> 40) | \
|
||||
((wxLongLong(val) & wxLongLong(0xff000000L, 0U)) >> 56)).GetValue())
|
||||
|
||||
((wxLongLong(val) & wxLongLong(0xff000000L, 0U)) >> 56)))
|
||||
#endif
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define wxUINT16_SWAP_ON_BE(val) wxUINT16_SWAP_ALWAYS(val)
|
||||
@@ -784,6 +832,12 @@ enum wxBorder
|
||||
// flag on by default.
|
||||
#define wxWS_EX_BLOCK_EVENTS 0x00000002
|
||||
|
||||
// don't use this window as an implicit parent for the other windows: this must
|
||||
// be used with transient windows as otherwise there is the risk of creating a
|
||||
// dialog/frame with this window as a parent which would lead to a crash if the
|
||||
// parent is destroyed before the child
|
||||
#define wxWS_EX_TRANSIENT 0x00000004
|
||||
|
||||
/*
|
||||
* wxFrame/wxDialog style flags
|
||||
*/
|
||||
@@ -987,6 +1041,7 @@ enum wxBorder
|
||||
#define wxSP_3DBORDER 0x0200
|
||||
#define wxSP_FULLSASH 0x0400
|
||||
#define wxSP_3D (wxSP_3DBORDER | wxSP_3DSASH)
|
||||
#define wxSP_SASH_AQUA 0x0800
|
||||
|
||||
/*
|
||||
* wxNotebook flags
|
||||
|
@@ -58,7 +58,7 @@ public:
|
||||
// more file constants
|
||||
// -------------------
|
||||
// opening mode
|
||||
enum OpenMode { read, write, read_write, write_append };
|
||||
enum OpenMode { read, write, read_write, write_append, write_excl };
|
||||
// standard values for file descriptor
|
||||
enum { fd_invalid = -1, fd_stdin, fd_stdout, fd_stderr };
|
||||
|
||||
|
@@ -185,7 +185,7 @@ WXDLLEXPORT wxString wxUnix2MacFilename( const char *s);
|
||||
WXDLLEXPORT void wxStripExtension(wxChar *buffer);
|
||||
WXDLLEXPORT void wxStripExtension(wxString& buffer);
|
||||
|
||||
// Get a temporary filename, opening and closing the file.
|
||||
// Get a temporary filename
|
||||
WXDLLEXPORT wxChar* wxGetTempFileName(const wxString& prefix, wxChar *buf = (wxChar *) NULL);
|
||||
WXDLLEXPORT bool wxGetTempFileName(const wxString& prefix, wxString& buf);
|
||||
|
||||
@@ -197,8 +197,8 @@ WXDLLEXPORT bool wxExpandPath(wxString& dest, const wxChar *path);
|
||||
// and make (if under the home tree) relative to home
|
||||
// [caller must copy-- volatile]
|
||||
WXDLLEXPORT wxChar* wxContractPath(const wxString& filename,
|
||||
const wxString& envname = wxEmptyString,
|
||||
const wxString& user = wxEmptyString);
|
||||
const wxString& envname = wxEmptyString,
|
||||
const wxString& user = wxEmptyString);
|
||||
|
||||
// Destructive removal of /./ and /../ stuff
|
||||
WXDLLEXPORT wxChar* wxRealPath(wxChar *path);
|
||||
@@ -253,16 +253,21 @@ WXDLLEXPORT bool wxMkdir(const wxString& dir, int perm = 0777);
|
||||
// Remove directory. Flags reserved for future use.
|
||||
WXDLLEXPORT bool wxRmdir(const wxString& dir, int flags = 0);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// separators in file names
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// between file name and extension
|
||||
#define wxFILE_SEP_EXT wxT('.')
|
||||
|
||||
// between drive/volume name and the path
|
||||
#define wxFILE_SEP_DSK wxT(':')
|
||||
|
||||
// between the path components
|
||||
#define wxFILE_SEP_PATH_DOS wxT('\\')
|
||||
#define wxFILE_SEP_PATH_UNIX wxT('/')
|
||||
#define wxFILE_SEP_PATH_MAC wxT(':')
|
||||
#define wxFILE_SEP_PATH_VMS wxT('/') //This is the Unix way, but somtimes
|
||||
//users will give the VMS native paths
|
||||
//and than a ']' is needed.
|
||||
// Jouk
|
||||
#define wxFILE_SEP_PATH_VMS wxT('.') // VMS also uses '[' and ']'
|
||||
|
||||
// separator in the path list (as in PATH environment variable)
|
||||
// there is no PATH variable in Classic Mac OS so just use the
|
||||
|
@@ -96,6 +96,14 @@ public:
|
||||
wxPathFormat format = wxPATH_NATIVE)
|
||||
{ Assign(path, name, format); }
|
||||
|
||||
// from a volume, directory name, file base name and extension
|
||||
wxFileName(const wxString& volume,
|
||||
const wxString& path,
|
||||
const wxString& name,
|
||||
const wxString& ext,
|
||||
wxPathFormat format = wxPATH_NATIVE)
|
||||
{ Assign(volume, path, name, ext, format); }
|
||||
|
||||
// from a directory name, file base name and extension
|
||||
wxFileName(const wxString& path,
|
||||
const wxString& name,
|
||||
@@ -105,21 +113,31 @@ public:
|
||||
|
||||
// the same for delayed initialization
|
||||
|
||||
// VZ: wouldn't it be better to call this Create() for consistency with
|
||||
// all GUI classes? Personally, I like Set() more than Assign() too
|
||||
|
||||
void Assign(const wxFileName& filepath);
|
||||
|
||||
void Assign(const wxString& fullpath,
|
||||
wxPathFormat format = wxPATH_NATIVE);
|
||||
void Assign(const wxString& path,
|
||||
const wxString& name,
|
||||
wxPathFormat format = wxPATH_NATIVE);
|
||||
void Assign(const wxString& path,
|
||||
|
||||
void Assign(const wxString& volume,
|
||||
const wxString& path,
|
||||
const wxString& name,
|
||||
const wxString& ext,
|
||||
wxPathFormat format = wxPATH_NATIVE);
|
||||
void AssignDir(const wxString& dir, wxPathFormat format = wxPATH_NATIVE)
|
||||
{ Assign(dir, _T(""), format); }
|
||||
|
||||
void Assign(const wxString& path,
|
||||
const wxString& name,
|
||||
wxPathFormat format = wxPATH_NATIVE);
|
||||
|
||||
void Assign(const wxString& path,
|
||||
const wxString& name,
|
||||
const wxString& ext,
|
||||
wxPathFormat format = wxPATH_NATIVE)
|
||||
{
|
||||
// empty volume
|
||||
Assign(_T(""), path, name, ext, format);
|
||||
}
|
||||
|
||||
void AssignDir(const wxString& dir, wxPathFormat format = wxPATH_NATIVE);
|
||||
|
||||
// assorted assignment operators
|
||||
|
||||
@@ -179,8 +197,8 @@ public:
|
||||
// various file/dir operations
|
||||
|
||||
// retrieve the value of the current working directory
|
||||
void AssignCwd();
|
||||
static wxString GetCwd();
|
||||
void AssignCwd(const wxString& volume = wxEmptyString);
|
||||
static wxString GetCwd(const wxString& volume = wxEmptyString);
|
||||
|
||||
// change the current working directory
|
||||
bool SetCwd();
|
||||
@@ -190,8 +208,9 @@ public:
|
||||
void AssignHomeDir();
|
||||
static wxString GetHomeDir();
|
||||
|
||||
// get a temp file name starting with thespecified prefix
|
||||
void AssignTempFileName( const wxString &prefix );
|
||||
// get a temp file name starting with the specified prefix
|
||||
void AssignTempFileName(const wxString& prefix);
|
||||
static wxString CreateTempFileName(const wxString& prefix);
|
||||
|
||||
// directory creation and removal.
|
||||
// if full is TRUE, will try to make each directory in the path.
|
||||
@@ -212,6 +231,18 @@ public:
|
||||
const wxString& cwd = wxEmptyString,
|
||||
wxPathFormat format = wxPATH_NATIVE);
|
||||
|
||||
// get a path path relative to the given base directory, i.e. opposite
|
||||
// of Normalize
|
||||
//
|
||||
// pass an empty string to get a path relative to the working directory
|
||||
//
|
||||
// returns TRUE if the file name was modified, FALSE if we failed to do
|
||||
// anything with it (happens when the file is on a different volume,
|
||||
// for example)
|
||||
bool MakeRelativeTo(const wxString& pathBase = _T(""),
|
||||
wxPathFormat format = wxPATH_NATIVE);
|
||||
|
||||
|
||||
// Comparison
|
||||
|
||||
// compares with the rules of this platform
|
||||
@@ -224,10 +255,22 @@ public:
|
||||
{ return *this == wxFileName(filename); }
|
||||
|
||||
// Tests
|
||||
|
||||
// are the file names of this type cases sensitive?
|
||||
static bool IsCaseSensitive( wxPathFormat format = wxPATH_NATIVE );
|
||||
bool IsRelative( wxPathFormat format = wxPATH_NATIVE );
|
||||
|
||||
// is this filename absolute?
|
||||
bool IsAbsolute( wxPathFormat format = wxPATH_NATIVE );
|
||||
|
||||
// is this filename relative?
|
||||
bool IsRelative( wxPathFormat format = wxPATH_NATIVE )
|
||||
{ return !IsAbsolute(format); }
|
||||
|
||||
// Information about path format
|
||||
|
||||
// get the string separating the volume from the path for this format
|
||||
static wxString GetVolumeSeparator(wxPathFormat format = wxPATH_NATIVE);
|
||||
|
||||
// get the string of path separators for this format
|
||||
static wxString GetPathSeparators(wxPathFormat format = wxPATH_NATIVE);
|
||||
|
||||
@@ -247,17 +290,21 @@ public:
|
||||
// Other accessors
|
||||
void SetExt( const wxString &ext ) { m_ext = ext; }
|
||||
wxString GetExt() const { return m_ext; }
|
||||
bool HasExt() const { return !m_ext.IsEmpty(); }
|
||||
bool HasExt() const { return !m_ext.empty(); }
|
||||
|
||||
void SetName( const wxString &name ) { m_name = name; }
|
||||
wxString GetName() const { return m_name; }
|
||||
bool HasName() const { return !m_name.IsEmpty(); }
|
||||
bool HasName() const { return !m_name.empty(); }
|
||||
|
||||
void SetVolume( const wxString &volume ) { m_volume = volume; }
|
||||
wxString GetVolume() const { return m_volume; }
|
||||
bool HasVolume() const { return !m_volume.empty(); }
|
||||
|
||||
// full name is the file name + extension (but without the path)
|
||||
void SetFullName(const wxString& fullname);
|
||||
wxString GetFullName() const;
|
||||
|
||||
const wxArrayString &GetDirs() const { return m_dirs; }
|
||||
const wxArrayString& GetDirs() const { return m_dirs; }
|
||||
|
||||
// Construct path only - possibly with the trailing separator
|
||||
wxString GetPath( bool add_separator = FALSE,
|
||||
@@ -281,8 +328,16 @@ public:
|
||||
// get the canonical path format for this platform
|
||||
static wxPathFormat GetFormat( wxPathFormat format = wxPATH_NATIVE );
|
||||
|
||||
// split a fullpath into path, (base) name and ext (all of the pointers
|
||||
// can be NULL)
|
||||
// split a fullpath into the volume, path, (base) name and extension
|
||||
// (all of the pointers can be NULL)
|
||||
static void SplitPath(const wxString& fullpath,
|
||||
wxString *volume,
|
||||
wxString *path,
|
||||
wxString *name,
|
||||
wxString *ext,
|
||||
wxPathFormat format = wxPATH_NATIVE);
|
||||
|
||||
// compatibility version
|
||||
static void SplitPath(const wxString& fullpath,
|
||||
wxString *path,
|
||||
wxString *name,
|
||||
@@ -290,6 +345,9 @@ public:
|
||||
wxPathFormat format = wxPATH_NATIVE);
|
||||
|
||||
private:
|
||||
// the drive/volume/device specification (always empty for Unix)
|
||||
wxString m_volume;
|
||||
|
||||
// the path components of the file
|
||||
wxArrayString m_dirs;
|
||||
|
||||
|
@@ -62,7 +62,7 @@ public:
|
||||
// window (e.g. a child of it in order to scroll only a portion
|
||||
// the area between the scrollbars (spreadsheet: only cell area
|
||||
// will move).
|
||||
virtual void SetTargetWindow( wxWindow *target );
|
||||
virtual void SetTargetWindow( wxWindow *target, bool pushEventHandler = FALSE );
|
||||
virtual wxWindow *GetTargetWindow();
|
||||
|
||||
// Number of pixels per user unit (0 or -1 for no scrollbar)
|
||||
|
@@ -62,7 +62,7 @@ public:
|
||||
// window (e.g. a child of it in order to scroll only a portion
|
||||
// the area between the scrollbars (spreadsheet: only cell area
|
||||
// will move).
|
||||
virtual void SetTargetWindow( wxWindow *target );
|
||||
virtual void SetTargetWindow( wxWindow *target, bool pushEventHandler = FALSE );
|
||||
virtual wxWindow *GetTargetWindow();
|
||||
|
||||
// Number of pixels per user unit (0 or -1 for no scrollbar)
|
||||
|
@@ -94,10 +94,13 @@
|
||||
#endif
|
||||
|
||||
class WXDLLEXPORT wxLongLongWx;
|
||||
class WXDLLEXPORT wxULongLongWx;
|
||||
#if defined(__VISUALC__) && !defined(__WIN32__)
|
||||
#define wxLongLong wxLongLongWx
|
||||
#define wxULongLong wxULongLongWx
|
||||
#else
|
||||
typedef wxLongLongWx wxLongLong;
|
||||
typedef wxULongLongWx wxULongLong;
|
||||
#endif
|
||||
|
||||
#else
|
||||
@@ -110,7 +113,9 @@
|
||||
#ifndef wxUSE_LONGLONG_WX
|
||||
#define wxUSE_LONGLONG_WX 0
|
||||
class WXDLLEXPORT wxLongLongNative;
|
||||
class WXDLLEXPORT wxULongLongNative;
|
||||
typedef wxLongLongNative wxLongLong;
|
||||
typedef wxULongLongNative wxULongLong;
|
||||
#endif
|
||||
|
||||
// NB: if both wxUSE_LONGLONG_WX and NATIVE are defined, the user code should
|
||||
@@ -326,6 +331,189 @@ private:
|
||||
wxLongLong_t m_ll;
|
||||
};
|
||||
|
||||
|
||||
class WXDLLEXPORT wxULongLongNative
|
||||
{
|
||||
public:
|
||||
// ctors
|
||||
// default ctor initializes to 0
|
||||
wxULongLongNative() { m_ll = 0; }
|
||||
// from long long
|
||||
wxULongLongNative(unsigned wxLongLong_t ll) { m_ll = ll; }
|
||||
// from 2 longs
|
||||
wxULongLongNative(unsigned long hi, unsigned long lo)
|
||||
{
|
||||
// assign first to avoid precision loss!
|
||||
m_ll = ((unsigned wxLongLong_t) hi) << 32;
|
||||
m_ll |= (unsigned wxLongLong_t) lo;
|
||||
}
|
||||
|
||||
// default copy ctor is ok
|
||||
|
||||
// no dtor
|
||||
|
||||
// assignment operators
|
||||
// from native 64 bit integer
|
||||
wxULongLongNative& operator=(unsigned wxLongLong_t ll)
|
||||
{ m_ll = ll; return *this; }
|
||||
|
||||
// assignment operators from wxULongLongNative is ok
|
||||
|
||||
// accessors
|
||||
// get high part
|
||||
unsigned long GetHi() const
|
||||
{ return (unsigned long)(m_ll >> 32); }
|
||||
// get low part
|
||||
unsigned long GetLo() const
|
||||
{ return (unsigned long)m_ll; }
|
||||
|
||||
// convert to native ulong long
|
||||
unsigned wxLongLong_t GetValue() const { return m_ll; }
|
||||
|
||||
// convert to ulong with range checking in the debug mode (only!)
|
||||
unsigned long ToULong() const
|
||||
{
|
||||
wxASSERT_MSG( m_ll <= LONG_MAX,
|
||||
_T("wxULongLong to long conversion loss of precision") );
|
||||
|
||||
return (unsigned long)m_ll;
|
||||
}
|
||||
|
||||
// operations
|
||||
// addition
|
||||
wxULongLongNative operator+(const wxULongLongNative& ll) const
|
||||
{ return wxULongLongNative(m_ll + ll.m_ll); }
|
||||
wxULongLongNative& operator+=(const wxULongLongNative& ll)
|
||||
{ m_ll += ll.m_ll; return *this; }
|
||||
|
||||
wxULongLongNative operator+(const unsigned wxLongLong_t ll) const
|
||||
{ return wxULongLongNative(m_ll + ll); }
|
||||
wxULongLongNative& operator+=(const unsigned wxLongLong_t ll)
|
||||
{ m_ll += ll; return *this; }
|
||||
|
||||
// pre increment
|
||||
wxULongLongNative& operator++()
|
||||
{ m_ll++; return *this; }
|
||||
|
||||
// post increment
|
||||
wxULongLongNative& operator++(int)
|
||||
{ m_ll++; return *this; }
|
||||
|
||||
// subtraction
|
||||
wxULongLongNative operator-(const wxULongLongNative& ll) const
|
||||
{ return wxULongLongNative(m_ll - ll.m_ll); }
|
||||
wxULongLongNative& operator-=(const wxULongLongNative& ll)
|
||||
{ m_ll -= ll.m_ll; return *this; }
|
||||
|
||||
wxULongLongNative operator-(const unsigned wxLongLong_t ll) const
|
||||
{ return wxULongLongNative(m_ll - ll); }
|
||||
wxULongLongNative& operator-=(const unsigned wxLongLong_t ll)
|
||||
{ m_ll -= ll; return *this; }
|
||||
|
||||
// pre decrement
|
||||
wxULongLongNative& operator--()
|
||||
{ m_ll--; return *this; }
|
||||
|
||||
// post decrement
|
||||
wxULongLongNative& operator--(int)
|
||||
{ m_ll--; return *this; }
|
||||
|
||||
// shifts
|
||||
// left shift
|
||||
wxULongLongNative operator<<(int shift) const
|
||||
{ return wxULongLongNative(m_ll << shift);; }
|
||||
wxULongLongNative& operator<<=(int shift)
|
||||
{ m_ll <<= shift; return *this; }
|
||||
|
||||
// right shift
|
||||
wxULongLongNative operator>>(int shift) const
|
||||
{ return wxULongLongNative(m_ll >> shift);; }
|
||||
wxULongLongNative& operator>>=(int shift)
|
||||
{ m_ll >>= shift; return *this; }
|
||||
|
||||
// bitwise operators
|
||||
wxULongLongNative operator&(const wxULongLongNative& ll) const
|
||||
{ return wxULongLongNative(m_ll & ll.m_ll); }
|
||||
wxULongLongNative& operator&=(const wxULongLongNative& ll)
|
||||
{ m_ll &= ll.m_ll; return *this; }
|
||||
|
||||
wxULongLongNative operator|(const wxULongLongNative& ll) const
|
||||
{ return wxULongLongNative(m_ll | ll.m_ll); }
|
||||
wxULongLongNative& operator|=(const wxULongLongNative& ll)
|
||||
{ m_ll |= ll.m_ll; return *this; }
|
||||
|
||||
wxULongLongNative operator^(const wxULongLongNative& ll) const
|
||||
{ return wxULongLongNative(m_ll ^ ll.m_ll); }
|
||||
wxULongLongNative& operator^=(const wxULongLongNative& ll)
|
||||
{ m_ll ^= ll.m_ll; return *this; }
|
||||
|
||||
// multiplication/division
|
||||
wxULongLongNative operator*(const wxULongLongNative& ll) const
|
||||
{ return wxULongLongNative(m_ll * ll.m_ll); }
|
||||
wxULongLongNative operator*(unsigned long l) const
|
||||
{ return wxULongLongNative(m_ll * l); }
|
||||
wxULongLongNative& operator*=(const wxULongLongNative& ll)
|
||||
{ m_ll *= ll.m_ll; return *this; }
|
||||
wxULongLongNative& operator*=(unsigned long l)
|
||||
{ m_ll *= l; return *this; }
|
||||
|
||||
wxULongLongNative operator/(const wxULongLongNative& ll) const
|
||||
{ return wxULongLongNative(m_ll / ll.m_ll); }
|
||||
wxULongLongNative operator/(unsigned long l) const
|
||||
{ return wxULongLongNative(m_ll / l); }
|
||||
wxULongLongNative& operator/=(const wxULongLongNative& ll)
|
||||
{ m_ll /= ll.m_ll; return *this; }
|
||||
wxULongLongNative& operator/=(unsigned long l)
|
||||
{ m_ll /= l; return *this; }
|
||||
|
||||
wxULongLongNative operator%(const wxULongLongNative& ll) const
|
||||
{ return wxULongLongNative(m_ll % ll.m_ll); }
|
||||
wxULongLongNative operator%(unsigned long l) const
|
||||
{ return wxULongLongNative(m_ll % l); }
|
||||
|
||||
// comparison
|
||||
bool operator==(const wxULongLongNative& ll) const
|
||||
{ return m_ll == ll.m_ll; }
|
||||
bool operator==(unsigned long l) const
|
||||
{ return m_ll == l; }
|
||||
bool operator!=(const wxULongLongNative& ll) const
|
||||
{ return m_ll != ll.m_ll; }
|
||||
bool operator!=(unsigned long l) const
|
||||
{ return m_ll != l; }
|
||||
bool operator<(const wxULongLongNative& ll) const
|
||||
{ return m_ll < ll.m_ll; }
|
||||
bool operator<(unsigned long l) const
|
||||
{ return m_ll < l; }
|
||||
bool operator>(const wxULongLongNative& ll) const
|
||||
{ return m_ll > ll.m_ll; }
|
||||
bool operator>(unsigned long l) const
|
||||
{ return m_ll > l; }
|
||||
bool operator<=(const wxULongLongNative& ll) const
|
||||
{ return m_ll <= ll.m_ll; }
|
||||
bool operator<=(unsigned long l) const
|
||||
{ return m_ll <= l; }
|
||||
bool operator>=(const wxULongLongNative& ll) const
|
||||
{ return m_ll >= ll.m_ll; }
|
||||
bool operator>=(unsigned long l) const
|
||||
{ return m_ll >= l; }
|
||||
|
||||
// miscellaneous
|
||||
|
||||
// return the string representation of this number
|
||||
wxString ToString() const;
|
||||
|
||||
// conversion to byte array: returns a pointer to static buffer!
|
||||
void *asArray() const;
|
||||
|
||||
#if wxUSE_STD_IOSTREAM
|
||||
// input/output
|
||||
friend wxSTD ostream& operator<<(wxSTD ostream&, const wxULongLongNative&);
|
||||
#endif
|
||||
|
||||
private:
|
||||
unsigned wxLongLong_t m_ll;
|
||||
};
|
||||
|
||||
#endif // wxUSE_LONGLONG_NATIVE
|
||||
|
||||
#if wxUSE_LONGLONG_WX
|
||||
@@ -526,6 +714,180 @@ private:
|
||||
#endif // wxLONGLONG_TEST_MODE
|
||||
};
|
||||
|
||||
|
||||
class WXDLLEXPORT wxULongLongWx
|
||||
{
|
||||
public:
|
||||
// ctors
|
||||
// default ctor initializes to 0
|
||||
wxULongLongWx()
|
||||
{
|
||||
m_lo = m_hi = 0;
|
||||
|
||||
#ifdef wxLONGLONG_TEST_MODE
|
||||
m_ll = 0;
|
||||
|
||||
Check();
|
||||
#endif // wxLONGLONG_TEST_MODE
|
||||
}
|
||||
// from ulong
|
||||
wxULongLongWx(unsigned long l) { *this = l; }
|
||||
// from 2 ulongs
|
||||
wxULongLongWx(unsigned long hi, unsigned long lo)
|
||||
{
|
||||
m_hi = hi;
|
||||
m_lo = lo;
|
||||
|
||||
#ifdef wxLONGLONG_TEST_MODE
|
||||
m_ll = hi;
|
||||
m_ll <<= 32;
|
||||
m_ll |= lo;
|
||||
|
||||
Check();
|
||||
#endif // wxLONGLONG_TEST_MODE
|
||||
}
|
||||
|
||||
// default copy ctor is ok in both cases
|
||||
|
||||
// no dtor
|
||||
|
||||
// assignment operators
|
||||
// from long
|
||||
wxULongLongWx& operator=(unsigned long l)
|
||||
{
|
||||
m_lo = l;
|
||||
m_hi = 0;
|
||||
|
||||
#ifdef wxLONGLONG_TEST_MODE
|
||||
m_ll = l;
|
||||
|
||||
Check();
|
||||
#endif // wxLONGLONG_TEST_MODE
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
// can't have assignment operator from 2 longs
|
||||
|
||||
// accessors
|
||||
// get high part
|
||||
unsigned long GetHi() const { return m_hi; }
|
||||
// get low part
|
||||
unsigned long GetLo() const { return m_lo; }
|
||||
|
||||
// convert to long with range checking in the debug mode (only!)
|
||||
unsigned long ToULong() const
|
||||
{
|
||||
wxASSERT_MSG( m_hi == 0ul,
|
||||
_T("wxULongLong to long conversion loss of precision") );
|
||||
|
||||
return (unsigned long)m_lo;
|
||||
}
|
||||
|
||||
// operations
|
||||
// addition
|
||||
wxULongLongWx operator+(const wxULongLongWx& ll) const;
|
||||
wxULongLongWx& operator+=(const wxULongLongWx& ll);
|
||||
wxULongLongWx operator+(unsigned long l) const;
|
||||
wxULongLongWx& operator+=(unsigned long l);
|
||||
|
||||
// pre increment operator
|
||||
wxULongLongWx& operator++();
|
||||
|
||||
// post increment operator
|
||||
wxULongLongWx& operator++(int) { return ++(*this); }
|
||||
|
||||
// subraction (FIXME: should return wxLongLong)
|
||||
wxULongLongWx operator-(const wxULongLongWx& ll) const;
|
||||
wxULongLongWx& operator-=(const wxULongLongWx& ll);
|
||||
|
||||
// pre decrement operator
|
||||
wxULongLongWx& operator--();
|
||||
|
||||
// post decrement operator
|
||||
wxULongLongWx& operator--(int) { return --(*this); }
|
||||
|
||||
// shifts
|
||||
// left shift
|
||||
wxULongLongWx operator<<(int shift) const;
|
||||
wxULongLongWx& operator<<=(int shift);
|
||||
|
||||
// right shift
|
||||
wxULongLongWx operator>>(int shift) const;
|
||||
wxULongLongWx& operator>>=(int shift);
|
||||
|
||||
// bitwise operators
|
||||
wxULongLongWx operator&(const wxULongLongWx& ll) const;
|
||||
wxULongLongWx& operator&=(const wxULongLongWx& ll);
|
||||
wxULongLongWx operator|(const wxULongLongWx& ll) const;
|
||||
wxULongLongWx& operator|=(const wxULongLongWx& ll);
|
||||
wxULongLongWx operator^(const wxULongLongWx& ll) const;
|
||||
wxULongLongWx& operator^=(const wxULongLongWx& ll);
|
||||
wxULongLongWx operator~() const;
|
||||
|
||||
// comparison
|
||||
bool operator==(const wxULongLongWx& ll) const
|
||||
{ return m_lo == ll.m_lo && m_hi == ll.m_hi; }
|
||||
bool operator!=(const wxULongLongWx& ll) const
|
||||
{ return !(*this == ll); }
|
||||
bool operator<(const wxULongLongWx& ll) const;
|
||||
bool operator>(const wxULongLongWx& ll) const;
|
||||
bool operator<=(const wxULongLongWx& ll) const
|
||||
{ return *this < ll || *this == ll; }
|
||||
bool operator>=(const wxULongLongWx& ll) const
|
||||
{ return *this > ll || *this == ll; }
|
||||
|
||||
bool operator<(unsigned long l) const { return *this < wxULongLongWx(l); }
|
||||
bool operator>(unsigned long l) const { return *this > wxULongLongWx(l); }
|
||||
bool operator==(unsigned long l) const
|
||||
{
|
||||
return (m_hi == 0 && m_lo == (unsigned long)l);
|
||||
}
|
||||
|
||||
bool operator<=(unsigned long l) const { return *this < l || *this == l; }
|
||||
bool operator>=(unsigned long l) const { return *this > l || *this == l; }
|
||||
|
||||
// multiplication
|
||||
wxULongLongWx operator*(const wxULongLongWx& ll) const;
|
||||
wxULongLongWx& operator*=(const wxULongLongWx& ll);
|
||||
|
||||
// division
|
||||
wxULongLongWx operator/(const wxULongLongWx& ll) const;
|
||||
wxULongLongWx& operator/=(const wxULongLongWx& ll);
|
||||
|
||||
wxULongLongWx operator%(const wxULongLongWx& ll) const;
|
||||
|
||||
void Divide(const wxULongLongWx& divisor,
|
||||
wxULongLongWx& quotient,
|
||||
wxULongLongWx& remainder) const;
|
||||
|
||||
// input/output
|
||||
|
||||
// return the string representation of this number
|
||||
wxString ToString() const;
|
||||
|
||||
void *asArray() const;
|
||||
|
||||
#if wxUSE_STD_IOSTREAM
|
||||
friend wxSTD ostream& operator<<(wxSTD ostream&, const wxULongLongWx&);
|
||||
#endif // wxUSE_STD_IOSTREAM
|
||||
|
||||
private:
|
||||
// long is at least 32 bits, so represent our 64bit number as 2 longs
|
||||
|
||||
unsigned long m_hi;
|
||||
unsigned long m_lo;
|
||||
|
||||
#ifdef wxLONGLONG_TEST_MODE
|
||||
void Check()
|
||||
{
|
||||
wxASSERT( (m_ll >> 32) == m_hi && (unsigned long)m_ll == m_lo );
|
||||
}
|
||||
|
||||
unsigned wxLongLong_t m_ll;
|
||||
#endif // wxLONGLONG_TEST_MODE
|
||||
};
|
||||
|
||||
#endif // wxUSE_LONGLONG_WX
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -533,13 +895,31 @@ private:
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
inline bool operator<(long l, const wxLongLong& ll) { return ll > l; }
|
||||
inline bool operator>(long l, const wxLongLong& ll) { return ll > l; }
|
||||
inline bool operator<=(long l, const wxLongLong& ll) { return ll > l; }
|
||||
inline bool operator>=(long l, const wxLongLong& ll) { return ll > l; }
|
||||
inline bool operator==(long l, const wxLongLong& ll) { return ll > l; }
|
||||
inline bool operator!=(long l, const wxLongLong& ll) { return ll > l; }
|
||||
inline bool operator>(long l, const wxLongLong& ll) { return ll < l; }
|
||||
inline bool operator<=(long l, const wxLongLong& ll) { return ll >= l; }
|
||||
inline bool operator>=(long l, const wxLongLong& ll) { return ll <= l; }
|
||||
inline bool operator==(long l, const wxLongLong& ll) { return ll == l; }
|
||||
inline bool operator!=(long l, const wxLongLong& ll) { return ll != l; }
|
||||
|
||||
inline wxLongLong operator+(long l, const wxLongLong& ll) { return ll + l; }
|
||||
inline wxLongLong operator-(long l, const wxLongLong& ll) { return ll - l; }
|
||||
inline wxLongLong operator-(long l, const wxLongLong& ll)
|
||||
{
|
||||
return wxLongLong(l) - ll;
|
||||
}
|
||||
|
||||
inline bool operator<(unsigned long l, const wxULongLong& ull) { return ull > l; }
|
||||
inline bool operator>(unsigned long l, const wxULongLong& ull) { return ull < l; }
|
||||
inline bool operator<=(unsigned long l, const wxULongLong& ull) { return ull >= l; }
|
||||
inline bool operator>=(unsigned long l, const wxULongLong& ull) { return ull <= l; }
|
||||
inline bool operator==(unsigned long l, const wxULongLong& ull) { return ull == l; }
|
||||
inline bool operator!=(unsigned long l, const wxULongLong& ull) { return ull != l; }
|
||||
|
||||
inline wxULongLong operator+(unsigned long l, const wxULongLong& ull) { return ull + l; }
|
||||
|
||||
// FIXME: this should return wxLongLong
|
||||
inline wxULongLong operator-(unsigned long l, const wxULongLong& ull)
|
||||
{
|
||||
return wxULongLong(l) - ull;
|
||||
}
|
||||
|
||||
#endif // _WX_LONGLONG_H
|
||||
|
@@ -136,7 +136,7 @@ public:
|
||||
|
||||
// Copy constructors
|
||||
inline wxBitmap(const wxBitmap& bitmap)
|
||||
{ Ref(bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); }
|
||||
{ Ref(bitmap); }
|
||||
|
||||
// Initialize with raw data.
|
||||
wxBitmap(const char bits[], int width, int height, int depth = 1);
|
||||
|
@@ -396,12 +396,21 @@
|
||||
// Recommended setting: 1 (don't change except for very special programs)
|
||||
#define wxUSE_CONTROLS 1
|
||||
|
||||
// wxPopupWindow class is not used currently by wxMSW
|
||||
// wxPopupWindow class is a top level transient window. It is currently used
|
||||
// to implement wxTipWindow but doesn't work yet under Mac.
|
||||
//
|
||||
// Default is 0
|
||||
//
|
||||
// Recommended setting: 0
|
||||
#define wxUSE_POPUPWIN 0
|
||||
|
||||
// wxTipWindow allows to implement the custom tooltips, it is used by the
|
||||
// context help classes. Requires wxUSE_POPUPWIN.
|
||||
//
|
||||
// Default is 0
|
||||
//
|
||||
// Recommended setting: 0
|
||||
#define wxUSE_POPUPWIN 0
|
||||
#define wxUSE_TIPWINDOW 0
|
||||
|
||||
// Each of the settings below corresponds to one wxWindows control. They are
|
||||
// all switched on by default but may be disabled if you are sure that your
|
||||
|
@@ -217,6 +217,10 @@ WindowRef UMAGetActiveNonFloatingWindow() ;
|
||||
*/
|
||||
void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) ;
|
||||
|
||||
OSStatus UMAGetHelpMenu(
|
||||
MenuRef * outHelpMenu,
|
||||
MenuItemIndex * outFirstCustomItemIndex); /* can be NULL */
|
||||
|
||||
#if !TARGET_CARBON
|
||||
#define GetPortTextFont( p) ((p)->txFont )
|
||||
#define GetPortTextSize( p) ((p)->txSize )
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user